diff options
26 files changed, 945 insertions, 3101 deletions
@@ -1,6 +1,4 @@ -.stack-work/ /var/ /dist-newstyle/ /dist/ /deployment.txt -/.dart_tool/ diff --git a/assets/_sass/_layout.scss b/assets/_sass/_layout.scss deleted file mode 100644 index a27b8a7..0000000 --- a/assets/_sass/_layout.scss +++ /dev/null @@ -1,171 +0,0 @@ -.site-header { - display: grid; - justify-content: center; - padding: 0 20px; - text-align: center; - - .site-header-wrapper { - position: relative; - overflow: hidden; - background: var(--main-color); - padding: 10px 25px 20px 25px; - border-radius: 0 0 5px 5px; - text-decoration: none; - - transition: background .2s ease; - - &:before { - position: absolute; - top: 0; - left: -150%; - content: ""; - width: 50%; - height: 100%; - background: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, .3) 100%); - transform: skew(-45deg, 0); - } - &:hover { - background: var(--main-color-hover); - &:before { - animation: headerShine .35s; - } - } - .site-logo { display: block; margin: 0 0 10px; - img { - display: block; - } - } - .site-subtitle { - display: block; - font-family: 'Bebas Neue', sans-serif; - font-size: 11px; - line-height: 14px; - color: var(--grey-fc); - } - .site-title { - display: block; - font-family: 'Bebas Neue', sans-serif; - font-size: 26px; - line-height: 28px; - color: var(--grey-fc); - } - } -} - -.site-navigation { - display: flex; - justify-content: center; - align-items: center; - flex-flow: row wrap; - gap: 10px 40px; - max-width: 800px; - margin: 30px auto 0; - padding: 0 20px; - text-align: center; - - a, span { - position: relative; - text-decoration: none; - color: var(--grey-555); - padding: 0 0 2px; - transition: color .2s ease; - cursor: pointer; - - &:before { - position: absolute; - opacity: 0; - left: 0; - bottom: 0; - width: 0%; - border-bottom: 2px solid var(--grey-222); - - transition: width .18s ease, opacity .18s ease; - content: ""; - } - - &:hover, &.active { color: var(--grey-222); - &:before { - width: 100%; opacity: 1; - } - } - } -} - -@media screen and (max-width: 800px) { - .site-header { - position: fixed; - left: 0; - top: 0; - width: 100%; - z-index: 9; - background: var(--body-bg); - box-shadow: 0 2px 5px rgba(0, 0, 0, .1); - - .site-header-wrapper { - display: flex; - align-items: center; - justify-content: center; - flex-flow: row wrap; - gap: 0 15px; - border-radius: 0; - padding: 20px; - background: transparent; - - &:hover { - background: transparent; - } - .site-logo, - .site-subtitle { - display: none; - } - .site-title { - font-size: 32px; - line-height: 36px; - color: var(--main-color); - } - } - } - - .site-navigation { - position: fixed; - bottom: 0; - left: 0; - width: 100%; - height: 100%; - justify-content: flex-start; - flex-flow: column nowrap; - gap: 20px 0; - transform: translate(0, -100%); - transition: transform .25s ease-in-out; - padding: 100px 20px 0; - background: rgba(255, 255, 255, .9); - z-index: 10; - - a, span { - color: var(--grey-222); - font-size: 30px; - line-height: 40px; - } - } -} - -.wrapper { - max-width: 600px; - margin: 0 auto; - padding: 0 20px 35px; - border-bottom: 1px solid var(--grey-eee); - - &.long { - max-width: 800px; - } -} - -.site-footer { - max-width: 800px; - margin: 0 auto; - padding: 40px 20px; - font-size: 14px; - line-height: 22px; - color: var(--grey-ccc); - text-align: center; -} diff --git a/assets/_sass/components/_page.scss b/assets/_sass/components/_page.scss deleted file mode 100644 index 020e8b6..0000000 --- a/assets/_sass/components/_page.scss +++ /dev/null @@ -1,174 +0,0 @@ -.page { - .page-title { - margin: 0 0 25px; - font-family: "PT Sans", sans-serif; - font-size: 32px; - line-height: 42px; - font-weight: 700; - color: var(--grey-222); - } - .page-content { - abbr { - border-bottom: 1px dotted var(--grey-555); - text-decoration: none; - cursor: help; - } - code, - kbd, - pre { - margin: 0; - font-family: monospace; - word-wrap: break-word; - word-break: break-word; - white-space: pre-wrap; - } - address, - cite, - var { - font-style: italic; - } - blockquote { - margin: 40px 0; - padding: 0 0 0 20px; - border-left: 3px solid var(--grey-555); - color: var(--grey-222); - font-weight: 700; - } - em, - strong { - color: var(--grey-222); - } - - h1, - h2, - h3, - h4, - h5, - h6 { - font-family: "PT Sans", sans-serif; - margin: 40px 0 25px 0; - color: var(--grey-222); - } - h4, - h5, - h6 { - margin: 25px 0; - } - h1 { - font-size: 28px; - } - h2 { - font-size: 26px; - } - h3 { - font-size: 22px; - } - h4 { - font-size: 20px; - } - h5 { - font-size: 18px; - } - h6 { - font-size: 16px; - } - - a { - color: var(--main-color); - &:hover { - text-decoration: none; - } - } - - img { - display: block; - max-width: 100%; - height: auto; - } - - ul { - list-style-type: disc; - list-style-position: inside; - } - - ul, - ol { - margin: 15px 0; - padding: 0 0 0 20px; - ul, - ol { - padding: 0 0 0 20px; - } - li { - margin: 5px 0; - & > code { - font-size: 14px; - padding: 3px 6px; - margin: 0 4px; - background: var(--grey-fa); - border: 1px solid var(--grey-ccc); - } - } - } - - dl { - margin: 40px 0; - dt { - margin: 10px 0 0; - font-weight: 700; - } - dd { - margin: 5px 0; - & > code { - font-size: 14px; - padding: 3px 6px; - margin: 0 4px; - background: var(--grey-fa); - border: 1px solid var(--grey-ccc); - } - } - } - - p { - margin: 15px 0; - & > code { - font-size: 14px; - padding: 3px 6px; - margin: 0 4px; - background: var(--grey-fa); - border: 1px solid var(--grey-ccc); - } - } - - .alignleft { - float: left; - margin: 20px 30px 10px 0; - } - .alignright { - float: right; - margin: 20px 0 10px 20px; - } - .aligncenter { - clear: both; - margin: 0 auto 20px; - } - - figcaption { - font-size: 13px; - font-style: italic; - padding-top: 10px; - } - - .iframe-wrapper { - position: relative; - padding-top: 56.25%; - & > iframe { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - } - } - } -} diff --git a/assets/_sass/components/_pagination.scss b/assets/_sass/components/_pagination.scss deleted file mode 100644 index 5387af8..0000000 --- a/assets/_sass/components/_pagination.scss +++ /dev/null @@ -1,20 +0,0 @@ -.pagination { - display: grid; - grid-template-columns: 100px 1fr 100px; - margin: 50px 0 0; - font-size: 16px; - - .previous, - .next { - text-decoration: none; - color: var(--grey-555); - - &:hover { - text-decoration: underline; - } - } - .page_number { - text-align: center; - color: var(--grey-ccc); - } -} diff --git a/assets/_sass/components/_post.scss b/assets/_sass/components/_post.scss deleted file mode 100644 index 5abeb15..0000000 --- a/assets/_sass/components/_post.scss +++ /dev/null @@ -1,445 +0,0 @@ -.post-lists-title { - font-family: 'PT Sans', sans-serif; - font-size: 24px; - line-height: 42px; - font-weight: 700; - color: var(--grey-aaa); - margin: 0 0 40px; - text-align: center; - - span { - color: var(--grey-222); - } -} - -.post-list { - display: grid; - gap: 100px 0; -} - -.post { - position: relative; - - .post-title { - margin: 0 0 25px; - font-family: 'PT Sans', sans-serif; - font-size: 32px; - line-height: 42px; - font-weight: 700; - color: var(--grey-222); - - a { - color: var(--grey-222); - text-decoration: none; - - &:hover { - text-decoration: underline; - } - } - } - - .post-author { - position: absolute; - top: 10px; - left: -200px; - width: 150px; - text-align: right; - - .author-avatar { - display: inline-block; - width: 50px; - height: 50px; - border-radius: 50%; - fill: currentColor; - color: var(--grey-ddd); - } - .author-info { - .author-name { - display: block; - margin: 10px 0 4px; - font-family: 'PT Sans', sans-serif; - font-size: 16px; - line-height: 20px; - font-weight: 700; - color: var(--grey-222); - text-transform: uppercase; - } - .author-title { - display: block; - font-size: 12px; - line-height: 16px; - font-style: italic; - color: var(--grey-aaa); - } - } - - .post-meta { - position: relative; - margin: 15px 0 0; - padding: 15px 0 0; - line-height: 20px; - font-size: 14px; - color: var(--grey-aaa); - - &:before { - position: absolute; - top: 0; - right: 0; - width: 30px; - height: 1px; - background: var(--grey-ddd); - content: ""; - } - - .post-date { - position: relative; - margin: 0 5px 0 0; - padding: 0 10px 0 0; - - &:after { - position: absolute; - top: 50%; - right: 0; - width: 3px; - height: 3px; - border-radius: 50%; - background: var(--grey-ccc); - content: ""; - } - } - .post-categories { - position: relative; - display: flex; - justify-content: flex-end; - gap: 5px; - margin: 8px 0 0; - - a { - color: var(--main-color); - text-decoration: none; - - &:hover { - text-decoration: underline; - } - } - } - } -} - -.post-content { - abbr { - border-bottom: 1px dotted var(--grey-555); - text-decoration: none; - cursor: help; - } - code, kbd, pre { - margin: 0; - font-family: monospace; - word-wrap: break-word; - word-break: break-word; - white-space: pre-wrap; - } - address, cite, var { - font-style: italic; - } - blockquote { - margin: 40px 0; - padding: 0 0 0 20px; - border-left: 3px solid var(--grey-555); - color: var(--grey-222); - font-weight: 700; - } - em, strong { - color: var(--grey-222); - } - - h1, h2, h3, h4, h5, h6 { - font-family: 'PT Sans', sans-serif; - margin: 40px 0 25px 0; - color: var(--grey-222); - } - h4, h5, h6 { - margin: 25px 0; - } - h1 { - font-size: 28px; - } - h2 { - font-size: 26px; - } - h3 { - font-size: 22px; - } - h4 { - font-size: 20px; - } - h5 { - font-size: 18px; - } - h6 { - font-size: 16px; - } - - a { - color: var(--main-color); - - &:hover { - text-decoration: none; - } - } - img { - display: block; - max-width: 100%; - height: auto; - } - - ul { - list-style-type: disc; - list-style-position: inside; - } - - ul, ol { - margin: 15px 0; - padding: 0 0 0 20px; - - ul, ol { - padding: 0 0 0 20px; - } - li { - margin: 5px 0; - - & > code { - font-size: 14px; - padding: 3px 6px; - margin: 0 4px; - background: var(--grey-fa); - border: 1px solid var(--grey-ccc); - } - } - } - - dl { - margin: 40px 0; - - dt { - margin: 10px 0 0; - font-weight: 700; - } - dd { - margin: 5px 0; - - & > code { - font-size: 14px; - padding: 3px 6px; - margin: 0 4px; - background: var(--grey-fa); - border: 1px solid var(--grey-ccc); - } - } - } - p { - margin: 15px 0; - - & > code { - font-size: 14px; - padding: 3px 6px; - margin: 0 4px; - background: var(--grey-fa); - border: 1px solid var(--grey-ccc); - } - } - - .alignleft { - float: left; - margin: 20px 30px 10px 0; - } - .alignright { - float: right; - margin: 20px 0 10px 20px; - } - .aligncenter { - clear: both; - margin: 0 auto 20px; - } - - figcaption { - font-size: 13px; - font-style: italic; - padding-top: 10px; - } - - .iframe-wrapper { - position: relative; - padding-top: 56.25%; - - & > iframe { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; - } - } - - .read-more-button { - font-size: 16px; - color: var(--grey-555); - } -} - -.post-footer { - display: flex; - justify-content: space-between; - align-items: flex-start; - gap: 0 20px; - margin: 50px 0 0; - - .post-tags { - display: flex; - flex-flow: row wrap; - flex: 9 1 auto; - gap: 0 20px; - list-style: none; - margin: 0; - padding: 0; - - li { - a { - font-size: 14px; - font-family: 'PT Sans', sans-serif; - color: var(--grey-ccc); - text-decoration: none; - transition: all .15s ease; - &:hover { - color: var(--grey-555); - } - } - } - } - .post-share { - position: relative; - flex: 0 0 auto; - border: 1px solid var(--grey-ddd); - overflow: hidden; - - &:hover { - & > span { - margin-left: -100%; - } - & > ul { - left: 0; - } - } - span { - display: block; - width: 100%; - padding: 0 15px; - font-family: 'PT Sans', sans-serif; - font-size: 12px; - text-transform: uppercase; - text-align: center; - letter-spacing: .1em; - color: var(--grey-aaa); - cursor: pointer; - transition: margin .2s ease; - } - ul { - position: absolute; - top: 0; - left: 100%; - width: 100%; - height: 100%; - display: flex; - list-style: none; - margin: 0; - padding: 0; - transition: left .2s ease; - - li { - flex: 1 0 auto; - cursor: pointer; - - &:last-child { - border-left: 1px solid var(--grey-ddd); - } - a { - display: flex; - align-items: center; - justify-content: center; - height: 100%; - color: var(--grey-ccc); - &:hover { - background: var(--grey-eee); - } - svg { - fill: currentColor; - } - } - } - } - } - } - .post-comments { - position: relative; - margin: 40px 0 0; - padding: 20px 0 0; - border-top: 1px solid var(--grey-ddd); - } -} - - -@media screen and (max-width: 960px) { - .post { - .post-title { - margin: 0 0 15px; - } - .post-author { - display: flex; - align-items: center; - flex-flow: row wrap; - gap: 15px; - position: static; - width: 100%; - margin: 0 0 20px; - text-align: left; - .author-avatar { - width: 36px; - height: 36px; - } - .author-info { - .author-name { - margin: 0; - color: var(--grey-555); - text-transform: initial; - } - .author-title { display: none; } - } - .post-meta { - display: flex; - flex-flow: row wrap; - margin: 0; - margin-left: auto; - padding: 0; - - &:before { - content: none; - } - .post-categories { - margin: 0 0 0 5px; - padding: 0 0 0 10px; - - &:before { - position: absolute; - top: 50%; - left: 0; - width: 3px; - height: 3px; - border-radius: 50%; - background: var(--grey-ccc); - content: ""; - } - } - } - } - } -} diff --git a/assets/_sass/main.scss b/assets/_sass/main.scss deleted file mode 100644 index 7215fc7..0000000 --- a/assets/_sass/main.scss +++ /dev/null @@ -1,20 +0,0 @@ -@import 'base/vars'; -@import 'base/reset'; -@import 'base/fonts'; -@import 'base/syntax'; -@import 'base/animations'; - -/* Layout */ -@import 'layout'; - -/* Pages */ -@import 'pages/fourofour'; - -/* Components */ -@import 'components/post'; -@import 'components/page'; -@import 'components/pagination'; - -/* Partials */ -@import 'partials/header-separator'; -@import 'partials/burger-menu'; diff --git a/assets/_sass/partials/_burger-menu.scss b/assets/_sass/partials/_burger-menu.scss deleted file mode 100644 index 573e406..0000000 --- a/assets/_sass/partials/_burger-menu.scss +++ /dev/null @@ -1,68 +0,0 @@ -.toggleBurger { - display: none; - - &:checked { - & ~ .site-navigation { - transform: translate(0, 0); - } - & ~ .toggleBurgerWrapper { - span { - background: transparent; - &:before { - top: 0; - transform: rotate(135deg); - } - &:after { - top: 0; - transform: rotate(-135deg); - } - } - } - } -} - -.toggleBurgerWrapper { - display: none; - position: fixed; - top: 20px; - left: 20px; - width: 25px; - height: 30px; - cursor: pointer; - z-index: 100; - user-select: none; - - span { - position: absolute; - top: 50%; - height: 2px; - width: 100%; - background: var(--grey-222); - - transition: all .3s ease; - transform: translate(0, -50%); - - &:before, - &:after { - position: absolute; - height: 2px; - width: 100%; - background: var(--grey-222); - content: ""; - - transition: all .3s ease; - } - &:before { - top: -6px; - } - &:after { - top: 6px; - } - } -} - -@media screen and (max-width: 800px) { - .toggleBurgerWrapper { - display: block; - } -} diff --git a/assets/_sass/partials/_header-separator.scss b/assets/_sass/partials/_header-separator.scss deleted file mode 100644 index da5a007..0000000 --- a/assets/_sass/partials/_header-separator.scss +++ /dev/null @@ -1,27 +0,0 @@ -.header-content-separator { - position: relative; - margin: 40px auto; - width: 4px; - height: 4px; - border-radius: 50%; - background: var(--grey-ccc); - - &:before { - position: absolute; - left: -8px; - width: 4px; - height: 4px; - border-radius: 50%; - background: var(--grey-ccc); - content: ""; - } - &:after { - position: absolute; - left: 8px; - width: 4px; - height: 4px; - border-radius: 50%; - background: var(--grey-ccc); - content: ""; - } -} diff --git a/assets/_sass/base/_animations.scss b/assets/css/base/animations.css index 9bbe938..9bbe938 100644 --- a/assets/_sass/base/_animations.scss +++ b/assets/css/base/animations.css diff --git a/assets/_sass/base/_fonts.scss b/assets/css/base/fonts.css index 56be318..56be318 100644 --- a/assets/_sass/base/_fonts.scss +++ b/assets/css/base/fonts.css diff --git a/assets/_sass/base/_reset.scss b/assets/css/base/reset.css index 8e0f0f3..8e0f0f3 100644 --- a/assets/_sass/base/_reset.scss +++ b/assets/css/base/reset.css diff --git a/assets/_sass/base/_syntax.scss b/assets/css/base/syntax.css index 00d491f..00d491f 100644 --- a/assets/_sass/base/_syntax.scss +++ b/assets/css/base/syntax.css diff --git a/assets/_sass/base/_vars.scss b/assets/css/base/vars.css index 06d5b8d..06d5b8d 100644 --- a/assets/_sass/base/_vars.scss +++ b/assets/css/base/vars.css diff --git a/assets/css/components/page.css b/assets/css/components/page.css new file mode 100644 index 0000000..b1fbc18 --- /dev/null +++ b/assets/css/components/page.css @@ -0,0 +1,197 @@ +.page .page-title { + margin: 0 0 25px; + font-family: "PT Sans", sans-serif; + font-size: 32px; + line-height: 42px; + font-weight: 700; + color: var(--grey-222); +} + +.page .page-content abbr { + border-bottom: 1px dotted var(--grey-555); + text-decoration: none; + cursor: help; +} + +.page .page-content code, +.page .page-content kbd, +.page .page-content pre { + margin: 0; + font-family: monospace; + word-wrap: break-word; + word-break: break-word; + white-space: pre-wrap; +} + +.page .page-content address, +.page .page-content cite, +.page .page-content var { + font-style: italic; +} + +.page .page-content blockquote { + margin: 40px 0; + padding: 0 0 0 20px; + border-left: 3px solid var(--grey-555); + color: var(--grey-222); + font-weight: 700; +} + +.page .page-content em, +.page .page-content strong { + color: var(--grey-222); +} + +.page .page-content h1, +.page .page-content h2, +.page .page-content h3, +.page .page-content h4, +.page .page-content h5, +.page .page-content h6 { + font-family: "PT Sans", sans-serif; + margin: 40px 0 25px 0; + color: var(--grey-222); +} + +.page .page-content h4, +.page .page-content h5, +.page .page-content h6 { + margin: 25px 0; +} + +.page .page-content h1 { + font-size: 28px; +} + +.page .page-content h2 { + font-size: 26px; +} + +.page .page-content h3 { + font-size: 22px; +} + +.page .page-content h4 { + font-size: 20px; +} + +.page .page-content h5 { + font-size: 18px; + } + +.page .page-content h6 { + font-size: 16px; +} + +.page .page-content a { + color: var(--main-color); +} + +.page .page-content a:hover { + text-decoration: none; +} + +.page .page-content img { + display: block; + max-width: 100%; + height: auto; +} + +.page .page-content ul { + list-style-type: disc; + list-style-position: inside; +} + +.page .page-content ul, +.page .page-content ol { + margin: 15px 0; + padding: 0 0 0 20px; +} + +.page .page-content ul ul, +.page .page-content ul ol, +.page .page-content ol ul, +.page .page-content ol ol { + padding: 0 0 0 20px; +} + +.page .page-content ul li, +.page .page-content ol li { + margin: 5px 0; +} + +.page .page-content ul li > code, +.page .page-content ol li > code { + font-size: 14px; + padding: 3px 6px; + margin: 0 4px; + background: var(--grey-fa); + border: 1px solid var(--grey-ccc); +} + +.page .page-content dl { + margin: 40px 0; +} + +.page .page-content dl dt { + margin: 10px 0 0; + font-weight: 700; +} + +.page .page-content dl dd { + margin: 5px 0; +} + +.page .page-content dl dd > code { + font-size: 14px; + padding: 3px 6px; + margin: 0 4px; + background: var(--grey-fa); + border: 1px solid var(--grey-ccc); +} + +.page .page-content p { + margin: 15px 0; +} + +.page .page-content p > code { + font-size: 14px; + padding: 3px 6px; + margin: 0 4px; + background: var(--grey-fa); + border: 1px solid var(--grey-ccc); +} + +.page .page-content .alignleft { + float: left; + margin: 20px 30px 10px 0; +} + +.page .page-content .alignright { + float: right; + margin: 20px 0 10px 20px; +} + +.page .page-content .aligncenter { + clear: both; + margin: 0 auto 20px; +} + +.page .page-content figcaption { + font-size: 13px; + font-style: italic; + padding-top: 10px; +} + +.page .page-content .iframe-wrapper { + position: relative; + padding-top: 56.25%; +} + +.page .page-content .iframe-wrapper > iframe { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} diff --git a/assets/css/components/pagination.css b/assets/css/components/pagination.css new file mode 100644 index 0000000..8ba927e --- /dev/null +++ b/assets/css/components/pagination.css @@ -0,0 +1,22 @@ +.pagination { + display: grid; + grid-template-columns: 100px 1fr 100px; + margin: 50px 0 0; + font-size: 16px; +} + +.pagination .previous, +.pagination .next { + text-decoration: none; + color: var(--grey-555); +} + +.pagination .previous:hover, +.pagination .next:hover { + text-decoration: underline; +} + +.pagination .page_number { + text-align: center; + color: var(--grey-ccc); +} diff --git a/assets/css/components/post.css b/assets/css/components/post.css new file mode 100644 index 0000000..916ec29 --- /dev/null +++ b/assets/css/components/post.css @@ -0,0 +1,413 @@ +.post-lists-title { + font-family: 'PT Sans', sans-serif; + font-size: 24px; + line-height: 42px; + font-weight: 700; + color: var(--grey-aaa); + margin: 0 0 40px; + text-align: center; +} + +.post-lists-title span { + color: var(--grey-222); +} + +.post-list { + display: grid; + gap: 100px 0; +} + +.post { + position: relative; +} + +.post .post-title { + margin: 0 0 25px; + font-family: 'PT Sans', sans-serif; + font-size: 32px; + line-height: 42px; + font-weight: 700; + color: var(--grey-222); +} + +.post .post-title a { + color: var(--grey-222); + text-decoration: none; +} + +.post .post-title a:hover { + text-decoration: underline; +} + +.post .post-author { + position: absolute; + top: 10px; + left: -200px; + width: 150px; + text-align: right; +} + +.post .post-author .author-avatar { + display: inline-block; + width: 50px; + height: 50px; + border-radius: 50%; + fill: currentColor; + color: var(--grey-ddd); +} + +.post .post-author .author-info .author-name { + display: block; + margin: 10px 0 4px; + font-family: 'PT Sans', sans-serif; + font-size: 16px; + line-height: 20px; + font-weight: 700; + color: var(--grey-222); + text-transform: uppercase; +} + +.post .post-author .author-info .author-title { + display: block; + font-size: 12px; + line-height: 16px; + font-style: italic; + color: var(--grey-aaa); +} + +.post .post-author .post-meta { + position: relative; + margin: 15px 0 0; + padding: 15px 0 0; + line-height: 20px; + font-size: 14px; + color: var(--grey-aaa); +} + +.post .post-author .post-meta:before { + position: absolute; + top: 0; + right: 0; + width: 30px; + height: 1px; + background: var(--grey-ddd); + content: ""; +} + +.post .post-author .post-meta .post-date { + position: relative; + margin: 0 5px 0 0; + padding: 0 10px 0 0; +} + +.post .post-author .post-meta .post-date:after { + position: absolute; + top: 50%; + right: 0; + width: 3px; + height: 3px; + border-radius: 50%; + background: var(--grey-ccc); + content: ""; +} + +.post .post-author .post-meta .post-categories { + position: relative; + display: flex; + justify-content: flex-end; + gap: 5px; + margin: 8px 0 0; +} + +.post .post-author .post-meta .post-categories a { + color: var(--main-color); + text-decoration: none; +} + +.post .post-author .post-meta .post-categories a:hover { + text-decoration: underline; +} + +.post .post-content abbr { + border-bottom: 1px dotted var(--grey-555); + text-decoration: none; + cursor: help; +} + +.post .post-content code, +.post .post-content kbd, +.post .post-content pre { + margin: 0; + font-family: monospace; + word-wrap: break-word; + word-break: break-word; + white-space: pre-wrap; +} + +.post .post-content address, +.post .post-content cite, +.post .post-content var { + font-style: italic; +} + +.post .post-content blockquote { + margin: 40px 0; + padding: 0 0 0 20px; + border-left: 3px solid var(--grey-555); + color: var(--grey-222); + font-weight: 700; +} + +.post .post-content em, +.post .post-content strong { + color: var(--grey-222); +} + +.post .post-content h1, +.post .post-content h2, +.post .post-content h3, +.post .post-content h4, +.post .post-content h5, +.post .post-content h6 { + font-family: 'PT Sans', sans-serif; + margin: 40px 0 25px 0; + color: var(--grey-222); +} + +.post .post-content h4, +.post .post-content h5, +.post .post-content h6 { + margin: 25px 0; +} + +.post .post-content h1 { + font-size: 28px; +} + +.post .post-content h2 { + font-size: 26px; +} + +.post .post-content h3 { + font-size: 22px; +} + +.post .post-content h4 { + font-size: 20px; +} + +.post .post-content h5 { + font-size: 18px; +} + +.post .post-content h6 { + font-size: 16px; +} + +.post .post-content a { + color: var(--main-color); +} + +.post .post-content a:hover { + text-decoration: none; +} + +.post .post-content img { + display: block; + max-width: 100%; + height: auto; +} + +.post .post-content ul { + list-style-type: disc; + list-style-position: inside; +} + +.post .post-content ul, +.post .post-content ol { + margin: 15px 0; + padding: 0 0 0 20px; +} + +.post .post-content ul ul, +.post .post-content ul ol, +.post .post-content ol ul, +.post .post-content ol ol { + padding: 0 0 0 20px; +} + +.post .post-content ul li, +.post .post-content ol li { + margin: 5px 0; +} + +.post .post-content ul li > code, +.post .post-content ol li > code { + font-size: 14px; + padding: 3px 6px; + margin: 0 4px; + background: var(--grey-fa); + border: 1px solid var(--grey-ccc); +} + +.post .post-content dl { + margin: 40px 0; +} + +.post .post-content dl dt { + margin: 10px 0 0; + font-weight: 700; +} + +.post .post-content dl dd { + margin: 5px 0; +} + +.post .post-content dl dd > code { + font-size: 14px; + padding: 3px 6px; + margin: 0 4px; + background: var(--grey-fa); + border: 1px solid var(--grey-ccc); +} + +.post .post-content p { + margin: 15px 0; +} + +.post .post-content p > code { + font-size: 14px; + padding: 3px 6px; + margin: 0 4px; + background: var(--grey-fa); + border: 1px solid var(--grey-ccc); +} + +.post .post-content .alignleft { + float: left; + margin: 20px 30px 10px 0; +} + +.post .post-content .alignright { + float: right; + margin: 20px 0 10px 20px; +} + +.post .post-content .aligncenter { + clear: both; + margin: 0 auto 20px; +} + +.post .post-content figcaption { + font-size: 13px; + font-style: italic; + padding-top: 10px; +} + +.post .post-content .iframe-wrapper { + position: relative; + padding-top: 56.25%; +} + +.post .post-content .iframe-wrapper > iframe { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +.post .post-content .read-more-button { + font-size: 16px; + color: var(--grey-555); +} + +.post .post-footer { + display: flex; + justify-content: space-between; + align-items: flex-start; + gap: 0 20px; + margin: 50px 0 0; +} + +.post .post-footer .post-tags { + display: flex; + flex-flow: row wrap; + flex: 9 1 auto; + gap: 0 20px; + list-style: none; + margin: 0; + padding: 0; +} + +.post .post-footer .post-tags li a { + font-size: 14px; + font-family: 'PT Sans', sans-serif; + color: var(--grey-ccc); + text-decoration: none; + transition: all .15s ease; +} + +.post .post-footer .post-tags li a:hover { + color: var(--grey-555); +} + +@media screen and (max-width: 960px) { + .post .post-title { + margin: 0 0 15px; + } + + .post .post-author { + display: flex; + align-items: center; + flex-flow: row wrap; + gap: 15px; + position: static; + width: 100%; + margin: 0 0 20px; + text-align: left; + } + + .post .post-author .author-avatar { + width: 36px; + height: 36px; + } + + .post .post-author .author-info .author-name { + margin: 0; + color: var(--grey-555); + text-transform: initial; + } + + .post .post-author .author-info .author-title { + display: none; + } + + .post .post-author .post-meta { + display: flex; + flex-flow: row wrap; + margin: 0; + margin-left: auto; + padding: 0; + } + + .post .post-author .post-meta:before { + content: none; + } + + .post .post-author .post-meta .post-categories { + margin: 0 0 0 5px; + padding: 0 0 0 10px; + } + + .post .post-author .post-meta .post-categories:before { + position: absolute; + top: 50%; + left: 0; + width: 3px; + height: 3px; + border-radius: 50%; + background: var(--grey-ccc); + content: ""; + } +} diff --git a/assets/css/layout.css b/assets/css/layout.css new file mode 100644 index 0000000..60b662f --- /dev/null +++ b/assets/css/layout.css @@ -0,0 +1,191 @@ +.site-header { + display: grid; + justify-content: center; + padding: 0 20px; + text-align: center; +} + +.site-header .site-header-wrapper { + position: relative; + overflow: hidden; + background: var(--main-color); + padding: 10px 25px 20px 25px; + border-radius: 0 0 5px 5px; + text-decoration: none; + transition: background .2s ease; +} + +.site-header .site-header-wrapper:before { + position: absolute; + top: 0; + left: -150%; + content: ""; + width: 50%; + height: 100%; + background: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, .3) 100%); + transform: skew(-45deg, 0); +} + +.site-header .site-header-wrapper:hover { + background: var(--main-color-hover); +} + +.site-header .site-header-wrapper:hover:before { + animation: headerShine .35s; +} + +.site-header .site-header-wrapper .site-logo { + display: block; + margin: 0 0 10px; +} + +.site-header .site-header-wrapper .site-logo img { + display: block; +} + +.site-header .site-header-wrapper .site-subtitle { + display: block; + font-family: 'Bebas Neue', sans-serif; + font-size: 11px; + line-height: 14px; + color: var(--grey-fc); +} + +.site-header .site-header-wrapper .site-title { + display: block; + font-family: 'Bebas Neue', sans-serif; + font-size: 26px; + line-height: 28px; + color: var(--grey-fc); +} + +.site-navigation { + display: flex; + justify-content: center; + align-items: center; + flex-flow: row wrap; + gap: 10px 40px; + max-width: 800px; + margin: 30px auto 0; + padding: 0 20px; + text-align: center; +} + +.site-navigation a, +.site-navigation span { + position: relative; + text-decoration: none; + color: var(--grey-555); + padding: 0 0 2px; + transition: color .2s ease; + cursor: pointer; +} + +.site-navigation a:before, +.site-navigation span:before { + position: absolute; + opacity: 0; + left: 0; + bottom: 0; + width: 0%; + border-bottom: 2px solid var(--grey-222); + transition: width .18s ease, opacity .18s ease; + content: ""; +} + +.site-navigation a:hover, +.site-navigation span:hover, +.site-navigation a.active, +.site-navigation span.active { + color: var(--grey-222); +} + +.site-navigation a:hover:before, +.site-navigation span:hover:before, +.site-navigation a.active:before, +.site-navigation span.active:before { + width: 100%; + opacity: 1; +} + +@media screen and (max-width: 800px) { + .site-header { + position: fixed; + left: 0; + top: 0; + width: 100%; + z-index: 9; + background: var(--body-bg); + box-shadow: 0 2px 5px rgba(0, 0, 0, .1); + } + + .site-header .site-header-wrapper { + display: flex; + align-items: center; + justify-content: center; + flex-flow: row wrap; + gap: 0 15px; + border-radius: 0; + padding: 20px; + background: transparent; + } + + .site-header .site-header-wrapper:hover { + background: transparent; + } + + .site-header .site-header-wrapper .site-logo, + .site-header .site-header-wrapper .site-subtitle { + display: none; + } + + .site-header .site-header-wrapper .site-title { + font-size: 32px; + line-height: 36px; + color: var(--main-color); + } + + .site-navigation { + position: fixed; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + justify-content: flex-start; + flex-flow: column nowrap; + gap: 20px 0; + transform: translate(0, -100%); + transition: transform .25s ease-in-out; + padding: 100px 20px 0; + background: rgba(255, 255, 255, .9); + z-index: 10; + } + + .site-navigation a, + .site-navigation span { + color: var(--grey-222); + font-size: 30px; + line-height: 40px; + } +} + +.wrapper { + max-width: 600px; + margin: 0 auto; + padding: 0 20px 35px; + border-bottom: 1px solid var(--grey-eee); +} + +.wrapper.long { + max-width: 800px; +} + +.site-footer { + max-width: 800px; + margin: 0 auto; + padding: 40px 20px; + font-size: 14px; + line-height: 22px; + color: var(--grey-ccc); + text-align: center; +} diff --git a/assets/_sass/pages/_fourofour.scss b/assets/css/pages/fourofour.css index c8cd137..32a0119 100644 --- a/assets/_sass/pages/_fourofour.scss +++ b/assets/css/pages/fourofour.css @@ -1,6 +1,7 @@ .page-not-found { text-align: center; } + .page-not-found svg { fill: currentColor; color: var(--grey-ddd); diff --git a/assets/css/partials/burger-menu.css b/assets/css/partials/burger-menu.css new file mode 100644 index 0000000..91e4101 --- /dev/null +++ b/assets/css/partials/burger-menu.css @@ -0,0 +1,69 @@ +.toggleBurger { + display: none; +} + +.toggleBurger:checked ~ .site-navigation { + transform: translate(0, 0); +} + +.toggleBurger:checked ~ .toggleBurgerWrapper span { + background: transparent; +} + +.toggleBurger:checked ~ .toggleBurgerWrapper span:before { + top: 0; + transform: rotate(135deg); +} + +.toggleBurger:checked ~ .toggleBurgerWrapper span:after { + top: 0; + transform: rotate(-135deg); +} + +.toggleBurgerWrapper { + display: none; + position: fixed; + top: 20px; + left: 20px; + width: 25px; + height: 30px; + cursor: pointer; + z-index: 100; + user-select: none; +} + +.toggleBurgerWrapper span { + position: absolute; + top: 50%; + height: 2px; + width: 100%; + background: var(--grey-222); + + transition: all .3s ease; + transform: translate(0, -50%); +} + +.toggleBurgerWrapper span:before, +.toggleBurgerWrapper span:before:after { + position: absolute; + height: 2px; + width: 100%; + background: var(--grey-222); + content: ""; + + transition: all .3s ease; +} + +.toggleBurgerWrapper span:before { + top: -6px; +} + +.toggleBurgerWrapper span:after { + top: 6px; +} + +@media screen and (max-width: 800px) { + .toggleBurgerWrapper { + display: block; + } +} diff --git a/assets/css/partials/header-separator.css b/assets/css/partials/header-separator.css new file mode 100644 index 0000000..e1e5358 --- /dev/null +++ b/assets/css/partials/header-separator.css @@ -0,0 +1,28 @@ +.header-content-separator { + position: relative; + margin: 40px auto; + width: 4px; + height: 4px; + border-radius: 50%; + background: var(--grey-ccc); +} + +.header-content-separator:before { + position: absolute; + left: -8px; + width: 4px; + height: 4px; + border-radius: 50%; + background: var(--grey-ccc); + content: ""; +} + +.header-content-separator::after { + position: absolute; + left: 8px; + width: 4px; + height: 4px; + border-radius: 50%; + background: var(--grey-ccc); + content: ""; +} diff --git a/assets/css/styles.css b/assets/css/styles.css deleted file mode 100644 index ff69e63..0000000 --- a/assets/css/styles.css +++ /dev/null @@ -1,1582 +0,0 @@ -:root, [data-theme=light] { - --body-bg: #fafafa; - --main-color: #639f93; - --main-color-hover: #5b9287; - --form-success-bg: #d0f1cc; - --form-success-text: #597755; - --form-error-bg: #f1cccc; - --form-error-text: #775555; - --grey-222: #222; - --grey-555: #555; - --grey-aaa: #aaa; - --grey-ccc: #ccc; - --grey-ddd: #ddd; - --grey-eee: #eee; - --grey-fc: #fcfcfc; - --grey-fa: #fafafa; -} - -[data-theme=dark] { - --body-bg: #050505; - --main-color: #639f93; - --main-color-hover: #5b9287; - --form-success-bg: #d0f1cc; - --form-success-text: #597755; - --form-error-bg: #f1cccc; - --form-error-text: #775555; - --grey-222: #ddd; - --grey-555: #ddd; - --grey-aaa: #777; - --grey-ccc: #666; - --grey-ddd: #666; - --grey-eee: #222; - --grey-fc: #fcfcfc; - --grey-fa: #151515; -} - -* { - box-sizing: border-box; -} - -body { - margin: 0; - padding: 0; - font-family: "PT Serif", serif; - font-size: 18px; - line-height: 30px; - color: var(--grey-555); - background: var(--body-bg); -} - -header, -nav, -section, -main, -article, -aside, -figure, -footer, -iframe, -object, -svg { - display: block; - margin: 0; -} - -@media screen and (max-width: 800px) { - body { - padding: 80px 0 0; - } -} -/* latin-ext */ -@font-face { - font-family: "Bebas Neue"; - font-style: normal; - font-weight: 400; - font-display: swap; - src: url(/assets/fonts/BebasNeue-Regular.woff2) format("woff2"); - unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; -} -/* latin */ -@font-face { - font-family: "Bebas Neue"; - font-style: normal; - font-weight: 400; - font-display: swap; - src: url(/assets/fonts/BebasNeue-Regular.woff2) format("woff2"); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} -/* cyrillic-ext */ -@font-face { - font-family: "PT Sans"; - font-style: italic; - font-weight: 400; - font-display: swap; - src: url(/assets/fonts/ptsansitalic.woff2) format("woff2"); - unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; -} -/* cyrillic */ -@font-face { - font-family: "PT Sans"; - font-style: italic; - font-weight: 400; - font-display: swap; - src: url(/assets/fonts/ptsansitalic.woff2) format("woff2"); - unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; -} -/* latin-ext */ -@font-face { - font-family: "PT Sans"; - font-style: italic; - font-weight: 400; - font-display: swap; - src: url(/assets/fonts/ptsansitalic.woff2) format("woff2"); - unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; -} -/* latin */ -@font-face { - font-family: "PT Sans"; - font-style: italic; - font-weight: 400; - font-display: swap; - src: url(/assets/fonts/ptsansitalic.woff2) format("woff2"); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} -/* cyrillic-ext */ -@font-face { - font-family: "PT Sans"; - font-style: italic; - font-weight: 700; - font-display: swap; - src: url(/assets/fonts/ptsansbolditalic.woff2) format("woff2"); - unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; -} -/* cyrillic */ -@font-face { - font-family: "PT Sans"; - font-style: italic; - font-weight: 700; - font-display: swap; - src: url(/assets/fonts/ptsansbolditalic.woff2) format("woff2"); - unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; -} -/* latin-ext */ -@font-face { - font-family: "PT Sans"; - font-style: italic; - font-weight: 700; - font-display: swap; - src: url(/assets/fonts/ptsansbolditalic.woff2) format("woff2"); - unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; -} -/* latin */ -@font-face { - font-family: "PT Sans"; - font-style: italic; - font-weight: 700; - font-display: swap; - src: url(/assets/fonts/ptsansbolditalic.woff2) format("woff2"); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} -/* cyrillic-ext */ -@font-face { - font-family: "PT Sans"; - font-style: normal; - font-weight: 400; - font-display: swap; - src: url(/assets/fonts/ptsans.woff2) format("woff2"); - unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; -} -/* cyrillic */ -@font-face { - font-family: "PT Sans"; - font-style: normal; - font-weight: 400; - font-display: swap; - src: url(/assets/fonts/ptsans.woff2) format("woff2"); - unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; -} -/* latin-ext */ -@font-face { - font-family: "PT Sans"; - font-style: normal; - font-weight: 400; - font-display: swap; - src: url(/assets/fonts/ptsans.woff2) format("woff2"); - unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; -} -/* latin */ -@font-face { - font-family: "PT Sans"; - font-style: normal; - font-weight: 400; - font-display: swap; - src: url(/assets/fonts/ptsans.woff2) format("woff2"); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} -/* cyrillic-ext */ -@font-face { - font-family: "PT Sans"; - font-style: normal; - font-weight: 700; - font-display: swap; - src: url(/assets/fonts/ptsansbold.woff2) format("woff2"); - unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; -} -/* cyrillic */ -@font-face { - font-family: "PT Sans"; - font-style: normal; - font-weight: 700; - font-display: swap; - src: url(/assets/fonts/ptsansbold.woff2) format("woff2"); - unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; -} -/* latin-ext */ -@font-face { - font-family: "PT Sans"; - font-style: normal; - font-weight: 700; - font-display: swap; - src: url(/assets/fonts/ptsansbold.woff2) format("woff2"); - unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; -} -/* latin */ -@font-face { - font-family: "PT Sans"; - font-style: normal; - font-weight: 700; - font-display: swap; - src: url(/assets/fonts/ptsansbold.woff2) format("woff2"); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} -/* cyrillic-ext */ -@font-face { - font-family: "PT Serif"; - font-style: italic; - font-weight: 400; - font-display: swap; - src: url(/assets/fonts/ptserifitalic.woff2) format("woff2"); - unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; -} -/* cyrillic */ -@font-face { - font-family: "PT Serif"; - font-style: italic; - font-weight: 400; - font-display: swap; - src: url(/assets/fonts/ptserifitalic.woff2) format("woff2"); - unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; -} -/* latin-ext */ -@font-face { - font-family: "PT Serif"; - font-style: italic; - font-weight: 400; - font-display: swap; - src: url(/assets/fonts/ptserifitalic.woff2) format("woff2"); - unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; -} -/* latin */ -@font-face { - font-family: "PT Serif"; - font-style: italic; - font-weight: 400; - font-display: swap; - src: url(/assets/fonts/ptserifitalic.woff2) format("woff2"); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} -/* cyrillic-ext */ -@font-face { - font-family: "PT Serif"; - font-style: italic; - font-weight: 700; - font-display: swap; - src: url(/assets/fonts/ptserifbolditalic.woff2) format("woff2"); - unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; -} -/* cyrillic */ -@font-face { - font-family: "PT Serif"; - font-style: italic; - font-weight: 700; - font-display: swap; - src: url(/assets/fonts/ptserifitalic.woff2) format("woff2"); - unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; -} -/* latin-ext */ -@font-face { - font-family: "PT Serif"; - font-style: italic; - font-weight: 700; - font-display: swap; - src: url(/assets/fonts/ptserifitalic.woff2) format("woff2"); - unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; -} -/* latin */ -@font-face { - font-family: "PT Serif"; - font-style: italic; - font-weight: 700; - font-display: swap; - src: url(/assets/fonts/ptserifitalic.woff2) format("woff2"); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} -/* cyrillic-ext */ -@font-face { - font-family: "PT Serif"; - font-style: normal; - font-weight: 400; - font-display: swap; - src: url(/assets/fonts/ptserif.woff2) format("woff2"); - unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; -} -/* cyrillic */ -@font-face { - font-family: "PT Serif"; - font-style: normal; - font-weight: 400; - font-display: swap; - src: url(/assets/fonts/ptserif.woff2) format("woff2"); - unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; -} -/* latin-ext */ -@font-face { - font-family: "PT Serif"; - font-style: normal; - font-weight: 400; - font-display: swap; - src: url(/assets/fonts/ptserif.woff2) format("woff2"); - unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; -} -/* latin */ -@font-face { - font-family: "PT Serif"; - font-style: normal; - font-weight: 400; - font-display: swap; - src: url(/assets/fonts/ptserif.woff2) format("woff2"); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} -/* cyrillic-ext */ -@font-face { - font-family: "PT Serif"; - font-style: normal; - font-weight: 700; - font-display: swap; - src: url(/assets/fonts/ptserifbold.woff2) format("woff2"); - unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; -} -/* cyrillic */ -@font-face { - font-family: "PT Serif"; - font-style: normal; - font-weight: 700; - font-display: swap; - src: url(/assets/fonts/ptserifbold.woff2) format("woff2"); - unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; -} -/* latin-ext */ -@font-face { - font-family: "PT Serif"; - font-style: normal; - font-weight: 700; - font-display: swap; - src: url(/assets/fonts/ptserifbold.woff2) format("woff2"); - unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; -} -/* latin */ -@font-face { - font-family: "PT Serif"; - font-style: normal; - font-weight: 700; - font-display: swap; - src: url(/assets/fonts/ptserifbold.woff2) format("woff2"); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; -} -.highlight { - background: var(--grey-fa); - border: 1px solid var(--grey-ccc); - padding: 30px; -} - -.highlight .lineno { - padding: 0 15px 0 0; -} - -/* Comment */ -.highlight .c { - color: #998; - font-style: italic; -} - -/* Error */ -.highlight .err { - color: #a61717; - background-color: #e3d2d2; -} - -/* Keyword */ -.highlight .k { - font-weight: bold; -} - -/* Operator */ -.highlight .o { - font-weight: bold; -} - -/* Comment.Multiline */ -.highlight .cm { - color: #998; - font-style: italic; -} - -/* Comment.Preproc */ -.highlight .cp { - color: #999; - font-weight: bold; -} - -/* Comment.Single */ -.highlight .c1 { - color: #998; - font-style: italic; -} - -/* Comment.Special */ -.highlight .cs { - color: #999; - font-weight: bold; - font-style: italic; -} - -/* Generic.Deleted */ -.highlight .gd { - color: #000; - background-color: #fdd; -} - -/* Generic.Deleted.Specific */ -.highlight .gd .x { - color: #000; - background-color: #faa; -} - -/* Generic.Emph */ -.highlight .ge { - font-style: italic; -} - -/* Generic.Error */ -.highlight .gr { - color: #a00; -} - -/* Generic.Heading */ -.highlight .gh { - color: #999; -} - -/* Generic.Inserted */ -.highlight .gi { - color: #000; - background-color: #dfd; -} - -/* Generic.Inserted.Specific */ -.highlight .gi .x { - color: #000; - background-color: #afa; -} - -/* Generic.Output */ -.highlight .go { - color: #888; -} - -/* Generic.Prompt */ -.highlight .gp { - color: #555; -} - -/* Generic.Strong */ -.highlight .gs { - font-weight: bold; -} - -/* Generic.Subheading */ -.highlight .gu { - color: #aaa; -} - -/* Generic.Traceback */ -.highlight .gt { - color: #a00; -} - -/* Keyword.Constant */ -.highlight .kc { - font-weight: bold; -} - -/* Keyword.Declaration */ -.highlight .kd { - font-weight: bold; -} - -/* Keyword.Pseudo */ -.highlight .kp { - font-weight: bold; -} - -/* Keyword.Reserved */ -.highlight .kr { - font-weight: bold; -} - -/* Keyword.Type */ -.highlight .kt { - color: #458; - font-weight: bold; -} - -/* Literal.Number */ -.highlight .m { - color: #099; -} - -/* Literal.String */ -.highlight .s { - color: #d14; -} - -/* Name.Attribute */ -.highlight .na { - color: #008080; -} - -/* Name.Builtin */ -.highlight .nb { - color: #0086B3; -} - -/* Name.Class */ -.highlight .nc { - color: #458; - font-weight: bold; -} - -/* Name.Constant */ -.highlight .no { - color: #008080; -} - -/* Name.Entity */ -.highlight .ni { - color: #800080; -} - -/* Name.Exception */ -.highlight .ne { - color: #900; - font-weight: bold; -} - -/* Name.Function */ -.highlight .nf { - color: #900; - font-weight: bold; -} - -/* Name.Namespace */ -.highlight .nn { - color: #555; -} - -/* Name.Tag */ -.highlight .nt { - color: #000080; -} - -/* Name.Variable */ -.highlight .nv { - color: #008080; -} - -/* Operator.Word */ -.highlight .ow { - font-weight: bold; -} - -/* Text.Whitespace */ -.highlight .w { - color: #bbb; -} - -/* Literal.Number.Float */ -.highlight .mf { - color: #099; -} - -/* Literal.Number.Hex */ -.highlight .mh { - color: #099; -} - -/* Literal.Number.Integer */ -.highlight .mi { - color: #099; -} - -/* Literal.Number.Oct */ -.highlight .mo { - color: #099; -} - -/* Literal.String.Backtick */ -.highlight .sb { - color: #d14; -} - -/* Literal.String.Char */ -.highlight .sc { - color: #d14; -} - -/* Literal.String.Doc */ -.highlight .sd { - color: #d14; -} - -/* Literal.String.Double */ -.highlight .s2 { - color: #d14; -} - -/* Literal.String.Escape */ -.highlight .se { - color: #d14; -} - -/* Literal.String.Heredoc */ -.highlight .sh { - color: #d14; -} - -/* Literal.String.Interpol */ -.highlight .si { - color: #d14; -} - -/* Literal.String.Other */ -.highlight .sx { - color: #d14; -} - -/* Literal.String.Regex */ -.highlight .sr { - color: #009926; -} - -/* Literal.String.Single */ -.highlight .s1 { - color: #d14; -} - -/* Literal.String.Symbol */ -.highlight .ss { - color: #990073; -} - -/* Name.Builtin.Pseudo */ -.highlight .bp { - color: #999; -} - -/* Name.Variable.Class */ -.highlight .vc { - color: #008080; -} - -/* Name.Variable.Global */ -.highlight .vg { - color: #008080; -} - -/* Name.Variable.Instance */ -.highlight .vi { - color: #008080; -} - -/* Literal.Number.Integer.Long */ -.highlight .il { - color: #099; -} - -@keyframes headerShine { - 100% { - left: 150%; - } -} -@keyframes fadeIn { - from { - opacity: 0; - } - to { - opacity: 1; - } -} -@keyframes fadeOut { - from { - opacity: 1; - } - to { - opacity: 0; - } -} -@keyframes zoomIn { - from { - opacity: 0; - transform: scale3d(0.3, 0.3, 0.3); - } - to { - opacity: 1; - } -} -@keyframes zoomOut { - from { - opacity: 1; - } - 50% { - opacity: 0; - transform: scale3d(0.3, 0.3, 0.3); - } - to { - opacity: 0; - } -} -/* Layout */ -.site-header { - display: grid; - justify-content: center; - padding: 0 20px; - text-align: center; -} -.site-header .site-header-wrapper { - position: relative; - overflow: hidden; - background: var(--main-color); - padding: 10px 25px 20px 25px; - border-radius: 0 0 5px 5px; - text-decoration: none; - transition: background 0.2s ease; -} -.site-header .site-header-wrapper:before { - position: absolute; - top: 0; - left: -150%; - content: ""; - width: 50%; - height: 100%; - background: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.3) 100%); - transform: skew(-45deg, 0); -} -.site-header .site-header-wrapper:hover { - background: var(--main-color-hover); -} -.site-header .site-header-wrapper:hover:before { - animation: headerShine 0.35s; -} -.site-header .site-header-wrapper .site-logo { - display: block; - margin: 0 0 10px; -} -.site-header .site-header-wrapper .site-logo img { - display: block; -} -.site-header .site-header-wrapper .site-subtitle { - display: block; - font-family: "Bebas Neue", sans-serif; - font-size: 11px; - line-height: 14px; - color: var(--grey-fc); -} -.site-header .site-header-wrapper .site-title { - display: block; - font-family: "Bebas Neue", sans-serif; - font-size: 26px; - line-height: 28px; - color: var(--grey-fc); -} - -.site-navigation { - display: flex; - justify-content: center; - align-items: center; - flex-flow: row wrap; - gap: 10px 40px; - max-width: 800px; - margin: 30px auto 0; - padding: 0 20px; - text-align: center; -} -.site-navigation a, .site-navigation span { - position: relative; - text-decoration: none; - color: var(--grey-555); - padding: 0 0 2px; - transition: color 0.2s ease; - cursor: pointer; -} -.site-navigation a:before, .site-navigation span:before { - position: absolute; - opacity: 0; - left: 0; - bottom: 0; - width: 0%; - border-bottom: 2px solid var(--grey-222); - transition: width 0.18s ease, opacity 0.18s ease; - content: ""; -} -.site-navigation a:hover, .site-navigation a.active, .site-navigation span:hover, .site-navigation span.active { - color: var(--grey-222); -} -.site-navigation a:hover:before, .site-navigation a.active:before, .site-navigation span:hover:before, .site-navigation span.active:before { - width: 100%; - opacity: 1; -} - -@media screen and (max-width: 800px) { - .site-header { - position: fixed; - left: 0; - top: 0; - width: 100%; - z-index: 9; - background: var(--body-bg); - box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); - } - .site-header .site-header-wrapper { - display: flex; - align-items: center; - justify-content: center; - flex-flow: row wrap; - gap: 0 15px; - border-radius: 0; - padding: 20px; - background: transparent; - } - .site-header .site-header-wrapper:hover { - background: transparent; - } - .site-header .site-header-wrapper .site-logo, - .site-header .site-header-wrapper .site-subtitle { - display: none; - } - .site-header .site-header-wrapper .site-title { - font-size: 32px; - line-height: 36px; - color: var(--main-color); - } - .site-navigation { - position: fixed; - bottom: 0; - left: 0; - width: 100%; - height: 100%; - justify-content: flex-start; - flex-flow: column nowrap; - gap: 20px 0; - transform: translate(0, -100%); - transition: transform 0.25s ease-in-out; - padding: 100px 20px 0; - background: rgba(255, 255, 255, 0.9); - z-index: 10; - } - .site-navigation a, .site-navigation span { - color: var(--grey-222); - font-size: 30px; - line-height: 40px; - } -} -.wrapper { - max-width: 600px; - margin: 0 auto; - padding: 0 20px 35px; - border-bottom: 1px solid var(--grey-eee); -} -.wrapper.long { - max-width: 800px; -} - -.site-footer { - max-width: 800px; - margin: 0 auto; - padding: 40px 20px; - font-size: 14px; - line-height: 22px; - color: var(--grey-ccc); - text-align: center; -} - -/* Pages */ -.page-not-found { - text-align: center; -} - -.page-not-found svg { - fill: currentColor; - color: var(--grey-ddd); - margin: 0 auto; -} - -/* Components */ -.post-lists-title { - font-family: "PT Sans", sans-serif; - font-size: 24px; - line-height: 42px; - font-weight: 700; - color: var(--grey-aaa); - margin: 0 0 40px; - text-align: center; -} -.post-lists-title span { - color: var(--grey-222); -} - -.post-list { - display: grid; - gap: 100px 0; -} - -.post { - position: relative; -} -.post .post-title { - margin: 0 0 25px; - font-family: "PT Sans", sans-serif; - font-size: 32px; - line-height: 42px; - font-weight: 700; - color: var(--grey-222); -} -.post .post-title a { - color: var(--grey-222); - text-decoration: none; -} -.post .post-title a:hover { - text-decoration: underline; -} -.post .post-author { - position: absolute; - top: 10px; - left: -200px; - width: 150px; - text-align: right; -} -.post .post-author .author-avatar { - display: inline-block; - width: 50px; - height: 50px; - border-radius: 50%; - fill: currentColor; - color: var(--grey-ddd); -} -.post .post-author .author-info .author-name { - display: block; - margin: 10px 0 4px; - font-family: "PT Sans", sans-serif; - font-size: 16px; - line-height: 20px; - font-weight: 700; - color: var(--grey-222); - text-transform: uppercase; -} -.post .post-author .author-info .author-title { - display: block; - font-size: 12px; - line-height: 16px; - font-style: italic; - color: var(--grey-aaa); -} -.post .post-author .post-meta { - position: relative; - margin: 15px 0 0; - padding: 15px 0 0; - line-height: 20px; - font-size: 14px; - color: var(--grey-aaa); -} -.post .post-author .post-meta:before { - position: absolute; - top: 0; - right: 0; - width: 30px; - height: 1px; - background: var(--grey-ddd); - content: ""; -} -.post .post-author .post-meta .post-date { - position: relative; - margin: 0 5px 0 0; - padding: 0 10px 0 0; -} -.post .post-author .post-meta .post-date:after { - position: absolute; - top: 50%; - right: 0; - width: 3px; - height: 3px; - border-radius: 50%; - background: var(--grey-ccc); - content: ""; -} -.post .post-author .post-meta .post-categories { - position: relative; - display: flex; - justify-content: flex-end; - gap: 5px; - margin: 8px 0 0; -} -.post .post-author .post-meta .post-categories a { - color: var(--main-color); - text-decoration: none; -} -.post .post-author .post-meta .post-categories a:hover { - text-decoration: underline; -} -.post .post-content abbr { - border-bottom: 1px dotted var(--grey-555); - text-decoration: none; - cursor: help; -} -.post .post-content code, .post .post-content kbd, .post .post-content pre { - margin: 0; - font-family: monospace; - word-wrap: break-word; - word-break: break-word; - white-space: pre-wrap; -} -.post .post-content address, .post .post-content cite, .post .post-content var { - font-style: italic; -} -.post .post-content blockquote { - margin: 40px 0; - padding: 0 0 0 20px; - border-left: 3px solid var(--grey-555); - color: var(--grey-222); - font-weight: 700; -} -.post .post-content em, .post .post-content strong { - color: var(--grey-222); -} -.post .post-content h1, .post .post-content h2, .post .post-content h3, .post .post-content h4, .post .post-content h5, .post .post-content h6 { - font-family: "PT Sans", sans-serif; - margin: 40px 0 25px 0; - color: var(--grey-222); -} -.post .post-content h4, .post .post-content h5, .post .post-content h6 { - margin: 25px 0; -} -.post .post-content h1 { - font-size: 28px; -} -.post .post-content h2 { - font-size: 26px; -} -.post .post-content h3 { - font-size: 22px; -} -.post .post-content h4 { - font-size: 20px; -} -.post .post-content h5 { - font-size: 18px; -} -.post .post-content h6 { - font-size: 16px; -} -.post .post-content a { - color: var(--main-color); -} -.post .post-content a:hover { - text-decoration: none; -} -.post .post-content img { - display: block; - max-width: 100%; - height: auto; -} -.post .post-content ul { - list-style-type: disc; - list-style-position: inside; -} -.post .post-content ul, .post .post-content ol { - margin: 15px 0; - padding: 0 0 0 20px; -} -.post .post-content ul ul, .post .post-content ul ol, .post .post-content ol ul, .post .post-content ol ol { - padding: 0 0 0 20px; -} -.post .post-content ul li, .post .post-content ol li { - margin: 5px 0; -} -.post .post-content ul li > code, .post .post-content ol li > code { - font-size: 14px; - padding: 3px 6px; - margin: 0 4px; - background: var(--grey-fa); - border: 1px solid var(--grey-ccc); -} -.post .post-content dl { - margin: 40px 0; -} -.post .post-content dl dt { - margin: 10px 0 0; - font-weight: 700; -} -.post .post-content dl dd { - margin: 5px 0; -} -.post .post-content dl dd > code { - font-size: 14px; - padding: 3px 6px; - margin: 0 4px; - background: var(--grey-fa); - border: 1px solid var(--grey-ccc); -} -.post .post-content p { - margin: 15px 0; -} -.post .post-content p > code { - font-size: 14px; - padding: 3px 6px; - margin: 0 4px; - background: var(--grey-fa); - border: 1px solid var(--grey-ccc); -} -.post .post-content .alignleft { - float: left; - margin: 20px 30px 10px 0; -} -.post .post-content .alignright { - float: right; - margin: 20px 0 10px 20px; -} -.post .post-content .aligncenter { - clear: both; - margin: 0 auto 20px; -} -.post .post-content figcaption { - font-size: 13px; - font-style: italic; - padding-top: 10px; -} -.post .post-content .iframe-wrapper { - position: relative; - padding-top: 56.25%; -} -.post .post-content .iframe-wrapper > iframe { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; -} -.post .post-content .read-more-button { - font-size: 16px; - color: var(--grey-555); -} -.post .post-footer { - display: flex; - justify-content: space-between; - align-items: flex-start; - gap: 0 20px; - margin: 50px 0 0; -} -.post .post-footer .post-tags { - display: flex; - flex-flow: row wrap; - flex: 9 1 auto; - gap: 0 20px; - list-style: none; - margin: 0; - padding: 0; -} -.post .post-footer .post-tags li a { - font-size: 14px; - font-family: "PT Sans", sans-serif; - color: var(--grey-ccc); - text-decoration: none; - transition: all 0.15s ease; -} -.post .post-footer .post-tags li a:hover { - color: var(--grey-555); -} -.post .post-footer .post-share { - position: relative; - flex: 0 0 auto; - border: 1px solid var(--grey-ddd); - overflow: hidden; -} -.post .post-footer .post-share:hover > span { - margin-left: -100%; -} -.post .post-footer .post-share:hover > ul { - left: 0; -} -.post .post-footer .post-share span { - display: block; - width: 100%; - padding: 0 15px; - font-family: "PT Sans", sans-serif; - font-size: 12px; - text-transform: uppercase; - text-align: center; - letter-spacing: 0.1em; - color: var(--grey-aaa); - cursor: pointer; - transition: margin 0.2s ease; -} -.post .post-footer .post-share ul { - position: absolute; - top: 0; - left: 100%; - width: 100%; - height: 100%; - display: flex; - list-style: none; - margin: 0; - padding: 0; - transition: left 0.2s ease; -} -.post .post-footer .post-share ul li { - flex: 1 0 auto; - cursor: pointer; -} -.post .post-footer .post-share ul li:last-child { - border-left: 1px solid var(--grey-ddd); -} -.post .post-footer .post-share ul li a { - display: flex; - align-items: center; - justify-content: center; - height: 100%; - color: var(--grey-ccc); -} -.post .post-footer .post-share ul li a:hover { - background: var(--grey-eee); -} -.post .post-footer .post-share ul li a svg { - fill: currentColor; -} -.post .post-comments { - position: relative; - margin: 40px 0 0; - padding: 20px 0 0; - border-top: 1px solid var(--grey-ddd); -} - -@media screen and (max-width: 960px) { - .post .post-title { - margin: 0 0 15px; - } - .post .post-author { - display: flex; - align-items: center; - flex-flow: row wrap; - gap: 15px; - position: static; - width: 100%; - margin: 0 0 20px; - text-align: left; - } - .post .post-author .author-avatar { - width: 36px; - height: 36px; - } - .post .post-author .author-info .author-name { - margin: 0; - color: var(--grey-555); - text-transform: initial; - } - .post .post-author .author-info .author-title { - display: none; - } - .post .post-author .post-meta { - display: flex; - flex-flow: row wrap; - margin: 0; - margin-left: auto; - padding: 0; - } - .post .post-author .post-meta:before { - content: none; - } - .post .post-author .post-meta .post-categories { - margin: 0 0 0 5px; - padding: 0 0 0 10px; - } - .post .post-author .post-meta .post-categories:before { - position: absolute; - top: 50%; - left: 0; - width: 3px; - height: 3px; - border-radius: 50%; - background: var(--grey-ccc); - content: ""; - } -} -.page .page-title { - margin: 0 0 25px; - font-family: "PT Sans", sans-serif; - font-size: 32px; - line-height: 42px; - font-weight: 700; - color: var(--grey-222); -} -.page .page-content abbr { - border-bottom: 1px dotted var(--grey-555); - text-decoration: none; - cursor: help; -} -.page .page-content code, -.page .page-content kbd, -.page .page-content pre { - margin: 0; - font-family: monospace; - word-wrap: break-word; - word-break: break-word; - white-space: pre-wrap; -} -.page .page-content address, -.page .page-content cite, -.page .page-content var { - font-style: italic; -} -.page .page-content blockquote { - margin: 40px 0; - padding: 0 0 0 20px; - border-left: 3px solid var(--grey-555); - color: var(--grey-222); - font-weight: 700; -} -.page .page-content em, -.page .page-content strong { - color: var(--grey-222); -} -.page .page-content h1, -.page .page-content h2, -.page .page-content h3, -.page .page-content h4, -.page .page-content h5, -.page .page-content h6 { - font-family: "PT Sans", sans-serif; - margin: 40px 0 25px 0; - color: var(--grey-222); -} -.page .page-content h4, -.page .page-content h5, -.page .page-content h6 { - margin: 25px 0; -} -.page .page-content h1 { - font-size: 28px; -} -.page .page-content h2 { - font-size: 26px; -} -.page .page-content h3 { - font-size: 22px; -} -.page .page-content h4 { - font-size: 20px; -} -.page .page-content h5 { - font-size: 18px; -} -.page .page-content h6 { - font-size: 16px; -} -.page .page-content a { - color: var(--main-color); -} -.page .page-content a:hover { - text-decoration: none; -} -.page .page-content img { - display: block; - max-width: 100%; - height: auto; -} -.page .page-content ul { - list-style-type: disc; - list-style-position: inside; -} -.page .page-content ul, -.page .page-content ol { - margin: 15px 0; - padding: 0 0 0 20px; -} -.page .page-content ul ul, -.page .page-content ul ol, -.page .page-content ol ul, -.page .page-content ol ol { - padding: 0 0 0 20px; -} -.page .page-content ul li, -.page .page-content ol li { - margin: 5px 0; -} -.page .page-content ul li > code, -.page .page-content ol li > code { - font-size: 14px; - padding: 3px 6px; - margin: 0 4px; - background: var(--grey-fa); - border: 1px solid var(--grey-ccc); -} -.page .page-content dl { - margin: 40px 0; -} -.page .page-content dl dt { - margin: 10px 0 0; - font-weight: 700; -} -.page .page-content dl dd { - margin: 5px 0; -} -.page .page-content dl dd > code { - font-size: 14px; - padding: 3px 6px; - margin: 0 4px; - background: var(--grey-fa); - border: 1px solid var(--grey-ccc); -} -.page .page-content p { - margin: 15px 0; -} -.page .page-content p > code { - font-size: 14px; - padding: 3px 6px; - margin: 0 4px; - background: var(--grey-fa); - border: 1px solid var(--grey-ccc); -} -.page .page-content .alignleft { - float: left; - margin: 20px 30px 10px 0; -} -.page .page-content .alignright { - float: right; - margin: 20px 0 10px 20px; -} -.page .page-content .aligncenter { - clear: both; - margin: 0 auto 20px; -} -.page .page-content figcaption { - font-size: 13px; - font-style: italic; - padding-top: 10px; -} -.page .page-content .iframe-wrapper { - position: relative; - padding-top: 56.25%; -} -.page .page-content .iframe-wrapper > iframe { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; -} - -.pagination { - display: grid; - grid-template-columns: 100px 1fr 100px; - margin: 50px 0 0; - font-size: 16px; -} -.pagination .previous, -.pagination .next { - text-decoration: none; - color: var(--grey-555); -} -.pagination .previous:hover, -.pagination .next:hover { - text-decoration: underline; -} -.pagination .page_number { - text-align: center; - color: var(--grey-ccc); -} - -/* Partials */ -.header-content-separator { - position: relative; - margin: 40px auto; - width: 4px; - height: 4px; - border-radius: 50%; - background: var(--grey-ccc); -} -.header-content-separator:before { - position: absolute; - left: -8px; - width: 4px; - height: 4px; - border-radius: 50%; - background: var(--grey-ccc); - content: ""; -} -.header-content-separator:after { - position: absolute; - left: 8px; - width: 4px; - height: 4px; - border-radius: 50%; - background: var(--grey-ccc); - content: ""; -} - -.toggleBurger { - display: none; -} -.toggleBurger:checked ~ .site-navigation { - transform: translate(0, 0); -} -.toggleBurger:checked ~ .toggleBurgerWrapper span { - background: transparent; -} -.toggleBurger:checked ~ .toggleBurgerWrapper span:before { - top: 0; - transform: rotate(135deg); -} -.toggleBurger:checked ~ .toggleBurgerWrapper span:after { - top: 0; - transform: rotate(-135deg); -} - -.toggleBurgerWrapper { - display: none; - position: fixed; - top: 20px; - left: 20px; - width: 25px; - height: 30px; - cursor: pointer; - z-index: 100; - user-select: none; -} -.toggleBurgerWrapper span { - position: absolute; - top: 50%; - height: 2px; - width: 100%; - background: var(--grey-222); - transition: all 0.3s ease; - transform: translate(0, -50%); -} -.toggleBurgerWrapper span:before, .toggleBurgerWrapper span:after { - position: absolute; - height: 2px; - width: 100%; - background: var(--grey-222); - content: ""; - transition: all 0.3s ease; -} -.toggleBurgerWrapper span:before { - top: -6px; -} -.toggleBurgerWrapper span:after { - top: 6px; -} - -@media screen and (max-width: 800px) { - .toggleBurgerWrapper { - display: block; - } -}
\ No newline at end of file diff --git a/compile-sass.dart b/compile-sass.dart deleted file mode 100644 index f86799a..0000000 --- a/compile-sass.dart +++ /dev/null @@ -1,8 +0,0 @@ -import 'dart:io'; -import 'package:sass/sass.dart' as sass; - -void main(List<String> arguments) { - final result = sass.compileToResult('assets/_sass/main.scss'); - - new File('assets/css/styles.css').writeAsStringSync(result.css); -} diff --git a/pubspec.lock b/pubspec.lock deleted file mode 100644 index 613aa06..0000000 --- a/pubspec.lock +++ /dev/null @@ -1,573 +0,0 @@ -# Generated by pub -# See https://dart.dev/tools/pub/glossary#lockfile -packages: - _fe_analyzer_shared: - dependency: transitive - description: - name: _fe_analyzer_shared - sha256: f6526c100095fd63a916824e3da344bbbd50c25c8f56bcd52d13c59d35bbe422 - url: "https://pub.dev" - source: hosted - version: "104.0.0" - analyzer: - dependency: transitive - description: - name: analyzer - sha256: "6c6d751533496152e78f71c46ad001260c5e74e0f9ec1f1cbc165a0467c086d6" - url: "https://pub.dev" - source: hosted - version: "14.0.0" - archive: - dependency: transitive - description: - name: archive - sha256: a96e8b390886ee8abb49b7bd3ac8df6f451c621619f52a26e815fdcf568959ff - url: "https://pub.dev" - source: hosted - version: "4.0.9" - args: - dependency: transitive - description: - name: args - sha256: d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04 - url: "https://pub.dev" - source: hosted - version: "2.7.0" - async: - dependency: transitive - description: - name: async - sha256: e2eb0491ba5ddb6177742d2da23904574082139b07c1e33b8503b9f46f3e1a37 - url: "https://pub.dev" - source: hosted - version: "2.13.1" - boolean_selector: - dependency: transitive - description: - name: boolean_selector - sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea" - url: "https://pub.dev" - source: hosted - version: "2.1.2" - charcode: - dependency: transitive - description: - name: charcode - sha256: fb0f1107cac15a5ea6ef0a6ef71a807b9e4267c713bb93e00e92d737cc8dbd8a - url: "https://pub.dev" - source: hosted - version: "1.4.0" - checked_yaml: - dependency: transitive - description: - name: checked_yaml - sha256: "959525d3162f249993882720d52b7e0c833978df229be20702b33d48d91de70f" - url: "https://pub.dev" - source: hosted - version: "2.0.4" - cli_config: - dependency: transitive - description: - name: cli_config - sha256: ac20a183a07002b700f0c25e61b7ee46b23c309d76ab7b7640a028f18e4d99ec - url: "https://pub.dev" - source: hosted - version: "0.2.0" - cli_pkg: - dependency: transitive - description: - name: cli_pkg - sha256: "1b3915a8924e8a495ec24b8ee076c182211d0bd563699a2c8ed9af33bf296af8" - url: "https://pub.dev" - source: hosted - version: "2.15.2" - cli_repl: - dependency: transitive - description: - name: cli_repl - sha256: a2ee06d98f211cb960c777519cb3d14e882acd90fe5e078668e3ab4baab0ddd4 - url: "https://pub.dev" - source: hosted - version: "0.2.3" - cli_util: - dependency: transitive - description: - name: cli_util - sha256: "5909d2c6b66817222779e1eedc19e0e28b76d1df7bd9856a4792ccb9881df358" - url: "https://pub.dev" - source: hosted - version: "0.5.1" - collection: - dependency: transitive - description: - name: collection - sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" - url: "https://pub.dev" - source: hosted - version: "1.19.1" - convert: - dependency: transitive - description: - name: convert - sha256: b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68 - url: "https://pub.dev" - source: hosted - version: "3.1.2" - coverage: - dependency: transitive - description: - name: coverage - sha256: "956a3de0725ca232ad353565a8290d3357592bf4250f6f298a185e2d949c5d3d" - url: "https://pub.dev" - source: hosted - version: "1.15.1" - crypto: - dependency: transitive - description: - name: crypto - sha256: c8ea0233063ba03258fbcf2ca4d6dadfefe14f02fab57702265467a19f27fadf - url: "https://pub.dev" - source: hosted - version: "3.0.7" - ffi: - dependency: transitive - description: - name: ffi - sha256: "6d7fd89431262d8f3125e81b50d3847a091d846eafcd4fdb88dd06f36d705a45" - url: "https://pub.dev" - source: hosted - version: "2.2.0" - file: - dependency: transitive - description: - name: file - sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4 - url: "https://pub.dev" - source: hosted - version: "7.0.1" - fixnum: - dependency: transitive - description: - name: fixnum - sha256: b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be - url: "https://pub.dev" - source: hosted - version: "1.1.1" - frontend_server_client: - dependency: transitive - description: - name: frontend_server_client - sha256: f64a0333a82f30b0cca061bc3d143813a486dc086b574bfb233b7c1372427694 - url: "https://pub.dev" - source: hosted - version: "4.0.0" - glob: - dependency: transitive - description: - name: glob - sha256: c3f1ee72c96f8f78935e18aa8cecced9ab132419e8625dc187e1c2408efc20de - url: "https://pub.dev" - source: hosted - version: "2.1.3" - grinder: - dependency: transitive - description: - name: grinder - sha256: "8c65fc6c0c0748c2d9080c1fb603d7a9640bf5a5eda29f35099bd351cc45093f" - url: "https://pub.dev" - source: hosted - version: "0.10.0" - http: - dependency: transitive - description: - name: http - sha256: "87721a4a50b19c7f1d49001e51409bddc46303966ce89a65af4f4e6004896412" - url: "https://pub.dev" - source: hosted - version: "1.6.0" - http_multi_server: - dependency: transitive - description: - name: http_multi_server - sha256: aa6199f908078bb1c5efb8d8638d4ae191aac11b311132c3ef48ce352fb52ef8 - url: "https://pub.dev" - source: hosted - version: "3.2.2" - http_parser: - dependency: transitive - description: - name: http_parser - sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571" - url: "https://pub.dev" - source: hosted - version: "4.1.2" - io: - dependency: transitive - description: - name: io - sha256: dfd5a80599cf0165756e3181807ed3e77daf6dd4137caaad72d0b7931597650b - url: "https://pub.dev" - source: hosted - version: "1.0.5" - js: - dependency: transitive - description: - name: js - sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 - url: "https://pub.dev" - source: hosted - version: "0.6.7" - json_annotation: - dependency: transitive - description: - name: json_annotation - sha256: "2a743920d81b7910627f68ee2c9ac1fc0bfee32b9fc3403587d7c6791ca12f80" - url: "https://pub.dev" - source: hosted - version: "4.12.0" - logging: - dependency: transitive - description: - name: logging - sha256: c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61 - url: "https://pub.dev" - source: hosted - version: "1.3.0" - matcher: - dependency: transitive - description: - name: matcher - sha256: "31bd099b47c10cd1aeb55146a2d46ce0277630ecef3f7dae54ad7873f36696cd" - url: "https://pub.dev" - source: hosted - version: "0.12.20" - meta: - dependency: transitive - description: - name: meta - sha256: "307249ce4ff29d58a18e97f6345f539382eb9c9c29ecda628900f31de0443dd9" - url: "https://pub.dev" - source: hosted - version: "1.19.0" - mime: - dependency: transitive - description: - name: mime - sha256: "41a20518f0cb1256669420fdba0cd90d21561e560ac240f26ef8322e45bb7ed6" - url: "https://pub.dev" - source: hosted - version: "2.0.0" - native_stack_traces: - dependency: transitive - description: - name: native_stack_traces - sha256: d34cf916db87b14d39465b3e3b4b4a8ee1f304bde6ed7605571e34802e3d6a11 - url: "https://pub.dev" - source: hosted - version: "0.6.1" - native_synchronization: - dependency: transitive - description: - name: native_synchronization - sha256: "047fa3665d611e178edc167e56166714f125750f064d20216892f1cca69d9d1d" - url: "https://pub.dev" - source: hosted - version: "0.3.1" - node_interop: - dependency: transitive - description: - name: node_interop - sha256: "4848ac408c0cdd0f70136b755df816a8e4c96c244e5377a3fb3b8f8950666150" - url: "https://pub.dev" - source: hosted - version: "2.2.0" - node_preamble: - dependency: transitive - description: - name: node_preamble - sha256: "6e7eac89047ab8a8d26cf16127b5ed26de65209847630400f9aefd7cd5c730db" - url: "https://pub.dev" - source: hosted - version: "2.0.2" - package_config: - dependency: transitive - description: - name: package_config - sha256: ffcf4cf3d6c0b74ac43708d9f56625506e8a68aa935abe9d267a7330f320eb5d - url: "https://pub.dev" - source: hosted - version: "3.0.0" - path: - dependency: transitive - description: - name: path - sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" - url: "https://pub.dev" - source: hosted - version: "1.9.1" - petitparser: - dependency: transitive - description: - name: petitparser - sha256: "91bd59303e9f769f108f8df05e371341b15d59e995e6806aefab827b58336675" - url: "https://pub.dev" - source: hosted - version: "7.0.2" - pool: - dependency: transitive - description: - name: pool - sha256: "978783255c543aa3586a1b3c21f6e9d720eb315376a915872c61ef8b5c20177d" - url: "https://pub.dev" - source: hosted - version: "1.5.2" - posix: - dependency: transitive - description: - name: posix - sha256: "185ef7606574f789b40f289c233efa52e96dead518aed988e040a10737febb07" - url: "https://pub.dev" - source: hosted - version: "6.5.0" - protobuf: - dependency: transitive - description: - name: protobuf - sha256: "75ec242d22e950bdcc79ee38dd520ce4ee0bc491d7fadc4ea47694604d22bf06" - url: "https://pub.dev" - source: hosted - version: "6.0.0" - pub_semver: - dependency: transitive - description: - name: pub_semver - sha256: "5bfcf68ca79ef689f8990d1160781b4bad40a3bd5e5218ad4076ddb7f4081585" - url: "https://pub.dev" - source: hosted - version: "2.2.0" - pubspec_parse: - dependency: transitive - description: - name: pubspec_parse - sha256: "0560ba233314abbed0a48a2956f7f022cce7c3e1e73df540277da7544cad4082" - url: "https://pub.dev" - source: hosted - version: "1.5.0" - retry: - dependency: transitive - description: - name: retry - sha256: "822e118d5b3aafed083109c72d5f484c6dc66707885e07c0fbcb8b986bba7efc" - url: "https://pub.dev" - source: hosted - version: "3.1.2" - sass: - dependency: "direct dev" - description: - name: sass - sha256: b1a3e2c2e5d3cdb24d49fc1ec781e111298b44fbf0e8e34f2bdcc294841782e1 - url: "https://pub.dev" - source: hosted - version: "1.101.2" - shelf: - dependency: transitive - description: - name: shelf - sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12 - url: "https://pub.dev" - source: hosted - version: "1.4.2" - shelf_packages_handler: - dependency: transitive - description: - name: shelf_packages_handler - sha256: "89f967eca29607c933ba9571d838be31d67f53f6e4ee15147d5dc2934fee1b1e" - url: "https://pub.dev" - source: hosted - version: "3.0.2" - shelf_static: - dependency: transitive - description: - name: shelf_static - sha256: c87c3875f91262785dade62d135760c2c69cb217ac759485334c5857ad89f6e3 - url: "https://pub.dev" - source: hosted - version: "1.1.3" - shelf_web_socket: - dependency: transitive - description: - name: shelf_web_socket - sha256: "3632775c8e90d6c9712f883e633716432a27758216dfb61bd86a8321c0580925" - url: "https://pub.dev" - source: hosted - version: "3.0.0" - source_map_stack_trace: - dependency: transitive - description: - name: source_map_stack_trace - sha256: c0713a43e323c3302c2abe2a1cc89aa057a387101ebd280371d6a6c9fa68516b - url: "https://pub.dev" - source: hosted - version: "2.1.2" - source_maps: - dependency: transitive - description: - name: source_maps - sha256: "190222579a448b03896e0ca6eca5998fa810fda630c1d65e2f78b3f638f54812" - url: "https://pub.dev" - source: hosted - version: "0.10.13" - source_span: - dependency: transitive - description: - name: source_span - sha256: "56a02f1f4cd1a2d96303c0144c93bd6d909eea6bee6bf5a0e0b685edbd4c47ab" - url: "https://pub.dev" - source: hosted - version: "1.10.2" - stack_trace: - dependency: transitive - description: - name: stack_trace - sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" - url: "https://pub.dev" - source: hosted - version: "1.12.1" - stream_channel: - dependency: transitive - description: - name: stream_channel - sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" - url: "https://pub.dev" - source: hosted - version: "2.1.4" - stream_transform: - dependency: transitive - description: - name: stream_transform - sha256: ad47125e588cfd37a9a7f86c7d6356dde8dfe89d071d293f80ca9e9273a33871 - url: "https://pub.dev" - source: hosted - version: "2.1.1" - string_scanner: - dependency: transitive - description: - name: string_scanner - sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" - url: "https://pub.dev" - source: hosted - version: "1.4.1" - term_glyph: - dependency: transitive - description: - name: term_glyph - sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" - url: "https://pub.dev" - source: hosted - version: "1.2.2" - test: - dependency: transitive - description: - name: test - sha256: "0d5ba5602ec3baa28c8ce365e1efc5575969c765f45c554a3e167dc7945b9c30" - url: "https://pub.dev" - source: hosted - version: "1.31.2" - test_api: - dependency: transitive - description: - name: test_api - sha256: "475610b2aa23c19687cce2961e44b0cc57cafe220f67c2b80201231b2a07fbe7" - url: "https://pub.dev" - source: hosted - version: "0.7.13" - test_core: - dependency: transitive - description: - name: test_core - sha256: a39c204a4fc7a7ccb04a2b985e359fda3cc37e45e0b8ac61c3fb1a05aa832132 - url: "https://pub.dev" - source: hosted - version: "0.6.19" - test_process: - dependency: transitive - description: - name: test_process - sha256: ea79c090deffc87d8276a5d28bb498d080a9873be6b1074d9dcfb82eb87e138e - url: "https://pub.dev" - source: hosted - version: "2.1.1" - typed_data: - dependency: transitive - description: - name: typed_data - sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006 - url: "https://pub.dev" - source: hosted - version: "1.4.0" - vm_service: - dependency: transitive - description: - name: vm_service - sha256: "0016aef94fc66495ac78af5859181e3f3bf2026bd8eecc72b9565601e19ab360" - url: "https://pub.dev" - source: hosted - version: "15.2.0" - watcher: - dependency: transitive - description: - name: watcher - sha256: "1398c9f081a753f9226febe8900fce8f7d0a67163334e1c94a2438339d79d635" - url: "https://pub.dev" - source: hosted - version: "1.2.1" - web: - dependency: transitive - description: - name: web - sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a" - url: "https://pub.dev" - source: hosted - version: "1.1.1" - web_socket: - dependency: transitive - description: - name: web_socket - sha256: "34d64019aa8e36bf9842ac014bb5d2f5586ca73df5e4d9bf5c936975cae6982c" - url: "https://pub.dev" - source: hosted - version: "1.0.1" - web_socket_channel: - dependency: transitive - description: - name: web_socket_channel - sha256: d645757fb0f4773d602444000a8131ff5d48c9e47adfe9772652dd1a4f2d45c8 - url: "https://pub.dev" - source: hosted - version: "3.0.3" - webkit_inspection_protocol: - dependency: transitive - description: - name: webkit_inspection_protocol - sha256: "87d3f2333bb240704cd3f1c6b5b7acd8a10e7f0bc28c28dcf14e782014f4a572" - url: "https://pub.dev" - source: hosted - version: "1.2.1" - xml: - dependency: transitive - description: - name: xml - sha256: "67f0aff7be013d107995e9b75bf4e7f2c3ef2dfdb2c8e68024bba0a7fd5756a4" - url: "https://pub.dev" - source: hosted - version: "7.0.1" - yaml: - dependency: transitive - description: - name: yaml - sha256: b9da305ac7c39faa3f030eccd175340f968459dae4af175130b3fc47e40d76ce - url: "https://pub.dev" - source: hosted - version: "3.1.3" -sdks: - dart: ">=3.11.0 <4.0.0" diff --git a/pubspec.yaml b/pubspec.yaml deleted file mode 100644 index 552afcd..0000000 --- a/pubspec.yaml +++ /dev/null @@ -1,7 +0,0 @@ -name: flevum - -environment: - sdk: ^3.6.0 - -dev_dependencies: - sass: ^1.101.0 diff --git a/src/Main.hs b/src/Main.hs index 62fa761..c9a5137 100644 --- a/src/Main.hs +++ b/src/Main.hs @@ -29,6 +29,7 @@ import Hakyll.Core.Rules , compile , route , match + , create ) import Hakyll.Web.CompressCss (compressCssCompiler) import Hakyll.Web.Html (demoteHeaders, withUrls) @@ -260,6 +261,24 @@ createPaginatedPage rulesBuilder pagePattern prefix = grouper :: [Identifier] -> Rules [[Identifier]] grouper = fmap (paginateEvery 25) . sortRecentFirst +-- The order of merging is significant. +styles :: Compiler [Item String] +styles = traverse load + [ "assets/css/base/vars.css" + , "assets/css/base/reset.css" + , "assets/css/base/fonts.css" + , "assets/css/base/syntax.css" + , "assets/css/base/animations.css" + , "assets/css/layout.css" + , "assets/css/pages/fourofour.css" + , "assets/css/components/post.css" + , "assets/css/components/page.css" + , "assets/css/components/pagination.css" + , "assets/css/partials/header-separator.css" + , "assets/css/partials/burger-menu.css" + , "assets/css/custom.css" + ] + -- -- Hakyll rules. -- @@ -297,9 +316,11 @@ rules = do copyMatchedFiles "assets/fonts/*.woff2" copyMatchedFiles "assets/images/**" - match "assets/css/*.css" + -- Styles. + match "assets/css/**.css" $ compile compressCssCompiler + create ["assets/css/styles.css"] $ route idRoute - >> compile compressCssCompiler + >> compile (styles >>= makeItem . concatMap itemBody) main :: IO () main = hakyllWith configuration rules diff --git a/templates/default.html b/templates/default.html index 20c9147..a7f959e 100644 --- a/templates/default.html +++ b/templates/default.html @@ -7,8 +7,7 @@ <link rel="canonical" href="https://www.flevum.de$url$"> <link rel="icon" type="image/png" href="/assets/images/favicon.svg"> - <link href="/assets/css/styles.css?v=1" rel="stylesheet"> - <link href="/assets/css/custom.css?v=2" rel="stylesheet"> + <link href="/assets/css/styles.css?v=2" rel="stylesheet"> </head> <body> |
