From 801e08e73624005ed498101ad616d987f70f8cdf Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Sun, 12 Jul 2026 17:04:26 +0200 Subject: Add original style sources and an SCSS compiler --- .gitignore | 1 + assets/_sass/_layout.scss | 165 ++++ assets/_sass/base/_animations.scss | 46 + assets/_sass/base/_helpers.scss | 10 + assets/_sass/base/_mixins.scss | 95 ++ assets/_sass/base/_reset.scss | 35 + assets/_sass/base/_syntax.scss | 260 ++++++ assets/_sass/base/_vars.scss | 41 + assets/_sass/components/_page.scss | 174 ++++ assets/_sass/components/_pagination.scss | 20 + assets/_sass/components/_post.scss | 447 +++++++++ assets/_sass/main.scss | 21 + assets/_sass/pages/_fourofour.scss | 9 + assets/_sass/partials/_burger-menu.scss | 68 ++ assets/_sass/partials/_header-separator.scss | 27 + assets/css/styles.css | 1297 +++++++++++++++++++++++++- compile-sass.dart | 8 + pubspec.lock | 573 ++++++++++++ pubspec.yaml | 7 + 19 files changed, 3303 insertions(+), 1 deletion(-) create mode 100644 assets/_sass/_layout.scss create mode 100644 assets/_sass/base/_animations.scss create mode 100644 assets/_sass/base/_helpers.scss create mode 100644 assets/_sass/base/_mixins.scss create mode 100644 assets/_sass/base/_reset.scss create mode 100644 assets/_sass/base/_syntax.scss create mode 100644 assets/_sass/base/_vars.scss create mode 100644 assets/_sass/components/_page.scss create mode 100644 assets/_sass/components/_pagination.scss create mode 100644 assets/_sass/components/_post.scss create mode 100644 assets/_sass/main.scss create mode 100644 assets/_sass/pages/_fourofour.scss create mode 100644 assets/_sass/partials/_burger-menu.scss create mode 100644 assets/_sass/partials/_header-separator.scss create mode 100644 compile-sass.dart create mode 100644 pubspec.lock create mode 100644 pubspec.yaml diff --git a/.gitignore b/.gitignore index 864e837..fb2e4f7 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ /dist-newstyle/ /dist/ /deployment.txt +/.dart_tool/ diff --git a/assets/_sass/_layout.scss b/assets/_sass/_layout.scss new file mode 100644 index 0000000..0c2a1b7 --- /dev/null +++ b/assets/_sass/_layout.scss @@ -0,0 +1,165 @@ +.site-header { + display: grid; + @include justify-content(); + 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; + + @include transition(background .2s ease); + + &:before { position: absolute; top: 0; left: -150%; content: ""; width: 50%; height: 100%; + background: -webkit-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, .3) 100%); + background: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, .3) 100%); + @include 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 { + @include flexbox(); + @include justify-content(); + @include align-items(); + @include 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; + @include transition(color .2s ease); + cursor: pointer; + + &:before { + position: absolute; + opacity: 0; + left: 0; + bottom: 0; + width: 0%; + border-bottom: 2px solid var(--grey-222); + + @include 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 { + @include flexbox(); + @include align-items(); + @include justify-content(); + @include 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%; + @include justify-content(flex-start); + @include flex-flow(column nowrap); + gap: 20px 0; + @include translate(0, -100%); + @include 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/base/_animations.scss b/assets/_sass/base/_animations.scss new file mode 100644 index 0000000..2885970 --- /dev/null +++ b/assets/_sass/base/_animations.scss @@ -0,0 +1,46 @@ +@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; + } +} diff --git a/assets/_sass/base/_helpers.scss b/assets/_sass/base/_helpers.scss new file mode 100644 index 0000000..d461516 --- /dev/null +++ b/assets/_sass/base/_helpers.scss @@ -0,0 +1,10 @@ +.hidden { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; +} diff --git a/assets/_sass/base/_mixins.scss b/assets/_sass/base/_mixins.scss new file mode 100644 index 0000000..7541d12 --- /dev/null +++ b/assets/_sass/base/_mixins.scss @@ -0,0 +1,95 @@ +@mixin transition($transitions...) { + transition: $transitions; + -moz-transition: $transitions; + -webkit-transition: $transitions; + -o-transition: $transitions; +} + +@mixin no-select { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +@mixin placeholder { + &.placeholder { @content } + &:-ms-input-placeholder { @content } + &:-moz-placeholder { @content } + &::-moz-placeholder { @content } + &::-webkit-input-placeholder { @content } +} + +@mixin translate($val1, $val2) { + -webkit-transform: translate(#{$val1}, #{$val2}); + -moz-transform: translate(#{$val1}, #{$val2}); + -ms-transform: translate(#{$val1}, #{$val2}); + -o-transform: translate(#{$val1}, #{$val2}); + transform: translate(#{$val1}, #{$val2}); +} + +@mixin skew($x, $y) { + -webkit-transform: skew(#{$x}, #{$y}); + -moz-transform: skew(#{$x}, #{$y}); + -ms-transform: skew(#{$x}, #{$y}); + -o-transform: skew(#{$x}, #{$y}); + transform: skew(#{$x}, #{$y}); +} + +@mixin scale($val) { + -webkit-transform: scale(#{$val}); + -moz-transform: scale(#{$val}); + -ms-transform: scale(#{$val}); + -o-transform: scale(#{$val}); + transform: scale(#{$val}); +} + +@mixin rotate($deg) { + -webkit-transform: rotate(#{$deg}); + -moz-transform: rotate(#{$deg}); + -ms-transform: rotate(#{$deg}); + -o-transform: rotate(#{$deg}); + transform: rotate(#{$deg}); +} + +@mixin flexbox() { + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; +} + +@mixin inline-flex() { + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: -moz-inline-flex; + display: -ms-inline-flexbox; + display: inline-flex; +} + +@mixin flex($grow: 1, $shrink: 1, $basis: auto) { + -webkit-flex: $grow $shrink $basis; + -moz-flex: $grow $shrink $basis; + -ms-flex: $grow $shrink $basis; + flex: $grow $shrink $basis; +} + +@mixin flex-flow($values: (row wrap)) { + -webkit-flex-flow: $values; + -moz-flex-flow: $values; + -ms-flex-flow: $values; + flex-flow: $values; +} + +@mixin justify-content($pos: center) { + -webkit-justify-content: $pos; + justify-content: $pos; +} + +@mixin align-items($align: center) { + -webkit-align-items: $align; + align-items: $align; +} diff --git a/assets/_sass/base/_reset.scss b/assets/_sass/base/_reset.scss new file mode 100644 index 0000000..f896901 --- /dev/null +++ b/assets/_sass/base/_reset.scss @@ -0,0 +1,35 @@ +* { + box-sizing: border-box; + -moz-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; + } +} diff --git a/assets/_sass/base/_syntax.scss b/assets/_sass/base/_syntax.scss new file mode 100644 index 0000000..8951f90 --- /dev/null +++ b/assets/_sass/base/_syntax.scss @@ -0,0 +1,260 @@ +.highlight { + background: var(--grey-fa); + border: 1px solid var(--grey-ccc); + padding: 30px; + + .lineno { + padding: 0 15px 0 0; + } + // Comment + .c { + color: #998; + font-style: italic + } + // Error + .err { + color: #a61717; + background-color: #e3d2d2 + } + // Keyword + .k { + font-weight: bold + } + // Operator + .o { + font-weight: bold + } + // Comment.Multiline + .cm { + color: #998; + font-style: italic + } + // Comment.Preproc + .cp { + color: #999; + font-weight: bold + } + // Comment.Single + .c1 { + color: #998; + font-style: italic + } + // Comment.Special + .cs { + color: #999; + font-weight: bold; + font-style: italic + } + // Generic.Deleted + .gd { + color: #000; + background-color: #fdd + } + // Generic.Deleted.Specific + .gd .x { + color: #000; + background-color: #faa + } + // Generic.Emph + .ge { + font-style: italic + } + // Generic.Error + .gr { + color: #a00 + } + // Generic.Heading + .gh { + color: #999 + } + // Generic.Inserted + .gi { + color: #000; + background-color: #dfd + } + // Generic.Inserted.Specific + .gi .x { + color: #000; + background-color: #afa + } + // Generic.Output + .go { + color: #888 + } + // Generic.Prompt + .gp { + color: #555 + } + // Generic.Strong + .gs { + font-weight: bold + } + // Generic.Subheading + .gu { + color: #aaa + } + // Generic.Traceback + .gt { + color: #a00 + } + // Keyword.Constant + .kc { + font-weight: bold + } + // Keyword.Declaration + .kd { + font-weight: bold + } + // Keyword.Pseudo + .kp { + font-weight: bold + } + // Keyword.Reserved + .kr { + font-weight: bold + } + // Keyword.Type + .kt { + color: #458; + font-weight: bold + } + // Literal.Number + .m { + color: #099 + } + // Literal.String + .s { + color: #d14 + } + // Name.Attribute + .na { + color: #008080 + } + // Name.Builtin + .nb { + color: #0086B3 + } + // Name.Class + .nc { + color: #458; + font-weight: bold + } + // Name.Constant + .no { + color: #008080 + } + // Name.Entity + .ni { + color: #800080 + } + // Name.Exception + .ne { + color: #900; + font-weight: bold + } + // Name.Function + .nf { + color: #900; + font-weight: bold + } + // Name.Namespace + .nn { + color: #555 + } + // Name.Tag + .nt { + color: #000080 + } + // Name.Variable + .nv { + color: #008080 + } + // Operator.Word + .ow { + font-weight: bold + } + // Text.Whitespace + .w { + color: #bbb + } + // Literal.Number.Float + .mf { + color: #099 + } + // Literal.Number.Hex + .mh { + color: #099 + } + // Literal.Number.Integer + .mi { + color: #099 + } + // Literal.Number.Oct + .mo { + color: #099 + } + // Literal.String.Backtick + .sb { + color: #d14 + } + // Literal.String.Char + .sc { + color: #d14 + } + // Literal.String.Doc + .sd { + color: #d14 + } + // Literal.String.Double + .s2 { + color: #d14 + } + // Literal.String.Escape + .se { + color: #d14 + } + // Literal.String.Heredoc + .sh { + color: #d14 + } + // Literal.String.Interpol + .si { + color: #d14 + } + // Literal.String.Other + .sx { + color: #d14 + } + // Literal.String.Regex + .sr { + color: #009926 + } + // Literal.String.Single + .s1 { + color: #d14 + } + // Literal.String.Symbol + .ss { + color: #990073 + } + // Name.Builtin.Pseudo + .bp { + color: #999 + } + // Name.Variable.Class + .vc { + color: #008080 + } + // Name.Variable.Global + .vg { + color: #008080 + } + // Name.Variable.Instance + .vi { + color: #008080 + } + // Literal.Number.Integer.Long + .il { + color: #099 + } +} diff --git a/assets/_sass/base/_vars.scss b/assets/_sass/base/_vars.scss new file mode 100644 index 0000000..25435ff --- /dev/null +++ b/assets/_sass/base/_vars.scss @@ -0,0 +1,41 @@ +: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; +} diff --git a/assets/_sass/components/_page.scss b/assets/_sass/components/_page.scss new file mode 100644 index 0000000..d4ec79b --- /dev/null +++ b/assets/_sass/components/_page.scss @@ -0,0 +1,174 @@ +.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 new file mode 100644 index 0000000..fcb1b23 --- /dev/null +++ b/assets/_sass/components/_pagination.scss @@ -0,0 +1,20 @@ +.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 new file mode 100644 index 0000000..5eed7cb --- /dev/null +++ b/assets/_sass/components/_post.scss @@ -0,0 +1,447 @@ +.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; + @include flexbox(); + @include 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 { + @include flexbox(); + @include justify-content(space-between); + @include align-items(flex-start); + gap: 0 20px; + margin: 50px 0 0; + + .post-tags { + @include flexbox(); + @include flex-flow(row wrap); + @include 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; + @include transition(all .15s ease); + &:hover { + color: var(--grey-555); + } + } + } + } + .post-share { + position: relative; + @include 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; + @include transition(margin .2s ease); + } + ul { + position: absolute; + top: 0; + left: 100%; + width: 100%; + height: 100%; + @include flexbox(); + list-style: none; + margin: 0; + padding: 0; + @include transition(left .2s ease); + + li { + @include flex(1, 0, auto); + cursor: pointer; + + &:last-child { + border-left: 1px solid var(--grey-ddd); + } + a { + @include flexbox(); + @include align-items(); + @include justify-content(); + 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 { + @include flexbox(); + @include align-items(); + @include 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 { + @include flexbox(); + @include 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 new file mode 100644 index 0000000..a20dba4 --- /dev/null +++ b/assets/_sass/main.scss @@ -0,0 +1,21 @@ +@import 'base/vars'; +@import 'base/mixins'; +@import 'base/reset'; +@import 'base/syntax'; +@import 'base/animations'; +@import 'base/helpers'; + +//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/pages/_fourofour.scss b/assets/_sass/pages/_fourofour.scss new file mode 100644 index 0000000..5257ff1 --- /dev/null +++ b/assets/_sass/pages/_fourofour.scss @@ -0,0 +1,9 @@ +.page-not-found { + text-align: center; + + svg { + fill: currentColor; + color: var(--grey-ddd); + margin: 0 auto; + } +} diff --git a/assets/_sass/partials/_burger-menu.scss b/assets/_sass/partials/_burger-menu.scss new file mode 100644 index 0000000..2bea84c --- /dev/null +++ b/assets/_sass/partials/_burger-menu.scss @@ -0,0 +1,68 @@ +.toggleBurger { + display: none; + + &:checked { + & ~ .site-navigation { + @include translate(0, 0); + } + & ~ .toggleBurgerWrapper { + span { + background: transparent; + &:before { + top: 0; + @include rotate(135deg); + } + &:after { + top: 0; + @include rotate(-135deg); + } + } + } + } +} + +.toggleBurgerWrapper { + display: none; + position: fixed; + top: 20px; + left: 20px; + width: 25px; + height: 30px; + cursor: pointer; + z-index: 100; + @include no-select(); + + span { + position: absolute; + top: 50%; + height: 2px; + width: 100%; + background: var(--grey-222); + + @include transition(all .3s ease); + @include translate(0, -50%); + + &:before, + &:after { + position: absolute; + height: 2px; + width: 100%; + background: var(--grey-222); + content: ""; + + @include 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 new file mode 100644 index 0000000..4c264df --- /dev/null +++ b/assets/_sass/partials/_header-separator.scss @@ -0,0 +1,27 @@ +.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/css/styles.css b/assets/css/styles.css index 7b985e2..258be18 100644 --- a/assets/css/styles.css +++ b/assets/css/styles.css @@ -1 +1,1296 @@ -: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;-moz-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}}.highlight{background:var(--grey-fa);border:1px solid var(--grey-ccc);padding:30px}.highlight .lineno{padding:0 15px 0 0}.highlight .c{color:#998;font-style:italic}.highlight .err{color:#a61717;background-color:#e3d2d2}.highlight .k{font-weight:bold}.highlight .o{font-weight:bold}.highlight .cm{color:#998;font-style:italic}.highlight .cp{color:#999;font-weight:bold}.highlight .c1{color:#998;font-style:italic}.highlight .cs{color:#999;font-weight:bold;font-style:italic}.highlight .gd{color:#000;background-color:#fdd}.highlight .gd .x{color:#000;background-color:#faa}.highlight .ge{font-style:italic}.highlight .gr{color:#a00}.highlight .gh{color:#999}.highlight .gi{color:#000;background-color:#dfd}.highlight .gi .x{color:#000;background-color:#afa}.highlight .go{color:#888}.highlight .gp{color:#555}.highlight .gs{font-weight:bold}.highlight .gu{color:#aaa}.highlight .gt{color:#a00}.highlight .kc{font-weight:bold}.highlight .kd{font-weight:bold}.highlight .kp{font-weight:bold}.highlight .kr{font-weight:bold}.highlight .kt{color:#458;font-weight:bold}.highlight .m{color:#099}.highlight .s{color:#d14}.highlight .na{color:#008080}.highlight .nb{color:#0086B3}.highlight .nc{color:#458;font-weight:bold}.highlight .no{color:#008080}.highlight .ni{color:#800080}.highlight .ne{color:#900;font-weight:bold}.highlight .nf{color:#900;font-weight:bold}.highlight .nn{color:#555}.highlight .nt{color:#000080}.highlight .nv{color:#008080}.highlight .ow{font-weight:bold}.highlight .w{color:#bbb}.highlight .mf{color:#099}.highlight .mh{color:#099}.highlight .mi{color:#099}.highlight .mo{color:#099}.highlight .sb{color:#d14}.highlight .sc{color:#d14}.highlight .sd{color:#d14}.highlight .s2{color:#d14}.highlight .se{color:#d14}.highlight .sh{color:#d14}.highlight .si{color:#d14}.highlight .sx{color:#d14}.highlight .sr{color:#009926}.highlight .s1{color:#d14}.highlight .ss{color:#990073}.highlight .bp{color:#999}.highlight .vc{color:#008080}.highlight .vg{color:#008080}.highlight .vi{color:#008080}.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}}.hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.wrapper{max-width:600px;margin:0 auto;padding:0 20px 35px;border-bottom:1px solid var(--grey-eee)}.wrapper.long{max-width:800px}.site-header{display:grid;-webkit-justify-content:center;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;-moz-transition:background 0.2s ease;-webkit-transition:background 0.2s ease;-o-transition:background 0.2s ease}.site-header .site-header-wrapper:before{position:absolute;top:0;left:-150%;content:"";width:50%;height:100%;background:-webkit-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(255,255,255,0.3) 100%);background:linear-gradient(to right, rgba(255,255,255,0) 0%, rgba(255,255,255,0.3) 100%);-webkit-transform:skew(-45deg, 0);-moz-transform:skew(-45deg, 0);-ms-transform:skew(-45deg, 0);-o-transform:skew(-45deg, 0);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)}@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:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;-webkit-flex-flow:row wrap;-moz-flex-flow:row wrap;-ms-flex-flow:row wrap;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{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-justify-content:center;justify-content:center;-webkit-align-items:center;align-items:center;-webkit-flex-flow:row wrap;-moz-flex-flow:row wrap;-ms-flex-flow:row wrap;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;-moz-transition:color 0.2s ease;-webkit-transition:color 0.2s ease;-o-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;-moz-transition:width 0.18s ease,opacity 0.18s ease;-webkit-transition:width 0.18s ease,opacity 0.18s ease;-o-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-navigation{position:fixed;bottom:0;left:0;width:100%;height:100%;-webkit-justify-content:flex-start;justify-content:flex-start;-webkit-flex-flow:column nowrap;-moz-flex-flow:column nowrap;-ms-flex-flow:column nowrap;flex-flow:column nowrap;gap:20px 0;-webkit-transform:translate(0, -100%);-moz-transform:translate(0, -100%);-ms-transform:translate(0, -100%);-o-transform:translate(0, -100%);transform:translate(0, -100%);transition:transform 0.25s ease-in-out;-moz-transition:transform 0.25s ease-in-out;-webkit-transition:transform 0.25s ease-in-out;-o-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}}.site-footer{max-width:800px;margin:0 auto;padding:40px 20px;font-size:14px;line-height:22px;color:var(--grey-ccc);text-align:center}.page-work .projects-list{display:grid;gap:40px 20px;grid-template-columns:repeat(auto-fit, minmax(240px, 1fr))}.page-work .projects-list .project{text-align:center}.page-work .projects-list .project .project-cover{display:block;margin:0 0 15px;transition:transform 0.2s ease;-moz-transition:transform 0.2s ease;-webkit-transition:transform 0.2s ease;-o-transition:transform 0.2s ease}.page-work .projects-list .project .project-cover:hover{-webkit-transform:scale(1.08);-moz-transform:scale(1.08);-ms-transform:scale(1.08);-o-transform:scale(1.08);transform:scale(1.08)}.page-work .projects-list .project .project-cover img{display:block;width:100%;height:auto}.page-work .projects-list .project .project-title{font-size:18px;margin:0 0 5px}.page-work .projects-list .project .project-title a{color:var(--grey-222);text-decoration:none}.page-work .projects-list .project .project-title a:hover{text-decoration:underline}.page-work .projects-list .project .project-category{display:block;font-family:'PT Sans', sans-serif;font-size:12px;line-height:16px;color:var(--grey-aaa);text-transform:uppercase;letter-spacing:.1em}.page-project{display:grid;gap:50px;grid-template-columns:7fr 3fr;grid-template-rows:auto;grid-template-areas:"carousel carousel" "content sidebar"}.page-project .section-title{display:block;font-family:'PT Sans', sans-serif;font-size:13px;color:var(--grey-222);text-transform:uppercase;letter-spacing:.1em}.page-project .project-gallery{grid-area:carousel;position:relative;overflow:hidden}.page-project .project-gallery .slides{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;transition:transform 0.5s ease;-moz-transition:transform 0.5s ease;-webkit-transition:transform 0.5s ease;-o-transition:transform 0.5s ease}.page-project .project-gallery .slides .slide{position:relative;width:100%;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-flex:1 0 auto;-moz-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto;padding:50% 0 0}.page-project .project-gallery .slides .slide figure a{display:block}.page-project .project-gallery .slides .slide figure a img{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover}.page-project .project-gallery .gallery-nav{display:grid;gap:0 5px;grid-auto-flow:column;position:absolute;bottom:20px;right:20px;z-index:1}.page-project .project-gallery .gallery-nav label{width:12px;height:12px;background:transparent;border:2px solid var(--grey-222);display:block;border-radius:50%;transition:background 0.1s ease;-moz-transition:background 0.1s ease;-webkit-transition:background 0.1s ease;-o-transition:background 0.1s ease;cursor:pointer}.page-project .project-gallery .gallery-nav label.active,.page-project .project-gallery .gallery-nav label:hover{background:var(--grey-222)}.page-project .project-overview{grid-area:content}.page-project .project-overview .project-title{margin:0 0 20px;font-size:40px;line-height:44px;color:var(--grey-222)}.page-project .project-overview a{color:var(--main-color)}.page-project .project-overview a:hover{text-decoration:none}.page-project .project-overview abbr{border-bottom:1px dotted var(--grey-555);text-decoration:none;cursor:help}.page-project .project-overview code,.page-project .project-overview kbd,.page-project .project-overview pre{margin:0;font-family:monospace;word-wrap:break-word;word-break:break-word;white-space:pre-wrap}.page-project .project-overview address,.page-project .project-overview cite,.page-project .project-overview var{font-style:italic}.page-project .project-overview blockquote{margin:40px 0;padding:0 0 0 20px;border-left:3px solid var(--grey-555);color:var(--grey-222);font-weight:700}.page-project .project-overview em,.page-project .project-overview strong{color:var(--grey-222)}.page-project .project-overview p{margin:15px 0}.page-project .project-overview p>code{font-size:14px;padding:3px 6px;margin:0 4px;background:var(--grey-fa);border:1px solid var(--grey-ccc)}.page-project .project-overview img{display:block;max-width:100%;height:auto}.page-project .project-overview ul{list-style-type:disc;list-style-position:inside}.page-project .project-overview ul,.page-project .project-overview ol{margin:15px 0;padding:0 0 0 20px}.page-project .project-overview ul ul,.page-project .project-overview ul ol,.page-project .project-overview ol ul,.page-project .project-overview ol ol{padding:0 0 0 20px}.page-project .project-overview ul li,.page-project .project-overview ol li{margin:5px 0}.page-project .project-overview ul li>code,.page-project .project-overview ol li>code{font-size:14px;padding:3px 6px;margin:0 4px;background:var(--grey-fa);border:1px solid var(--grey-ccc)}.page-project .project-meta{grid-area:sidebar}.page-project .project-meta>div{position:sticky;top:0;display:grid;gap:30px;justify-items:start;align-items:start;align-content:start;font-size:16px}.page-project .project-meta>div .button{display:inline-block;background:var(--main-color);padding:10px 30px;text-transform:uppercase;color:var(--grey-fc);border-radius:5px;font-family:'PT Sans', sans-serif;font-size:14px;font-weight:700;border:none;cursor:pointer;transition:background 0.1s ease;-moz-transition:background 0.1s ease;-webkit-transition:background 0.1s ease;-o-transition:background 0.1s ease;text-decoration:none;text-align:center}.page-project .project-meta>div .button:hover{background:var(--main-color-hover)}.page-project .project-meta>div .button:active,.page-project .project-meta>div .button:focus{outline:none}@media screen and (max-width: 640px){.page-project{grid-template-areas:"carousel carousel" "content content" "sidebar sidebar";grid-template-columns:1fr 1fr}.page-project .project-meta>div{position:static;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-flex-flow:row wrap;-moz-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap}.page-project .project-meta>div>div{-webkit-flex:1 0 auto;-moz-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto}}.page-about .profile{float:right;margin:20px 20px 20px 50px}.page-about .profile img{display:block;max-width:100%;height:auto}.page-about .profile ul{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-flex-flow:row wrap;-moz-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap;list-style:none;margin:20px 0 0;padding:0;border-right:1px solid var(--grey-ddd);border-bottom:1px solid var(--grey-ddd)}.page-about .profile ul li{flex:1}.page-about .profile ul li a{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;padding:15px;border-left:1px solid var(--grey-ddd);border-top:1px solid var(--grey-ddd);transition:background 0.15s ease;-moz-transition:background 0.15s ease;-webkit-transition:background 0.15s ease;-o-transition:background 0.15s ease;color:var(--grey-aaa)}.page-about .profile ul li a:hover{background:var(--main-color)}.page-about .profile ul li a:hover svg{fill:var(--grey-fc)}.page-about .profile ul li a svg{fill:currentColor}.page-about h1{font-size:48px;line-height:52px;color:var(--grey-222);margin:0 0 30px}.page-about .intro-paragraph{font-size:20px;line-height:32px;color:var(--grey-222)}@media screen and (max-width: 640px){.page-about .profile{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-flex-flow:column nowrap;-moz-flex-flow:column nowrap;-ms-flex-flow:column nowrap;flex-flow:column nowrap;float:none;margin:0 0 30px}}.page-not-found{text-align:center}.page-not-found svg{fill:currentColor;color:var(--grey-ddd);margin:0 auto}.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:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-justify-content:flex-end;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:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-justify-content:space-between;justify-content:space-between;-webkit-align-items:flex-start;align-items:flex-start;gap:0 20px;margin:50px 0 0}.post .post-footer .post-tags{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-flex-flow:row wrap;-moz-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-flex:9 1 auto;-moz-flex:9 1 auto;-ms-flex:9 1 auto;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;-moz-transition:all 0.15s ease;-webkit-transition:all 0.15s ease;-o-transition:all 0.15s ease}.post .post-footer .post-tags li a:hover{color:var(--grey-555)}.post .post-footer .post-share{position:relative;-webkit-flex:0 0 auto;-moz-flex:0 0 auto;-ms-flex:0 0 auto;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:.1em;color:var(--grey-aaa);cursor:pointer;transition:margin 0.2s ease;-moz-transition:margin 0.2s ease;-webkit-transition:margin 0.2s ease;-o-transition:margin 0.2s ease}.post .post-footer .post-share ul{position:absolute;top:0;left:100%;width:100%;height:100%;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;list-style:none;margin:0;padding:0;transition:left 0.2s ease;-moz-transition:left 0.2s ease;-webkit-transition:left 0.2s ease;-o-transition:left 0.2s ease}.post .post-footer .post-share ul li{-webkit-flex:1 0 auto;-moz-flex:1 0 auto;-ms-flex:1 0 auto;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:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content: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:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-flex-flow:row wrap;-moz-flex-flow:row wrap;-ms-flex-flow:row wrap;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:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-flex-flow:row wrap;-moz-flex-flow:row wrap;-ms-flex-flow:row wrap;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%}.site-search{position:relative;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-flex-flow:column wrap;-moz-flex-flow:column wrap;-ms-flex-flow:column wrap;flex-flow:column wrap;max-width:600px;margin:30px auto 0;padding:0 20px}.site-search>div{display:inline-grid;max-width:400px}.site-search>div:after{content:attr(data-value);visibility:hidden;white-space:pre-wrap;height:0}.site-search>div #site-search-input{max-width:400px;height:30px;font-family:'PT Serif', serif;font-style:italic;color:var(--grey-222);font-size:18px;background:transparent;border:none;outline:none}.site-search>div #site-search-input.placeholder{color:var(--grey-ccc);font-family:'PT Serif', serif;font-style:italic;font-size:18px}.site-search>div #site-search-input:-ms-input-placeholder{color:var(--grey-ccc);font-family:'PT Serif', serif;font-style:italic;font-size:18px}.site-search>div #site-search-input:-moz-placeholder{color:var(--grey-ccc);font-family:'PT Serif', serif;font-style:italic;font-size:18px}.site-search>div #site-search-input::-moz-placeholder{color:var(--grey-ccc);font-family:'PT Serif', serif;font-style:italic;font-size:18px}.site-search>div #site-search-input::-webkit-input-placeholder{color:var(--grey-ccc);font-family:'PT Serif', serif;font-style:italic;font-size:18px}.site-search #site-search-results-container{position:absolute;width:90%;background:var(--grey-fa);top:40px;margin:0;padding:0;list-style:none;box-shadow:0 10px 200px rgba(0,0,0,0.15);z-index:1;border-radius:5px}.site-search #site-search-results-container:empty{display:none}.site-search #site-search-results-container .no-results{padding:10px 15px;text-align:center}.site-search #site-search-results-container li{border-top:1px solid var(--grey-ddd)}.site-search #site-search-results-container li:first-of-type{border-top:none}.site-search #site-search-results-container li:first-of-type a{border-radius:5px 5px 0 0}.site-search #site-search-results-container li:last-of-type a{border-radius:0 0 5px 5px}.site-search #site-search-results-container li a{display:block;padding:10px 15px;text-decoration:none;color:var(--grey-555);background:transparent;transition:background 0.1s ease;-moz-transition:background 0.1s ease;-webkit-transition:background 0.1s ease;-o-transition:background 0.1s ease}.site-search #site-search-results-container li a:hover{background:var(--grey-eee)}.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)}.modal-container{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;position:fixed;width:100%;height:100%;bottom:0;right:0;background:rgba(0,0,0,0.7);opacity:0;pointer-events:none;z-index:9999}.modal-container .modal{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-flex-flow:column wrap;-moz-flex-flow:column wrap;-ms-flex-flow:column wrap;flex-flow:column wrap;width:100%;max-width:450px;margin:0 20px;background:var(--grey-fa);border-radius:5px}.modal-container .modal.zoomIn{animation-name:zoomIn;animation-duration:.4s;animation-fill-mode:both}.modal-container .modal.zoomOut{animation-name:zoomOut;animation-duration:.4s;animation-fill-mode:both}.modal-container .modal .modal-header{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;background:var(--main-color);padding:18px 20px;border-radius:5px 5px 0 0;font-family:'PT Sans', sans-serif;font-size:20px;font-weight:700;color:var(--grey-fc)}.modal-container .modal .modal-header svg{width:16px;height:16px;transition:all 0.1s ease;-moz-transition:all 0.1s ease;-webkit-transition:all 0.1s ease;-o-transition:all 0.1s ease;fill:currentColor;opacity:.5;cursor:pointer;transition:opacity 0.15s ease;-moz-transition:opacity 0.15s ease;-webkit-transition:opacity 0.15s ease;-o-transition:opacity 0.15s ease}.modal-container .modal .modal-header svg:hover{opacity:1}.modal-container .modal .modal-body{padding:20px}.modal-container .modal .modal-body .form-message{display:none;margin-top:0;text-align:center;padding:10px 15px}.modal-container .modal .modal-body .form-message.success{display:block;background:var(--form-success-bg);color:var(--form-success-text)}.modal-container .modal .modal-body .form-message.error{display:block;background:var(--form-error-bg);color:var(--form-error-text)}.modal-container .modal .modal-body form{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-flex-flow:column wrap;-moz-flex-flow:column wrap;-ms-flex-flow:column wrap;flex-flow:column wrap;gap:10px}.modal-container .modal .modal-body form label{display:block;width:100%}.modal-container .modal .modal-body form .input,.modal-container .modal .modal-body form .textarea{width:100%;height:40px;padding:10px;background:transparent;border:1px solid var(--grey-ddd);border-radius:5px;font-family:'PT Sans', sans-serif;font-size:16px;color:var(--grey-555);outline:none}.modal-container .modal .modal-body form .input.placeholder,.modal-container .modal .modal-body form .textarea.placeholder{color:var(--grey-ccc);font-family:'PT Sans', serif;font-size:16px}.modal-container .modal .modal-body form .input:-ms-input-placeholder,.modal-container .modal .modal-body form .textarea:-ms-input-placeholder{color:var(--grey-ccc);font-family:'PT Sans', serif;font-size:16px}.modal-container .modal .modal-body form .input:-moz-placeholder,.modal-container .modal .modal-body form .textarea:-moz-placeholder{color:var(--grey-ccc);font-family:'PT Sans', serif;font-size:16px}.modal-container .modal .modal-body form .input::-moz-placeholder,.modal-container .modal .modal-body form .textarea::-moz-placeholder{color:var(--grey-ccc);font-family:'PT Sans', serif;font-size:16px}.modal-container .modal .modal-body form .input::-webkit-input-placeholder,.modal-container .modal .modal-body form .textarea::-webkit-input-placeholder{color:var(--grey-ccc);font-family:'PT Sans', serif;font-size:16px}.modal-container .modal .modal-body form .textarea{height:auto;min-height:200px}.modal-container .modal .modal-body form .button{display:inline-block;background:var(--main-color);padding:14px 30px;text-transform:uppercase;color:var(--grey-fc);border-radius:5px;font-family:'PT Sans', sans-serif;font-size:14px;font-weight:700;border:none;cursor:pointer;transition:background 0.1s ease;-moz-transition:background 0.1s ease;-webkit-transition:background 0.1s ease;-o-transition:background 0.1s ease}.modal-container .modal .modal-body form .button:hover{background:var(--main-color-hover)}.modal-container .modal .modal-body form .button:active,.modal-container .modal .modal-body form .button:focus{outline:none}.modal-container.fadeIn{pointer-events:auto;animation-name:fadeIn;animation-duration:.4s;animation-fill-mode:both}.modal-container.fadeOut{animation-name:fadeOut;animation-duration:.4s;animation-fill-mode:both}.custom-lightbox{position:fixed;visibility:hidden;opacity:0;transition:opacity 0.2s ease;-moz-transition:opacity 0.2s ease;-webkit-transition:opacity 0.2s ease;-o-transition:opacity 0.2s ease;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;top:0;left:0;bottom:0;right:0;background:rgba(0,0,0,0.7);z-index:9000}.custom-lightbox.active{visibility:visible;opacity:1}.custom-lightbox .lightbox-content{position:relative;display:grid;grid-template-columns:1fr 8fr 1fr;gap:40px;-webkit-align-items:center;align-items:center;justify-items:center;width:100%;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.custom-lightbox .prev-image,.custom-lightbox .next-image,.custom-lightbox .lightbox-close{cursor:pointer;opacity:.5;transition:opacity 0.1s ease;-moz-transition:opacity 0.1s ease;-webkit-transition:opacity 0.1s ease;-o-transition:opacity 0.1s ease;color:var(--grey-fa)}.custom-lightbox .prev-image:hover,.custom-lightbox .next-image:hover,.custom-lightbox .lightbox-close:hover{opacity:.9}.custom-lightbox .prev-image svg,.custom-lightbox .next-image svg,.custom-lightbox .lightbox-close svg{width:32px;height:32px;fill:currentColor}.custom-lightbox .prev-image svg{-webkit-transform:rotate(180deg);-moz-transform:rotate(180deg);-ms-transform:rotate(180deg);-o-transform:rotate(180deg);transform:rotate(180deg)}.custom-lightbox .current-image img{width:100%;max-width:100%;height:auto}.custom-lightbox .lightbox-close{position:fixed;top:30px;right:30px;width:24px;height:24px;padding:0;background:none;border:0;outline:none}@media screen and (max-width: 960px){.custom-lightbox .lightbox-content{grid-template-columns:1fr}.custom-lightbox .lightbox-content .prev-image,.custom-lightbox .lightbox-content .next-image{position:absolute;opacity:.8}.custom-lightbox .lightbox-content .prev-image svg,.custom-lightbox .lightbox-content .next-image svg{width:40px;height:40px}.custom-lightbox .lightbox-content .prev-image{left:20px}.custom-lightbox .lightbox-content .next-image{right:20px}}.cookie-banner{display:none;position:fixed;width:100%;max-width:1200px;left:50%;bottom:15px;padding:20px 30px;-webkit-transform:translate(-50%, 0);-moz-transform:translate(-50%, 0);-ms-transform:translate(-50%, 0);-o-transform:translate(-50%, 0);transform:translate(-50%, 0);-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between;background:var(--grey-fa);box-shadow:0 0 100px rgba(0,0,0,0.2);border-radius:10px}.cookie-banner.active{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex}.cookie-banner div{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center}.cookie-banner div svg{fill:currentColor;color:var(--grey-666);-webkit-flex:1 0 auto;-moz-flex:1 0 auto;-ms-flex:1 0 auto;flex:1 0 auto}.cookie-banner div p{max-width:980px;padding:0 30px}.cookie-banner .button{display:inline-block;background:var(--main-color);padding:10px 30px;text-transform:uppercase;color:var(--grey-fc);border-radius:5px;font-family:'PT Sans', sans-serif;font-size:14px;font-weight:700;border:none;cursor:pointer;transition:background 0.1s ease;-moz-transition:background 0.1s ease;-webkit-transition:background 0.1s ease;-o-transition:background 0.1s ease;text-decoration:none;text-align:center}.cookie-banner .button:hover{background:var(--main-color-hover)}.cookie-banner .button:active,.cookie-banner .button:focus{outline:none}@media screen and (max-width: 640px){.cookie-banner{-webkit-flex-flow:column nowrap;-moz-flex-flow:column nowrap;-ms-flex-flow:column nowrap;flex-flow:column nowrap}}@media screen and (max-width: 468px){.cookie-banner div{-webkit-flex-flow:column nowrap;-moz-flex-flow:column nowrap;-ms-flex-flow:column nowrap;flex-flow:column nowrap}}.reading-progress-bar{position:fixed;top:0;left:0;min-width:100%;height:5px;z-index:9;transition:width 0.05s ease;-moz-transition:width 0.05s ease;-webkit-transition:width 0.05s ease;-o-transition:width 0.05s ease}.reading-progress-bar:before{position:absolute;top:0;left:0;content:"";height:5px;background:var(--main-color);width:inherit}.changeTheme{position:fixed;top:20px;right:20px;overflow:hidden;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-justify-content:center;justify-content:center;-webkit-align-items:center;align-items:center;background:transparent;width:25px;height:30px;cursor:pointer;z-index:10}.changeTheme .modeIcon{position:relative;width:20px;height:20px;border-radius:50%;background:var(--grey-ccc);transition:transform 0.35s ease;-moz-transition:transform 0.35s ease;-webkit-transition:transform 0.35s ease;-o-transition:transform 0.35s ease}.changeTheme .modeIcon:before{position:absolute;width:6px;height:6px;top:50%;left:50%;-webkit-transform:translate(-50%, -50%);-moz-transform:translate(-50%, -50%);-ms-transform:translate(-50%, -50%);-o-transform:translate(-50%, -50%);transform:translate(-50%, -50%);transition:box-shadow 0.3s ease;-moz-transition:box-shadow 0.3s ease;-webkit-transition:box-shadow 0.3s ease;-o-transition:box-shadow 0.3s ease;border-radius:50%;opacity:0;content:""}.changeTheme .modeIcon:after{position:absolute;width:100%;height:100%;top:-30%;left:30%;transition:transform 0.35s ease;-moz-transition:transform 0.35s ease;-webkit-transition:transform 0.35s ease;-o-transition:transform 0.35s ease;border-radius:50%;background:var(--body-bg);content:""}[data-theme="dark"] .changeTheme .modeIcon{background:var(--grey-fc);-webkit-transform:scale(.5);-moz-transform:scale(.5);-ms-transform:scale(.5);-o-transform:scale(.5);transform:scale(.5)}[data-theme="dark"] .changeTheme .modeIcon:before{opacity:1;box-shadow:0 -20px 0 0 var(--grey-fc),0 20px 0 0 var(--grey-fc),-20px 0 0 0 var(--grey-fc),20px 0 0 0 var(--grey-fc),15px 15px 0 0 var(--grey-fc),15px -15px 0 0 var(--grey-fc),-15px 15px 0 0 var(--grey-fc),-15px -15px 0 0 var(--grey-fc)}[data-theme="dark"] .changeTheme .modeIcon:after{opacity:0;-webkit-transform:translate(50%, -50%);-moz-transform:translate(50%, -50%);-ms-transform:translate(50%, -50%);-o-transform:translate(50%, -50%);transform:translate(50%, -50%)}.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{-webkit-transform:translate(0, 0);-moz-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.toggleBurger:checked~.toggleBurgerWrapper span{background:transparent}.toggleBurger:checked~.toggleBurgerWrapper span:before{top:0;-webkit-transform:rotate(135deg);-moz-transform:rotate(135deg);-ms-transform:rotate(135deg);-o-transform:rotate(135deg);transform:rotate(135deg)}.toggleBurger:checked~.toggleBurgerWrapper span:after{top:0;-webkit-transform:rotate(-135deg);-moz-transform:rotate(-135deg);-ms-transform:rotate(-135deg);-o-transform:rotate(-135deg);transform:rotate(-135deg)}.toggleBurgerWrapper{display:none;position:fixed;top:20px;left:20px;width:25px;height:30px;cursor:pointer;z-index:100;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.toggleBurgerWrapper span{position:absolute;top:50%;height:2px;width:100%;background:var(--grey-222);transition:all 0.3s ease;-moz-transition:all 0.3s ease;-webkit-transition:all 0.3s ease;-o-transition:all 0.3s ease;-webkit-transform:translate(0, -50%);-moz-transform:translate(0, -50%);-ms-transform:translate(0, -50%);-o-transform:translate(0, -50%);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;-moz-transition:all 0.3s ease;-webkit-transition:all 0.3s ease;-o-transition:all 0.3s ease}.toggleBurgerWrapper span:before{top:-6px}.toggleBurgerWrapper span:after{top:6px}@media screen and (max-width: 800px){.toggleBurgerWrapper{display:block}} +: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; + -moz-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; + } +} +.highlight { + background: var(--grey-fa); + border: 1px solid var(--grey-ccc); + padding: 30px; +} +.highlight .lineno { + padding: 0 15px 0 0; +} +.highlight .c { + color: #998; + font-style: italic; +} +.highlight .err { + color: #a61717; + background-color: #e3d2d2; +} +.highlight .k { + font-weight: bold; +} +.highlight .o { + font-weight: bold; +} +.highlight .cm { + color: #998; + font-style: italic; +} +.highlight .cp { + color: #999; + font-weight: bold; +} +.highlight .c1 { + color: #998; + font-style: italic; +} +.highlight .cs { + color: #999; + font-weight: bold; + font-style: italic; +} +.highlight .gd { + color: #000; + background-color: #fdd; +} +.highlight .gd .x { + color: #000; + background-color: #faa; +} +.highlight .ge { + font-style: italic; +} +.highlight .gr { + color: #a00; +} +.highlight .gh { + color: #999; +} +.highlight .gi { + color: #000; + background-color: #dfd; +} +.highlight .gi .x { + color: #000; + background-color: #afa; +} +.highlight .go { + color: #888; +} +.highlight .gp { + color: #555; +} +.highlight .gs { + font-weight: bold; +} +.highlight .gu { + color: #aaa; +} +.highlight .gt { + color: #a00; +} +.highlight .kc { + font-weight: bold; +} +.highlight .kd { + font-weight: bold; +} +.highlight .kp { + font-weight: bold; +} +.highlight .kr { + font-weight: bold; +} +.highlight .kt { + color: #458; + font-weight: bold; +} +.highlight .m { + color: #099; +} +.highlight .s { + color: #d14; +} +.highlight .na { + color: #008080; +} +.highlight .nb { + color: #0086B3; +} +.highlight .nc { + color: #458; + font-weight: bold; +} +.highlight .no { + color: #008080; +} +.highlight .ni { + color: #800080; +} +.highlight .ne { + color: #900; + font-weight: bold; +} +.highlight .nf { + color: #900; + font-weight: bold; +} +.highlight .nn { + color: #555; +} +.highlight .nt { + color: #000080; +} +.highlight .nv { + color: #008080; +} +.highlight .ow { + font-weight: bold; +} +.highlight .w { + color: #bbb; +} +.highlight .mf { + color: #099; +} +.highlight .mh { + color: #099; +} +.highlight .mi { + color: #099; +} +.highlight .mo { + color: #099; +} +.highlight .sb { + color: #d14; +} +.highlight .sc { + color: #d14; +} +.highlight .sd { + color: #d14; +} +.highlight .s2 { + color: #d14; +} +.highlight .se { + color: #d14; +} +.highlight .sh { + color: #d14; +} +.highlight .si { + color: #d14; +} +.highlight .sx { + color: #d14; +} +.highlight .sr { + color: #009926; +} +.highlight .s1 { + color: #d14; +} +.highlight .ss { + color: #990073; +} +.highlight .bp { + color: #999; +} +.highlight .vc { + color: #008080; +} +.highlight .vg { + color: #008080; +} +.highlight .vi { + color: #008080; +} +.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; + } +} +.hidden { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; +} + +.site-header { + display: grid; + -webkit-justify-content: center; + 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; + -moz-transition: background 0.2s ease; + -webkit-transition: background 0.2s ease; + -o-transition: background 0.2s ease; +} +.site-header .site-header-wrapper:before { + position: absolute; + top: 0; + left: -150%; + content: ""; + width: 50%; + height: 100%; + background: -webkit-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.3) 100%); + background: linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.3) 100%); + -webkit-transform: skew(-45deg, 0); + -moz-transform: skew(-45deg, 0); + -ms-transform: skew(-45deg, 0); + -o-transform: skew(-45deg, 0); + 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: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; + -webkit-justify-content: center; + justify-content: center; + -webkit-align-items: center; + align-items: center; + -webkit-flex-flow: row wrap; + -moz-flex-flow: row wrap; + -ms-flex-flow: row wrap; + 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; + -moz-transition: color 0.2s ease; + -webkit-transition: color 0.2s ease; + -o-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; + -moz-transition: width 0.18s ease, opacity 0.18s ease; + -webkit-transition: width 0.18s ease, opacity 0.18s ease; + -o-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: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; + -webkit-align-items: center; + align-items: center; + -webkit-justify-content: center; + justify-content: center; + -webkit-flex-flow: row wrap; + -moz-flex-flow: row wrap; + -ms-flex-flow: row wrap; + 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%; + -webkit-justify-content: flex-start; + justify-content: flex-start; + -webkit-flex-flow: column nowrap; + -moz-flex-flow: column nowrap; + -ms-flex-flow: column nowrap; + flex-flow: column nowrap; + gap: 20px 0; + -webkit-transform: translate(0, -100%); + -moz-transform: translate(0, -100%); + -ms-transform: translate(0, -100%); + -o-transform: translate(0, -100%); + transform: translate(0, -100%); + transition: transform 0.25s ease-in-out; + -moz-transition: transform 0.25s ease-in-out; + -webkit-transition: transform 0.25s ease-in-out; + -o-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; +} + +.page-not-found { + text-align: center; +} +.page-not-found svg { + fill: currentColor; + color: var(--grey-ddd); + margin: 0 auto; +} + +.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: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; + -webkit-justify-content: flex-end; + 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: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; + -webkit-justify-content: space-between; + justify-content: space-between; + -webkit-align-items: flex-start; + align-items: flex-start; + gap: 0 20px; + margin: 50px 0 0; +} +.post .post-footer .post-tags { + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; + -webkit-flex-flow: row wrap; + -moz-flex-flow: row wrap; + -ms-flex-flow: row wrap; + flex-flow: row wrap; + -webkit-flex: 9 1 auto; + -moz-flex: 9 1 auto; + -ms-flex: 9 1 auto; + 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; + -moz-transition: all 0.15s ease; + -webkit-transition: all 0.15s ease; + -o-transition: all 0.15s ease; +} +.post .post-footer .post-tags li a:hover { + color: var(--grey-555); +} +.post .post-footer .post-share { + position: relative; + -webkit-flex: 0 0 auto; + -moz-flex: 0 0 auto; + -ms-flex: 0 0 auto; + 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; + -moz-transition: margin 0.2s ease; + -webkit-transition: margin 0.2s ease; + -o-transition: margin 0.2s ease; +} +.post .post-footer .post-share ul { + position: absolute; + top: 0; + left: 100%; + width: 100%; + height: 100%; + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; + list-style: none; + margin: 0; + padding: 0; + transition: left 0.2s ease; + -moz-transition: left 0.2s ease; + -webkit-transition: left 0.2s ease; + -o-transition: left 0.2s ease; +} +.post .post-footer .post-share ul li { + -webkit-flex: 1 0 auto; + -moz-flex: 1 0 auto; + -ms-flex: 1 0 auto; + 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: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; + -webkit-align-items: center; + align-items: center; + -webkit-justify-content: 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: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; + -webkit-align-items: center; + align-items: center; + -webkit-flex-flow: row wrap; + -moz-flex-flow: row wrap; + -ms-flex-flow: row wrap; + 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: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; + -webkit-flex-flow: row wrap; + -moz-flex-flow: row wrap; + -ms-flex-flow: row wrap; + 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); +} + +.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 { + -webkit-transform: translate(0, 0); + -moz-transform: translate(0, 0); + -ms-transform: translate(0, 0); + -o-transform: translate(0, 0); + transform: translate(0, 0); +} +.toggleBurger:checked ~ .toggleBurgerWrapper span { + background: transparent; +} +.toggleBurger:checked ~ .toggleBurgerWrapper span:before { + top: 0; + -webkit-transform: rotate(135deg); + -moz-transform: rotate(135deg); + -ms-transform: rotate(135deg); + -o-transform: rotate(135deg); + transform: rotate(135deg); +} +.toggleBurger:checked ~ .toggleBurgerWrapper span:after { + top: 0; + -webkit-transform: rotate(-135deg); + -moz-transform: rotate(-135deg); + -ms-transform: rotate(-135deg); + -o-transform: rotate(-135deg); + transform: rotate(-135deg); +} + +.toggleBurgerWrapper { + display: none; + position: fixed; + top: 20px; + left: 20px; + width: 25px; + height: 30px; + cursor: pointer; + z-index: 100; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.toggleBurgerWrapper span { + position: absolute; + top: 50%; + height: 2px; + width: 100%; + background: var(--grey-222); + transition: all 0.3s ease; + -moz-transition: all 0.3s ease; + -webkit-transition: all 0.3s ease; + -o-transition: all 0.3s ease; + -webkit-transform: translate(0, -50%); + -moz-transform: translate(0, -50%); + -ms-transform: translate(0, -50%); + -o-transform: translate(0, -50%); + 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; + -moz-transition: all 0.3s ease; + -webkit-transition: all 0.3s ease; + -o-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 new file mode 100644 index 0000000..f86799a --- /dev/null +++ b/compile-sass.dart @@ -0,0 +1,8 @@ +import 'dart:io'; +import 'package:sass/sass.dart' as sass; + +void main(List 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 new file mode 100644 index 0000000..613aa06 --- /dev/null +++ b/pubspec.lock @@ -0,0 +1,573 @@ +# 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 new file mode 100644 index 0000000..552afcd --- /dev/null +++ b/pubspec.yaml @@ -0,0 +1,7 @@ +name: flevum + +environment: + sdk: ^3.6.0 + +dev_dependencies: + sass: ^1.101.0 -- cgit v1.2.3