diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..ebe51d3 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,12 @@ +# EditorConfig is awesome: https://EditorConfig.org + +# top-most EditorConfig file +root = true + +[*] +indent_style = space +indent_size = 2 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = false +insert_final_newline = false \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0781a4b --- /dev/null +++ b/.gitignore @@ -0,0 +1,26 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +.DS_Store +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +.gradle +build +dist diff --git a/archives.ftl b/archives.ftl deleted file mode 100644 index 95ca317..0000000 --- a/archives.ftl +++ /dev/null @@ -1,83 +0,0 @@ -<#include "default.ftl"> -<@default title="文章归档 | ${blog_title!}" canonical="${archives_url!}" body_class="page-template"> - -<#-- The tag above means: insert everything in this file -into the {body} of the default.hbs template --> - -<#-- The big featured header, it uses blog cover image as a BG if available --> - - -<#-- Everything inside the #post tags pulls data from the post --> -
-
- -
- -
-

文章归档

-
- - <#if settings.archives_cover??> -
-
- - -
-
-

分类

- - -

标签

- - -

归档

- <@postTag method="archiveMonth"> - <#list archives as archive> -

${archive.year?c}年${archive.month}月

-
    - <#list archive.posts?sort_by("createTime")?reverse as post> -
  • - ${post.createTime?string('MM月dd日')}:${post.title!} -
  • - -
