├── casper.yaml ├── screenshot.jpg ├── thumbnail.jpg ├── assets ├── images │ ├── design.jpg │ ├── ghost.png │ ├── grapes.jpg │ ├── locked.jpg │ ├── piano.jpg │ ├── blog-icon.png │ ├── favicon.png │ ├── blog-cover.jpg │ └── ghost-logo.svg ├── built │ ├── medium-zoom.css │ ├── cards.css │ ├── screen.edited.css │ ├── screen.edited.css.map │ ├── global.css │ ├── syntax.css │ ├── global.css.map │ ├── syntax.css.map │ └── screen.css └── js │ ├── infinitescroll.js │ ├── jquery.fitvids.js │ ├── smooth-scroll.polyfills.14.2.1.min.js │ └── medium-zoom-1.1.0.min.js ├── languages.yaml ├── templates ├── icons │ ├── ethereum.svg │ ├── twitch.svg │ ├── flickr.svg │ ├── gitlab.svg │ ├── tumblr.svg │ ├── rss.svg │ ├── arrow-left.svg │ ├── arrow-right.svg │ ├── facebook.svg │ ├── stackoverflow.svg │ ├── email.svg │ ├── about.svg │ ├── youtube.svg │ ├── linkedin.svg │ ├── twitter.svg │ ├── medium.svg │ ├── spotify.svg │ ├── github.svg │ ├── docker.svg │ ├── bitcoin.svg │ ├── steam.svg │ ├── bitbucket.svg │ ├── dribbble.svg │ ├── discord.svg │ ├── instagram.svg │ └── keybase.svg ├── partials │ ├── header.html.twig │ ├── base.html.twig │ ├── head.html.twig │ ├── post-mini.html.twig │ ├── share.html.twig │ ├── post-card.html.twig │ ├── footer.html.twig │ ├── navbar.twig │ └── navbar.html.twig ├── home.html.twig ├── default.html.twig ├── archive.html.twig ├── blog.html.twig └── item.html.twig ├── blueprints ├── default.yaml └── blog.yaml ├── LICENSE ├── CHANGELOG.md ├── casper.php ├── blueprints.yaml └── README.md /casper.yaml: -------------------------------------------------------------------------------- 1 | enabled: true 2 | dropdown: 3 | enabled: false 4 | -------------------------------------------------------------------------------- /screenshot.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diomed/casper/HEAD/screenshot.jpg -------------------------------------------------------------------------------- /thumbnail.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diomed/casper/HEAD/thumbnail.jpg -------------------------------------------------------------------------------- /assets/images/design.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diomed/casper/HEAD/assets/images/design.jpg -------------------------------------------------------------------------------- /assets/images/ghost.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diomed/casper/HEAD/assets/images/ghost.png -------------------------------------------------------------------------------- /assets/images/grapes.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diomed/casper/HEAD/assets/images/grapes.jpg -------------------------------------------------------------------------------- /assets/images/locked.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diomed/casper/HEAD/assets/images/locked.jpg -------------------------------------------------------------------------------- /assets/images/piano.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diomed/casper/HEAD/assets/images/piano.jpg -------------------------------------------------------------------------------- /assets/images/blog-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diomed/casper/HEAD/assets/images/blog-icon.png -------------------------------------------------------------------------------- /assets/images/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diomed/casper/HEAD/assets/images/favicon.png -------------------------------------------------------------------------------- /assets/images/blog-cover.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/diomed/casper/HEAD/assets/images/blog-cover.jpg -------------------------------------------------------------------------------- /languages.yaml: -------------------------------------------------------------------------------- 1 | en: 2 | THEME_CASPER: 3 | POST_ARCHIVE: "Post Archive" 4 | TO_TOP: "To Top" 5 | SHARE_THIS: "Share this" 6 | 7 | fr: 8 | THEME_CASPER: 9 | POST_ARCHIVE: "Archives" 10 | TO_TOP: "Haut de la page" 11 | SHARE_THIS: "Partager" 12 | -------------------------------------------------------------------------------- /templates/icons/ethereum.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | ethereum 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /templates/icons/twitch.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | twitch 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /templates/icons/flickr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | flickr 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /templates/icons/gitlab.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | gitlab 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /templates/icons/tumblr.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | tumblr 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /templates/icons/rss.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | rss 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /templates/icons/arrow-left.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | arrow-left 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /templates/icons/arrow-right.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | arrow-right 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /templates/icons/facebook.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | facebook 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /templates/icons/stackoverflow.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | stackoverflow 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /templates/icons/email.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | email 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /templates/partials/header.html.twig: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /templates/icons/about.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | about 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /templates/partials/base.html.twig: -------------------------------------------------------------------------------- 1 | {% set theme_config = attribute(config.themes, config.system.pages.theme) %} 2 | 3 | 4 | 5 | {% block head %} 6 | {% include 'partials/head.html.twig' %} 7 | {% endblock %} 8 | 9 | 10 | 11 | {# Wrap content in #app to allow vue components #} 12 |
13 | {% block content %}{% endblock %} 14 |
15 | {% include 'partials/footer.html.twig' %} 16 | 17 | {% block bottom %} 18 | {{ assets.js('bottom')|raw }} 19 | {% endblock %} 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /blueprints/default.yaml: -------------------------------------------------------------------------------- 1 | title: Generic Page 2 | '@extends': 3 | type: default 4 | context: blueprints://pages 5 | 6 | form: 7 | fields: 8 | tabs: 9 | type: tabs 10 | active: 1 11 | fields: 12 | content: 13 | type: tab 14 | fields: 15 | header.primaryImage: 16 | ordering: 2 17 | type: file 18 | label: 'Primary Image' 19 | multiple: false 20 | destination: '@self' 21 | accept: 22 | - image/* 23 | -------------------------------------------------------------------------------- /templates/icons/youtube.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | youtube 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /templates/icons/linkedin.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | linkedin 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /templates/home.html.twig: -------------------------------------------------------------------------------- 1 | {% extends 'partials/base.html.twig' %} 2 | 3 | {% block content %} 4 | 5 | {% include 'partials/header.html.twig' %} 6 | 7 |
8 |
9 | 18 |
19 |
20 | {% endblock %} 21 | 22 | {% do assets.addInlineJs('window.maxPages = ' ~ page.header.content.limit) %} 23 | {% do assets.addInlineJs(js) %} 24 | -------------------------------------------------------------------------------- /templates/default.html.twig: -------------------------------------------------------------------------------- 1 | {% extends 'partials/base.html.twig' %} 2 | 3 | {% block content %} 4 | 5 | {% include 'partials/header.html.twig' %} 6 | 7 |
8 |
9 | 18 |
19 |
20 | {% endblock %} 21 | 22 | {% do assets.addInlineJs('window.maxPages = ' ~ page.header.content.limit) %} 23 | {% do assets.addInlineJs(js) %} 24 | -------------------------------------------------------------------------------- /templates/icons/twitter.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | twitter 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /templates/icons/medium.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | medium 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /templates/icons/spotify.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | spotify 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /templates/icons/github.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | github 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /templates/icons/docker.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | docker 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /assets/built/medium-zoom.css: -------------------------------------------------------------------------------- 1 | .medium-zoom-overlay { 2 | position: fixed; 3 | top: 0; 4 | right: 0; 5 | bottom: 0; 6 | left: 0; 7 | opacity: 0; 8 | transition: opacity 300ms; 9 | will-change: opacity; 10 | } 11 | 12 | .medium-zoom--opened .medium-zoom-overlay { 13 | cursor: pointer; 14 | cursor: zoom-out; 15 | opacity: 1; 16 | } 17 | 18 | .medium-zoom-image { 19 | cursor: pointer; 20 | cursor: zoom-in; 21 | /* 22 | The `transition` is marked as "!important" for the animation to happen 23 | even though it's overriden by another inline `transition` style attribute. 24 | 25 | This is problematic with frameworks that generate inline styles on their 26 | images (e.g. Gatsby). 27 | 28 | See https://github.com/francoischalifour/medium-zoom/issues/110 29 | */ 30 | transition: transform 300ms cubic-bezier(0.2, 0, 0.2, 1) !important; 31 | } 32 | 33 | .medium-zoom-image--hidden { 34 | visibility: hidden; 35 | } 36 | 37 | .medium-zoom-image--opened { 38 | position: relative; 39 | cursor: pointer; 40 | cursor: zoom-out; 41 | will-change: transform; 42 | } 43 | -------------------------------------------------------------------------------- /templates/icons/bitcoin.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | bitcoin 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /templates/archive.html.twig: -------------------------------------------------------------------------------- 1 | {% extends 'partials/base.html.twig' %} 2 | {% block content %} 3 | {% include 'partials/navbar.html.twig' %} 4 |
5 |
6 | 7 | 21 |
22 |
23 | {% endblock %} 24 | -------------------------------------------------------------------------------- /templates/icons/steam.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | steam 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 May Kittens Devour Your Soul 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /templates/icons/bitbucket.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | bitbucket 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /templates/icons/dribbble.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | dribbble 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /templates/icons/discord.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | discord 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # 1.0.1 2 | ## 07-12-2023 3 | 4 | - more twig strict mode compatibility 5 | - do not depend on external services if you can host your assets yourself 6 | - minor code style enhancements 7 | - version bump 8 | 9 | # 1.0.0 10 | ## 23-07-2023 11 | 12 | - twig strict mode compatibility 13 | 14 | # 0.9.5 15 | ## 05-04-2019 16 | 17 | - apparently this can be multilingual now (French) is there. 18 | - also some minor fixes 19 | 20 | # 0.9 21 | ## 27-03-2019 22 | 23 | - some changes related to important theme updates 24 | 25 | 26 | # 0.8 27 | ## 03-01-2019 28 | 29 | - bunch of fixes [make theme look more like original] 30 | 31 | 32 | # 0.7 33 | ## 17-12-2018 34 | 35 | - social icons fixed 36 | - apparently I forgot categories. oops! fixed now 37 | - oh right, integrated readingtime :P 38 | 39 | 40 | # 0.6 41 | ## 30-11-2018 42 | 43 | - taxonomy implemented [now when you click on tag, it'll list all posts that contain it] 44 | - archives layout is now in columns, looks much nicer 45 | - medium like image zoom 46 | - smooth scroll to top 47 | 48 | # 0.5 49 | ## 12-11-2018 50 | 51 | - added default.twig.html 52 | - fixed a bug where theme wouldn't save posts 53 | - fixed title display on tab 54 | 55 | 56 | # 0.4 57 | ## 19-10-2018 58 | 59 | - changed google font from Muuli to Nunito 60 | - changed repo name in order to install theme successfully 61 | 62 | 63 | # v0.2 64 | ## 03-10-2018 65 | 66 | 1. [*] Initial version : Spooky 👻 67 | -------------------------------------------------------------------------------- /assets/built/cards.css: -------------------------------------------------------------------------------- 1 | @import url('https://fonts.googleapis.com/css?family=Nunito&subset=latin-ext'); 2 | body { 3 | font-family: 'Nunito', sans-serif!important; 4 | padding: 50px; 5 | 6 | } 7 | 8 | .card { 9 | border-radius: 4px; 10 | background: #fff; 11 | box-shadow: 0 6px 10px rgba(0, 0, 0, .08), 0 0 6px rgba(0, 0, 0, .05); 12 | transition: .3s transform cubic-bezier(.155, 1.105, .295, 1.12), .3s box-shadow, .3s -webkit-transform cubic-bezier(.155, 1.105, .295, 1.12); 13 | padding: 14px 80px 18px 36px; 14 | cursor: pointer; 15 | margin: 25px 15px; 16 | } 17 | .card:hover { 18 | box-shadow: 0 10px 20px rgba(0, 0, 0, .12), 0 4px 8px rgba(0, 0, 0, .06); 19 | } 20 | .card h3 { 21 | font-weight: 600; 22 | } 23 | .card img { 24 | position: absolute; 25 | top: 20px; 26 | right: 15px; 27 | max-height: 120px; 28 | } 29 | 30 | .card-1 { 31 | background-image: url(https://ionicframework.com/img/getting-started/ionic-native-card.png); 32 | background-repeat: no-repeat; 33 | background-position: right; 34 | background-size: 80px; 35 | } 36 | .card-2 { 37 | background-image: url(https://ionicframework.com/img/getting-started/components-card.png); 38 | background-repeat: no-repeat; 39 | background-position: right; 40 | background-size: 80px; 41 | } 42 | .card-3 { 43 | background-image: url(https://ionicframework.com/img/getting-started/theming-card.png); 44 | background-repeat: no-repeat; 45 | background-position: right; 46 | background-size: 80px; 47 | } 48 | 49 | @media(max-width: 990px) { 50 | .card { 51 | margin: 20px; 52 | } 53 | } -------------------------------------------------------------------------------- /assets/built/screen.edited.css: -------------------------------------------------------------------------------- 1 | .pagination{position:relative;width:80%;max-width:800px;margin:4rem auto;font-family:Open Sans,sans-serif;font-size:1.3rem;color:#9eabb3;text-align:center}.pagination a{color:#3eb0ef;transition:all .2s ease}.newer-posts,.older-posts{position:absolute;display:inline-block;padding:0 15px;border:1px solid #bfc8cd;text-decoration:none;border-radius:4px;transition:border .3s ease}.older-posts{right:0}.page-number{display:inline-block;padding:2px 0;min-width:100px}.newer-posts{left:0}.newer-posts:hover,.older-posts:hover{color:#3eb0ef;border-color:#98a0a4}.extra-pagination{display:none;border-bottom:1px solid #ebf2f6}.extra-pagination:after{display:block;content:"";width:7px;height:7px;border:1px solid #e7eef2;position:absolute;bottom:-5px;left:50%;margin-left:-5px;background:#fff;border-radius:100%;box-shadow:0 0 0 5px #fff}.extra-pagination .pagination{width:auto}.paged .main-header{max-height:30vh}.paged .extra-pagination{display:block}.pagination{padding-top:4rem;border-top:1px solid #bfc8cd;word-wrap:break-word}.pagination:before{display:block;content:"";width:7px;height:7px;border:1px solid #bfc8cd;position:absolute;top:-5px;left:50%;margin-left:-5px;background:#f4f8fb;border-radius:100%;box-shadow:0 0 0 5px #f4f8fb}.highlight code,.highlight pre,.highlight table,.highlight tbody,.highlight tr,figure.highlight,td.code{border:none;min-width:100%;max-width:100%}.highlight table,.highlight td pre{padding:0;margin:0}.highlight table td{border:none;margin:none;padding:none}.highlight table td:first-child,.highlight table td:last-child{background:none} 2 | /*# sourceMappingURL=screen.edited.css.map */ 3 | -------------------------------------------------------------------------------- /casper.php: -------------------------------------------------------------------------------- 1 | ['onThemeInitialized', 0] 13 | ]; 14 | } 15 | 16 | public function onThemeInitialized() 17 | { 18 | if ($this->isAdmin()) { 19 | $this->active = false; 20 | return; 21 | } 22 | 23 | $this->enable([ 24 | 'onTwigSiteVariables' => ['onTwigSiteVariables', 0], 25 | 'onPageInitialized' => ['onPageInitialized', 0] 26 | ]); 27 | } 28 | 29 | public function onTwigSiteVariables() 30 | { 31 | // Asset cache busting handler 32 | $manifest = __DIR__ . '/dist/mix-manifest.json'; 33 | 34 | if (file_exists($manifest)) { 35 | $assets = json_decode(file_get_contents($manifest), true); 36 | $this->grav['assets']->addJs('theme://dist/' . $assets['/js/app.js'], 10); 37 | $this->grav['assets']->addCss('theme://dist/' . $assets['/css/app.css'], 10); 38 | } 39 | 40 | // Add jquery if debugger is enabled 41 | if ($this->config->get('system.debugger.enabled')) { 42 | $this->grav['assets']->addJs('jquery', 101); 43 | } 44 | } 45 | 46 | public function onPageInitialized() 47 | { 48 | // Redirect to external_url if external page template 49 | $template = $this->grav['page']->template(); 50 | if ($template === 'external' && isset($this->grav['page']->header()->external_url)) { 51 | $url = $this->grav['page']->header()->external_url; 52 | $this->grav->redirect($url); 53 | } 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /templates/blog.html.twig: -------------------------------------------------------------------------------- 1 | {% extends 'partials/base.html.twig' %} 2 | 3 | {% block content %} 4 | 5 | {% include 'partials/header.html.twig' %} 6 | 7 |
8 |
9 |
10 | 11 | {{ page.content|raw }} 12 | 13 | {# Added display of featured post - hibbittsdesign.org #} 14 | {#{% for post in taxonomy.findTaxonomy({'tag': "featured"}) %}#} 15 | {#{% if (post.header.hide_from_post_list != true) and (post.parent.slug == page.slug) %}#} 16 | {#{% include 'partials/post-card.html.twig' with {'page':post, 'truncate':true} %}#} 17 | {#{% endif %}#} 18 | {#{% endfor %}#} 19 | 20 | {#{% for child in collection %}#} 21 | {# Added check for hiding post in list - hibbittsdesign.org #} 22 | {#{% if child.header.hide_from_post_list != true %}#} 23 | {# Added check for not repeating feature post - hibbittsdesign.org #} 24 | {#{% if "featured" not in child.taxonomy['tag'] %}#} 25 | {#{% include 'partials/post-card.html.twig' with {'page':post, 'truncate':true} %}#} 26 | {#{% endif %}#} 27 | {#{% endif %}#} 28 | {#{% endfor %} #} 29 | {% for post in page.collection.order('publish_date', 'desc') %} 30 | {% include 'partials/post-card.html.twig' with {page: post} %} 31 | {% endfor %} 32 |
33 |
34 |
35 | 36 | {% endblock %} 37 | 38 | {% do assets.addInlineJs('window.maxPages = ' ~ page.header.content.limit) %} 39 | {% do assets.addInlineJs(js) %} 40 | -------------------------------------------------------------------------------- /templates/partials/head.html.twig: -------------------------------------------------------------------------------- 1 | 2 | 3 | {% if page.header.menu %} {{ page.header.menu|e('html') }}{% elseif page.header.title %} {{ page.header.title|e('html') }}{% endif %} | {{ site.title|e('html') }} 4 | 5 | {% include 'partials/metadata.html.twig' %} 6 | 7 | {% set image_parts = pathinfo(grav.theme.config.theme.favicon) %} 8 | 9 | 10 | {% block stylesheets %} 11 | {% do assets.addCss('theme://css-compiled/spectre'~compress) %} 12 | {% if theme_var('spectre.exp') %}{% do assets.addCss('theme://css-compiled/spectre-exp'~compress) %}{% endif %} 13 | {% if theme_var('spectre.icons') %}{% do assets.addCss('theme://css-compiled/spectre-icons'~compress) %}{% endif %} 14 | {% do assets.addCss('theme://assets/built/global.css') %} 15 | {% do assets.addCss('theme://assets/built/screen.css') %} 16 | {% do assets.addCss('theme://assets/built/screen.edited.css') %} 17 | {% do assets.addCss('theme://assets/built/syntax.css') %} 18 | {% do assets.addCss('theme://assets/built/medium-zoom.css') %} 19 | 20 | {% endblock %} 21 | 22 | {% block javascripts %} 23 | {% do assets.addJs('jquery', 101) %} 24 | {% do assets.addJs('theme://assets/js/medium-zoom-1.1.0.min.js') %} 25 | {% do assets.addJs('theme://assets/js/tippy.all.3.0.0.min') %} 26 | {% do assets.addJs('theme://assets/js/smooth-scroll.polyfills.14.2.1.min.js', 101) %} 27 | {% do assets.addJs('theme://assets/js/jquery.fitvids.js', {group:'bottom'}) %} 28 | {% do assets.addJs('theme://assets/js/infinitescroll.js', {group:'bottom'}) %} 29 | {% endblock %} 30 | 31 | {% block assets deferred %} 32 | {{ assets.css()|raw }} 33 | {{ assets.js()|raw }} 34 | {% endblock %} 35 | -------------------------------------------------------------------------------- /templates/icons/instagram.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | instagram 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /templates/partials/post-mini.html.twig: -------------------------------------------------------------------------------- 1 |
2 | {% if page.media.images|first %} 3 | 4 |
5 |
6 | {% else %} 7 | 8 |
10 |
11 |
12 | {% endif %} 13 |
14 | 15 |
16 | {% if primary_tag %} 17 | {{ primary_tag.name }} 18 | {% endif %} 19 |

{{ post.title }}

20 |
21 |
22 | 40 |
41 |
-------------------------------------------------------------------------------- /templates/item.html.twig: -------------------------------------------------------------------------------- 1 | {% extends 'partials/base.html.twig' %} 2 | {% block content %} 3 | {% include 'partials/navbar.html.twig' %} 4 |
5 |
6 |
7 |
8 |
9 |
10 | 13 |
14 |

{{ page.title }}

15 |
16 | {% if page.media.images|first %} 17 |
18 | {% else %} 19 |
21 |
22 | {% endif %} 23 |
24 |
25 | {{ page.content|raw }} 26 |
27 |
28 | 29 | {% if page.taxonomy.tag %} 30 |
31 | {% for tag in page.taxonomy.tag %} 32 | 34 | {% endfor %} 35 |
36 | {% endif %} 37 |
38 | 47 | 48 | {% include 'partials/share.html.twig' %} 49 |
50 |
51 |
52 | {% endblock %} 53 | -------------------------------------------------------------------------------- /templates/partials/share.html.twig: -------------------------------------------------------------------------------- 1 |
2 | 7 | 8 |
{{page.title}}
9 |
10 |
{{ "THEME_CASPER.SHARE_THIS"|t }} 11 | 12 | 13 |
14 | 16 | 17 | 18 | 20 | 21 | 22 |
23 | 24 |
25 | 26 |
27 |
28 |
29 | -------------------------------------------------------------------------------- /assets/js/infinitescroll.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Infinite Scroll 3 | */ 4 | 5 | (function(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 | })(window, document); 93 | -------------------------------------------------------------------------------- /templates/icons/keybase.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | keybase 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /assets/images/ghost-logo.svg: -------------------------------------------------------------------------------- 1 | Ghost Logo 2 | -------------------------------------------------------------------------------- /templates/partials/post-card.html.twig: -------------------------------------------------------------------------------- 1 |
2 | {% if page.media.images|first %} 3 | 4 |
5 |
6 | {% elseif page.media.youtube %} 7 | 8 | 10 | 11 | {% elseif page.media.soundcloud %} 12 | 13 | 16 | 17 | {% else %} 18 | 19 |
21 |
22 |
23 | {% endif %} 24 |
25 | 26 |
27 | {% if page.taxonomy.category %} 28 | {{page.taxonomy.category|join(', ')}} 29 | {% endif %} 30 |

{{ post.title }}

31 |
32 |
33 | {{ page.content|truncate(140, true)|raw }} 34 |
35 |
36 | 37 | {% if page.taxonomy.tag %} 38 | 39 | {% for tag in page.taxonomy.tag %} 40 | {% if not (grav.uri.param('chromeless')) %} 41 | {{ tag }} 42 | {% endif %} 43 | {% endfor %} 44 | 45 | {% endif %} 46 | 47 | 65 |
66 |
67 | -------------------------------------------------------------------------------- /assets/js/jquery.fitvids.js: -------------------------------------------------------------------------------- 1 | /*jshint browser:true */ 2 | /*! 3 | * FitVids 1.3 4 | * 5 | * 6 | * Copyright 2017, Chris Coyier + Dave Rupert + Ghost Foundation 7 | * This is an unofficial release, ported by John O'Nolan 8 | * Credit to Thierry Koblentz - http://www.alistapart.com/articles/creating-intrinsic-ratios-for-video/ 9 | * Released under the MIT license 10 | * 11 | */ 12 | 13 | ;(function( $ ){ 14 | 15 | 'use strict'; 16 | 17 | $.fn.fitVids = function( options ) { 18 | var settings = { 19 | customSelector: null, 20 | ignore: null 21 | }; 22 | 23 | if(!document.getElementById('fit-vids-style')) { 24 | // appendStyles: https://github.com/toddmotto/fluidvids/blob/master/dist/fluidvids.js 25 | var head = document.head || document.getElementsByTagName('head')[0]; 26 | var css = '.fluid-width-video-container{flex-grow: 1;width:100%;}.fluid-width-video-wrapper{width:100%;position:relative;padding:0;}.fluid-width-video-wrapper iframe,.fluid-width-video-wrapper object,.fluid-width-video-wrapper embed {position:absolute;top:0;left:0;width:100%;height:100%;}'; 27 | var div = document.createElement("div"); 28 | div.innerHTML = '

x

'; 29 | head.appendChild(div.childNodes[1]); 30 | } 31 | 32 | if ( options ) { 33 | $.extend( settings, options ); 34 | } 35 | 36 | return this.each(function(){ 37 | var selectors = [ 38 | 'iframe[src*="player.vimeo.com"]', 39 | 'iframe[src*="youtube.com"]', 40 | 'iframe[src*="youtube-nocookie.com"]', 41 | 'iframe[src*="kickstarter.com"][src*="video.html"]', 42 | 'object', 43 | 'embed' 44 | ]; 45 | 46 | if (settings.customSelector) { 47 | selectors.push(settings.customSelector); 48 | } 49 | 50 | var ignoreList = '.fitvidsignore'; 51 | 52 | if(settings.ignore) { 53 | ignoreList = ignoreList + ', ' + settings.ignore; 54 | } 55 | 56 | var $allVideos = $(this).find(selectors.join(',')); 57 | $allVideos = $allVideos.not('object object'); // SwfObj conflict patch 58 | $allVideos = $allVideos.not(ignoreList); // Disable FitVids on this video. 59 | 60 | $allVideos.each(function(){ 61 | var $this = $(this); 62 | if($this.parents(ignoreList).length > 0) { 63 | return; // Disable FitVids on this video. 64 | } 65 | if (this.tagName.toLowerCase() === 'embed' && $this.parent('object').length || $this.parent('.fluid-width-video-wrapper').length) { return; } 66 | if ((!$this.css('height') && !$this.css('width')) && (isNaN($this.attr('height')) || isNaN($this.attr('width')))) 67 | { 68 | $this.attr('height', 9); 69 | $this.attr('width', 16); 70 | } 71 | var height = ( this.tagName.toLowerCase() === 'object' || ($this.attr('height') && !isNaN(parseInt($this.attr('height'), 10))) ) ? parseInt($this.attr('height'), 10) : $this.height(), 72 | width = !isNaN(parseInt($this.attr('width'), 10)) ? parseInt($this.attr('width'), 10) : $this.width(), 73 | aspectRatio = height / width; 74 | if(!$this.attr('name')){ 75 | var videoName = 'fitvid' + $.fn.fitVids._count; 76 | $this.attr('name', videoName); 77 | $.fn.fitVids._count++; 78 | } 79 | $this.wrap('
').parent('.fluid-width-video-wrapper').css('padding-top', (aspectRatio * 100)+'%'); 80 | $this.removeAttr('height').removeAttr('width'); 81 | }); 82 | }); 83 | }; 84 | 85 | // Internal counter for unique video names. 86 | $.fn.fitVids._count = 0; 87 | 88 | // Works with either jQuery or Zepto 89 | })( window.jQuery || window.Zepto ); 90 | -------------------------------------------------------------------------------- /assets/built/screen.edited.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["screen.edited.css"],"names":[],"mappings":"AAcA,YACI,kBAAmB,AACnB,UAAW,AACX,gBAAiB,AACjB,iBAAkB,AAClB,iCAAqC,AACrC,iBAAkB,AAClB,cAAe,AACf,iBAAmB,CACtB,AAED,cACI,cAAe,AACf,uBAA0B,CAC7B,AAGD,0BAEI,kBAAmB,AACnB,qBAAsB,AACtB,eAAgB,AAChB,yBAA0B,AAC1B,qBAAsB,AACtB,kBAAmB,AACnB,0BAA6B,CAChC,AAED,aACI,OAAS,CACZ,AAED,aACI,qBAAsB,AACtB,cAAe,AACf,eAAiB,CACpB,AAED,aACI,MAAQ,CACX,AAED,sCAEI,cAAe,AACf,oBAAsB,CACzB,AAED,kBACI,aAAc,AACd,+BAAiC,CACpC,AACD,wBACI,cAAe,AACf,WAAY,AACZ,UAAW,AACX,WAAY,AACZ,yBAA0B,AAC1B,kBAAmB,AACnB,YAAa,AACb,SAAU,AACV,iBAAkB,AAClB,gBAAiB,AACjB,mBAAoB,AACpB,yBAA2B,CAC9B,AACD,8BACI,UAAY,CACf,AAGD,oBACI,eAAiB,CACpB,AAGD,yBACI,aAAe,CAClB,AAGD,YACI,iBAAkB,AAClB,6BAA8B,AAC9B,oBAAsB,CACzB,AAID,mBACI,cAAe,AACf,WAAY,AACZ,UAAW,AACX,WAAY,AACZ,yBAA0B,AAC1B,kBAAmB,AACnB,SAAU,AACV,SAAU,AACV,iBAAkB,AAClB,mBAAoB,AACpB,mBAAoB,AACpB,4BAA8B,CACjC,AAED,wGAOI,YAAa,AACb,eAAgB,AAChB,cAAgB,CACnB,AAED,mCAEI,UAAW,AACX,QAAU,CACb,AAED,oBACI,YAAa,AACb,YAAa,AACb,YAAc,CACjB,AAED,+DAEI,eAAiB,CACpB","file":"screen.edited.css","sourcesContent":["/* Table of Contents\n/* ------------------------------------------------------------\n\nThis is a development CSS file which is built to a minified\nproduction stylesheet in assets/built/screen.css\n\n12. Pagination\n\n*/\n\n/* 12. Pagination - Tools to let you flick between pages\n/* ---------------------------------------------------------- */\n\n/* The main wrapper for our pagination links */\n.pagination {\n position: relative;\n width: 80%;\n max-width: 800px;\n margin: 4rem auto;\n font-family: \"Open Sans\", sans-serif;\n font-size: 1.3rem;\n color: #9EABB3;\n text-align: center;\n}\n\n.pagination a {\n color: #3eb0ef;\n transition: all 0.2s ease;\n}\n\n/* Push the previous/next links out to the left/right */\n.older-posts,\n.newer-posts {\n position: absolute;\n display: inline-block;\n padding: 0 15px;\n border: #bfc8cd 1px solid;\n text-decoration: none;\n border-radius: 4px;\n transition: border 0.3s ease;\n}\n\n.older-posts {\n right: 0;\n}\n\n.page-number {\n display: inline-block;\n padding: 2px 0;\n min-width: 100px;\n}\n\n.newer-posts {\n left: 0;\n}\n\n.older-posts:hover,\n.newer-posts:hover {\n color: #3eb0ef;\n border-color: #98a0a4;\n}\n\n.extra-pagination {\n display: none;\n border-bottom: #EBF2F6 1px solid;\n}\n.extra-pagination:after {\n display: block;\n content: \"\";\n width: 7px;\n height: 7px;\n border: #E7EEF2 1px solid;\n position: absolute;\n bottom: -5px;\n left: 50%;\n margin-left: -5px;\n background: #FFF;\n border-radius: 100%;\n box-shadow: #FFF 0 0 0 5px;\n}\n.extra-pagination .pagination {\n width: auto;\n}\n\n/* On page2+ make all the headers smaller */\n.paged .main-header {\n max-height: 30vh;\n}\n\n/* On page2+ show extra pagination controls at the top of post list */\n.paged .extra-pagination {\n display: block;\n}\n\n/* Every post, on every page, gets this style on its
tag */\n.pagination {\n padding-top: 4rem;\n border-top: #bfc8cd 1px solid;\n word-wrap: break-word;\n}\n\n/* Add a little circle in the middle of the border-bottom on our .post\n just for the lolz and stylepoints. */\n.pagination:before {\n display: block;\n content: \"\";\n width: 7px;\n height: 7px;\n border: #bfc8cd 1px solid;\n position: absolute;\n top: -5px;\n left: 50%;\n margin-left: -5px;\n background: #f4f8fb;\n border-radius: 100%;\n box-shadow: #f4f8fb 0 0 0 5px;\n}\n\nfigure.highlight,\n.highlight pre,\n.highlight code,\n.highlight table,\n.highlight tbody,\n.highlight tr,\ntd.code {\n border: none;\n min-width: 100%;\n max-width: 100%;\n}\n\n.highlight table,\n.highlight td pre {\n padding: 0;\n margin: 0;\n}\n\n.highlight table td {\n border: none;\n margin: none;\n padding: none;\n}\n\n.highlight table td:first-child,\n.highlight table td:last-child {\n background: none;\n}\n"],"sourceRoot":"/source/"} -------------------------------------------------------------------------------- /assets/built/global.css: -------------------------------------------------------------------------------- 1 | a,abbr,acronym,address,applet,article,aside,audio,big,blockquote,body,canvas,caption,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:"";content:none}img{max-width:100%}html{box-sizing:border-box;font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}*,:after,:before{box-sizing:inherit}a{background-color:transparent}a:active,a:hover{outline:0}b,strong{font-weight:700}dfn,em,i{font-style:italic}h1{margin:.67em 0;font-size:2em}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}mark{background-color:#e9ebfc}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;color:inherit;font:inherit}button{overflow:visible;border:none}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input:focus{outline:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}legend{padding:0;border:0}textarea{overflow:auto}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}html{overflow-y:scroll;font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body,html{overflow-x:hidden}body{color:#3c484e;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;font-size:1.5rem;line-height:1.6em;font-weight:400;font-style:normal;letter-spacing:0;text-rendering:optimizeLegibility;background:#fff;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-moz-font-feature-settings:"liga" on}::-moz-selection{text-shadow:none;background:#cbeafb}::selection{text-shadow:none;background:#cbeafb}hr{position:relative;display:block;width:100%;margin:2.5em 0 3.5em;padding:0;height:1px;border:0;border-top:1px solid #e3e9ed}audio,canvas,iframe,img,svg,video{vertical-align:middle}fieldset{margin:0;padding:0;border:0}textarea{resize:vertical}blockquote,dl,ol,p,ul{margin:0 0 1.5em}ol,ul{padding-left:1.3em;padding-right:1.5em}ol ol,ol ul,ul ol,ul ul{margin:.5em 0 1em}ul{list-style:disc}ol{list-style:decimal}li{margin:.5em 0;padding-left:.3em;line-height:1.6em}dt{float:left;margin:0 20px 0 0;width:120px;color:#15171a;font-weight:500;text-align:right}dd{margin:0 0 5px;text-align:left}blockquote{margin:1.5em 0;padding:0 1.6em;border-left:.5em solid #e5eff5}blockquote p{margin:.8em 0;font-size:1.2em;font-weight:300}blockquote small{display:inline-block;margin:.8em 0 .8em 1.5em;font-size:.9em;opacity:.8}blockquote small:before{content:"\2014 \00A0"}blockquote cite{font-weight:700}blockquote cite a{font-weight:400}a{color:#26a8ed;text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4,h5,h6{margin-top:0;line-height:1.15;font-weight:700;text-rendering:optimizeLegibility}h1{margin:0 0 .5em;font-size:5rem;font-weight:700}@media (max-width:500px){h1{font-size:2.2rem}}h2{margin:1.5em 0 .5em;font-size:2rem}@media (max-width:500px){h2{font-size:1.8rem}}h3{margin:1.5em 0 .5em;font-size:1.8rem;font-weight:500}@media (max-width:500px){h3{font-size:1.7rem}}h4{margin:1.5em 0 .5em;font-size:1.6rem;font-weight:500}h5,h6{margin:1.5em 0 .5em;font-size:1.4rem;font-weight:500} 2 | /*# sourceMappingURL=global.css.map */ 3 | -------------------------------------------------------------------------------- /blueprints/blog.yaml: -------------------------------------------------------------------------------- 1 | title: blog 2 | '@extends': 3 | type: default 4 | child_type: item 5 | 6 | form: 7 | fields: 8 | tabs: 9 | type: tabs 10 | active: 1 11 | fields: 12 | content: 13 | fields: 14 | header.body_classes: 15 | default: home-template 16 | 17 | advanced: 18 | fields: 19 | overrides: 20 | fields: 21 | header.child_type: 22 | default: item 23 | 24 | blog: 25 | type: tab 26 | title: Blog Config 27 | 28 | fields: 29 | content_title: 30 | type: spacer 31 | title: Content Definition 32 | 33 | header.content.items: 34 | type: textarea 35 | yaml: true 36 | label: Items 37 | default: '@self.children' 38 | validate: 39 | type: yaml 40 | 41 | header.automaton: 42 | type: markdown 43 | label: Automaton 44 | validate: 45 | type: textarea 46 | 47 | header.content.limit: 48 | type: text 49 | label: Max Item Count 50 | default: 5 51 | validate: 52 | required: true 53 | type: int 54 | min: 1 55 | 56 | header.content.order.by: 57 | type: select 58 | label: Order By 59 | default: date 60 | options: 61 | folder: Folder 62 | title: Title 63 | date: Date 64 | default: Default 65 | 66 | header.content.order.dir: 67 | type: select 68 | label: Order 69 | default: desc 70 | options: 71 | asc: Ascending 72 | desc: Descending 73 | 74 | header.content.pagination: 75 | type: toggle 76 | label: Pagination 77 | highlight: 1 78 | default: 1 79 | options: 80 | 1: PLUGIN_ADMIN.ENABLED 81 | 0: PLUGIN_ADMIN.DISABLED 82 | validate: 83 | type: bool 84 | 85 | header.taxonomy: 86 | type: taxonomy 87 | label: PLUGIN_ADMIN.TAXONOMY 88 | multiple: true 89 | validate: 90 | type: array 91 | header.content.url_taxonomy_filters: 92 | type: toggle 93 | label: URL Taxonomy Filters 94 | highlight: 1 95 | default: 1 96 | options: 97 | 1: PLUGIN_ADMIN.ENABLED 98 | 0: PLUGIN_ADMIN.DISABLED 99 | validate: 100 | type: bool 101 | 102 | import@: 103 | type: partials/blog-bits 104 | context: blueprints://pages 105 | -------------------------------------------------------------------------------- /blueprints.yaml: -------------------------------------------------------------------------------- 1 | name: Casper 2 2 | version: 1.0.2 3 | description: my little ghost 👻 | this theme is port of famous Casper2 theme for ghost 4 | icon: apple 5 | author: 6 | name: Seraphim Yaris 7 | url: https://www.buymeacoffee.com/zBl6OtuIM 8 | homepage: https://github.com/diomed/casper 9 | keywords: Casper2, grav etc. 10 | bugs: https://github.com/diomed/casper/issues 11 | license: MIT 12 | dependencies: 13 | - { name: readingtime, version: '>=1.3.0' } 14 | 15 | form: 16 | validation: loose 17 | fields: 18 | dropdown.enabled: 19 | type: toggle 20 | label: Dropdown in navbar 21 | highlight: 1 22 | default: 1 23 | options: 24 | 1: PLUGIN_ADMIN.ENABLED 25 | 0: PLUGIN_ADMIN.DISABLED 26 | validate: 27 | type: bool 28 | 29 | description: 30 | type: textarea 31 | label: Description 32 | logo: 33 | type: filepicker 34 | label: Logo image 35 | folder: 'theme@://assets/images' 36 | preview_images: true 37 | accept: 38 | - .svg 39 | - .png 40 | year: 41 | type: number 42 | prepend: Year 43 | tagline: 44 | type: textarea 45 | label: Tagline 46 | header.featured_image: 47 | type: text 48 | label: Default Card Background Image 49 | placeholder: enter link here 50 | help: when there is no image set, this image, or set of images from unsplash shall be displayed instead 51 | prepend: https://source.unsplash.com 52 | error_header_image: 53 | type: text 54 | label: Header image error message 55 | favicon: 56 | type: file 57 | label: Favicon 58 | multiple: false 59 | destination: 'user/themes/haywire/images/favicon' 60 | accept: 61 | - image/* 62 | - svg 63 | footer: 64 | type: textarea 65 | label: Footer message 66 | 67 | social_columns: 68 | type: columns 69 | fields: 70 | column1: 71 | type: column 72 | fields: 73 | social_twitter: 74 | type: text 75 | prepend: Twitter ID 76 | social_facebook: 77 | type: text 78 | prepend: Facebook ID 79 | 80 | social_github: 81 | type: text 82 | prepend: Github ID 83 | 84 | social_keybase: 85 | type: text 86 | prepend: Keybase ID 87 | social_linkedin: 88 | type: text 89 | prepend: Linkedin ID 90 | 91 | column2: 92 | type: column 93 | fields: 94 | social_spotify: 95 | type: text 96 | prepend: Spotify ID 97 | social_youtube: 98 | type: text 99 | prepend: Youtube ID 100 | social_discord: 101 | type: text 102 | prepend: Discord ID 103 | social_flickr: 104 | type: text 105 | prepend: Flickr ID 106 | social_instagram: 107 | type: text 108 | prepend: Instagram ID 109 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Casper2 👻 2 | Grav theme 3 | 4 | ![Casper2 Theme](thumbnail.jpg) 5 | 6 | ## Notes 7 | As you can see, this theme uses images in the header of every post.
8 | If you don't have an image set and ready, you can select a placeholder image from unsplash that will show as background.
9 | To do this, use the **default card background image** under theme options.
10 | You can find examples on how to set desired unsplash image or set of images that will change upon reloading on [unsplash](https://source.unsplash.com/) 11 | 12 | ... 13 | 14 | ## Basic usage instructions: 15 | 16 | - Change the **logo** in **Themes » Casper 2**.
17 | - Change **social icons** by writing your **id** after the site name in the theme configuration.
18 | - Change the **favicon tagline** text there too. 19 | 20 | - Create a page of type : **blog** and go to **Advanced** in the admin. 21 | - Under **`body-classes`** write **`home-template`** 22 | - While you're there, in blog page 23 | - Go to **content tab** 24 | - Upload your own **primary Image** 25 | - Hit **save** 26 | 27 | The blog page should be blank, without any text. 28 | 29 | Under **blog page** you can now create as many posts with __page template **`item`**__ as you want.
30 | This is how you populate your blog. 31 | 32 | In this theme you can also create a page of type : **archive**. 33 | Pages with type **archive** will list all your posts written so far. 34 | 35 | ## Details 36 | 37 | This Grav theme is port of a Casper theme for ghost, which is released under MIT licence. 38 | 39 | ### GPM Installation (Preferred) 40 | 41 | The simplest way to install this theme is via the [Grav Package Manager (GPM)](http://learn.getgrav.org/advanced/grav-gpm) through your system's Terminal (also called the command line). From the root of your Grav install type: 42 | 43 | bin/gpm install casper 44 | 45 | This will install the Gateway theme into your `/user/themes` directory within Grav. Its files can be found under `/your/site/grav/user/themes/casper`. 46 | 47 | ### Manual Installation 48 | 49 | To install this theme, just download the zip version of this repository and unzip it under `/your/site/grav/user/themes`. Then, rename the folder to `casper`. 50 | 51 | You should now have all the theme files under 52 | 53 | /your/site/grav/user/themes/casper 54 | 55 | If you want to set Casper2 as the default theme, you can do so by following these steps: 56 | 57 | * Navigate to `/your/site/grav/user/config`. 58 | * Open the **system.yaml** file. 59 | * Change the `theme:` setting to `theme: casper`. 60 | * Save your changes. 61 | * Clear the Grav cache. The simplest way to do this is by going to the root Grav directory in Terminal and typing `bin/grav clear-cache`. 62 | 63 | ### GPM Update (Preferred) 64 | 65 | The simplest way to update this theme is via the [Grav Package Manager (GPM)](http://learn.getgrav.org/advanced/grav-gpm). You can do this with this by navigating to the root directory of your Grav install using your system's Terminal (also called command line) and typing the following: 66 | 67 | bin/gpm update casper 68 | 69 | This command will check your Grav install to see if your Gateway theme is due for an update. If a newer release is found, you will be asked whether or not you wish to update. To continue, type `y` and hit enter. The theme will automatically update and clear Grav's cache. 70 | 71 | ### Manual Update 72 | 73 | Manually updating theme is pretty simple. Here is what you will need to do to get this done: 74 | 75 | * Delete the `your/site/user/themes/casper2` directory. 76 | * Download the new version of theme from this repository. 77 | * Unzip the zip file in `your/site/user/themes` and rename the resulting folder to `casper2`. 78 | * Clear the Grav cache. The simplest way to do this is by going to the root Grav directory in terminal and typing `bin/grav clear-cache`. 79 | 80 | ## Thank You 81 | 82 | Grav has fantastic team, people that are very helpful and people that I probably bored to death, 83 | or at least quite a lot to achieve what I want. 84 | In [Slack's chat room](https://getgrav.slack.com/messages) I bugged always helpful `@andrewscofield` 85 | `@ricardo`, and `@olevik`. 86 | 87 | Words cannot express how thankful I am to all of you. I'm the one to blame if anything is wrong, 😅 88 | but you guys helped to get most of the things right. So kudos to you. 89 | 90 | And at last, but not least - Thank You if you're using this theme. 🙂 91 | -------------------------------------------------------------------------------- /assets/built/syntax.css: -------------------------------------------------------------------------------- 1 | a,abbr,acronym,address,applet,article,aside,audio,big,blockquote,body,canvas,caption,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:"";content:none}img{max-width:100%}html{box-sizing:border-box;font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}*,:after,:before{box-sizing:inherit}a{background-color:transparent}a:active,a:hover{outline:0}b,strong{font-weight:700}dfn,em,i{font-style:italic}h1{margin:.67em 0;font-size:2em}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}mark{background-color:#e4eff6}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;color:inherit;font:inherit}button{overflow:visible;border:none}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input:focus{outline:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}legend{padding:0;border:0}textarea{overflow:auto}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}html{overflow-y:scroll;font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body,html{overflow-x:hidden}body{color:#3c484e;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;font-size:1.5rem;line-height:1.6em;font-weight:400;font-style:normal;letter-spacing:0;text-rendering:optimizeLegibility;background:#fff;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-moz-font-feature-settings:"liga" on}::-moz-selection{text-shadow:none;background:#cbeafb}::selection{text-shadow:none;background:#cbeafb}hr{position:relative;display:block;width:100%;margin:2.5em 0 3.5em;padding:0;height:1px;border:0;border-top:1px solid #e3e9ed}audio,canvas,iframe,img,svg,video{vertical-align:middle}fieldset{margin:0;padding:0;border:0}textarea{resize:vertical}blockquote,dl,ol,p,ul{margin:0 0 1.5em}ol,ul{padding-left:1.3em;padding-right:1.5em}ol ol,ol ul,ul ol,ul ul{margin:.5em 0 1em}ul{list-style:disc}ol{list-style:decimal}li{margin:.5em 0;padding-left:.3em;line-height:1.6em}dt{float:left;margin:0 20px 0 0;width:120px;color:#15171a;font-weight:500;text-align:right}dd{margin:0 0 5px;text-align:left}blockquote{margin:1.5em 0;padding:0 1.6em;border-left:.5em solid #e5eff5}blockquote p{margin:.8em 0;font-size:1.2em;font-weight:300}blockquote small{display:inline-block;margin:.8em 0 .8em 1.5em;font-size:.9em;opacity:.8}blockquote small:before{content:"\2014 \00A0"}blockquote cite{font-weight:700}blockquote cite a{font-weight:400}a{color:#26a8ed;text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4,h5,h6{margin-top:0;line-height:1.15;font-weight:700;text-rendering:optimizeLegibility}h1{margin:0 0 .5em;font-size:5rem;font-weight:700}@media (max-width:500px){h1{font-size:2.2rem}}h2{margin:1.5em 0 .5em;font-size:2rem}@media (max-width:500px){h2{font-size:1.8rem}}h3{margin:1.5em 0 .5em;font-size:1.8rem;font-weight:500}@media (max-width:500px){h3{font-size:1.7rem}}h4{margin:1.5em 0 .5em;font-size:1.6rem;font-weight:500}h5,h6{margin:1.5em 0 .5em;font-size:1.4rem;font-weight:500}.highlight .hll,.highlight pre{background:#0e0f11}.highlight .c{color:#75715e}.highlight .err{color:#960050;background-color:#1e0010}.highlight .k{color:#66d9ef}.highlight .l{color:#ae81ff}.highlight .n{color:#f8f8f2}.highlight .o{color:#f92672}.highlight .p{color:#f8f8f2}.highlight .c1,.highlight .cm,.highlight .cp,.highlight .cs{color:#75715e}.highlight .ge{font-style:italic}.highlight .gs{font-weight:700}.highlight .kc,.highlight .kd{color:#66d9ef}.highlight .kn{color:#f92672}.highlight .kp,.highlight .kr,.highlight .kt{color:#66d9ef}.highlight .ld{color:#e6db74}.highlight .m{color:#ae81ff}.highlight .s{color:#e6db74}.highlight .na{color:#a6e22e}.highlight .nb{color:#f8f8f2}.highlight .nc{color:#a6e22e}.highlight .no{color:#66d9ef}.highlight .nd{color:#a6e22e}.highlight .ni{color:#f8f8f2}.highlight .ne,.highlight .nf{color:#a6e22e}.highlight .nl,.highlight .nn{color:#f8f8f2}.highlight .nx{color:#a6e22e}.highlight .py{color:#f8f8f2}.highlight .nt{color:#f92672}.highlight .nv{color:#f8f8f2}.highlight .ow{color:#f92672}.highlight .w{color:#f8f8f2}.highlight .mf,.highlight .mh,.highlight .mi,.highlight .mo{color:#ae81ff}.highlight .s2,.highlight .sb,.highlight .sc,.highlight .sd{color:#e6db74}.highlight .se{color:#ae81ff}.highlight .s1,.highlight .sh,.highlight .si,.highlight .sr,.highlight .ss,.highlight .sx{color:#e6db74}.highlight .bp,.highlight .vc,.highlight .vg,.highlight .vi{color:#f8f8f2}.highlight .il{color:#ae81ff}.highlight .gu{color:#75715e}.highlight .gd{color:#f92672}.highlight .gi{color:#a6e22e} 2 | /*# sourceMappingURL=syntax.css.map */ 3 | -------------------------------------------------------------------------------- /templates/partials/footer.html.twig: -------------------------------------------------------------------------------- 1 | {% set share_fb = "M19 6h5V0h-5c-3.86 0-7 3.14-7 7v3H8v6h4v16h6V16h5l1-6h-6V7c0-.542.458-1 1-1z" %} 2 | {% set share_twitter = "M30.063 7.313c-.813 1.125-1.75 2.125-2.875 2.938v.75c0 1.563-.188 3.125-.688 4.625a15.088 15.088 0 0 1-2.063 4.438c-.875 1.438-2 2.688-3.25 3.813a15.015 15.015 0 0 1-4.625 2.563c-1.813.688-3.75 1-5.75 1-3.25 0-6.188-.875-8.875-2.625.438.063.875.125 1.375.125 2.688 0 5.063-.875 7.188-2.5-1.25 0-2.375-.375-3.375-1.125s-1.688-1.688-2.063-2.875c.438.063.813.125 1.125.125.5 0 1-.063 1.5-.25-1.313-.25-2.438-.938-3.313-1.938a5.673 5.673 0 0 1-1.313-3.688v-.063c.813.438 1.688.688 2.625.688a5.228 5.228 0 0 1-1.875-2c-.5-.875-.688-1.813-.688-2.75 0-1.063.25-2.063.75-2.938 1.438 1.75 3.188 3.188 5.25 4.25s4.313 1.688 6.688 1.813a5.579 5.579 0 0 1 1.5-5.438c1.125-1.125 2.5-1.688 4.125-1.688s3.063.625 4.188 1.813a11.48 11.48 0 0 0 3.688-1.375c-.438 1.375-1.313 2.438-2.563 3.188 1.125-.125 2.188-.438 3.313-.875z" %} 3 | 39 | 40 | 114 | -------------------------------------------------------------------------------- /assets/js/smooth-scroll.polyfills.14.2.1.min.js: -------------------------------------------------------------------------------- 1 | /*! smooth-scroll v14.2.1 | (c) 2018 Chris Ferdinandi | MIT License | http://github.com/cferdinandi/smooth-scroll */ 2 | window.Element&&!Element.prototype.closest&&(Element.prototype.closest=function(e){var t,n=(this.document||this.ownerDocument).querySelectorAll(e),o=this;do{for(t=n.length;--t>=0&&n.item(t)!==o;);}while(t<0&&(o=o.parentElement));return o}),(function(){function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var n=document.createEvent("CustomEvent");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n}if("function"==typeof window.CustomEvent)return!1;e.prototype=window.Event.prototype,window.CustomEvent=e})(),(function(){for(var e=0,t=["ms","moz","webkit","o"],n=0;n=1&&t<=31||127==t||0===i&&t>=48&&t<=57||1===i&&t>=48&&t<=57&&45===a?r+="\\"+t.toString(16)+" ":r+=t>=128||45===t||95===t||t>=48&&t<=57||t>=65&&t<=90||t>=97&&t<=122?n.charAt(i):"\\"+n.charAt(i)}var u;try{u=decodeURIComponent("#"+r)}catch(e){u="#"+r}return u},c=function(e,t){var n;return"easeInQuad"===e.easing&&(n=t*t),"easeOutQuad"===e.easing&&(n=t*(2-t)),"easeInOutQuad"===e.easing&&(n=t<.5?2*t*t:(4-2*t)*t-1),"easeInCubic"===e.easing&&(n=t*t*t),"easeOutCubic"===e.easing&&(n=--t*t*t+1),"easeInOutCubic"===e.easing&&(n=t<.5?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1),"easeInQuart"===e.easing&&(n=t*t*t*t),"easeOutQuart"===e.easing&&(n=1- --t*t*t*t),"easeInOutQuart"===e.easing&&(n=t<.5?8*t*t*t*t:1-8*--t*t*t*t),"easeInQuint"===e.easing&&(n=t*t*t*t*t),"easeOutQuint"===e.easing&&(n=1+--t*t*t*t*t),"easeInOutQuint"===e.easing&&(n=t<.5?16*t*t*t*t*t:1+16*--t*t*t*t*t),e.customEasing&&(n=e.customEasing(t)),n||t},s=function(){return Math.max(document.body.scrollHeight,document.documentElement.scrollHeight,document.body.offsetHeight,document.documentElement.offsetHeight,document.body.clientHeight,document.documentElement.clientHeight)},l=function(t,n,o,i){var r=0;if(t.offsetParent)do{r+=t.offsetTop,t=t.offsetParent}while(t);return r=Math.max(r-n-o,0),i&&(r=Math.min(r,s()-e.innerHeight)),r},m=function(e){return e?r(e)+e.offsetTop:0},d=function(e,t,n){t||history.pushState&&n.updateURL&&history.pushState({smoothScroll:JSON.stringify(n),anchor:e.id},document.title,e===document.documentElement?"#top":"#"+e.id)},f=function(t,n,o){0===t&&document.body.focus(),o||(t.focus(),document.activeElement!==t&&(t.setAttribute("tabindex","-1"),t.focus(),t.style.outline="none"),e.scrollTo(0,n))},h=function(t,n,o,i){if(n.emitEvents&&"function"==typeof e.CustomEvent){var r=new CustomEvent(t,{bubbles:!0,detail:{anchor:o,toggle:i}});document.dispatchEvent(r)}};return function(r,p){var g,v,w,y,E,b,S,A={};A.cancelScroll=function(e){cancelAnimationFrame(S),S=null,e||h("scrollCancel",g)},A.animateScroll=function(n,i,r){var a=o(g||t,r||{}),u="[object Number]"===Object.prototype.toString.call(n),p=u||!n.tagName?null:n;if(u||p){var v=e.pageYOffset;a.header&&!y&&(y=document.querySelector(a.header)),E||(E=m(y));var w,b,C,O=u?n:l(p,E,parseInt("function"==typeof a.offset?a.offset(n,i):a.offset,10),a.clip),I=O-v,q=s(),F=0,L=function(t,o){var r=e.pageYOffset;if(t==o||r==o||(v=q)return A.cancelScroll(!0),f(n,o,u),h("scrollStop",a,n,i),w=null,S=null,!0},H=function(t){w||(w=t),F+=t-w,b=F/parseInt(a.speed,10),b=b>1?1:b,C=v+I*c(a,b),e.scrollTo(0,Math.floor(C)),L(C,O)||(S=e.requestAnimationFrame(H),w=t)};0===e.pageYOffset&&e.scrollTo(0,0),d(n,u,a),h("scrollStart",a,n,i),A.cancelScroll(!0),e.requestAnimationFrame(H)}};var C=function(t){if(!i()&&0===t.button&&!t.metaKey&&!t.ctrlKey&&"closest"in t.target&&(w=t.target.closest(r))&&"a"===w.tagName.toLowerCase()&&!t.target.closest(g.ignore)&&w.hostname===e.location.hostname&&w.pathname===e.location.pathname&&/#/.test(w.href)){var n=u(a(w.hash)),o=g.topOnEmptyHash&&"#"===n?document.documentElement:document.querySelector(n);o=o||"#top"!==n?o:document.documentElement,o&&(t.preventDefault(),A.animateScroll(o,w))}},O=function(e){if(null!==history.state&&history.state.smoothScroll&&history.state.smoothScroll===JSON.stringify(g)&&history.state.anchor){var t=document.querySelector(u(a(history.state.anchor)));t&&A.animateScroll(t,null,{updateURL:!1})}},I=function(e){b||(b=setTimeout((function(){b=null,E=m(y)}),66))};return A.destroy=function(){g&&(document.removeEventListener("click",C,!1),e.removeEventListener("resize",I,!1),e.removeEventListener("popstate",O,!1),A.cancelScroll(),g=null,v=null,w=null,y=null,E=null,b=null,S=null)},A.init=function(i){if(!n())throw"Smooth Scroll: This browser does not support the required JavaScript methods and browser APIs.";A.destroy(),g=o(t,i||{}),y=g.header?document.querySelector(g.header):null,E=m(y),document.addEventListener("click",C,!1),y&&e.addEventListener("resize",I,!1),g.updateURL&&g.popstate&&e.addEventListener("popstate",O,!1)},A.init(p),A}})); -------------------------------------------------------------------------------- /templates/partials/navbar.twig: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /templates/partials/navbar.html.twig: -------------------------------------------------------------------------------- 1 | {# {% set navbar_bgcolor = theme_var('navbar_bgcolor') %} #} 2 | -------------------------------------------------------------------------------- /assets/js/medium-zoom-1.1.0.min.js: -------------------------------------------------------------------------------- 1 | /*! medium-zoom 1.1.0 | MIT License | https://github.com/francoischalifour/medium-zoom */ 2 | !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).mediumZoom=t()}(this,(function(){"use strict";var e=Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{},c=window.Promise||function(e){function t(){}e(t,t)},u=function(e){var t=e.target;t!==N?-1!==x.indexOf(t)&&w({target:t}):E()},s=function(){if(!A&&k.original){var e=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;Math.abs(S-e)>T.scrollOffset&&setTimeout(E,150)}},f=function(e){var t=e.key||e.keyCode;"Escape"!==t&&"Esc"!==t&&27!==t||E()},p=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t;if(t.background&&(N.style.background=t.background),t.container&&t.container instanceof Object&&(n.container=e({},T.container,t.container)),t.template){var i=o(t.template)?t.template:document.querySelector(t.template);n.template=i}return T=e({},T,n),x.forEach((function(e){e.dispatchEvent(a("medium-zoom:update",{detail:{zoom:j}}))})),j},g=function(){var o=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return t(e({},T,o))},v=function(){for(var e=arguments.length,t=Array(e),o=0;o0?t.reduce((function(e,t){return[].concat(e,i(t))}),[]):x;return n.forEach((function(e){e.classList.remove("medium-zoom-image"),e.dispatchEvent(a("medium-zoom:detach",{detail:{zoom:j}}))})),x=x.filter((function(e){return-1===n.indexOf(e)})),j},z=function(e,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return x.forEach((function(n){n.addEventListener("medium-zoom:"+e,t,o)})),O.push({type:"medium-zoom:"+e,listener:t,options:o}),j},y=function(e,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return x.forEach((function(n){n.removeEventListener("medium-zoom:"+e,t,o)})),O=O.filter((function(o){return!(o.type==="medium-zoom:"+e&&o.listener.toString()===t.toString())})),j},b=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=t.target,r=function(){var t={width:document.documentElement.clientWidth,height:document.documentElement.clientHeight,left:0,top:0,right:0,bottom:0},i=void 0,r=void 0;if(T.container)if(T.container instanceof Object)i=(t=e({},t,T.container)).width-t.left-t.right-2*T.margin,r=t.height-t.top-t.bottom-2*T.margin;else{var d=(o(T.container)?T.container:document.querySelector(T.container)).getBoundingClientRect(),a=d.width,m=d.height,l=d.left,c=d.top;t=e({},t,{width:a,height:m,left:l,top:c})}i=i||t.width-2*T.margin,r=r||t.height-2*T.margin;var u=k.zoomedHd||k.original,s=n(u)?i:u.naturalWidth||i,f=n(u)?r:u.naturalHeight||r,p=u.getBoundingClientRect(),g=p.top,v=p.left,h=p.width,z=p.height,y=Math.min(Math.max(h,s),i)/h,b=Math.min(Math.max(z,f),r)/z,E=Math.min(y,b),w="scale("+E+") translate3d("+((i-h)/2-v+T.margin+t.left)/E+"px, "+((r-z)/2-g+T.margin+t.top)/E+"px, 0)";k.zoomed.style.transform=w,k.zoomedHd&&(k.zoomedHd.style.transform=w)};return new c((function(e){if(i&&-1===x.indexOf(i))e(j);else{if(k.zoomed)e(j);else{if(i)k.original=i;else{if(!(x.length>0))return void e(j);var t=x;k.original=t[0]}if(k.original.dispatchEvent(a("medium-zoom:open",{detail:{zoom:j}})),S=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,A=!0,k.zoomed=d(k.original),document.body.appendChild(N),T.template){var n=o(T.template)?T.template:document.querySelector(T.template);k.template=document.createElement("div"),k.template.appendChild(n.content.cloneNode(!0)),document.body.appendChild(k.template)}if(k.original.parentElement&&"PICTURE"===k.original.parentElement.tagName&&k.original.currentSrc&&(k.zoomed.src=k.original.currentSrc),document.body.appendChild(k.zoomed),window.requestAnimationFrame((function(){document.body.classList.add("medium-zoom--opened")})),k.original.classList.add("medium-zoom-image--hidden"),k.zoomed.classList.add("medium-zoom-image--opened"),k.zoomed.addEventListener("click",E),k.zoomed.addEventListener("transitionend",(function t(){A=!1,k.zoomed.removeEventListener("transitionend",t),k.original.dispatchEvent(a("medium-zoom:opened",{detail:{zoom:j}})),e(j)})),k.original.getAttribute("data-zoom-src")){k.zoomedHd=k.zoomed.cloneNode(),k.zoomedHd.removeAttribute("srcset"),k.zoomedHd.removeAttribute("sizes"),k.zoomedHd.removeAttribute("loading"),k.zoomedHd.src=k.zoomed.getAttribute("data-zoom-src"),k.zoomedHd.onerror=function(){clearInterval(m),console.warn("Unable to reach the zoom image target "+k.zoomedHd.src),k.zoomedHd=null,r()};var m=setInterval((function(){k.zoomedHd.complete&&(clearInterval(m),k.zoomedHd.classList.add("medium-zoom-image--opened"),k.zoomedHd.addEventListener("click",E),document.body.appendChild(k.zoomedHd),r())}),10)}else if(k.original.hasAttribute("srcset")){k.zoomedHd=k.zoomed.cloneNode(),k.zoomedHd.removeAttribute("sizes"),k.zoomedHd.removeAttribute("loading");var l=k.zoomedHd.addEventListener("load",(function(){k.zoomedHd.removeEventListener("load",l),k.zoomedHd.classList.add("medium-zoom-image--opened"),k.zoomedHd.addEventListener("click",E),document.body.appendChild(k.zoomedHd),r()}))}else r()}}}))},E=function(){return new c((function(e){if(!A&&k.original){A=!0,document.body.classList.remove("medium-zoom--opened"),k.zoomed.style.transform="",k.zoomedHd&&(k.zoomedHd.style.transform=""),k.template&&(k.template.style.transition="opacity 150ms",k.template.style.opacity=0),k.original.dispatchEvent(a("medium-zoom:close",{detail:{zoom:j}})),k.zoomed.addEventListener("transitionend",(function t(){k.original.classList.remove("medium-zoom-image--hidden"),document.body.removeChild(k.zoomed),k.zoomedHd&&document.body.removeChild(k.zoomedHd),document.body.removeChild(N),k.zoomed.classList.remove("medium-zoom-image--opened"),k.template&&document.body.removeChild(k.template),A=!1,k.zoomed.removeEventListener("transitionend",t),k.original.dispatchEvent(a("medium-zoom:closed",{detail:{zoom:j}})),k.original=null,k.zoomed=null,k.zoomedHd=null,k.template=null,e(j)}))}else e(j)}))},w=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.target;return k.original?E():b({target:t})},L=function(){return T},H=function(){return x},C=function(){return k.original},x=[],O=[],A=!1,S=0,T=l,k={original:null,zoomed:null,zoomedHd:null,template:null};"[object Object]"===Object.prototype.toString.call(m)?T=m:(m||"string"==typeof m)&&v(m),T=e({margin:0,background:"#fff",scrollOffset:40,container:null,template:null},T);var N=r(T.background);document.addEventListener("click",u),document.addEventListener("keyup",f),document.addEventListener("scroll",s),window.addEventListener("resize",E);var j={open:b,close:E,toggle:w,update:p,clone:g,attach:v,detach:h,on:z,off:y,getOptions:L,getImages:H,getZoomedImage:C};return j}})); 3 | -------------------------------------------------------------------------------- /assets/built/global.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["global.css"],"names":[],"mappings":"AAqBA,8YA6EI,SAAU,AACV,UAAW,AACX,SAAU,AACV,aAAc,AACd,eAAgB,AAChB,uBAAyB,CAC5B,AACD,KACI,aAAe,CAClB,AACD,MAEI,eAAiB,CACpB,AACD,aAEI,WAAa,CAChB,AACD,oDAII,WAAY,AACZ,YAAc,CACjB,AAKD,IACI,cAAgB,CACnB,AACD,KACI,sBAAuB,AACvB,uBAAwB,AAExB,0BAA2B,AAC3B,6BAA+B,CAClC,AACD,iBAGI,kBAAoB,CACvB,AACD,EACI,4BAA8B,CACjC,AACD,iBAEI,SAAW,CACd,AACD,SAEI,eAAkB,CACrB,AACD,SAGI,iBAAmB,CACtB,AACD,GACI,eAAiB,AACjB,aAAe,CAClB,AACD,MACI,aAAe,CAClB,AACD,QAEI,kBAAmB,AACnB,cAAe,AACf,cAAe,AACf,uBAAyB,CAC5B,AACD,IACI,SAAY,CACf,AACD,IACI,aAAgB,CACnB,AACD,IACI,QAAU,CACb,AACD,eACI,eAAiB,CACpB,AACD,KACI,wBAA0B,CAC7B,AACD,kBAII,gCAAkC,AAClC,aAAe,CAClB,AACD,sCAKI,SAAU,AACV,cAAe,AACf,YAAc,CACjB,AACD,OACI,iBAAkB,AAClB,WAAa,CAChB,AACD,cAEI,mBAAqB,CACxB,AACD,oEAKI,eAAgB,AAEhB,yBAA2B,CAC9B,AACD,sCAEI,cAAgB,CACnB,AACD,iDAEI,UAAW,AACX,QAAU,CACb,AACD,MACI,kBAAoB,CACvB,AACD,YACI,YAAc,CACjB,AACD,uCAEI,sBAAuB,AACvB,SAAW,CACd,AACD,4FAEI,WAAa,CAChB,AACD,mBACI,uBAAwB,AAExB,4BAA8B,CACjC,AACD,+FAEI,uBAAyB,CAC5B,AACD,OACI,UAAW,AACX,QAAU,CACb,AACD,SACI,aAAe,CAClB,AACD,MACI,iBAAkB,AAClB,wBAA0B,CAC7B,AACD,MAEI,SAAW,CACd,AAOD,KAEI,kBAAmB,AACnB,gBAAiB,AAEjB,yCAA8C,CACjD,AACD,UANI,iBAAmB,CAqBtB,AAfD,KAEI,cAAqC,AACrC,yHAAyI,AACzI,iBAAkB,AAClB,kBAAmB,AACnB,gBAAiB,AACjB,kBAAmB,AACnB,iBAAkB,AAClB,kCAAmC,AACnC,gBAAiB,AAEjB,mCAAoC,AACpC,kCAAmC,AACnC,oCAAsC,CACzC,AAED,iBACI,iBAAkB,AAClB,kBAA+C,CAClD,AAHD,YACI,iBAAkB,AAClB,kBAA+C,CAClD,AAED,GACI,kBAAmB,AACnB,cAAe,AACf,WAAY,AACZ,qBAAsB,AACtB,UAAW,AACX,WAAY,AACZ,SAAU,AACV,4BAAsD,CACzD,AAED,kCAMI,qBAAuB,CAC1B,AAED,SACI,SAAU,AACV,UAAW,AACX,QAAU,CACb,AAED,SACI,eAAiB,CACpB,AAED,sBAKI,gBAAoB,CACvB,AAED,MAEI,mBAAoB,AACpB,mBAAqB,CACxB,AAED,wBAII,iBAAoB,CACvB,AAED,GACI,eAAiB,CACpB,AAED,GACI,kBAAoB,CACvB,AAED,GACI,cAAgB,AAChB,kBAAoB,AACpB,iBAAmB,CACtB,AAED,GACI,WAAY,AACZ,kBAAmB,AACnB,YAAa,AACb,cAAuB,AACvB,gBAAiB,AACjB,gBAAkB,CACrB,AAED,GACI,eAAkB,AAClB,eAAiB,CACpB,AAED,WACI,eAAgB,AAChB,gBAAyB,AACzB,8BAA0C,CAC7C,AAED,aACI,cAAgB,AAChB,gBAAiB,AACjB,eAAiB,CACpB,AAED,iBACI,qBAAsB,AACtB,yBAA4B,AAC5B,eAAiB,AACjB,UAAa,CAChB,AAED,wBACI,qBAAuB,CAC1B,AAED,gBACI,eAAkB,CACrB,AACD,kBACI,eAAoB,CACvB,AAED,EACI,cAAiC,AACjC,oBAAsB,CACzB,AAED,QACI,yBAA2B,CAC9B,AAED,kBAMI,aAAc,AACd,iBAAkB,AAClB,gBAAiB,AACjB,iCAAmC,CACtC,AAED,GACI,gBAAoB,AACpB,eAAgB,AAChB,eAAiB,CACpB,AACD,yBACI,GACI,gBAAkB,CACrB,CACJ,AAED,GACI,oBAAwB,AACxB,cAAgB,CACnB,AACD,yBACI,GACI,gBAAkB,CACrB,CACJ,AAED,GACI,oBAAwB,AACxB,iBAAkB,AAClB,eAAiB,CACpB,AACD,yBACI,GACI,gBAAkB,CACrB,CACJ,AAED,GACI,oBAAwB,AACxB,iBAAkB,AAClB,eAAiB,CACpB,AAQD,MALI,oBAAwB,AACxB,iBAAkB,AAClB,eAAiB,CAOpB","file":"global.css","sourcesContent":["/* Variables\n/* ---------------------------------------------------------- */\n\n:root {\n /* Colours */\n --blue: #3eb0ef;\n --green: #a4d037;\n --purple: #ad26b4;\n --yellow: #fecd35;\n --red: #f05230;\n --darkgrey: #15171A;\n --midgrey: #738a94;\n --lightgrey: #c5d2d9;\n --whitegrey: #e5eff5;\n --pink: #fa3a57;\n --brown: #a3821a;\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; /* 3 */\n color: inherit; /* 1 */\n font: inherit; /* 2 */\n}\nbutton {\n overflow: visible;\n border: none;\n}\nbutton,\nselect {\n text-transform: none;\n}\nbutton,\nhtml input[type=\"button\"],\n/* 1 */\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n cursor: pointer; /* 3 */\n\n -webkit-appearance: button; /* 2 */\n}\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n padding: 0;\n border: 0;\n}\ninput {\n line-height: normal;\n}\ninput:focus {\n outline: none;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\ninput[type=\"search\"] {\n box-sizing: content-box; /* 2 */\n\n -webkit-appearance: textfield; /* 1 */\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\nlegend {\n padding: 0; /* 2 */\n border: 0; /* 1 */\n}\ntextarea {\n overflow: auto;\n}\ntable {\n border-spacing: 0;\n border-collapse: collapse;\n}\ntd,\nth {\n padding: 0;\n}\n\n\n/* ==========================================================================\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(--midgrey) l(-25%));\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: color(var(--blue) lightness(+30%));\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(--lightgrey) l(+10%));\n}\n\naudio,\ncanvas,\niframe,\nimg,\nsvg,\nvideo {\n vertical-align: middle;\n}\n\nfieldset {\n margin: 0;\n padding: 0;\n border: 0;\n}\n\ntextarea {\n resize: vertical;\n}\n\np,\nul,\nol,\ndl,\nblockquote {\n margin: 0 0 1.5em 0;\n}\n\nol,\nul {\n padding-left: 1.3em;\n padding-right: 1.5em;\n}\n\nol ol,\nul ul,\nul ol,\nol ul {\n margin: 0.5em 0 1em;\n}\n\nul {\n list-style: disc;\n}\n\nol {\n list-style: decimal;\n}\n\nli {\n margin: 0.5em 0;\n padding-left: 0.3em;\n line-height: 1.6em;\n}\n\ndt {\n float: left;\n margin: 0 20px 0 0;\n width: 120px;\n color: var(--darkgrey);\n font-weight: 500;\n text-align: right;\n}\n\ndd {\n margin: 0 0 5px 0;\n text-align: left;\n}\n\nblockquote {\n margin: 1.5em 0;\n padding: 0 1.6em 0 1.6em;\n border-left: var(--whitegrey) 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(--blue) l(-5%));\n text-decoration: none;\n}\n\na:hover {\n text-decoration: underline;\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n margin-top: 0;\n line-height: 1.15;\n font-weight: 700;\n text-rendering: optimizeLegibility;\n}\n\nh1 {\n margin: 0 0 0.5em 0;\n font-size: 5rem;\n font-weight: 700;\n}\n@media (max-width: 500px) {\n h1 {\n font-size: 2.2rem;\n }\n}\n\nh2 {\n margin: 1.5em 0 0.5em 0;\n font-size: 2rem;\n}\n@media (max-width: 500px) {\n h2 {\n font-size: 1.8rem;\n }\n}\n\nh3 {\n margin: 1.5em 0 0.5em 0;\n font-size: 1.8rem;\n font-weight: 500;\n}\n@media (max-width: 500px) {\n h3 {\n font-size: 1.7rem;\n }\n}\n\nh4 {\n margin: 1.5em 0 0.5em 0;\n font-size: 1.6rem;\n font-weight: 500;\n}\n\nh5 {\n margin: 1.5em 0 0.5em 0;\n font-size: 1.4rem;\n font-weight: 500;\n}\n\nh6 {\n margin: 1.5em 0 0.5em 0;\n font-size: 1.4rem;\n font-weight: 500;\n}\n"],"sourceRoot":"/source/"} -------------------------------------------------------------------------------- /assets/built/syntax.css.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["global.css","syntax.css"],"names":[],"mappings":"AAqBA,8YA6EI,SAAU,AACV,UAAW,AACX,SAAU,AACV,aAAc,AACd,eAAgB,AAChB,uBAAyB,CAC5B,AACD,KACI,aAAe,CAClB,AACD,MAEI,eAAiB,CACpB,AACD,aAEI,WAAa,CAChB,AACD,oDAII,WAAY,AACZ,YAAc,CACjB,AAKD,IACI,cAAgB,CACnB,AACD,KACI,sBAAuB,AACvB,uBAAwB,AAExB,0BAA2B,AAC3B,6BAA+B,CAClC,AACD,iBAGI,kBAAoB,CACvB,AACD,EACI,4BAA8B,CACjC,AACD,iBAEI,SAAW,CACd,AACD,SAEI,eAAkB,CACrB,AACD,SAGI,iBAAmB,CACtB,AACD,GACI,eAAiB,AACjB,aAAe,CAClB,AACD,MACI,aAAe,CAClB,AACD,QAEI,kBAAmB,AACnB,cAAe,AACf,cAAe,AACf,uBAAyB,CAC5B,AACD,IACI,SAAY,CACf,AACD,IACI,aAAgB,CACnB,AACD,IACI,QAAU,CACb,AACD,eACI,eAAiB,CACpB,AACD,KACI,wBAA0B,CAC7B,AACD,kBAII,gCAAkC,AAClC,aAAe,CAClB,AACD,sCAKI,SAAU,AACV,cAAe,AACf,YAAc,CACjB,AACD,OACI,iBAAkB,AAClB,WAAa,CAChB,AACD,cAEI,mBAAqB,CACxB,AACD,oEAKI,eAAgB,AAEhB,yBAA2B,CAC9B,AACD,sCAEI,cAAgB,CACnB,AACD,iDAEI,UAAW,AACX,QAAU,CACb,AACD,MACI,kBAAoB,CACvB,AACD,YACI,YAAc,CACjB,AACD,uCAEI,sBAAuB,AACvB,SAAW,CACd,AACD,4FAEI,WAAa,CAChB,AACD,mBACI,uBAAwB,AAExB,4BAA8B,CACjC,AACD,+FAEI,uBAAyB,CAC5B,AACD,OACI,UAAW,AACX,QAAU,CACb,AACD,SACI,aAAe,CAClB,AACD,MACI,iBAAkB,AAClB,wBAA0B,CAC7B,AACD,MAEI,SAAW,CACd,AAOD,KAEI,kBAAmB,AACnB,gBAAiB,AAEjB,yCAA8C,CACjD,AACD,UANI,iBAAmB,CAqBtB,AAfD,KAEI,cAAqC,AACrC,yHAAyI,AACzI,iBAAkB,AAClB,kBAAmB,AACnB,gBAAiB,AACjB,kBAAmB,AACnB,iBAAkB,AAClB,kCAAmC,AACnC,gBAAiB,AAEjB,mCAAoC,AACpC,kCAAmC,AACnC,oCAAsC,CACzC,AAED,iBACI,iBAAkB,AAClB,kBAA+C,CAClD,AAHD,YACI,iBAAkB,AAClB,kBAA+C,CAClD,AAED,GACI,kBAAmB,AACnB,cAAe,AACf,WAAY,AACZ,qBAAsB,AACtB,UAAW,AACX,WAAY,AACZ,SAAU,AACV,4BAAsD,CACzD,AAED,kCAMI,qBAAuB,CAC1B,AAED,SACI,SAAU,AACV,UAAW,AACX,QAAU,CACb,AAED,SACI,eAAiB,CACpB,AAED,sBAKI,gBAAoB,CACvB,AAED,MAEI,mBAAoB,AACpB,mBAAqB,CACxB,AAED,wBAII,iBAAoB,CACvB,AAED,GACI,eAAiB,CACpB,AAED,GACI,kBAAoB,CACvB,AAED,GACI,cAAgB,AAChB,kBAAoB,AACpB,iBAAmB,CACtB,AAED,GACI,WAAY,AACZ,kBAAmB,AACnB,YAAa,AACb,cAAuB,AACvB,gBAAiB,AACjB,gBAAkB,CACrB,AAED,GACI,eAAkB,AAClB,eAAiB,CACpB,AAED,WACI,eAAgB,AAChB,gBAAyB,AACzB,8BAA0C,CAC7C,AAED,aACI,cAAgB,AAChB,gBAAiB,AACjB,eAAiB,CACpB,AAED,iBACI,qBAAsB,AACtB,yBAA4B,AAC5B,eAAiB,AACjB,UAAa,CAChB,AAED,wBACI,qBAAuB,CAC1B,AAED,gBACI,eAAkB,CACrB,AACD,kBACI,eAAoB,CACvB,AAED,EACI,cAAiC,AACjC,oBAAsB,CACzB,AAED,QACI,yBAA2B,CAC9B,AAED,kBAMI,aAAc,AACd,iBAAkB,AAClB,gBAAiB,AACjB,iCAAmC,CACtC,AAED,GACI,gBAAoB,AACpB,eAAgB,AAChB,eAAiB,CACpB,AACD,yBACI,GACI,gBAAkB,CACrB,CACJ,AAED,GACI,oBAAwB,AACxB,cAAgB,CACnB,AACD,yBACI,GACI,gBAAkB,CACrB,CACJ,AAED,GACI,oBAAwB,AACxB,iBAAkB,AAClB,eAAiB,CACpB,AACD,yBACI,GACI,gBAAkB,CACrB,CACJ,AAED,GACI,oBAAwB,AACxB,iBAAkB,AAClB,eAAiB,CACpB,AAQD,MALI,oBAAwB,AACxB,iBAAkB,AAClB,eAAiB,CAOpB,AC/dD,+BAAkB,kBAA0C,CAAE,AAC9D,cAAgB,aAAc,CAAE,AAChC,gBAAkB,cAAe,AAAC,wBAAyB,CAAE,AAC7D,cAAgB,aAAc,CAAE,AAChC,cAAgB,aAAc,CAAE,AAChC,cAAgB,aAAc,CAAE,AAChC,cAAgB,aAAc,CAAE,AAChC,cAAgB,aAAc,CAAE,AAIhC,4DAAiB,aAAc,CAAE,AACjC,eAAiB,iBAAkB,CAAE,AACrC,eAAiB,eAAiB,CAAE,AAEpC,8BAAiB,aAAc,CAAE,AACjC,eAAiB,aAAc,CAAE,AAGjC,6CAAiB,aAAc,CAAE,AACjC,eAAiB,aAAc,CAAE,AACjC,cAAgB,aAAc,CAAE,AAChC,cAAgB,aAAc,CAAE,AAChC,eAAiB,aAAc,CAAE,AACjC,eAAiB,aAAc,CAAE,AACjC,eAAiB,aAAc,CAAE,AACjC,eAAiB,aAAc,CAAE,AACjC,eAAiB,aAAc,CAAE,AACjC,eAAiB,aAAc,CAAE,AAEjC,8BAAiB,aAAc,CAAE,AAEjC,8BAAiB,aAAc,CAAE,AACjC,eAAiB,aAAc,CAAE,AACjC,eAAiB,aAAc,CAAE,AACjC,eAAiB,aAAc,CAAE,AACjC,eAAiB,aAAc,CAAE,AACjC,eAAiB,aAAc,CAAE,AACjC,cAAgB,aAAc,CAAE,AAIhC,4DAAiB,aAAc,CAAE,AAIjC,4DAAiB,aAAc,CAAE,AACjC,eAAiB,aAAc,CAAE,AAMjC,0FAAiB,aAAc,CAAE,AAIjC,4DAAiB,aAAc,CAAE,AACjC,eAAiB,aAAc,CAAE,AAGjC,eAAiB,aAAe,CAAE,AAClC,eAAiB,aAAe,CAAE,AAClC,eAAiB,aAAe,CAAE","file":"syntax.css","sourcesContent":["/* Variables\n/* ---------------------------------------------------------- */\n\n:root {\n /* Colours */\n --blue: #3eb0ef;\n --green: #a4d037;\n --purple: #ad26b4;\n --yellow: #fecd35;\n --red: #f05230;\n --darkgrey: #15171A;\n --midgrey: #738a94;\n --lightgrey: #c5d2d9;\n --whitegrey: #e5eff5;\n --pink: #fa3a57;\n --brown: #a3821a;\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; /* 3 */\n color: inherit; /* 1 */\n font: inherit; /* 2 */\n}\nbutton {\n overflow: visible;\n border: none;\n}\nbutton,\nselect {\n text-transform: none;\n}\nbutton,\nhtml input[type=\"button\"],\n/* 1 */\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n cursor: pointer; /* 3 */\n\n -webkit-appearance: button; /* 2 */\n}\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n padding: 0;\n border: 0;\n}\ninput {\n line-height: normal;\n}\ninput:focus {\n outline: none;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\ninput[type=\"search\"] {\n box-sizing: content-box; /* 2 */\n\n -webkit-appearance: textfield; /* 1 */\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\nlegend {\n padding: 0; /* 2 */\n border: 0; /* 1 */\n}\ntextarea {\n overflow: auto;\n}\ntable {\n border-spacing: 0;\n border-collapse: collapse;\n}\ntd,\nth {\n padding: 0;\n}\n\n\n/* ==========================================================================\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(--midgrey) l(-25%));\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: color(var(--blue) lightness(+30%));\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(--lightgrey) l(+10%));\n}\n\naudio,\ncanvas,\niframe,\nimg,\nsvg,\nvideo {\n vertical-align: middle;\n}\n\nfieldset {\n margin: 0;\n padding: 0;\n border: 0;\n}\n\ntextarea {\n resize: vertical;\n}\n\np,\nul,\nol,\ndl,\nblockquote {\n margin: 0 0 1.5em 0;\n}\n\nol,\nul {\n padding-left: 1.3em;\n padding-right: 1.5em;\n}\n\nol ol,\nul ul,\nul ol,\nol ul {\n margin: 0.5em 0 1em;\n}\n\nul {\n list-style: disc;\n}\n\nol {\n list-style: decimal;\n}\n\nli {\n margin: 0.5em 0;\n padding-left: 0.3em;\n line-height: 1.6em;\n}\n\ndt {\n float: left;\n margin: 0 20px 0 0;\n width: 120px;\n color: var(--darkgrey);\n font-weight: 500;\n text-align: right;\n}\n\ndd {\n margin: 0 0 5px 0;\n text-align: left;\n}\n\nblockquote {\n margin: 1.5em 0;\n padding: 0 1.6em 0 1.6em;\n border-left: var(--whitegrey) 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(--blue) l(-5%));\n text-decoration: none;\n}\n\na:hover {\n text-decoration: underline;\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n margin-top: 0;\n line-height: 1.15;\n font-weight: 700;\n text-rendering: optimizeLegibility;\n}\n\nh1 {\n margin: 0 0 0.5em 0;\n font-size: 5rem;\n font-weight: 700;\n}\n@media (max-width: 500px) {\n h1 {\n font-size: 2.2rem;\n }\n}\n\nh2 {\n margin: 1.5em 0 0.5em 0;\n font-size: 2rem;\n}\n@media (max-width: 500px) {\n h2 {\n font-size: 1.8rem;\n }\n}\n\nh3 {\n margin: 1.5em 0 0.5em 0;\n font-size: 1.8rem;\n font-weight: 500;\n}\n@media (max-width: 500px) {\n h3 {\n font-size: 1.7rem;\n }\n}\n\nh4 {\n margin: 1.5em 0 0.5em 0;\n font-size: 1.6rem;\n font-weight: 500;\n}\n\nh5 {\n margin: 1.5em 0 0.5em 0;\n font-size: 1.4rem;\n font-weight: 500;\n}\n\nh6 {\n margin: 1.5em 0 0.5em 0;\n font-size: 1.4rem;\n font-weight: 500;\n}\n","@import \"global.css\";\n.highlight pre { background: color(var(--darkgrey) l(-3%)); }\n.highlight .hll { background: color(var(--darkgrey) l(-3%)); }\n.highlight .c { color: #75715e } /* Comment */\n.highlight .err { color: #960050; background-color: #1e0010 } /* Error */\n.highlight .k { color: #66d9ef } /* Keyword */\n.highlight .l { color: #ae81ff } /* Literal */\n.highlight .n { color: #f8f8f2 } /* Name */\n.highlight .o { color: #f92672 } /* Operator */\n.highlight .p { color: #f8f8f2 } /* Punctuation */\n.highlight .cm { color: #75715e } /* Comment.Multiline */\n.highlight .cp { color: #75715e } /* Comment.Preproc */\n.highlight .c1 { color: #75715e } /* Comment.Single */\n.highlight .cs { color: #75715e } /* Comment.Special */\n.highlight .ge { font-style: italic } /* Generic.Emph */\n.highlight .gs { font-weight: bold } /* Generic.Strong */\n.highlight .kc { color: #66d9ef } /* Keyword.Constant */\n.highlight .kd { color: #66d9ef } /* Keyword.Declaration */\n.highlight .kn { color: #f92672 } /* Keyword.Namespace */\n.highlight .kp { color: #66d9ef } /* Keyword.Pseudo */\n.highlight .kr { color: #66d9ef } /* Keyword.Reserved */\n.highlight .kt { color: #66d9ef } /* Keyword.Type */\n.highlight .ld { color: #e6db74 } /* Literal.Date */\n.highlight .m { color: #ae81ff } /* Literal.Number */\n.highlight .s { color: #e6db74 } /* Literal.String */\n.highlight .na { color: #a6e22e } /* Name.Attribute */\n.highlight .nb { color: #f8f8f2 } /* Name.Builtin */\n.highlight .nc { color: #a6e22e } /* Name.Class */\n.highlight .no { color: #66d9ef } /* Name.Constant */\n.highlight .nd { color: #a6e22e } /* Name.Decorator */\n.highlight .ni { color: #f8f8f2 } /* Name.Entity */\n.highlight .ne { color: #a6e22e } /* Name.Exception */\n.highlight .nf { color: #a6e22e } /* Name.Function */\n.highlight .nl { color: #f8f8f2 } /* Name.Label */\n.highlight .nn { color: #f8f8f2 } /* Name.Namespace */\n.highlight .nx { color: #a6e22e } /* Name.Other */\n.highlight .py { color: #f8f8f2 } /* Name.Property */\n.highlight .nt { color: #f92672 } /* Name.Tag */\n.highlight .nv { color: #f8f8f2 } /* Name.Variable */\n.highlight .ow { color: #f92672 } /* Operator.Word */\n.highlight .w { color: #f8f8f2 } /* Text.Whitespace */\n.highlight .mf { color: #ae81ff } /* Literal.Number.Float */\n.highlight .mh { color: #ae81ff } /* Literal.Number.Hex */\n.highlight .mi { color: #ae81ff } /* Literal.Number.Integer */\n.highlight .mo { color: #ae81ff } /* Literal.Number.Oct */\n.highlight .sb { color: #e6db74 } /* Literal.String.Backtick */\n.highlight .sc { color: #e6db74 } /* Literal.String.Char */\n.highlight .sd { color: #e6db74 } /* Literal.String.Doc */\n.highlight .s2 { color: #e6db74 } /* Literal.String.Double */\n.highlight .se { color: #ae81ff } /* Literal.String.Escape */\n.highlight .sh { color: #e6db74 } /* Literal.String.Heredoc */\n.highlight .si { color: #e6db74 } /* Literal.String.Interpol */\n.highlight .sx { color: #e6db74 } /* Literal.String.Other */\n.highlight .sr { color: #e6db74 } /* Literal.String.Regex */\n.highlight .s1 { color: #e6db74 } /* Literal.String.Single */\n.highlight .ss { color: #e6db74 } /* Literal.String.Symbol */\n.highlight .bp { color: #f8f8f2 } /* Name.Builtin.Pseudo */\n.highlight .vc { color: #f8f8f2 } /* Name.Variable.Class */\n.highlight .vg { color: #f8f8f2 } /* Name.Variable.Global */\n.highlight .vi { color: #f8f8f2 } /* Name.Variable.Instance */\n.highlight .il { color: #ae81ff } /* Literal.Number.Integer.Long */\n\n.highlight .gh { } /* Generic Heading & Diff Header */\n.highlight .gu { color: #75715e; } /* Generic.Subheading & Diff Unified/Comment? */\n.highlight .gd { color: #f92672; } /* Generic.Deleted & Diff Deleted */\n.highlight .gi { color: #a6e22e; } /* Generic.Inserted & Diff Inserted */\n"],"sourceRoot":"/source/"} -------------------------------------------------------------------------------- /assets/built/screen.css: -------------------------------------------------------------------------------- 1 | @import url(https://fonts.googleapis.com/css?family=Quicksand:400,400italic&subset=latin,latin-ext); 2 | a,abbr,acronym,address,applet,article,aside,audio,big,blockquote,body,canvas,caption,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:"";content:none}img{max-width:100%}html{box-sizing:border-box;font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}*,:after,:before{box-sizing:inherit}a{background-color:transparent}a:active,a:hover{outline:0}b,strong{font-weight:700}dfn,em,i{font-style:italic}h1{margin:.67em 0;font-size:2em}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}mark{background-color:#cbd3e6}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;color:inherit;font:inherit}button{overflow:visible;border:none}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input:focus{outline:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}legend{padding:0;border:0}textarea{overflow:auto}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}html{overflow-y:scroll;font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body,html{overflow-x:hidden}body{color:#c0b2fc;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;font-size:1.5rem;line-height:1.6em;font-weight:400;font-style:normal;letter-spacing:0;text-rendering:optimizeLegibility;background:#fff;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-moz-font-feature-settings:"liga" on}::-moz-selection{text-shadow:none;background:#cbeafb}::selection{text-shadow:none;background:#cbeafb}hr{position:relative;display:block;width:100%;margin:2.5em 0 3.5em;padding:0;height:1px;border:0;border-top:1px solid #e3e9ed}audio,canvas,iframe,img,svg,video{vertical-align:middle}fieldset{margin:0;padding:0;border:0}textarea{resize:vertical}blockquote,dl,ol,p,ul{margin:0 0 1.5em}ol,ul{padding-left:1.3em;padding-right:1.5em}ol ol,ol ul,ul ol,ul ul{margin:.5em 0 1em}ul{list-style:disc}ol{list-style:decimal}li{margin:.5em 0;padding-left:.3em;line-height:1.6em}dt{float:left;margin:0 20px 0 0;width:120px;color:#15171a;font-weight:500;text-align:right}dd{margin:0 0 5px;text-align:left}blockquote{margin:1.5em 0;padding:0 1.6em;border-left:.5em solid #e5eff5}blockquote p{margin:.8em 0;font-size:1.2em;font-weight:300}blockquote small{display:inline-block;margin:.8em 0 .8em 1.5em;font-size:.9em;opacity:.8}blockquote small:before{content:"\2014 \00A0"}blockquote cite{font-weight:700}blockquote cite a{font-weight:400}a{color:#26a8ed;text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4,h5,h6{margin-top:0;line-height:1.15;font-weight:700;text-rendering:optimizeLegibility}h1{margin:0 0 .5em;font-size:5rem;font-weight:700}@media (max-width:500px){h1{font-size:2.2rem}}h2{margin:1.5em 0 .5em;font-size:2rem}@media (max-width:500px){h2{font-size:1.8rem}}h3{margin:1.5em 0 .5em;font-size:1.8rem;font-weight:500}@media (max-width:500px){h3{font-size:1.7rem}}h4{margin:1.5em 0 .5em;font-size:1.6rem;font-weight:500}h5,h6{margin:1.5em 0 .5em;font-size:1.4rem;font-weight:500}body{background:#f4f8fb}.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{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-height:100vh}.site-main{z-index:100;-ms-flex-positive:1;flex-grow:1}.outer{position:relative;padding:0 4vw}.inner{margin:0 auto;max-width:1040px;width:100%}@media (min-width:900px){.author-template .post-feed,.home-template .post-feed,.tag-template .post-feed{margin-top:-70px;padding-top:0}.home-template .site-nav{position:relative;top:-70px}}.site-header{position:relative;padding-top:12px;padding-bottom:12px;color:#fff;background:#090a0b no-repeat 50%;background-size:cover}.site-header:before{bottom:0;background:rgba(0,0,0,.18)}.site-header:after,.site-header:before{content:"";position:absolute;top:0;right:0;left:0;z-index:10;display:block}.site-header:after{bottom:auto;height:80px;background:linear-gradient(rgba(0,0,0,.1),transparent)}.site-header.no-cover:after,.site-header.no-cover:before{display:none}.site-header-content{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;padding:10vw 4vw;min-height:200px;max-height:450px;text-align:center}.site-title{z-index:10;margin:0;padding:0;font-size:3.8rem;font-weight:700}.site-logo{max-height:45px}.site-description{z-index:10;margin:0;padding:5px 0;font-size:2.2rem;font-weight:300;letter-spacing:.5px;opacity:.8}@media (max-width:500px){.site-title{font-size:3rem}.site-description{font-size:1.8rem}}.site-nav{position:relative;z-index:300;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-align:start;align-items:flex-start;height:40px;font-size:1.2rem; display: grid; grid-template-columns: 50% 50%; padding-bottom: 0;}.site-nav,.site-nav-left{display:-ms-flexbox;display:flex;overflow-y:hidden}.site-nav-left{-ms-flex-align:center;align-items:center;overflow-x:auto;-webkit-overflow-scrolling:touch;margin-right:10px;padding-bottom:80px;letter-spacing:.4px;white-space:nowrap;-ms-overflow-scrolling:touch}.site-nav-logo{-ms-flex-negative:0;flex-shrink:0;display:block;margin-right:24px;padding:11px 0;color:#fff;font-size:1.7rem;line-height:1em;font-weight:700;letter-spacing:-.5px}.site-nav-logo:hover{text-decoration:none}.site-nav-logo img{display:block;width:auto;height:21px}.nav{display:-ms-flexbox;display:flex;margin:0px;padding:0;list-style:none}.nav li{padding:0;text-transform:uppercase}.nav li,.nav li a{display:block;margin:0}.nav li a{padding:10px 12px;color:#fff;opacity:.8}.nav li a:hover{text-decoration:none;opacity:1}.site-nav-right{height:40px}.site-nav-right,.social-links{-ms-flex-negative:0;flex-shrink:0;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.social-link{display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;margin:0;padding:10px;color:#fff;opacity:.8;width: 38px;}.social-link:hover{opacity:1}.social-link svg{height:1.8rem;fill:#fff}.social-link-fb svg{height:1.5rem}.social-link-wb svg{height:1.6rem}.social-link-wb svg path{stroke:#fff}.social-link-rss svg{height:1.9rem}.subscribe-button{display:block;padding:4px 10px;border:1px solid #000;color:#000;font-size:1.2rem;line-height:1em;border-radius:10px;opacity:.8}.subscribe-button:hover{text-decoration:none;opacity:1}.rss-button{opacity:.8}.rss-button:hover{opacity:1}.rss-button svg{margin-bottom:1px;height:2.1rem;fill:#fff}@media (max-width:700px){.site-header{padding-right:0;padding-left:0}.site-nav-left{margin-right:0;padding-left:4vw}.site-nav-right{display:none}}.post-feed{position:relative;-ms-flex-wrap:wrap;flex-wrap:wrap;margin:0 -20px;padding:40px 0 0}.post-card,.post-feed{display:-ms-flexbox;display:flex; position:relative;}.post-card{-ms-flex:1 1 300px;flex:1 1 300px;-ms-flex-direction:column;flex-direction:column;overflow:hidden;margin:0 20px 40px;min-height:300px;background:#fff 50%;background-size:cover;border-radius:5px;box-shadow:8px 14px 38px rgba(39,44,49,.06),1px 3px 8px rgba(39,44,49,.03);transition:all .5s ease}.post-card:hover{box-shadow:0 0 1px rgba(39,44,49,.1),0 3px 16px rgba(39,44,49,.07);transition:all .3s ease;transform:translate3D(0,-1px,0)}.post-card-image-link{position:relative;display:block;overflow:hidden;border-radius:5px 5px 0 0}.post-card-image{width:auto;height:200px;background:#c5d2d9 no-repeat 50%;background-size:cover}.post-card-content-link{position:relative;display:block;padding:25px 25px 0;color:#15171a}.post-card-content-link:hover{text-decoration:none}.post-card-tags{display:block;margin-bottom:4px;color:#738a94;font-size:1.2rem;line-height:1.15em;font-weight:500;letter-spacing:.5px;text-transform:uppercase}.post-card-title{margin-top:0}.post-card-content{-ms-flex-positive:1;flex-grow:1;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:justify;justify-content:space-between}.post-card-excerpt{font-family:Georgia, serif}.post-card-meta{padding:0 25px 25px}.author-profile-image{margin-right:5px;width:25px;height:25px;border-radius:100%;object-fit:cover}.post-card-author{font-size:1.3rem;font-weight:500;letter-spacing:.5px;text-transform:uppercase}@media (min-width:795px){.home-template .post-feed .post-card:nth-child(6n+1):not(.no-image){-ms-flex:1 1 100%;flex:1 1 100%;-ms-flex-direction:row;flex-direction:row}.home-template .post-feed .post-card:nth-child(6n+1):not(.no-image) .post-card-image-link{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;border-radius:5px 0 0 5px}.home-template .post-feed .post-card:nth-child(6n+1):not(.no-image) .post-card-image{position:absolute;width:100%;height:100%}.home-template .post-feed .post-card:nth-child(6n+1):not(.no-image) .post-card-content{-ms-flex:0 1 357px;flex:0 1 357px}.home-template .post-feed .post-card:nth-child(6n+1):not(.no-image) h2{font-size:2.6rem}.home-template .post-feed .post-card:nth-child(6n+1):not(.no-image) p{font-size:1.8rem;line-height:1.55em}.home-template .post-feed .post-card:nth-child(6n+1):not(.no-image) .post-card-content-link{padding:30px 40px 0}.home-template .post-feed .post-card:nth-child(6n+1):not(.no-image) .post-card-meta{padding:0 40px 30px}}.home-template .site-header:after{display:none}@media (max-width:650px){.post-feed{padding-top:5vw}.post-card{margin:0 20px 5vw}}.page-template .site-main,.post-template .site-main{padding-bottom:4vw;background:#fff}.post-full{position:relative;z-index:50}.post-full-header{margin:0 auto;padding:6vw 3vw 3vw;max-width:1040px;text-align:center}@media (max-width:500px){.post-full-header{padding:14vw 3vw 10vw}}.post-full-meta{display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;color:#738a94;font-size:1.4rem;font-weight:600;text-transform:uppercase}.post-full-meta-date{color:#3eb0ef}.post-full-title{margin:0;color:#090a0b}.date-divider{display:inline-block;margin:0 6px 1px}.post-full-image{margin:0 -10vw -165px;height:800px;background:#c5d2d9 50%;background-size:cover;border-radius:5px}@media (max-width:1170px){.post-full-image{margin:0 -4vw -100px;height:600px;border-radius:0}}@media (max-width:800px){.post-full-image{height:400px}}.post-full-content{position:relative;margin:0 auto;padding:70px 100px 0;min-height:230px;font-family:Georgia, serif;font-size:2.2rem;line-height:1.6em; background:#fff}@media (max-width:1170px){.post-full-content{padding:5vw 7vw 0}}@media (max-width:800px){.post-full-content{font-size:1.9rem}}.post-full-content:before{left:-5px;transform:rotate(-5deg)}.post-full-content:after,.post-full-content:before{content:"";position:absolute;top:15px;z-index:-1;display:block;width:20px;height:200px;background:rgba(39,44,49,.15);filter:blur(5px)}.post-full-content:after{right:-5px;transform:rotate(5deg)}.no-image .post-full-content{padding-top:0}.no-image .post-full-content:after,.no-image .post-full-content:before{display:none}.kg-card-markdown{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center;max-width:920px}.footnotes,.post-full-comments,.post-full-content blockquote,.post-full-content dl,.post-full-content h1,.post-full-content h2,.post-full-content h3,.post-full-content h4,.post-full-content h5,.post-full-content h6,.post-full-content ol,.post-full-content p,.post-full-content pre,.post-full-content ul{min-width:100%}.post-full-content li{word-break:break-word}.post-full-content li p{margin:0}.post-template .kg-card-markdown>p:first-child{font-size:1.25em;line-height:1.5em}.post-full-content a{color:#000;box-shadow:inset 0 -1px 0 #3eb0ef}.post-full-content a:hover{color:#3eb0ef;text-decoration:none}.post-full-content em,.post-full-content strong{color:#090a0b}.post-full-content small{display:inline-block;line-height:1.6em}.post-full-content li:first-child{margin-top:0}.post-full-content img,.post-full-content video{display:block;margin:1.5em auto;max-width:1040px}@media (max-width:1040px){.post-full-content img,.post-full-content video{width:100%}}.post-full-content img[src$="#full"]{max-width:none;width:100vw}.post-full-content img+br+small{display:block;margin-top:-3em;margin-bottom:1.5em}.post-full-content iframe{margin:0 auto}.post-full-content blockquote{margin:0 0 1.5em;padding:0 1.5em;border-left:3px solid #3eb0ef}.post-full-content blockquote p{margin:0 0 1em;color:inherit;font-size:inherit;line-height:inherit;font-style:italic}.post-full-content blockquote p:last-child{margin-bottom:0}.post-full-content code{padding:0 5px 2px;font-size:.8em;line-height:1em;font-weight:400!important;background:#e5eff5;border-radius:3px}.post-full-content pre{overflow-x:auto;margin:1.5em 0 3em;padding:20px;max-width:100%;border:1px solid #000;color:#e5eff5;font-size:1.4rem;line-height:1.5em;background:#0e0f11;border-radius:5px}.post-full-content pre code{padding:0;font-size:inherit;line-height:inherit;background:transparent}.post-full-content pre code *{color:inherit}.post-full-content .fluid-width-video-wrapper{margin:1.5em 0 3em}.post-full-content hr{margin:4vw 0}.post-full-content hr:after{content:"";position:absolute;top:-15px;left:50%;display:block;margin-left:-10px;width:1px;height:30px;background:#e3e9ed;box-shadow:0 0 0 5px #fff;transform:rotate(45deg)}.post-full-content h1,.post-full-content h2,.post-full-content h3,.post-full-content h4,.post-full-content h5,.post-full-content h6{color:#090a0b;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif}.post-full-content h1{margin:.5em 0 .2em;font-size:4.6rem;font-weight:700}@media (max-width:500px){.post-full-content h1{font-size:2.8rem}}.post-full-content h2{margin:.5em 0 .2em;font-size:3.6rem;font-weight:700}@media (max-width:500px){.post-full-content h2{font-size:2.6rem}}.post-full-content h3{margin:.5em 0 .2em;font-size:2.8rem;font-weight:700}@media (max-width:500px){.post-full-content h3{font-size:2.2rem}}.post-full-content h4{margin:.5em 0 .2em;font-size:2.8rem;font-weight:700}@media (max-width:500px){.post-full-content h4{font-size:2.2rem}}.post-full-content h5{display:block;margin:.5em 0;padding:1em 0 1.5em;border:0;color:#3eb0ef;font-family:Georgia,serif;font-size:3.2rem;line-height:1.35em;text-align:center}@media (min-width:1180px){.post-full-content h5{max-width:1060px;width:100vw}}@media (max-width:500px){.post-full-content h5{padding:0 0 .5em;font-size:2.2rem}}.post-full-content h6{margin:.5em 0 .2em;font-size:2.3rem;font-weight:700}@media (max-width:500px){.post-full-content h6{font-size:2rem}}.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;box-shadow:none!important}@media (max-width:500px){.post-full-meta{font-size:1.2rem;line-height:1.3em}.post-full-title{font-size:2.9rem}.post-full-image{margin-bottom:4vw;height:350px}.post-full-content{padding:0}.post-full-content:after,.post-full-content:before{display:none}}.post-full-content table{display:inline-block;overflow-x:auto;margin:.5em 0 2.5em;max-width:100%;width:auto;border-spacing:0;border-collapse:collapse;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;font-size:1.6rem;white-space:nowrap;vertical-align:top;-webkit-overflow-scrolling:touch;background:radial-gradient(ellipse at left,rgba(0,0,0,.2) 0,transparent 75%) 0,radial-gradient(ellipse at right,rgba(0,0,0,.2) 0,transparent 75%) 100%;background-attachment:scroll,scroll;background-size:10px 100%,10px 100%;background-repeat:no-repeat}.post-full-content table td:first-child{background-image:linear-gradient(90deg,#fff 50%,hsla(0,0%,100%,0));background-size:20px 100%;background-repeat:no-repeat}.post-full-content table td:last-child{background-image:linear-gradient(270deg,#fff 50%,hsla(0,0%,100%,0));background-position:100% 0;background-size:20px 100%;background-repeat:no-repeat}.post-full-content table th{color:#15171a;font-size:1.2rem;font-weight:700;letter-spacing:.2px;text-align:left;text-transform:uppercase;background-color:#f4f8fb}.post-full-content table td,.post-full-content table th{padding:6px 12px;border:1px solid #e3ecf3}.subscribe-form{margin:1.5em 0;padding:6.5vw 7vw 7vw;border:1px solid #edf4f8;text-align:center;background:#f4f8fb;border-radius:7px}.subscribe-form-title{margin:0 0 3px;padding:0;color:#15171a;font-size:3.5rem;line-height:1;font-weight:700}.subscribe-form p{margin-bottom:1em;color:#738a94;font-size:2.2rem;line-height:1.55em;letter-spacing:.2px}.subscribe-form form{display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;margin:0 auto;max-width:420px}.subscribe-form .form-group{-ms-flex-positive:1;flex-grow:1}.subscribe-email{display:block;padding:10px;width:100%;border:1px solid #dae2e7;color:#738a94;font-size:1.8rem;line-height:1em;font-weight:400;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;border-radius:5px;transition:border-color .15s linear;-webkit-appearance:none}.subscribe-form button{display:inline-block;margin:0 0 0 10px;padding:0 20px;height:41px;outline:none;color:#fff;font-size:1.5rem;line-height:37px;font-weight:400;text-align:center;text-shadow:0 -1px 0 rgba(0,0,0,.1);background:linear-gradient(#4fb7f0,#29a0e0 60%,#29a0e0 90%,#36a6e2);border-radius:5px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.14);-webkit-font-smoothing:subpixel-antialiased}.subscribe-form button:active,.subscribe-form button:focus{background:#209cdf}@media (max-width:650px){.subscribe-form-title{font-size:2.4rem}.subscribe-form p{font-size:1.6rem}}@media (max-width:500px){.subscribe-form form{-ms-flex-direction:column;flex-direction:column}.subscribe-form .form-group{width:100%}.subscribe-form button{margin:10px 0 0;width:100%}}.post-full-footer{-ms-flex-pack:justify;justify-content:space-between;margin:0 auto;padding:3vw 0 6vw;max-width:840px}.author-card,.post-full-footer{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.author-card .author-profile-image{margin-right:15px;width:60px;height:60px}.author-card-name{margin:0 0 2px;padding:0;font-size:2rem}.author-card-name a{color:#15171a;font-weight:700}.author-card-name a:hover{text-decoration:none}.author-card-content p{margin:0;color:#738a94;line-height:1.3em}.post-full-footer-right{-ms-flex-negative:0;flex-shrink:0;margin-left:20px}.author-card-button{display:block;padding:9px 16px;border:1px solid #aebbc1;color:#738a94;font-size:1.2rem;line-height:1;font-weight:500;border-radius:20px;transition:all .2s ease}.author-card-button:hover{border-color:#3eb0ef;color:#3eb0ef;text-decoration:none}.post-full-comments{margin:0 auto;max-width:840px}.read-next-feed{-ms-flex-wrap:wrap;flex-wrap:wrap;margin:0 -20px;padding:40px 0 0}.read-next-card,.read-next-feed{display:-ms-flexbox;display:flex}.read-next-card{position:relative;-ms-flex:1 1 300px;flex:1 1 300px;-ms-flex-direction:column;flex-direction:column;overflow:hidden;margin:0 20px 40px;padding:25px;color:#fff;background:#15171a 50%;background-size:cover;border-radius:5px;box-shadow:8px 14px 38px rgba(39,44,49,.06),1px 3px 8px rgba(39,44,49,.03)}.read-next-card:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;display:block;background:linear-gradient(135deg,rgba(0,40,60,.8),rgba(0,20,40,.7));border-radius:5px;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.read-next-card-header{position:relative;z-index:50;padding-top:20px;text-align:center}.read-next-card-header-sitetitle{display:block;font-size:1.3rem;line-height:1.3em;opacity:.8}.read-next-card-header-title{margin:0;padding:0 20px;color:#fff;font-size:3rem;line-height:1.2em;letter-spacing:1px}.read-next-card-header-title a{color:#fff;font-weight:300;text-decoration:none}.read-next-card-header-title a:hover{text-decoration:none}.read-next-divider{position:relative;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;height:80px}.read-next-divider svg{width:40px;fill:transparent;stroke:#fff;stroke-width:.5px;stroke-opacity:.65}.read-next-card-content{position:relative;z-index:50;-ms-flex-positive:1;flex-grow:1;display:-ms-flexbox;display:flex;font-size:1.7rem}.read-next-card-content ul{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;margin:0 auto;padding:0;text-align:center;list-style:none}.read-next-card-content li{margin:0;padding:0;font-size:1.6rem;line-height:1.25em;font-weight:200;letter-spacing:-.5px}.read-next-card-content li a{display:block;padding:20px 0;border-bottom:1px solid hsla(0,0%,100%,.3);color:#fff;font-weight:500;vertical-align:top;transition:opacity .3s ease}.read-next-card-content li:first-of-type a{padding-top:10px}.read-next-card-content li a:hover{opacity:1}.read-next-card-footer{position:relative;margin:15px 0 3px;text-align:center}.read-next-card-footer a{color:#fff}.floating-header{visibility:hidden;position:fixed;top:0;right:0;left:0;z-index:1000;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;height:60px;border-bottom:1px solid rgba(0,0,0,.06);background:hsla(0,0%,100%,.95);transition:all .5s cubic-bezier(.19,1,.22,1);transform:translate3d(0,-120%,0)}.floating-active{visibility:visible;transition:all .5s cubic-bezier(.22,1,.27,1);transform:translateZ(0)}.floating-header-logo{overflow:hidden;margin:0 0 0 20px;font-size:1.6rem;line-height:1em;letter-spacing:-1px;text-overflow:ellipsis;white-space:nowrap}.floating-header-logo a{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;color:#15171a;line-height:1.1em;font-weight:700}.floating-header-logo a:hover{text-decoration:none}.floating-header-logo img{margin:0 10px 0 0;max-height:20px}.floating-header-divider{margin:0 5px;line-height:1em}.floating-header-title{-ms-flex:1;flex:1;overflow:hidden;margin:0;color:#2e2e2e;font-size:1.6rem;line-height:1.3em;font-weight:700;text-overflow:ellipsis;white-space:nowrap}.floating-header-share{-ms-flex-pack:end;justify-content:flex-end;padding-left:2%;font-size:1.3rem;line-height:1}.floating-header-share,.floating-header-share a{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.floating-header-share a{-ms-flex-pack:center;justify-content:center}.floating-header-share svg{width:auto;height:16px;fill:#fff}.floating-header-share-label{-ms-flex-negative:0;flex-shrink:0;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;margin-right:10px;color:rgba(0,0,0,.7);font-weight:500}.floating-header-share-label svg{margin:0 5px 0 10px;width:18px;height:18px;stroke:rgba(0,0,0,.7);transform:rotate(90deg)}.floating-header-share-fb,.floating-header-share-tw{display:block;-ms-flex-align:center;-ms-grid-row-align:center;align-items:center;width:60px;height:60px;color:#fff;line-height:48px;text-align:center;transition:all .5s cubic-bezier(.19,1,.22,1)}.floating-header-share-tw{background:#33b1ff}.floating-header-share-fb{background:#005e99}.progress{position:absolute;right:0;bottom:-1px;left:0;width:100%;height:2px;border:none;color:#3eb0ef;background:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.progress::-webkit-progress-bar{background-color:transparent}.progress::-webkit-progress-value{background-color:#3eb0ef}.progress::-moz-progress-bar{background-color:#3eb0ef}.progress-container{position:absolute;top:0;left:0;display:block;width:100%;height:2px;background-color:transparent}.progress-bar{display:block;width:50%;height:inherit;background-color:#3eb0ef}@media (max-width:900px){.floating-header{height:40px}.floating-header-logo,.floating-header-title{font-size:1.5rem}.floating-header-share-fb,.floating-header-share-tw{width:40px;height:40px;line-height:38px}}@media (max-width:800px){.floating-header-logo{margin-left:10px}.floating-header-logo a{color:#2e2e2e}.floating-header-divider,.floating-header-title{visibility:hidden}}@media (max-width:450px){.floating-header-share-label{display:none}}.site-header-content .author-profile-image{z-index:10;-ms-flex-negative:0;flex-shrink:0;margin:0 0 20px;width:100px;height:100px;box-shadow:0 0 0 6px hsla(0,0%,100%,.1)}.site-header-content .author-bio{z-index:10;-ms-flex-negative:0;flex-shrink:0;margin:5px 0 10px;max-width:600px;font-size:2rem;line-height:1.3em;font-weight:300;letter-spacing:.5px;opacity:.8}.site-header-content .author-meta{z-index:10;-ms-flex-negative:0;flex-shrink:0;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;margin:0 0 10px;font-family:Georgia,serif;font-style:italic}.site-header-content .author-location svg{height:1.9rem;stroke:#fff}.site-header-content .bull{display:inline-block;margin:0 12px;opacity:.5}.site-header-content .social-link:first-of-type{padding-left:4px}@media (max-width:500px){.site-header-content .author-bio{font-size:1.8rem;line-height:1.15em;letter-spacing:0}.author-location,.author-stats{display:none}}.error-template .site-main{padding:7vw 4vw}.site-nav-center{display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;text-align:center}.site-nav-center .site-nav-logo{margin-right:0}.error-message{text-align:center}.error-code{margin:0;font-size:12vw;line-height:1em;letter-spacing:-5px;opacity:.3}.error-description{margin:0;color:#738a94;font-size:3rem;line-height:1.3em;font-weight:400}@media (max-width:800px){.error-description{margin:5px 0 0;font-size:1.8rem}}.error-link{display:inline-block;margin-top:5px}.error-template .post-feed{padding-top:0}.subscribe-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9000;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;background:rgba(0,25,40,.97);opacity:0;transition:opacity .2s ease-in;pointer-events:none;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.subscribe-overlay:target{opacity:1;pointer-events:auto}.subscribe-overlay-content{position:relative;z-index:9999;margin:0 0 5vw;padding:4vw;color:#fff;text-align:center}.subscribe-overlay-logo{position:fixed;top:23px;left:30px;height:30px}.subscribe-overlay-title{display:inline-block;margin:0 0 10px;font-size:6rem;line-height:1.15em}.subscribe-overlay-description{margin:0 auto 50px;max-width:650px;font-family:Georgia,serif;font-size:3rem;line-height:1.3em;font-weight:300;opacity:.8}.subscribe-overlay form{display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;margin:0 auto;max-width:500px}.subscribe-overlay .form-group{-ms-flex-positive:1;flex-grow:1}.subscribe-overlay .subscribe-email{display:block;padding:14px 20px;width:100%;border:none;color:#738a94;font-size:2rem;line-height:1em;font-weight:400;letter-spacing:.5px;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;border-radius:8px;transition:border-color .15s linear;-webkit-appearance:none}.subscribe-email:focus{outline:0;border-color:#becdd5}.subscribe-overlay button{display:inline-block;margin:0 0 0 15px;padding:0 25px;height:52px;outline:none;color:#fff;font-size:1.7rem;line-height:37px;font-weight:400;text-align:center;text-shadow:0 -1px 0 rgba(0,0,0,.1);background:linear-gradient(#4fb7f0,#29a0e0 60%,#29a0e0 90%,#36a6e2);border-radius:8px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.14);-webkit-font-smoothing:subpixel-antialiased}.subscribe-overlay button:active,.subscribe-overlay button:focus{background:#209cdf}.subscribe-overlay-close{position:absolute;top:0;right:0;bottom:0;left:0;display:block}.subscribe-overlay-close:before{transform:rotate(45deg)}.subscribe-overlay-close:after,.subscribe-overlay-close:before{content:"";position:absolute;top:40px;right:25px;display:block;width:30px;height:2px;background:#fff;opacity:.8}.subscribe-overlay-close:after{transform:rotate(-45deg)}.subscribe-overlay-close:hover{cursor:default}.site-footer{position:relative;padding-top:20px;padding-bottom:60px;color:#fff;background:#000}.site-footer-content{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-align:center;align-items:center;font-size:1.3rem}.site-footer-content,.site-footer-content a{color:hsla(0,0%,100%,.7)}.site-footer-content a:hover{color:#fff;text-decoration:none}.site-footer-nav{display:-ms-flexbox;display:flex; align-items: center}.site-footer-nav a{position:relative;margin-left:20px}.site-footer-nav a:before{content:"";position:absolute;top:11px;left:-11px;display:block;width:2px;height:2px;background:#fff;border-radius:100%}.site-footer-nav a:first-of-type:before{display:none}@media (max-width:650px){.site-footer-content{-ms-flex-direction:column;flex-direction:column}.site-footer-nav a:first-child{margin-left:0}} 3 | 4 | .kg-card-markdown, .post-feed{font-family: Quicksand, Segoe UI, sans-serif;} 5 | 6 | .social-links{display: flex;} 7 | nav li:hover{background-color: rgba(0,0,0, 0.9); border-radius: 4px} 8 | li{list-style-type: none} 9 | .tempest {background-color: black; color: white;} 10 | .center {display: flex; justify-content: center;} 11 | .tags {display: flex; justify-content: space-around;} 12 | .p-category{background:#fafafa; border-radius: 4px; padding: 5px} 13 | body::-webkit-scrollbar{width:10px} 14 | body::-webkit-scrollbar-thumb{border-radius:5px;background:rgba(0,0,0,0.2)}/*# sourceMappingURL=screen.css.map */ 15 | html {scroll-behavior: smooth;} 16 | 17 | #app { 18 | position: relative; 19 | z-index: 0 20 | } 21 | 22 | .flexbox-container { 23 | display: flex; 24 | margin-left:-25px; 25 | } 26 | 27 | .flexbox-container > span { 28 | width: 50%; 29 | padding: 5px; 30 | display: flex; 31 | justify-content: flex-end; 32 | } 33 | 34 | .flexbox-container > span:nth-child(2) { 35 | display:flex; 36 | justify-content:flex-start; 37 | } 38 | .reading-time { 39 | flex-shrink: 0; 40 | margin-left: 20px; 41 | color: var(--midgrey); 42 | font-size: 1.2rem; 43 | line-height: 33px; 44 | font-weight: 500; 45 | letter-spacing: 0.5px; 46 | text-transform: uppercase; 47 | } 48 | --------------------------------------------------------------------------------