├── .travis.yml ├── assets ├── screenshot-desktop.jpg ├── built │ ├── vars.css │ ├── vars.css.map │ ├── infinitescroll.js │ ├── infinitescroll.js.map │ ├── swup.js │ ├── screen.css │ └── screen.css.map ├── css │ ├── components │ │ ├── animations.css │ │ ├── lists.css │ │ ├── tables.css │ │ ├── grid.css │ │ ├── actions.css │ │ ├── ghost.css │ │ ├── hamburger.css │ │ ├── buttons.css │ │ ├── forms.css │ │ └── global.css │ ├── vars.css │ └── screen.css └── js │ └── infinitescroll.js ├── partials ├── icons │ ├── facebook.hbs │ ├── infinity.hbs │ ├── rss.hbs │ ├── avatar.hbs │ ├── point.hbs │ ├── location.hbs │ ├── website.hbs │ ├── twitter.hbs │ └── ghost-logo.hbs └── post-card.hbs ├── .gitignore ├── .editorconfig ├── index.hbs ├── tag.hbs ├── page.hbs ├── error.hbs ├── LICENSE ├── author.hbs ├── post.hbs ├── gulpfile.js ├── package.json ├── README.md └── default.hbs /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | sudo: false 3 | node_js: 4 | - "8" 5 | 6 | 7 | -------------------------------------------------------------------------------- /assets/screenshot-desktop.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bitbutter/ITOT-forked-London-/master/assets/screenshot-desktop.jpg -------------------------------------------------------------------------------- /assets/built/vars.css: -------------------------------------------------------------------------------- 1 | @import url("https://fonts.googleapis.com/css?family=Muli:400,400i,600,700,700i,800") 2 | /*# sourceMappingURL=vars.css.map */ -------------------------------------------------------------------------------- /partials/icons/facebook.hbs: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /partials/icons/infinity.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 | -------------------------------------------------------------------------------- /partials/icons/point.hbs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /.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/location.hbs: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /partials/icons/website.hbs: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /assets/css/components/animations.css: -------------------------------------------------------------------------------- 1 | /* Animations 2 | /* ---------------------------------------------------------- */ 3 | 4 | .transition-fade { 5 | transition: 0.25s; 6 | opacity: 1; 7 | animation: slideUp 0.9s cubic-bezier(0.075, 0.82, 0.165, 1) forwards; 8 | transform: translate3d(0, 4vh, 0); 9 | } 10 | html.is-animating .transition-fade { 11 | opacity: 0; 12 | } 13 | 14 | @keyframes slideUp { 15 | 0% { 16 | transform: translate3d(0, 4vh, 0); 17 | } 18 | 100% { 19 | transform: translate3d(0, 0, 0); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /index.hbs: -------------------------------------------------------------------------------- 1 | {{!< default}} 2 | {{!-- The tag above means: insert everything in this file 3 | into the {body} of the default.hbs template --}} 4 | 5 | {{#is "home"}} 6 |
7 | {{#if @blog.logo}} 8 | 9 | {{else}} 10 | {{@blog.title}} 11 | {{/if}} 12 | {{!--

{{@blog.title}}

--}} 13 |
14 | {{/is}} 15 | 16 |
17 | {{#foreach posts}} 18 | 19 | {{!-- The tag below includes the markup for each post - partials/post-card.hbs --}} 20 | {{> "post-card"}} 21 | 22 | {{/foreach}} 23 |
24 | 25 | -------------------------------------------------------------------------------- /tag.hbs: -------------------------------------------------------------------------------- 1 | {{!< default}} 2 | {{!-- The tag above means: insert everything in this file 3 | into the {body} of the default.hbs template --}} 4 | 5 | {{#tag}} 6 |
7 |

{{name}}

8 |

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

15 |
16 | {{/tag}} 17 | 18 |
19 | {{#foreach posts}} 20 | 21 | {{!-- The tag below includes the markup for each post - partials/post-card.hbs --}} 22 | {{> "post-card"}} 23 | 24 | {{/foreach}} 25 |
26 | -------------------------------------------------------------------------------- /partials/post-card.hbs: -------------------------------------------------------------------------------- 1 | {{!-- 2 | 3 | On every 3rd post, add a special .post-card-large class and load a large image 4 | For the rest, just output a smaller background image 5 | 6 | --}} 7 | 8 | {{#has number="nth:3"}} 9 |
10 | {{else}} 11 |
12 | {{/has}} 13 | 14 |
15 |

{{title}}

16 |
17 |
18 |
19 | -------------------------------------------------------------------------------- /assets/css/components/lists.css: -------------------------------------------------------------------------------- 1 | /* Lists 2 | /* ---------------------------------------------------------- */ 3 | 4 | ul, 5 | ol, 6 | dl { 7 | margin: 0 0 var(--margin) 0; 8 | } 9 | 10 | ol, 11 | ul { 12 | padding-left: 1.3em; 13 | padding-right: 1.5em; 14 | } 15 | 16 | ol ol, 17 | ul ul, 18 | ul ol, 19 | ol ul { 20 | margin: 0.5em 0 1em; 21 | } 22 | 23 | ul { 24 | list-style: disc; 25 | } 26 | 27 | ol { 28 | list-style: decimal; 29 | } 30 | 31 | ul, 32 | ol { 33 | max-width: 100%; 34 | } 35 | 36 | li { 37 | margin: 0.5em 0; 38 | padding-left: 0.3em; 39 | line-height: 1.6em; 40 | } 41 | 42 | 43 | dt { 44 | display: block; 45 | font-weight: var(--font-bold); 46 | margin: 0 0 calc(var(--margin) * 0.5) 0; 47 | } 48 | 49 | dd { 50 | margin-left: var(--margin); 51 | } 52 | -------------------------------------------------------------------------------- /page.hbs: -------------------------------------------------------------------------------- 1 | {{!< default}} 2 | 3 | {{#post}} 4 |
5 | 6 |
7 | {{content}} 8 |
9 | 10 |
11 | {{/post}} 12 | 13 | {{!-- The #contentFor helper here will send everything inside it up to the matching #block helper found in default.hbs --}} 14 | {{#contentFor "scripts"}} 15 | 25 | {{/contentFor}} 26 | -------------------------------------------------------------------------------- /partials/icons/twitter.hbs: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /assets/built/vars.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["vars.css"],"names":[],"mappings":"AAGA,oFAAqF","file":"vars.css","sourcesContent":["/* Variables\n/* ---------------------------------------------------------- */\n\n@import url('https://fonts.googleapis.com/css?family=Muli:400,400i,600,700,700i,800');\n\n:root {\n\n /* Colours */\n --color-primary: #3eb0ef;\n --color-base: #131313;\n --color-border: #ddd;\n --color-bg: #f8f8f8;\n\n /* Fonts */\n --font-sans-serif: 'Muli', sans-serif;\n --font-serif: Georgia, Times, serif;\n --font-mono: Menlo, Courier, monospace;\n --font-light: 100;\n --font-normal: 400;\n --font-bold: 700;\n --font-heavy: 800;\n\n /* Breakpoints */\n --xlarge: 1680px;\n --large: 1280px;\n --medium: 980px;\n --small: 740px;\n --xsmall: 480px;\n\n /* Sizes */\n --height: 4rem;\n --margin: 2rem;\n --radius: 0.5rem;\n\n}\n"]} -------------------------------------------------------------------------------- /assets/css/vars.css: -------------------------------------------------------------------------------- 1 | /* Variables 2 | /* ---------------------------------------------------------- */ 3 | 4 | @import url('https://fonts.googleapis.com/css?family=Muli:400,400i,600,700,700i,800'); 5 | 6 | :root { 7 | 8 | /* Colours */ 9 | --color-primary: #3eb0ef; 10 | --color-base: #131313; 11 | --color-border: #ddd; 12 | --color-bg: #f8f8f8; 13 | 14 | /* Fonts */ 15 | --font-sans-serif: 'Muli', sans-serif; 16 | --font-serif: Georgia, Times, serif; 17 | --font-mono: Menlo, Courier, monospace; 18 | --font-light: 100; 19 | --font-normal: 400; 20 | --font-bold: 700; 21 | --font-heavy: 800; 22 | 23 | /* Breakpoints */ 24 | --xlarge: 1680px; 25 | --large: 1280px; 26 | --medium: 980px; 27 | --small: 740px; 28 | --xsmall: 480px; 29 | 30 | /* Sizes */ 31 | --height: 4rem; 32 | --margin: 2rem; 33 | --radius: 0.5rem; 34 | 35 | } 36 | -------------------------------------------------------------------------------- /error.hbs: -------------------------------------------------------------------------------- 1 | {{!< default}} 2 | 3 |
4 |

{{code}}

5 |

{{message}}

6 | Go to the front page → 7 |
8 | 9 | {{#if errorDetails}} 10 |
11 |
12 |

Theme errors

13 |
    14 | {{#each errorDetails}} 15 |
  • 16 | {{{rule}}} 17 | 18 | {{#each failures}} 19 |

    Ref: {{ref}}

    20 |

    Message: {{message}}

    21 | {{/each}} 22 |
  • 23 | {{/each}} 24 |
25 |
26 |
27 | {{/if}} 28 | -------------------------------------------------------------------------------- /assets/built/infinitescroll.js: -------------------------------------------------------------------------------- 1 | function initInfiniteScroll(n,t){var r=t.querySelector("link[rel=next]");if(r){var i=t.querySelector(".post-feed");if(i){var o=300,l=!1,s=!1,c=n.scrollY,u=n.innerHeight,d=t.documentElement.scrollHeight;n.addEventListener("scroll",a,{passive:!0}),n.addEventListener("resize",m),v()}}function f(){if(404===this.status)return n.removeEventListener("scroll",a),void n.removeEventListener("resize",m);this.response.querySelectorAll(".post-card").forEach(function(e){i.appendChild(e)});var e=this.response.querySelector("link[rel=next]");e?r.href=e.href:(n.removeEventListener("scroll",a),n.removeEventListener("resize",m)),d=t.documentElement.scrollHeight,s=l=!1}function e(){if(!s)if(c+u<=d-o)l=!1;else{s=!0;var e=new n.XMLHttpRequest;e.responseType="document",e.addEventListener("load",f),e.open("GET",r.href),e.send(null)}}function v(){l||n.requestAnimationFrame(e),l=!0}function a(){c=n.scrollY,v()}function m(){u=n.innerHeight,d=t.documentElement.scrollHeight,v()}}initInfiniteScroll(window,document); 2 | //# sourceMappingURL=infinitescroll.js.map -------------------------------------------------------------------------------- /assets/css/components/tables.css: -------------------------------------------------------------------------------- 1 | /* Tables 2 | /* ---------------------------------------------------------- */ 3 | 4 | table { 5 | border-collapse: separate; 6 | margin: 0 0 var(--margin) 0; 7 | width: 100%; 8 | font-size: 0.8em; 9 | } 10 | 11 | th { 12 | color: var(--color-base); 13 | font-size: 0.9em; 14 | font-weight: var(--font-bold); 15 | padding: 0 0.7em 0.4em 0.7em; 16 | text-align: left; 17 | } 18 | 19 | td { 20 | padding: 0.4em 0.7em; 21 | border-left-width: 0; 22 | border-top-width: 0; 23 | } 24 | 25 | td:first-child { 26 | border-left-width: 1px; 27 | } 28 | 29 | tbody tr { 30 | border: solid 1px var(--color-border); 31 | border-left: 0; 32 | border-right: 0; 33 | } 34 | 35 | tbody tr:first-child td { 36 | border-top-width: 1px; 37 | } 38 | 39 | tbody tr:nth-child(2n + 1) { 40 | background-color: var(--color-bg); 41 | } 42 | 43 | tbody td { 44 | border: solid 1px var(--color-border); 45 | border-left-width: 0; 46 | border-top-width: 0; 47 | } 48 | 49 | tfoot { 50 | border-width: 0; 51 | } 52 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2013-2019 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 | -------------------------------------------------------------------------------- /author.hbs: -------------------------------------------------------------------------------- 1 | {{!< default}} 2 | {{!-- The tag above means - insert everything in this file into the {body} of the default.hbs template --}} 3 | 4 | {{#author}} 5 | {{!-- Everything inside the #author tags pulls data from the author --}} 6 |
7 |

{{name}}

8 |

9 | {{#if bio}} 10 | {{bio}} 11 | {{/if}} 12 |

13 |
14 | 26 |
27 |
28 | {{/author}} 29 | 30 |
31 | {{#foreach posts}} 32 | 33 | {{!-- The tag below includes the markup for each post - partials/post-card.hbs --}} 34 | {{> "post-card"}} 35 | 36 | {{/foreach}} 37 |
38 | 39 | -------------------------------------------------------------------------------- /post.hbs: -------------------------------------------------------------------------------- 1 | {{!< default}} 2 | 3 | {{#post}} 4 |
5 | 6 |
7 |

{{title}}

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

{{custom_excerpt}}

12 | {{/if}} 13 | 14 | {{#if feature_image}} 15 |
16 | {{title}} 17 |
18 | {{/if}} 19 | 20 |
21 | {{content}} 22 |
23 | 24 | {{!-- Email subscribe form at the bottom of the page --}} 25 | {{#if @labs.subscribers}} 26 | 31 | {{/if}} 32 | 33 |
34 | 35 | {{!-- There are two options for how we display the byline/author-info. 36 | If the post has more than one author, we load a specific template 37 | from includes/byline-multiple.hbs, otherwise, we just use the 38 | default byline. --}} 39 | 40 | 41 |
42 | 43 | {{!-- 44 |
45 | If you want to embed comments, this is a good place to do it! 46 |
47 | --}} 48 | 49 |
50 | {{/post}} 51 | 52 | {{!-- The #contentFor helper here will send everything inside it up to the matching #block helper found in default.hbs --}} 53 | {{#contentFor "scripts"}} 54 | 64 | {{/contentFor}} 65 | -------------------------------------------------------------------------------- /gulpfile.js: -------------------------------------------------------------------------------- 1 | const { series, watch, src, dest } = 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 css(done) { 33 | var processors = [ 34 | easyimport, 35 | customProperties({ preserve: false }), 36 | colorFunction(), 37 | autoprefixer({ browsers: ['last 2 versions'] }), 38 | cssnano() 39 | ]; 40 | 41 | pump([ 42 | src('assets/css/*.css', { sourcemaps: true }), 43 | postcss(processors), 44 | dest('assets/built/', { sourcemaps: '.' }), 45 | livereload() 46 | ], handleError(done)); 47 | } 48 | 49 | function js(done) { 50 | pump([ 51 | src('assets/js/*.js', { sourcemaps: true }), 52 | uglify(), 53 | dest('assets/built/', { sourcemaps: '.' }), 54 | livereload() 55 | ], handleError(done)); 56 | } 57 | 58 | function zipper(done) { 59 | var targetDir = 'dist/'; 60 | var themeName = require('./package.json').name; 61 | var filename = themeName + '.zip'; 62 | 63 | pump([ 64 | src([ 65 | '**', 66 | '!node_modules', '!node_modules/**', 67 | '!dist', '!dist/**' 68 | ]), 69 | zip(filename), 70 | dest(targetDir) 71 | ], handleError(done)); 72 | } 73 | 74 | const watcher = () => watch('assets/css/**', css); 75 | const build = series(css, js); 76 | const dev = series(build, serve, watcher); 77 | 78 | exports.build = build; 79 | exports.zip = series(build, zipper); 80 | exports.default = dev; 81 | -------------------------------------------------------------------------------- /assets/css/components/grid.css: -------------------------------------------------------------------------------- 1 | /* Grid 2 | /* ---------------------------------------------------------- */ 3 | 4 | .row { 5 | display: flex; 6 | flex: 0 1 auto; 7 | flex-direction: row; 8 | flex-wrap: wrap; 9 | margin: 0 -1rem; 10 | } 11 | 12 | .col, 13 | .col-1, 14 | .col-2, 15 | .col-3, 16 | .col-4, 17 | .col-5, 18 | .col-6, 19 | .col-7, 20 | .col-8, 21 | .col-9, 22 | .col-10, 23 | .col-11, 24 | .col-12 { 25 | padding: 1rem; 26 | } 27 | 28 | .col { 29 | flex-grow: 1; 30 | flex-basis: 0; 31 | max-width: 100%; 32 | } 33 | 34 | .col-1 { 35 | flex-basis: 8.3333333%; 36 | max-width: 8.3333333%; 37 | } 38 | 39 | .col-2 { 40 | flex-basis: 16.6666666%; 41 | max-width: 16.6666666%; 42 | } 43 | 44 | .col-3 { 45 | flex-basis: 25%; 46 | max-width: 25%; 47 | } 48 | 49 | .col-4 { 50 | flex-basis: 33.3333333%; 51 | max-width: 33.3333333%; 52 | } 53 | 54 | .col-5 { 55 | flex-basis: 41.6666666%; 56 | max-width: 41.6666666%; 57 | } 58 | 59 | .col-6 { 60 | flex-basis: 50%; 61 | max-width: 50%; 62 | } 63 | 64 | .col-7 { 65 | flex-basis: 58.3333333%; 66 | max-width: 58.3333333%; 67 | } 68 | 69 | .col-8 { 70 | flex-basis: 66.6666666%; 71 | max-width: 66.6666666%; 72 | } 73 | 74 | .col-9 { 75 | flex-basis: 75%; 76 | max-width: 75%; 77 | } 78 | 79 | .col-10 { 80 | flex-basis: 83.3333333%; 81 | max-width: 83.3333333%; 82 | } 83 | 84 | .col-11 { 85 | flex-basis: 91.6666666%; 86 | max-width: 91.6666666%; 87 | } 88 | 89 | .col-12 { 90 | flex-basis: 100%; 91 | max-width: 100%; 92 | } 93 | 94 | @media (max-width: 800px) { 95 | .col-1, 96 | .col-2, 97 | .col-3, 98 | .col-4, 99 | .col-5, 100 | .col-6, 101 | .col-7, 102 | .col-8, 103 | .col-9, 104 | .col-10, 105 | .col-11 { 106 | flex-basis: 50%; 107 | max-width: 50%; 108 | } 109 | } 110 | 111 | @media (max-width: 600px) { 112 | .col-1, 113 | .col-2, 114 | .col-3, 115 | .col-4, 116 | .col-5, 117 | .col-6, 118 | .col-7, 119 | .col-8, 120 | .col-9, 121 | .col-10, 122 | .col-11 { 123 | flex-basis: 100%; 124 | max-width: 100%; 125 | } 126 | } 127 | -------------------------------------------------------------------------------- /assets/css/components/actions.css: -------------------------------------------------------------------------------- 1 | /* Actions 2 | /* ---------------------------------------------------------- */ 3 | 4 | .actions { 5 | display: flex; 6 | cursor: default; 7 | list-style: none; 8 | margin: calc(var(--margin) * -0.5); 9 | padding-left: 0; 10 | } 11 | 12 | .actions li { 13 | padding: 0 0 0 calc(var(--margin) * 0.5); 14 | vertical-align: middle; 15 | } 16 | 17 | .actions.special { 18 | justify-content: center; 19 | width: 100%; 20 | margin-left: 0; 21 | } 22 | 23 | .actions.special li:first-child { 24 | padding-left: 0; 25 | } 26 | 27 | .actions.stacked { 28 | flex-direction: column; 29 | margin-left: 0; 30 | } 31 | 32 | .actions.stacked li { 33 | padding: calc(var(--margin) * 0.65) 0 0 0; 34 | } 35 | 36 | .actions.stacked li:first-child { 37 | padding-top: 0; 38 | } 39 | 40 | 41 | .actions.fit { 42 | width: calc(100% + calc(var(--margin) * 0.5)); 43 | } 44 | 45 | .actions.fit li { 46 | flex: 1 1 auto; 47 | width: 100%; 48 | } 49 | 50 | .actions.fit li > * { 51 | width: 100%; 52 | } 53 | 54 | .actions.fit.stacked { 55 | width: 100%; 56 | } 57 | 58 | @media (max-width: var(--xsmall)) { 59 | .actions:not(.fixed) { 60 | flex-direction: column; 61 | margin-left: 0; 62 | width: 100% !important; 63 | } 64 | 65 | .actions:not(.fixed) li { 66 | flex: 1 1 auto; 67 | padding: calc(var(--margin) * 0.5) 0 0 0; 68 | text-align: center; 69 | width: 100%; 70 | } 71 | 72 | .actions:not(.fixed) li > * { 73 | width: 100%; 74 | } 75 | 76 | .actions:not(.fixed) li:first-child { 77 | padding-top: 0; 78 | } 79 | 80 | .actions:not(.fixed) li input[type="submit"], 81 | .actions:not(.fixed) li input[type="reset"], 82 | .actions:not(.fixed) li input[type="button"], 83 | .actions:not(.fixed) li button, 84 | .actions:not(.fixed) li .button { 85 | width: 100%; 86 | } 87 | 88 | .actions:not(.fixed) li input[type="submit"].icon:before, 89 | .actions:not(.fixed) li input[type="reset"].icon:before, 90 | .actions:not(.fixed) li input[type="button"].icon:before, 91 | .actions:not(.fixed) li button.icon:before, 92 | .actions:not(.fixed) li .button.icon:before { 93 | margin-left: -0.5rem; 94 | } 95 | } 96 | -------------------------------------------------------------------------------- /assets/css/components/ghost.css: -------------------------------------------------------------------------------- 1 | /* Styling for Ghost-specific elements 2 | /* ---------------------------------------------------------- */ 3 | 4 | .kg-card { 5 | margin: 7vw 0; 6 | } 7 | 8 | .kg-embed-card { 9 | display: flex; 10 | flex-direction: column; 11 | align-items: center; 12 | min-width: 100%; 13 | } 14 | 15 | .kg-image { 16 | max-width: 100%; 17 | width: 100%; 18 | } 19 | 20 | .kg-card figcaption { 21 | padding: 1.5rem; 22 | font-size: 1.3rem; 23 | line-height: 1.4em; 24 | font-weight: 600; 25 | color: var(--color-base); 26 | text-align: center; 27 | opacity: 0.4; 28 | } 29 | 30 | .kg-width-wide { 31 | position: relative; 32 | width: 75vw; 33 | min-width: 100%; 34 | margin-left: calc(50% - 50vw); 35 | margin-right: calc(50% - 50vw); 36 | transform: translateX(calc(50vw - 50%)); 37 | } 38 | 39 | .kg-width-full { 40 | position: relative; 41 | width: 94vw; 42 | min-width: 100%; 43 | margin-left: calc(50% - 50vw); 44 | margin-right: calc(50% - 50vw); 45 | transform: translateX(calc(50vw - 50%)); 46 | } 47 | 48 | .kg-width-full figcaption { 49 | padding-left: 0; 50 | padding-right: 0; 51 | text-align: left; 52 | } 53 | 54 | @media (max-width: 800px) { 55 | .kg-width-full { 56 | width: 100vw; 57 | } 58 | .kg-width-full figcaption { 59 | padding-left: 6vw; 60 | } 61 | } 62 | 63 | .kg-gallery-container { 64 | display: flex; 65 | flex-direction: column; 66 | position: relative; 67 | width: 75vw; 68 | min-width: 100%; 69 | margin-left: calc(50% - 50vw); 70 | margin-right: calc(50% - 50vw); 71 | transform: translateX(calc(50vw - 50%)); 72 | } 73 | 74 | .kg-gallery-row { 75 | display: flex; 76 | flex-direction: row; 77 | justify-content: center; 78 | } 79 | 80 | .kg-gallery-image img { 81 | display: block; 82 | margin: 0; 83 | width: 100%; 84 | height: 100%; 85 | } 86 | 87 | .kg-gallery-row:not(:first-of-type) { 88 | margin: 0.75em 0 0 0; 89 | } 90 | 91 | .kg-gallery-image:not(:first-of-type) { 92 | margin: 0 0 0 0.75em; 93 | } 94 | 95 | .kg-gallery-card + .kg-image-card.kg-width-wide, 96 | .kg-gallery-card + .kg-gallery-card, 97 | .kg-image-card.kg-width-wide + .kg-gallery-card, 98 | .kg-image-card.kg-width-wide + .kg-image-card.kg-width-wide { 99 | margin-top: calc( -7vw + 0.75em ); 100 | } 101 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "london", 3 | "description": "A minimum, image-centric theme for Ghost.", 4 | "demo": "https://london.ghost.io", 5 | "version": "1.0.0", 6 | "engines": { 7 | "ghost": ">=2.0.0", 8 | "ghost-api": "v2" 9 | }, 10 | "license": "MIT", 11 | "screenshots": { 12 | "desktop": "assets/screenshot-desktop.jpg", 13 | "mobile": "assets/screenshot-mobile.jpg" 14 | }, 15 | "scripts": { 16 | "dev": "gulp", 17 | "zip": "gulp zip", 18 | "test": "gscan .", 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/London.git" 43 | }, 44 | "bugs": "https://github.com/TryGhost/London/issues", 45 | "contributors": "https://github.com/TryGhost/London/graphs/contributors", 46 | "devDependencies": { 47 | "autoprefixer": "9.4.10", 48 | "cssnano": "4.1.10", 49 | "gscan": "^2.0.0", 50 | "gulp": "4.0.0", 51 | "gulp-livereload": "4.0.1", 52 | "gulp-postcss": "8.0.0", 53 | "gulp-sourcemaps": "2.6.5", 54 | "gulp-uglify": "3.0.2", 55 | "gulp-util": "3.0.8", 56 | "gulp-watch": "5.0.1", 57 | "gulp-zip": "4.2.0", 58 | "postcss-color-function": "4.0.1", 59 | "postcss-custom-properties": "8.0.9", 60 | "postcss-easy-import": "3.0.0" 61 | }, 62 | "config": { 63 | "posts_per_page": 15, 64 | "image_sizes": { 65 | "xs": { 66 | "width": 100 67 | }, 68 | "s": { 69 | "width": 300 70 | }, 71 | "m": { 72 | "width": 600 73 | }, 74 | "l": { 75 | "width": 1200 76 | }, 77 | "xl": { 78 | "width": 2000 79 | } 80 | } 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # London 2 | 3 | A custom, image-centric theme for [Ghost](http://github.com/tryghost/ghost/). Made for publishers and portfolios with plenty of graphics to show off to the world. Completely free and fully responsive, released under the MIT license. 4 | 5 | **Demo: https://london.ghost.io** 6 | 7 |   8 | 9 | ![london](https://user-images.githubusercontent.com/120485/50552024-84837400-0c82-11e9-8f1d-cf25962c7e62.jpg) 10 | 11 | 12 |   13 | 14 | # First time using a Ghost theme? 15 | 16 | Ghost uses a simple templating language called [Handlebars](http://handlebarsjs.com/) for its themes. 17 | 18 | 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. 19 | 20 | **The main files are:** 21 | 22 | - `default.hbs` - The main template file 23 | - `index.hbs` - Used for the home page 24 | - `post.hbs` - Used for individual posts 25 | - `page.hbs` - Used for individual pages 26 | - `tag.hbs` - Used for tag archives 27 | - `author.hbs` - Used for author archives 28 | 29 | 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: 30 | 31 | - `page-about.hbs` - Custom template for the `/about/` page 32 | - `tag-news.hbs` - Custom template for `/tag/news/` archive 33 | - `author-ali.hbs` - Custom template for `/author/ali/` archive 34 | 35 | 36 | # Development 37 | 38 | London 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: 39 | 40 | ```bash 41 | $ yarn install 42 | $ yarn dev 43 | ``` 44 | 45 | Now you can edit `/assets/css/` files, which will be compiled to `/assets/built/` automatically. 46 | 47 | The `zip` Gulp task packages the theme files into `dist/.zip`, which you can then upload to your site. 48 | 49 | ```bash 50 | $ yarn zip 51 | ``` 52 | 53 | # PostCSS Features Used 54 | 55 | - 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. 56 | - Variables - Simple pure CSS variables 57 | - [Color Function](https://github.com/postcss/postcss-color-function) 58 | 59 | 60 | # Copyright & License 61 | 62 | Copyright (c) 2013-2019 Ghost Foundation - Released under the [MIT license](LICENSE). 63 | -------------------------------------------------------------------------------- /assets/css/components/hamburger.css: -------------------------------------------------------------------------------- 1 | /* https://github.com/jonsuh/hamburgers */ 2 | .hamburger { 3 | display: flex; 4 | overflow: visible; 5 | margin: 0; 6 | padding: 2px 0; 7 | border: 0; 8 | color: inherit; 9 | font: inherit; 10 | text-transform: none; 11 | background-color: transparent; 12 | cursor: pointer; 13 | transition: opacity 0.15s linear, filter 0.15s linear; 14 | } 15 | 16 | .hamburger-box { 17 | position: relative; 18 | display: inline-block; 19 | width: 20px; 20 | height: 13px; 21 | } 22 | 23 | .hamburger-inner { 24 | top: 50%; 25 | display: block; 26 | margin-top: -2px; 27 | } 28 | 29 | .hamburger-inner, 30 | .hamburger-inner::before, 31 | .hamburger-inner::after { 32 | position: absolute; 33 | width: 20px; 34 | height: 1px; 35 | background-color: color(var(--color-border) l(-20%)); 36 | border-radius: 4px; 37 | transition: transform 0.15s ease; 38 | } 39 | .hamburger-inner::before, 40 | .hamburger-inner::after { 41 | content: ""; 42 | display: block; 43 | } 44 | .hamburger-inner::before { 45 | top: -6px; 46 | } 47 | .hamburger-inner::after { 48 | bottom: -6px; 49 | } 50 | 51 | /* 52 | * Collapse 53 | */ 54 | .hamburger--collapse .hamburger-inner { 55 | top: auto; 56 | bottom: 0; 57 | transition-delay: 0.15s; 58 | transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); 59 | transition-duration: 0.15s; 60 | } 61 | .hamburger--collapse .hamburger-inner::after { 62 | top: -12px; 63 | transition: top 0.3s 0.3s cubic-bezier(0.33333, 0.66667, 0.66667, 1), 64 | opacity 0.1s linear; 65 | } 66 | .hamburger--collapse .hamburger-inner::before { 67 | transition: top 0.12s 0.3s cubic-bezier(0.33333, 0.66667, 0.66667, 1), 68 | transform 0.15s cubic-bezier(0.55, 0.055, 0.675, 0.19); 69 | } 70 | 71 | .site-head-open .hamburger-inner, 72 | .site-head-open .hamburger-inner::before, 73 | .site-head-open .hamburger-inner::after { 74 | background-color: var(--color-base); 75 | } 76 | 77 | .site-head-open .hamburger-inner { 78 | transition-delay: 0.32s; 79 | transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); 80 | transform: translate3d(0, -6px, 0) rotate(-45deg); 81 | } 82 | 83 | .site-head-open .hamburger-inner::after { 84 | top: 0; 85 | opacity: 0; 86 | transition: top 0.3s cubic-bezier(0.33333, 0, 0.66667, 0.33333), 87 | opacity 0.1s 0.27s linear; 88 | } 89 | .site-head-open .hamburger-inner::before { 90 | top: 0; 91 | transition: top 0.12s 0.18s cubic-bezier(0.33333, 0, 0.66667, 0.33333), 92 | transform 0.15s 0.42s cubic-bezier(0.215, 0.61, 0.355, 1); 93 | transform: rotate(-90deg); 94 | } 95 | -------------------------------------------------------------------------------- /assets/js/infinitescroll.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Infinite Scroll 3 | */ 4 | 5 | function initInfiniteScroll(window, document) { 6 | // next link element 7 | var nextElement = document.querySelector('link[rel=next]'); 8 | if (!nextElement) return; 9 | 10 | // post feed element 11 | var feedElement = document.querySelector('.post-feed'); 12 | if (!feedElement) return; 13 | 14 | var buffer = 300; 15 | 16 | var ticking = false; 17 | var loading = false; 18 | 19 | var lastScrollY = window.scrollY; 20 | var lastWindowHeight = window.innerHeight; 21 | var lastDocumentHeight = document.documentElement.scrollHeight; 22 | 23 | function onPageLoad() { 24 | if (this.status === 404) { 25 | window.removeEventListener('scroll', onScroll); 26 | window.removeEventListener('resize', onResize); 27 | return; 28 | } 29 | 30 | // append contents 31 | var postElements = this.response.querySelectorAll('.post-card'); 32 | postElements.forEach(function (item) { 33 | feedElement.appendChild(item); 34 | }); 35 | 36 | // set next link 37 | var resNextElement = this.response.querySelector('link[rel=next]'); 38 | if (resNextElement) { 39 | nextElement.href = resNextElement.href; 40 | } else { 41 | window.removeEventListener('scroll', onScroll); 42 | window.removeEventListener('resize', onResize); 43 | } 44 | 45 | // sync status 46 | lastDocumentHeight = document.documentElement.scrollHeight; 47 | ticking = false; 48 | loading = false; 49 | } 50 | 51 | function onUpdate() { 52 | // return if already loading 53 | if (loading) return; 54 | 55 | // return if not scroll to the bottom 56 | if (lastScrollY + lastWindowHeight <= lastDocumentHeight - buffer) { 57 | ticking = false; 58 | return; 59 | } 60 | 61 | loading = true; 62 | 63 | var xhr = new window.XMLHttpRequest(); 64 | xhr.responseType = 'document'; 65 | 66 | xhr.addEventListener('load', onPageLoad); 67 | 68 | xhr.open('GET', nextElement.href); 69 | xhr.send(null); 70 | } 71 | 72 | function requestTick() { 73 | ticking || window.requestAnimationFrame(onUpdate); 74 | ticking = true; 75 | } 76 | 77 | function onScroll() { 78 | lastScrollY = window.scrollY; 79 | requestTick(); 80 | } 81 | 82 | function onResize() { 83 | lastWindowHeight = window.innerHeight; 84 | lastDocumentHeight = document.documentElement.scrollHeight; 85 | requestTick(); 86 | } 87 | 88 | window.addEventListener('scroll', onScroll, { passive: true }); 89 | window.addEventListener('resize', onResize); 90 | 91 | requestTick(); 92 | }; 93 | 94 | initInfiniteScroll(window, document); 95 | -------------------------------------------------------------------------------- /assets/css/components/buttons.css: -------------------------------------------------------------------------------- 1 | /* Buttons 2 | /* ---------------------------------------------------------- */ 3 | 4 | input[type="submit"], 5 | input[type="reset"], 6 | input[type="button"], 7 | button, 8 | .button { 9 | display: inline-block; 10 | height: var(--height); 11 | padding: 0 2rem; 12 | border: 0; 13 | border-radius: var(--radius); 14 | cursor: pointer; 15 | font-family: var(--font-sans-serif); 16 | font-size: 1.4rem; 17 | font-weight: var(--font-normal); 18 | line-height: var(--height); 19 | text-align: center; 20 | text-decoration: none; 21 | white-space: nowrap; 22 | appearance: none; 23 | transition: 0.4s ease; 24 | } 25 | 26 | input[type="submit"].fit, 27 | input[type="reset"].fit, 28 | input[type="button"].fit, 29 | button.fit, 30 | .button.fit { 31 | width: 100%; 32 | } 33 | 34 | input[type="submit"].small, 35 | input[type="reset"].small, 36 | input[type="button"].small, 37 | button.small, 38 | .button.small { 39 | height: calc(var(--height) * 0.9); 40 | line-height: calc(var(--height) * 0.9); 41 | padding: 0 1.5rem; 42 | font-size: 1.2rem; 43 | } 44 | 45 | input[type="submit"].large, 46 | input[type="reset"].large, 47 | input[type="button"].large, 48 | button.large, 49 | .button.large { 50 | height: calc(var(--height) * 1.14); 51 | line-height: calc(var(--height) * 1.14); 52 | padding: 0 3rem; 53 | font-size: 1.6rem; 54 | } 55 | 56 | 57 | input[type="submit"].disabled, 58 | input[type="submit"]:disabled, 59 | input[type="reset"].disabled, 60 | input[type="reset"]:disabled, 61 | input[type="button"].disabled, 62 | input[type="button"]:disabled, 63 | button.disabled, 64 | button:disabled, 65 | .button.disabled, 66 | .button:disabled { 67 | pointer-events: none; 68 | opacity: 0.4; 69 | } 70 | 71 | 72 | 73 | input[type="submit"], 74 | input[type="reset"], 75 | input[type="button"], 76 | button, 77 | .button { 78 | color: var(--color-primary) !important; 79 | background-color: transparent; 80 | box-shadow: inset 0 0 0 2px var(--color-primary); 81 | } 82 | 83 | input[type="submit"]:hover, 84 | input[type="reset"]:hover, 85 | input[type="button"]:hover, 86 | button:hover, 87 | .button:hover { 88 | text-decoration: none; 89 | color: color(var(--color-primary) l(-15%)) !important; 90 | box-shadow: inset 0 0 0 2px color(var(--color-primary) l(-10%)); 91 | transition: 0.2s ease; 92 | } 93 | 94 | input[type="submit"].primary, 95 | input[type="reset"].primary, 96 | input[type="button"].primary, 97 | button.primary, 98 | .button.primary { 99 | color: #fff !important; 100 | background-color: var(--color-primary); 101 | box-shadow: none; 102 | } 103 | 104 | input[type="submit"].primary:hover, 105 | input[type="reset"].primary:hover, 106 | input[type="button"].primary:hover, 107 | button.primary:hover, 108 | .button.primary:hover { 109 | background-color: color(var(--color-primary) l(-10%)); 110 | } 111 | -------------------------------------------------------------------------------- /partials/icons/ghost-logo.hbs: -------------------------------------------------------------------------------- 1 | Ghost Logo 2 | -------------------------------------------------------------------------------- /assets/css/components/forms.css: -------------------------------------------------------------------------------- 1 | /* Forms 2 | /* ---------------------------------------------------------- */ 3 | 4 | form { 5 | margin: 0 0 var(--margin) 0; 6 | } 7 | 8 | fieldset { 9 | margin: 0; 10 | padding: 0; 11 | border: 0; 12 | } 13 | 14 | label { 15 | color: var(--color-primary); 16 | display: block; 17 | font-size: 0.9em; 18 | font-weight: var(--font-bold); 19 | margin: 0 0 (var(--margin) * 0.5) 0; 20 | } 21 | 22 | input[type="text"], 23 | input[type="password"], 24 | input[type="email"], 25 | input[type="tel"], 26 | input[type="search"], 27 | input[type="url"], 28 | select, 29 | textarea { 30 | background: var(--color-bg); 31 | border-radius: var(--radius); 32 | border: none; 33 | border: solid 1px var(--color-border); 34 | color: inherit; 35 | display: block; 36 | outline: 0; 37 | padding: 0 0.6em; 38 | text-decoration: none; 39 | width: 100%; 40 | } 41 | 42 | input[type="text"]:invalid, 43 | input[type="password"]:invalid, 44 | input[type="email"]:invalid, 45 | input[type="tel"]:invalid, 46 | input[type="search"]:invalid, 47 | input[type="url"]:invalid, 48 | select:invalid, 49 | textarea:invalid { 50 | box-shadow: none; 51 | } 52 | 53 | input[type="text"]:focus, 54 | input[type="password"]:focus, 55 | input[type="email"]:focus, 56 | input[type="tel"]:focus, 57 | input[type="search"]:focus, 58 | input[type="url"]:focus, 59 | select:focus, 60 | textarea:focus { 61 | border-color: var(--color-primary); 62 | box-shadow: 0 0 0 1px var(--color-primary); 63 | } 64 | 65 | select { 66 | height: var(--height); 67 | padding-right: var(--height); 68 | text-overflow: ellipsis; 69 | } 70 | 71 | select option { 72 | color: var(--color-primary); 73 | background: var(--color-bg); 74 | } 75 | 76 | select:focus::-ms-value { 77 | background-color: transparent; 78 | } 79 | 80 | select::-ms-expand { 81 | display: none; 82 | } 83 | 84 | 85 | input[type="text"], 86 | input[type="password"], 87 | input[type="email"], 88 | input[type="tel"], 89 | input[type="search"], 90 | input[type="url"], 91 | select { 92 | height: var(--height); 93 | } 94 | 95 | textarea { 96 | padding: 0.3em 0.6em; 97 | resize: vertical; 98 | } 99 | 100 | input[type="checkbox"], 101 | input[type="radio"] { 102 | display: block; 103 | margin-right: -2em; 104 | opacity: 0; 105 | width: 1em; 106 | z-index: -1; 107 | } 108 | 109 | input[type="checkbox"] + label, 110 | input[type="radio"] + label { 111 | display: flex; 112 | align-items: center; 113 | color: var(--color-base); 114 | cursor: pointer; 115 | font-size: 1em; 116 | font-weight: var(--font-normal); 117 | padding-left: calc((var(--height) * 0.6) + 0.75em); 118 | padding-right: 2rem; 119 | position: relative; 120 | user-select: none; 121 | } 122 | 123 | input[type="checkbox"] + label:before, 124 | input[type="radio"] + label:before { 125 | background: var(--color-bg); 126 | border-radius: var(--radius); 127 | border: solid 1px var(--color-border); 128 | content: ''; 129 | display: inline-block; 130 | height: calc(var(--height) * 0.6); 131 | line-height: calc(var(--height) * 0.56); 132 | text-align: center; 133 | width: calc(var(--height) * 0.6); 134 | margin-right: 1rem; 135 | } 136 | 137 | input[type="checkbox"]:checked + label:before, 138 | input[type="radio"]:checked + label:before { 139 | background: var(--color-primary); 140 | border-color: var(--color-primary); 141 | color: var(--color-bg); 142 | content: '✓'; 143 | } 144 | 145 | input[type="checkbox"]:focus + label:before, 146 | input[type="radio"]:focus + label:before { 147 | border-color: var(--color-primary); 148 | box-shadow: 0 0 0 1px var(--color-primary); 149 | } 150 | 151 | 152 | input[type="checkbox"] + label:before { 153 | border-radius: var(--radius); 154 | } 155 | 156 | input[type="radio"] + label:before { 157 | border-radius: 100%; 158 | } 159 | -------------------------------------------------------------------------------- /assets/built/infinitescroll.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["infinitescroll.js"],"names":["initInfiniteScroll","window","document","nextElement","querySelector","feedElement","buffer","ticking","loading","lastScrollY","scrollY","lastWindowHeight","innerHeight","lastDocumentHeight","documentElement","scrollHeight","addEventListener","onScroll","passive","onResize","requestTick","onPageLoad","this","status","removeEventListener","response","querySelectorAll","forEach","item","appendChild","resNextElement","href","onUpdate","xhr","XMLHttpRequest","responseType","open","send","requestAnimationFrame"],"mappings":"AAIA,SAASA,mBAAmBC,EAAQC,GAEhC,IAAIC,EAAcD,EAASE,cAAc,kBACzC,GAAKD,EAAL,CAGA,IAAIE,EAAcH,EAASE,cAAc,cACzC,GAAKC,EAAL,CAEA,IAAIC,EAAS,IAETC,GAAU,EACVC,GAAU,EAEVC,EAAcR,EAAOS,QACrBC,EAAmBV,EAAOW,YAC1BC,EAAqBX,EAASY,gBAAgBC,aAmElDd,EAAOe,iBAAiB,SAAUC,EAAU,CAAEC,SAAS,IACvDjB,EAAOe,iBAAiB,SAAUG,GAElCC,KApEA,SAASC,IACL,GAAoB,MAAhBC,KAAKC,OAGL,OAFAtB,EAAOuB,oBAAoB,SAAUP,QACrChB,EAAOuB,oBAAoB,SAAUL,GAKtBG,KAAKG,SAASC,iBAAiB,cACrCC,QAAQ,SAAUC,GAC3BvB,EAAYwB,YAAYD,KAI5B,IAAIE,EAAiBR,KAAKG,SAASrB,cAAc,kBAC7C0B,EACA3B,EAAY4B,KAAOD,EAAeC,MAElC9B,EAAOuB,oBAAoB,SAAUP,GACrChB,EAAOuB,oBAAoB,SAAUL,IAIzCN,EAAqBX,EAASY,gBAAgBC,aAE9CP,EADAD,GAAU,EAId,SAASyB,IAEL,IAAIxB,EAGJ,GAAIC,EAAcE,GAAoBE,EAAqBP,EACvDC,GAAU,MADd,CAKAC,GAAU,EAEV,IAAIyB,EAAM,IAAIhC,EAAOiC,eACrBD,EAAIE,aAAe,WAEnBF,EAAIjB,iBAAiB,OAAQK,GAE7BY,EAAIG,KAAK,MAAOjC,EAAY4B,MAC5BE,EAAII,KAAK,OAGb,SAASjB,IACLb,GAAWN,EAAOqC,sBAAsBN,GACxCzB,GAAU,EAGd,SAASU,IACLR,EAAcR,EAAOS,QACrBU,IAGJ,SAASD,IACLR,EAAmBV,EAAOW,YAC1BC,EAAqBX,EAASY,gBAAgBC,aAC9CK,KASRpB,mBAAmBC,OAAQC","file":"infinitescroll.js","sourcesContent":["/**\n * Infinite Scroll\n */\n\nfunction initInfiniteScroll(window, document) {\n // next link element\n var nextElement = document.querySelector('link[rel=next]');\n if (!nextElement) return;\n\n // post feed element\n var feedElement = document.querySelector('.post-feed');\n if (!feedElement) return;\n\n var buffer = 300;\n\n var ticking = false;\n var loading = false;\n\n var lastScrollY = window.scrollY;\n var lastWindowHeight = window.innerHeight;\n var lastDocumentHeight = document.documentElement.scrollHeight;\n\n function onPageLoad() {\n if (this.status === 404) {\n window.removeEventListener('scroll', onScroll);\n window.removeEventListener('resize', onResize);\n return;\n }\n\n // append contents\n var postElements = this.response.querySelectorAll('.post-card');\n postElements.forEach(function (item) {\n feedElement.appendChild(item);\n });\n\n // set next link\n var resNextElement = this.response.querySelector('link[rel=next]');\n if (resNextElement) {\n nextElement.href = resNextElement.href;\n } else {\n window.removeEventListener('scroll', onScroll);\n window.removeEventListener('resize', onResize);\n }\n\n // sync status\n lastDocumentHeight = document.documentElement.scrollHeight;\n ticking = false;\n loading = false;\n }\n\n function onUpdate() {\n // return if already loading\n if (loading) return;\n\n // return if not scroll to the bottom\n if (lastScrollY + lastWindowHeight <= lastDocumentHeight - buffer) {\n ticking = false;\n return;\n }\n\n loading = true;\n\n var xhr = new window.XMLHttpRequest();\n xhr.responseType = 'document';\n\n xhr.addEventListener('load', onPageLoad);\n\n xhr.open('GET', nextElement.href);\n xhr.send(null);\n }\n\n function requestTick() {\n ticking || window.requestAnimationFrame(onUpdate);\n ticking = true;\n }\n\n function onScroll() {\n lastScrollY = window.scrollY;\n requestTick();\n }\n\n function onResize() {\n lastWindowHeight = window.innerHeight;\n lastDocumentHeight = document.documentElement.scrollHeight;\n requestTick();\n }\n\n window.addEventListener('scroll', onScroll, { passive: true });\n window.addEventListener('resize', onResize);\n\n requestTick();\n};\n\ninitInfiniteScroll(window, document);\n"]} -------------------------------------------------------------------------------- /default.hbs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {{!-- Document Settings --}} 6 | 7 | 8 | 9 | {{!-- Base Meta --}} 10 | {{meta_title}} 11 | 12 | 13 | 14 | {{!-- Styles'n'Scripts --}} 15 | 16 | 17 | {{!-- This tag outputs SEO meta+structured data and other important settings --}} 18 | {{ghost_head}} 19 | 20 | 21 | 22 | 23 |
24 | 25 |
26 |
27 | 28 |
29 |
30 |
31 |
32 |
33 |
34 | 37 |
38 | {{#if @blog.logo}} 39 | 40 | {{else}} 41 | 42 | {{/if}} 43 |
44 |
45 | 54 |
55 |
56 |
57 | 58 |
59 |
60 | 61 | {{!-- All the main content gets inserted here, index.hbs, post.hbs, etc --}} 62 | {{{body}}} 63 | 64 |
65 |
66 | 67 | {{!-- The footer at the very bottom of the screen --}} 68 | 71 | 72 |
73 | 74 | {{!-- The big email subscribe modal content --}} 75 | {{#if @labs.subscribers}} 76 | 87 | {{/if}} 88 | 89 | 90 | 91 | 96 | 97 | 115 | 116 | 117 | {{!-- The #block helper will pull in data from the #contentFor other template files. In this case, there's some JavaScript which we only want to use in post.hbs, but it needs to be included down here, after jQuery has already loaded. --}} 118 | {{{block "scripts"}}} 119 | 120 | {{!-- Ghost outputs important scripts and data with this tag - it should always be the very last thing before the closing body tag --}} 121 | {{ghost_foot}} 122 | 123 | 124 | 125 | -------------------------------------------------------------------------------- /assets/css/components/global.css: -------------------------------------------------------------------------------- 1 | /* Reset 2 | /* ---------------------------------------------------------- */ 3 | 4 | html, 5 | body, 6 | div, 7 | span, 8 | applet, 9 | object, 10 | iframe, 11 | h1, 12 | h2, 13 | h3, 14 | h4, 15 | h5, 16 | h6, 17 | p, 18 | blockquote, 19 | pre, 20 | a, 21 | abbr, 22 | acronym, 23 | address, 24 | big, 25 | cite, 26 | code, 27 | del, 28 | dfn, 29 | em, 30 | img, 31 | ins, 32 | kbd, 33 | q, 34 | s, 35 | samp, 36 | small, 37 | strike, 38 | strong, 39 | sub, 40 | sup, 41 | tt, 42 | var, 43 | dl, 44 | dt, 45 | dd, 46 | ol, 47 | ul, 48 | li, 49 | fieldset, 50 | form, 51 | label, 52 | legend, 53 | table, 54 | caption, 55 | tbody, 56 | tfoot, 57 | thead, 58 | tr, 59 | th, 60 | td, 61 | article, 62 | aside, 63 | canvas, 64 | details, 65 | embed, 66 | figure, 67 | figcaption, 68 | footer, 69 | header, 70 | hgroup, 71 | menu, 72 | nav, 73 | output, 74 | ruby, 75 | section, 76 | summary, 77 | time, 78 | mark, 79 | audio, 80 | video { 81 | margin: 0; 82 | padding: 0; 83 | border: 0; 84 | font: inherit; 85 | font-size: 100%; 86 | vertical-align: baseline; 87 | } 88 | body { 89 | line-height: 1; 90 | } 91 | ol, 92 | ul { 93 | list-style: none; 94 | } 95 | blockquote, 96 | q { 97 | quotes: none; 98 | } 99 | blockquote:before, 100 | blockquote:after, 101 | q:before, 102 | q:after { 103 | content: ""; 104 | content: none; 105 | } 106 | table { 107 | border-spacing: 0; 108 | border-collapse: collapse; 109 | } 110 | img { 111 | max-width: 100%; 112 | } 113 | html { 114 | box-sizing: border-box; 115 | font-family: sans-serif; 116 | 117 | -ms-text-size-adjust: 100%; 118 | -webkit-text-size-adjust: 100%; 119 | } 120 | *, 121 | *:before, 122 | *:after { 123 | box-sizing: inherit; 124 | } 125 | a { 126 | background-color: transparent; 127 | } 128 | a:active, 129 | a:hover { 130 | outline: 0; 131 | } 132 | b, 133 | strong { 134 | font-weight: bold; 135 | } 136 | i, 137 | em, 138 | dfn { 139 | font-style: italic; 140 | } 141 | h1 { 142 | margin: 0.67em 0; 143 | font-size: 2em; 144 | } 145 | small { 146 | font-size: 80%; 147 | } 148 | sub, 149 | sup { 150 | position: relative; 151 | font-size: 75%; 152 | line-height: 0; 153 | vertical-align: baseline; 154 | } 155 | sup { 156 | top: -0.5em; 157 | } 158 | sub { 159 | bottom: -0.25em; 160 | } 161 | img { 162 | border: 0; 163 | } 164 | svg:not(:root) { 165 | overflow: hidden; 166 | } 167 | mark { 168 | background-color: #fdffb6; 169 | } 170 | code, 171 | kbd, 172 | pre, 173 | samp { 174 | font-family: monospace, monospace; 175 | font-size: 1em; 176 | } 177 | button, 178 | input, 179 | optgroup, 180 | select, 181 | textarea { 182 | margin: 0; 183 | color: inherit; 184 | font: inherit; 185 | } 186 | button { 187 | overflow: visible; 188 | border: none; 189 | } 190 | button, 191 | select { 192 | text-transform: none; 193 | } 194 | button, 195 | html input[type="button"], 196 | input[type="reset"], 197 | input[type="submit"] { 198 | cursor: pointer; 199 | -webkit-appearance: button; 200 | } 201 | button[disabled], 202 | html input[disabled] { 203 | cursor: default; 204 | } 205 | button::-moz-focus-inner, 206 | input::-moz-focus-inner { 207 | padding: 0; 208 | border: 0; 209 | } 210 | input { 211 | line-height: normal; 212 | } 213 | input:focus { 214 | outline: none; 215 | } 216 | input[type="checkbox"], 217 | input[type="radio"] { 218 | box-sizing: border-box; 219 | padding: 0; 220 | } 221 | input[type="number"]::-webkit-inner-spin-button, 222 | input[type="number"]::-webkit-outer-spin-button { 223 | height: auto; 224 | } 225 | input[type="search"] { 226 | box-sizing: content-box; 227 | 228 | -webkit-appearance: textfield; 229 | } 230 | input[type="search"]::-webkit-search-cancel-button, 231 | input[type="search"]::-webkit-search-decoration { 232 | -webkit-appearance: none; 233 | } 234 | legend { 235 | padding: 0; 236 | border: 0; 237 | } 238 | textarea { 239 | overflow: auto; 240 | } 241 | table { 242 | border-spacing: 0; 243 | border-collapse: collapse; 244 | } 245 | td, 246 | th { 247 | padding: 0; 248 | } 249 | 250 | /* ========================================================================== 251 | Base styles: opinionated defaults 252 | ========================================================================== */ 253 | 254 | html { 255 | overflow-x: hidden; 256 | overflow-y: scroll; 257 | font-size: 62.5%; 258 | 259 | -webkit-tap-highlight-color: rgba(0, 0, 0, 0); 260 | } 261 | body { 262 | overflow-x: hidden; 263 | color: color(var(--color-base) l(+20%)); 264 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif; 265 | font-size: 1.5rem; 266 | line-height: 1.6em; 267 | font-weight: 400; 268 | font-style: normal; 269 | letter-spacing: 0; 270 | text-rendering: optimizeLegibility; 271 | background: #fff; 272 | 273 | -webkit-font-smoothing: antialiased; 274 | -moz-osx-font-smoothing: grayscale; 275 | -moz-font-feature-settings: "liga" on; 276 | } 277 | 278 | ::selection { 279 | text-shadow: none; 280 | background: #cbeafb; 281 | } 282 | 283 | hr { 284 | position: relative; 285 | display: block; 286 | width: 100%; 287 | margin: 2.5em 0 3.5em; 288 | padding: 0; 289 | height: 1px; 290 | border: 0; 291 | border-top: 1px solid color(var(--color-border) l(+10%)); 292 | } 293 | 294 | audio, 295 | canvas, 296 | iframe, 297 | img, 298 | svg, 299 | video { 300 | vertical-align: middle; 301 | } 302 | 303 | p, 304 | blockquote { 305 | margin: 0 0 1.5em 0; 306 | } 307 | 308 | blockquote { 309 | margin: 1.5em 0; 310 | padding: 0 1.6em 0 1.6em; 311 | border-left: var(--color-bg) 0.5em solid; 312 | } 313 | 314 | blockquote p { 315 | margin: 0.8em 0; 316 | font-size: 1.2em; 317 | font-weight: 300; 318 | } 319 | 320 | blockquote small { 321 | display: inline-block; 322 | margin: 0.8em 0 0.8em 1.5em; 323 | font-size: 0.9em; 324 | opacity: 0.8; 325 | } 326 | /* Quotation marks */ 327 | blockquote small:before { 328 | content: "\2014 \00A0"; 329 | } 330 | 331 | blockquote cite { 332 | font-weight: bold; 333 | } 334 | blockquote cite a { 335 | font-weight: normal; 336 | } 337 | 338 | a { 339 | color: color(var(--color-primary) l(-5%)); 340 | text-decoration: none; 341 | transition: 0.4s ease; 342 | } 343 | 344 | a:hover { 345 | text-decoration: underline; 346 | transition: 0.2s ease; 347 | } 348 | 349 | h1, 350 | h2, 351 | h3, 352 | h4, 353 | h5, 354 | h6 { 355 | margin-top: 0; 356 | line-height: 1.4; 357 | font-weight: 700; 358 | text-rendering: optimizeLegibility; 359 | } 360 | 361 | h1 { 362 | margin: 0 0 0.5em 0; 363 | font-size: 5.7rem; 364 | font-weight: 800; 365 | } 366 | @media (max-width: 500px) { 367 | h1 { 368 | font-size: 2.7rem; 369 | } 370 | } 371 | 372 | h2 { 373 | margin: 1.5em 0 0.5em 0; 374 | font-size: 4rem; 375 | } 376 | @media (max-width: 500px) { 377 | h2 { 378 | font-size: 2rem; 379 | } 380 | } 381 | 382 | h3 { 383 | margin: 1.5em 0 1em 0; 384 | font-size: 3.2rem; 385 | } 386 | @media (max-width: 500px) { 387 | h3 { 388 | font-size: 1.8rem; 389 | } 390 | } 391 | 392 | h4 { 393 | margin: 1.5em 0 1em 0; 394 | font-size: 2.6rem; 395 | } 396 | 397 | h5 { 398 | margin: 1.5em 0 1em 0; 399 | font-size: 2.4rem; 400 | } 401 | 402 | h6 { 403 | margin: 1.5em 0 1em 0; 404 | font-size: 2.2rem; 405 | } 406 | 407 | -------------------------------------------------------------------------------- /assets/css/screen.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | This is a development CSS file which is built to a minified 4 | production stylesheet in assets/built/screen.css using gulp dev 5 | 6 | */ 7 | 8 | 9 | /* Lib - Local component imports 10 | /* ---------------------------------------------------------- */ 11 | @import "vars.css"; 12 | @import "components/global.css"; 13 | @import "components/ghost.css"; 14 | @import "components/lists.css"; 15 | @import "components/grid.css"; 16 | @import "components/tables.css"; 17 | @import "components/forms.css"; 18 | @import "components/buttons.css"; 19 | @import "components/actions.css"; 20 | @import "components/hamburger.css"; 21 | @import "components/animations.css"; 22 | 23 | 24 | /* Main - Theme styles 25 | /* ---------------------------------------------------------- */ 26 | 27 | body { 28 | font-family: 'Muli', sans-serif; 29 | background: var(--color-bg); 30 | transition: background 0.3s ease-out; 31 | transition-delay: 0.25; 32 | } 33 | 34 | .img { 35 | display: block; 36 | width: 100%; 37 | height: 100%; 38 | background-position: center center; 39 | background-size: cover; 40 | border-radius: 100%; 41 | } 42 | 43 | .hidden { 44 | visibility: hidden; 45 | position: absolute; 46 | text-indent: -9999px; 47 | } 48 | 49 | 50 | /* Layout 51 | /* ---------------------------------------------------------- */ 52 | 53 | .site-wrapper { 54 | padding: 3vw; 55 | min-height: 100vh; 56 | } 57 | @media (max-width: 850px) { 58 | .site-wrapper { 59 | padding: 6vw; 60 | } 61 | } 62 | 63 | .page-head { 64 | display: flex; 65 | flex-direction: column; 66 | align-items: center; 67 | justify-content: center; 68 | padding: 13vw 0; 69 | max-width: 70%; 70 | margin: auto; 71 | text-align: center; 72 | } 73 | 74 | .error-head { 75 | height: 75vh; 76 | } 77 | 78 | .error-head h1 { 79 | margin: 0; 80 | font-size: 7rem; 81 | line-height: 1.1em; 82 | font-weight: var(--font-heavy); 83 | letter-spacing: 10px; 84 | } 85 | 86 | .error-head p { 87 | font-size: 1.4rem; 88 | text-transform: uppercase; 89 | letter-spacing: 1px; 90 | color: color(var(--color-base) l(+50%)); 91 | } 92 | 93 | .error-link { 94 | margin-top: 1rem; 95 | font-size: 1.5rem; 96 | text-decoration: underline; 97 | } 98 | 99 | .page-head-title { 100 | margin: 0; 101 | font-size: 4.2rem; 102 | color: var(--color-base); 103 | } 104 | @media (max-width: 500px) { 105 | .page-head-title { 106 | font-size: 2rem; 107 | } 108 | } 109 | 110 | .page-head-description { 111 | margin: 0 0 1.6vw; 112 | color: color(var(--color-border) l(-20%)); 113 | font-size: 2.2rem; 114 | line-height: 1.35em; 115 | } 116 | @media (max-width: 500px) { 117 | .page-head-description { 118 | font-size: 1.6rem; 119 | } 120 | } 121 | 122 | .site-foot { 123 | margin: 3vw 0 1vw; 124 | text-align: center; 125 | color: color(var(--color-border) l(-20%)); 126 | font-size: 1.4rem; 127 | } 128 | 129 | .site-foot a { 130 | color: var(--color-base); 131 | } 132 | 133 | 134 | /* Site Navigation 135 | /* ---------------------------------------------------------- */ 136 | 137 | .site-head { 138 | position: relative; 139 | z-index: 300; 140 | margin-top: -10px; 141 | font-size: 1.35rem; 142 | } 143 | 144 | .site-head-container { 145 | display: flex; 146 | justify-content: space-between; 147 | align-items: center; 148 | } 149 | 150 | .site-head-left { 151 | position: relative; 152 | z-index: 100; 153 | display: flex; 154 | align-items: center; 155 | margin-right: 10px; 156 | white-space: nowrap; 157 | } 158 | 159 | .nav { 160 | display: flex; 161 | margin: 0 0 0 -12px; 162 | padding: 0; 163 | list-style: none; 164 | } 165 | 166 | .site-head li { 167 | display: block; 168 | margin: 0; 169 | padding: 0; 170 | } 171 | 172 | .site-head-left a, 173 | .site-head-right a { 174 | display: block; 175 | margin: 0; 176 | padding: 10px 12px; 177 | color: var(--color-base); 178 | font-weight: 600; 179 | opacity: 0.4; 180 | } 181 | 182 | .nav-current a, 183 | .site-head a:hover { 184 | text-decoration: none; 185 | opacity: 1; 186 | } 187 | 188 | .site-head-center { 189 | position: absolute; 190 | display: flex; 191 | justify-content: center; 192 | width: 100%; 193 | } 194 | 195 | .site-head-logo { 196 | flex-shrink: 0; 197 | display: block; 198 | padding: 10px; 199 | color: var(--color-base); 200 | font-size: 2.1rem; 201 | line-height: 1em; 202 | font-weight: 700; 203 | text-transform: uppercase; 204 | letter-spacing: 1px; 205 | } 206 | 207 | .site-head-logo:hover { 208 | text-decoration: none; 209 | } 210 | 211 | .site-head-logo img { 212 | display: block; 213 | margin-top: 2px; 214 | width: auto; 215 | height: 48px; 216 | } 217 | 218 | .site-head-right { 219 | position: relative; 220 | z-index: 100; 221 | flex-shrink: 0; 222 | display: flex; 223 | align-items: center; 224 | } 225 | 226 | .social-links { 227 | flex-shrink: 0; 228 | display: flex; 229 | align-items: center; 230 | } 231 | 232 | .subscribe-button { 233 | display: block; 234 | padding: 4px 10px; 235 | border: var(--color-base) 1px solid; 236 | color: var(--color-base); 237 | font-size: 1.2rem; 238 | line-height: 1em; 239 | border-radius: 10px; 240 | opacity: 0.8; 241 | } 242 | 243 | .subscribe-button:hover { 244 | text-decoration: none; 245 | opacity: 1; 246 | } 247 | 248 | .rss-button { 249 | opacity: 0.4; 250 | } 251 | 252 | .rss-button:hover { 253 | opacity: 1; 254 | } 255 | 256 | .rss-button svg { 257 | margin-bottom: 1px; 258 | height: 2.1rem; 259 | fill: var(--color-base); 260 | } 261 | 262 | 263 | /* Mobile Nav Menu 264 | /* ---------------------------------------------------------- */ 265 | 266 | .nav-burger { 267 | display: none; 268 | position: absolute; 269 | left: 0; 270 | z-index: 9999; 271 | padding: 12px 12px 12px 0; 272 | } 273 | 274 | @media (max-width: 850px) { 275 | .site-head { 276 | padding: 0; 277 | } 278 | .nav-burger { 279 | display: block; 280 | } 281 | .site-head-container { 282 | flex-direction: column; 283 | justify-content: flex-start; 284 | height: 40px; 285 | background: rgba(255,255,255,0); 286 | z-index: -1; 287 | transition: all 0.4s ease-out; 288 | overflow: hidden; 289 | } 290 | .site-head-left, 291 | .site-head-right { 292 | position: relative; 293 | z-index: -1; 294 | height: auto; 295 | transition: height 0.2s cubic-bezier(0.4, 0.01, 0.165, 0.99); 296 | transition-delay: 1s; 297 | } 298 | .site-head-left a, 299 | .site-head-right a { 300 | margin: 8px 0; 301 | padding: 1px 0; 302 | font-size: 2.6rem; 303 | line-height: 1.15em; 304 | font-weight: 200; 305 | opacity: 0; 306 | transition: transform 0.3s cubic-bezier(0.4, 0.01, 0.165, 0.99), 307 | opacity 0.2s cubic-bezier(0.4, 0.01, 0.165, 0.99); 308 | transform: scale(1.1) translateY(-25px); 309 | } 310 | .site-head-right a { 311 | padding: 5px 0; 312 | margin: 1px 0; 313 | font-size: 2rem; 314 | } 315 | .nav { 316 | width: 100%; 317 | flex-direction: column; 318 | justify-content: flex-start; 319 | align-items: flex-start; 320 | margin: 3vw 0 0 0; 321 | } 322 | .site-head-left { 323 | order: 2; 324 | margin: 0; 325 | width: 100%; 326 | } 327 | .site-head-center { 328 | order: 1; 329 | position: static; 330 | z-index: auto; 331 | display: flex; 332 | justify-content: center; 333 | } 334 | .site-head-right { 335 | order: 3; 336 | width: 100%; 337 | margin-top: 3vw; 338 | } 339 | .social-links { 340 | flex-direction: column; 341 | align-items: flex-start; 342 | } 343 | 344 | .site-head-open { 345 | background: rgba(255,255,255,1); 346 | transition: background 0.5s ease-out; 347 | transition-delay: 0.25; 348 | overflow: hidden; 349 | height: 100vh; 350 | } 351 | 352 | .site-head-open .site-head-container { 353 | height: 100vh; 354 | transition: height 0.2s ease-in; 355 | } 356 | 357 | .site-head-open .site-head-left, 358 | .site-head-open .site-head-right { 359 | z-index: 9999; 360 | height: auto; 361 | transition: height 0.2s cubic-bezier(0.4, 0.01, 0.165, 0.99); 362 | } 363 | 364 | .site-head-open .site-head-left a, 365 | .site-head-open .site-head-right a { 366 | opacity: 1; 367 | transition: transform 0.6s cubic-bezier(0.4, 0.01, 0.165, 0.99), 368 | opacity 0.9s cubic-bezier(0.4, 0.01, 0.165, 0.99); 369 | transform: scale(1) translateY(0px); 370 | } 371 | .site-head-open .nav-current a { 372 | border-bottom: var(--color-base) 2px solid; 373 | } 374 | .site-head-open .site-head-right a { 375 | opacity: 0.5; 376 | } 377 | .site-head-open .site-foot { 378 | display: block; 379 | position: fixed; 380 | z-index: 9999; 381 | bottom: 0; 382 | transition: transform 0.3s cubic-bezier(0.4, 0.01, 0.165, 0.99); 383 | transform: translateY(-4vw); 384 | } 385 | 386 | } 387 | 388 | 389 | /* Post Feed 390 | /* ---------------------------------------------------------- */ 391 | 392 | .post-feed { 393 | display: flex; 394 | align-items: ; 395 | flex-wrap: wrap; 396 | } 397 | 398 | .post-card { 399 | position: relative; 400 | flex: 1 1 50%; 401 | display: flex; 402 | position: relative; 403 | height: 35vw; 404 | background: linear-gradient(135deg, #1f1f1f 0%, #111 100%) center center; 405 | background-size: cover; 406 | overflow: hidden; 407 | counter-increment: posts; 408 | } 409 | 410 | @media (max-width: 700px) { 411 | .post-card { 412 | flex: 1 1 100%; 413 | height: 70vw; 414 | } 415 | } 416 | 417 | .post-card-large { 418 | flex: 1 1 100%; 419 | } 420 | 421 | .post-card-link { 422 | flex: 1 1 auto; 423 | display: block; 424 | } 425 | 426 | .post-card-content { 427 | flex: 1 1 auto; 428 | display: flex; 429 | align-items: center; 430 | justify-content: center; 431 | position: absolute; 432 | top: 0; 433 | right: 0; 434 | bottom: 0; 435 | left: 0; 436 | color: #fff; 437 | background: rgba(0,0,0,0.1); 438 | opacity: 1; 439 | transition: opacity 0.5s cubic-bezier(.33,0,.2,1); 440 | } 441 | 442 | .post-card.with-image .post-card-content { 443 | opacity: 0; 444 | } 445 | @media (max-width: 700px) { 446 | .post-card.with-image .post-card-content { 447 | opacity: 1; 448 | } 449 | } 450 | 451 | .post-card-link:hover .post-card-content { 452 | opacity: 1; 453 | transition: opacity 0.3s cubic-bezier(.33,0,.2,1); 454 | } 455 | 456 | .post-card-title { 457 | margin: 0; 458 | display: inline-block; 459 | font-size: 3.4rem; 460 | max-width: 70%; 461 | text-align: center; 462 | transition: all 0.3s cubic-bezier(.33,0,.2,1); 463 | } 464 | 465 | /* Posts without images */ 466 | .post-card.no-image:before { 467 | display: block; 468 | content: counter(posts); 469 | position: absolute; 470 | bottom: -0.15em; 471 | right: 5vw; 472 | font-size: 28vw; 473 | line-height: 1em; 474 | font-weight: var(--font-heavy); 475 | letter-spacing: -0.1em; 476 | color: rgba(0,0,0,0.2); 477 | } 478 | 479 | .post-card.no-image .post-card-content { 480 | justify-content: flex-start; 481 | align-items: flex-start; 482 | padding: 4vw; 483 | } 484 | 485 | .post-card.no-image .post-card-title { 486 | font-size: 5rem; 487 | line-height: 1.15em; 488 | text-align: left; 489 | } 490 | 491 | .post-card.no-image:hover .post-card-title { 492 | text-decoration: underline; 493 | } 494 | 495 | @media (max-width: 1200px) { 496 | .post-card.no-image .post-card-title { 497 | font-size: 3.4rem; 498 | } 499 | } 500 | @media (max-width: 700px) { 501 | .post-card.no-image:before { 502 | font-size: 50vw; 503 | } 504 | } 505 | 506 | /* Post Content 507 | /* ---------------------------------------------------------- */ 508 | 509 | .post-content { 510 | max-width: 720px; 511 | margin: 0 auto; 512 | padding: 6vw 0; 513 | } 514 | 515 | .post-content-header { 516 | display: flex; 517 | flex-direction: column; 518 | align-items: center; 519 | } 520 | 521 | .post-content-title { 522 | margin: 0 0 3vw; 523 | color: var(--color-base); 524 | text-align: center; 525 | } 526 | 527 | .post-content-excerpt { 528 | margin: -2vw 0 3vw; 529 | font-size: 2.2rem; 530 | line-height: 1.6em; 531 | color: var(--color-base); 532 | text-align: center; 533 | opacity: 0.5; 534 | } 535 | @media (max-width: 500px) { 536 | .post-content-excerpt { 537 | font-size: 1.8rem; 538 | } 539 | } 540 | 541 | .post-content-image { 542 | margin: 4vw 0; 543 | position: relative; 544 | width: 75vw; 545 | min-width: 100%; 546 | margin-left: calc(50% - 50vw); 547 | margin-right: calc(50% - 50vw); 548 | transform: translateX(calc(50vw - 50%)); 549 | } 550 | 551 | .post-content-body { 552 | font-size: 1.9rem; 553 | line-height: 1.65em; 554 | } 555 | @media (max-width: 500px) { 556 | .post-content-body { 557 | font-size: 1.7rem; 558 | } 559 | } 560 | 561 | .post-content-body h1, 562 | .post-content-body h2, 563 | .post-content-body h3, 564 | .post-content-body h4, 565 | .post-content-body h5, 566 | .post-content-body h6 { 567 | color: var(--color-base); 568 | } 569 | 570 | .post-content-body li { 571 | word-break: break-word; 572 | } 573 | 574 | .post-content-body li p { 575 | margin: 0; 576 | } 577 | 578 | .post-content-body iframe { 579 | margin: 0 auto !important; 580 | } 581 | 582 | .post-content-body blockquote { 583 | margin: 0 0 1.5em; 584 | padding: 0 1.5em; 585 | border-left: #3eb0ef 3px solid; 586 | } 587 | 588 | .post-content-body blockquote p { 589 | margin: 0 0 1em 0; 590 | color: inherit; 591 | font-size: inherit; 592 | line-height: inherit; 593 | font-style: italic; 594 | } 595 | 596 | .post-content-body blockquote p:last-child { 597 | margin-bottom: 0; 598 | } 599 | 600 | .post-content-body code { 601 | padding: 0 5px 2px; 602 | font-size: 0.8em; 603 | line-height: 1em; 604 | font-weight: 400!important; 605 | background: var(--color-bg); 606 | border-radius: 3px; 607 | } 608 | 609 | .post-content-body p code { 610 | word-break: break-all; 611 | } 612 | 613 | .post-content-body pre { 614 | overflow-x: auto; 615 | margin: 1.5em 0 3em; 616 | padding: 20px; 617 | max-width: 100%; 618 | border: color(var(--color-base) l(-10%)) 1px solid; 619 | color: var(--color-bg); 620 | font-size: 1.4rem; 621 | line-height: 1.5em; 622 | background: color(var(--color-base) l(-3%)); 623 | border-radius: 5px; 624 | } 625 | 626 | .post-content-body pre code { 627 | padding: 0; 628 | font-size: inherit; 629 | line-height: inherit; 630 | background: transparent; 631 | } 632 | 633 | .post-content-body pre code :not(span) { 634 | color: inherit; 635 | } 636 | 637 | .post-content-body .fluid-width-video-wrapper { 638 | margin: 1.5em 0 3em; 639 | } 640 | 641 | .post-content-body hr { 642 | margin: 4vw 0; 643 | } 644 | 645 | .post-content-body hr:after { 646 | content: ""; 647 | position: absolute; 648 | top: -15px; 649 | left: 50%; 650 | display: block; 651 | margin-left: -10px; 652 | width: 1px; 653 | height: 30px; 654 | background: color(var(--color-border) l(+10%)); 655 | box-shadow: #fff 0 0 0 5px; 656 | transform: rotate(45deg); 657 | } 658 | 659 | .footnotes-sep { 660 | margin-bottom: 30px; 661 | } 662 | 663 | .footnotes { 664 | font-size: 1.5rem; 665 | } 666 | 667 | .footnotes p { 668 | margin: 0; 669 | } 670 | 671 | .footnote-backref { 672 | color: var(--color-primary) !important; 673 | font-size: 1.2rem; 674 | font-weight: bold; 675 | text-decoration: none !important; 676 | box-shadow: none !important; 677 | } 678 | 679 | /* Author Archive 680 | /* ---------------------------------------------------------- */ 681 | 682 | .author-meta { 683 | display: flex; 684 | justify-content: center; 685 | align-items: center; 686 | margin-bottom: 10px; 687 | color: color(var(--color-border) l(-20%)); 688 | } 689 | 690 | .author-links { 691 | display: flex; 692 | align-items: center; 693 | margin-top: 20px; 694 | } 695 | 696 | .author-links a { 697 | display: block; 698 | margin: 0; 699 | padding: 0 12px; 700 | color: var(--color-base); 701 | opacity: 0.4; 702 | } 703 | 704 | .author-links a:hover { 705 | text-decoration: none; 706 | opacity: 1; 707 | } 708 | 709 | .author-links .divider { 710 | display: inline-block; 711 | margin: 0 3px; 712 | } 713 | 714 | /* Page Template 715 | /* ---------------------------------------------------------- */ 716 | 717 | .page-template .post-content-body h1, 718 | .page-template .post-content-body h2, 719 | .page-template .post-content-body h3 { 720 | text-align: center; 721 | } 722 | -------------------------------------------------------------------------------- /assets/built/swup.js: -------------------------------------------------------------------------------- 1 | !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.swupMergeHeadPlugin=t():e.swupMergeHeadPlugin=t()}(window,function(){return function(n){var o={};function r(e){if(o[e])return o[e].exports;var t=o[e]={i:e,l:!1,exports:{}};return n[e].call(t.exports,t,t.exports,r),t.l=!0,t.exports}return r.m=n,r.c=o,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)r.d(n,o,function(e){return t[e]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=0)}([function(e,t,n){"use strict";e.exports={name:"swupMergeHeadPlugin",options:{runScripts:!1},exec:function(w,y,n){document.addEventListener("swup:contentReplaced",function(){var e=document.querySelector("head"),t=n().querySelector("head");o(e,t)});var o=function(o,e){for(var t=o.children,n=e.children,r=[],i=[],s=0;s",""),r=document.createElement("div");r.innerHTML=o;for(var i=[],s=0;s*{width:100%}@media (max-width:var(--xsmall)){.actions:not(.fixed){-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin-left:0;width:100%!important}.actions:not(.fixed) li{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem 0 0;text-align:center;width:100%}.actions:not(.fixed) li>*{width:100%}.actions:not(.fixed) li:first-child{padding-top:0}.actions:not(.fixed) li .button,.actions:not(.fixed) li button,.actions:not(.fixed) li input[type=button],.actions:not(.fixed) li input[type=reset],.actions:not(.fixed) li input[type=submit]{width:100%}.actions:not(.fixed) li .button.icon:before,.actions:not(.fixed) li button.icon:before,.actions:not(.fixed) li input[type=button].icon:before,.actions:not(.fixed) li input[type=reset].icon:before,.actions:not(.fixed) li input[type=submit].icon:before{margin-left:-.5rem}}.hamburger{display:-webkit-box;display:-ms-flexbox;display:flex;overflow:visible;margin:0;padding:2px 0;border:0;color:inherit;font:inherit;text-transform:none;background-color:transparent;cursor:pointer;-webkit-transition:opacity .15s linear,-webkit-filter .15s linear;transition:opacity .15s linear,-webkit-filter .15s linear;transition:opacity .15s linear,filter .15s linear;transition:opacity .15s linear,filter .15s linear,-webkit-filter .15s linear}.hamburger-box{position:relative;display:inline-block;width:20px;height:13px}.hamburger-inner{top:50%;display:block;margin-top:-2px}.hamburger-inner,.hamburger-inner:after,.hamburger-inner:before{position:absolute;width:20px;height:1px;background-color:#ababab;border-radius:4px;-webkit-transition:-webkit-transform .15s ease;transition:-webkit-transform .15s ease;transition:transform .15s ease;transition:transform .15s ease,-webkit-transform .15s ease}.hamburger-inner:after,.hamburger-inner:before{content:"";display:block}.hamburger-inner:before{top:-6px}.hamburger-inner:after{bottom:-6px}.hamburger--collapse .hamburger-inner{top:auto;bottom:0;-webkit-transition-delay:.15s;transition-delay:.15s;-webkit-transition-timing-function:cubic-bezier(.55,.055,.675,.19);transition-timing-function:cubic-bezier(.55,.055,.675,.19);-webkit-transition-duration:.15s;transition-duration:.15s}.hamburger--collapse .hamburger-inner:after{top:-12px;-webkit-transition:top .3s cubic-bezier(.33333,.66667,.66667,1) .3s,opacity .1s linear;transition:top .3s cubic-bezier(.33333,.66667,.66667,1) .3s,opacity .1s linear}.hamburger--collapse .hamburger-inner:before{-webkit-transition:top .12s cubic-bezier(.33333,.66667,.66667,1) .3s,-webkit-transform .15s cubic-bezier(.55,.055,.675,.19);transition:top .12s cubic-bezier(.33333,.66667,.66667,1) .3s,-webkit-transform .15s cubic-bezier(.55,.055,.675,.19);transition:top .12s cubic-bezier(.33333,.66667,.66667,1) .3s,transform .15s cubic-bezier(.55,.055,.675,.19);transition:top .12s cubic-bezier(.33333,.66667,.66667,1) .3s,transform .15s cubic-bezier(.55,.055,.675,.19),-webkit-transform .15s cubic-bezier(.55,.055,.675,.19)}.site-head-open .hamburger-inner,.site-head-open .hamburger-inner:after,.site-head-open .hamburger-inner:before{background-color:#131313}.site-head-open .hamburger-inner{-webkit-transition-delay:.32s;transition-delay:.32s;-webkit-transition-timing-function:cubic-bezier(.215,.61,.355,1);transition-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translate3d(0,-6px,0) rotate(-45deg);transform:translate3d(0,-6px,0) rotate(-45deg)}.site-head-open .hamburger-inner:after{top:0;opacity:0;-webkit-transition:top .3s cubic-bezier(.33333,0,.66667,.33333),opacity .1s linear .27s;transition:top .3s cubic-bezier(.33333,0,.66667,.33333),opacity .1s linear .27s}.site-head-open .hamburger-inner:before{top:0;-webkit-transition:top .12s cubic-bezier(.33333,0,.66667,.33333) .18s,-webkit-transform .15s cubic-bezier(.215,.61,.355,1) .42s;transition:top .12s cubic-bezier(.33333,0,.66667,.33333) .18s,-webkit-transform .15s cubic-bezier(.215,.61,.355,1) .42s;transition:top .12s cubic-bezier(.33333,0,.66667,.33333) .18s,transform .15s cubic-bezier(.215,.61,.355,1) .42s;transition:top .12s cubic-bezier(.33333,0,.66667,.33333) .18s,transform .15s cubic-bezier(.215,.61,.355,1) .42s,-webkit-transform .15s cubic-bezier(.215,.61,.355,1) .42s;-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.transition-fade{-webkit-transition:.25s;transition:.25s;opacity:1;-webkit-animation:slideUp .9s cubic-bezier(.075,.82,.165,1) forwards;animation:slideUp .9s cubic-bezier(.075,.82,.165,1) forwards;-webkit-transform:translate3d(0,4vh,0);transform:translate3d(0,4vh,0)}html.is-animating .transition-fade{opacity:0}@-webkit-keyframes slideUp{0%{-webkit-transform:translate3d(0,4vh,0);transform:translate3d(0,4vh,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideUp{0%{-webkit-transform:translate3d(0,4vh,0);transform:translate3d(0,4vh,0)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}body{font-family:Muli,sans-serif;background:#f8f8f8;-webkit-transition:background .3s ease-out;transition:background .3s ease-out;-webkit-transition-delay:.25;transition-delay:.25}.img{display:block;width:100%;height:100%;background-position:50%;background-size:cover;border-radius:100%}.hidden{visibility:hidden;position:absolute;text-indent:-9999px}.site-wrapper{padding:3vw;min-height:100vh}@media (max-width:850px){.site-wrapper{padding:6vw}}.page-head{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:13vw 0;max-width:70%;margin:auto;text-align:center}.error-head{height:75vh}.error-head h1{margin:0;font-size:7rem;line-height:1.1em;font-weight:800;letter-spacing:10px}.error-head p{font-size:1.4rem;text-transform:uppercase;letter-spacing:1px;color:#919191}.error-link{margin-top:1rem;font-size:1.5rem;text-decoration:underline}.page-head-title{margin:0;font-size:4.2rem;color:#131313}@media (max-width:500px){.page-head-title{font-size:2rem}}.page-head-description{margin:0 0 1.6vw;color:#ababab;font-size:2.2rem;line-height:1.35em}@media (max-width:500px){.page-head-description{font-size:1.6rem}}.site-foot{margin:3vw 0 1vw;text-align:center;color:#ababab;font-size:1.4rem}.site-foot a{color:#131313}.site-head{position:relative;z-index:300;margin-top:-10px;font-size:1.35rem}.site-head-container{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.site-head-container,.site-head-left{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.site-head-left{position:relative;z-index:100;margin-right:10px;white-space:nowrap}.nav{display:-webkit-box;display:-ms-flexbox;display:flex;margin:0 0 0 -12px;padding:0;list-style:none}.site-head li{display:block;margin:0;padding:0}.site-head-left a,.site-head-right a{display:block;margin:0;padding:10px 12px;color:#131313;font-weight:600;opacity:.4}.nav-current a,.site-head a:hover{text-decoration:none;opacity:1}.site-head-center{position:absolute;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:100%}.site-head-logo{-ms-flex-negative:0;flex-shrink:0;display:block;padding:10px;color:#131313;font-size:2.1rem;line-height:1em;font-weight:700;text-transform:uppercase;letter-spacing:1px}.site-head-logo:hover{text-decoration:none}.site-head-logo img{display:block;margin-top:2px;width:auto;height:28px}.site-head-right{position:relative;z-index:100}.site-head-right,.social-links{-ms-flex-negative:0;flex-shrink:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.subscribe-button{display:block;padding:4px 10px;border:1px solid #131313;color:#131313;font-size:1.2rem;line-height:1em;border-radius:10px;opacity:.8}.subscribe-button:hover{text-decoration:none;opacity:1}.rss-button{opacity:.4}.rss-button:hover{opacity:1}.rss-button svg{margin-bottom:1px;height:2.1rem;fill:#131313}.nav-burger{display:none;position:absolute;left:0;z-index:9999;padding:12px 12px 12px 0}@media (max-width:850px){.site-head{padding:0}.nav-burger{display:block}.site-head-container{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;height:40px;background:hsla(0,0%,100%,0);z-index:-1;-webkit-transition:all .4s ease-out;transition:all .4s ease-out;overflow:hidden}.site-head-left,.site-head-right{position:relative;z-index:-1;height:auto;-webkit-transition:height .2s cubic-bezier(.4,.01,.165,.99);transition:height .2s cubic-bezier(.4,.01,.165,.99);-webkit-transition-delay:1s;transition-delay:1s}.site-head-left a,.site-head-right a{margin:8px 0;padding:1px 0;font-size:2.6rem;line-height:1.15em;font-weight:200;opacity:0;-webkit-transition:opacity .2s cubic-bezier(.4,.01,.165,.99),-webkit-transform .3s cubic-bezier(.4,.01,.165,.99);transition:opacity .2s cubic-bezier(.4,.01,.165,.99),-webkit-transform .3s cubic-bezier(.4,.01,.165,.99);transition:transform .3s cubic-bezier(.4,.01,.165,.99),opacity .2s cubic-bezier(.4,.01,.165,.99);transition:transform .3s cubic-bezier(.4,.01,.165,.99),opacity .2s cubic-bezier(.4,.01,.165,.99),-webkit-transform .3s cubic-bezier(.4,.01,.165,.99);-webkit-transform:scale(1.1) translateY(-25px);transform:scale(1.1) translateY(-25px)}.site-head-right a{padding:5px 0;margin:1px 0;font-size:2rem}.nav{width:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;margin:3vw 0 0}.site-head-left{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2;margin:0;width:100%}.site-head-center{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1;position:static;z-index:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.site-head-right{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3;width:100%;margin-top:3vw}.social-links{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.site-head-open{background:#fff;-webkit-transition:background .5s ease-out;transition:background .5s ease-out;-webkit-transition-delay:.25;transition-delay:.25;overflow:hidden;height:100vh}.site-head-open .site-head-container{height:100vh;-webkit-transition:height .2s ease-in;transition:height .2s ease-in}.site-head-open .site-head-left,.site-head-open .site-head-right{z-index:9999;height:auto;-webkit-transition:height .2s cubic-bezier(.4,.01,.165,.99);transition:height .2s cubic-bezier(.4,.01,.165,.99)}.site-head-open .site-head-left a,.site-head-open .site-head-right a{opacity:1;-webkit-transition:opacity .9s cubic-bezier(.4,.01,.165,.99),-webkit-transform .6s cubic-bezier(.4,.01,.165,.99);transition:opacity .9s cubic-bezier(.4,.01,.165,.99),-webkit-transform .6s cubic-bezier(.4,.01,.165,.99);transition:transform .6s cubic-bezier(.4,.01,.165,.99),opacity .9s cubic-bezier(.4,.01,.165,.99);transition:transform .6s cubic-bezier(.4,.01,.165,.99),opacity .9s cubic-bezier(.4,.01,.165,.99),-webkit-transform .6s cubic-bezier(.4,.01,.165,.99);-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}.site-head-open .nav-current a{border-bottom:2px solid #131313}.site-head-open .site-head-right a{opacity:.5}.site-head-open .site-foot{display:block;position:fixed;z-index:9999;bottom:0;-webkit-transition:-webkit-transform .3s cubic-bezier(.4,.01,.165,.99);transition:-webkit-transform .3s cubic-bezier(.4,.01,.165,.99);transition:transform .3s cubic-bezier(.4,.01,.165,.99);transition:transform .3s cubic-bezier(.4,.01,.165,.99),-webkit-transform .3s cubic-bezier(.4,.01,.165,.99);-webkit-transform:translateY(-4vw);transform:translateY(-4vw)}}.post-feed{-ms-flex-wrap:wrap;flex-wrap:wrap}.post-card,.post-feed{display:-webkit-box;display:-ms-flexbox;display:flex}.post-card{-webkit-box-flex:1;-ms-flex:1 1 50%;flex:1 1 50%;position:relative;height:35vw;background:linear-gradient(135deg,#1f1f1f,#111) 50%;background-size:cover;overflow:hidden;counter-increment:posts}@media (max-width:700px){.post-card{-webkit-box-flex:1;-ms-flex:1 1 100%;flex:1 1 100%;height:70vw}}.post-card-large{-webkit-box-flex:1;-ms-flex:1 1 100%;flex:1 1 100%}.post-card-link{display:block}.post-card-content,.post-card-link{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.post-card-content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;position:absolute;top:0;right:0;bottom:0;left:0;color:#fff;background:rgba(0,0,0,.1);opacity:1;-webkit-transition:opacity .5s cubic-bezier(.33,0,.2,1);transition:opacity .5s cubic-bezier(.33,0,.2,1)}.post-card.with-image .post-card-content{opacity:0}@media (max-width:700px){.post-card.with-image .post-card-content{opacity:1}}.post-card-link:hover .post-card-content{opacity:1;-webkit-transition:opacity .3s cubic-bezier(.33,0,.2,1);transition:opacity .3s cubic-bezier(.33,0,.2,1)}.post-card-title{margin:0;display:inline-block;font-size:3.4rem;max-width:70%;text-align:center;-webkit-transition:all .3s cubic-bezier(.33,0,.2,1);transition:all .3s cubic-bezier(.33,0,.2,1)}.post-card.no-image:before{display:block;content:counter(posts);position:absolute;bottom:-.15em;right:5vw;font-size:28vw;line-height:1em;font-weight:800;letter-spacing:-.1em;color:rgba(0,0,0,.2)}.post-card.no-image .post-card-content{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;padding:4vw}.post-card.no-image .post-card-title{font-size:5rem;line-height:1.15em;text-align:left}.post-card.no-image:hover .post-card-title{text-decoration:underline}@media (max-width:1200px){.post-card.no-image .post-card-title{font-size:3.4rem}}@media (max-width:700px){.post-card.no-image:before{font-size:50vw}}.post-content{max-width:720px;margin:0 auto;padding:6vw 0}.post-content-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.post-content-title{margin:0 0 3vw;color:#131313;text-align:center}.post-content-excerpt{margin:-2vw 0 3vw;font-size:2.2rem;line-height:1.6em;color:#131313;text-align:center;opacity:.5}@media (max-width:500px){.post-content-excerpt{font-size:1.8rem}}.post-content-image{position:relative;width:75vw;min-width:100%;margin:4vw calc(50% - 50vw);-webkit-transform:translateX(calc(50vw - 50%));transform:translateX(calc(50vw - 50%))}.post-content-body{font-size:1.9rem;line-height:1.65em}@media (max-width:500px){.post-content-body{font-size:1.7rem}}.post-content-body h1,.post-content-body h2,.post-content-body h3,.post-content-body h4,.post-content-body h5,.post-content-body h6{color:#131313}.post-content-body li{word-break:break-word}.post-content-body li p{margin:0}.post-content-body iframe{margin:0 auto!important}.post-content-body blockquote{margin:0 0 1.5em;padding:0 1.5em;border-left:3px solid #3eb0ef}.post-content-body blockquote p{margin:0 0 1em;color:inherit;font-size:inherit;line-height:inherit;font-style:italic}.post-content-body blockquote p:last-child{margin-bottom:0}.post-content-body code{padding:0 5px 2px;font-size:.8em;line-height:1em;font-weight:400!important;background:#f8f8f8;border-radius:3px}.post-content-body p code{word-break:break-all}.post-content-body pre{overflow-x:auto;margin:1.5em 0 3em;padding:20px;max-width:100%;border:1px solid #000;color:#f8f8f8;font-size:1.4rem;line-height:1.5em;background:#0a0a0a;border-radius:5px}.post-content-body pre code{padding:0;font-size:inherit;line-height:inherit;background:transparent}.post-content-body pre code :not(span){color:inherit}.post-content-body .fluid-width-video-wrapper{margin:1.5em 0 3em}.post-content-body hr{margin:4vw 0}.post-content-body hr:after{content:"";position:absolute;top:-15px;left:50%;display:block;margin-left:-10px;width:1px;height:30px;background:#f7f7f7;-webkit-box-shadow:#fff 0 0 0 5px;box-shadow:0 0 0 5px #fff;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.footnotes-sep{margin-bottom:30px}.footnotes{font-size:1.5rem}.footnotes p{margin:0}.footnote-backref{color:#3eb0ef!important;font-size:1.2rem;font-weight:700;text-decoration:none!important;-webkit-box-shadow:none!important;box-shadow:none!important}.author-meta{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-bottom:10px;color:#ababab}.author-links,.author-meta{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.author-links{margin-top:20px}.author-links a{display:block;margin:0;padding:0 12px;color:#131313;opacity:.4}.author-links a:hover{text-decoration:none;opacity:1}.author-links .divider{display:inline-block;margin:0 3px}.page-template .post-content-body h1,.page-template .post-content-body h2,.page-template .post-content-body h3{text-align:center} 2 | /*# sourceMappingURL=screen.css.map */ -------------------------------------------------------------------------------- /assets/built/screen.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["vars.css","components/global.css","components/ghost.css","components/lists.css","components/grid.css","components/tables.css","components/forms.css","components/buttons.css","components/actions.css","components/hamburger.css","components/animations.css","screen.css"],"names":[],"mappings":"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","file":"screen.css","sourcesContent":["/* Variables\n/* ---------------------------------------------------------- */\n\n@import url('https://fonts.googleapis.com/css?family=Muli:400,400i,600,700,700i,800');\n\n:root {\n\n /* Colours */\n --color-primary: #3eb0ef;\n --color-base: #131313;\n --color-border: #ddd;\n --color-bg: #f8f8f8;\n\n /* Fonts */\n --font-sans-serif: 'Muli', sans-serif;\n --font-serif: Georgia, Times, serif;\n --font-mono: Menlo, Courier, monospace;\n --font-light: 100;\n --font-normal: 400;\n --font-bold: 700;\n --font-heavy: 800;\n\n /* Breakpoints */\n --xlarge: 1680px;\n --large: 1280px;\n --medium: 980px;\n --small: 740px;\n --xsmall: 480px;\n\n /* Sizes */\n --height: 4rem;\n --margin: 2rem;\n --radius: 0.5rem;\n\n}\n","/* Reset\n/* ---------------------------------------------------------- */\n\nhtml,\nbody,\ndiv,\nspan,\napplet,\nobject,\niframe,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\np,\nblockquote,\npre,\na,\nabbr,\nacronym,\naddress,\nbig,\ncite,\ncode,\ndel,\ndfn,\nem,\nimg,\nins,\nkbd,\nq,\ns,\nsamp,\nsmall,\nstrike,\nstrong,\nsub,\nsup,\ntt,\nvar,\ndl,\ndt,\ndd,\nol,\nul,\nli,\nfieldset,\nform,\nlabel,\nlegend,\ntable,\ncaption,\ntbody,\ntfoot,\nthead,\ntr,\nth,\ntd,\narticle,\naside,\ncanvas,\ndetails,\nembed,\nfigure,\nfigcaption,\nfooter,\nheader,\nhgroup,\nmenu,\nnav,\noutput,\nruby,\nsection,\nsummary,\ntime,\nmark,\naudio,\nvideo {\n margin: 0;\n padding: 0;\n border: 0;\n font: inherit;\n font-size: 100%;\n vertical-align: baseline;\n}\nbody {\n line-height: 1;\n}\nol,\nul {\n list-style: none;\n}\nblockquote,\nq {\n quotes: none;\n}\nblockquote:before,\nblockquote:after,\nq:before,\nq:after {\n content: \"\";\n content: none;\n}\ntable {\n border-spacing: 0;\n border-collapse: collapse;\n}\nimg {\n max-width: 100%;\n}\nhtml {\n box-sizing: border-box;\n font-family: sans-serif;\n\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n}\n*,\n*:before,\n*:after {\n box-sizing: inherit;\n}\na {\n background-color: transparent;\n}\na:active,\na:hover {\n outline: 0;\n}\nb,\nstrong {\n font-weight: bold;\n}\ni,\nem,\ndfn {\n font-style: italic;\n}\nh1 {\n margin: 0.67em 0;\n font-size: 2em;\n}\nsmall {\n font-size: 80%;\n}\nsub,\nsup {\n position: relative;\n font-size: 75%;\n line-height: 0;\n vertical-align: baseline;\n}\nsup {\n top: -0.5em;\n}\nsub {\n bottom: -0.25em;\n}\nimg {\n border: 0;\n}\nsvg:not(:root) {\n overflow: hidden;\n}\nmark {\n background-color: #fdffb6;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n margin: 0;\n color: inherit;\n font: inherit;\n}\nbutton {\n overflow: visible;\n border: none;\n}\nbutton,\nselect {\n text-transform: none;\n}\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n cursor: pointer;\n -webkit-appearance: button;\n}\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n padding: 0;\n border: 0;\n}\ninput {\n line-height: normal;\n}\ninput:focus {\n outline: none;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box;\n padding: 0;\n}\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\ninput[type=\"search\"] {\n box-sizing: content-box;\n\n -webkit-appearance: textfield;\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\nlegend {\n padding: 0;\n border: 0;\n}\ntextarea {\n overflow: auto;\n}\ntable {\n border-spacing: 0;\n border-collapse: collapse;\n}\ntd,\nth {\n padding: 0;\n}\n\n/* ==========================================================================\n Base styles: opinionated defaults\n ========================================================================== */\n\nhtml {\n overflow-x: hidden;\n overflow-y: scroll;\n font-size: 62.5%;\n\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\nbody {\n overflow-x: hidden;\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 letter-spacing: 0;\n text-rendering: optimizeLegibility;\n background: #fff;\n\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n -moz-font-feature-settings: \"liga\" on;\n}\n\n::selection {\n text-shadow: none;\n background: #cbeafb;\n}\n\nhr {\n position: relative;\n display: block;\n width: 100%;\n margin: 2.5em 0 3.5em;\n padding: 0;\n height: 1px;\n border: 0;\n border-top: 1px solid color(var(--color-border) l(+10%));\n}\n\naudio,\ncanvas,\niframe,\nimg,\nsvg,\nvideo {\n vertical-align: middle;\n}\n\np,\nblockquote {\n margin: 0 0 1.5em 0;\n}\n\nblockquote {\n margin: 1.5em 0;\n padding: 0 1.6em 0 1.6em;\n border-left: var(--color-bg) 0.5em solid;\n}\n\nblockquote p {\n margin: 0.8em 0;\n font-size: 1.2em;\n font-weight: 300;\n}\n\nblockquote small {\n display: inline-block;\n margin: 0.8em 0 0.8em 1.5em;\n font-size: 0.9em;\n opacity: 0.8;\n}\n/* Quotation marks */\nblockquote small:before {\n content: \"\\2014 \\00A0\";\n}\n\nblockquote cite {\n font-weight: bold;\n}\nblockquote cite a {\n font-weight: normal;\n}\n\na {\n color: color(var(--color-primary) l(-5%));\n text-decoration: none;\n transition: 0.4s ease;\n}\n\na:hover {\n text-decoration: underline;\n transition: 0.2s ease;\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n margin-top: 0;\n line-height: 1.4;\n font-weight: 700;\n text-rendering: optimizeLegibility;\n}\n\nh1 {\n margin: 0 0 0.5em 0;\n font-size: 5.7rem;\n font-weight: 800;\n}\n@media (max-width: 500px) {\n h1 {\n font-size: 2.7rem;\n }\n}\n\nh2 {\n margin: 1.5em 0 0.5em 0;\n font-size: 4rem;\n}\n@media (max-width: 500px) {\n h2 {\n font-size: 2rem;\n }\n}\n\nh3 {\n margin: 1.5em 0 1em 0;\n font-size: 3.2rem;\n}\n@media (max-width: 500px) {\n h3 {\n font-size: 1.8rem;\n }\n}\n\nh4 {\n margin: 1.5em 0 1em 0;\n font-size: 2.6rem;\n}\n\nh5 {\n margin: 1.5em 0 1em 0;\n font-size: 2.4rem;\n}\n\nh6 {\n margin: 1.5em 0 1em 0;\n font-size: 2.2rem;\n}\n\n","/* Styling for Ghost-specific elements\n/* ---------------------------------------------------------- */\n\n.kg-card {\n margin: 7vw 0;\n}\n\n.kg-embed-card {\n display: flex;\n flex-direction: column;\n align-items: center;\n min-width: 100%;\n}\n\n.kg-image {\n max-width: 100%;\n width: 100%;\n}\n\n.kg-card figcaption {\n padding: 1.5rem;\n font-size: 1.3rem;\n line-height: 1.4em;\n font-weight: 600;\n color: var(--color-base);\n text-align: center;\n opacity: 0.4;\n}\n\n.kg-width-wide {\n position: relative;\n width: 75vw;\n min-width: 100%;\n margin-left: calc(50% - 50vw);\n margin-right: calc(50% - 50vw);\n transform: translateX(calc(50vw - 50%));\n}\n\n.kg-width-full {\n position: relative;\n width: 94vw;\n min-width: 100%;\n margin-left: calc(50% - 50vw);\n margin-right: calc(50% - 50vw);\n transform: translateX(calc(50vw - 50%));\n}\n\n.kg-width-full figcaption {\n padding-left: 0;\n padding-right: 0;\n text-align: left;\n}\n\n@media (max-width: 800px) {\n .kg-width-full {\n width: 100vw;\n }\n .kg-width-full figcaption {\n padding-left: 6vw;\n }\n}\n\n.kg-gallery-container {\n display: flex;\n flex-direction: column;\n position: relative;\n width: 75vw;\n min-width: 100%;\n margin-left: calc(50% - 50vw);\n margin-right: calc(50% - 50vw);\n transform: translateX(calc(50vw - 50%));\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.kg-gallery-card + .kg-image-card.kg-width-wide,\n.kg-gallery-card + .kg-gallery-card,\n.kg-image-card.kg-width-wide + .kg-gallery-card,\n.kg-image-card.kg-width-wide + .kg-image-card.kg-width-wide {\n margin-top: calc( -7vw + 0.75em );\n}\n","/* Lists\n/* ---------------------------------------------------------- */\n\nul,\nol,\ndl {\n margin: 0 0 var(--margin) 0;\n}\n\nol,\nul {\n padding-left: 1.3em;\n padding-right: 1.5em;\n}\n\nol ol,\nul ul,\nul ol,\nol ul {\n margin: 0.5em 0 1em;\n}\n\nul {\n list-style: disc;\n}\n\nol {\n list-style: decimal;\n}\n\nul,\nol {\n max-width: 100%;\n}\n\nli {\n margin: 0.5em 0;\n padding-left: 0.3em;\n line-height: 1.6em;\n}\n\n\ndt {\n display: block;\n font-weight: var(--font-bold);\n margin: 0 0 calc(var(--margin) * 0.5) 0;\n}\n\ndd {\n margin-left: var(--margin);\n}\n","/* Grid\n/* ---------------------------------------------------------- */\n\n.row {\n display: flex;\n flex: 0 1 auto;\n flex-direction: row;\n flex-wrap: wrap;\n margin: 0 -1rem;\n}\n\n.col,\n.col-1,\n.col-2,\n.col-3,\n.col-4,\n.col-5,\n.col-6,\n.col-7,\n.col-8,\n.col-9,\n.col-10,\n.col-11,\n.col-12 {\n padding: 1rem;\n}\n\n.col {\n flex-grow: 1;\n flex-basis: 0;\n max-width: 100%;\n}\n\n.col-1 {\n flex-basis: 8.3333333%;\n max-width: 8.3333333%;\n}\n\n.col-2 {\n flex-basis: 16.6666666%;\n max-width: 16.6666666%;\n}\n\n.col-3 {\n flex-basis: 25%;\n max-width: 25%;\n}\n\n.col-4 {\n flex-basis: 33.3333333%;\n max-width: 33.3333333%;\n}\n\n.col-5 {\n flex-basis: 41.6666666%;\n max-width: 41.6666666%;\n}\n\n.col-6 {\n flex-basis: 50%;\n max-width: 50%;\n}\n\n.col-7 {\n flex-basis: 58.3333333%;\n max-width: 58.3333333%;\n}\n\n.col-8 {\n flex-basis: 66.6666666%;\n max-width: 66.6666666%;\n}\n\n.col-9 {\n flex-basis: 75%;\n max-width: 75%;\n}\n\n.col-10 {\n flex-basis: 83.3333333%;\n max-width: 83.3333333%;\n}\n\n.col-11 {\n flex-basis: 91.6666666%;\n max-width: 91.6666666%;\n}\n\n.col-12 {\n flex-basis: 100%;\n max-width: 100%;\n}\n\n@media (max-width: 800px) {\n .col-1,\n .col-2,\n .col-3,\n .col-4,\n .col-5,\n .col-6,\n .col-7,\n .col-8,\n .col-9,\n .col-10,\n .col-11 {\n flex-basis: 50%;\n max-width: 50%;\n }\n}\n\n@media (max-width: 600px) {\n .col-1,\n .col-2,\n .col-3,\n .col-4,\n .col-5,\n .col-6,\n .col-7,\n .col-8,\n .col-9,\n .col-10,\n .col-11 {\n flex-basis: 100%;\n max-width: 100%;\n }\n}\n","/* Tables\n/* ---------------------------------------------------------- */\n\ntable {\n border-collapse: separate;\n margin: 0 0 var(--margin) 0;\n width: 100%;\n font-size: 0.8em;\n}\n\nth {\n color: var(--color-base);\n font-size: 0.9em;\n font-weight: var(--font-bold);\n padding: 0 0.7em 0.4em 0.7em;\n text-align: left;\n}\n\ntd {\n padding: 0.4em 0.7em;\n border-left-width: 0;\n border-top-width: 0;\n}\n\ntd:first-child {\n border-left-width: 1px;\n}\n\ntbody tr {\n border: solid 1px var(--color-border);\n border-left: 0;\n border-right: 0;\n}\n\ntbody tr:first-child td {\n border-top-width: 1px;\n}\n\ntbody tr:nth-child(2n + 1) {\n background-color: var(--color-bg);\n}\n\ntbody td {\n border: solid 1px var(--color-border);\n border-left-width: 0;\n border-top-width: 0;\n}\n\ntfoot {\n border-width: 0;\n}\n","/* Forms\n/* ---------------------------------------------------------- */\n\nform {\n margin: 0 0 var(--margin) 0;\n}\n\nfieldset {\n margin: 0;\n padding: 0;\n border: 0;\n}\n\nlabel {\n color: var(--color-primary);\n display: block;\n font-size: 0.9em;\n font-weight: var(--font-bold);\n margin: 0 0 (var(--margin) * 0.5) 0;\n}\n\ninput[type=\"text\"],\ninput[type=\"password\"],\ninput[type=\"email\"],\ninput[type=\"tel\"],\ninput[type=\"search\"],\ninput[type=\"url\"],\nselect,\ntextarea {\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\ninput[type=\"text\"]:invalid,\ninput[type=\"password\"]:invalid,\ninput[type=\"email\"]:invalid,\ninput[type=\"tel\"]:invalid,\ninput[type=\"search\"]:invalid,\ninput[type=\"url\"]:invalid,\nselect:invalid,\ntextarea:invalid {\n box-shadow: none;\n}\n\ninput[type=\"text\"]:focus,\ninput[type=\"password\"]:focus,\ninput[type=\"email\"]:focus,\ninput[type=\"tel\"]:focus,\ninput[type=\"search\"]:focus,\ninput[type=\"url\"]:focus,\nselect:focus,\ntextarea:focus {\n border-color: var(--color-primary);\n box-shadow: 0 0 0 1px var(--color-primary);\n}\n\nselect {\n height: var(--height);\n padding-right: var(--height);\n text-overflow: ellipsis;\n}\n\nselect option {\n color: var(--color-primary);\n background: var(--color-bg);\n}\n\nselect:focus::-ms-value {\n background-color: transparent;\n }\n\nselect::-ms-expand {\n display: none;\n}\n\n\ninput[type=\"text\"],\ninput[type=\"password\"],\ninput[type=\"email\"],\ninput[type=\"tel\"],\ninput[type=\"search\"],\ninput[type=\"url\"],\nselect {\n height: var(--height);\n}\n\ntextarea {\n padding: 0.3em 0.6em;\n resize: vertical;\n}\n\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n display: block;\n margin-right: -2em;\n opacity: 0;\n width: 1em;\n z-index: -1;\n}\n\ninput[type=\"checkbox\"] + label,\ninput[type=\"radio\"] + 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\ninput[type=\"checkbox\"] + label:before,\ninput[type=\"radio\"] + 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\ninput[type=\"checkbox\"]:checked + label:before,\ninput[type=\"radio\"]:checked + label:before {\n background: var(--color-primary);\n border-color: var(--color-primary);\n color: var(--color-bg);\n content: '✓';\n}\n\ninput[type=\"checkbox\"]:focus + label:before,\ninput[type=\"radio\"]:focus + label:before {\n border-color: var(--color-primary);\n box-shadow: 0 0 0 1px var(--color-primary);\n}\n\n\ninput[type=\"checkbox\"] + label:before {\n border-radius: var(--radius);\n}\n\ninput[type=\"radio\"] + label:before {\n border-radius: 100%;\n}\n","/* Buttons\n/* ---------------------------------------------------------- */\n\ninput[type=\"submit\"],\ninput[type=\"reset\"],\ninput[type=\"button\"],\nbutton,\n.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\ninput[type=\"submit\"].fit,\ninput[type=\"reset\"].fit,\ninput[type=\"button\"].fit,\nbutton.fit,\n.button.fit {\n width: 100%;\n}\n\ninput[type=\"submit\"].small,\ninput[type=\"reset\"].small,\ninput[type=\"button\"].small,\nbutton.small,\n.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\ninput[type=\"submit\"].large,\ninput[type=\"reset\"].large,\ninput[type=\"button\"].large,\nbutton.large,\n.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\ninput[type=\"submit\"].disabled,\ninput[type=\"submit\"]:disabled,\ninput[type=\"reset\"].disabled,\ninput[type=\"reset\"]:disabled,\ninput[type=\"button\"].disabled,\ninput[type=\"button\"]:disabled,\nbutton.disabled,\nbutton:disabled,\n.button.disabled,\n.button:disabled {\n pointer-events: none;\n opacity: 0.4;\n}\n\n\n\ninput[type=\"submit\"],\ninput[type=\"reset\"],\ninput[type=\"button\"],\nbutton,\n.button {\n color: var(--color-primary) !important;\n background-color: transparent;\n box-shadow: inset 0 0 0 2px var(--color-primary);\n}\n\ninput[type=\"submit\"]:hover,\ninput[type=\"reset\"]:hover,\ninput[type=\"button\"]:hover,\nbutton:hover,\n.button:hover {\n text-decoration: none;\n color: color(var(--color-primary) l(-15%)) !important;\n box-shadow: inset 0 0 0 2px color(var(--color-primary) l(-10%));\n transition: 0.2s ease;\n}\n\ninput[type=\"submit\"].primary,\ninput[type=\"reset\"].primary,\ninput[type=\"button\"].primary,\nbutton.primary,\n.button.primary {\n color: #fff !important;\n background-color: var(--color-primary);\n box-shadow: none;\n}\n\ninput[type=\"submit\"].primary:hover,\ninput[type=\"reset\"].primary:hover,\ninput[type=\"button\"].primary:hover,\nbutton.primary:hover,\n.button.primary:hover {\n background-color: color(var(--color-primary) l(-10%));\n }\n","/* Actions\n/* ---------------------------------------------------------- */\n\n.actions {\n display: flex;\n cursor: default;\n list-style: none;\n margin: calc(var(--margin) * -0.5);\n padding-left: 0;\n}\n\n.actions li {\n padding: 0 0 0 calc(var(--margin) * 0.5);\n vertical-align: middle;\n}\n\n.actions.special {\n justify-content: center;\n width: 100%;\n margin-left: 0;\n}\n\n.actions.special li:first-child {\n padding-left: 0;\n}\n\n.actions.stacked {\n flex-direction: column;\n margin-left: 0;\n}\n\n.actions.stacked li {\n padding: calc(var(--margin) * 0.65) 0 0 0;\n}\n\n.actions.stacked li:first-child {\n padding-top: 0;\n}\n\n\n.actions.fit {\n width: calc(100% + calc(var(--margin) * 0.5));\n}\n\n.actions.fit li {\n flex: 1 1 auto;\n width: 100%;\n}\n\n.actions.fit li > * {\n width: 100%;\n}\n\n.actions.fit.stacked {\n width: 100%;\n}\n\n@media (max-width: var(--xsmall)) {\n .actions:not(.fixed) {\n flex-direction: column;\n margin-left: 0;\n width: 100% !important;\n }\n\n .actions:not(.fixed) li {\n flex: 1 1 auto;\n padding: calc(var(--margin) * 0.5) 0 0 0;\n text-align: center;\n width: 100%;\n }\n\n .actions:not(.fixed) li > * {\n width: 100%;\n }\n\n .actions:not(.fixed) li:first-child {\n padding-top: 0;\n }\n\n .actions:not(.fixed) li input[type=\"submit\"],\n .actions:not(.fixed) li input[type=\"reset\"],\n .actions:not(.fixed) li input[type=\"button\"],\n .actions:not(.fixed) li button,\n .actions:not(.fixed) li .button {\n width: 100%;\n }\n\n .actions:not(.fixed) li input[type=\"submit\"].icon:before,\n .actions:not(.fixed) li input[type=\"reset\"].icon:before,\n .actions:not(.fixed) li input[type=\"button\"].icon:before,\n .actions:not(.fixed) li button.icon:before,\n .actions:not(.fixed) li .button.icon:before {\n margin-left: -0.5rem;\n }\n}\n","/* https://github.com/jonsuh/hamburgers */\n.hamburger {\n display: flex;\n overflow: visible;\n margin: 0;\n padding: 2px 0;\n border: 0;\n color: inherit;\n font: inherit;\n text-transform: none;\n background-color: transparent;\n cursor: pointer;\n transition: opacity 0.15s linear, filter 0.15s linear;\n}\n\n.hamburger-box {\n position: relative;\n display: inline-block;\n width: 20px;\n height: 13px;\n}\n\n.hamburger-inner {\n top: 50%;\n display: block;\n margin-top: -2px;\n}\n\n.hamburger-inner,\n.hamburger-inner::before,\n.hamburger-inner::after {\n position: absolute;\n width: 20px;\n height: 1px;\n background-color: color(var(--color-border) l(-20%));\n border-radius: 4px;\n transition: transform 0.15s ease;\n}\n.hamburger-inner::before,\n.hamburger-inner::after {\n content: \"\";\n display: block;\n}\n.hamburger-inner::before {\n top: -6px;\n}\n.hamburger-inner::after {\n bottom: -6px;\n}\n\n/*\n * Collapse\n */\n.hamburger--collapse .hamburger-inner {\n top: auto;\n bottom: 0;\n transition-delay: 0.15s;\n transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19);\n transition-duration: 0.15s;\n}\n.hamburger--collapse .hamburger-inner::after {\n top: -12px;\n transition: top 0.3s 0.3s cubic-bezier(0.33333, 0.66667, 0.66667, 1),\n opacity 0.1s linear;\n}\n.hamburger--collapse .hamburger-inner::before {\n transition: top 0.12s 0.3s cubic-bezier(0.33333, 0.66667, 0.66667, 1),\n transform 0.15s cubic-bezier(0.55, 0.055, 0.675, 0.19);\n}\n\n.site-head-open .hamburger-inner,\n.site-head-open .hamburger-inner::before,\n.site-head-open .hamburger-inner::after {\n background-color: var(--color-base);\n}\n\n.site-head-open .hamburger-inner {\n transition-delay: 0.32s;\n transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);\n transform: translate3d(0, -6px, 0) rotate(-45deg);\n}\n\n.site-head-open .hamburger-inner::after {\n top: 0;\n opacity: 0;\n transition: top 0.3s cubic-bezier(0.33333, 0, 0.66667, 0.33333),\n opacity 0.1s 0.27s linear;\n}\n.site-head-open .hamburger-inner::before {\n top: 0;\n transition: top 0.12s 0.18s cubic-bezier(0.33333, 0, 0.66667, 0.33333),\n transform 0.15s 0.42s cubic-bezier(0.215, 0.61, 0.355, 1);\n transform: rotate(-90deg);\n}\n","/* Animations\n/* ---------------------------------------------------------- */\n\n.transition-fade {\n transition: 0.25s;\n opacity: 1;\n animation: slideUp 0.9s cubic-bezier(0.075, 0.82, 0.165, 1) forwards;\n transform: translate3d(0, 4vh, 0);\n}\nhtml.is-animating .transition-fade {\n opacity: 0;\n}\n\n@keyframes slideUp {\n 0% {\n transform: translate3d(0, 4vh, 0);\n }\n 100% {\n transform: translate3d(0, 0, 0);\n }\n}\n","/*\n\nThis is a development CSS file which is built to a minified\nproduction stylesheet in assets/built/screen.css using gulp dev\n\n*/\n\n\n/* Lib - Local component imports\n/* ---------------------------------------------------------- */\n@import \"vars.css\";\n@import \"components/global.css\";\n@import \"components/ghost.css\";\n@import \"components/lists.css\";\n@import \"components/grid.css\";\n@import \"components/tables.css\";\n@import \"components/forms.css\";\n@import \"components/buttons.css\";\n@import \"components/actions.css\";\n@import \"components/hamburger.css\";\n@import \"components/animations.css\";\n\n\n/* Main - Theme styles\n/* ---------------------------------------------------------- */\n\nbody {\n font-family: 'Muli', sans-serif;\n background: var(--color-bg);\n transition: background 0.3s ease-out;\n transition-delay: 0.25;\n}\n\n.img {\n display: block;\n width: 100%;\n height: 100%;\n background-position: center center;\n background-size: cover;\n border-radius: 100%;\n}\n\n.hidden {\n visibility: hidden;\n position: absolute;\n text-indent: -9999px;\n}\n\n\n/* Layout\n/* ---------------------------------------------------------- */\n\n.site-wrapper {\n padding: 3vw;\n min-height: 100vh;\n}\n@media (max-width: 850px) {\n .site-wrapper {\n padding: 6vw;\n }\n}\n\n.page-head {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 13vw 0;\n max-width: 70%;\n margin: auto;\n text-align: center;\n}\n\n.error-head {\n height: 75vh;\n}\n\n.error-head h1 {\n margin: 0;\n font-size: 7rem;\n line-height: 1.1em;\n font-weight: var(--font-heavy);\n letter-spacing: 10px;\n}\n\n.error-head p {\n font-size: 1.4rem;\n text-transform: uppercase;\n letter-spacing: 1px;\n color: color(var(--color-base) l(+50%));\n}\n\n.error-link {\n margin-top: 1rem;\n font-size: 1.5rem;\n text-decoration: underline;\n}\n\n.page-head-title {\n margin: 0;\n font-size: 4.2rem;\n color: var(--color-base);\n}\n@media (max-width: 500px) {\n .page-head-title {\n font-size: 2rem;\n }\n}\n\n.page-head-description {\n margin: 0 0 1.6vw;\n color: color(var(--color-border) l(-20%));\n font-size: 2.2rem;\n line-height: 1.35em;\n}\n@media (max-width: 500px) {\n .page-head-description {\n font-size: 1.6rem;\n }\n}\n\n.site-foot {\n margin: 3vw 0 1vw;\n text-align: center;\n color: color(var(--color-border) l(-20%));\n font-size: 1.4rem;\n}\n\n.site-foot a {\n color: var(--color-base);\n}\n\n\n/* Site Navigation\n/* ---------------------------------------------------------- */\n\n.site-head {\n position: relative;\n z-index: 300;\n margin-top: -10px;\n font-size: 1.35rem;\n}\n\n.site-head-container {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.site-head-left {\n position: relative;\n z-index: 100;\n display: flex;\n align-items: center;\n margin-right: 10px;\n white-space: nowrap;\n}\n\n.nav {\n display: flex;\n margin: 0 0 0 -12px;\n padding: 0;\n list-style: none;\n}\n\n.site-head li {\n display: block;\n margin: 0;\n padding: 0;\n}\n\n.site-head-left a,\n.site-head-right a {\n display: block;\n margin: 0;\n padding: 10px 12px;\n color: var(--color-base);\n font-weight: 600;\n opacity: 0.4;\n}\n\n.nav-current a,\n.site-head a:hover {\n text-decoration: none;\n opacity: 1;\n}\n\n.site-head-center {\n position: absolute;\n display: flex;\n justify-content: center;\n width: 100%;\n}\n\n.site-head-logo {\n flex-shrink: 0;\n display: block;\n padding: 10px;\n color: var(--color-base);\n font-size: 2.1rem;\n line-height: 1em;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 1px;\n}\n\n.site-head-logo:hover {\n text-decoration: none;\n}\n\n.site-head-logo img {\n display: block;\n margin-top: 2px;\n width: auto;\n height: 28px;\n}\n\n.site-head-right {\n position: relative;\n z-index: 100;\n flex-shrink: 0;\n display: flex;\n align-items: center;\n}\n\n.social-links {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n}\n\n.subscribe-button {\n display: block;\n padding: 4px 10px;\n border: var(--color-base) 1px solid;\n color: var(--color-base);\n font-size: 1.2rem;\n line-height: 1em;\n border-radius: 10px;\n opacity: 0.8;\n}\n\n.subscribe-button:hover {\n text-decoration: none;\n opacity: 1;\n}\n\n.rss-button {\n opacity: 0.4;\n}\n\n.rss-button:hover {\n opacity: 1;\n}\n\n.rss-button svg {\n margin-bottom: 1px;\n height: 2.1rem;\n fill: var(--color-base);\n}\n\n\n/* Mobile Nav Menu\n/* ---------------------------------------------------------- */\n\n.nav-burger {\n display: none;\n position: absolute;\n left: 0;\n z-index: 9999;\n padding: 12px 12px 12px 0;\n}\n\n@media (max-width: 850px) {\n .site-head {\n padding: 0;\n }\n .nav-burger {\n display: block;\n }\n .site-head-container {\n flex-direction: column;\n justify-content: flex-start;\n height: 40px;\n background: rgba(255,255,255,0);\n z-index: -1;\n transition: all 0.4s ease-out;\n overflow: hidden;\n }\n .site-head-left,\n .site-head-right {\n position: relative;\n z-index: -1;\n height: auto;\n transition: height 0.2s cubic-bezier(0.4, 0.01, 0.165, 0.99);\n transition-delay: 1s;\n }\n .site-head-left a,\n .site-head-right a {\n margin: 8px 0;\n padding: 1px 0;\n font-size: 2.6rem;\n line-height: 1.15em;\n font-weight: 200;\n opacity: 0;\n transition: transform 0.3s cubic-bezier(0.4, 0.01, 0.165, 0.99),\n opacity 0.2s cubic-bezier(0.4, 0.01, 0.165, 0.99);\n transform: scale(1.1) translateY(-25px);\n }\n .site-head-right a {\n padding: 5px 0;\n margin: 1px 0;\n font-size: 2rem;\n }\n .nav {\n width: 100%;\n flex-direction: column;\n justify-content: flex-start;\n align-items: flex-start;\n margin: 3vw 0 0 0;\n }\n .site-head-left {\n order: 2;\n margin: 0;\n width: 100%;\n }\n .site-head-center {\n order: 1;\n position: static;\n z-index: auto;\n display: flex;\n justify-content: center;\n }\n .site-head-right {\n order: 3;\n width: 100%;\n margin-top: 3vw;\n }\n .social-links {\n flex-direction: column;\n align-items: flex-start;\n }\n\n .site-head-open {\n background: rgba(255,255,255,1);\n transition: background 0.5s ease-out;\n transition-delay: 0.25;\n overflow: hidden;\n height: 100vh;\n }\n\n .site-head-open .site-head-container {\n height: 100vh;\n transition: height 0.2s ease-in;\n }\n\n .site-head-open .site-head-left,\n .site-head-open .site-head-right {\n z-index: 9999;\n height: auto;\n transition: height 0.2s cubic-bezier(0.4, 0.01, 0.165, 0.99);\n }\n\n .site-head-open .site-head-left a,\n .site-head-open .site-head-right a {\n opacity: 1;\n transition: transform 0.6s cubic-bezier(0.4, 0.01, 0.165, 0.99),\n opacity 0.9s cubic-bezier(0.4, 0.01, 0.165, 0.99);\n transform: scale(1) translateY(0px);\n }\n .site-head-open .nav-current a {\n border-bottom: var(--color-base) 2px solid;\n }\n .site-head-open .site-head-right a {\n opacity: 0.5;\n }\n .site-head-open .site-foot {\n display: block;\n position: fixed;\n z-index: 9999;\n bottom: 0;\n transition: transform 0.3s cubic-bezier(0.4, 0.01, 0.165, 0.99);\n transform: translateY(-4vw);\n }\n\n}\n\n\n/* Post Feed\n/* ---------------------------------------------------------- */\n\n.post-feed {\n display: flex;\n align-items: ;\n flex-wrap: wrap;\n}\n\n.post-card {\n position: relative;\n flex: 1 1 50%;\n display: flex;\n position: relative;\n height: 35vw;\n background: linear-gradient(135deg, #1f1f1f 0%, #111 100%) center center;\n background-size: cover;\n overflow: hidden;\n counter-increment: posts;\n}\n\n@media (max-width: 700px) {\n .post-card {\n flex: 1 1 100%;\n height: 70vw;\n }\n}\n\n.post-card-large {\n flex: 1 1 100%;\n}\n\n.post-card-link {\n flex: 1 1 auto;\n display: block;\n}\n\n.post-card-content {\n flex: 1 1 auto;\n display: flex;\n align-items: center;\n justify-content: center;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n color: #fff;\n background: rgba(0,0,0,0.1);\n opacity: 1;\n transition: opacity 0.5s cubic-bezier(.33,0,.2,1);\n}\n\n.post-card.with-image .post-card-content {\n opacity: 0;\n}\n@media (max-width: 700px) {\n .post-card.with-image .post-card-content {\n opacity: 1;\n }\n}\n\n.post-card-link:hover .post-card-content {\n opacity: 1;\n transition: opacity 0.3s cubic-bezier(.33,0,.2,1);\n}\n\n.post-card-title {\n margin: 0;\n display: inline-block;\n font-size: 3.4rem;\n max-width: 70%;\n text-align: center;\n transition: all 0.3s cubic-bezier(.33,0,.2,1);\n}\n\n/* Posts without images */\n.post-card.no-image:before {\n display: block;\n content: counter(posts);\n position: absolute;\n bottom: -0.15em;\n right: 5vw;\n font-size: 28vw;\n line-height: 1em;\n font-weight: var(--font-heavy);\n letter-spacing: -0.1em;\n color: rgba(0,0,0,0.2);\n}\n\n.post-card.no-image .post-card-content {\n justify-content: flex-start;\n align-items: flex-start;\n padding: 4vw;\n}\n\n.post-card.no-image .post-card-title {\n font-size: 5rem;\n line-height: 1.15em;\n text-align: left;\n}\n\n.post-card.no-image:hover .post-card-title {\n text-decoration: underline;\n}\n\n@media (max-width: 1200px) {\n .post-card.no-image .post-card-title {\n font-size: 3.4rem;\n }\n}\n@media (max-width: 700px) {\n .post-card.no-image:before {\n font-size: 50vw;\n }\n}\n\n/* Post Content\n/* ---------------------------------------------------------- */\n\n.post-content {\n max-width: 720px;\n margin: 0 auto;\n padding: 6vw 0;\n}\n\n.post-content-header {\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n\n.post-content-title {\n margin: 0 0 3vw;\n color: var(--color-base);\n text-align: center;\n}\n\n.post-content-excerpt {\n margin: -2vw 0 3vw;\n font-size: 2.2rem;\n line-height: 1.6em;\n color: var(--color-base);\n text-align: center;\n opacity: 0.5;\n}\n@media (max-width: 500px) {\n .post-content-excerpt {\n font-size: 1.8rem;\n }\n}\n\n.post-content-image {\n margin: 4vw 0;\n position: relative;\n width: 75vw;\n min-width: 100%;\n margin-left: calc(50% - 50vw);\n margin-right: calc(50% - 50vw);\n transform: translateX(calc(50vw - 50%));\n}\n\n.post-content-body {\n font-size: 1.9rem;\n line-height: 1.65em;\n}\n@media (max-width: 500px) {\n .post-content-body {\n font-size: 1.7rem;\n }\n}\n\n.post-content-body h1,\n.post-content-body h2,\n.post-content-body h3,\n.post-content-body h4,\n.post-content-body h5,\n.post-content-body h6 {\n color: var(--color-base);\n}\n\n.post-content-body li {\n word-break: break-word;\n}\n\n.post-content-body li p {\n margin: 0;\n}\n\n.post-content-body iframe {\n margin: 0 auto !important;\n}\n\n.post-content-body blockquote {\n margin: 0 0 1.5em;\n padding: 0 1.5em;\n border-left: #3eb0ef 3px solid;\n}\n\n.post-content-body blockquote p {\n margin: 0 0 1em 0;\n color: inherit;\n font-size: inherit;\n line-height: inherit;\n font-style: italic;\n}\n\n.post-content-body blockquote p:last-child {\n margin-bottom: 0;\n}\n\n.post-content-body code {\n padding: 0 5px 2px;\n font-size: 0.8em;\n line-height: 1em;\n font-weight: 400!important;\n background: var(--color-bg);\n border-radius: 3px;\n}\n\n.post-content-body p code {\n word-break: break-all;\n}\n\n.post-content-body pre {\n overflow-x: auto;\n margin: 1.5em 0 3em;\n padding: 20px;\n max-width: 100%;\n border: color(var(--color-base) l(-10%)) 1px solid;\n color: var(--color-bg);\n font-size: 1.4rem;\n line-height: 1.5em;\n background: color(var(--color-base) l(-3%));\n border-radius: 5px;\n}\n\n.post-content-body pre code {\n padding: 0;\n font-size: inherit;\n line-height: inherit;\n background: transparent;\n}\n\n.post-content-body pre code :not(span) {\n color: inherit;\n}\n\n.post-content-body .fluid-width-video-wrapper {\n margin: 1.5em 0 3em;\n}\n\n.post-content-body hr {\n margin: 4vw 0;\n}\n\n.post-content-body hr:after {\n content: \"\";\n position: absolute;\n top: -15px;\n left: 50%;\n display: block;\n margin-left: -10px;\n width: 1px;\n height: 30px;\n background: color(var(--color-border) l(+10%));\n box-shadow: #fff 0 0 0 5px;\n transform: rotate(45deg);\n}\n\n.footnotes-sep {\n margin-bottom: 30px;\n}\n\n.footnotes {\n font-size: 1.5rem;\n}\n\n.footnotes p {\n margin: 0;\n}\n\n.footnote-backref {\n color: var(--color-primary) !important;\n font-size: 1.2rem;\n font-weight: bold;\n text-decoration: none !important;\n box-shadow: none !important;\n}\n\n/* Author Archive\n/* ---------------------------------------------------------- */\n\n.author-meta {\n display: flex;\n justify-content: center;\n align-items: center;\n margin-bottom: 10px;\n color: color(var(--color-border) l(-20%));\n}\n\n.author-links {\n display: flex;\n align-items: center;\n margin-top: 20px;\n}\n\n.author-links a {\n display: block;\n margin: 0;\n padding: 0 12px;\n color: var(--color-base);\n opacity: 0.4;\n}\n\n.author-links a:hover {\n text-decoration: none;\n opacity: 1;\n}\n\n.author-links .divider {\n display: inline-block;\n margin: 0 3px;\n}\n\n/* Page Template\n/* ---------------------------------------------------------- */\n\n.page-template .post-content-body h1,\n.page-template .post-content-body h2,\n.page-template .post-content-body h3 {\n text-align: center;\n}\n"]} --------------------------------------------------------------------------------