- - -
-
- -
- -
-
- -<#-- The #contentFor helper here will send everything inside it up to the matching #block helper found in default.hbs --> - -<@scripts> - - diff --git a/assets/built/infinitescroll.js b/assets/built/infinitescroll.js deleted file mode 100644 index 4961279..0000000 --- a/assets/built/infinitescroll.js +++ /dev/null @@ -1 +0,0 @@ -$(function($){var currentPage=1;var pathname=window.location.pathname;var $document=$(document);var $result=$(".post-feed");var buffer=300;var ticking=false;var isLoading=false;var lastScrollY=window.scrollY;var lastWindowHeight=window.innerHeight;var lastDocumentHeight=$document.height();function onScroll(){lastScrollY=window.scrollY;requestTick();}function onResize(){lastWindowHeight=window.innerHeight;lastDocumentHeight=$document.height();requestTick();}function requestTick(){if(!ticking){requestAnimationFrame(infiniteScroll);}ticking=true;}function sanitizePathname(path){var paginationRegex=/(?:page\/)(\d)(?:\/)$/i;path=path.replace(/#(.*)$/g,"").replace("////g","/");if(path.match(paginationRegex)){currentPage=parseInt(path.match(paginationRegex)[1]);path=path.replace(paginationRegex,"");}return path;}function infiniteScroll(){pathname=sanitizePathname(pathname);if(isLoading){return;}if(lastScrollY+lastWindowHeight<=lastDocumentHeight-buffer){ticking=false;return;}if(currentPage>=maxPages){window.removeEventListener("scroll",onScroll,{passive:true});window.removeEventListener("resize",onResize);return;}isLoading=true;currentPage+=1;if(pathname.charAt(pathname.length-1)!="/"){pathname=pathname+"/";}var nextPage=pathname+"page/"+currentPage+"/";console.log(pathname);console.log(nextPage);$.get(nextPage,function(content){var parse=document.createRange().createContextualFragment(content);var posts=parse.querySelectorAll(".post");if(posts.length){[].forEach.call(posts,function(post){$result[0].appendChild(post);});}}).fail(function(xhr){if(xhr.status===404){window.removeEventListener("scroll",onScroll,{passive:true});window.removeEventListener("resize",onResize);}}).always(function(){lastDocumentHeight=$document.height();isLoading=false;ticking=false;});}window.addEventListener("scroll",onScroll,{passive:true});window.addEventListener("resize",onResize);infiniteScroll();}); \ No newline at end of file diff --git a/assets/built/screen.css b/assets/built/screen.css deleted file mode 100644 index 73a3594..0000000 --- a/assets/built/screen.css +++ /dev/null @@ -1,2 +0,0 @@ -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:#fdffb6}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}ol,ul{max-width:100%}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}.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:0 0 0 -12px;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-links a:last-of-type{padding-right:20px}.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}.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 #fff;color:#fff;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}.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:8px 28px 50px rgba(39,44,49,.07),1px 6px 12px rgba(39,44,49,.04);transition:all .4s ease;transform:translate3D(0,-1px,0) scale(1.02)}.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;-ms-flex-positive:1;flex-grow:1;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{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-align:end;align-items:flex-end;padding:0 25px 25px}.author-profile-image,.avatar-wrapper{display:block;width:100%;height:100%;background:#e3e9ed;border-radius:100%;object-fit:cover}.post-card-meta .avatar-wrapper,.post-card-meta .profile-image-wrapper{position:relative}.author-list{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap-reverse;flex-wrap:wrap-reverse;margin:0;padding:0;list-style:none}.author-list-item{position:relative;-ms-flex-negative:0;flex-shrink:0;margin:0;padding:0}.author-list-item:first-child{z-index:10}.author-list-item:nth-child(2){z-index:9}.author-list-item:nth-child(3){z-index:8}.author-list-item:nth-child(4){z-index:7}.author-list-item:nth-child(5){z-index:6}.author-list-item:nth-child(6){z-index:5}.author-list-item:nth-child(7){z-index:4}.author-list-item:nth-child(8){z-index:3}.author-list-item:nth-child(9){z-index:2}.author-list-item:nth-child(10){z-index:1}.static-avatar{margin:0 -5px;width:34px;height:34px}.moving-avatar,.static-avatar{display:block;overflow:hidden;border:2px solid #fff;border-radius:100%}.moving-avatar{margin:0 -6px;width:56px;height:56px;transition:all .5s cubic-bezier(.4,.01,.165,.99) .7s}@media (min-width:800px){.author-list:hover .moving-avatar{margin:0;transition:all .3s cubic-bezier(.4,.01,.165,.99)}}.author-name-tooltip{position:absolute;bottom:105%;z-index:999;display:block;padding:2px 8px;color:#fff;font-size:1.2rem;letter-spacing:.2px;white-space:nowrap;background:#15171a;border-radius:3px;box-shadow:0 12px 26px rgba(39,44,49,.08),1px 3px 8px rgba(39,44,49,.03);opacity:0;transition:all .3s cubic-bezier(.4,.01,.165,.99);transform:translateY(6px);pointer-events:none}.author-list-item:hover .author-name-tooltip{opacity:1;transform:translateY(0)}@media (max-width:650px){.author-name-tooltip{display:none}}.reading-time{-ms-flex-negative:0;flex-shrink:0;margin-left:20px;color:#738a94;font-size:1.2rem;line-height:33px;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}.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-full-content a{color:#000;word-break:break-word;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;height:auto}@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;text-align:center}.post-full-content iframe{margin:0 auto!important}.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 p code{word-break:break-all}.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 :not(span){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;-ms-flex-align:center;align-items:center;margin:0 auto;padding:3vw 0 6vw;max-width:840px}.author-card,.post-full-footer{display:-ms-flexbox;display:flex}.author-card .author-profile-image,.author-card .avatar-wrapper{width:60px;height:60px}.author-card-name{margin:8px 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-authors{-ms-flex-positive:1;flex-grow:1;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center;margin-top:20px;padding-top:40px;border-top:1px solid #e3e9ed}.post-full-authors-content{margin-bottom:20px}.post-full-authors-content p{margin-bottom:0;color:#738a94;font-size:1.4rem;letter-spacing:.2px;text-align:center;text-transform:uppercase}.post-full-authors-content a{display:inline-block;color:#424852;font-size:1.4rem;font-weight:600;text-transform:uppercase}.post-full-footer .author-list{-ms-flex-pack:center;justify-content:center;padding:10px 20px}.author-card .author-profile-image,.author-card .avatar-wrapper{position:relative;margin-right:15px}.author-list-item .author-card{position:absolute;bottom:130%;left:50%;z-index:300;display:block;margin-left:-160px;width:320px;font-size:1.4rem;letter-spacing:.2px;background:#fff;border-radius:6px;box-shadow:0 12px 26px rgba(39,44,49,.08),1px 3px 8px rgba(39,44,49,.03);opacity:0;transition:all .3s cubic-bezier(.4,.01,.165,.99);transform:scale(.98) translateY(15px);pointer-events:none}.author-list-item .author-card:before{content:"";position:absolute;top:100%;left:50%;display:block;margin-left:-12px;width:0;height:0;border-top:12px solid #fff;border-right:12px solid transparent;border-left:12px solid transparent}.author-list-item .author-card.hovered{opacity:1;transform:scale(1) translateY(0);pointer-events:auto}.author-card .basic-info{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center;padding:30px 20px 20px;color:#fff;background:#15171a;border-radius:6px 6px 0 0}.author-card .basic-info h2{margin:1em 0 .5em}.author-card .bio{padding:20px 20px 0}@media (max-width:650px){.author-list-item .author-card{display:none}}.basic-info .author-profile-image,.basic-info .avatar-wrapper{margin:0;width:88px;height:88px;border:none}.basic-info .avatar-wrapper{position:relative;background:rgba(229,239,245,.1)}.basic-info .avatar-wrapper svg{margin:0;width:88px;height:88px;opacity:.15}.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}}.post-content{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center;max-width:920px}.post-template .post-content>p:first-child{font-size:1.25em;line-height:1.5em}.post-full-content .kg-image{max-width:100%}.post-full-image+.post-full-content .kg-content :first-child .kg-image{width:100%}.post-full-content .kg-width-wide .kg-image{max-width:1040px}.post-full-content .kg-width-full .kg-image{max-width:100vw}.post-full-content figure{margin:1.5em 0 3em}.post-full-content figure img{margin:0}.post-full-content figcaption{margin:1em 0 0;font-size:80%;line-height:1.6em;text-align:center}.kg-width-full figcaption{padding:0 1.5em}.kg-embed-card{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center;min-width:100%}.kg-embed-card .fluid-width-video-wrapper{margin:0}@media (max-width:1040px){.post-full-content .kg-width-full .kg-image{width:100vw}}.kg-gallery-container{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;max-width:1040px;width:100vw}.kg-gallery-row{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;-ms-flex-pack:center;justify-content:center}.kg-gallery-image img{display:block;margin:0;width:100%;height:100%}.kg-gallery-row:not(:first-of-type){margin:.75em 0 0}.kg-gallery-image:not(:first-of-type){margin:0 0 0 .75em}.kg-gallery-card+.kg-gallery-card,.kg-gallery-card+.kg-image-card.kg-width-wide,.kg-image-card.kg-width-wide+.kg-gallery-card,.kg-image-card.kg-width-wide+.kg-image-card.kg-width-wide{margin:-2.25em 0 3em}.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}.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}} -/*# sourceMappingURL=screen.css.map */ diff --git a/assets/css/screen.css b/assets/css/screen.css deleted file mode 100644 index e407063..0000000 --- a/assets/css/screen.css +++ /dev/null @@ -1,2271 +0,0 @@ -/* Table of Contents -/* ------------------------------------------------------------ - -This is a development CSS file which is built to a minified -production stylesheet in assets/built/screen.css - -1. Global Styles -2. Layout -3. Special Templates -4. Site Header -5. Site Navigation -6. Post Feed -7. Single Post - 7.1. Subscribe Form - 7.2. Post Footer - 7.2.1 Single Author Byline - 7.2.2 Multiple Author Byline - 7.3. Comments - 7.4. Related Posts - 7.5. Floating Header - 7.6. Koenig Styles -8. Author Template -9. Error Template -10. Subscribe Overlay -11. Site Footer - -*/ - - -/* 1. Global - Set up the things -/* ---------------------------------------------------------- */ -@import "global.css"; - -body { - background: #f4f8fb; -} - -.img { - display: block; - width: 100%; - height: 100%; - background-position: center center; - background-size: cover; - border-radius: 100%; -} - -.hidden { - visibility: hidden; - position: absolute; - text-indent: -9999px; -} - - -/* 2. Layout - Page building blocks -/* ---------------------------------------------------------- */ - -.site-wrapper { - display: flex; - flex-direction: column; - min-height: 100vh; -} - -.site-main { - z-index: 100; - flex-grow: 1; -} - -/* Full width page blocks */ -.outer { - position: relative; - padding: 0 4vw; -} - -/* Centered content container blocks */ -.inner { - margin: 0 auto; - max-width: 1040px; - width: 100%; -} - -/* Usage: - -
-
- Centered content -
-
- -*/ - -/* 3. Special Template Styles -/* ---------------------------------------------------------- */ - -@media (min-width: 900px) { - .home-template .post-feed, - .tag-template .post-feed, - .author-template .post-feed { - margin-top: -70px; - padding-top: 0; - } - .home-template .site-nav { - position: relative; - top: -70px; - } -} - - -/* 4. Site Header -/* ---------------------------------------------------------- */ - -.site-header { - position: relative; - padding-top: 12px; - padding-bottom: 12px; - color: #fff; - background: color(var(--darkgrey) l(-5%)) no-repeat center center; - background-size: cover; -} - -.site-header:before { - content: ""; - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 10; - display: block; - background: rgba(0,0,0,0.18); -} - -.site-header:after { - content: ""; - position: absolute; - top: 0; - right: 0; - bottom: auto; - left: 0; - z-index: 10; - display: block; - height: 80px; - background: linear-gradient(rgba(0,0,0,0.1),rgba(0,0,0,0)); -} - -.site-header.no-cover:before, -.site-header.no-cover:after { - display: none; -} - -.site-header-content { - display: flex; - flex-direction: column; - justify-content: 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: 0.5px; - opacity: 0.8; -} - -@media (max-width: 500px) { - .site-title { - font-size: 3rem; - } - .site-description { - font-size: 1.8rem; - } -} - - -/* 5. Site Navigation -/* ---------------------------------------------------------- */ - -.site-nav { - position: relative; - z-index: 300; - display: flex; - justify-content: space-between; - align-items: flex-start; - overflow-y: hidden; - height: 40px; - font-size: 1.2rem; -} - -.site-nav-left { - display: flex; - align-items: center; - overflow-x: auto; - overflow-y: hidden; - -webkit-overflow-scrolling: touch; - margin-right: 10px; - padding-bottom: 80px; - letter-spacing: 0.4px; - white-space: nowrap; - - -ms-overflow-scrolling: touch; -} - -/* Site Nav Hack Explanation (above): - -What's happening above it .site-nav-left is set to overflow-x and allow sideways scrolling, so that when there isn't enough space for all nav items (either due to lots of nav items, or a small viewport), you can still scroll side-to-side to reach them. - -The knock-on effect of this is ugly browser-scroll bars at the bottom, so 80px of padding-bottom and a 40px fixed height parent (.site-nav) hides that entirely. Slightly hacky code. But nice clean end-result. - -*/ - -.site-nav-logo { - flex-shrink: 0; - display: block; - margin-right: 24px; - padding: 11px 0; - color: #fff; - font-size: 1.7rem; - line-height: 1em; - font-weight: bold; - letter-spacing: -0.5px; -} - -.site-nav-logo:hover { - text-decoration: none; -} - -.site-nav-logo img { - display: block; - width: auto; - height: 21px; -} - -.nav { - display: flex; - margin: 0 0 0 -12px; - padding: 0; - list-style: none; -} - -.nav li { - display: block; - margin: 0; - padding: 0; - text-transform: uppercase; -} - -.nav li a { - display: block; - margin: 0; - padding: 10px 12px; - color: #fff; - opacity: 0.8; -} - -.nav li a:hover { - text-decoration: none; - opacity: 1; -} - -.site-nav-right { - flex-shrink: 0; - display: flex; - align-items: center; - height: 40px; -} - -.social-links { - flex-shrink: 0; - display: flex; - align-items: center; -} - -.social-links a:last-of-type { - padding-right: 20px; -} - -.social-link { - display: flex; - justify-content: center; - align-items: center; - margin: 0; - padding: 10px; - color: #fff; - opacity: 0.8; -} - -.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: #fff 1px solid; - color: #fff; - font-size: 1.2rem; - line-height: 1em; - border-radius: 10px; - opacity: 0.8; -} - -.subscribe-button:hover { - text-decoration: none; - opacity: 1; -} - -.rss-button { - opacity: 0.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; - } -} - - -/* 6. Post Feed -/* ---------------------------------------------------------- */ - -.post-feed { - position: relative; - display: flex; - flex-wrap: wrap; - margin: 0 -20px; - padding: 40px 0 0 0; -} - -.post-card { - flex: 1 1 300px; - display: flex; - flex-direction: column; - overflow: hidden; - margin: 0 20px 40px; - min-height: 300px; - background: #fff center center; - background-size: cover; - border-radius: 5px; - box-shadow: rgba(39,44,49,0.06) 8px 14px 38px, rgba(39, 44, 49, 0.03) 1px 3px 8px; - transition: all 0.5s ease; -} - -.post-card:hover { - box-shadow: rgba(39,44,49,0.07) 8px 28px 50px, rgba(39, 44, 49, 0.04) 1px 6px 12px; - transition: all 0.4s ease; - transform: translate3D(0, -1px, 0) scale(1.02); -} - -.post-card-image-link { - position: relative; - display: block; - overflow: hidden; - border-radius: 5px 5px 0 0; -} - -.post-card-image { - width: auto; - height: 200px; - background: var(--lightgrey) no-repeat center center; - background-size: cover; -} - -.post-card-content-link { - position: relative; - flex-grow: 1; - display: block; - padding: 25px 25px 0; - color: var(--darkgrey); -} - -.post-card-content-link:hover { - text-decoration: none; -} - -.post-card-tags { - display: block; - margin-bottom: 4px; - color: var(--midgrey); - font-size: 1.2rem; - line-height: 1.15em; - font-weight: 500; - letter-spacing: 0.5px; - text-transform: uppercase; -} - -.post-card-title { - margin-top: 0; -} - -.post-card-content { - flex-grow: 1; - display: flex; - flex-direction: column; - justify-content: space-between; -} - -.post-card-excerpt { - font-family: Georgia, serif; -} - -.post-card-meta { - display: flex; - justify-content: space-between; - align-items: flex-end; - padding: 0 25px 25px; -} - -.author-profile-image, -.avatar-wrapper { - display: block; - width: 100%; - height: 100%; - background: color(var(--lightgrey) l(+10%)); - border-radius: 100%; - - object-fit: cover; -} - -.post-card-meta .profile-image-wrapper, -.post-card-meta .avatar-wrapper { - position: relative; -} - -.author-list { - display: flex; - flex-wrap: wrap-reverse; - margin: 0; - padding: 0; - list-style: none; -} - -.author-list-item { - position: relative; - flex-shrink: 0; - margin: 0; - padding: 0; -} - -.author-list-item:nth-child(1) { - z-index: 10; -} -.author-list-item:nth-child(2) { - z-index: 9; -} -.author-list-item:nth-child(3) { - z-index: 8; -} -.author-list-item:nth-child(4) { - z-index: 7; -} -.author-list-item:nth-child(5) { - z-index: 6; -} -.author-list-item:nth-child(6) { - z-index: 5; -} -.author-list-item:nth-child(7) { - z-index: 4; -} -.author-list-item:nth-child(8) { - z-index: 3; -} -.author-list-item:nth-child(9) { - z-index: 2; -} -.author-list-item:nth-child(10) { - z-index: 1; -} - -.static-avatar { - display: block; - overflow: hidden; - margin: 0 -5px; - width: 34px; - height: 34px; - border: #fff 2px solid; - border-radius: 100%; -} - -.moving-avatar { - display: block; - overflow: hidden; - margin: 0 -6px; - width: 56px; - height: 56px; - border: #fff 2px solid; - border-radius: 100%; - transition: all 0.5s cubic-bezier(0.4, 0.01, 0.165, 0.99) 0.7s; -} - -@media (min-width: 800px) { - .author-list:hover .moving-avatar { - margin: 0; - transition: all 0.3s cubic-bezier(0.4, 0.01, 0.165, 0.99); - } -} - -.author-name-tooltip { - position: absolute; - bottom: 105%; - z-index: 999; - display: block; - padding: 2px 8px; - color: white; - font-size: 1.2rem; - letter-spacing: 0.2px; - white-space: nowrap; - background: var(--darkgrey); - border-radius: 3px; - box-shadow: rgba(39,44,49,0.08) 0 12px 26px, rgba(39, 44, 49, 0.03) 1px 3px 8px; - opacity: 0; - transition: all 0.3s cubic-bezier(0.4, 0.01, 0.165, 0.99); - transform: translateY(6px); - pointer-events: none; -} - -.author-list-item:hover .author-name-tooltip { - opacity: 1.0; - transform: translateY(0px); -} - -@media (max-width: 650px) { - .author-name-tooltip { - display: none; - } -} - -.reading-time { - flex-shrink: 0; - margin-left: 20px; - color: var(--midgrey); - font-size: 1.2rem; - line-height: 33px; - font-weight: 500; - letter-spacing: 0.5px; - text-transform: uppercase; -} - -/* Special Styling for home page grid (below): - -The first (most recent) post in the list is styled to be bigger than the others and take over the full width of the grid to give it more emphasis. Wrapped in a media query to make sure this only happens on large viewports / desktop-ish devices. - - */ - -@media (min-width: 795px) { - .home-template .post-feed .post-card:nth-child(6n+1):not(.no-image) { - flex: 1 1 100%; - flex-direction: row; - } - - .home-template .post-feed .post-card:nth-child(6n+1):not(.no-image) .post-card-image-link { - position: relative; - 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 { - 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; -} - - -/* Adjust some margins for smaller screens */ -@media (max-width: 650px) { - .post-feed { - padding-top: 5vw; - } - .post-card { - margin: 0 20px 5vw; - } -} - - - -/* 7. Single Post -/* ---------------------------------------------------------- */ - -.post-template .site-main, -.page-template .site-main { - padding-bottom: 4vw; - background: #fff; -} - -.post-full { - position: relative; - z-index: 50; -} -/* ^ Required to make .post-full-content:before/after z-index stacking work */ - -.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: flex; - justify-content: center; - align-items: center; - color: var(--midgrey); - font-size: 1.4rem; - font-weight: 600; - text-transform: uppercase; -} - -.post-full-meta-date { - color: var(--blue); -} - -.post-full-title { - margin: 0; - color: color(var(--darkgrey) l(-5%)); -} - -.date-divider { - display: inline-block; - margin: 0 6px 1px; -} - -.post-full-image { - margin: 0 -10vw -165px; - height: 800px; - background: var(--lightgrey) center center; - 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 { - content: ""; - position: absolute; - top: 15px; - left: -5px; - z-index: -1; - display: block; - width: 20px; - height: 200px; - background: rgba(39,44,49,0.15); - filter: blur(5px); - transform: rotate(-5deg); -} - -.post-full-content:after { - content: ""; - position: absolute; - top: 15px; - right: -5px; - z-index: -1; - display: block; - width: 20px; - height: 200px; - background: rgba(39,44,49,0.15); - filter: blur(5px); - transform: rotate(5deg); -} - -.no-image .post-full-content { - padding-top: 0; -} - -.no-image .post-full-content:before, -.no-image .post-full-content:after { - display: none; -} - -.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 p, -.post-full-content ul, -.post-full-content ol, -.post-full-content dl, -.post-full-content pre, -.post-full-content blockquote, -.post-full-comments, -.footnotes { - min-width: 100%; -} - -.post-full-content li { - word-break: break-word; -} - -.post-full-content li p { - margin: 0; -} - -.post-full-content a { - color: #000; - word-break: break-word; - box-shadow: var(--blue) 0 -1px 0 inset; -} - -.post-full-content a:hover { - color: var(--blue); - text-decoration: none; -} - -.post-full-content strong, -.post-full-content em { - color: color(var(--darkgrey) l(-5%)); -} - -.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; - height: auto; -} -@media (max-width: 1040px) { - .post-full-content img, - .post-full-content video { - width: 100%; - } -} - - -/* Full bleed images (#full) -Super neat trick courtesy of @JoelDrapper - -Usage (In Ghost edtior): - -![img](/some/image.jpg#full) - -*/ -.post-full-content img[src$="#full"] { - max-width: none; - width: 100vw; -} - - -/* Image captions - -Usage (In Ghost editor): - -![img](/some/image.jpg) -Your image caption - -*/ -.post-full-content img + br + small { - display: block; - margin-top: -3em; - margin-bottom: 1.5em; - text-align: center; -} - - -/* Override third party iframe styles */ -.post-full-content iframe { - margin: 0 auto !important; -} - -.post-full-content blockquote { - margin: 0 0 1.5em; - padding: 0 1.5em; - border-left: #3eb0ef 3px solid; -} - -.post-full-content blockquote p { - margin: 0 0 1em 0; - 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: 0.8em; - line-height: 1em; - font-weight: 400!important; - background: var(--whitegrey); - border-radius: 3px; -} - -.post-full-content p code { - word-break: break-all; -} - -.post-full-content pre { - overflow-x: auto; - margin: 1.5em 0 3em; - padding: 20px; - max-width: 100%; - border: color(var(--darkgrey) l(-10%)) 1px solid; - color: var(--whitegrey); - font-size: 1.4rem; - line-height: 1.5em; - background: color(var(--darkgrey) l(-3%)); - border-radius: 5px; -} - -.post-full-content pre code { - padding: 0; - font-size: inherit; - line-height: inherit; - background: transparent; -} - -.post-full-content pre code :not(span) { - 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: color(var(--lightgrey) l(+10%)); - box-shadow: #fff 0 0 0 5px; - 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: color(var(--darkgrey) l(-5%)); - font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif; -} - -.post-full-content h1 { - margin: 0.5em 0 0.2em 0; - font-size: 4.6rem; - font-weight: 700; -} -@media (max-width: 500px) { - .post-full-content h1 { - font-size: 2.8rem; - } -} - -.post-full-content h2 { - margin: 0.5em 0 0.2em 0; - font-size: 3.6rem; - font-weight: 700; -} -@media (max-width: 500px) { - .post-full-content h2 { - font-size: 2.6rem; - } -} - -.post-full-content h3 { - margin: 0.5em 0 0.2em 0; - font-size: 2.8rem; - font-weight: 700; -} -@media (max-width: 500px) { - .post-full-content h3 { - font-size: 2.2rem; - } -} - -.post-full-content h4 { - margin: 0.5em 0 0.2em 0; - 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: 0.5em 0; - padding: 1em 0 1.5em; - border: 0; - color: var(--blue); - 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 0.5em; - font-size: 2.2rem; - } -} - -.post-full-content h6 { - margin: 0.5em 0 0.2em 0; - 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: var(--blue) !important; - font-size: 1.2rem; - font-weight: bold; - text-decoration: none !important; - box-shadow: none !important; -} - -/* Some grouped styles for smaller viewports */ -@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:before, - .post-full-content:after { - display: none; - } -} - -/* Tables */ -.post-full-content table { - display: inline-block; - overflow-x: auto; - margin: 0.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; -} - -.post-full-content table { - -webkit-overflow-scrolling: touch; - background: radial-gradient(ellipse at left, rgba(0, 0, 0, 0.2) 0%, rgba(0, 0, 0, 0) 75%) 0 center, radial-gradient(ellipse at right, rgba(0, 0, 0, 0.2) 0%, rgba(0, 0, 0, 0) 75%) 100% center; - 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(to right, rgba(255,255,255, 1) 50%, rgba(255,255,255, 0) 100%); - background-size: 20px 100%; - background-repeat: no-repeat; -} - -.post-full-content table td:last-child { - background-image: linear-gradient(to left, rgba(255,255,255, 1) 50%, rgba(255,255,255, 0) 100%); - background-position: 100% 0; - background-size: 20px 100%; - background-repeat: no-repeat; -} - -.post-full-content table th { - color: var(--darkgrey); - font-size: 1.2rem; - font-weight: 700; - letter-spacing: 0.2px; - text-align: left; - text-transform: uppercase; - background-color: color(var(--whitegrey) l(+4%)); -} - -.post-full-content table th, -.post-full-content table td { - padding: 6px 12px; - border: color(var(--whitegrey) l(-1%) s(-5%)) 1px solid; -} - - -/* 7.1. Subscribe Form -/* ---------------------------------------------------------- */ - -.subscribe-form { - margin: 1.5em 0; - padding: 6.5vw 7vw 7vw; - border: color(var(--whitegrey) l(+2%)) 1px solid; - text-align: center; - background: color(var(--whitegrey) l(+4%)); - border-radius: 7px; -} - -.subscribe-form-title { - margin: 0 0 3px 0; - padding: 0; - color: var(--darkgrey); - font-size: 3.5rem; - line-height: 1; - font-weight: 700; -} - -.subscribe-form p { - margin-bottom: 1em; - color: var(--midgrey); - font-size: 2.2rem; - line-height: 1.55em; - letter-spacing: 0.2px; -} - -.subscribe-form form { - display: flex; - justify-content: center; - align-items: center; - margin: 0 auto; - max-width: 420px; -} - -.subscribe-form .form-group { - flex-grow: 1; -} - -.subscribe-email { - display: block; - padding: 10px; - width: 100%; - border: color(var(--lightgrey) l(+7%)) 1px solid; - color: var(--midgrey); - font-size: 1.8rem; - line-height: 1em; - font-weight: normal; - user-select: text; - border-radius: 5px; - transition: border-color 0.15s linear; - - -webkit-appearance: none; -} - -.subscribe-email:focus { - outline: 0; - border-color: color(var(--lightgrey) l(-2%)); -} - -.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,0.1); - background: linear-gradient( - color(var(--blue) whiteness(+7%)), - color(var(--blue) lightness(-7%) saturation(-10%)) 60%, - color(var(--blue) lightness(-7%) saturation(-10%)) 90%, - color(var(--blue) lightness(-4%) saturation(-10%)) - ); - border-radius: 5px; - box-shadow: 0 0 0 1px inset rgba(0,0,0,0.14); - - -webkit-font-smoothing: subpixel-antialiased; -} - -.subscribe-form button:active, -.subscribe-form button:focus { - background: color(var(--blue) lightness(-9%) saturation(-10%)); -} - -@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 { - flex-direction: column; - } - .subscribe-form .form-group { - width: 100%; - } - .subscribe-form button { - margin: 10px 0 0 0; - width: 100%; - } -} - - -/* 7.2. Post Footer -/* ---------------------------------------------------------- */ - -.post-full-footer { - display: flex; - justify-content: space-between; - align-items: center; - margin: 0 auto; - padding: 3vw 0 6vw 0; - max-width: 840px; -} - -/* 7.2.1 Single Author Byline -/* ---------------------------------------------------------- */ - -.author-card { - display: flex; -} - -.author-card .author-profile-image, -.author-card .avatar-wrapper { - margin-right: 15px; - width: 60px; - height: 60px; -} - -.author-card-name { - margin: 8px 0 2px 0; - padding: 0; - font-size: 2rem; -} - -.author-card-name a { - color: var(--darkgrey); - font-weight: 700; -} - -.author-card-name a:hover { - text-decoration: none; -} - -.author-card-content p { - margin: 0; - color: var(--midgrey); - line-height: 1.3em; -} - -.post-full-footer-right { - flex-shrink: 0; - margin-left: 20px; -} - -.author-card-button { - display: block; - padding: 9px 16px; - border: color(var(--midgrey) l(+20%)) 1px solid; - color: var(--midgrey); - font-size: 1.2rem; - line-height: 1; - font-weight: 500; - border-radius: 20px; - transition: all ease 0.2s; -} - -.author-card-button:hover { - border-color: var(--blue); - color: var(--blue); - text-decoration: none; -} - -/* 7.2.2 Multiple Author Byline -/* ---------------------------------------------------------- */ - -.post-full-authors { - flex-grow: 1; - display: flex; - flex-direction: column; - align-items: center; - margin-top: 20px; - padding-top: 40px; - border-top: color(var(--lightgrey) l(+10%)) 1px solid; -} - -.post-full-authors-content { - margin-bottom: 20px; -} - -.post-full-authors-content p { - margin-bottom: 0; - color: var(--midgrey); - font-size: 1.4rem; - letter-spacing: 0.2px; - text-align: center; - text-transform: uppercase; -} - -.post-full-authors-content a { - display: inline-block; - color: color(var(--darkgrey) l(+20%)); - font-size: 1.4rem; - font-weight: 600; - text-transform: uppercase; -} - -.post-full-footer .author-list { - justify-content: center; - padding: 10px 20px; -} - -.author-card .author-profile-image, -.author-card .avatar-wrapper { - position: relative; - margin-right: 15px; -} - -.author-list-item .author-card { - position: absolute; - bottom: 130%; - left: 50%; - z-index: 300; - display: block; - margin-left: -160px; - width: 320px; - font-size: 1.4rem; - letter-spacing: 0.2px; - background: white; - border-radius: 6px; - box-shadow: rgba(39,44,49,0.08) 0 12px 26px, rgba(39, 44, 49, 0.03) 1px 3px 8px; - opacity: 0; - transition: all 0.3s cubic-bezier(0.4, 0.01, 0.165, 0.99); - transform: scale(0.98) translateY(15px); - pointer-events: none; -} - -.author-list-item .author-card:before { - content: ""; - position: absolute; - top: 100%; - left: 50%; - display: block; - margin-left: -12px; - width: 0; - height: 0; - border-top: 12px solid #fff; - border-right: 12px solid transparent; - border-left: 12px solid transparent; -} - -.author-list-item .author-card.hovered { - opacity: 1.0; - transform: scale(1) translateY(0px); - pointer-events: auto; -} - -.author-card .basic-info { - display: flex; - flex-direction: column; - align-items: center; - padding: 30px 20px 20px 20px; - color: #fff; - background: var(--darkgrey); - border-radius: 6px 6px 0 0; -} - -.author-card .basic-info h2 { - margin: 1em 0 0.5em; -} - -.author-card .bio { - padding: 20px 20px 0; -} - -@media (max-width: 650px) { - .author-list-item .author-card { - display: none; - } -} - -.basic-info .author-profile-image { - margin: 0; - width: 88px; - height: 88px; - border: none; -} - -.basic-info .avatar-wrapper { - position: relative; - margin: 0; - width: 88px; - height: 88px; - border: none; - background: rgba(229, 239, 245, 0.1); -} - -.basic-info .avatar-wrapper svg { - margin: 0; - width: 88px; - height: 88px; - opacity: 0.15; -} - - -/* 7.3. Comments -/* ---------------------------------------------------------- */ - -.post-full-comments { - margin: 0 auto; - max-width: 840px; -} - - -/* 7.4. Related posts -/* ---------------------------------------------------------- */ - -.read-next-feed { - display: flex; - flex-wrap: wrap; - margin: 0 -20px; - padding: 40px 0 0 0; -} - -.read-next-card { - position: relative; - flex: 1 1 300px; - display: flex; - flex-direction: column; - overflow: hidden; - margin: 0 20px 40px; - padding: 25px; - color: #fff; - background: var(--darkgrey) center center; - background-size: cover; - border-radius: 5px; - box-shadow: rgba(39,44,49,0.06) 8px 14px 38px, rgba(39, 44, 49, 0.03) 1px 3px 8px; -} - -.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,0.8) 0%,rgba(0,20,40,0.7) 100%); - border-radius: 5px; - - 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: 0.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: flex; - justify-content: center; - height: 80px; -} - -.read-next-divider svg { - width: 40px; - fill: transparent; - stroke: #fff; - - stroke-width: 0.5px; - stroke-opacity: 0.65; -} - -.read-next-card-content { - position: relative; - z-index: 50; - flex-grow: 1; - display: flex; - font-size: 1.7rem; -} - -.read-next-card-content ul { - display: flex; - 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: -0.5px; -} - -.read-next-card-content li a { - display: block; - padding: 20px 0; - border-bottom: rgba(255,255,255,0.3) 1px solid; - color: #fff; - font-weight: 500; - vertical-align: top; - transition: opacity 0.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 0; - text-align: center; -} - -.read-next-card-footer a { - color: #fff; -} - - -/* 7.5. Floating Header -/* ---------------------------------------------------------- */ - -.floating-header { - visibility: hidden; - position: fixed; - top: 0; - right: 0; - left: 0; - z-index: 1000; - display: flex; - align-items: center; - height: 60px; - border-bottom: rgba(0,0,0,0.06) 1px solid; - background: rgba(255,255,255,0.95); - transition: all 500ms cubic-bezier(0.19, 1, 0.22, 1); - transform: translate3d(0, -120%, 0); -} - -.floating-active { - visibility: visible; - transition: all 500ms cubic-bezier(0.22, 1, 0.27, 1); - transform: translate3d(0, 0, 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: flex; - align-items: center; - color: var(--darkgrey); - 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 { - flex: 1; - overflow: hidden; - margin: 0; - color: #2e2e2e; - font-size: 1.6rem; - line-height: 1.3em; - font-weight: bold; - text-overflow: ellipsis; - white-space: nowrap; -} - -.floating-header-share { - display: flex; - justify-content: flex-end; - align-items: center; - padding-left: 2%; - font-size: 1.3rem; - line-height: 1; -} - -.floating-header-share a { - display: flex; - justify-content: center; - align-items: center; -} - -.floating-header-share svg { - width: auto; - height: 16px; - fill: #fff; -} - -.floating-header-share-label { - flex-shrink: 0; - display: flex; - align-items: center; - margin-right: 10px; - color: rgba(0,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,0.7); - transform: rotate(90deg); -} - -.floating-header-share-tw, -.floating-header-share-fb { - display: block; - align-items: center; - width: 60px; - height: 60px; - color: #fff; - line-height: 48px; - text-align: center; - transition: all 500ms cubic-bezier(0.19, 1, 0.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: var(--blue); - background: transparent; - - appearance: none; -} - -.progress::-webkit-progress-bar { - background-color: transparent; -} - -.progress::-webkit-progress-value { - background-color: var(--blue); -} - -.progress::-moz-progress-bar { - background-color: var(--blue); -} - -.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: var(--blue); -} - -@media (max-width: 900px) { - .floating-header { - height: 40px; - } - .floating-header-title, - .floating-header-logo { - font-size: 1.5rem; - } - .floating-header-share-tw, - .floating-header-share-fb { - 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-title, - .floating-header-divider { - visibility: hidden; - } -} - -@media (max-width: 450px) { - .floating-header-share-label { - display: none; - } -} - - -/* 7.6. Koenig Styles -/* ---------------------------------------------------------- */ - -.post-content { - display: flex; - flex-direction: column; - align-items: center; - max-width: 920px; -} - -.post-template .post-content > p:first-child { - font-size: 1.25em; - line-height: 1.5em; -} - -.post-full-content .kg-image { - max-width: 100%; -} - -/* Preventing full-width image overlap with post image. */ -.post-full-image + .post-full-content .kg-content *:first-child .kg-image { - width: 100%; -} - -.post-full-content .kg-width-wide .kg-image { - max-width: 1040px; -} - -.post-full-content .kg-width-full .kg-image { - max-width: 100vw; -} - -.post-full-content figure { - margin: 1.5em 0 3em; -} - -.post-full-content figure img { - margin: 0; -} - -.post-full-content figcaption { - margin: 1.0em 0 0; - font-size: 80%; - line-height: 1.6em; - text-align: center; -} - -.kg-width-full figcaption { - padding: 0 1.5em; -} - -.kg-embed-card { - display: flex; - flex-direction: column; - align-items: center; - min-width: 100%; -} - -.kg-embed-card .fluid-width-video-wrapper { - margin: 0; -} - - -@media (max-width: 1040px) { - .post-full-content .kg-width-full .kg-image { - width: 100vw; - } -} - -.kg-gallery-container { - display: flex; - flex-direction: column; - max-width: 1040px; - width: 100vw; -} - -.kg-gallery-row { - display: flex; - flex-direction: row; - justify-content: center; -} - -.kg-gallery-image img { - display: block; - margin: 0; - width: 100%; - height: 100%; -} - -.kg-gallery-row:not(:first-of-type) { - margin: 0.75em 0 0 0; -} - -.kg-gallery-image:not(:first-of-type) { - margin: 0 0 0 0.75em; -} - -.kg-gallery-card + .kg-image-card.kg-width-wide, -.kg-gallery-card + .kg-gallery-card, -.kg-image-card.kg-width-wide + .kg-gallery-card, -.kg-image-card.kg-width-wide + .kg-image-card.kg-width-wide { - margin: -2.25em 0 3em; -} - -/* 8. Author Template -/* ---------------------------------------------------------- */ - -.site-header-content .author-profile-image { - z-index: 10; - flex-shrink: 0; - margin: 0 0 20px 0; - width: 100px; - height: 100px; - box-shadow: rgba(255,255,255,0.1) 0 0 0 6px; -} - -.site-header-content .author-bio { - z-index: 10; - flex-shrink: 0; - margin: 5px 0 10px 0; - max-width: 600px; - font-size: 2rem; - line-height: 1.3em; - font-weight: 300; - letter-spacing: 0.5px; - opacity: 0.8; -} - -.site-header-content .author-meta { - z-index: 10; - flex-shrink: 0; - display: flex; - justify-content: center; - align-items: center; - margin: 0 0 10px 0; - 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: 0.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; - } -} - - -/* 9. Error Template -/* ---------------------------------------------------------- */ - -.error-template .site-main { - padding: 7vw 4vw; -} - -.site-nav-center { - display: flex; - justify-content: 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: 0.3; -} - -.error-description { - margin: 0; - color: var(--midgrey); - font-size: 3rem; - line-height: 1.3em; - font-weight: 400; -} - -@media (max-width: 800px) { - .error-description { - margin: 5px 0 0 0; - font-size: 1.8rem; - } -} - -.error-link { - display: inline-block; - margin-top: 5px; -} - -.error-template .post-feed { - padding-top: 0; -} - - -/* 10. Subscribe Overlay -/* ---------------------------------------------------------- */ - -.subscribe-overlay { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - z-index: 9000; - display: flex; - justify-content: center; - align-items: center; - background: rgba(0,25,40,0.97); - opacity: 0; - transition: opacity 200ms ease-in; - pointer-events: none; - - backdrop-filter: blur(3px); -} - -.subscribe-overlay:target { - opacity: 1; - pointer-events: auto; -} - -.subscribe-overlay-content { - position: relative; - z-index: 9999; - margin: 0 0 5vw 0; - 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 0; - 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: 0.8; -} - -.subscribe-overlay form { - display: flex; - justify-content: center; - align-items: center; - margin: 0 auto; - max-width: 500px; -} - -.subscribe-overlay .form-group { - flex-grow: 1; -} - -.subscribe-overlay .subscribe-email { - display: block; - padding: 14px 20px; - width: 100%; - border: none; - color: var(--midgrey); - font-size: 2rem; - line-height: 1em; - font-weight: normal; - letter-spacing: 0.5px; - user-select: text; - border-radius: 8px; - transition: border-color 0.15s linear; - - -webkit-appearance: none; -} - -.subscribe-email:focus { - outline: 0; - border-color: color(var(--lightgrey) l(-2%)); -} - -.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,0.1); - background: linear-gradient( - color(var(--blue) whiteness(+7%)), - color(var(--blue) lightness(-7%) saturation(-10%)) 60%, - color(var(--blue) lightness(-7%) saturation(-10%)) 90%, - color(var(--blue) lightness(-4%) saturation(-10%)) - ); - border-radius: 8px; - box-shadow: 0 0 0 1px inset rgba(0,0,0,0.14); - - -webkit-font-smoothing: subpixel-antialiased; -} - -.subscribe-overlay button:active, -.subscribe-overlay button:focus { - background: color(var(--blue) lightness(-9%) saturation(-10%)); -} - -.subscribe-overlay-close { - position: absolute; - top: 0; - right: 0; - bottom: 0; - left: 0; - display: block; -} - -.subscribe-overlay-close:before { - content: ""; - position: absolute; - top: 40px; - right: 25px; - display: block; - width: 30px; - height: 2px; - background: #fff; - opacity: 0.8; - transform: rotate(45deg); -} - -.subscribe-overlay-close:after { - content: ""; - position: absolute; - top: 40px; - right: 25px; - display: block; - width: 30px; - height: 2px; - background: #fff; - opacity: 0.8; - transform: rotate(-45deg); -} - -.subscribe-overlay-close:hover { - cursor: default; -} - - -/* 11. Site Footer -/* ---------------------------------------------------------- */ - -.site-footer { - position: relative; - padding-top: 20px; - padding-bottom: 60px; - color: #fff; - background: color(var(--darkgrey) l(-15%)); -} - -.site-footer-content { - display: flex; - flex-wrap: wrap; - justify-content: space-between; - align-items: center; - color: rgba(255,255,255,0.7); - font-size: 1.3rem; -} - -.site-footer-content a { - color: rgba(255,255,255,0.7); -} - -.site-footer-content a:hover { - color: rgba(255,255,255,1); - text-decoration: none; -} - -.site-footer-nav { - display: flex; -} - -.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 { - flex-direction: column; - } - .site-footer-nav a:first-child { - margin-left: 0; - } -} diff --git a/assets/js/infinitescroll.js b/assets/js/infinitescroll.js deleted file mode 100644 index 8e054cb..0000000 --- a/assets/js/infinitescroll.js +++ /dev/null @@ -1,121 +0,0 @@ -/* global maxPages */ - -// Code snippet inspired by https://github.com/douglasrodrigues5/ghost-blog-infinite-scroll -$(function ($) { - var currentPage = 1; - var pathname = window.location.pathname; - var $document = $(document); - var $result = $('.post-feed'); - var buffer = 300; - - var ticking = false; - var isLoading = false; - - var lastScrollY = window.scrollY; - var lastWindowHeight = window.innerHeight; - var lastDocumentHeight = $document.height(); - - function onScroll() { - lastScrollY = window.scrollY; - requestTick(); - } - - function onResize() { - lastWindowHeight = window.innerHeight; - lastDocumentHeight = $document.height(); - requestTick(); - } - - function requestTick() { - if (!ticking) { - requestAnimationFrame(infiniteScroll); - } - ticking = true; - } - - function sanitizePathname(path) { - var paginationRegex = /(?:page\/)(\d)(?:\/)$/i; - - // remove hash params from path - path = path.replace(/#(.*)$/g, '').replace('////g', '/'); - - // remove pagination from the path and replace the current pages - // with the actual requested page. E. g. `/page/3/` indicates that - // the user actually requested page 3, so we should request page 4 - // next, unless it's the last page already. - if (path.match(paginationRegex)) { - currentPage = parseInt(path.match(paginationRegex)[1]); - - path = path.replace(paginationRegex, ''); - } - - return path; - } - - function infiniteScroll() { - // sanitize the pathname from possible pagination or hash params - pathname = sanitizePathname(pathname); - - // return if already loading - if (isLoading) { - return; - } - - // return if not scroll to the bottom - if (lastScrollY + lastWindowHeight <= lastDocumentHeight - buffer) { - ticking = false; - return; - } - - /** - * maxPages is defined in default.hbs and is the value - * of the amount of pagination pages. - * If we reached the last page or are past it, - * we return and disable the listeners. - */ - if (currentPage >= maxPages) { - window.removeEventListener('scroll', onScroll, {passive: true}); - window.removeEventListener('resize', onResize); - return; - } - - isLoading = true; - - // next page - currentPage += 1; - - if(pathname.charAt(pathname.length-1) != '/'){ - pathname = pathname+'/'; - } - - // Load more - var nextPage = pathname + 'page/' + currentPage + '/'; - console.log(pathname); - console.log(nextPage); - - $.get(nextPage, function (content) { - var parse = document.createRange().createContextualFragment(content); - var posts = parse.querySelectorAll('.post'); - if (posts.length) { - [].forEach.call(posts, function (post) { - $result[0].appendChild(post); - }); - } - }).fail(function (xhr) { - // 404 indicates we've run out of pages - if (xhr.status === 404) { - window.removeEventListener('scroll', onScroll, {passive: true}); - window.removeEventListener('resize', onResize); - } - }).always(function () { - lastDocumentHeight = $document.height(); - isLoading = false; - ticking = false; - }); - } - - window.addEventListener('scroll', onScroll, {passive: true}); - window.addEventListener('resize', onResize); - - infiniteScroll(); -}); diff --git a/category.ftl b/category.ftl deleted file mode 100644 index 4cc7dd9..0000000 --- a/category.ftl +++ /dev/null @@ -1,44 +0,0 @@ -<#include "default.ftl"> -<#include "partials/post-card.ftl"> -<@default title="分类:${category.name!} | ${blog_title!}" canonical="${category.fullPath!}" body_class="tag-template"> -<#-- The tag above means - insert everything in this file into the {body} of the default.hbs template --> -<#-- The big featured header, it uses blog cover image as a BG if available --> - - -<#-- The main content area --> -
-
-
- <#list posts.content as post> - <#-- The tag below includes the markup for each post - partials/post-card.hbs --> - <@post_card post> - -
-
-
- -<@scripts> - <#if posts.totalPages gt 1> - - - - diff --git a/default.ftl b/default.ftl deleted file mode 100644 index 09c08e5..0000000 --- a/default.ftl +++ /dev/null @@ -1,97 +0,0 @@ -<#macro default title,canonical,body_class> - - - - - <#-- Document Settings --> - - - - <#-- Base Meta --> - ${title} - - - - <#-- Styles'n'Scripts --> - - - <#-- This tag outputs SEO meta+structured data and other important settings --> - - - <@global.head /> - - - - - - - - - - - - - - - - - - - - - <#if post??> - - - - - - - -
- - <#-- All the main content gets inserted here, index.hbs, post.hbs, etc --> - <#nested > - <#-- The footer at the very bottom of the screen --> - - -
- - <#-- The big email subscribe modal content --> - - - - - <#-- jQuery + Fitvids, which makes all video embeds responsive --> - - - - -<#macro scripts> - <#nested > - <@global.statistics /> - - - diff --git a/index.ftl b/index.ftl deleted file mode 100644 index 8086417..0000000 --- a/index.ftl +++ /dev/null @@ -1,50 +0,0 @@ -<#include "default.ftl"> -<#include "partials/post-card.ftl"> -<@default title="${blog_title!}" canonical="${blog_url!}" body_class="home-template"> -<#-- The tag above means: insert everything in this file -into the {body} of the default.hbs template --> - -<#-- The big featured header, it uses blog cover image as a BG if available --> - - -<#-- The main content area --> -
-
- -
- <#list posts.content as post> - <#-- The tag below includes the markup for each post - partials/post-card.hbs --> - <@post_card post> - -
- -
-
- -<@scripts> - <#if posts.totalPages gt 1> - - - - <#-- Ghost outputs important scripts and data with this tag - it should always be the very last thing before the closing body tag --> - <#-- {{ghost_foot}} --> - diff --git a/links.ftl b/links.ftl deleted file mode 100644 index 467ac5d..0000000 --- a/links.ftl +++ /dev/null @@ -1,57 +0,0 @@ -<#include "default.ftl"> -<@default title="友情链接 | ${blog_title!}" canonical="${links_url!}" body_class="page-template"> - -<#-- The tag above means: insert everything in this file -into the {body} of the default.hbs template --> - -<#-- The big featured header, it uses blog cover image as a BG if available --> - - -<#-- Everything inside the #post tags pulls data from the post --> -
-
- -
- -
-

友情链接

-
- - <#if settings.links_cover??> -
-
- - -
-
-
    - <@linkTag method="list"> - <#list links as link> -
  • - ${link.name}<#if link.description != ''> - ${link.description!} -
  • - - -
-
-
- -
- -
-
- -<#-- The #contentFor helper here will send everything inside it up to the matching #block helper found in default.hbs --> - -<@scripts> - - diff --git a/module/comment.ftl b/module/comment.ftl deleted file mode 100644 index 834ed2c..0000000 --- a/module/comment.ftl +++ /dev/null @@ -1,7 +0,0 @@ -<#macro comment post,type> - <#if !post.disallowComment!false> - - - - - \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..42f2a93 --- /dev/null +++ b/package.json @@ -0,0 +1,11 @@ +{ + "scripts": { + "prettier": "prettier --write './templates/**/*.html'" + }, + "keywords": [], + "author": "", + "license": "ISC", + "devDependencies": { + "prettier": "^3.0.3" + } +} diff --git a/partials/byline-multiple.ftl b/partials/byline-multiple.ftl deleted file mode 100644 index e1c9d15..0000000 --- a/partials/byline-multiple.ftl +++ /dev/null @@ -1,72 +0,0 @@ -
- -
-

This post was a collaboration between

-

{{authors}}

-
- - - -
- -{{#contentFor "scripts"}} - -{{/contentFor}} diff --git a/partials/byline-single.ftl b/partials/byline-single.ftl deleted file mode 100644 index d3fadde..0000000 --- a/partials/byline-single.ftl +++ /dev/null @@ -1,23 +0,0 @@ -<#-- Everything inside the #author tags pulls data from the author --> - -
- <#if user.avatar??> - ${user.nickname!} - <#else > - - <#include "icons/avatar.ftl"> - - -
-

${user.nickname!}

- <#if user.description??> -

${user.description}

- <#else> -

Read more posts by this author.

- -
-
-
- Read More -
- diff --git a/partials/floating-header.ftl b/partials/floating-header.ftl deleted file mode 100644 index 326b012..0000000 --- a/partials/floating-header.ftl +++ /dev/null @@ -1,30 +0,0 @@ -<#macro floating_header title> -
- - -
${title}
- - -
- -
-
-
- diff --git a/partials/icons/avatar.ftl b/partials/icons/avatar.ftl deleted file mode 100644 index af37fca..0000000 --- a/partials/icons/avatar.ftl +++ /dev/null @@ -1 +0,0 @@ - diff --git a/partials/icons/cnblog.ftl b/partials/icons/cnblog.ftl deleted file mode 100644 index 9f80117..0000000 --- a/partials/icons/cnblog.ftl +++ /dev/null @@ -1 +0,0 @@ - diff --git a/partials/icons/dribbble.ftl b/partials/icons/dribbble.ftl deleted file mode 100644 index d728744..0000000 --- a/partials/icons/dribbble.ftl +++ /dev/null @@ -1 +0,0 @@ - diff --git a/partials/icons/email.ftl b/partials/icons/email.ftl deleted file mode 100644 index 7faa325..0000000 --- a/partials/icons/email.ftl +++ /dev/null @@ -1 +0,0 @@ - diff --git a/partials/icons/facebook.ftl b/partials/icons/facebook.ftl deleted file mode 100644 index 7332072..0000000 --- a/partials/icons/facebook.ftl +++ /dev/null @@ -1 +0,0 @@ - diff --git a/partials/icons/ghost-logo.ftl b/partials/icons/ghost-logo.ftl deleted file mode 100644 index 637a2b5..0000000 --- a/partials/icons/ghost-logo.ftl +++ /dev/null @@ -1 +0,0 @@ -Ghost Logo diff --git a/partials/icons/github.ftl b/partials/icons/github.ftl deleted file mode 100644 index 23fbe55..0000000 --- a/partials/icons/github.ftl +++ /dev/null @@ -1 +0,0 @@ - diff --git a/partials/icons/infinity.ftl b/partials/icons/infinity.ftl deleted file mode 100644 index 87e44ea..0000000 --- a/partials/icons/infinity.ftl +++ /dev/null @@ -1 +0,0 @@ - diff --git a/partials/icons/instagram.ftl b/partials/icons/instagram.ftl deleted file mode 100644 index 2514eea..0000000 --- a/partials/icons/instagram.ftl +++ /dev/null @@ -1 +0,0 @@ - diff --git a/partials/icons/location.ftl b/partials/icons/location.ftl deleted file mode 100644 index 0c2d866..0000000 --- a/partials/icons/location.ftl +++ /dev/null @@ -1 +0,0 @@ - diff --git a/partials/icons/point.ftl b/partials/icons/point.ftl deleted file mode 100644 index f3c7025..0000000 --- a/partials/icons/point.ftl +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/partials/icons/qq.ftl b/partials/icons/qq.ftl deleted file mode 100644 index d0195b9..0000000 --- a/partials/icons/qq.ftl +++ /dev/null @@ -1 +0,0 @@ - diff --git a/partials/icons/rss.ftl b/partials/icons/rss.ftl deleted file mode 100644 index 3840238..0000000 --- a/partials/icons/rss.ftl +++ /dev/null @@ -1 +0,0 @@ - diff --git a/partials/icons/stackoverflow.ftl b/partials/icons/stackoverflow.ftl deleted file mode 100644 index 6afbf64..0000000 --- a/partials/icons/stackoverflow.ftl +++ /dev/null @@ -1 +0,0 @@ - diff --git a/partials/icons/telegram.ftl b/partials/icons/telegram.ftl deleted file mode 100644 index 98ca0a7..0000000 --- a/partials/icons/telegram.ftl +++ /dev/null @@ -1 +0,0 @@ - diff --git a/partials/icons/twitter.ftl b/partials/icons/twitter.ftl deleted file mode 100644 index 19de4af..0000000 --- a/partials/icons/twitter.ftl +++ /dev/null @@ -1 +0,0 @@ - diff --git a/partials/icons/website.ftl b/partials/icons/website.ftl deleted file mode 100644 index 08be39f..0000000 --- a/partials/icons/website.ftl +++ /dev/null @@ -1 +0,0 @@ - diff --git a/partials/icons/weibo.ftl b/partials/icons/weibo.ftl deleted file mode 100644 index a303093..0000000 --- a/partials/icons/weibo.ftl +++ /dev/null @@ -1 +0,0 @@ - diff --git a/partials/post-card.ftl b/partials/post-card.ftl deleted file mode 100644 index 3879942..0000000 --- a/partials/post-card.ftl +++ /dev/null @@ -1,44 +0,0 @@ -<#macro post_card post> -
- <#if post.thumbnail?? && post.thumbnail!=''> - -
-
- -
- -
- <#if post.categories?? && post.categories?size gt 0> - ${post.categories[0].name} - -

${post.title!}

-
-
-

${post.summary!}

-
-
- -
-
- diff --git a/partials/post-copyright.ftl b/partials/post-copyright.ftl deleted file mode 100644 index e21a02b..0000000 --- a/partials/post-copyright.ftl +++ /dev/null @@ -1,19 +0,0 @@ -<#if settings.post_copyright!true> -
-
- -
- diff --git a/partials/site-nav.ftl b/partials/site-nav.ftl deleted file mode 100644 index 7f65a95..0000000 --- a/partials/site-nav.ftl +++ /dev/null @@ -1,93 +0,0 @@ - diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..8b92bed --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,18 @@ +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +devDependencies: + prettier: + specifier: ^3.0.3 + version: 3.0.3 + +packages: + + /prettier@3.0.3: + resolution: {integrity: sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==} + engines: {node: '>=14'} + hasBin: true + dev: true diff --git a/post.ftl b/post.ftl deleted file mode 100644 index 0867d6a..0000000 --- a/post.ftl +++ /dev/null @@ -1,191 +0,0 @@ -<#include "default.ftl"> -<#include "partials/post-card.ftl"> -<#include "partials/floating-header.ftl"> -<@default title="${post.title!} | ${blog_title!}" canonical="${post.fullPath!}" body_class="post-template"> - -<#-- The tag above means: insert everything in this file -into the {body} of the default.hbs template --> - - - -<#-- Everything inside the #post tags pulls data from the post --> - -
-
- -
- -
-
- - <#if post.categories?? && post.categories?size gt 0> - / ${post.categories[0].name} - -
-

${post.title!}

-
- - <#if post.thumbnail?? && post.thumbnail!=''> -
-
- - -
-
- ${post.formatContent!} - <#include "partials/post-copyright.ftl"> -
-
- - <#-- Email subscribe form at the bottom of the page --> - -
- - <#-- There are two options for how we display the byline/author-info. - If the post has more than one author, we load a specific template - from includes/byline-multiple.hbs, otherwise, we just use the - default byline. --> - - <#include "partials/byline-single.ftl"> - -
- -
- <#-- If you want to embed comments, this is a good place to do it! --> - <#include "module/comment.ftl"> - <@comment post=post type="post" /> -
- -
- -
-
- -<#-- Links to Previous/Next posts --> - - -<#-- Floating header which appears on-scroll, included from includes/floating-header.hbs --> -<@floating_header title="${post.title!}"> - - -<@scripts> - <#-- The #block helper will pull in data from the #contentFor other template files. In this case, there's some JavaScript which we only want to use in post.hbs, but it needs to be included down here, after jQuery has already loaded. --> - - <#-- Ghost outputs important scripts and data with this tag - it should always be the very last thing before the closing body tag --> - <#-- {{ghost_foot}} --> - diff --git a/setting.yaml b/setting.yaml new file mode 100644 index 0000000..bfdf37f --- /dev/null +++ b/setting.yaml @@ -0,0 +1,94 @@ +apiVersion: v1alpha1 +kind: Setting +metadata: + name: halo-setting-casper +spec: + forms: + - group: general + label: 基础设置 + formSchema: + - $formkit: attachment + name: cover + label: 首页背景图 + value: "" + - $formkit: attachment + name: links_cover + label: 友情链接页面背景图 + - $formkit: attachment + name: archives_cover + label: 归档页面背景图 + - $formkit: radio + name: post_copyright + label: 文章版权信息 + value: true + options: + - value: true + label: 开启 + - value: false + label: 关闭 + - $formkit: text + name: location + label: 所在地 + - $formkit: select + name: code_pretty + label: 文章代码高亮主题 + value: Default + options: + - value: Default + label: Default + - value: Coy + label: Coy + - value: Dark + label: Dark + - value: Okaidia + label: Okaidia + - value: Solarized Light + label: Solarized Light + - value: Tomorrow Night + label: Tomorrow Night + - value: Twilight + label: Twilight + - group: sns + label: 社交设置 + formSchema: + - $formkit: text + name: twitter + label: Twitter + placeholder: 只需填入 Twitter 用户名即可 + - $formkit: text + name: facebook + label: Facebook + placeholder: 只需填入 Facebook 用户名即可 + - $formkit: text + name: instagram + label: Instagram + placeholder: 只需填入 Instagram 用户名即可 + - $formkit: text + name: dribbble + label: Dribbble + placeholder: 只需填入 Dribbble 用户名即可 + - $formkit: text + name: weibo + label: 微博 + placeholder: 只需填入微博 Id 即可 + - $formkit: text + name: email + label: Email + placeholder: 只需填入邮箱地址即可 + - $formkit: text + name: qq + label: QQ + placeholder: 只需填入 Github 用户名即可 + - $formkit: text + name: telegram + label: Telegram + placeholder: 只需填入 Telegram Id 即可 + - $formkit: text + name: cnblog + label: 博客园 + - $formkit: text + name: github + label: Github + - $formkit: text + name: stackoverflow + label: Stack Overflow diff --git a/settings.yaml b/settings.yaml deleted file mode 100644 index 23fda7c..0000000 --- a/settings.yaml +++ /dev/null @@ -1,117 +0,0 @@ -general: - label: 基础设置 - items: - cover: - name: cover - label: 首页背景图 - type: attachment - default: '/themes/ghost_casper/assets/images/blog-cover.jpg' - links_cover: - name: links_cover - label: 友情链接页面背景图 - type: attachment - archives_cover: - name: archives_cover - label: 归档页面背景图 - type: attachment - post_copyright: - name: post_copyright - label: 文章版权信息 - type: radio - data-type: bool - default: true - options: - - value: true - label: 开启 - - value: false - label: 关闭 - location: - name: location - label: 所在地 - type: text - code_pretty: - name: code_pretty - label: 文章代码高亮主题 - type: select - default: Default - options: - - value: Default - label: Default - - value: Coy - label: Coy - - value: Dark - label: Dark - - value: Okaidia - label: Okaidia - - value: Solarized Light - label: Solarized Light - - value: Tomorrow Night - label: Tomorrow Night - - value: Twilight - label: Twilight -sns: - label: 社交设置 - items: - rss: - name: rss - label: RSS - type: radio - data-type: bool - default: true - options: - - value: true - label: 开启 - - value: false - label: 关闭 - twitter: - name: twitter - label: Twitter - type: text - placeholder: '只需填入 Twitter 用户名即可' - facebook: - name: facebook - label: Facebook - type: text - placeholder: '只需填入 Facebook 用户名即可' - instagram: - name: instagram - label: Instagram - type: text - placeholder: '只需填入 Instagram 用户名即可' - dribbble: - name: dribbble - label: Dribbble - type: text - placeholder: '只需填入 Dribbble 用户名即可' - weibo: - name: weibo - label: 微博 - type: text - placeholder: '只需填入微博 Id 即可' - email: - name: email - label: Email - type: text - placeholder: '只需填入邮箱地址即可' - qq: - name: qq - label: QQ - type: text - placeholder: '只需填入 Github 用户名即可' - telegram: - name: telegram - label: Telegram - type: text - placeholder: '只需填入 Telegram Id 即可' - cnblog: - name: cnblog - label: 博客园 - type: text - github: - name: github - label: Github - type: text - stackoverflow: - name: stackoverflow - label: Stack Overflow - type: text diff --git a/sheet.ftl b/sheet.ftl deleted file mode 100644 index dff5e1b..0000000 --- a/sheet.ftl +++ /dev/null @@ -1,55 +0,0 @@ -<#include "default.ftl"> -<@default title="${post.title!} | ${blog_title!}" canonical="${sheet.fullPath!}" body_class="page-template"> - -<#-- The tag above means: insert everything in this file -into the {body} of the default.hbs template --> - -<#-- The big featured header, it uses blog cover image as a BG if available --> - - -<#-- Everything inside the #post tags pulls data from the post --> -
-
- -
- -
-

${post.title!}

-
- - <#if post.thumbnail?? && post.thumbnail!=''> -
-
- - -
-
- ${post.formatContent!} -
-
- -
- <#-- If you want to embed comments, this is a good place to do it! --> - <#include "module/comment.ftl"> - <@comment post=sheet type="sheet" /> -
- -
- -
-
- -<#-- The #contentFor helper here will send everything inside it up to the matching #block helper found in default.hbs --> - -<@scripts> - - diff --git a/sheet_author.ftl b/sheet_author.ftl deleted file mode 100644 index e157d4f..0000000 --- a/sheet_author.ftl +++ /dev/null @@ -1,62 +0,0 @@ -<#include "default.ftl"> -<@default title="${sheet.title!} | ${blog_title!}" canonical="${sheet.fullPath!}" body_class="page-template"> -<#-- The tag above means - insert everything in this file into the {body} of the default.hbs template --> -<#-- Everything inside the #author tags pulls data from the author --> - - - -<#-- The main content area --> -
-
- -
- -
-

${post.title!}

-
- -
-
- ${sheet.formatContent!} -
-
- -
- <#-- If you want to embed comments, this is a good place to do it! --> - <#include "module/comment.ftl"> - <@comment post=sheet type="sheet" /> -
- -
- -
-
- -<@scripts> - - diff --git a/tag.ftl b/tag.ftl deleted file mode 100644 index 9a26a6c..0000000 --- a/tag.ftl +++ /dev/null @@ -1,40 +0,0 @@ -<#include "default.ftl"> -<#include "partials/post-card.ftl"> -<@default title="标签:${tag.name} | ${blog_title!}" canonical="${tag.fullPath!}" body_class="tag-template"> -<#-- The tag above means - insert everything in this file into the {body} of the default.hbs template --> -<#-- The big featured header, it uses blog cover image as a BG if available --> - - -<#-- The main content area --> -
-
-
- <#list posts.content as post> - <#-- The tag below includes the markup for each post - partials/post-card.hbs --> - <@post_card post> - -
-
-
- -<@scripts> - <#if posts.totalPages gt 1> - - - - diff --git a/templates/archives.html b/templates/archives.html new file mode 100644 index 0000000..db66037 --- /dev/null +++ b/templates/archives.html @@ -0,0 +1,75 @@ + + + + +
+
+
+
+

文章归档

+
+ +
+
+
+
+

分类

+
    +
  • + +
  • +
+ +

标签

+
    +
  • + +
  • +
+ +

归档

+ + +

+
    + +
  • + + +
  • +
    +
+
+
+
+
+
+
+ + +
+ diff --git a/assets/built/global.css b/templates/assets/built/global.css similarity index 100% rename from assets/built/global.css rename to templates/assets/built/global.css diff --git a/assets/built/global.css.map b/templates/assets/built/global.css.map similarity index 100% rename from assets/built/global.css.map rename to templates/assets/built/global.css.map diff --git a/templates/assets/built/infinitescroll.js b/templates/assets/built/infinitescroll.js new file mode 100644 index 0000000..a01cc18 --- /dev/null +++ b/templates/assets/built/infinitescroll.js @@ -0,0 +1,164 @@ +$(function ($) { + var currentPage = 1; + var pathname = window.location.pathname; + var $document = $(document); + var $result = $(".post-feed"); + var buffer = 300; + var ticking = false; + var isLoading = false; + var lastScrollY = window.scrollY; + var lastWindowHeight = window.innerHeight; + var lastDocumentHeight = $document.height(); + function onScroll() { + lastScrollY = window.scrollY; + requestTick(); + } + function onResize() { + lastWindowHeight = window.innerHeight; + lastDocumentHeight = $document.height(); + requestTick(); + } + function requestTick() { + if (!ticking) { + requestAnimationFrame(infiniteScroll); + } + ticking = true; + } + function sanitizePathname(path) { + var paginationRegex = /(?:page\/)(\d)(?:\/)$/i; + path = path.replace(/#(.*)$/g, "").replace("////g", "/"); + if (path.match(paginationRegex)) { + currentPage = parseInt(path.match(paginationRegex)[1]); + path = path.replace(paginationRegex, ""); + } + return path; + } + function infiniteScroll() { + pathname = sanitizePathname(pathname); + if (isLoading) { + return; + } + if (lastScrollY + lastWindowHeight <= lastDocumentHeight - buffer) { + ticking = false; + return; + } + if (currentPage >= maxPages) { + window.removeEventListener("scroll", onScroll, { passive: true }); + window.removeEventListener("resize", onResize); + return; + } + isLoading = true; + currentPage += 1; + if (pathname.charAt(pathname.length - 1) != "/") { + pathname = pathname + "/"; + } + var nextPage = pathname + "page/" + currentPage; + console.log(pathname); + console.log(nextPage, 1111); + $.get(nextPage, function (content) { + var parse = document.createRange().createContextualFragment(content); + var posts = parse.querySelectorAll(".post"); + if (posts.length) { + [].forEach.call(posts, function (post) { + $result[0].appendChild(post); + }); + } + }) + .fail(function (xhr) { + if (xhr.status === 404) { + window.removeEventListener("scroll", onScroll, { passive: true }); + window.removeEventListener("resize", onResize); + } + }) + .always(function () { + lastDocumentHeight = $document.height(); + isLoading = false; + ticking = false; + }); + } + window.addEventListener("scroll", onScroll, { passive: true }); + window.addEventListener("resize", onResize); + infiniteScroll(); +}); +$(function ($) { + var currentPage = 1; + var pathname = window.location.pathname; + var $document = $(document); + var $result = $(".post-feed"); + var buffer = 300; + var ticking = false; + var isLoading = false; + var lastScrollY = window.scrollY; + var lastWindowHeight = window.innerHeight; + var lastDocumentHeight = $document.height(); + function onScroll() { + lastScrollY = window.scrollY; + requestTick(); + } + function onResize() { + lastWindowHeight = window.innerHeight; + lastDocumentHeight = $document.height(); + requestTick(); + } + function requestTick() { + if (!ticking) { + requestAnimationFrame(infiniteScroll); + } + ticking = true; + } + function sanitizePathname(path) { + var paginationRegex = /(?:page\/)(\d)(?:\/)$/i; + path = path.replace(/#(.*)$/g, "").replace("////g", "/"); + if (path.match(paginationRegex)) { + currentPage = parseInt(path.match(paginationRegex)[1]); + path = path.replace(paginationRegex, ""); + } + return path; + } + function infiniteScroll() { + pathname = sanitizePathname(pathname); + if (isLoading) { + return; + } + if (lastScrollY + lastWindowHeight <= lastDocumentHeight - buffer) { + ticking = false; + return; + } + if (currentPage >= maxPages) { + window.removeEventListener("scroll", onScroll, { passive: true }); + window.removeEventListener("resize", onResize); + return; + } + isLoading = true; + currentPage += 1; + if (pathname.charAt(pathname.length - 1) != "/") { + pathname = pathname + "/"; + } + var nextPage = pathname + "page/" + currentPage; + console.log(pathname); + console.log(nextPage, 1111); + $.get(nextPage, function (content) { + var parse = document.createRange().createContextualFragment(content); + var posts = parse.querySelectorAll(".post"); + if (posts.length) { + [].forEach.call(posts, function (post) { + $result[0].appendChild(post); + }); + } + }) + .fail(function (xhr) { + if (xhr.status === 404) { + window.removeEventListener("scroll", onScroll, { passive: true }); + window.removeEventListener("resize", onResize); + } + }) + .always(function () { + lastDocumentHeight = $document.height(); + isLoading = false; + ticking = false; + }); + } + window.addEventListener("scroll", onScroll, { passive: true }); + window.addEventListener("resize", onResize); + infiniteScroll(); +}); diff --git a/assets/built/infinitescroll.js.map b/templates/assets/built/infinitescroll.js.map similarity index 100% rename from assets/built/infinitescroll.js.map rename to templates/assets/built/infinitescroll.js.map diff --git a/assets/built/jquery.fitvids.js b/templates/assets/built/jquery.fitvids.js similarity index 100% rename from assets/built/jquery.fitvids.js rename to templates/assets/built/jquery.fitvids.js diff --git a/assets/built/jquery.fitvids.js.map b/templates/assets/built/jquery.fitvids.js.map similarity index 100% rename from assets/built/jquery.fitvids.js.map rename to templates/assets/built/jquery.fitvids.js.map diff --git a/assets/built/jquery.min.js b/templates/assets/built/jquery.min.js similarity index 100% rename from assets/built/jquery.min.js rename to templates/assets/built/jquery.min.js diff --git a/templates/assets/built/screen.css b/templates/assets/built/screen.css new file mode 100644 index 0000000..6f7de4b --- /dev/null +++ b/templates/assets/built/screen.css @@ -0,0 +1,2387 @@ +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: 0.67em 0; + font-size: 2em; +} +small { + font-size: 80%; +} +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} +sup { + top: -0.5em; +} +sub { + bottom: -0.25em; +} +img { + border: 0; +} +svg:not(:root) { + overflow: hidden; +} +mark { + background-color: #fdffb6; +} +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: 0.5em 0 1em; +} +ul { + list-style: disc; +} +ol { + list-style: decimal; +} +ol, +ul { + max-width: 100%; +} +li { + margin: 0.5em 0; + padding-left: 0.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: 0.5em solid #e5eff5; +} +blockquote p { + margin: 0.8em 0; + font-size: 1.2em; + font-weight: 300; +} +blockquote small { + display: inline-block; + margin: 0.8em 0 0.8em 1.5em; + font-size: 0.9em; + opacity: 0.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 0.5em; + font-size: 5rem; + font-weight: 700; +} +@media (max-width: 500px) { + h1 { + font-size: 2.2rem; + } +} +h2 { + margin: 1.5em 0 0.5em; + font-size: 2rem; +} +@media (max-width: 500px) { + h2 { + font-size: 1.8rem; + } +} +h3 { + margin: 1.5em 0 0.5em; + font-size: 1.8rem; + font-weight: 500; +} +@media (max-width: 500px) { + h3 { + font-size: 1.7rem; + } +} +h4 { + margin: 1.5em 0 0.5em; + font-size: 1.6rem; + font-weight: 500; +} +h5, +h6 { + margin: 1.5em 0 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, 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, 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: 0.5px; + opacity: 0.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; +} +.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: 0.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: -0.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: 0 0 0 -12px; + 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: 0.8; + font-size: 16px; +} +.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-links a:last-of-type { + padding-right: 20px; +} +.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: 0.8; +} +.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 #fff; + color: #fff; + font-size: 1.2rem; + line-height: 1em; + border-radius: 10px; + opacity: 0.8; +} +.subscribe-button:hover { + text-decoration: none; + opacity: 1; +} +.rss-button { + opacity: 0.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; +} +.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, 0.06), + 1px 3px 8px rgba(39, 44, 49, 0.03); + transition: all 0.5s ease; +} +.post-card:hover { + box-shadow: 8px 28px 50px rgba(39, 44, 49, 0.07), + 1px 6px 12px rgba(39, 44, 49, 0.04); + transition: all 0.4s ease; + transform: translate3D(0, -1px, 0) scale(1.02); +} +.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; + -ms-flex-positive: 1; + flex-grow: 1; + 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: 0.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 { + display: -ms-flexbox; + display: flex; + -ms-flex-pack: justify; + justify-content: space-between; + -ms-flex-align: end; + align-items: flex-end; + padding: 0 25px 25px; +} +.author-profile-image, +.avatar-wrapper { + display: block; + width: 100%; + height: 100%; + background: #e3e9ed; + border-radius: 100%; + object-fit: cover; +} +.post-card-meta .avatar-wrapper, +.post-card-meta .profile-image-wrapper { + position: relative; +} +.author-list { + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap-reverse; + flex-wrap: wrap-reverse; + margin: 0; + padding: 0; + list-style: none; +} +.author-list-item { + position: relative; + -ms-flex-negative: 0; + flex-shrink: 0; + margin: 0; + padding: 0; +} +.author-list-item:first-child { + z-index: 10; +} +.author-list-item:nth-child(2) { + z-index: 9; +} +.author-list-item:nth-child(3) { + z-index: 8; +} +.author-list-item:nth-child(4) { + z-index: 7; +} +.author-list-item:nth-child(5) { + z-index: 6; +} +.author-list-item:nth-child(6) { + z-index: 5; +} +.author-list-item:nth-child(7) { + z-index: 4; +} +.author-list-item:nth-child(8) { + z-index: 3; +} +.author-list-item:nth-child(9) { + z-index: 2; +} +.author-list-item:nth-child(10) { + z-index: 1; +} +.static-avatar { + margin: 0 -5px; + width: 34px; + height: 34px; +} +.moving-avatar, +.static-avatar { + display: block; + overflow: hidden; + border: 2px solid #fff; + border-radius: 100%; +} +.moving-avatar { + margin: 0 -6px; + width: 56px; + height: 56px; + transition: all 0.5s cubic-bezier(0.4, 0.01, 0.165, 0.99) 0.7s; +} +@media (min-width: 800px) { + .author-list:hover .moving-avatar { + margin: 0; + transition: all 0.3s cubic-bezier(0.4, 0.01, 0.165, 0.99); + } +} +.author-name-tooltip { + position: absolute; + bottom: 105%; + z-index: 999; + display: block; + padding: 2px 8px; + color: #fff; + font-size: 1.2rem; + letter-spacing: 0.2px; + white-space: nowrap; + background: #15171a; + border-radius: 3px; + box-shadow: 0 12px 26px rgba(39, 44, 49, 0.08), + 1px 3px 8px rgba(39, 44, 49, 0.03); + opacity: 0; + transition: all 0.3s cubic-bezier(0.4, 0.01, 0.165, 0.99); + transform: translateY(6px); + pointer-events: none; +} +.author-list-item:hover .author-name-tooltip { + opacity: 1; + transform: translateY(0); +} +@media (max-width: 650px) { + .author-name-tooltip { + display: none; + } +} +.reading-time { + -ms-flex-negative: 0; + flex-shrink: 0; + margin-left: 20px; + color: #738a94; + font-size: 1.2rem; + line-height: 33px; + font-weight: 500; + letter-spacing: 0.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, 0.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; +} +.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-full-content a { + color: #000; + word-break: break-word; + 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; + height: auto; +} +@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; + text-align: center; +} +.post-full-content iframe { + margin: 0 auto !important; +} +.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: 0.8em; + line-height: 1em; + font-weight: 400 !important; + background: #e5eff5; + border-radius: 3px; +} +.post-full-content p code { + word-break: break-all; +} +.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 :not(span) { + 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: 0.5em 0 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: 0.5em 0 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: 0.5em 0 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: 0.5em 0 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: 0.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 0.5em; + font-size: 2.2rem; + } +} +.post-full-content h6 { + margin: 0.5em 0 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: 0.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, 0.2) 0, + transparent 75% + ) + 0, + radial-gradient(ellipse at right, rgba(0, 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: 0.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: 0.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 0.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, 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, 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; + -ms-flex-align: center; + align-items: center; + margin: 0 auto; + padding: 3vw 0 6vw; + max-width: 840px; +} +.author-card, +.post-full-footer { + display: -ms-flexbox; + display: flex; +} +.author-card .author-profile-image, +.author-card .avatar-wrapper { + width: 60px; + height: 60px; +} +.author-card-name { + margin: 8px 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 0.2s ease; +} +.author-card-button:hover { + border-color: #3eb0ef; + color: #3eb0ef; + text-decoration: none; +} +.post-full-authors { + -ms-flex-positive: 1; + flex-grow: 1; + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-align: center; + align-items: center; + margin-top: 20px; + padding-top: 40px; + border-top: 1px solid #e3e9ed; +} +.post-full-authors-content { + margin-bottom: 20px; +} +.post-full-authors-content p { + margin-bottom: 0; + color: #738a94; + font-size: 1.4rem; + letter-spacing: 0.2px; + text-align: center; + text-transform: uppercase; +} +.post-full-authors-content a { + display: inline-block; + color: #424852; + font-size: 1.4rem; + font-weight: 600; + text-transform: uppercase; +} +.post-full-footer .author-list { + -ms-flex-pack: center; + justify-content: center; + padding: 10px 20px; +} +.author-card .author-profile-image, +.author-card .avatar-wrapper { + position: relative; + margin-right: 15px; +} +.author-list-item .author-card { + position: absolute; + bottom: 130%; + left: 50%; + z-index: 300; + display: block; + margin-left: -160px; + width: 320px; + font-size: 1.4rem; + letter-spacing: 0.2px; + background: #fff; + border-radius: 6px; + box-shadow: 0 12px 26px rgba(39, 44, 49, 0.08), + 1px 3px 8px rgba(39, 44, 49, 0.03); + opacity: 0; + transition: all 0.3s cubic-bezier(0.4, 0.01, 0.165, 0.99); + transform: scale(0.98) translateY(15px); + pointer-events: none; +} +.author-list-item .author-card:before { + content: ""; + position: absolute; + top: 100%; + left: 50%; + display: block; + margin-left: -12px; + width: 0; + height: 0; + border-top: 12px solid #fff; + border-right: 12px solid transparent; + border-left: 12px solid transparent; +} +.author-list-item .author-card.hovered { + opacity: 1; + transform: scale(1) translateY(0); + pointer-events: auto; +} +.author-card .basic-info { + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-align: center; + align-items: center; + padding: 30px 20px 20px; + color: #fff; + background: #15171a; + border-radius: 6px 6px 0 0; +} +.author-card .basic-info h2 { + margin: 1em 0 0.5em; +} +.author-card .bio { + padding: 20px 20px 0; +} +@media (max-width: 650px) { + .author-list-item .author-card { + display: none; + } +} +.basic-info .author-profile-image, +.basic-info .avatar-wrapper { + margin: 0; + width: 88px; + height: 88px; + border: none; +} +.basic-info .avatar-wrapper { + position: relative; + background: rgba(229, 239, 245, 0.1); +} +.basic-info .avatar-wrapper svg { + margin: 0; + width: 88px; + height: 88px; + opacity: 0.15; +} +.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, 0.06), + 1px 3px 8px rgba(39, 44, 49, 0.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, 0.8), + rgba(0, 20, 40, 0.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: 0.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: 0.5px; + stroke-opacity: 0.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: -0.5px; +} +.read-next-card-content li a { + display: block; + padding: 20px 0; + border-bottom: 1px solid hsla(0, 0%, 100%, 0.3); + color: #fff; + font-weight: 500; + vertical-align: top; + transition: opacity 0.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, 0.06); + background: hsla(0, 0%, 100%, 0.95); + transition: all 0.5s cubic-bezier(0.19, 1, 0.22, 1); + transform: translate3d(0, -120%, 0); +} +.floating-active { + visibility: visible; + transition: all 0.5s cubic-bezier(0.22, 1, 0.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, 0.7); + font-weight: 500; +} +.floating-header-share-label svg { + margin: 0 5px 0 10px; + width: 18px; + height: 18px; + stroke: rgba(0, 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 0.5s cubic-bezier(0.19, 1, 0.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; + } +} +.post-content { + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-align: center; + align-items: center; + max-width: 920px; +} +.post-template .post-content > p:first-child { + font-size: 1.25em; + line-height: 1.5em; +} +.post-full-content .kg-image { + max-width: 100%; +} +.post-full-image + .post-full-content .kg-content :first-child .kg-image { + width: 100%; +} +.post-full-content .kg-width-wide .kg-image { + max-width: 1040px; +} +.post-full-content .kg-width-full .kg-image { + max-width: 100vw; +} +.post-full-content figure { + margin: 1.5em 0 3em; +} +.post-full-content figure img { + margin: 0; +} +.post-full-content figcaption { + margin: 1em 0 0; + font-size: 80%; + line-height: 1.6em; + text-align: center; +} +.kg-width-full figcaption { + padding: 0 1.5em; +} +.kg-embed-card { + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; + -ms-flex-align: center; + align-items: center; + min-width: 100%; +} +.kg-embed-card .fluid-width-video-wrapper { + margin: 0; +} +@media (max-width: 1040px) { + .post-full-content .kg-width-full .kg-image { + width: 100vw; + } +} +.kg-gallery-container { + display: -ms-flexbox; + display: flex; + -ms-flex-direction: column; + flex-direction: column; + max-width: 1040px; + width: 100vw; +} +.kg-gallery-row { + display: -ms-flexbox; + display: flex; + -ms-flex-direction: row; + flex-direction: row; + -ms-flex-pack: center; + justify-content: center; +} +.kg-gallery-image img { + display: block; + margin: 0; + width: 100%; + height: 100%; +} +.kg-gallery-row:not(:first-of-type) { + margin: 0.75em 0 0; +} +.kg-gallery-image:not(:first-of-type) { + margin: 0 0 0 0.75em; +} +.kg-gallery-card + .kg-gallery-card, +.kg-gallery-card + .kg-image-card.kg-width-wide, +.kg-image-card.kg-width-wide + .kg-gallery-card, +.kg-image-card.kg-width-wide + .kg-image-card.kg-width-wide { + margin: -2.25em 0 3em; +} +.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%, 0.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: 0.5px; + opacity: 0.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: 0.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: 0.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, 0.97); + opacity: 0; + transition: opacity 0.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: 0.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: 0.5px; + -webkit-user-select: text; + -moz-user-select: text; + -ms-user-select: text; + user-select: text; + border-radius: 8px; + transition: border-color 0.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, 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, 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: 0.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%, 0.7); +} +.site-footer-content a:hover { + color: #fff; + text-decoration: none; +} +.site-footer-nav { + display: -ms-flexbox; + display: flex; +} +.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; + } +} +/*# sourceMappingURL=screen.css.map */ diff --git a/assets/built/screen.css.map b/templates/assets/built/screen.css.map similarity index 100% rename from assets/built/screen.css.map rename to templates/assets/built/screen.css.map diff --git a/assets/css/.csscomb.json b/templates/assets/css/.csscomb.json similarity index 100% rename from assets/css/.csscomb.json rename to templates/assets/css/.csscomb.json diff --git a/assets/css/csscomb.json b/templates/assets/css/csscomb.json similarity index 100% rename from assets/css/csscomb.json rename to templates/assets/css/csscomb.json diff --git a/assets/css/global.css b/templates/assets/css/global.css similarity index 100% rename from assets/css/global.css rename to templates/assets/css/global.css diff --git a/templates/assets/css/screen.css b/templates/assets/css/screen.css new file mode 100644 index 0000000..b23e049 --- /dev/null +++ b/templates/assets/css/screen.css @@ -0,0 +1,2296 @@ +/* Table of Contents +/* ------------------------------------------------------------ + +This is a development CSS file which is built to a minified +production stylesheet in assets/built/screen.css + +1. Global Styles +2. Layout +3. Special Templates +4. Site Header +5. Site Navigation +6. Post Feed +7. Single Post + 7.1. Subscribe Form + 7.2. Post Footer + 7.2.1 Single Author Byline + 7.2.2 Multiple Author Byline + 7.3. Comments + 7.4. Related Posts + 7.5. Floating Header + 7.6. Koenig Styles +8. Author Template +9. Error Template +10. Subscribe Overlay +11. Site Footer + +*/ + +/* 1. Global - Set up the things +/* ---------------------------------------------------------- */ +@import "global.css"; + +body { + background: #f4f8fb; +} + +.img { + display: block; + width: 100%; + height: 100%; + background-position: center center; + background-size: cover; + border-radius: 100%; +} + +.hidden { + visibility: hidden; + position: absolute; + text-indent: -9999px; +} + +/* 2. Layout - Page building blocks +/* ---------------------------------------------------------- */ + +.site-wrapper { + display: flex; + flex-direction: column; + min-height: 100vh; +} + +.site-main { + z-index: 100; + flex-grow: 1; +} + +/* Full width page blocks */ +.outer { + position: relative; + padding: 0 4vw; +} + +/* Centered content container blocks */ +.inner { + margin: 0 auto; + max-width: 1040px; + width: 100%; +} + +/* Usage: + +
+
+ Centered content +
+
+ +*/ + +/* 3. Special Template Styles +/* ---------------------------------------------------------- */ + +@media (min-width: 900px) { + .home-template .post-feed, + .tag-template .post-feed, + .author-template .post-feed { + margin-top: -70px; + padding-top: 0; + } + .home-template .site-nav { + position: relative; + top: -70px; + } +} + +/* 4. Site Header +/* ---------------------------------------------------------- */ + +.site-header { + position: relative; + padding-top: 12px; + padding-bottom: 12px; + color: #fff; + background: color(var(--darkgrey) l(-5%)) no-repeat center center; + background-size: cover; +} + +.site-header:before { + content: ""; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 10; + display: block; + background: rgba(0, 0, 0, 0.18); +} + +.site-header:after { + content: ""; + position: absolute; + top: 0; + right: 0; + bottom: auto; + left: 0; + z-index: 10; + display: block; + height: 80px; + background: linear-gradient(rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0)); +} + +.site-header.no-cover:before, +.site-header.no-cover:after { + display: none; +} + +.site-header-content { + display: flex; + flex-direction: column; + justify-content: 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: 0.5px; + opacity: 0.8; +} + +@media (max-width: 500px) { + .site-title { + font-size: 3rem; + } + .site-description { + font-size: 1.8rem; + } +} + +/* 5. Site Navigation +/* ---------------------------------------------------------- */ + +.site-nav { + position: relative; + z-index: 300; + display: flex; + justify-content: space-between; + align-items: flex-start; + overflow-y: hidden; + height: 40px; + font-size: 1.2rem; +} + +.site-nav-left { + display: flex; + align-items: center; + overflow-x: auto; + overflow-y: hidden; + -webkit-overflow-scrolling: touch; + margin-right: 10px; + padding-bottom: 80px; + letter-spacing: 0.4px; + white-space: nowrap; + + -ms-overflow-scrolling: touch; +} + +/* Site Nav Hack Explanation (above): + +What's happening above it .site-nav-left is set to overflow-x and allow sideways scrolling, so that when there isn't enough space for all nav items (either due to lots of nav items, or a small viewport), you can still scroll side-to-side to reach them. + +The knock-on effect of this is ugly browser-scroll bars at the bottom, so 80px of padding-bottom and a 40px fixed height parent (.site-nav) hides that entirely. Slightly hacky code. But nice clean end-result. + +*/ + +.site-nav-logo { + flex-shrink: 0; + display: block; + margin-right: 24px; + padding: 11px 0; + color: #fff; + font-size: 1.7rem; + line-height: 1em; + font-weight: bold; + letter-spacing: -0.5px; +} + +.site-nav-logo:hover { + text-decoration: none; +} + +.site-nav-logo img { + display: block; + width: auto; + height: 21px; +} + +.nav { + display: flex; + margin: 0 0 0 -12px; + padding: 0; + list-style: none; +} + +.nav li { + display: block; + margin: 0; + padding: 0; + text-transform: uppercase; +} + +.nav li a { + display: block; + margin: 0; + font-size: 16px; + padding: 10px 12px; + color: #fff; + opacity: 0.8; +} + +.nav li a:hover { + text-decoration: none; + opacity: 1; +} + +.site-nav-right { + flex-shrink: 0; + display: flex; + align-items: center; + height: 40px; +} + +.social-links { + flex-shrink: 0; + display: flex; + align-items: center; +} + +.social-links a:last-of-type { + padding-right: 20px; +} + +.social-link { + display: flex; + justify-content: center; + align-items: center; + margin: 0; + padding: 10px; + color: #fff; + opacity: 0.8; +} + +.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: #fff 1px solid; + color: #fff; + font-size: 1.2rem; + line-height: 1em; + border-radius: 10px; + opacity: 0.8; +} + +.subscribe-button:hover { + text-decoration: none; + opacity: 1; +} + +.rss-button { + opacity: 0.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; + } +} + +/* 6. Post Feed +/* ---------------------------------------------------------- */ + +.post-feed { + position: relative; + display: flex; + flex-wrap: wrap; + margin: 0 -20px; + padding: 40px 0 0 0; +} + +.post-card { + flex: 1 1 300px; + display: flex; + flex-direction: column; + overflow: hidden; + margin: 0 20px 40px; + min-height: 300px; + background: #fff center center; + background-size: cover; + border-radius: 5px; + box-shadow: rgba(39, 44, 49, 0.06) 8px 14px 38px, + rgba(39, 44, 49, 0.03) 1px 3px 8px; + transition: all 0.5s ease; +} + +.post-card:hover { + box-shadow: rgba(39, 44, 49, 0.07) 8px 28px 50px, + rgba(39, 44, 49, 0.04) 1px 6px 12px; + transition: all 0.4s ease; + transform: translate3D(0, -1px, 0) scale(1.02); +} + +.post-card-image-link { + position: relative; + display: block; + overflow: hidden; + border-radius: 5px 5px 0 0; +} + +.post-card-image { + width: auto; + height: 200px; + background: var(--lightgrey) no-repeat center center; + background-size: cover; +} + +.post-card-content-link { + position: relative; + flex-grow: 1; + display: block; + padding: 25px 25px 0; + color: var(--darkgrey); +} + +.post-card-content-link:hover { + text-decoration: none; +} + +.post-card-tags { + display: block; + margin-bottom: 4px; + color: var(--midgrey); + font-size: 1.2rem; + line-height: 1.15em; + font-weight: 500; + letter-spacing: 0.5px; + text-transform: uppercase; +} + +.post-card-title { + margin-top: 0; +} + +.post-card-content { + flex-grow: 1; + display: flex; + flex-direction: column; + justify-content: space-between; +} + +.post-card-excerpt { + font-family: Georgia, serif; +} + +.post-card-meta { + display: flex; + justify-content: space-between; + align-items: flex-end; + padding: 0 25px 25px; +} + +.author-profile-image, +.avatar-wrapper { + display: block; + width: 100%; + height: 100%; + background: color(var(--lightgrey) l(+10%)); + border-radius: 100%; + + object-fit: cover; +} + +.post-card-meta .profile-image-wrapper, +.post-card-meta .avatar-wrapper { + position: relative; +} + +.author-list { + display: flex; + flex-wrap: wrap-reverse; + margin: 0; + padding: 0; + list-style: none; +} + +.author-list-item { + position: relative; + flex-shrink: 0; + margin: 0; + padding: 0; +} + +.author-list-item:nth-child(1) { + z-index: 10; +} +.author-list-item:nth-child(2) { + z-index: 9; +} +.author-list-item:nth-child(3) { + z-index: 8; +} +.author-list-item:nth-child(4) { + z-index: 7; +} +.author-list-item:nth-child(5) { + z-index: 6; +} +.author-list-item:nth-child(6) { + z-index: 5; +} +.author-list-item:nth-child(7) { + z-index: 4; +} +.author-list-item:nth-child(8) { + z-index: 3; +} +.author-list-item:nth-child(9) { + z-index: 2; +} +.author-list-item:nth-child(10) { + z-index: 1; +} + +.static-avatar { + display: block; + overflow: hidden; + margin: 0 -5px; + width: 34px; + height: 34px; + border: #fff 2px solid; + border-radius: 100%; +} + +.moving-avatar { + display: block; + overflow: hidden; + margin: 0 -6px; + width: 56px; + height: 56px; + border: #fff 2px solid; + border-radius: 100%; + transition: all 0.5s cubic-bezier(0.4, 0.01, 0.165, 0.99) 0.7s; +} + +@media (min-width: 800px) { + .author-list:hover .moving-avatar { + margin: 0; + transition: all 0.3s cubic-bezier(0.4, 0.01, 0.165, 0.99); + } +} + +.author-name-tooltip { + position: absolute; + bottom: 105%; + z-index: 999; + display: block; + padding: 2px 8px; + color: white; + font-size: 1.2rem; + letter-spacing: 0.2px; + white-space: nowrap; + background: var(--darkgrey); + border-radius: 3px; + box-shadow: rgba(39, 44, 49, 0.08) 0 12px 26px, + rgba(39, 44, 49, 0.03) 1px 3px 8px; + opacity: 0; + transition: all 0.3s cubic-bezier(0.4, 0.01, 0.165, 0.99); + transform: translateY(6px); + pointer-events: none; +} + +.author-list-item:hover .author-name-tooltip { + opacity: 1; + transform: translateY(0px); +} + +@media (max-width: 650px) { + .author-name-tooltip { + display: none; + } +} + +.reading-time { + flex-shrink: 0; + margin-left: 20px; + color: var(--midgrey); + font-size: 1.2rem; + line-height: 33px; + font-weight: 500; + letter-spacing: 0.5px; + text-transform: uppercase; +} + +/* Special Styling for home page grid (below): + +The first (most recent) post in the list is styled to be bigger than the others and take over the full width of the grid to give it more emphasis. Wrapped in a media query to make sure this only happens on large viewports / desktop-ish devices. + + */ + +@media (min-width: 795px) { + .home-template .post-feed .post-card:nth-child(6n + 1):not(.no-image) { + flex: 1 1 100%; + flex-direction: row; + } + + .home-template + .post-feed + .post-card:nth-child(6n + 1):not(.no-image) + .post-card-image-link { + position: relative; + 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 { + 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; +} + +/* Adjust some margins for smaller screens */ +@media (max-width: 650px) { + .post-feed { + padding-top: 5vw; + } + .post-card { + margin: 0 20px 5vw; + } +} + +/* 7. Single Post +/* ---------------------------------------------------------- */ + +.post-template .site-main, +.page-template .site-main { + padding-bottom: 4vw; + background: #fff; +} + +.post-full { + position: relative; + z-index: 50; +} +/* ^ Required to make .post-full-content:before/after z-index stacking work */ + +.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: flex; + justify-content: center; + align-items: center; + color: var(--midgrey); + font-size: 1.4rem; + font-weight: 600; + text-transform: uppercase; +} + +.post-full-meta-date { + color: var(--blue); +} + +.post-full-title { + margin: 0; + color: color(var(--darkgrey) l(-5%)); +} + +.date-divider { + display: inline-block; + margin: 0 6px 1px; +} + +.post-full-image { + margin: 0 -10vw -165px; + height: 800px; + background: var(--lightgrey) center center; + 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 { + content: ""; + position: absolute; + top: 15px; + left: -5px; + z-index: -1; + display: block; + width: 20px; + height: 200px; + background: rgba(39, 44, 49, 0.15); + filter: blur(5px); + transform: rotate(-5deg); +} + +.post-full-content:after { + content: ""; + position: absolute; + top: 15px; + right: -5px; + z-index: -1; + display: block; + width: 20px; + height: 200px; + background: rgba(39, 44, 49, 0.15); + filter: blur(5px); + transform: rotate(5deg); +} + +.no-image .post-full-content { + padding-top: 0; +} + +.no-image .post-full-content:before, +.no-image .post-full-content:after { + display: none; +} + +.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 p, +.post-full-content ul, +.post-full-content ol, +.post-full-content dl, +.post-full-content pre, +.post-full-content blockquote, +.post-full-comments, +.footnotes { + min-width: 100%; +} + +.post-full-content li { + word-break: break-word; +} + +.post-full-content li p { + margin: 0; +} + +.post-full-content a { + color: #000; + word-break: break-word; + box-shadow: var(--blue) 0 -1px 0 inset; +} + +.post-full-content a:hover { + color: var(--blue); + text-decoration: none; +} + +.post-full-content strong, +.post-full-content em { + color: color(var(--darkgrey) l(-5%)); +} + +.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; + height: auto; +} +@media (max-width: 1040px) { + .post-full-content img, + .post-full-content video { + width: 100%; + } +} + +/* Full bleed images (#full) +Super neat trick courtesy of @JoelDrapper + +Usage (In Ghost edtior): + +![img](/some/image.jpg#full) + +*/ +.post-full-content img[src$="#full"] { + max-width: none; + width: 100vw; +} + +/* Image captions + +Usage (In Ghost editor): + +![img](/some/image.jpg) +Your image caption + +*/ +.post-full-content img + br + small { + display: block; + margin-top: -3em; + margin-bottom: 1.5em; + text-align: center; +} + +/* Override third party iframe styles */ +.post-full-content iframe { + margin: 0 auto !important; +} + +.post-full-content blockquote { + margin: 0 0 1.5em; + padding: 0 1.5em; + border-left: #3eb0ef 3px solid; +} + +.post-full-content blockquote p { + margin: 0 0 1em 0; + 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: 0.8em; + line-height: 1em; + font-weight: 400 !important; + background: var(--whitegrey); + border-radius: 3px; +} + +.post-full-content p code { + word-break: break-all; +} + +.post-full-content pre { + overflow-x: auto; + margin: 1.5em 0 3em; + padding: 20px; + max-width: 100%; + border: color(var(--darkgrey) l(-10%)) 1px solid; + color: var(--whitegrey); + font-size: 1.4rem; + line-height: 1.5em; + background: color(var(--darkgrey) l(-3%)); + border-radius: 5px; +} + +.post-full-content pre code { + padding: 0; + font-size: inherit; + line-height: inherit; + background: transparent; +} + +.post-full-content pre code :not(span) { + 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: color(var(--lightgrey) l(+10%)); + box-shadow: #fff 0 0 0 5px; + 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: color(var(--darkgrey) l(-5%)); + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, + Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif; +} + +.post-full-content h1 { + margin: 0.5em 0 0.2em 0; + font-size: 4.6rem; + font-weight: 700; +} +@media (max-width: 500px) { + .post-full-content h1 { + font-size: 2.8rem; + } +} + +.post-full-content h2 { + margin: 0.5em 0 0.2em 0; + font-size: 3.6rem; + font-weight: 700; +} +@media (max-width: 500px) { + .post-full-content h2 { + font-size: 2.6rem; + } +} + +.post-full-content h3 { + margin: 0.5em 0 0.2em 0; + font-size: 2.8rem; + font-weight: 700; +} +@media (max-width: 500px) { + .post-full-content h3 { + font-size: 2.2rem; + } +} + +.post-full-content h4 { + margin: 0.5em 0 0.2em 0; + 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: 0.5em 0; + padding: 1em 0 1.5em; + border: 0; + color: var(--blue); + 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 0.5em; + font-size: 2.2rem; + } +} + +.post-full-content h6 { + margin: 0.5em 0 0.2em 0; + 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: var(--blue) !important; + font-size: 1.2rem; + font-weight: bold; + text-decoration: none !important; + box-shadow: none !important; +} + +/* Some grouped styles for smaller viewports */ +@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:before, + .post-full-content:after { + display: none; + } +} + +/* Tables */ +.post-full-content table { + display: inline-block; + overflow-x: auto; + margin: 0.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; +} + +.post-full-content table { + -webkit-overflow-scrolling: touch; + background: radial-gradient( + ellipse at left, + rgba(0, 0, 0, 0.2) 0%, + rgba(0, 0, 0, 0) 75% + ) + 0 center, + radial-gradient( + ellipse at right, + rgba(0, 0, 0, 0.2) 0%, + rgba(0, 0, 0, 0) 75% + ) + 100% center; + 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( + to right, + rgba(255, 255, 255, 1) 50%, + rgba(255, 255, 255, 0) 100% + ); + background-size: 20px 100%; + background-repeat: no-repeat; +} + +.post-full-content table td:last-child { + background-image: linear-gradient( + to left, + rgba(255, 255, 255, 1) 50%, + rgba(255, 255, 255, 0) 100% + ); + background-position: 100% 0; + background-size: 20px 100%; + background-repeat: no-repeat; +} + +.post-full-content table th { + color: var(--darkgrey); + font-size: 1.2rem; + font-weight: 700; + letter-spacing: 0.2px; + text-align: left; + text-transform: uppercase; + background-color: color(var(--whitegrey) l(+4%)); +} + +.post-full-content table th, +.post-full-content table td { + padding: 6px 12px; + border: color(var(--whitegrey) l(-1%) s(-5%)) 1px solid; +} + +/* 7.1. Subscribe Form +/* ---------------------------------------------------------- */ + +.subscribe-form { + margin: 1.5em 0; + padding: 6.5vw 7vw 7vw; + border: color(var(--whitegrey) l(+2%)) 1px solid; + text-align: center; + background: color(var(--whitegrey) l(+4%)); + border-radius: 7px; +} + +.subscribe-form-title { + margin: 0 0 3px 0; + padding: 0; + color: var(--darkgrey); + font-size: 3.5rem; + line-height: 1; + font-weight: 700; +} + +.subscribe-form p { + margin-bottom: 1em; + color: var(--midgrey); + font-size: 2.2rem; + line-height: 1.55em; + letter-spacing: 0.2px; +} + +.subscribe-form form { + display: flex; + justify-content: center; + align-items: center; + margin: 0 auto; + max-width: 420px; +} + +.subscribe-form .form-group { + flex-grow: 1; +} + +.subscribe-email { + display: block; + padding: 10px; + width: 100%; + border: color(var(--lightgrey) l(+7%)) 1px solid; + color: var(--midgrey); + font-size: 1.8rem; + line-height: 1em; + font-weight: normal; + user-select: text; + border-radius: 5px; + transition: border-color 0.15s linear; + + -webkit-appearance: none; +} + +.subscribe-email:focus { + outline: 0; + border-color: color(var(--lightgrey) l(-2%)); +} + +.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, 0.1); + background: linear-gradient( + color(var(--blue) whiteness(+7%)), + color(var(--blue) lightness(-7%) saturation(-10%)) 60%, + color(var(--blue) lightness(-7%) saturation(-10%)) 90%, + color(var(--blue) lightness(-4%) saturation(-10%)) + ); + border-radius: 5px; + box-shadow: 0 0 0 1px inset rgba(0, 0, 0, 0.14); + + -webkit-font-smoothing: subpixel-antialiased; +} + +.subscribe-form button:active, +.subscribe-form button:focus { + background: color(var(--blue) lightness(-9%) saturation(-10%)); +} + +@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 { + flex-direction: column; + } + .subscribe-form .form-group { + width: 100%; + } + .subscribe-form button { + margin: 10px 0 0 0; + width: 100%; + } +} + +/* 7.2. Post Footer +/* ---------------------------------------------------------- */ + +.post-full-footer { + display: flex; + justify-content: space-between; + align-items: center; + margin: 0 auto; + padding: 3vw 0 6vw 0; + max-width: 840px; +} + +/* 7.2.1 Single Author Byline +/* ---------------------------------------------------------- */ + +.author-card { + display: flex; +} + +.author-card .author-profile-image, +.author-card .avatar-wrapper { + margin-right: 15px; + width: 60px; + height: 60px; +} + +.author-card-name { + margin: 8px 0 2px 0; + padding: 0; + font-size: 2rem; +} + +.author-card-name a { + color: var(--darkgrey); + font-weight: 700; +} + +.author-card-name a:hover { + text-decoration: none; +} + +.author-card-content p { + margin: 0; + color: var(--midgrey); + line-height: 1.3em; +} + +.post-full-footer-right { + flex-shrink: 0; + margin-left: 20px; +} + +.author-card-button { + display: block; + padding: 9px 16px; + border: color(var(--midgrey) l(+20%)) 1px solid; + color: var(--midgrey); + font-size: 1.2rem; + line-height: 1; + font-weight: 500; + border-radius: 20px; + transition: all ease 0.2s; +} + +.author-card-button:hover { + border-color: var(--blue); + color: var(--blue); + text-decoration: none; +} + +/* 7.2.2 Multiple Author Byline +/* ---------------------------------------------------------- */ + +.post-full-authors { + flex-grow: 1; + display: flex; + flex-direction: column; + align-items: center; + margin-top: 20px; + padding-top: 40px; + border-top: color(var(--lightgrey) l(+10%)) 1px solid; +} + +.post-full-authors-content { + margin-bottom: 20px; +} + +.post-full-authors-content p { + margin-bottom: 0; + color: var(--midgrey); + font-size: 1.4rem; + letter-spacing: 0.2px; + text-align: center; + text-transform: uppercase; +} + +.post-full-authors-content a { + display: inline-block; + color: color(var(--darkgrey) l(+20%)); + font-size: 1.4rem; + font-weight: 600; + text-transform: uppercase; +} + +.post-full-footer .author-list { + justify-content: center; + padding: 10px 20px; +} + +.author-card .author-profile-image, +.author-card .avatar-wrapper { + position: relative; + margin-right: 15px; +} + +.author-list-item .author-card { + position: absolute; + bottom: 130%; + left: 50%; + z-index: 300; + display: block; + margin-left: -160px; + width: 320px; + font-size: 1.4rem; + letter-spacing: 0.2px; + background: white; + border-radius: 6px; + box-shadow: rgba(39, 44, 49, 0.08) 0 12px 26px, + rgba(39, 44, 49, 0.03) 1px 3px 8px; + opacity: 0; + transition: all 0.3s cubic-bezier(0.4, 0.01, 0.165, 0.99); + transform: scale(0.98) translateY(15px); + pointer-events: none; +} + +.author-list-item .author-card:before { + content: ""; + position: absolute; + top: 100%; + left: 50%; + display: block; + margin-left: -12px; + width: 0; + height: 0; + border-top: 12px solid #fff; + border-right: 12px solid transparent; + border-left: 12px solid transparent; +} + +.author-list-item .author-card.hovered { + opacity: 1; + transform: scale(1) translateY(0px); + pointer-events: auto; +} + +.author-card .basic-info { + display: flex; + flex-direction: column; + align-items: center; + padding: 30px 20px 20px 20px; + color: #fff; + background: var(--darkgrey); + border-radius: 6px 6px 0 0; +} + +.author-card .basic-info h2 { + margin: 1em 0 0.5em; +} + +.author-card .bio { + padding: 20px 20px 0; +} + +@media (max-width: 650px) { + .author-list-item .author-card { + display: none; + } +} + +.basic-info .author-profile-image { + margin: 0; + width: 88px; + height: 88px; + border: none; +} + +.basic-info .avatar-wrapper { + position: relative; + margin: 0; + width: 88px; + height: 88px; + border: none; + background: rgba(229, 239, 245, 0.1); +} + +.basic-info .avatar-wrapper svg { + margin: 0; + width: 88px; + height: 88px; + opacity: 0.15; +} + +/* 7.3. Comments +/* ---------------------------------------------------------- */ + +.post-full-comments { + margin: 0 auto; + max-width: 840px; +} + +/* 7.4. Related posts +/* ---------------------------------------------------------- */ + +.read-next-feed { + display: flex; + flex-wrap: wrap; + margin: 0 -20px; + padding: 40px 0 0 0; +} + +.read-next-card { + position: relative; + flex: 1 1 300px; + display: flex; + flex-direction: column; + overflow: hidden; + margin: 0 20px 40px; + padding: 25px; + color: #fff; + background: var(--darkgrey) center center; + background-size: cover; + border-radius: 5px; + box-shadow: rgba(39, 44, 49, 0.06) 8px 14px 38px, + rgba(39, 44, 49, 0.03) 1px 3px 8px; +} + +.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, 0.8) 0%, + rgba(0, 20, 40, 0.7) 100% + ); + border-radius: 5px; + + 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: 0.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: flex; + justify-content: center; + height: 80px; +} + +.read-next-divider svg { + width: 40px; + fill: transparent; + stroke: #fff; + + stroke-width: 0.5px; + stroke-opacity: 0.65; +} + +.read-next-card-content { + position: relative; + z-index: 50; + flex-grow: 1; + display: flex; + font-size: 1.7rem; +} + +.read-next-card-content ul { + display: flex; + 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: -0.5px; +} + +.read-next-card-content li a { + display: block; + padding: 20px 0; + border-bottom: rgba(255, 255, 255, 0.3) 1px solid; + color: #fff; + font-weight: 500; + vertical-align: top; + transition: opacity 0.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 0; + text-align: center; +} + +.read-next-card-footer a { + color: #fff; +} + +/* 7.5. Floating Header +/* ---------------------------------------------------------- */ + +.floating-header { + visibility: hidden; + position: fixed; + top: 0; + right: 0; + left: 0; + z-index: 1000; + display: flex; + align-items: center; + height: 60px; + border-bottom: rgba(0, 0, 0, 0.06) 1px solid; + background: rgba(255, 255, 255, 0.95); + transition: all 500ms cubic-bezier(0.19, 1, 0.22, 1); + transform: translate3d(0, -120%, 0); +} + +.floating-active { + visibility: visible; + transition: all 500ms cubic-bezier(0.22, 1, 0.27, 1); + transform: translate3d(0, 0, 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: flex; + align-items: center; + color: var(--darkgrey); + 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 { + flex: 1; + overflow: hidden; + margin: 0; + color: #2e2e2e; + font-size: 1.6rem; + line-height: 1.3em; + font-weight: bold; + text-overflow: ellipsis; + white-space: nowrap; +} + +.floating-header-share { + display: flex; + justify-content: flex-end; + align-items: center; + padding-left: 2%; + font-size: 1.3rem; + line-height: 1; +} + +.floating-header-share a { + display: flex; + justify-content: center; + align-items: center; +} + +.floating-header-share svg { + width: auto; + height: 16px; + fill: #fff; +} + +.floating-header-share-label { + flex-shrink: 0; + display: flex; + align-items: center; + margin-right: 10px; + color: rgba(0, 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, 0.7); + transform: rotate(90deg); +} + +.floating-header-share-tw, +.floating-header-share-fb { + display: block; + align-items: center; + width: 60px; + height: 60px; + color: #fff; + line-height: 48px; + text-align: center; + transition: all 500ms cubic-bezier(0.19, 1, 0.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: var(--blue); + background: transparent; + + appearance: none; +} + +.progress::-webkit-progress-bar { + background-color: transparent; +} + +.progress::-webkit-progress-value { + background-color: var(--blue); +} + +.progress::-moz-progress-bar { + background-color: var(--blue); +} + +.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: var(--blue); +} + +@media (max-width: 900px) { + .floating-header { + height: 40px; + } + .floating-header-title, + .floating-header-logo { + font-size: 1.5rem; + } + .floating-header-share-tw, + .floating-header-share-fb { + 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-title, + .floating-header-divider { + visibility: hidden; + } +} + +@media (max-width: 450px) { + .floating-header-share-label { + display: none; + } +} + +/* 7.6. Koenig Styles +/* ---------------------------------------------------------- */ + +.post-content { + display: flex; + flex-direction: column; + align-items: center; + max-width: 920px; +} + +.post-template .post-content > p:first-child { + font-size: 1.25em; + line-height: 1.5em; +} + +.post-full-content .kg-image { + max-width: 100%; +} + +/* Preventing full-width image overlap with post image. */ +.post-full-image + .post-full-content .kg-content *:first-child .kg-image { + width: 100%; +} + +.post-full-content .kg-width-wide .kg-image { + max-width: 1040px; +} + +.post-full-content .kg-width-full .kg-image { + max-width: 100vw; +} + +.post-full-content figure { + margin: 1.5em 0 3em; +} + +.post-full-content figure img { + margin: 0; +} + +.post-full-content figcaption { + margin: 1em 0 0; + font-size: 80%; + line-height: 1.6em; + text-align: center; +} + +.kg-width-full figcaption { + padding: 0 1.5em; +} + +.kg-embed-card { + display: flex; + flex-direction: column; + align-items: center; + min-width: 100%; +} + +.kg-embed-card .fluid-width-video-wrapper { + margin: 0; +} + +@media (max-width: 1040px) { + .post-full-content .kg-width-full .kg-image { + width: 100vw; + } +} + +.kg-gallery-container { + display: flex; + flex-direction: column; + max-width: 1040px; + width: 100vw; +} + +.kg-gallery-row { + display: flex; + flex-direction: row; + justify-content: center; +} + +.kg-gallery-image img { + display: block; + margin: 0; + width: 100%; + height: 100%; +} + +.kg-gallery-row:not(:first-of-type) { + margin: 0.75em 0 0 0; +} + +.kg-gallery-image:not(:first-of-type) { + margin: 0 0 0 0.75em; +} + +.kg-gallery-card + .kg-image-card.kg-width-wide, +.kg-gallery-card + .kg-gallery-card, +.kg-image-card.kg-width-wide + .kg-gallery-card, +.kg-image-card.kg-width-wide + .kg-image-card.kg-width-wide { + margin: -2.25em 0 3em; +} + +/* 8. Author Template +/* ---------------------------------------------------------- */ + +.site-header-content .author-profile-image { + z-index: 10; + flex-shrink: 0; + margin: 0 0 20px 0; + width: 100px; + height: 100px; + box-shadow: rgba(255, 255, 255, 0.1) 0 0 0 6px; +} + +.site-header-content .author-bio { + z-index: 10; + flex-shrink: 0; + margin: 5px 0 10px 0; + max-width: 600px; + font-size: 2rem; + line-height: 1.3em; + font-weight: 300; + letter-spacing: 0.5px; + opacity: 0.8; +} + +.site-header-content .author-meta { + z-index: 10; + flex-shrink: 0; + display: flex; + justify-content: center; + align-items: center; + margin: 0 0 10px 0; + 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: 0.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; + } +} + +/* 9. Error Template +/* ---------------------------------------------------------- */ + +.error-template .site-main { + padding: 7vw 4vw; +} + +.site-nav-center { + display: flex; + justify-content: 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: 0.3; +} + +.error-description { + margin: 0; + color: var(--midgrey); + font-size: 3rem; + line-height: 1.3em; + font-weight: 400; +} + +@media (max-width: 800px) { + .error-description { + margin: 5px 0 0 0; + font-size: 1.8rem; + } +} + +.error-link { + display: inline-block; + margin-top: 5px; +} + +.error-template .post-feed { + padding-top: 0; +} + +/* 10. Subscribe Overlay +/* ---------------------------------------------------------- */ + +.subscribe-overlay { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 9000; + display: flex; + justify-content: center; + align-items: center; + background: rgba(0, 25, 40, 0.97); + opacity: 0; + transition: opacity 200ms ease-in; + pointer-events: none; + + backdrop-filter: blur(3px); +} + +.subscribe-overlay:target { + opacity: 1; + pointer-events: auto; +} + +.subscribe-overlay-content { + position: relative; + z-index: 9999; + margin: 0 0 5vw 0; + 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 0; + 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: 0.8; +} + +.subscribe-overlay form { + display: flex; + justify-content: center; + align-items: center; + margin: 0 auto; + max-width: 500px; +} + +.subscribe-overlay .form-group { + flex-grow: 1; +} + +.subscribe-overlay .subscribe-email { + display: block; + padding: 14px 20px; + width: 100%; + border: none; + color: var(--midgrey); + font-size: 2rem; + line-height: 1em; + font-weight: normal; + letter-spacing: 0.5px; + user-select: text; + border-radius: 8px; + transition: border-color 0.15s linear; + + -webkit-appearance: none; +} + +.subscribe-email:focus { + outline: 0; + border-color: color(var(--lightgrey) l(-2%)); +} + +.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, 0.1); + background: linear-gradient( + color(var(--blue) whiteness(+7%)), + color(var(--blue) lightness(-7%) saturation(-10%)) 60%, + color(var(--blue) lightness(-7%) saturation(-10%)) 90%, + color(var(--blue) lightness(-4%) saturation(-10%)) + ); + border-radius: 8px; + box-shadow: 0 0 0 1px inset rgba(0, 0, 0, 0.14); + + -webkit-font-smoothing: subpixel-antialiased; +} + +.subscribe-overlay button:active, +.subscribe-overlay button:focus { + background: color(var(--blue) lightness(-9%) saturation(-10%)); +} + +.subscribe-overlay-close { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + display: block; +} + +.subscribe-overlay-close:before { + content: ""; + position: absolute; + top: 40px; + right: 25px; + display: block; + width: 30px; + height: 2px; + background: #fff; + opacity: 0.8; + transform: rotate(45deg); +} + +.subscribe-overlay-close:after { + content: ""; + position: absolute; + top: 40px; + right: 25px; + display: block; + width: 30px; + height: 2px; + background: #fff; + opacity: 0.8; + transform: rotate(-45deg); +} + +.subscribe-overlay-close:hover { + cursor: default; +} + +/* 11. Site Footer +/* ---------------------------------------------------------- */ + +.site-footer { + position: relative; + padding-top: 20px; + padding-bottom: 60px; + color: #fff; + background: color(var(--darkgrey) l(-15%)); +} + +.site-footer-content { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + align-items: center; + color: rgba(255, 255, 255, 0.7); + font-size: 1.3rem; +} + +.site-footer-content a { + color: rgba(255, 255, 255, 0.7); +} + +.site-footer-content a:hover { + color: rgba(255, 255, 255, 1); + text-decoration: none; +} + +.site-footer-nav { + display: flex; +} + +.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 { + flex-direction: column; + } + .site-footer-nav a:first-child { + margin-left: 0; + } +} diff --git a/assets/images/blog-cover.jpg b/templates/assets/images/blog-cover.jpg similarity index 100% rename from assets/images/blog-cover.jpg rename to templates/assets/images/blog-cover.jpg diff --git a/templates/assets/js/infinitescroll.js b/templates/assets/js/infinitescroll.js new file mode 100644 index 0000000..8366565 --- /dev/null +++ b/templates/assets/js/infinitescroll.js @@ -0,0 +1,123 @@ +/* global maxPages */ + +// Code snippet inspired by https://github.com/douglasrodrigues5/ghost-blog-infinite-scroll +$(function ($) { + var currentPage = 1; + var pathname = window.location.pathname; + var $document = $(document); + var $result = $(".post-feed"); + var buffer = 300; + + var ticking = false; + var isLoading = false; + + var lastScrollY = window.scrollY; + var lastWindowHeight = window.innerHeight; + var lastDocumentHeight = $document.height(); + + function onScroll() { + lastScrollY = window.scrollY; + requestTick(); + } + + function onResize() { + lastWindowHeight = window.innerHeight; + lastDocumentHeight = $document.height(); + requestTick(); + } + + function requestTick() { + if (!ticking) { + requestAnimationFrame(infiniteScroll); + } + ticking = true; + } + + function sanitizePathname(path) { + var paginationRegex = /(?:page\/)(\d)(?:\/)$/i; + + // remove hash params from path + path = path.replace(/#(.*)$/g, "").replace("////g", "/"); + + // remove pagination from the path and replace the current pages + // with the actual requested page. E. g. `/page/3/` indicates that + // the user actually requested page 3, so we should request page 4 + // next, unless it's the last page already. + if (path.match(paginationRegex)) { + currentPage = parseInt(path.match(paginationRegex)[1]); + + path = path.replace(paginationRegex, ""); + } + + return path; + } + + function infiniteScroll() { + // sanitize the pathname from possible pagination or hash params + pathname = sanitizePathname(pathname); + + // return if already loading + if (isLoading) { + return; + } + + // return if not scroll to the bottom + if (lastScrollY + lastWindowHeight <= lastDocumentHeight - buffer) { + ticking = false; + return; + } + + /** + * maxPages is defined in default.hbs and is the value + * of the amount of pagination pages. + * If we reached the last page or are past it, + * we return and disable the listeners. + */ + if (currentPage >= maxPages) { + window.removeEventListener("scroll", onScroll, { passive: true }); + window.removeEventListener("resize", onResize); + return; + } + + isLoading = true; + + // next page + currentPage += 1; + + if (pathname.charAt(pathname.length - 1) != "/") { + pathname = pathname + "/"; + } + + // Load more + var nextPage = pathname + "page/" + currentPage; + console.log(pathname); + console.log(nextPage, 1111); + + $.get(nextPage, function (content) { + var parse = document.createRange().createContextualFragment(content); + var posts = parse.querySelectorAll(".post"); + if (posts.length) { + [].forEach.call(posts, function (post) { + $result[0].appendChild(post); + }); + } + }) + .fail(function (xhr) { + // 404 indicates we've run out of pages + if (xhr.status === 404) { + window.removeEventListener("scroll", onScroll, { passive: true }); + window.removeEventListener("resize", onResize); + } + }) + .always(function () { + lastDocumentHeight = $document.height(); + isLoading = false; + ticking = false; + }); + } + + window.addEventListener("scroll", onScroll, { passive: true }); + window.addEventListener("resize", onResize); + + infiniteScroll(); +}); diff --git a/assets/js/jquery.fitvids.js b/templates/assets/js/jquery.fitvids.js similarity index 100% rename from assets/js/jquery.fitvids.js rename to templates/assets/js/jquery.fitvids.js diff --git a/assets/js/jquery.min.js b/templates/assets/js/jquery.min.js similarity index 100% rename from assets/js/jquery.min.js rename to templates/assets/js/jquery.min.js diff --git a/assets/js/vue.min.js b/templates/assets/js/vue.min.js similarity index 100% rename from assets/js/vue.min.js rename to templates/assets/js/vue.min.js diff --git a/assets/prism/css/prism-Coy.css b/templates/assets/prism/css/prism-Coy.css similarity index 100% rename from assets/prism/css/prism-Coy.css rename to templates/assets/prism/css/prism-Coy.css diff --git a/assets/prism/css/prism-Dark.css b/templates/assets/prism/css/prism-Dark.css similarity index 100% rename from assets/prism/css/prism-Dark.css rename to templates/assets/prism/css/prism-Dark.css diff --git a/assets/prism/css/prism-Default.css b/templates/assets/prism/css/prism-Default.css similarity index 100% rename from assets/prism/css/prism-Default.css rename to templates/assets/prism/css/prism-Default.css diff --git a/assets/prism/css/prism-Okaidia.css b/templates/assets/prism/css/prism-Okaidia.css similarity index 100% rename from assets/prism/css/prism-Okaidia.css rename to templates/assets/prism/css/prism-Okaidia.css diff --git a/assets/prism/css/prism-Solarized Light.css b/templates/assets/prism/css/prism-Solarized Light.css similarity index 100% rename from assets/prism/css/prism-Solarized Light.css rename to templates/assets/prism/css/prism-Solarized Light.css diff --git a/assets/prism/css/prism-Tomorrow Night.css b/templates/assets/prism/css/prism-Tomorrow Night.css similarity index 100% rename from assets/prism/css/prism-Tomorrow Night.css rename to templates/assets/prism/css/prism-Tomorrow Night.css diff --git a/assets/prism/css/prism-Twilight.css b/templates/assets/prism/css/prism-Twilight.css similarity index 100% rename from assets/prism/css/prism-Twilight.css rename to templates/assets/prism/css/prism-Twilight.css diff --git a/assets/prism/js/prism.js b/templates/assets/prism/js/prism.js similarity index 100% rename from assets/prism/js/prism.js rename to templates/assets/prism/js/prism.js diff --git a/assets/screenshot-desktop.jpg b/templates/assets/screenshot-desktop.jpg similarity index 100% rename from assets/screenshot-desktop.jpg rename to templates/assets/screenshot-desktop.jpg diff --git a/assets/screenshot-mobile.jpg b/templates/assets/screenshot-mobile.jpg similarity index 100% rename from assets/screenshot-mobile.jpg rename to templates/assets/screenshot-mobile.jpg diff --git a/templates/category.html b/templates/category.html new file mode 100644 index 0000000..08edc59 --- /dev/null +++ b/templates/category.html @@ -0,0 +1,51 @@ + + + + +
+
+
+ + + +
+
+
+ + + + +
+ diff --git a/templates/index.html b/templates/index.html new file mode 100644 index 0000000..a7494a0 --- /dev/null +++ b/templates/index.html @@ -0,0 +1,83 @@ + + + + + + + + + +
+
+
+ + + +
+
+
+ + + + + +
+ diff --git a/templates/layout.html b/templates/layout.html new file mode 100644 index 0000000..26a947b --- /dev/null +++ b/templates/layout.html @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+ + + diff --git a/templates/links.html b/templates/links.html new file mode 100644 index 0000000..bf20c5e --- /dev/null +++ b/templates/links.html @@ -0,0 +1,56 @@ + + + + +
+
+
+
+

友情链接

+
+ +
+
+ +
+ +
+
    +
  • + + +
  • +
+
+
+
+
+
+
+ + + + +
+ diff --git a/templates/page.html b/templates/page.html new file mode 100644 index 0000000..a9c7237 --- /dev/null +++ b/templates/page.html @@ -0,0 +1,52 @@ + + + + +
+
+
+
+

+
+ + +
+
+
+
+
+ +
+ +
+
+
+
+ +
+ diff --git a/templates/partials/byline-multiple.html b/templates/partials/byline-multiple.html new file mode 100644 index 0000000..e00f433 --- /dev/null +++ b/templates/partials/byline-multiple.html @@ -0,0 +1,73 @@ +
+ +
+ + + + + + + + + + +
+

+ +

+ +

+
+ +

Read more posts by this author.

+
+
+
+
+ Read More +
+
+ + +
diff --git a/templates/partials/byline-single.html b/templates/partials/byline-single.html new file mode 100644 index 0000000..9b8666e --- /dev/null +++ b/templates/partials/byline-single.html @@ -0,0 +1,41 @@ +
+ + + + + + + + + + +
+

+ +

+ +

+
+ +

Read more posts by this author.

+
+
+
+
+ Read More +
diff --git a/templates/partials/floating-header.html b/templates/partials/floating-header.html new file mode 100644 index 0000000..2946be0 --- /dev/null +++ b/templates/partials/floating-header.html @@ -0,0 +1,54 @@ +
+ + +
+
+
Share this
+ + + + + + + + + + +
+ +
+ +
+
+
diff --git a/templates/partials/footer.html b/templates/partials/footer.html new file mode 100644 index 0000000..9854772 --- /dev/null +++ b/templates/partials/footer.html @@ -0,0 +1,21 @@ + diff --git a/templates/partials/post-card.html b/templates/partials/post-card.html new file mode 100644 index 0000000..d22ab61 --- /dev/null +++ b/templates/partials/post-card.html @@ -0,0 +1,37 @@ +
+ + +
+
+
+
+ +
+ + + +

+
+
+

+
+
+
+
    +
  • +
    +
  • +
+ +
+
+
diff --git a/templates/partials/post-copyright.html b/templates/partials/post-copyright.html new file mode 100644 index 0000000..f118904 --- /dev/null +++ b/templates/partials/post-copyright.html @@ -0,0 +1,30 @@ + +
+
+
    +
  • + 本文作者: + +
  • +
  • + 本文链接: + + +
  • +
  • + 版权声明: + 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 + 许可协议。转载请注明出处! +
  • +
+
+
diff --git a/templates/partials/site-nav.html b/templates/partials/site-nav.html new file mode 100644 index 0000000..afb4f3f --- /dev/null +++ b/templates/partials/site-nav.html @@ -0,0 +1,266 @@ + diff --git a/templates/post.html b/templates/post.html new file mode 100644 index 0000000..74481f9 --- /dev/null +++ b/templates/post.html @@ -0,0 +1,138 @@ + + + + +
+
+
+
+
+ + + / + + +
+ +

+
+ +
+
+
+
+ + + +
+
+
+ + + + + + + +
+ +
+ +
+
+
+
+ + + +
+ diff --git a/templates/tag.html b/templates/tag.html new file mode 100644 index 0000000..385cf8c --- /dev/null +++ b/templates/tag.html @@ -0,0 +1,46 @@ + + + + +
+
+
+ + + +
+
+
+ + + + +
+ diff --git a/theme.yaml b/theme.yaml index d5087af..f97d051 100644 --- a/theme.yaml +++ b/theme.yaml @@ -1,11 +1,17 @@ -id: ghost_casper -name: Casper -author: - name: Ghost - website: https://ghost.org -description: -logo: https://avatars1.githubusercontent.com/u/2178663?s=200&v=4 -website: https://github.com/halo-dev/halo-theme-casper -repo: https://github.com/halo-dev/halo-theme-casper -version: 1.8 -require: 1.3.0 \ No newline at end of file +apiVersion: theme.halo.run/v1alpha1 +kind: Theme +spec: + displayName: Casper + author: + name: Ghost + website: https://ghost.org + description: + logo: https://avatars1.githubusercontent.com/u/2178663?s=200&v=4 + website: https://github.com/halo-dev/halo-theme-casper + repo: https://github.com/halo-dev/halo-theme-casper + settingName: theme-casper-setting + configMapName: theme-casper-configMap + version: 2.0.0 + require: ">=2.8.0" +metadata: + name: halo-theme-casper