From 6b03c711ac8000b5bd09c23f3fea2a005389b230 Mon Sep 17 00:00:00 2001 From: Dillon Date: Tue, 17 Mar 2020 21:16:04 +0800 Subject: [PATCH] feat(shortcode): add link shortcode (#179) * feat(shortcode): add link shortcode * docs: add docs for link shortcode * docs: fix 'mailto' in link shortcode docs error --- README.md | 4 +- README.zh-cn.md | 4 +- assets/css/_core/_base.scss | 15 +--- assets/css/_mixin/_index.scss | 2 + assets/css/_mixin/_link.scss | 18 +++++ .../{_partial/_home => _mixin}/_summary.scss | 48 +----------- assets/css/_page/_home.scss | 2 - assets/css/_page/_single.scss | 29 ++----- assets/css/_partial/_archive/_tags.scss | 9 +-- assets/css/_partial/_single/_code.scss | 44 ++++------- assets/css/_partial/_single/_footer.scss | 32 +------- assets/css/style.template.scss | 2 + exampleSite/config.toml | 7 +- exampleSite/config/css/_override.scss | 4 +- .../content/posts/basic-markdown-syntax.en.md | 2 +- .../content/posts/basic-markdown-syntax.fr.md | 2 +- .../posts/basic-markdown-syntax.zh-cn.md | 2 +- .../posts/theme-documentation-basics.en.md | 51 ++++++------ .../posts/theme-documentation-basics.fr.md | 56 +++++++------- .../posts/theme-documentation-basics.zh-cn.md | 51 ++++++------ .../posts/theme-documentation-content.fr.md | 5 ++ .../theme-documentation-shortcodes.en.md | 66 ++++++++++++++++ .../theme-documentation-shortcodes.fr.md | 66 ++++++++++++++++ .../theme-documentation-shortcodes.zh-cn.md | 77 +++++++++++++++++-- layouts/_default/summary.html | 4 +- layouts/partials/plugin/link.html | 5 +- layouts/posts/single.html | 4 +- layouts/shortcodes/link.html | 13 ++++ package.json | 1 + ...s_90197bdac482216ecaaaae0fb88517c1.content | 2 +- 30 files changed, 375 insertions(+), 252 deletions(-) create mode 100644 assets/css/_mixin/_index.scss create mode 100644 assets/css/_mixin/_link.scss rename assets/css/{_partial/_home => _mixin}/_summary.scss (69%) create mode 100644 layouts/shortcodes/link.html diff --git a/README.md b/README.md index e60363df..4e0d2229 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ [![License](https://img.shields.io/github/license/dillonzq/LoveIt?style=flat-square)](https://github.com/dillonzq/LoveIt/blob/master/LICENSE) [![CircleCI](https://img.shields.io/circleci/build/github/dillonzq/LoveIt/develop?label=CI&style=flat-square&logo=circleci)](https://app.circleci.com/pipelines/github/dillonzq/LoveIt) -English README | [中文说明](README.zh-cn.md) +English README | [中文说明](https://github.com/dillonzq/LoveIt/blob/master/README.zh-cn.md) **LoveIt** is a **clean**, **elegant** but **advanced** blog theme for [Hugo](https://gohugo.io/). @@ -14,7 +14,7 @@ It is based on the original [LeaveIt Theme](https://github.com/liuzc/LeaveIt/) a Since the three themes have a similar look, if you have questions about their differences, read [Why choose LoveIt](#why-choose-loveit) so that you can choose the one that works best for you. -![Hugo Theme LoveIt](https://github.com/dillonzq/LoveIt/raw/develop/images/Apple-Devices-Preview.png) +![Hugo Theme LoveIt](https://github.com/dillonzq/LoveIt/raw/master/images/Apple-Devices-Preview.png) ## [Demo Site](https://hugoloveit.com/) diff --git a/README.zh-cn.md b/README.zh-cn.md index 9beee573..9c50268b 100644 --- a/README.zh-cn.md +++ b/README.zh-cn.md @@ -5,7 +5,7 @@ [![License](https://img.shields.io/github/license/dillonzq/LoveIt?style=flat-square)](https://github.com/dillonzq/LoveIt/blob/master/LICENSE) [![CircleCI](https://img.shields.io/circleci/build/github/dillonzq/LoveIt/develop?label=CI&style=flat-square&logo=circleci)](https://app.circleci.com/pipelines/github/dillonzq/LoveIt) -[English README](README.md) | 中文说明 +[English README](https://github.com/dillonzq/LoveIt/blob/master/README.md) | 中文说明 [LoveIt](https://github.com/dillonzq/LoveIt) 是一个**简洁**、**优雅**且**高效**的 [Hugo](https://gohugo.io/) 博客主题。 @@ -13,7 +13,7 @@ 由于三个主题外观的相似性,如果你对于它们的不同之处有疑问,请阅读 [为什么选择 LoveIt](#为什么选择-LoveIt),以便你能选择最适合你的一个。 -![Hugo 主题 LoveIt](https://github.com/dillonzq/LoveIt/raw/develop/images/Apple-Devices-Preview.png) +![Hugo 主题 LoveIt](https://github.com/dillonzq/LoveIt/raw/master/images/Apple-Devices-Preview.png) ## 主题[预览](https://hugoloveit.com/zh-cn/) diff --git a/assets/css/_core/_base.scss b/assets/css/_core/_base.scss index 5f8070d5..1663c1ce 100644 --- a/assets/css/_core/_base.scss +++ b/assets/css/_core/_base.scss @@ -60,20 +60,9 @@ body { } a { - color: $global-link-color; text-decoration: none; - - &:hover { - color: $global-link-hover-color; - } - - .dark-theme & { - color: $global-link-color-dark; - - &:hover { - color: $global-link-hover-color-dark; - } - } } +@include link(true, true); + @import "../_partial/fixed-button"; diff --git a/assets/css/_mixin/_index.scss b/assets/css/_mixin/_index.scss new file mode 100644 index 00000000..34ffd188 --- /dev/null +++ b/assets/css/_mixin/_index.scss @@ -0,0 +1,2 @@ +@import "_link"; +@import "_summary"; diff --git a/assets/css/_mixin/_link.scss b/assets/css/_mixin/_link.scss new file mode 100644 index 00000000..057949f6 --- /dev/null +++ b/assets/css/_mixin/_link.scss @@ -0,0 +1,18 @@ +@mixin link($light, $dark) { + a { + color: if($light, $global-link-color, $single-link-color); + + .dark-theme & { + color: if($dark, $global-link-color-dark, $single-link-color-dark); + } + + &:active, + &:hover { + color: if($light, $global-link-hover-color, $single-link-hover-color); + + .dark-theme & { + color: if($dark, $global-link-hover-color-dark, $single-link-hover-color-dark); + } + } + } +} diff --git a/assets/css/_partial/_home/_summary.scss b/assets/css/_mixin/_summary.scss similarity index 69% rename from assets/css/_partial/_home/_summary.scss rename to assets/css/_mixin/_summary.scss index f216e646..82b28dcc 100644 --- a/assets/css/_partial/_home/_summary.scss +++ b/assets/css/_mixin/_summary.scss @@ -90,21 +90,7 @@ } } - a { - color: $global-link-color; - - .dark-theme & { - color: $global-link-color-dark; - } - - &:hover { - color: $global-link-hover-color; - - .dark-theme & { - color: $global-link-hover-color-dark; - } - } - } + @include link(true, true); b, strong { .dark-theme & { @@ -120,40 +106,12 @@ align-items: center; font-size: .875rem; - a { - color: $single-link-color; - - .dark-theme & { - color: $single-link-color-dark; - } - - &:hover { - color: $single-link-hover-color; - - .dark-theme & { - color: $single-link-hover-color-dark; - } - } - } + @include link(false, false); .post-tags { padding: 0; - a { - color: $global-link-color; - - .dark-theme & { - color: $global-link-color-dark; - } - - &:hover { - color: $global-link-hover-color; - - .dark-theme & { - color: $global-link-hover-color-dark; - } - } - } + @include link(true, true); } } } diff --git a/assets/css/_page/_home.scss b/assets/css/_page/_home.scss index ff0d4751..3e74babb 100644 --- a/assets/css/_page/_home.scss +++ b/assets/css/_page/_home.scss @@ -1,6 +1,4 @@ /** Home **/ -@import "../_partial/_home/summary"; - @mixin page-home($profile, $posts) { .home { @if $profile { diff --git a/assets/css/_page/_single.scss b/assets/css/_page/_single.scss index ff554cd7..a19c47dd 100644 --- a/assets/css/_page/_single.scss +++ b/assets/css/_page/_single.scss @@ -26,21 +26,7 @@ color: $global-font-secondary-color-dark; } - a { - color: $single-link-color; - - .dark-theme & { - color: $global-link-color-dark; - } - - &:hover { - color: $single-link-hover-color; - - .dark-theme & { - color: $global-link-hover-color-dark; - } - } - } + @include link(false, true); .author { font-size: 1.05rem; @@ -102,22 +88,19 @@ } } + @include link(false, false); + a { word-break: break-all; word-break: break-word; - color: $single-link-color; - .dark-theme &, .dark-theme & b, .dark-theme & strong { + .dark-theme & b, .dark-theme & strong { color: $single-link-color-dark; } } - a:hover { - color: $single-link-hover-color; - - .dark-theme &, .dark-theme & b, .dark-theme & strong { - color: $single-link-hover-color-dark; - } + .dark-theme a:hover b, .dark-theme a:hover strong { + color: $single-link-hover-color-dark; } ul { diff --git a/assets/css/_partial/_archive/_tags.scss b/assets/css/_partial/_archive/_tags.scss index 1870a775..ca38fde8 100644 --- a/assets/css/_partial/_archive/_tags.scss +++ b/assets/css/_partial/_archive/_tags.scss @@ -1,6 +1,8 @@ .tag-cloud-tags { margin: 10px 0; + @include link(true, true); + a { display: inline-block; position: relative; @@ -14,23 +16,18 @@ &:active, &:focus, &:hover { - color: $global-link-hover-color; -webkit-transform: scale(1.2); -moz-transform: scale(1.2); -ms-transform: scale(1.2); -o-transform: scale(1.2); transform: scale(1.2); - - .dark-theme & { - color: $global-link-hover-color-dark; - } } small { color: $global-font-secondary-color; .dark-theme & { - color: $global-link-hover-color-dark; + color: $global-font-secondary-color-dark; } } } diff --git a/assets/css/_partial/_single/_code.scss b/assets/css/_partial/_single/_code.scss index 0e378691..19df2c5d 100644 --- a/assets/css/_partial/_single/_code.scss +++ b/assets/css/_partial/_single/_code.scss @@ -46,23 +46,12 @@ code, pre, .highlight table, .highlight tr, .highlight td { } } + .ln { + padding-right: .8rem; + } + .lntd { - &:first-child { - width: 1.2rem; - - /* LineNumbersTable */ - .lnt { - color: $code-info-color; - } - - /* LineHighlight */ - .hl { - font-weight: bolder; - } - } - &:last-child { - /* LineHighlight */ .hl { display: block; background-color: darken($code-background-color, 5%); @@ -73,6 +62,14 @@ code, pre, .highlight table, .highlight tr, .highlight td { } } } + + .ln, .lnt { + color: $global-font-secondary-color; + + .dark-theme & { + color: $global-font-secondary-color-dark; + } + } } .highlight { @@ -103,6 +100,7 @@ code, pre, .highlight table, .highlight tr, .highlight td { table, tr, td { margin: 0; border: none !important; + white-space: nowrap; } td { @@ -119,21 +117,7 @@ code, pre, .highlight table, .highlight tr, .highlight td { padding: .4rem .8rem; background-color: darken($code-background-color, 5%); - a { - color: $single-link-color; - - .dark-theme & { - color: $single-link-color-dark; - } - } - - a:hover { - color: $single-link-hover-color; - - .dark-theme &:hover { - color: $single-link-hover-color-dark; - } - } + @include link(false, false); .dark-theme & { background-color: darken($code-background-color-dark, 5%); diff --git a/assets/css/_partial/_single/_footer.scss b/assets/css/_partial/_single/_footer.scss index 451d9c2b..3cadeff2 100644 --- a/assets/css/_partial/_single/_footer.scss +++ b/assets/css/_partial/_single/_footer.scss @@ -21,21 +21,7 @@ color: $global-font-secondary-color-dark; } - a { - color: $single-link-color; - - .dark-theme & { - color: $single-link-color-dark; - } - - &:hover { - color: $single-link-hover-color; - - .dark-theme & { - color: $single-link-hover-color-dark; - } - } - } + @include link(false, false); } .post-info-license { @@ -51,21 +37,7 @@ font-size: 0.8rem; width: 8rem; - a { - color: $single-link-color; - - .dark-theme & { - color: $single-link-color-dark; - } - - &:hover { - color: $single-link-hover-color; - - .dark-theme & { - color: $single-link-hover-color-dark; - } - } - } + @include link(false, false); } } } diff --git a/assets/css/style.template.scss b/assets/css/style.template.scss index c9799fdb..9794b207 100644 --- a/assets/css/style.template.scss +++ b/assets/css/style.template.scss @@ -11,6 +11,8 @@ $header-normal-mode-mobile: {{ if eq .Site.Params.header.mobileMode "normal" }}t @import "_override"; {{- end -}} +@import "_mixin/index"; + @import "_core/normalize"; @import "_core/base"; @import "_core/layout"; diff --git a/exampleSite/config.toml b/exampleSite/config.toml index 719d818c..4d506ad8 100644 --- a/exampleSite/config.toml +++ b/exampleSite/config.toml @@ -835,12 +835,11 @@ enableEmoji = true [markup.highlight] codeFences = true guessSyntax = true - lineNoStart = 1 lineNos = true - lineNumbersInTable = true + lineNumbersInTable = false + # false is a necessary configuration (https://github.com/dillonzq/LoveIt/issues/158) + # false 是必要的设置 (https://github.com/dillonzq/LoveIt/issues/158) noClasses = false - style = "monokai" - tabWidth = 4 # Goldmark is from Hugo 0.60 the default library used for Markdown # Goldmark 是 Hugo 0.60 以来的默认 Markdown 解析库 [markup.goldmark] diff --git a/exampleSite/config/css/_override.scss b/exampleSite/config/css/_override.scss index aee416bc..e9da43c3 100644 --- a/exampleSite/config/css/_override.scss +++ b/exampleSite/config/css/_override.scss @@ -3,6 +3,6 @@ // 覆盖变量 // ============================== -@import url('https://fonts.googleapis.com/css2?family=Baloo+2:wght@500&display=swap'); +@import url('https://fonts.googleapis.com/css2?family=Nunito:wght@800&display=swap'); -$header-title-font-family: 'Baloo 2', $global-font-family; +$header-title-font-family: 'Nunito', $global-font-family; diff --git a/exampleSite/content/posts/basic-markdown-syntax.en.md b/exampleSite/content/posts/basic-markdown-syntax.en.md index df5ce48d..9b7e4bc0 100644 --- a/exampleSite/content/posts/basic-markdown-syntax.en.md +++ b/exampleSite/content/posts/basic-markdown-syntax.en.md @@ -641,7 +641,7 @@ The rendered output looks like this: | ext | extension to be used for dest files. | {{< /admonition >}} -## 11 Links +## 11 Links {#links} ### Basic Link diff --git a/exampleSite/content/posts/basic-markdown-syntax.fr.md b/exampleSite/content/posts/basic-markdown-syntax.fr.md index dfc49e4d..410a4b66 100644 --- a/exampleSite/content/posts/basic-markdown-syntax.fr.md +++ b/exampleSite/content/posts/basic-markdown-syntax.fr.md @@ -648,7 +648,7 @@ The rendered output looks like this: ## 11 Links -### Basic Link +### Basic Link {#links} ```markdown diff --git a/exampleSite/content/posts/basic-markdown-syntax.zh-cn.md b/exampleSite/content/posts/basic-markdown-syntax.zh-cn.md index 4bff6d5b..5ba27552 100644 --- a/exampleSite/content/posts/basic-markdown-syntax.zh-cn.md +++ b/exampleSite/content/posts/basic-markdown-syntax.zh-cn.md @@ -643,7 +643,7 @@ grunt.initConfig({ | ext | extension to be used for dest files. | {{< /admonition >}} -## 11 链接 +## 11 链接 {#links} ### 基本链接 diff --git a/exampleSite/content/posts/theme-documentation-basics.en.md b/exampleSite/content/posts/theme-documentation-basics.en.md index bb71fbda..e5eb6487 100644 --- a/exampleSite/content/posts/theme-documentation-basics.en.md +++ b/exampleSite/content/posts/theme-documentation-basics.en.md @@ -205,7 +205,7 @@ Note that some of these parameters are explained in details in other sections of # ICP info only in China (HTML format is allowed) icp = "" # license info (HTML format is allowed) - license= 'CC BY-NC 4.0' + license = 'CC BY-NC 4.0' # Home Page Info [params.home] # Home Page Profile @@ -304,7 +304,7 @@ Note that some of these parameters are explained in details in other sections of lightgallery = true # whether to show link to Raw Markdown content of the post linkToMarkdown = true - # mathematical formulas (KaTeX https://katex.org/) + # {{< link "https://katex.org/" KaTeX >}} mathematical formulas [params.math] enable = true # default block delimiter is $$ ... $$ and \\[ ... \\] @@ -350,13 +350,13 @@ Note that some of these parameters are explained in details in other sections of # Comment Config [params.comment] enable = true - # Disqus Comment Config (https://disqus.com/) + # {{< link "https://disqus.com/" Disqus >}} Comment Config [params.comment.disqus] # {{< version 0.1.1 >}} enable = false # Disqus shortname to use Disqus in posts shortname = "" - # Gitalk Comment Config (https://github.com/gitalk/gitalk) + # {{< link "https://github.com/gitalk/gitalk" Gitalk >}} Comment Config [params.comment.gitalk] # {{< version 0.1.1 >}} enable = false @@ -364,7 +364,7 @@ Note that some of these parameters are explained in details in other sections of repo = "" clientId = "" clientSecret = "" - # Valine Comment Config (https://github.com/xCss/Valine) + # {{< link "https://github.com/xCss/Valine" Valine >}} Comment Config [params.comment.valine] enable = false appId = "" @@ -378,7 +378,7 @@ Note that some of these parameters are explained in details in other sections of lang = "en" visitor = true recordIP = true - # Facebook Comment Config (https://developers.facebook.com/docs/plugins/comments) + # {{< link "https://developers.facebook.com/docs/plugins/comments" "Facebook Comment" >}} Config [params.comment.facebook] enable = false width = "100%" @@ -412,58 +412,57 @@ Note that some of these parameters are explained in details in other sections of height = 600 # CSS and JS Files CDN [params.cdn] - # fontawesome-free@5.12.1 https://fontawesome.com/ + # {{< link "https://fontawesome.com/" "fontawesome-free" >}}@5.12.1 fontawesomeFreeCSS = '' # animate.css@3.7.2 https://github.com/daneden/animate.css animateCSS = '' - # smooth-scroll@16.1.2 https://github.com/cferdinandi/smooth-scroll + # {{< link "https://github.com/cferdinandi/smooth-scroll" "smooth-scroll" >}}@16.1.2 smoothScrollJS = '' - # sharer@0.4.0 https://github.com/ellisonleao/sharer.js + # {{< link "https://github.com/ellisonleao/sharer.js" "sharer" >}}@0.4.0 sharerJS = '' - # lazysizes@5.2.0 https://github.com/aFarkas/lazysizes + # {{< link "https://github.com/aFarkas/lazysizes" "lazysizes" >}}@5.2.0 lazysizesJS = '' - # lightgallery@1.1.3 lg-thumbnail@1.1.0 lg-zoom@1.1.0 https://github.com/sachinchoolur/lightgallery.js + # {{< link "https://github.com/sachinchoolur/lightgallery.js" "lightgallery" >}}@1.1.3 lg-thumbnail@1.1.0 lg-zoom@1.1.0 lightgalleryCSS = '' lightgalleryJS = '' lightgalleryThumbnailJS = '' lightgalleryZoomJS = '' - # typeit@6.5.1 https://github.com/alexmacarthur/typeit + # {{< link "https://github.com/alexmacarthur/typeit" "typeit" >}}@6.5.1 typeitJS = '' - # katex@0.11.1 https://github.com/KaTeX/KaTeX + # {{< link "https://github.com/KaTeX/KaTeX" "katex" >}}@0.11.1 katexCSS = '' katexJS = '' katexAutoRenderJS = '' katexCopyTexCSS = '' katexCopyTexJS = '' katexMhchemJS = '' - # mermaid@8.4.8 https://github.com/knsv/mermaid + # {{< link "https://github.com/knsv/mermaid" "mermaid" >}}@8.4.8 mermaidJS = '' - # aplayer@1.10.1 https://github.com/MoePlayer/APlayer + # {{< link "https://github.com/MoePlayer/APlayer" "aplayer" >}}@1.10.1 aplayerCSS = '' aplayerJS = '' - # meting@2.0.1 https://github.com/metowolf/MetingJS + # {{< link "https://github.com/metowolf/MetingJS" "meting" >}}@2.0.1 metingJS = '' - # echarts@4.6.0 https://echarts.apache.org/ + # {{< link "https://echarts.apache.org/" "echarts" >}}@4.6.0 echartsJS = '' echartsMacaronsJS = '' - # gitalk@1.6.2 https://github.com/gitalk/gitalk + # {{< link "https://github.com/gitalk/gitalk" "gitalk" >}}@1.6.2 gitalkCSS = '' gitalkJS = '' - # valine@1.3.10 https://valine.js.org/ + # {{< link "https://valine.js.org/" "valine" >}}@1.3.10 valineJS = '' # Markup related configuration in Hugo [markup] - # Syntax Highlighting (https://gohugo.io/content-management/syntax-highlighting) + # {{< link "https://gohugo.io/content-management/syntax-highlighting" "Syntax Highlighting" >}} [markup.highlight] codeFences = true guessSyntax = true - lineNoStart = 1 lineNos = true - lineNumbersInTable = true + lineNumbersInTable = false + # false is a necessary configuration + # ({{< link "https://github.com/dillonzq/LoveIt/issues/158" >}}) noClasses = false - style = "monokai" - tabWidth = 4 # Goldmark is from Hugo 0.60 the default library used for Markdown [markup.goldmark] [markup.goldmark.extensions] @@ -493,12 +492,12 @@ Note that some of these parameters are explained in details in other sections of filename = "sitemap.xml" priority = 0.5 -# Permalinks Info (https://gohugo.io/content-management/urls/#permalinks) +# {{< link "https://gohugo.io/content-management/urls/#permalinks" "Permalinks Info" >}} [Permalinks] # posts = ":year/:month/:filename" posts = ":filename" -# Privacy Info (https://gohugo.io/about/hugo-and-gdpr/) +# {{< link "https://gohugo.io/about/hugo-and-gdpr/" "Privacy Info" >}} [privacy] [privacy.googleAnalytics] anonymizeIP = true diff --git a/exampleSite/content/posts/theme-documentation-basics.fr.md b/exampleSite/content/posts/theme-documentation-basics.fr.md index a980b2e9..e18c76e9 100644 --- a/exampleSite/content/posts/theme-documentation-basics.fr.md +++ b/exampleSite/content/posts/theme-documentation-basics.fr.md @@ -31,6 +31,11 @@ Découvrez en quoi consiste le thème Hugo - **LoveIt** et les concepts fondamen +{{< admonition warning >}} +Sorry, this article has not been completely translated into **French**. +Welcome to take the time to propose a translation by [making a PR](https://github.com/dillonzq/LoveIt/pulls) to the theme! +{{< /admonition >}} + ## 1 Requirements Thanks to the simplicity of Hugo, [Hugo](https://gohugo.io/) is the only dependency of this theme. @@ -205,7 +210,7 @@ Note that some of these parameters are explained in details in other sections of # ICP info only in China (HTML format is allowed) icp = "" # license info (HTML format is allowed) - license= 'CC BY-NC 4.0' + license = 'CC BY-NC 4.0' # Home Page Info [params.home] # Home Page Profile @@ -304,7 +309,7 @@ Note that some of these parameters are explained in details in other sections of lightgallery = true # whether to show link to Raw Markdown content of the post linkToMarkdown = true - # mathematical formulas (KaTeX https://katex.org/) + # {{< link "https://katex.org/" KaTeX >}} mathematical formulas [params.math] enable = true # default block delimiter is $$ ... $$ and \\[ ... \\] @@ -350,13 +355,13 @@ Note that some of these parameters are explained in details in other sections of # Comment Config [params.comment] enable = true - # Disqus Comment Config (https://disqus.com/) + # {{< link "https://disqus.com/" Disqus >}} Comment Config [params.comment.disqus] # {{< version 0.1.1 >}} enable = false # Disqus shortname to use Disqus in posts shortname = "" - # Gitalk Comment Config (https://github.com/gitalk/gitalk) + # {{< link "https://github.com/gitalk/gitalk" Gitalk >}} Comment Config [params.comment.gitalk] # {{< version 0.1.1 >}} enable = false @@ -364,7 +369,7 @@ Note that some of these parameters are explained in details in other sections of repo = "" clientId = "" clientSecret = "" - # Valine Comment Config (https://github.com/xCss/Valine) + # {{< link "https://github.com/xCss/Valine" Valine >}} Comment Config [params.comment.valine] enable = false appId = "" @@ -378,7 +383,7 @@ Note that some of these parameters are explained in details in other sections of lang = "en" visitor = true recordIP = true - # Facebook Comment Config (https://developers.facebook.com/docs/plugins/comments) + # {{< link "https://developers.facebook.com/docs/plugins/comments" "Facebook Comment" >}} Config [params.comment.facebook] enable = false width = "100%" @@ -412,58 +417,57 @@ Note that some of these parameters are explained in details in other sections of height = 600 # CSS and JS Files CDN [params.cdn] - # fontawesome-free@5.12.1 https://fontawesome.com/ + # {{< link "https://fontawesome.com/" "fontawesome-free" >}}@5.12.1 fontawesomeFreeCSS = '' # animate.css@3.7.2 https://github.com/daneden/animate.css animateCSS = '' - # smooth-scroll@16.1.2 https://github.com/cferdinandi/smooth-scroll + # {{< link "https://github.com/cferdinandi/smooth-scroll" "smooth-scroll" >}}@16.1.2 smoothScrollJS = '' - # sharer@0.4.0 https://github.com/ellisonleao/sharer.js + # {{< link "https://github.com/ellisonleao/sharer.js" "sharer" >}}@0.4.0 sharerJS = '' - # lazysizes@5.2.0 https://github.com/aFarkas/lazysizes + # {{< link "https://github.com/aFarkas/lazysizes" "lazysizes" >}}@5.2.0 lazysizesJS = '' - # lightgallery@1.1.3 lg-thumbnail@1.1.0 lg-zoom@1.1.0 https://github.com/sachinchoolur/lightgallery.js + # {{< link "https://github.com/sachinchoolur/lightgallery.js" "lightgallery" >}}@1.1.3 lg-thumbnail@1.1.0 lg-zoom@1.1.0 lightgalleryCSS = '' lightgalleryJS = '' lightgalleryThumbnailJS = '' lightgalleryZoomJS = '' - # typeit@6.5.1 https://github.com/alexmacarthur/typeit + # {{< link "https://github.com/alexmacarthur/typeit" "typeit" >}}@6.5.1 typeitJS = '' - # katex@0.11.1 https://github.com/KaTeX/KaTeX + # {{< link "https://github.com/KaTeX/KaTeX" "katex" >}}@0.11.1 katexCSS = '' katexJS = '' katexAutoRenderJS = '' katexCopyTexCSS = '' katexCopyTexJS = '' katexMhchemJS = '' - # mermaid@8.4.8 https://github.com/knsv/mermaid + # {{< link "https://github.com/knsv/mermaid" "mermaid" >}}@8.4.8 mermaidJS = '' - # aplayer@1.10.1 https://github.com/MoePlayer/APlayer + # {{< link "https://github.com/MoePlayer/APlayer" "aplayer" >}}@1.10.1 aplayerCSS = '' aplayerJS = '' - # meting@2.0.1 https://github.com/metowolf/MetingJS + # {{< link "https://github.com/metowolf/MetingJS" "meting" >}}@2.0.1 metingJS = '' - # echarts@4.6.0 https://echarts.apache.org/ + # {{< link "https://echarts.apache.org/" "echarts" >}}@4.6.0 echartsJS = '' echartsMacaronsJS = '' - # gitalk@1.6.2 https://github.com/gitalk/gitalk + # {{< link "https://github.com/gitalk/gitalk" "gitalk" >}}@1.6.2 gitalkCSS = '' gitalkJS = '' - # valine@1.3.10 https://valine.js.org/ + # {{< link "https://valine.js.org/" "valine" >}}@1.3.10 valineJS = '' # Markup related configuration in Hugo [markup] - # Syntax Highlighting (https://gohugo.io/content-management/syntax-highlighting) + # {{< link "https://gohugo.io/content-management/syntax-highlighting" "Syntax Highlighting" >}} [markup.highlight] codeFences = true guessSyntax = true - lineNoStart = 1 lineNos = true - lineNumbersInTable = true + lineNumbersInTable = false + # false is a necessary configuration + # ({{< link "https://github.com/dillonzq/LoveIt/issues/158" >}}) noClasses = false - style = "monokai" - tabWidth = 4 # Goldmark is from Hugo 0.60 the default library used for Markdown [markup.goldmark] [markup.goldmark.extensions] @@ -493,12 +497,12 @@ Note that some of these parameters are explained in details in other sections of filename = "sitemap.xml" priority = 0.5 -# Permalinks Info (https://gohugo.io/content-management/urls/#permalinks) +# {{< link "https://gohugo.io/content-management/urls/#permalinks" "Permalinks Info" >}} [Permalinks] # posts = ":year/:month/:filename" posts = ":filename" -# Privacy Info (https://gohugo.io/about/hugo-and-gdpr/) +# {{< link "https://gohugo.io/about/hugo-and-gdpr/" "Privacy Info" >}} [privacy] [privacy.googleAnalytics] anonymizeIP = true diff --git a/exampleSite/content/posts/theme-documentation-basics.zh-cn.md b/exampleSite/content/posts/theme-documentation-basics.zh-cn.md index 38066576..08de73b4 100644 --- a/exampleSite/content/posts/theme-documentation-basics.zh-cn.md +++ b/exampleSite/content/posts/theme-documentation-basics.zh-cn.md @@ -208,7 +208,7 @@ hugo # ICP 备案信息,仅在中国使用 (允许使用 HTML 格式) icp = "" # 许可协议信息 (允许使用 HTML 格式) - license= 'CC BY-NC 4.0' + license = 'CC BY-NC 4.0' # 文章页面配置 [params.home] # 主页信息设置 @@ -306,7 +306,7 @@ hugo lightgallery = true # 是否在文章页面显示原始 Markdown 文档链接 linkToMarkdown = true - # 数学公式 (KaTeX https://katex.org/) + # {{< link "https://katex.org/" KaTeX >}} 数学公式 [params.math] enable = true # 默认块定界符是 $$ ... $$ 和 \\[ ... \\] @@ -352,13 +352,13 @@ hugo # 评论系统设置 [params.comment] enable = true - # Disqus 评论系统设置 (https://disqus.com/) + # {{< link "https://disqus.com/" Disqus >}} 评论系统设置 [params.comment.disqus] # {{< version 0.1.1 >}} enable = false # Disqus 的 shortname,用来在文章中启用 Disqus 评论系统 shortname = "" - # Gitalk 评论系统设置 (https://github.com/gitalk/gitalk) + # {{< link "https://github.com/gitalk/gitalk" Gitalk >}} 评论系统设置 [params.comment.gitalk] # {{< version 0.1.1 >}} enable = false @@ -366,7 +366,7 @@ hugo repo = "" clientId = "" clientSecret = "" - # Valine 评论系统设置 (https://github.com/xCss/Valine) + # {{< link "https://github.com/xCss/Valine" Valine >}} 评论系统设置 [params.comment.valine] enable = false appId = "" @@ -380,7 +380,7 @@ hugo lang = "en" visitor = true recordIP = true - # Facebook 评论系统设置 (https://developers.facebook.com/docs/plugins/comments) + # # {{< link "https://developers.facebook.com/docs/plugins/comments" "Facebook 评论系统" >}}设置 [params.comment.facebook] enable = false width = "100%" @@ -414,58 +414,57 @@ hugo height = 600 # CSS 和 JS 文件的 CDN 设置 [params.cdn] - # fontawesome-free@5.12.1 https://fontawesome.com/ + # {{< link "https://fontawesome.com/" "fontawesome-free" >}}@5.12.1 fontawesomeFreeCSS = '' # animate.css@3.7.2 https://github.com/daneden/animate.css animateCSS = '' - # smooth-scroll@16.1.2 https://github.com/cferdinandi/smooth-scroll + # {{< link "https://github.com/cferdinandi/smooth-scroll" "smooth-scroll" >}}@16.1.2 smoothScrollJS = '' - # sharer@0.4.0 https://github.com/ellisonleao/sharer.js + # {{< link "https://github.com/ellisonleao/sharer.js" "sharer" >}}@0.4.0 sharerJS = '' - # lazysizes@5.2.0 https://github.com/aFarkas/lazysizes + # {{< link "https://github.com/aFarkas/lazysizes" "lazysizes" >}}@5.2.0 lazysizesJS = '' - # lightgallery@1.1.3 lg-thumbnail@1.1.0 lg-zoom@1.1.0 https://github.com/sachinchoolur/lightgallery.js + # {{< link "https://github.com/sachinchoolur/lightgallery.js" "lightgallery" >}}@1.1.3 lg-thumbnail@1.1.0 lg-zoom@1.1.0 lightgalleryCSS = '' lightgalleryJS = '' lightgalleryThumbnailJS = '' lightgalleryZoomJS = '' - # typeit@6.5.1 https://github.com/alexmacarthur/typeit + # {{< link "https://github.com/alexmacarthur/typeit" "typeit" >}}@6.5.1 typeitJS = '' - # katex@0.11.1 https://github.com/KaTeX/KaTeX + # {{< link "https://github.com/KaTeX/KaTeX" "katex" >}}@0.11.1 katexCSS = '' katexJS = '' katexAutoRenderJS = '' katexCopyTexCSS = '' katexCopyTexJS = '' katexMhchemJS = '' - # mermaid@8.4.8 https://github.com/knsv/mermaid + # {{< link "https://github.com/knsv/mermaid" "mermaid" >}}@8.4.8 mermaidJS = '' - # aplayer@1.10.1 https://github.com/MoePlayer/APlayer + # {{< link "https://github.com/MoePlayer/APlayer" "aplayer" >}}@1.10.1 aplayerCSS = '' aplayerJS = '' - # meting@2.0.1 https://github.com/metowolf/MetingJS + # {{< link "https://github.com/metowolf/MetingJS" "meting" >}}@2.0.1 metingJS = '' - # echarts@4.6.0 https://echarts.apache.org/ + # {{< link "https://echarts.apache.org/" "echarts" >}}@4.6.0 echartsJS = '' echartsMacaronsJS = '' - # gitalk@1.6.2 https://github.com/gitalk/gitalk + # {{< link "https://github.com/gitalk/gitalk" "gitalk" >}}@1.6.2 gitalkCSS = '' gitalkJS = '' - # valine@1.3.10 https://valine.js.org/ + # {{< link "https://valine.js.org/" "valine" >}}@1.3.10 valineJS = '' # Hugo 解析文档的配置 [markup] - # 语法高亮设置 (https://gohugo.io/content-management/syntax-highlighting) + # {{< link "https://gohugo.io/content-management/syntax-highlighting" "语法高亮设置" >}} [markup.highlight] codeFences = true guessSyntax = true - lineNoStart = 1 lineNos = true - lineNumbersInTable = true + lineNumbersInTable = false + # false 是必要的设置 + # ({{< link "https://github.com/dillonzq/LoveIt/issues/158" >}}) noClasses = false - style = "monokai" - tabWidth = 4 # Goldmark 是 Hugo 0.60 以来的默认 Markdown 解析库 [markup.goldmark] [markup.goldmark.extensions] @@ -495,12 +494,12 @@ hugo filename = "sitemap.xml" priority = 0.5 -# Permalinks 信息 (https://gohugo.io/content-management/urls/#permalinks) +# {{< link "https://gohugo.io/content-management/urls/#permalinks" "Permalinks 信息" >}} [Permalinks] # posts = ":year/:month/:filename" posts = ":filename" -# 隐私信息设置 (https://gohugo.io/about/hugo-and-gdpr/) +# {{< link "https://gohugo.io/about/hugo-and-gdpr/" "隐私信息设置" >}} [privacy] [privacy.googleAnalytics] anonymizeIP = true diff --git a/exampleSite/content/posts/theme-documentation-content.fr.md b/exampleSite/content/posts/theme-documentation-content.fr.md index 149499b0..1a635aba 100644 --- a/exampleSite/content/posts/theme-documentation-content.fr.md +++ b/exampleSite/content/posts/theme-documentation-content.fr.md @@ -31,6 +31,11 @@ Découvrez comment créer et organiser votre contenu rapidement et intuitivement +{{< admonition warning >}} +Sorry, this article has not been completely translated into **French**. +Welcome to take the time to propose a translation by [making a PR](https://github.com/dillonzq/LoveIt/pulls) to the theme! +{{< /admonition >}} + ## 1 Contents Organization A few suggestions to help you get a good looking site quickly: diff --git a/exampleSite/content/posts/theme-documentation-shortcodes.en.md b/exampleSite/content/posts/theme-documentation-shortcodes.en.md index 52a3c690..2ad29999 100644 --- a/exampleSite/content/posts/theme-documentation-shortcodes.en.md +++ b/exampleSite/content/posts/theme-documentation-shortcodes.en.md @@ -217,6 +217,72 @@ The rendered output looks like this: This is a right-aligned paragraph. {{< /style >}} +### `link` + +{{< admonition >}} +{{< version 1.2.0 >}} +{{< /admonition >}} + +`link` shortcode is an alternative to [Markdown link syntax](../basic-markdown-syntax/#links). `link` shortcode can provide some other features and can be used in code blocks. + +The `link` shortcode can use the following named parameters: + +* **href** + + Destination of the link. + +* **content** + + Content of the link (HTML format is allowed). + +* **title** + + `title` attribute of the HTML `a` tag, which will be shown when hovering on the link. + +* **rel** + + Additional `rel` attributes of the HTML `a` tag. + +* **class** + + `class` attribute of the HTML `a` tag. + +#### Basic `link` + +Example basic `link` Input: + +```markdown +{{}} +Or +{{}} + +{{}} +Or +{{}} + +{{}} +Or +{{}} +``` + +The rendered output looks like this: + +* {{< link "https://assemble.io" >}} +* {{< link "mailto:contact@revolunet.com" >}} +* {{< link "https://assemble.io" Assemble >}} + +#### Add a Title + +```markdown +{{}} +Or +{{}} +``` + +The rendered output looks like this (hover over the link, there should be a tooltip): + +{{< link "https://github.com/upstage/" Upstage "Visit Upstage!" >}} + ### `image` `image` shortcode is an alternative to [`figure` shortcode](#figure). `image` shortcode can take full advantage of the dependent libraries of [lazysizes](https://github.com/aFarkas/lazysizes) and [lightgallery.js](https://github.com/sachinchoolur/lightgallery.js). diff --git a/exampleSite/content/posts/theme-documentation-shortcodes.fr.md b/exampleSite/content/posts/theme-documentation-shortcodes.fr.md index 306e1a6b..d270a11f 100644 --- a/exampleSite/content/posts/theme-documentation-shortcodes.fr.md +++ b/exampleSite/content/posts/theme-documentation-shortcodes.fr.md @@ -222,6 +222,72 @@ The rendered output looks like this: This is a right-aligned paragraph. {{< /style >}} +### `link` + +{{< admonition >}} +{{< version 1.2.0 >}} +{{< /admonition >}} + +`link` shortcode is an alternative to [Markdown link syntax](../basic-markdown-syntax/#links). `link` shortcode can provide some other features and can be used in code blocks. + +The `link` shortcode can use the following named parameters: + +* **href** + + Destination of the link. + +* **content** + + Content of the link (HTML format is allowed). + +* **title** + + `title` attribute of the HTML `a` tag, which will be shown when hovering on the link. + +* **rel** + + Additional `rel` attributes of the HTML `a` tag. + +* **class** + + `class` attribute of the HTML `a` tag. + +#### Basic `link` + +Example basic `link` Input: + +```markdown +{{}} +Or +{{}} + +{{}} +Or +{{}} + +{{}} +Or +{{}} +``` + +The rendered output looks like this: + +* {{< link "https://assemble.io" >}} +* {{< link "mailto:contact@revolunet.com" >}} +* {{< link "https://assemble.io" Assemble >}} + +#### Add a Title + +```markdown +{{}} +Or +{{}} +``` + +The rendered output looks like this (hover over the link, there should be a tooltip): + +{{< link "https://github.com/upstage/" Upstage "Visit Upstage!" >}} + ### `image` `image` shortcode is an alternative to [`figure` shortcode](#figure). `image` shortcode can take full advantage of the dependent libraries of [lazysizes](https://github.com/aFarkas/lazysizes) and [lightgallery.js](https://github.com/sachinchoolur/lightgallery.js). diff --git a/exampleSite/content/posts/theme-documentation-shortcodes.zh-cn.md b/exampleSite/content/posts/theme-documentation-shortcodes.zh-cn.md index fab39708..05e38c3f 100644 --- a/exampleSite/content/posts/theme-documentation-shortcodes.zh-cn.md +++ b/exampleSite/content/posts/theme-documentation-shortcodes.zh-cn.md @@ -219,6 +219,73 @@ This is a right-aligned paragraph. This is a right-aligned paragraph. {{< /style >}} +### `link` + +{{< admonition >}} +{{< version 1.2.0 >}} +{{< /admonition >}} + +`link` shortcode 是 [Markdown 链接语法](../basic-markdown-syntax/#links) 的替代. +`link` shortcode 可以提供一些其它的功能并且可以在代码块中使用. + +`link` shortcode 可以使用以下命名参数: + +* **href** + + 链接的目标. + +* **content** + + 链接的内容 (允许 HTML 格式). + +* **title** + + HTML `a` 标签 的 `title` 属性, 当悬停在链接上会显示的提示. + +* **rel** + + HTML `a` 标签 的 `rel` 补充属性. + +* **class** + + HTML `a` 标签 的 `class` 属性. + +#### 基本 `link` + +一个基本的 `link` 示例: + +```markdown +{{}} +或者 +{{}} + +{{}} +或者 +{{}} + +{{}} +或者 +{{}} +``` + +呈现的输出效果如下: + +* {{< link "https://assemble.io" >}} +* {{< link "mailto:contact@revolunet.com" >}} +* {{< link "https://assemble.io" Assemble >}} + +#### 添加一个标题 + +```markdown +{{}} +或者 +{{}} +``` + +呈现的输出效果如下 (将鼠标悬停在链接上,会有一行提示): + +{{< link "https://github.com/upstage/" Upstage "Visit Upstage!" >}} + ### `image` `image` shortcode 是 [`figure` shortcode](#figure) 的替代. `image` shortcode 可以充分利用 [lazysizes](https://github.com/aFarkas/lazysizes) 和 [lightgallery.js](https://github.com/sachinchoolur/lightgallery.js) 两个依赖库. @@ -333,7 +400,7 @@ This is a right-aligned paragraph. {{}} 一个 **技巧** 横幅 {{}} -Or +或者 {{}} 一个 **技巧** 横幅 {{}} @@ -1016,7 +1083,7 @@ data = [ ```markdown {{}} -Or +或者 {{}} ``` @@ -1030,7 +1097,7 @@ Or ```markdown {{}} -Or +或者 {{}} ``` @@ -1052,7 +1119,7 @@ https://www.bilibili.com/video/av47027633 ```markdown {{}} -Or +或者 {{}} ``` @@ -1070,7 +1137,7 @@ https://www.bilibili.com/video/av36570401?p=3 ```markdown {{}} -Or +或者 {{}} ``` diff --git a/layouts/_default/summary.html b/layouts/_default/summary.html index 60c3a91e..440bfd07 100644 --- a/layouts/_default/summary.html +++ b/layouts/_default/summary.html @@ -19,8 +19,8 @@ {{- $author := .Params.author | default .Site.Author.name | default (T "author") -}} {{- $authorLink := .Params.authorLink | default .Site.Author.link | default (relLangURL "/") -}} {{- $publish_date := .PublishDate.Format (.Site.Params.dateFormatToUse | default "2006-01-02") -}} diff --git a/layouts/partials/plugin/link.html b/layouts/partials/plugin/link.html index 700676df..13346a1e 100644 --- a/layouts/partials/plugin/link.html +++ b/layouts/partials/plugin/link.html @@ -1,8 +1,9 @@ - +{{- $rel := "" -}} + {{- with .icon -}} {{- partial "plugin/icon.html" . -}} {{- end -}} {{- with .content -}} {{- . | safeHTML -}} {{- end -}} - + \ No newline at end of file diff --git a/layouts/posts/single.html b/layouts/posts/single.html index 4877b1b1..d7a1a4af 100644 --- a/layouts/posts/single.html +++ b/layouts/posts/single.html @@ -15,8 +15,8 @@ {{- $author := .Params.author | default .Site.Author.name | default (T "author") -}} {{- $authorLink := .Params.authorLink | default .Site.Author.link | default (relLangURL "/") -}} {{- with .Params.categories -}} diff --git a/layouts/shortcodes/link.html b/layouts/shortcodes/link.html new file mode 100644 index 00000000..5208d81b --- /dev/null +++ b/layouts/shortcodes/link.html @@ -0,0 +1,13 @@ +{{- $options := dict -}} +{{- if .IsNamedParams -}} + {{- $options = dict "href" (.Get "href") | merge $options -}} + {{- $options = dict "title" (.Get "title") | merge $options -}} + {{- $options = dict "rel" (.Get "rel") | merge $options -}} + {{- $options = dict "class" (.Get "class") | merge $options -}} + {{- $options = dict "content" (.Get "content") | merge $options -}} +{{- else -}} + {{- $options = dict "href" (.Get 0) | merge $options -}} + {{- $options = dict "content" (.Get 1 | default (.Get 0)) | merge $options -}} + {{- $options = dict "title" (.Get 2) | merge $options -}} +{{- end -}} +{{- partial "plugin/link.html" $options -}} diff --git a/package.json b/package.json index 8da12b74..0cf376da 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "scripts": { "build": "npx babel src --out-file assets/js/theme.min.js --source-maps && hugo -v --source=exampleSite --themesDir=../.. -D --gc", "start": "npm run build && hugo server --source=exampleSite --themesDir=../.. --disableFastRender", + "check": "htmlproofer exampleSite/public --check-html --allow-hash-href --empty-alt-ignore --disable-external", "copy": "rm -rf resources && cp -rf exampleSite/resources resources" }, "husky": { diff --git a/resources/_gen/assets/scss/css/style.template.scss_90197bdac482216ecaaaae0fb88517c1.content b/resources/_gen/assets/scss/css/style.template.scss_90197bdac482216ecaaaae0fb88517c1.content index 25c4d2f5..2c2e108d 100644 --- a/resources/_gen/assets/scss/css/style.template.scss_90197bdac482216ecaaaae0fb88517c1.content +++ b/resources/_gen/assets/scss/css/style.template.scss_90197bdac482216ecaaaae0fb88517c1.content @@ -1,3 +1,3 @@ -@import url("https://fonts.googleapis.com/css2?family=Baloo+2:wght@500&display=swap");/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:0.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace, monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace, monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:0.35em 0.75em 0.625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}html{font-family:system,-apple-system,BlinkMacSystemFont,"PingFang SC","Segoe UI","Microsoft YaHei","wenquanyi micro hei","Hiragino Sans GB","Hiragino Sans GB W3","Roboto","Oxygen","Ubuntu","Cantarell","Fira Sans","Droid Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:400;font-display:swap;font-size:16px;line-height:1.5rem;width:100%}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-thumb{background-color:#87878d}::-webkit-scrollbar-thumb:hover{background-color:#a9a9b3}::selection{background:rgba(38,139,211,0.2)}.dark-theme ::selection{background:rgba(38,139,211,0.3)}body{background-color:#fff;color:#161209;overflow-wrap:break-word}body::before{content:"";background-repeat:no-repeat;background-position:center;opacity:0.05;position:fixed;top:0;left:0;width:100%;height:100%;z-index:-1;-webkit-filter:grayscale(100%);-moz-filter:grayscale(100%);-ms-filter:grayscale(100%);-o-filter:grayscale(100%);filter:grayscale(100%);filter:gray}body.dark-theme{color:#a9a9b3;background-color:#292a2d}a{color:#161209;text-decoration:none}a:hover{color:#2d96bd}.dark-theme a{color:#a9a9b3}.dark-theme a:hover{color:#fff}#fixed-buttons{display:none}.fixed-button{display:none;z-index:100;position:fixed;right:1.5rem;font-size:1rem;line-height:1.3rem;padding:.6rem .6rem;color:#a9a9b3;background:#f8f8f8;border:1px solid #c3c3c3;border-radius:2rem}.fixed-button:hover,.fixed-button:active{color:#161209;cursor:pointer}.fixed-button:active,.fixed-button:focus,.fixed-button:hover{outline:none}.dark-theme .fixed-button{color:#5d5d5f;background:#252627;border-color:#313236}.dark-theme .fixed-button:hover,.dark-theme .fixed-button:active{color:#a9a9b3}#top-button{display:block;bottom:1.5rem}#comment-button{bottom:4.5rem}.wrapper{display:flex;flex-direction:column;min-height:97.5vh;width:100%}.wrapper main{flex:1 0 auto}.wrapper main .container{padding-left:1rem;padding-right:1rem}.footer{height:2rem;width:100%;text-align:center;line-height:1.5rem;padding-top:2rem}.page{position:relative;width:100%;max-width:60%;margin:0 auto;padding-top:3.5rem}.single .single-title{margin:1rem 0 .5rem;font-size:1.6rem;line-height:140%}.single .single-subtitle{margin:.4rem 0;font-size:1.2rem;font-weight:normal;font-style:italic;line-height:100%}.single .post-meta{font-size:.875rem;color:#a9a9b3}.single .post-meta span{display:inline-block}.dark-theme .single .post-meta{color:#5d5d5f}.single .post-meta a{color:#2d96bd}.dark-theme .single .post-meta a{color:#a9a9b3}.single .post-meta a:hover{color:#ef3982}.dark-theme .single .post-meta a:hover{color:#fff}.single .post-meta .author{font-size:1.05rem}.single .featured-image{padding-top:.6rem}.single .featured-image img{display:block;width:100%;height:auto;margin:0 auto;overflow:hidden}.single #toc-auto{display:block;position:absolute;width:1000px;padding:0 .8rem;border-left:1px solid #dcdcdc;overflow-wrap:break-word;box-sizing:border-box;top:10rem;left:10000px}.dark-theme .single #toc-auto{border-left:1px solid #4a4b50}.single #toc-auto .toc-title{font-weight:400;margin:.8rem 0;text-transform:uppercase}.single #toc-auto .toc-content.always-active ul{display:block}.single #toc-auto .toc-content>nav>ul{margin:.625rem 0}.single #toc-auto .toc-content ul{text-indent:-0.85rem;padding-left:.625rem;list-style:none}.single #toc-auto .toc-content ul a::before{content:"|";font-weight:bolder;margin-right:.5rem;color:#2d96bd}.dark-theme .single #toc-auto .toc-content ul a::before{color:#55bde2}.single #toc-auto .toc-content ul ul{padding-left:1.25rem;display:none}.single #toc-auto .toc-content ul .has-active>ul{display:block}.single #toc-auto .toc-content a.active{font-weight:bold;color:#2d96bd}.dark-theme .single #toc-auto .toc-content a.active{color:#55bde2}.single #toc-auto .toc-content a.active::before{color:#ef3982}.dark-theme .single #toc-auto .toc-content a.active::before{color:#bdebfc}.single #toc-static{display:none;padding-top:.8rem}.single #toc-static details summary{list-style:none;background:#ededed}.dark-theme .single #toc-static details summary{background:#20252b}.single #toc-static details summary .toc-title{display:block;display:flex;justify-content:space-between;font-weight:bold;line-height:2em;padding:0 .625rem}.single #toc-static details summary .toc-title i.details{line-height:2em}.single #toc-static details summary .toc-title:hover{cursor:pointer}.single #toc-static details summary::-webkit-details-marker{display:none}.single #toc-static details[open] i.details{transform:rotate(180deg)}.single #toc-static .toc-content{background-color:#f5f5f5}.single #toc-static .toc-content>nav>ul{margin:0;padding:.4rem .8rem}.single #toc-static .toc-content ul{list-style:none}.single #toc-static .toc-content ul ul{padding-left:1.25rem}.dark-theme .single #toc-static .toc-content{background-color:#272C34}.single .toc .toc-title{font-size:1.2rem}.single .toc .toc-content{font-size:.9rem}.single .toc ruby{background:#f5f5f5}.single .toc ruby rt{color:#a9a9b3}.dark-theme .single .toc ruby{background:#272C34}.dark-theme .single .toc ruby rt{color:#5d5d5f}.single .content h2,.single .content h3,.single .content h4,.single .content h5,.single .content h6{font-weight:bold;margin:1.2rem 0}.dark-theme .single .content h2,.dark-theme .single .content h3,.dark-theme .single .content h4,.dark-theme .single .content h5,.dark-theme .single .content h6{font-weight:bolder}.single .content h2>.header-mark::before,.single .content h3>.header-mark::before,.single .content h4>.header-mark::before,.single .content h5>.header-mark::before,.single .content h6>.header-mark::before{content:"|";margin-right:.3125rem;color:#2d96bd}.dark-theme .single .content h2>.header-mark::before,.dark-theme .single .content h3>.header-mark::before,.dark-theme .single .content h4>.header-mark::before,.dark-theme .single .content h5>.header-mark::before,.dark-theme .single .content h6>.header-mark::before{color:#55bde2}.single .content h2>.header-mark::before{content:"#"}.single .content p{font-size:1rem;margin:.5rem 0}.single .content b,.single .content strong{font-weight:bold}.dark-theme .single .content b,.dark-theme .single .content strong{color:#ddd}.single .content a{word-break:break-all;word-break:break-word;color:#2d96bd}.dark-theme .single .content a,.dark-theme .single .content a b,.dark-theme .single .content a strong{color:#55bde2}.single .content a:hover{color:#ef3982}.dark-theme .single .content a:hover,.dark-theme .single .content a:hover b,.dark-theme .single .content a:hover strong{color:#bdebfc}.single .content ul{padding-left:2rem;list-style-type:disc}.single .content ruby{background:#f5f5f5}.single .content ruby rt{color:#a9a9b3}.dark-theme .single .content ruby{background:#272C34}.dark-theme .single .content ruby rt{color:#5d5d5f}.single .content .table-wrapper{overflow-x:auto}.single .content .table-wrapper::-webkit-scrollbar{background-color:#fff}.dark-theme .single .content .table-wrapper::-webkit-scrollbar{background-color:#272c34}.single .content .table-wrapper>table{width:100%;max-width:100%;margin:.625rem 0;border-spacing:0;background:#fff;border-collapse:collapse}.dark-theme .single .content .table-wrapper>table{background:#272c34}.single .content .table-wrapper>table thead{background:#ededed}.dark-theme .single .content .table-wrapper>table thead{background-color:#20252b}.single .content .table-wrapper>table th,.single .content .table-wrapper>table td{padding:.3rem 1rem;border:1px double #dcdcdc}.dark-theme .single .content .table-wrapper>table th,.dark-theme .single .content .table-wrapper>table td{border:1px double #4a4b50}.single .content img{max-width:100%;min-height:1.2rem}.single .content figure{text-align:center}.single .content figure .image-caption:not(:empty){min-width:20%;max-width:80%;display:inline-block;padding:.5rem;margin:0 auto;font-size:.875rem;color:#969696}.single .content figure img{display:block;height:auto;margin:0 auto;overflow:hidden}.single .content .lazyloading{object-fit:none}.single .content blockquote{font-size:1rem;display:block;border-width:1px 0;border-style:solid;border-color:#dcdcdc;padding:1.5em 1.2em 0.5em 1.2em;margin:0 0 2em 0;position:relative}.single .content blockquote::before{content:'\201C';position:absolute;top:0em;left:50%;transform:translate(-50%, -50%);width:3rem;height:2rem;font:6em/1.08em 'PT Sans', sans-serif;color:#2d96bd;text-align:center}.dark-theme .single .content blockquote::before{color:#55bde2}.single .content blockquote::after{content:"#blockquote" attr(cite);display:block;text-align:right;font-size:0.875em;color:#2d96bd}.dark-theme .single .content blockquote::after{color:#55bde2}.dark-theme .single .content blockquote{border-color:#4a4b50}.single .content .footnotes{color:#a9a9b3}.dark-theme .single .content .footnotes{color:#5d5d5f}.single .content code{font-size:13px;font-family:Source Code Pro,Menlo,Consolas,Monaco,monospace;padding:.2rem .4rem;color:#E74C3C}.dark-theme .single .content code{color:#E5BF78}.single .content code,.single .content pre,.single .content .highlight table,.single .content .highlight tr,.single .content .highlight td{background:#f5f5f5}.dark-theme .single .content code,.dark-theme .single .content pre,.dark-theme .single .content .highlight table,.dark-theme .single .content .highlight tr,.dark-theme .single .content .highlight td{background:#272C34}.single .content .highlight>.chroma{margin:1rem 0}.single .content .highlight>.chroma code,.single .content .highlight>.chroma pre{margin:0;padding:0}.single .content .highlight>.chroma::before{display:block;padding:.4rem;font-family:system,-apple-system,BlinkMacSystemFont,"PingFang SC","Segoe UI","Microsoft YaHei","wenquanyi micro hei","Hiragino Sans GB","Hiragino Sans GB W3","Roboto","Oxygen","Ubuntu","Cantarell","Fira Sans","Droid Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:bold;color:#b1b0b0;background:#ededed;content:'Code'}.dark-theme .single .content .highlight>.chroma::before{color:#b1b0b0;background:#20252b}.single .content .highlight>.chroma.language-bash::before{content:"Bash"}.single .content .highlight>.chroma.language-c::before{content:"C"}.single .content .highlight>.chroma.language-cs::before{content:"C#"}.single .content .highlight>.chroma.language-cpp::before{content:"C++"}.single .content .highlight>.chroma.language-clojure::before{content:"Clojure"}.single .content .highlight>.chroma.language-coffeescript::before{content:"CoffeeScript"}.single .content .highlight>.chroma.language-css::before{content:"CSS"}.single .content .highlight>.chroma.language-dart::before{content:"Dart"}.single .content .highlight>.chroma.language-diff::before{content:"Diff"}.single .content .highlight>.chroma.language-erlang::before{content:"Erlang"}.single .content .highlight>.chroma.language-go::before{content:"Go"}.single .content .highlight>.chroma.language-go-html-template::before{content:"Go HTML Template"}.single .content .highlight>.chroma.language-groovy::before{content:"Groovy"}.single .content .highlight>.chroma.language-haskell::before{content:"Haskell"}.single .content .highlight>.chroma.language-html::before{content:"HTML"}.single .content .highlight>.chroma.language-http::before{content:"HTTP"}.single .content .highlight>.chroma.language-xml::before{content:"XML"}.single .content .highlight>.chroma.language-java::before{content:"Java"}.single .content .highlight>.chroma.language-js::before{content:"JavaScript"}.single .content .highlight>.chroma.language-javascript::before{content:"JavaScript"}.single .content .highlight>.chroma.language-json::before{content:"JSON"}.single .content .highlight>.chroma.language-kotlin::before{content:"Kotlin"}.single .content .highlight>.chroma.language-latex::before{content:"LaTeX"}.single .content .highlight>.chroma.language-less::before{content:"Less"}.single .content .highlight>.chroma.language-lisp::before{content:"Lisp"}.single .content .highlight>.chroma.language-lua::before{content:"Lua"}.single .content .highlight>.chroma.language-makefile::before{content:"Makefile"}.single .content .highlight>.chroma.language-markdown::before{content:"Markdown"}.single .content .highlight>.chroma.language-matlab::before{content:"Matlab"}.single .content .highlight>.chroma.language-objectivec::before{content:"Objective-C"}.single .content .highlight>.chroma.language-php::before{content:"PHP"}.single .content .highlight>.chroma.language-perl::before{content:"Perl"}.single .content .highlight>.chroma.language-python::before{content:"Python"}.single .content .highlight>.chroma.language-r::before{content:"R"}.single .content .highlight>.chroma.language-ruby::before{content:"Ruby"}.single .content .highlight>.chroma.language-rust::before{content:"Rust"}.single .content .highlight>.chroma.language-scala::before{content:"Scala"}.single .content .highlight>.chroma.language-scss::before{content:"Scss"}.single .content .highlight>.chroma.language-shell::before{content:"Shell"}.single .content .highlight>.chroma.language-sql::before{content:"SQL"}.single .content .highlight>.chroma.language-swift::before{content:"Swift"}.single .content .highlight>.chroma.language-tex::before{content:"TeX"}.single .content .highlight>.chroma.language-toml::before{content:"TOML"}.single .content .highlight>.chroma.language-ts::before{content:"TypeScript"}.single .content .highlight>.chroma.language-typescript::before{content:"TypeScript"}.single .content .highlight>.chroma.language-vue::before{content:"Vue"}.single .content .highlight>.chroma.language-yml::before{content:"YAML"}.single .content .highlight>.chroma.language-yaml::before{content:"YAML"}.single .content .highlight>.chroma .lntd:first-child{width:1.2rem}.single .content .highlight>.chroma .lntd:first-child .lnt{color:#b1b0b0}.single .content .highlight>.chroma .lntd:first-child .hl{font-weight:bolder}.single .content .highlight>.chroma .lntd:last-child .hl{display:block;background-color:#e8e8e8}.dark-theme .single .content .highlight>.chroma .lntd:last-child .hl{background-color:#1c2025}.single .content .highlight{font-family:Source Code Pro,Menlo,Consolas,Monaco,monospace;font-size:13px;line-height:18px}.single .content .highlight .c,.single .content .highlight .ch,.single .content .highlight .cm,.single .content .highlight .c1,.single .content .highlight .cs,.single .content .highlight .cp,.single .content .highlight .cpf{font-style:italic}.single .content .highlight .gl{text-decoration:underline}.single .content .highlight .p{color:#a9a9b3}.single .content .highlight .k{color:#b501a9}.single .content .highlight .kc{color:#b501a9}.single .content .highlight .kd{color:#b501a9}.single .content .highlight .kn{color:#b501a9}.single .content .highlight .kp{color:#b501a9}.single .content .highlight .kr{color:#b501a9}.single .content .highlight .kt{color:#b501a9}.single .content .highlight .n{color:#333}.single .content .highlight .na{color:#2b77fa}.single .content .highlight .nb{color:#f74840}.single .content .highlight .bp{color:#f74840}.single .content .highlight .nc{color:#cb8100}.single .content .highlight .no{color:#2b77fa}.single .content .highlight .nd{color:#0086c1}.single .content .highlight .ni{color:#2b77fa}.single .content .highlight .ne{color:#2b77fa}.single .content .highlight .nf{color:#2b77fa}.single .content .highlight .fm{color:#1ccad6}.single .content .highlight .nl{color:#2b77fa}.single .content .highlight .nn{color:#2b77fa}.single .content .highlight .nx{color:#333}.single .content .highlight .py{color:#2b77fa}.single .content .highlight .nt{color:#2b77fa}.single .content .highlight .nv{color:#2b77fa}.single .content .highlight .vc{color:#2b77fa}.single .content .highlight .vg{color:#2b77fa}.single .content .highlight .vi{color:#2b77fa}.single .content .highlight .vm{color:#2b77fa}.single .content .highlight .l{color:#2aa198}.single .content .highlight .ld{color:#2aa198}.single .content .highlight .s{color:#24a443}.single .content .highlight .sa{color:#24a443}.single .content .highlight .sb{color:#24a443}.single .content .highlight .sc{color:#24a443}.single .content .highlight .dl{color:#24a443}.single .content .highlight .sd{color:#24a443}.single .content .highlight .s2{color:#24a443}.single .content .highlight .se{color:#24a443}.single .content .highlight .sh{color:#24a443}.single .content .highlight .si{color:#24a443}.single .content .highlight .sx{color:#24a443}.single .content .highlight .sr{color:#24a443}.single .content .highlight .s1{color:#24a443}.single .content .highlight .ss{color:#24a443}.single .content .highlight .m{color:#e2893c}.single .content .highlight .mb{color:#e2893c}.single .content .highlight .mf{color:#e2893c}.single .content .highlight .mh{color:#e2893c}.single .content .highlight .mi{color:#e2893c}.single .content .highlight .il{color:#e2893c}.single .content .highlight .mo{color:#e2893c}.single .content .highlight .o{color:#f19b04}.single .content .highlight .ow{color:#b501a9}.single .content .highlight .c{color:#a0a1a8}.single .content .highlight .ch{color:#a0a1a8}.single .content .highlight .cm{color:#a0a1a8}.single .content .highlight .c1{color:#a0a1a8}.single .content .highlight .cs{color:#a0a1a8}.single .content .highlight .cp{color:#a0a1a8}.single .content .highlight .cpf{color:#a0a1a8}.single .content .highlight .g{color:#e72d40}.single .content .highlight .gd{color:#e72d40}.single .content .highlight .ge{color:#e72d40}.single .content .highlight .gr{color:#e72d40}.single .content .highlight .gh{color:#e72d40}.single .content .highlight .gi{color:#e72d40}.single .content .highlight .go{color:#e72d40}.single .content .highlight .gp{color:#e72d40}.single .content .highlight .gs{color:#e72d40}.single .content .highlight .gu{color:#e72d40}.single .content .highlight .gt{color:#e72d40}.single .content .highlight .w{color:#bbb}.dark-theme .single .content .highlight .p{color:#a9a9b3}.dark-theme .single .content .highlight .k{color:#d371e3}.dark-theme .single .content .highlight .kc{color:#d371e3}.dark-theme .single .content .highlight .kd{color:#d371e3}.dark-theme .single .content .highlight .kn{color:#d371e3}.dark-theme .single .content .highlight .kp{color:#d371e3}.dark-theme .single .content .highlight .kr{color:#d371e3}.dark-theme .single .content .highlight .kt{color:#d371e3}.dark-theme .single .content .highlight .n{color:#a9b2c0}.dark-theme .single .content .highlight .na{color:#41b0f5}.dark-theme .single .content .highlight .nb{color:#19b9c4}.dark-theme .single .content .highlight .bp{color:#ecbf6f}.dark-theme .single .content .highlight .nc{color:#ecbf6f}.dark-theme .single .content .highlight .no{color:#41b0f5}.dark-theme .single .content .highlight .nd{color:#ecbf6f}.dark-theme .single .content .highlight .ni{color:#41b0f5}.dark-theme .single .content .highlight .ne{color:#41b0f5}.dark-theme .single .content .highlight .nf{color:#41b0f5}.dark-theme .single .content .highlight .fm{color:#19b9c4}.dark-theme .single .content .highlight .nl{color:#41b0f5}.dark-theme .single .content .highlight .nn{color:#41b0f5}.dark-theme .single .content .highlight .nx{color:#a9a9b3}.dark-theme .single .content .highlight .py{color:#41b0f5}.dark-theme .single .content .highlight .nt{color:#41b0f5}.dark-theme .single .content .highlight .nv{color:#41b0f5}.dark-theme .single .content .highlight .vc{color:#41b0f5}.dark-theme .single .content .highlight .vg{color:#41b0f5}.dark-theme .single .content .highlight .vi{color:#41b0f5}.dark-theme .single .content .highlight .vm{color:#41b0f5}.dark-theme .single .content .highlight .l{color:#2aa198}.dark-theme .single .content .highlight .ld{color:#2aa198}.dark-theme .single .content .highlight .s{color:#8cc570}.dark-theme .single .content .highlight .sa{color:#8cc570}.dark-theme .single .content .highlight .sb{color:#8cc570}.dark-theme .single .content .highlight .sc{color:#8cc570}.dark-theme .single .content .highlight .dl{color:#8cc570}.dark-theme .single .content .highlight .sd{color:#8cc570}.dark-theme .single .content .highlight .s2{color:#8cc570}.dark-theme .single .content .highlight .se{color:#8cc570}.dark-theme .single .content .highlight .sh{color:#8cc570}.dark-theme .single .content .highlight .si{color:#8cc570}.dark-theme .single .content .highlight .sx{color:#8cc570}.dark-theme .single .content .highlight .sr{color:#8cc570}.dark-theme .single .content .highlight .s1{color:#8cc570}.dark-theme .single .content .highlight .ss{color:#8cc570}.dark-theme .single .content .highlight .m{color:#db985c}.dark-theme .single .content .highlight .mb{color:#db985c}.dark-theme .single .content .highlight .mf{color:#db985c}.dark-theme .single .content .highlight .mh{color:#db985c}.dark-theme .single .content .highlight .mi{color:#db985c}.dark-theme .single .content .highlight .il{color:#db985c}.dark-theme .single .content .highlight .mo{color:#db985c}.dark-theme .single .content .highlight .o{color:#ecbf6f}.dark-theme .single .content .highlight .ow{color:#d371e3}.dark-theme .single .content .highlight .c{color:#7e848f}.dark-theme .single .content .highlight .ch{color:#7e848f}.dark-theme .single .content .highlight .cm{color:#7e848f}.dark-theme .single .content .highlight .c1{color:#7e848f}.dark-theme .single .content .highlight .cs{color:#7e848f}.dark-theme .single .content .highlight .cp{color:#7e848f}.dark-theme .single .content .highlight .cpf{color:#7e848f}.dark-theme .single .content .highlight .g{color:#f16372}.dark-theme .single .content .highlight .gd{color:#f16372}.dark-theme .single .content .highlight .ge{color:#f16372}.dark-theme .single .content .highlight .gr{color:#f16372}.dark-theme .single .content .highlight .gh{color:#f16372}.dark-theme .single .content .highlight .gi{color:#f16372}.dark-theme .single .content .highlight .go{color:#f16372}.dark-theme .single .content .highlight .gp{color:#f16372}.dark-theme .single .content .highlight .gs{color:#f16372}.dark-theme .single .content .highlight .gu{color:#f16372}.dark-theme .single .content .highlight .gt{color:#f16372}.dark-theme .single .content .highlight .w{color:#bbb}.single .content .highlight>.chroma table,.single .content .highlight>.chroma tr,.single .content .highlight>.chroma td,.single .content .gist table,.single .content .gist tr,.single .content .gist td{margin:0;border:none !important}.single .content .highlight>.chroma td,.single .content .gist td{padding:.2rem .4rem}.single .content .gist .gist-file,.single .content .gist .gist-data,.single .content .gist .gist-meta{border:none}.single .content .gist .gist-meta{padding:.4rem .8rem;background-color:#e8e8e8}.single .content .gist .gist-meta a{color:#2d96bd}.dark-theme .single .content .gist .gist-meta a{color:#55bde2}.single .content .gist .gist-meta a:hover{color:#ef3982}.dark-theme .single .content .gist .gist-meta a:hover:hover{color:#bdebfc}.dark-theme .single .content .gist .gist-meta{background-color:#1c2025}.dark-theme .single .content .gist .highlight{background:#141414}.dark-theme .single .content .gist .blob-num,.dark-theme .single .content .gist .blob-code-inner,.dark-theme .single .content .gist .highlight,.dark-theme .single .content .gist .pl-enm,.dark-theme .single .content .gist .pl-ko,.dark-theme .single .content .gist .pl-mo,.dark-theme .single .content .gist .pl-mp1 .pl-sf,.dark-theme .single .content .gist .pl-ms,.dark-theme .single .content .gist .pl-pdc1,.dark-theme .single .content .gist .pl-scp,.dark-theme .single .content .gist .pl-smc,.dark-theme .single .content .gist .pl-som,.dark-theme .single .content .gist .pl-va,.dark-theme .single .content .gist .pl-vpf,.dark-theme .single .content .gist .pl-vpu,.dark-theme .single .content .gist .pl-mdr{color:#aab1bf}.dark-theme .single .content .gist .pl-mb,.dark-theme .single .content .gist .pl-pdb{font-weight:700}.dark-theme .single .content .gist .pl-c,.dark-theme .single .content .gist .pl-c span,.dark-theme .single .content .gist .pl-pdc{color:#5b6270;font-style:italic}.dark-theme .single .content .gist .pl-sr .pl-cce{color:#56b5c2;font-weight:400}.dark-theme .single .content .gist .pl-ef,.dark-theme .single .content .gist .pl-en,.dark-theme .single .content .gist .pl-enf,.dark-theme .single .content .gist .pl-eoai,.dark-theme .single .content .gist .pl-kos,.dark-theme .single .content .gist .pl-mh .pl-pdh,.dark-theme .single .content .gist .pl-mr{color:#61afef}.dark-theme .single .content .gist .pl-ens,.dark-theme .single .content .gist .pl-vi{color:#be5046}.dark-theme .single .content .gist .pl-enti,.dark-theme .single .content .gist .pl-mai .pl-sf,.dark-theme .single .content .gist .pl-ml,.dark-theme .single .content .gist .pl-sf,.dark-theme .single .content .gist .pl-sr,.dark-theme .single .content .gist .pl-sr .pl-sra,.dark-theme .single .content .gist .pl-src,.dark-theme .single .content .gist .pl-st,.dark-theme .single .content .gist .pl-vo{color:#56b5c2}.dark-theme .single .content .gist .pl-eoi,.dark-theme .single .content .gist .pl-mri,.dark-theme .single .content .gist .pl-pds,.dark-theme .single .content .gist .pl-pse .pl-s1,.dark-theme .single .content .gist .pl-s,.dark-theme .single .content .gist .pl-s1{color:#97c279}.dark-theme .single .content .gist .pl-k,.dark-theme .single .content .gist .pl-kolp,.dark-theme .single .content .gist .pl-mc,.dark-theme .single .content .gist .pl-pde{color:#c578dd}.dark-theme .single .content .gist .pl-mi,.dark-theme .single .content .gist .pl-pdi{color:#c578dd;font-style:italic}.dark-theme .single .content .gist .pl-mp,.dark-theme .single .content .gist .pl-stp{color:#818896}.dark-theme .single .content .gist .pl-mdh,.dark-theme .single .content .gist .pl-mdi,.dark-theme .single .content .gist .pl-mdr{font-weight:400}.dark-theme .single .content .gist .pl-mdht,.dark-theme .single .content .gist .pl-mi1{color:#97c279;background:#020}.dark-theme .single .content .gist .pl-md,.dark-theme .single .content .gist .pl-mdhf{color:#df6b75;background:#200}.dark-theme .single .content .gist .pl-corl{color:#df6b75;text-decoration:underline}.dark-theme .single .content .gist .pl-ib{background:#df6b75}.dark-theme .single .content .gist .pl-ii{background:#e0c184;color:#fff}.dark-theme .single .content .gist .pl-iu{background:#e05151}.dark-theme .single .content .gist .pl-ms1{color:#aab1bf;background:#373b41}.dark-theme .single .content .gist .pl-c1,.dark-theme .single .content .gist .pl-cn,.dark-theme .single .content .gist .pl-e,.dark-theme .single .content .gist .pl-eoa,.dark-theme .single .content .gist .pl-eoac,.dark-theme .single .content .gist .pl-eoac .pl-pde,.dark-theme .single .content .gist .pl-kou,.dark-theme .single .content .gist .pl-mm,.dark-theme .single .content .gist .pl-mp .pl-s3,.dark-theme .single .content .gist .pl-mq,.dark-theme .single .content .gist .pl-s3,.dark-theme .single .content .gist .pl-sok,.dark-theme .single .content .gist .pl-sv,.dark-theme .single .content .gist .pl-mb{color:#d19965}.dark-theme .single .content .gist .pl-enc,.dark-theme .single .content .gist .pl-entc,.dark-theme .single .content .gist .pl-pse .pl-s2,.dark-theme .single .content .gist .pl-s2,.dark-theme .single .content .gist .pl-sc,.dark-theme .single .content .gist .pl-smp,.dark-theme .single .content .gist .pl-sr .pl-sre,.dark-theme .single .content .gist .pl-stj,.dark-theme .single .content .gist .pl-v,.dark-theme .single .content .gist .pl-pdb{color:#e4bf7a}.dark-theme .single .content .gist .pl-ent,.dark-theme .single .content .gist .pl-entl,.dark-theme .single .content .gist .pl-entm,.dark-theme .single .content .gist .pl-mh,.dark-theme .single .content .gist .pl-pdv,.dark-theme .single .content .gist .pl-smi,.dark-theme .single .content .gist .pl-sol,.dark-theme .single .content .gist .pl-mdh,.dark-theme .single .content .gist .pl-mdi{color:#df6b75}.dark-theme .single .content iframe.instagram-media{border:none !important}.single .content .admonition{position:relative;margin:.9765em 0;padding:0 .75rem;background-color:rgba(68,138,255,0.1);border-left:0.25rem solid #448aff;overflow:auto}.single .content .admonition .admonition-title{margin:0 -0.75rem;padding:.2rem .75rem .2rem 1.8rem;border-bottom:0.05rem solid rgba(68,138,255,0.1);background-color:rgba(68,138,255,0.1)}.single .content .admonition .admonition-content{margin:.5rem 0}.single .content .admonition i.icon{font-size:0.85rem;color:#448aff;cursor:auto;position:absolute;left:.6rem;top:.6rem}.single .content .admonition.note{border-left-color:#448aff}.single .content .admonition.note i.icon{color:#448aff}.single .content .admonition.abstract{border-left-color:#00b0ff}.single .content .admonition.abstract i.icon{color:#00b0ff}.single .content .admonition.info{border-left-color:#00b8d4}.single .content .admonition.info i.icon{color:#00b8d4}.single .content .admonition.tip{border-left-color:#00bfa5}.single .content .admonition.tip i.icon{color:#00bfa5}.single .content .admonition.success{border-left-color:#00c853}.single .content .admonition.success i.icon{color:#00c853}.single .content .admonition.question{border-left-color:#64dd17}.single .content .admonition.question i.icon{color:#64dd17}.single .content .admonition.warning{border-left-color:#ff9100}.single .content .admonition.warning i.icon{color:#ff9100}.single .content .admonition.failure{border-left-color:#ff5252}.single .content .admonition.failure i.icon{color:#ff5252}.single .content .admonition.danger{border-left-color:#ff1744}.single .content .admonition.danger i.icon{color:#ff1744}.single .content .admonition.bug{border-left-color:#f50057}.single .content .admonition.bug i.icon{color:#f50057}.single .content .admonition.example{border-left-color:#651fff}.single .content .admonition.example i.icon{color:#651fff}.single .content .admonition.quote{border-left-color:#9e9e9e}.single .content .admonition.quote i.icon{color:#9e9e9e}.single .content .admonition.note{background-color:rgba(68,138,255,0.1)}.single .content .admonition.note .admonition-title{border-bottom-color:rgba(68,138,255,0.1);background-color:rgba(68,138,255,0.1)}.single .content .admonition.abstract{background-color:rgba(0,176,255,0.1)}.single .content .admonition.abstract .admonition-title{border-bottom-color:rgba(0,176,255,0.1);background-color:rgba(0,176,255,0.1)}.single .content .admonition.info{background-color:rgba(0,184,212,0.1)}.single .content .admonition.info .admonition-title{border-bottom-color:rgba(0,184,212,0.1);background-color:rgba(0,184,212,0.1)}.single .content .admonition.tip{background-color:rgba(0,191,165,0.1)}.single .content .admonition.tip .admonition-title{border-bottom-color:rgba(0,191,165,0.1);background-color:rgba(0,191,165,0.1)}.single .content .admonition.success{background-color:rgba(0,200,83,0.1)}.single .content .admonition.success .admonition-title{border-bottom-color:rgba(0,200,83,0.1);background-color:rgba(0,200,83,0.1)}.single .content .admonition.question{background-color:rgba(100,221,23,0.1)}.single .content .admonition.question .admonition-title{border-bottom-color:rgba(100,221,23,0.1);background-color:rgba(100,221,23,0.1)}.single .content .admonition.warning{background-color:rgba(255,145,0,0.1)}.single .content .admonition.warning .admonition-title{border-bottom-color:rgba(255,145,0,0.1);background-color:rgba(255,145,0,0.1)}.single .content .admonition.failure{background-color:rgba(255,82,82,0.1)}.single .content .admonition.failure .admonition-title{border-bottom-color:rgba(255,82,82,0.1);background-color:rgba(255,82,82,0.1)}.single .content .admonition.danger{background-color:rgba(255,23,68,0.1)}.single .content .admonition.danger .admonition-title{border-bottom-color:rgba(255,23,68,0.1);background-color:rgba(255,23,68,0.1)}.single .content .admonition.bug{background-color:rgba(245,0,87,0.1)}.single .content .admonition.bug .admonition-title{border-bottom-color:rgba(245,0,87,0.1);background-color:rgba(245,0,87,0.1)}.single .content .admonition.example{background-color:rgba(101,31,255,0.1)}.single .content .admonition.example .admonition-title{border-bottom-color:rgba(101,31,255,0.1);background-color:rgba(101,31,255,0.1)}.single .content .admonition.quote{background-color:rgba(158,158,158,0.1)}.single .content .admonition.quote .admonition-title{border-bottom-color:rgba(158,158,158,0.1);background-color:rgba(158,158,158,0.1)}.single .content .admonition:last-child{margin-bottom:.75rem}.single .content details.admonition summary{display:block;outline:none;cursor:pointer}.single .content details.admonition summary::-webkit-details-marker{display:none}.single .content details.admonition summary i.details{position:absolute;top:.5rem;right:.5rem;color:#161209}.dark-theme .single .content details.admonition summary i.details{color:#a9a9b3}.single .content details.admonition[open] i.details{transform:rotate(180deg)}.single .content .echarts{width:100%;height:30rem;margin:3% auto;text-align:center}.single .content .bilibili{position:relative;width:100%;height:0;padding-bottom:75%;margin:3% auto;text-align:center}.single .content .bilibili iframe{position:absolute;width:100%;height:100%;left:0;top:0}.single .content hr{margin:1rem 0;position:relative;border-top:1px dashed #dcdcdc;border-bottom:none}.dark-theme .single .content hr{border-top:1px dashed #4a4b50}.single .content kbd{display:inline-block;padding:.25rem;background-color:#fff;border:1px solid #dcdcdc;border-bottom-color:#dcdcdc;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 #dcdcdc;box-shadow:inset 0 -1px 0 #dcdcdc;font-size:.8rem;font-family:Source Code Pro,Menlo,Consolas,Monaco,monospace;color:#E74C3C}.dark-theme .single .content kbd{background-color:#292a2d;border:1px solid #4a4b50;border-bottom-color:#4a4b50;-webkit-box-shadow:inset 0 -1px 0 #4a4b50;box-shadow:inset 0 -1px 0 #4a4b50;color:#E5BF78}.single .content .typeit .code{padding:.375rem;font-size:.875rem;font-family:Source Code Pro,Menlo,Consolas,Monaco,monospace;font-weight:bold;word-break:break-all}.single .content .version{font-weight:bold;font-style:normal;color:#df1a08}.dark-theme .single .content .version{color:#fff}.single .post-footer{margin-top:3rem}.single .post-footer .post-info{border-bottom:1px solid #dcdcdc;padding:1rem 0 0.3rem}.dark-theme .single .post-footer .post-info{border-bottom:1px solid #4a4b50}.single .post-footer .post-info .post-info-line{display:flex;justify-content:space-between}.single .post-footer .post-info .post-info-line .post-info-mod{font-size:0.8em;color:#a9a9b3}.dark-theme .single .post-footer .post-info .post-info-line .post-info-mod{color:#5d5d5f}.single .post-footer .post-info .post-info-line .post-info-mod a{color:#2d96bd}.dark-theme .single .post-footer .post-info .post-info-line .post-info-mod a{color:#55bde2}.single .post-footer .post-info .post-info-line .post-info-mod a:hover{color:#ef3982}.dark-theme .single .post-footer .post-info .post-info-line .post-info-mod a:hover{color:#bdebfc}.single .post-footer .post-info .post-info-line .post-info-license{font-size:0.8em;color:#a9a9b3}.dark-theme .single .post-footer .post-info .post-info-line .post-info-license{color:#5d5d5f}.single .post-footer .post-info .post-info-line .post-info-md{font-size:0.8rem;width:8rem}.single .post-footer .post-info .post-info-line .post-info-md a{color:#2d96bd}.dark-theme .single .post-footer .post-info .post-info-line .post-info-md a{color:#55bde2}.single .post-footer .post-info .post-info-line .post-info-md a:hover{color:#ef3982}.dark-theme .single .post-footer .post-info .post-info-line .post-info-md a:hover{color:#bdebfc}.single .post-footer .post-info-more{padding:0.3rem 0 1rem;display:flex;justify-content:space-between;font-size:0.9rem}.single .post-footer .post-tags{max-width:65%}.single .post-footer .post-tags *{display:inline}.single .post-footer .post-nav::before,.single .post-footer .post-nav::after{content:' ';display:table}.single .post-footer .post-nav a.prev,.single .post-footer .post-nav a.next{font-size:1rem;font-weight:600;-webkit-transition:all ease-out .3s;-moz-transition:all ease-out .3s;-o-transition:all ease-out .3s;transition:all ease-out .3s}.single .post-footer .post-nav a.prev{float:left}.single .post-footer .post-nav a.prev:hover{-webkit-transform:translateX(-4px);-moz-transform:translateX(-4px);-ms-transform:translateX(-4px);-o-transform:translateX(-4px);transform:translateX(-4px)}.single .post-footer .post-nav a.next{float:right}.single .post-footer .post-nav a.next:hover{-webkit-transform:translateX(4px);-moz-transform:translateX(4px);-ms-transform:translateX(4px);-o-transform:translateX(4px);transform:translateX(4px)}.single .comment{padding:4rem 0}.special .single-title,.special .single-subtitle{text-align:right}.archive .single-title{text-align:right}.archive .archive-item{margin-left:2rem}.archive .categories-card{margin:0 auto;margin-top:3rem;display:flex;align-items:center;justify-content:space-between;flex-direction:row;flex-wrap:wrap;padding:0 2.5rem;line-height:1.6rem}.archive .categories-card .card-item{font-size:.875rem;text-align:left;width:45%;display:flex;align-items:flex-start;margin-top:2rem;min-height:10rem;padding:0 2%;position:relative}.archive .categories-card .card-item .card-item-wrapper{width:100%;overflow:hidden}.archive .categories-card .card-item .card-item-wrapper .card-item-title{font-size:1.2rem;font-weight:bold;display:inline-block}.archive .categories-card .card-item .card-item-wrapper span{float:right;padding-right:1rem}.archive .archive-item-link{display:inline-block;text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:95%}.archive .archive-item-link:hover{color:#2d96bd;background-color:transparent}.dark-theme .archive .archive-item-link{color:#a9a9b3;text-decoration:none;transition:color 0.2s ease, border-color 0.2s ease, background 0.2s ease, opacity 0.2s ease}.dark-theme .archive .archive-item-link:hover{color:#fff;text-decoration:none;transition:color 0.2s ease, border-color 0.2s ease, background 0.2s ease, opacity 0.2s ease}.archive .archive-item-date{float:right;text-align:right;color:#a9a9b3}.dark-theme .archive .archive-item-date{color:#5d5d5f}.archive .more-post{text-align:right}.archive .tag-cloud-tags{margin:10px 0}.archive .tag-cloud-tags a{display:inline-block;position:relative;margin:5px 10px;overflow-wrap:break-word;-webkit-transition:all ease-out .3s;-moz-transition:all ease-out .3s;-o-transition:all ease-out .3s;transition:all ease-out .3s}.archive .tag-cloud-tags a:active,.archive .tag-cloud-tags a:focus,.archive .tag-cloud-tags a:hover{color:#2d96bd;-webkit-transform:scale(1.2);-moz-transform:scale(1.2);-ms-transform:scale(1.2);-o-transform:scale(1.2);transform:scale(1.2)}.dark-theme .archive .tag-cloud-tags a:active,.dark-theme .archive .tag-cloud-tags a:focus,.dark-theme .archive .tag-cloud-tags a:hover{color:#fff}.archive .tag-cloud-tags a small{color:#a9a9b3}.dark-theme .archive .tag-cloud-tags a small{color:#fff}.home .home-profile{-webkit-transform:translateY(0);-moz-transform:translateY(0);-ms-transform:translateY(0);-o-transform:translateY(0);transform:translateY(0);padding:2rem 0 0.5rem;text-align:center}.home .home-profile .home-avatar{padding:0.6rem}.home .home-profile .home-avatar img{width:6rem;height:auto;display:inline-block;-webkit-border-radius:100%;border-radius:100%;-webkit-box-shadow:0 0 0 0.3618em rgba(0,0,0,0.05);box-shadow:0 0 0 0.3618em rgba(0,0,0,0.05);margin:0 auto;-webkit-transition:all ease 0.4s;-moz-transition:all ease 0.4s;-o-transition:all ease 0.4s;transition:all ease 0.4s;cursor:pointer}.home .home-profile .home-avatar img:hover{position:relative;-webkit-transform:translateY(-0.75rem);-moz-transform:translateY(-0.75rem);-ms-transform:translateY(-0.75rem);-o-transform:translateY(-0.75rem);transform:translateY(-0.75rem);cursor:pointer}.home .home-profile .home-subtitle{font-size:1rem;font-weight:normal;margin:0;padding:.4rem}.home .home-profile .social-links{padding:.4rem 0}.home .home-profile .social-links a,.home .home-profile .social-links i{font-size:1.6rem;line-height:2rem}.home .home-profile .social-links img{height:1.4rem;padding:0 .25rem}.home .home-profile .home-disclaimer{font-size:1rem;line-height:1.4rem;font-weight:normal;margin:0;padding:.4rem;color:#a9a9b3}.dark-theme .home .home-profile .home-disclaimer{color:#5d5d5f}.home .summary{padding-top:1rem;padding-bottom:.8rem;color:#161209;border-bottom:1px dashed #dcdcdc}.dark-theme .home .summary{color:#a9a9b3;border-bottom:1px dashed #4a4b50}.home .summary .featured-image-preview{width:100%;padding:30% 0 0;position:relative;margin:0.6rem auto}.home .summary .featured-image-preview img{position:absolute;width:100%;height:100%;left:0;top:0;object-fit:cover}.home .summary .single-title{font-size:1.4rem;line-height:140%;margin:0.4rem 0}.home .summary .content{display:-moz-box;display:-webkit-box;-moz-box-orient:vertical;-webkit-box-orient:vertical;-webkit-line-clamp:3;margin-top:.3rem;width:100%;overflow:hidden;text-overflow:ellipsis;overflow-wrap:break-word;color:#a9a9b3}.dark-theme .home .summary .content{color:#5d5d5f}.home .summary .content h2,.home .summary .content h3,.home .summary .content h4,.home .summary .content h5,.home .summary .content h6,.home .summary .content p{font-size:1rem;display:inline}.home .summary .content h2::after,.home .summary .content h3::after,.home .summary .content h4::after,.home .summary .content h5::after,.home .summary .content h6::after,.home .summary .content p::after{content:"\A";white-space:pre}.home .summary .content h2,.home .summary .content h3,.home .summary .content h4,.home .summary .content h5,.home .summary .content h6{line-height:2}.home .summary .content h2::before,.home .summary .content h3::before,.home .summary .content h4::before,.home .summary .content h5::before,.home .summary .content h6::before{content:"|";margin-right:.3125rem;color:#161209}.dark-theme .home .summary .content h2::before,.dark-theme .home .summary .content h3::before,.dark-theme .home .summary .content h4::before,.dark-theme .home .summary .content h5::before,.dark-theme .home .summary .content h6::before{color:#a9a9b3}.home .summary .content h2{font-size:1.2rem}.home .summary .content h2::before{content:"#"}.home .summary .content a{color:#161209}.dark-theme .home .summary .content a{color:#a9a9b3}.home .summary .content a:hover{color:#2d96bd}.dark-theme .home .summary .content a:hover{color:#fff}.dark-theme .home .summary .content b,.dark-theme .home .summary .content strong{color:#5d5d5f}.home .summary .post-footer{margin-top:.4rem;display:flex;justify-content:space-between;align-items:center;font-size:.875rem}.home .summary .post-footer a{color:#2d96bd}.dark-theme .home .summary .post-footer a{color:#55bde2}.home .summary .post-footer a:hover{color:#ef3982}.dark-theme .home .summary .post-footer a:hover{color:#bdebfc}.home .summary .post-footer .post-tags{padding:0}.home .summary .post-footer .post-tags a{color:#161209}.dark-theme .home .summary .post-footer .post-tags a{color:#a9a9b3}.home .summary .post-footer .post-tags a:hover{color:#2d96bd}.dark-theme .home .summary .post-footer .post-tags a:hover{color:#fff}#content-404{font-size:1.8rem;line-height:3rem;transform:translateY(30vh);text-align:center}header{width:100%;z-index:100;background-color:#f8f8f8}.dark-theme header{background-color:#252627}header .header-title{font-family:"Baloo 2",system,-apple-system,BlinkMacSystemFont,"PingFang SC","Segoe UI","Microsoft YaHei","wenquanyi micro hei","Hiragino Sans GB","Hiragino Sans GB W3","Roboto","Oxygen","Ubuntu","Cantarell","Fira Sans","Droid Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:bold;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}header .menu .menu-item{position:relative}header .language-select{position:absolute;opacity:0;left:0;top:0;width:100%;height:100%}header .language-select:hover{cursor:pointer}header .theme-switch i{-webkit-transform:rotate(225deg);-moz-transform:rotate(225deg);-ms-transform:rotate(225deg);-o-transform:rotate(225deg);transform:rotate(225deg)}#header-desktop{display:block;position:fixed;height:3.5rem;line-height:3.5rem}#header-desktop .header-wrapper{width:auto;text-align:center;padding:0 3%;display:flex;justify-content:space-between}#header-desktop .header-wrapper .header-title{font-size:1.5rem;max-width:30%}#header-desktop .header-wrapper .menu{overflow:hidden;white-space:nowrap}#header-desktop .header-wrapper .menu .menu-item{margin:0 .5rem}#header-desktop .header-wrapper .menu .menu-item.theme-switch{margin:0 .3rem}#header-desktop .header-wrapper .menu a.active{font-weight:900;color:#161209}.dark-theme #header-desktop .header-wrapper .menu a.active{color:#fff}#header-mobile{display:none;position:fixed;height:3.5rem;line-height:3.5rem}#header-mobile .header-wrapper{padding:0;margin:0;transition:all 0.3s ease 0s}#header-mobile .header-wrapper .header-container{display:flex;justify-content:space-between;align-items:center;width:100%;font-size:1.125rem;padding-right:1rem;padding-left:1rem;box-sizing:border-box}#header-mobile .header-wrapper .header-container .header-title{max-width:80%;font-size:1.5rem}#header-mobile .header-wrapper .header-container .menu-toggle{cursor:pointer;line-height:4rem}#header-mobile .header-wrapper .header-container .menu-toggle span{display:block;background:#161209;width:1.5rem;height:2px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-transition:.1s margin .1s, .1s transform;-moz-transition:.1s margin .1s, .1s transform;-o-transition:.1s margin .1s, .1s transform;transition:.1s margin .1s, .1s transform}.dark-theme #header-mobile .header-wrapper .header-container .menu-toggle span{background:#a9a9b3}#header-mobile .header-wrapper .header-container .menu-toggle span:nth-child(1){margin-bottom:.5rem}#header-mobile .header-wrapper .header-container .menu-toggle span:nth-child(3){margin-top:.5rem}#header-mobile .header-wrapper .header-container .menu-toggle.active span{-webkit-transition:.1s margin, .1s transform .1s;-moz-transition:.1s margin, .1s transform .1s;-o-transition:.1s margin, .1s transform .1s;transition:.1s margin, .1s transform .1s}#header-mobile .header-wrapper .header-container .menu-toggle.active span:nth-child(1){-webkit-transform:rotate(45deg) translate(0.4rem, 0.5rem);-moz-transform:rotate(45deg) translate(0.4rem, 0.5rem);-ms-transform:rotate(45deg) translate(0.4rem, 0.5rem);-o-transform:rotate(45deg) translate(0.4rem, 0.5rem);transform:rotate(45deg) translate(0.4rem, 0.5rem)}#header-mobile .header-wrapper .header-container .menu-toggle.active span:nth-child(2){opacity:0}#header-mobile .header-wrapper .header-container .menu-toggle.active span:nth-child(3){-moz-transform:rotate(-45deg) translate(0.4rem, -0.5rem);-ms-transform:rotate(-45deg) translate(0.4rem, -0.5rem);-webkit-transform:rotate(-45deg) translate(0.4rem, -0.5rem);-o-transform:rotate(-45deg) translate(0.4rem, -0.5rem);transform:rotate(-45deg) translate(0.4rem, -0.5rem)}#header-mobile .header-wrapper .menu{text-align:center;background:#fff;border-top:2px solid #161209;display:none;box-shadow:0px 2px 4px rgba(0,0,0,0.1),0px 4px 8px rgba(0,0,0,0.1)}#header-mobile .header-wrapper .menu a{display:block;line-height:2.5rem}#header-mobile .header-wrapper .menu.active{display:block}.dark-theme #header-mobile .header-wrapper .menu{background:#292a2d;border-top:2px solid #a9a9b3}.copyright{font-size:.875rem}.copyright .copyright-line{width:100%}.copyright .copyright-line .icp-br{display:none}.pagination{display:flex;flex-direction:row;justify-content:center;list-style:none;white-space:nowrap;width:100%;padding:1rem 0 0}.pagination a{-webkit-font-smoothing:antialiased;font-size:.8rem;color:#bfbfbf;letter-spacing:.1rem;font-weight:700;padding:5px 5px;text-decoration:none;transition:0.3s}.pagination li{padding-bottom:3px;margin:0 20px;box-sizing:border-box;position:relative;display:inline}.pagination li.disabled{display:none}.pagination li:hover a{color:#000}.dark-theme .pagination li:hover a{color:#fff}.pagination li:before,.pagination li:after{position:absolute;content:"";width:0;height:3px;background:#000;transition:0.3s;bottom:0px}.dark-theme .pagination li:before,.dark-theme .pagination li:after{background:#fff}.pagination li:before .active,.pagination li:after .active{width:100%}.pagination li:before{left:50%}.pagination li:after{right:50%}.pagination li:hover:before,.pagination li:hover:after{width:50%}.pagination li.active a{color:#000}.dark-theme .pagination li.active a{color:#fff}.pagination li.active:before,.pagination li.active:after{width:60%}@media only screen and (max-width: 1440px){.page{max-width:56%}}@media only screen and (max-width: 1200px){.page{max-width:52%}}@media only screen and (max-width: 960px){.page{max-width:80%}.page #toc-auto{display:none}.page #toc-static{display:block}}@media only screen and (max-width: 680px){#header-desktop{display:none}#header-mobile{display:block}.page{max-width:100%;padding-top:3.5rem}.page .categories-card .card-item{width:100%}.copyright .copyright-line .icp-splitter{display:none}.copyright .copyright-line .icp-br{display:block}} +@import url("https://fonts.googleapis.com/css2?family=Nunito:wght@800&display=swap");/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:0.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace, monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace, monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:0.35em 0.75em 0.625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}html{font-family:system,-apple-system,BlinkMacSystemFont,"PingFang SC","Segoe UI","Microsoft YaHei","wenquanyi micro hei","Hiragino Sans GB","Hiragino Sans GB W3","Roboto","Oxygen","Ubuntu","Cantarell","Fira Sans","Droid Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:400;font-display:swap;font-size:16px;line-height:1.5rem;width:100%}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-thumb{background-color:#87878d}::-webkit-scrollbar-thumb:hover{background-color:#a9a9b3}::selection{background:rgba(38,139,211,0.2)}.dark-theme ::selection{background:rgba(38,139,211,0.3)}body{background-color:#fff;color:#161209;overflow-wrap:break-word}body::before{content:"";background-repeat:no-repeat;background-position:center;opacity:0.05;position:fixed;top:0;left:0;width:100%;height:100%;z-index:-1;-webkit-filter:grayscale(100%);-moz-filter:grayscale(100%);-ms-filter:grayscale(100%);-o-filter:grayscale(100%);filter:grayscale(100%);filter:gray}body.dark-theme{color:#a9a9b3;background-color:#292a2d}a{text-decoration:none}a{color:#161209}.dark-theme a{color:#a9a9b3}a:active,a:hover{color:#2d96bd}.dark-theme a:active,.dark-theme a:hover{color:#fff}#fixed-buttons{display:none}.fixed-button{display:none;z-index:100;position:fixed;right:1.5rem;font-size:1rem;line-height:1.3rem;padding:.6rem .6rem;color:#a9a9b3;background:#f8f8f8;border:1px solid #c3c3c3;border-radius:2rem}.fixed-button:hover,.fixed-button:active{color:#161209;cursor:pointer}.fixed-button:active,.fixed-button:focus,.fixed-button:hover{outline:none}.dark-theme .fixed-button{color:#5d5d5f;background:#252627;border-color:#313236}.dark-theme .fixed-button:hover,.dark-theme .fixed-button:active{color:#a9a9b3}#top-button{display:block;bottom:1.5rem}#comment-button{bottom:4.5rem}.wrapper{display:flex;flex-direction:column;min-height:97.5vh;width:100%}.wrapper main{flex:1 0 auto}.wrapper main .container{padding-left:1rem;padding-right:1rem}.footer{height:2rem;width:100%;text-align:center;line-height:1.5rem;padding-top:2rem}.page{position:relative;width:100%;max-width:60%;margin:0 auto;padding-top:3.5rem}.single .single-title{margin:1rem 0 .5rem;font-size:1.6rem;line-height:140%}.single .single-subtitle{margin:.4rem 0;font-size:1.2rem;font-weight:normal;font-style:italic;line-height:100%}.single .post-meta{font-size:.875rem;color:#a9a9b3}.single .post-meta span{display:inline-block}.dark-theme .single .post-meta{color:#5d5d5f}.single .post-meta a{color:#2d96bd}.dark-theme .single .post-meta a{color:#a9a9b3}.single .post-meta a:active,.single .post-meta a:hover{color:#ef3982}.dark-theme .single .post-meta a:active,.dark-theme .single .post-meta a:hover{color:#fff}.single .post-meta .author{font-size:1.05rem}.single .featured-image{padding-top:.6rem}.single .featured-image img{display:block;width:100%;height:auto;margin:0 auto;overflow:hidden}.single #toc-auto{display:block;position:absolute;width:1000px;padding:0 .8rem;border-left:1px solid #dcdcdc;overflow-wrap:break-word;box-sizing:border-box;top:10rem;left:10000px}.dark-theme .single #toc-auto{border-left:1px solid #4a4b50}.single #toc-auto .toc-title{font-weight:400;margin:.8rem 0;text-transform:uppercase}.single #toc-auto .toc-content.always-active ul{display:block}.single #toc-auto .toc-content>nav>ul{margin:.625rem 0}.single #toc-auto .toc-content ul{text-indent:-0.85rem;padding-left:.625rem;list-style:none}.single #toc-auto .toc-content ul a::before{content:"|";font-weight:bolder;margin-right:.5rem;color:#2d96bd}.dark-theme .single #toc-auto .toc-content ul a::before{color:#55bde2}.single #toc-auto .toc-content ul ul{padding-left:1.25rem;display:none}.single #toc-auto .toc-content ul .has-active>ul{display:block}.single #toc-auto .toc-content a.active{font-weight:bold;color:#2d96bd}.dark-theme .single #toc-auto .toc-content a.active{color:#55bde2}.single #toc-auto .toc-content a.active::before{color:#ef3982}.dark-theme .single #toc-auto .toc-content a.active::before{color:#bdebfc}.single #toc-static{display:none;padding-top:.8rem}.single #toc-static details summary{list-style:none;background:#ededed}.dark-theme .single #toc-static details summary{background:#20252b}.single #toc-static details summary .toc-title{display:block;display:flex;justify-content:space-between;font-weight:bold;line-height:2em;padding:0 .625rem}.single #toc-static details summary .toc-title i.details{line-height:2em}.single #toc-static details summary .toc-title:hover{cursor:pointer}.single #toc-static details summary::-webkit-details-marker{display:none}.single #toc-static details[open] i.details{transform:rotate(180deg)}.single #toc-static .toc-content{background-color:#f5f5f5}.single #toc-static .toc-content>nav>ul{margin:0;padding:.4rem .8rem}.single #toc-static .toc-content ul{list-style:none}.single #toc-static .toc-content ul ul{padding-left:1.25rem}.dark-theme .single #toc-static .toc-content{background-color:#272C34}.single .toc .toc-title{font-size:1.2rem}.single .toc .toc-content{font-size:.9rem}.single .toc ruby{background:#f5f5f5}.single .toc ruby rt{color:#a9a9b3}.dark-theme .single .toc ruby{background:#272C34}.dark-theme .single .toc ruby rt{color:#5d5d5f}.single .content h2,.single .content h3,.single .content h4,.single .content h5,.single .content h6{font-weight:bold;margin:1.2rem 0}.dark-theme .single .content h2,.dark-theme .single .content h3,.dark-theme .single .content h4,.dark-theme .single .content h5,.dark-theme .single .content h6{font-weight:bolder}.single .content h2>.header-mark::before,.single .content h3>.header-mark::before,.single .content h4>.header-mark::before,.single .content h5>.header-mark::before,.single .content h6>.header-mark::before{content:"|";margin-right:.3125rem;color:#2d96bd}.dark-theme .single .content h2>.header-mark::before,.dark-theme .single .content h3>.header-mark::before,.dark-theme .single .content h4>.header-mark::before,.dark-theme .single .content h5>.header-mark::before,.dark-theme .single .content h6>.header-mark::before{color:#55bde2}.single .content h2>.header-mark::before{content:"#"}.single .content p{font-size:1rem;margin:.5rem 0}.single .content b,.single .content strong{font-weight:bold}.dark-theme .single .content b,.dark-theme .single .content strong{color:#ddd}.single .content a{color:#2d96bd}.dark-theme .single .content a{color:#55bde2}.single .content a:active,.single .content a:hover{color:#ef3982}.dark-theme .single .content a:active,.dark-theme .single .content a:hover{color:#bdebfc}.single .content a{word-break:break-all;word-break:break-word}.dark-theme .single .content a b,.dark-theme .single .content a strong{color:#55bde2}.single .content .dark-theme a:hover b,.single .content .dark-theme a:hover strong{color:#bdebfc}.single .content ul{padding-left:2rem;list-style-type:disc}.single .content ruby{background:#f5f5f5}.single .content ruby rt{color:#a9a9b3}.dark-theme .single .content ruby{background:#272C34}.dark-theme .single .content ruby rt{color:#5d5d5f}.single .content .table-wrapper{overflow-x:auto}.single .content .table-wrapper::-webkit-scrollbar{background-color:#fff}.dark-theme .single .content .table-wrapper::-webkit-scrollbar{background-color:#272c34}.single .content .table-wrapper>table{width:100%;max-width:100%;margin:.625rem 0;border-spacing:0;background:#fff;border-collapse:collapse}.dark-theme .single .content .table-wrapper>table{background:#272c34}.single .content .table-wrapper>table thead{background:#ededed}.dark-theme .single .content .table-wrapper>table thead{background-color:#20252b}.single .content .table-wrapper>table th,.single .content .table-wrapper>table td{padding:.3rem 1rem;border:1px double #dcdcdc}.dark-theme .single .content .table-wrapper>table th,.dark-theme .single .content .table-wrapper>table td{border:1px double #4a4b50}.single .content img{max-width:100%;min-height:1.2rem}.single .content figure{text-align:center}.single .content figure .image-caption:not(:empty){min-width:20%;max-width:80%;display:inline-block;padding:.5rem;margin:0 auto;font-size:.875rem;color:#969696}.single .content figure img{display:block;height:auto;margin:0 auto;overflow:hidden}.single .content .lazyloading{object-fit:none}.single .content blockquote{font-size:1rem;display:block;border-width:1px 0;border-style:solid;border-color:#dcdcdc;padding:1.5em 1.2em 0.5em 1.2em;margin:0 0 2em 0;position:relative}.single .content blockquote::before{content:'\201C';position:absolute;top:0em;left:50%;transform:translate(-50%, -50%);width:3rem;height:2rem;font:6em/1.08em 'PT Sans', sans-serif;color:#2d96bd;text-align:center}.dark-theme .single .content blockquote::before{color:#55bde2}.single .content blockquote::after{content:"#blockquote" attr(cite);display:block;text-align:right;font-size:0.875em;color:#2d96bd}.dark-theme .single .content blockquote::after{color:#55bde2}.dark-theme .single .content blockquote{border-color:#4a4b50}.single .content .footnotes{color:#a9a9b3}.dark-theme .single .content .footnotes{color:#5d5d5f}.single .content code{font-size:13px;font-family:Source Code Pro,Menlo,Consolas,Monaco,monospace;padding:.2rem .4rem;color:#E74C3C}.dark-theme .single .content code{color:#E5BF78}.single .content code,.single .content pre,.single .content .highlight table,.single .content .highlight tr,.single .content .highlight td{background:#f5f5f5}.dark-theme .single .content code,.dark-theme .single .content pre,.dark-theme .single .content .highlight table,.dark-theme .single .content .highlight tr,.dark-theme .single .content .highlight td{background:#272C34}.single .content .highlight>.chroma{margin:1rem 0}.single .content .highlight>.chroma code,.single .content .highlight>.chroma pre{margin:0;padding:0}.single .content .highlight>.chroma::before{display:block;padding:.4rem;font-family:system,-apple-system,BlinkMacSystemFont,"PingFang SC","Segoe UI","Microsoft YaHei","wenquanyi micro hei","Hiragino Sans GB","Hiragino Sans GB W3","Roboto","Oxygen","Ubuntu","Cantarell","Fira Sans","Droid Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:bold;color:#b1b0b0;background:#ededed;content:'Code'}.dark-theme .single .content .highlight>.chroma::before{color:#b1b0b0;background:#20252b}.single .content .highlight>.chroma.language-bash::before{content:"Bash"}.single .content .highlight>.chroma.language-c::before{content:"C"}.single .content .highlight>.chroma.language-cs::before{content:"C#"}.single .content .highlight>.chroma.language-cpp::before{content:"C++"}.single .content .highlight>.chroma.language-clojure::before{content:"Clojure"}.single .content .highlight>.chroma.language-coffeescript::before{content:"CoffeeScript"}.single .content .highlight>.chroma.language-css::before{content:"CSS"}.single .content .highlight>.chroma.language-dart::before{content:"Dart"}.single .content .highlight>.chroma.language-diff::before{content:"Diff"}.single .content .highlight>.chroma.language-erlang::before{content:"Erlang"}.single .content .highlight>.chroma.language-go::before{content:"Go"}.single .content .highlight>.chroma.language-go-html-template::before{content:"Go HTML Template"}.single .content .highlight>.chroma.language-groovy::before{content:"Groovy"}.single .content .highlight>.chroma.language-haskell::before{content:"Haskell"}.single .content .highlight>.chroma.language-html::before{content:"HTML"}.single .content .highlight>.chroma.language-http::before{content:"HTTP"}.single .content .highlight>.chroma.language-xml::before{content:"XML"}.single .content .highlight>.chroma.language-java::before{content:"Java"}.single .content .highlight>.chroma.language-js::before{content:"JavaScript"}.single .content .highlight>.chroma.language-javascript::before{content:"JavaScript"}.single .content .highlight>.chroma.language-json::before{content:"JSON"}.single .content .highlight>.chroma.language-kotlin::before{content:"Kotlin"}.single .content .highlight>.chroma.language-latex::before{content:"LaTeX"}.single .content .highlight>.chroma.language-less::before{content:"Less"}.single .content .highlight>.chroma.language-lisp::before{content:"Lisp"}.single .content .highlight>.chroma.language-lua::before{content:"Lua"}.single .content .highlight>.chroma.language-makefile::before{content:"Makefile"}.single .content .highlight>.chroma.language-markdown::before{content:"Markdown"}.single .content .highlight>.chroma.language-matlab::before{content:"Matlab"}.single .content .highlight>.chroma.language-objectivec::before{content:"Objective-C"}.single .content .highlight>.chroma.language-php::before{content:"PHP"}.single .content .highlight>.chroma.language-perl::before{content:"Perl"}.single .content .highlight>.chroma.language-python::before{content:"Python"}.single .content .highlight>.chroma.language-r::before{content:"R"}.single .content .highlight>.chroma.language-ruby::before{content:"Ruby"}.single .content .highlight>.chroma.language-rust::before{content:"Rust"}.single .content .highlight>.chroma.language-scala::before{content:"Scala"}.single .content .highlight>.chroma.language-scss::before{content:"Scss"}.single .content .highlight>.chroma.language-shell::before{content:"Shell"}.single .content .highlight>.chroma.language-sql::before{content:"SQL"}.single .content .highlight>.chroma.language-swift::before{content:"Swift"}.single .content .highlight>.chroma.language-tex::before{content:"TeX"}.single .content .highlight>.chroma.language-toml::before{content:"TOML"}.single .content .highlight>.chroma.language-ts::before{content:"TypeScript"}.single .content .highlight>.chroma.language-typescript::before{content:"TypeScript"}.single .content .highlight>.chroma.language-vue::before{content:"Vue"}.single .content .highlight>.chroma.language-yml::before{content:"YAML"}.single .content .highlight>.chroma.language-yaml::before{content:"YAML"}.single .content .highlight>.chroma .ln{padding-right:.8rem}.single .content .highlight>.chroma .lntd:last-child .hl{display:block;background-color:#e8e8e8}.dark-theme .single .content .highlight>.chroma .lntd:last-child .hl{background-color:#1c2025}.single .content .highlight>.chroma .ln,.single .content .highlight>.chroma .lnt{color:#a9a9b3}.dark-theme .single .content .highlight>.chroma .ln,.dark-theme .single .content .highlight>.chroma .lnt{color:#5d5d5f}.single .content .highlight{font-family:Source Code Pro,Menlo,Consolas,Monaco,monospace;font-size:13px;line-height:18px}.single .content .highlight .c,.single .content .highlight .ch,.single .content .highlight .cm,.single .content .highlight .c1,.single .content .highlight .cs,.single .content .highlight .cp,.single .content .highlight .cpf{font-style:italic}.single .content .highlight .gl{text-decoration:underline}.single .content .highlight .p{color:#a9a9b3}.single .content .highlight .k{color:#b501a9}.single .content .highlight .kc{color:#b501a9}.single .content .highlight .kd{color:#b501a9}.single .content .highlight .kn{color:#b501a9}.single .content .highlight .kp{color:#b501a9}.single .content .highlight .kr{color:#b501a9}.single .content .highlight .kt{color:#b501a9}.single .content .highlight .n{color:#333}.single .content .highlight .na{color:#2b77fa}.single .content .highlight .nb{color:#f74840}.single .content .highlight .bp{color:#f74840}.single .content .highlight .nc{color:#cb8100}.single .content .highlight .no{color:#2b77fa}.single .content .highlight .nd{color:#0086c1}.single .content .highlight .ni{color:#2b77fa}.single .content .highlight .ne{color:#2b77fa}.single .content .highlight .nf{color:#2b77fa}.single .content .highlight .fm{color:#1ccad6}.single .content .highlight .nl{color:#2b77fa}.single .content .highlight .nn{color:#2b77fa}.single .content .highlight .nx{color:#333}.single .content .highlight .py{color:#2b77fa}.single .content .highlight .nt{color:#2b77fa}.single .content .highlight .nv{color:#2b77fa}.single .content .highlight .vc{color:#2b77fa}.single .content .highlight .vg{color:#2b77fa}.single .content .highlight .vi{color:#2b77fa}.single .content .highlight .vm{color:#2b77fa}.single .content .highlight .l{color:#2aa198}.single .content .highlight .ld{color:#2aa198}.single .content .highlight .s{color:#24a443}.single .content .highlight .sa{color:#24a443}.single .content .highlight .sb{color:#24a443}.single .content .highlight .sc{color:#24a443}.single .content .highlight .dl{color:#24a443}.single .content .highlight .sd{color:#24a443}.single .content .highlight .s2{color:#24a443}.single .content .highlight .se{color:#24a443}.single .content .highlight .sh{color:#24a443}.single .content .highlight .si{color:#24a443}.single .content .highlight .sx{color:#24a443}.single .content .highlight .sr{color:#24a443}.single .content .highlight .s1{color:#24a443}.single .content .highlight .ss{color:#24a443}.single .content .highlight .m{color:#e2893c}.single .content .highlight .mb{color:#e2893c}.single .content .highlight .mf{color:#e2893c}.single .content .highlight .mh{color:#e2893c}.single .content .highlight .mi{color:#e2893c}.single .content .highlight .il{color:#e2893c}.single .content .highlight .mo{color:#e2893c}.single .content .highlight .o{color:#f19b04}.single .content .highlight .ow{color:#b501a9}.single .content .highlight .c{color:#a0a1a8}.single .content .highlight .ch{color:#a0a1a8}.single .content .highlight .cm{color:#a0a1a8}.single .content .highlight .c1{color:#a0a1a8}.single .content .highlight .cs{color:#a0a1a8}.single .content .highlight .cp{color:#a0a1a8}.single .content .highlight .cpf{color:#a0a1a8}.single .content .highlight .g{color:#e72d40}.single .content .highlight .gd{color:#e72d40}.single .content .highlight .ge{color:#e72d40}.single .content .highlight .gr{color:#e72d40}.single .content .highlight .gh{color:#e72d40}.single .content .highlight .gi{color:#e72d40}.single .content .highlight .go{color:#e72d40}.single .content .highlight .gp{color:#e72d40}.single .content .highlight .gs{color:#e72d40}.single .content .highlight .gu{color:#e72d40}.single .content .highlight .gt{color:#e72d40}.single .content .highlight .w{color:#bbb}.dark-theme .single .content .highlight .p{color:#a9a9b3}.dark-theme .single .content .highlight .k{color:#d371e3}.dark-theme .single .content .highlight .kc{color:#d371e3}.dark-theme .single .content .highlight .kd{color:#d371e3}.dark-theme .single .content .highlight .kn{color:#d371e3}.dark-theme .single .content .highlight .kp{color:#d371e3}.dark-theme .single .content .highlight .kr{color:#d371e3}.dark-theme .single .content .highlight .kt{color:#d371e3}.dark-theme .single .content .highlight .n{color:#a9b2c0}.dark-theme .single .content .highlight .na{color:#41b0f5}.dark-theme .single .content .highlight .nb{color:#19b9c4}.dark-theme .single .content .highlight .bp{color:#ecbf6f}.dark-theme .single .content .highlight .nc{color:#ecbf6f}.dark-theme .single .content .highlight .no{color:#41b0f5}.dark-theme .single .content .highlight .nd{color:#ecbf6f}.dark-theme .single .content .highlight .ni{color:#41b0f5}.dark-theme .single .content .highlight .ne{color:#41b0f5}.dark-theme .single .content .highlight .nf{color:#41b0f5}.dark-theme .single .content .highlight .fm{color:#19b9c4}.dark-theme .single .content .highlight .nl{color:#41b0f5}.dark-theme .single .content .highlight .nn{color:#41b0f5}.dark-theme .single .content .highlight .nx{color:#a9a9b3}.dark-theme .single .content .highlight .py{color:#41b0f5}.dark-theme .single .content .highlight .nt{color:#41b0f5}.dark-theme .single .content .highlight .nv{color:#41b0f5}.dark-theme .single .content .highlight .vc{color:#41b0f5}.dark-theme .single .content .highlight .vg{color:#41b0f5}.dark-theme .single .content .highlight .vi{color:#41b0f5}.dark-theme .single .content .highlight .vm{color:#41b0f5}.dark-theme .single .content .highlight .l{color:#2aa198}.dark-theme .single .content .highlight .ld{color:#2aa198}.dark-theme .single .content .highlight .s{color:#8cc570}.dark-theme .single .content .highlight .sa{color:#8cc570}.dark-theme .single .content .highlight .sb{color:#8cc570}.dark-theme .single .content .highlight .sc{color:#8cc570}.dark-theme .single .content .highlight .dl{color:#8cc570}.dark-theme .single .content .highlight .sd{color:#8cc570}.dark-theme .single .content .highlight .s2{color:#8cc570}.dark-theme .single .content .highlight .se{color:#8cc570}.dark-theme .single .content .highlight .sh{color:#8cc570}.dark-theme .single .content .highlight .si{color:#8cc570}.dark-theme .single .content .highlight .sx{color:#8cc570}.dark-theme .single .content .highlight .sr{color:#8cc570}.dark-theme .single .content .highlight .s1{color:#8cc570}.dark-theme .single .content .highlight .ss{color:#8cc570}.dark-theme .single .content .highlight .m{color:#db985c}.dark-theme .single .content .highlight .mb{color:#db985c}.dark-theme .single .content .highlight .mf{color:#db985c}.dark-theme .single .content .highlight .mh{color:#db985c}.dark-theme .single .content .highlight .mi{color:#db985c}.dark-theme .single .content .highlight .il{color:#db985c}.dark-theme .single .content .highlight .mo{color:#db985c}.dark-theme .single .content .highlight .o{color:#ecbf6f}.dark-theme .single .content .highlight .ow{color:#d371e3}.dark-theme .single .content .highlight .c{color:#7e848f}.dark-theme .single .content .highlight .ch{color:#7e848f}.dark-theme .single .content .highlight .cm{color:#7e848f}.dark-theme .single .content .highlight .c1{color:#7e848f}.dark-theme .single .content .highlight .cs{color:#7e848f}.dark-theme .single .content .highlight .cp{color:#7e848f}.dark-theme .single .content .highlight .cpf{color:#7e848f}.dark-theme .single .content .highlight .g{color:#f16372}.dark-theme .single .content .highlight .gd{color:#f16372}.dark-theme .single .content .highlight .ge{color:#f16372}.dark-theme .single .content .highlight .gr{color:#f16372}.dark-theme .single .content .highlight .gh{color:#f16372}.dark-theme .single .content .highlight .gi{color:#f16372}.dark-theme .single .content .highlight .go{color:#f16372}.dark-theme .single .content .highlight .gp{color:#f16372}.dark-theme .single .content .highlight .gs{color:#f16372}.dark-theme .single .content .highlight .gu{color:#f16372}.dark-theme .single .content .highlight .gt{color:#f16372}.dark-theme .single .content .highlight .w{color:#bbb}.single .content .highlight>.chroma table,.single .content .highlight>.chroma tr,.single .content .highlight>.chroma td,.single .content .gist table,.single .content .gist tr,.single .content .gist td{margin:0;border:none !important;white-space:nowrap}.single .content .highlight>.chroma td,.single .content .gist td{padding:.2rem .4rem}.single .content .gist .gist-file,.single .content .gist .gist-data,.single .content .gist .gist-meta{border:none}.single .content .gist .gist-meta{padding:.4rem .8rem;background-color:#e8e8e8}.single .content .gist .gist-meta a{color:#2d96bd}.dark-theme .single .content .gist .gist-meta a{color:#55bde2}.single .content .gist .gist-meta a:active,.single .content .gist .gist-meta a:hover{color:#ef3982}.dark-theme .single .content .gist .gist-meta a:active,.dark-theme .single .content .gist .gist-meta a:hover{color:#bdebfc}.dark-theme .single .content .gist .gist-meta{background-color:#1c2025}.dark-theme .single .content .gist .highlight{background:#141414}.dark-theme .single .content .gist .blob-num,.dark-theme .single .content .gist .blob-code-inner,.dark-theme .single .content .gist .highlight,.dark-theme .single .content .gist .pl-enm,.dark-theme .single .content .gist .pl-ko,.dark-theme .single .content .gist .pl-mo,.dark-theme .single .content .gist .pl-mp1 .pl-sf,.dark-theme .single .content .gist .pl-ms,.dark-theme .single .content .gist .pl-pdc1,.dark-theme .single .content .gist .pl-scp,.dark-theme .single .content .gist .pl-smc,.dark-theme .single .content .gist .pl-som,.dark-theme .single .content .gist .pl-va,.dark-theme .single .content .gist .pl-vpf,.dark-theme .single .content .gist .pl-vpu,.dark-theme .single .content .gist .pl-mdr{color:#aab1bf}.dark-theme .single .content .gist .pl-mb,.dark-theme .single .content .gist .pl-pdb{font-weight:700}.dark-theme .single .content .gist .pl-c,.dark-theme .single .content .gist .pl-c span,.dark-theme .single .content .gist .pl-pdc{color:#5b6270;font-style:italic}.dark-theme .single .content .gist .pl-sr .pl-cce{color:#56b5c2;font-weight:400}.dark-theme .single .content .gist .pl-ef,.dark-theme .single .content .gist .pl-en,.dark-theme .single .content .gist .pl-enf,.dark-theme .single .content .gist .pl-eoai,.dark-theme .single .content .gist .pl-kos,.dark-theme .single .content .gist .pl-mh .pl-pdh,.dark-theme .single .content .gist .pl-mr{color:#61afef}.dark-theme .single .content .gist .pl-ens,.dark-theme .single .content .gist .pl-vi{color:#be5046}.dark-theme .single .content .gist .pl-enti,.dark-theme .single .content .gist .pl-mai .pl-sf,.dark-theme .single .content .gist .pl-ml,.dark-theme .single .content .gist .pl-sf,.dark-theme .single .content .gist .pl-sr,.dark-theme .single .content .gist .pl-sr .pl-sra,.dark-theme .single .content .gist .pl-src,.dark-theme .single .content .gist .pl-st,.dark-theme .single .content .gist .pl-vo{color:#56b5c2}.dark-theme .single .content .gist .pl-eoi,.dark-theme .single .content .gist .pl-mri,.dark-theme .single .content .gist .pl-pds,.dark-theme .single .content .gist .pl-pse .pl-s1,.dark-theme .single .content .gist .pl-s,.dark-theme .single .content .gist .pl-s1{color:#97c279}.dark-theme .single .content .gist .pl-k,.dark-theme .single .content .gist .pl-kolp,.dark-theme .single .content .gist .pl-mc,.dark-theme .single .content .gist .pl-pde{color:#c578dd}.dark-theme .single .content .gist .pl-mi,.dark-theme .single .content .gist .pl-pdi{color:#c578dd;font-style:italic}.dark-theme .single .content .gist .pl-mp,.dark-theme .single .content .gist .pl-stp{color:#818896}.dark-theme .single .content .gist .pl-mdh,.dark-theme .single .content .gist .pl-mdi,.dark-theme .single .content .gist .pl-mdr{font-weight:400}.dark-theme .single .content .gist .pl-mdht,.dark-theme .single .content .gist .pl-mi1{color:#97c279;background:#020}.dark-theme .single .content .gist .pl-md,.dark-theme .single .content .gist .pl-mdhf{color:#df6b75;background:#200}.dark-theme .single .content .gist .pl-corl{color:#df6b75;text-decoration:underline}.dark-theme .single .content .gist .pl-ib{background:#df6b75}.dark-theme .single .content .gist .pl-ii{background:#e0c184;color:#fff}.dark-theme .single .content .gist .pl-iu{background:#e05151}.dark-theme .single .content .gist .pl-ms1{color:#aab1bf;background:#373b41}.dark-theme .single .content .gist .pl-c1,.dark-theme .single .content .gist .pl-cn,.dark-theme .single .content .gist .pl-e,.dark-theme .single .content .gist .pl-eoa,.dark-theme .single .content .gist .pl-eoac,.dark-theme .single .content .gist .pl-eoac .pl-pde,.dark-theme .single .content .gist .pl-kou,.dark-theme .single .content .gist .pl-mm,.dark-theme .single .content .gist .pl-mp .pl-s3,.dark-theme .single .content .gist .pl-mq,.dark-theme .single .content .gist .pl-s3,.dark-theme .single .content .gist .pl-sok,.dark-theme .single .content .gist .pl-sv,.dark-theme .single .content .gist .pl-mb{color:#d19965}.dark-theme .single .content .gist .pl-enc,.dark-theme .single .content .gist .pl-entc,.dark-theme .single .content .gist .pl-pse .pl-s2,.dark-theme .single .content .gist .pl-s2,.dark-theme .single .content .gist .pl-sc,.dark-theme .single .content .gist .pl-smp,.dark-theme .single .content .gist .pl-sr .pl-sre,.dark-theme .single .content .gist .pl-stj,.dark-theme .single .content .gist .pl-v,.dark-theme .single .content .gist .pl-pdb{color:#e4bf7a}.dark-theme .single .content .gist .pl-ent,.dark-theme .single .content .gist .pl-entl,.dark-theme .single .content .gist .pl-entm,.dark-theme .single .content .gist .pl-mh,.dark-theme .single .content .gist .pl-pdv,.dark-theme .single .content .gist .pl-smi,.dark-theme .single .content .gist .pl-sol,.dark-theme .single .content .gist .pl-mdh,.dark-theme .single .content .gist .pl-mdi{color:#df6b75}.dark-theme .single .content iframe.instagram-media{border:none !important}.single .content .admonition{position:relative;margin:.9765em 0;padding:0 .75rem;background-color:rgba(68,138,255,0.1);border-left:0.25rem solid #448aff;overflow:auto}.single .content .admonition .admonition-title{margin:0 -0.75rem;padding:.2rem .75rem .2rem 1.8rem;border-bottom:0.05rem solid rgba(68,138,255,0.1);background-color:rgba(68,138,255,0.1)}.single .content .admonition .admonition-content{margin:.5rem 0}.single .content .admonition i.icon{font-size:0.85rem;color:#448aff;cursor:auto;position:absolute;left:.6rem;top:.6rem}.single .content .admonition.note{border-left-color:#448aff}.single .content .admonition.note i.icon{color:#448aff}.single .content .admonition.abstract{border-left-color:#00b0ff}.single .content .admonition.abstract i.icon{color:#00b0ff}.single .content .admonition.info{border-left-color:#00b8d4}.single .content .admonition.info i.icon{color:#00b8d4}.single .content .admonition.tip{border-left-color:#00bfa5}.single .content .admonition.tip i.icon{color:#00bfa5}.single .content .admonition.success{border-left-color:#00c853}.single .content .admonition.success i.icon{color:#00c853}.single .content .admonition.question{border-left-color:#64dd17}.single .content .admonition.question i.icon{color:#64dd17}.single .content .admonition.warning{border-left-color:#ff9100}.single .content .admonition.warning i.icon{color:#ff9100}.single .content .admonition.failure{border-left-color:#ff5252}.single .content .admonition.failure i.icon{color:#ff5252}.single .content .admonition.danger{border-left-color:#ff1744}.single .content .admonition.danger i.icon{color:#ff1744}.single .content .admonition.bug{border-left-color:#f50057}.single .content .admonition.bug i.icon{color:#f50057}.single .content .admonition.example{border-left-color:#651fff}.single .content .admonition.example i.icon{color:#651fff}.single .content .admonition.quote{border-left-color:#9e9e9e}.single .content .admonition.quote i.icon{color:#9e9e9e}.single .content .admonition.note{background-color:rgba(68,138,255,0.1)}.single .content .admonition.note .admonition-title{border-bottom-color:rgba(68,138,255,0.1);background-color:rgba(68,138,255,0.1)}.single .content .admonition.abstract{background-color:rgba(0,176,255,0.1)}.single .content .admonition.abstract .admonition-title{border-bottom-color:rgba(0,176,255,0.1);background-color:rgba(0,176,255,0.1)}.single .content .admonition.info{background-color:rgba(0,184,212,0.1)}.single .content .admonition.info .admonition-title{border-bottom-color:rgba(0,184,212,0.1);background-color:rgba(0,184,212,0.1)}.single .content .admonition.tip{background-color:rgba(0,191,165,0.1)}.single .content .admonition.tip .admonition-title{border-bottom-color:rgba(0,191,165,0.1);background-color:rgba(0,191,165,0.1)}.single .content .admonition.success{background-color:rgba(0,200,83,0.1)}.single .content .admonition.success .admonition-title{border-bottom-color:rgba(0,200,83,0.1);background-color:rgba(0,200,83,0.1)}.single .content .admonition.question{background-color:rgba(100,221,23,0.1)}.single .content .admonition.question .admonition-title{border-bottom-color:rgba(100,221,23,0.1);background-color:rgba(100,221,23,0.1)}.single .content .admonition.warning{background-color:rgba(255,145,0,0.1)}.single .content .admonition.warning .admonition-title{border-bottom-color:rgba(255,145,0,0.1);background-color:rgba(255,145,0,0.1)}.single .content .admonition.failure{background-color:rgba(255,82,82,0.1)}.single .content .admonition.failure .admonition-title{border-bottom-color:rgba(255,82,82,0.1);background-color:rgba(255,82,82,0.1)}.single .content .admonition.danger{background-color:rgba(255,23,68,0.1)}.single .content .admonition.danger .admonition-title{border-bottom-color:rgba(255,23,68,0.1);background-color:rgba(255,23,68,0.1)}.single .content .admonition.bug{background-color:rgba(245,0,87,0.1)}.single .content .admonition.bug .admonition-title{border-bottom-color:rgba(245,0,87,0.1);background-color:rgba(245,0,87,0.1)}.single .content .admonition.example{background-color:rgba(101,31,255,0.1)}.single .content .admonition.example .admonition-title{border-bottom-color:rgba(101,31,255,0.1);background-color:rgba(101,31,255,0.1)}.single .content .admonition.quote{background-color:rgba(158,158,158,0.1)}.single .content .admonition.quote .admonition-title{border-bottom-color:rgba(158,158,158,0.1);background-color:rgba(158,158,158,0.1)}.single .content .admonition:last-child{margin-bottom:.75rem}.single .content details.admonition summary{display:block;outline:none;cursor:pointer}.single .content details.admonition summary::-webkit-details-marker{display:none}.single .content details.admonition summary i.details{position:absolute;top:.5rem;right:.5rem;color:#161209}.dark-theme .single .content details.admonition summary i.details{color:#a9a9b3}.single .content details.admonition[open] i.details{transform:rotate(180deg)}.single .content .echarts{width:100%;height:30rem;margin:3% auto;text-align:center}.single .content .bilibili{position:relative;width:100%;height:0;padding-bottom:75%;margin:3% auto;text-align:center}.single .content .bilibili iframe{position:absolute;width:100%;height:100%;left:0;top:0}.single .content hr{margin:1rem 0;position:relative;border-top:1px dashed #dcdcdc;border-bottom:none}.dark-theme .single .content hr{border-top:1px dashed #4a4b50}.single .content kbd{display:inline-block;padding:.25rem;background-color:#fff;border:1px solid #dcdcdc;border-bottom-color:#dcdcdc;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 #dcdcdc;box-shadow:inset 0 -1px 0 #dcdcdc;font-size:.8rem;font-family:Source Code Pro,Menlo,Consolas,Monaco,monospace;color:#E74C3C}.dark-theme .single .content kbd{background-color:#292a2d;border:1px solid #4a4b50;border-bottom-color:#4a4b50;-webkit-box-shadow:inset 0 -1px 0 #4a4b50;box-shadow:inset 0 -1px 0 #4a4b50;color:#E5BF78}.single .content .typeit .code{padding:.375rem;font-size:.875rem;font-family:Source Code Pro,Menlo,Consolas,Monaco,monospace;font-weight:bold;word-break:break-all}.single .content .version{font-weight:bold;font-style:normal;color:#df1a08}.dark-theme .single .content .version{color:#fff}.single .post-footer{margin-top:3rem}.single .post-footer .post-info{border-bottom:1px solid #dcdcdc;padding:1rem 0 0.3rem}.dark-theme .single .post-footer .post-info{border-bottom:1px solid #4a4b50}.single .post-footer .post-info .post-info-line{display:flex;justify-content:space-between}.single .post-footer .post-info .post-info-line .post-info-mod{font-size:0.8em;color:#a9a9b3}.dark-theme .single .post-footer .post-info .post-info-line .post-info-mod{color:#5d5d5f}.single .post-footer .post-info .post-info-line .post-info-mod a{color:#2d96bd}.dark-theme .single .post-footer .post-info .post-info-line .post-info-mod a{color:#55bde2}.single .post-footer .post-info .post-info-line .post-info-mod a:active,.single .post-footer .post-info .post-info-line .post-info-mod a:hover{color:#ef3982}.dark-theme .single .post-footer .post-info .post-info-line .post-info-mod a:active,.dark-theme .single .post-footer .post-info .post-info-line .post-info-mod a:hover{color:#bdebfc}.single .post-footer .post-info .post-info-line .post-info-license{font-size:0.8em;color:#a9a9b3}.dark-theme .single .post-footer .post-info .post-info-line .post-info-license{color:#5d5d5f}.single .post-footer .post-info .post-info-line .post-info-md{font-size:0.8rem;width:8rem}.single .post-footer .post-info .post-info-line .post-info-md a{color:#2d96bd}.dark-theme .single .post-footer .post-info .post-info-line .post-info-md a{color:#55bde2}.single .post-footer .post-info .post-info-line .post-info-md a:active,.single .post-footer .post-info .post-info-line .post-info-md a:hover{color:#ef3982}.dark-theme .single .post-footer .post-info .post-info-line .post-info-md a:active,.dark-theme .single .post-footer .post-info .post-info-line .post-info-md a:hover{color:#bdebfc}.single .post-footer .post-info-more{padding:0.3rem 0 1rem;display:flex;justify-content:space-between;font-size:0.9rem}.single .post-footer .post-tags{max-width:65%}.single .post-footer .post-tags *{display:inline}.single .post-footer .post-nav::before,.single .post-footer .post-nav::after{content:' ';display:table}.single .post-footer .post-nav a.prev,.single .post-footer .post-nav a.next{font-size:1rem;font-weight:600;-webkit-transition:all ease-out .3s;-moz-transition:all ease-out .3s;-o-transition:all ease-out .3s;transition:all ease-out .3s}.single .post-footer .post-nav a.prev{float:left}.single .post-footer .post-nav a.prev:hover{-webkit-transform:translateX(-4px);-moz-transform:translateX(-4px);-ms-transform:translateX(-4px);-o-transform:translateX(-4px);transform:translateX(-4px)}.single .post-footer .post-nav a.next{float:right}.single .post-footer .post-nav a.next:hover{-webkit-transform:translateX(4px);-moz-transform:translateX(4px);-ms-transform:translateX(4px);-o-transform:translateX(4px);transform:translateX(4px)}.single .comment{padding:4rem 0}.special .single-title,.special .single-subtitle{text-align:right}.archive .single-title{text-align:right}.archive .archive-item{margin-left:2rem}.archive .categories-card{margin:0 auto;margin-top:3rem;display:flex;align-items:center;justify-content:space-between;flex-direction:row;flex-wrap:wrap;padding:0 2.5rem;line-height:1.6rem}.archive .categories-card .card-item{font-size:.875rem;text-align:left;width:45%;display:flex;align-items:flex-start;margin-top:2rem;min-height:10rem;padding:0 2%;position:relative}.archive .categories-card .card-item .card-item-wrapper{width:100%;overflow:hidden}.archive .categories-card .card-item .card-item-wrapper .card-item-title{font-size:1.2rem;font-weight:bold;display:inline-block}.archive .categories-card .card-item .card-item-wrapper span{float:right;padding-right:1rem}.archive .archive-item-link{display:inline-block;text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:95%}.archive .archive-item-link:hover{color:#2d96bd;background-color:transparent}.dark-theme .archive .archive-item-link{color:#a9a9b3;text-decoration:none;transition:color 0.2s ease, border-color 0.2s ease, background 0.2s ease, opacity 0.2s ease}.dark-theme .archive .archive-item-link:hover{color:#fff;text-decoration:none;transition:color 0.2s ease, border-color 0.2s ease, background 0.2s ease, opacity 0.2s ease}.archive .archive-item-date{float:right;text-align:right;color:#a9a9b3}.dark-theme .archive .archive-item-date{color:#5d5d5f}.archive .more-post{text-align:right}.archive .tag-cloud-tags{margin:10px 0}.archive .tag-cloud-tags a{color:#161209}.dark-theme .archive .tag-cloud-tags a{color:#a9a9b3}.archive .tag-cloud-tags a:active,.archive .tag-cloud-tags a:hover{color:#2d96bd}.dark-theme .archive .tag-cloud-tags a:active,.dark-theme .archive .tag-cloud-tags a:hover{color:#fff}.archive .tag-cloud-tags a{display:inline-block;position:relative;margin:5px 10px;overflow-wrap:break-word;-webkit-transition:all ease-out .3s;-moz-transition:all ease-out .3s;-o-transition:all ease-out .3s;transition:all ease-out .3s}.archive .tag-cloud-tags a:active,.archive .tag-cloud-tags a:focus,.archive .tag-cloud-tags a:hover{-webkit-transform:scale(1.2);-moz-transform:scale(1.2);-ms-transform:scale(1.2);-o-transform:scale(1.2);transform:scale(1.2)}.archive .tag-cloud-tags a small{color:#a9a9b3}.dark-theme .archive .tag-cloud-tags a small{color:#5d5d5f}.home .home-profile{-webkit-transform:translateY(0);-moz-transform:translateY(0);-ms-transform:translateY(0);-o-transform:translateY(0);transform:translateY(0);padding:2rem 0 0.5rem;text-align:center}.home .home-profile .home-avatar{padding:0.6rem}.home .home-profile .home-avatar img{width:6rem;height:auto;display:inline-block;-webkit-border-radius:100%;border-radius:100%;-webkit-box-shadow:0 0 0 0.3618em rgba(0,0,0,0.05);box-shadow:0 0 0 0.3618em rgba(0,0,0,0.05);margin:0 auto;-webkit-transition:all ease 0.4s;-moz-transition:all ease 0.4s;-o-transition:all ease 0.4s;transition:all ease 0.4s;cursor:pointer}.home .home-profile .home-avatar img:hover{position:relative;-webkit-transform:translateY(-0.75rem);-moz-transform:translateY(-0.75rem);-ms-transform:translateY(-0.75rem);-o-transform:translateY(-0.75rem);transform:translateY(-0.75rem);cursor:pointer}.home .home-profile .home-subtitle{font-size:1rem;font-weight:normal;margin:0;padding:.4rem}.home .home-profile .social-links{padding:.4rem 0}.home .home-profile .social-links a,.home .home-profile .social-links i{font-size:1.6rem;line-height:2rem}.home .home-profile .social-links img{height:1.4rem;padding:0 .25rem}.home .home-profile .home-disclaimer{font-size:1rem;line-height:1.4rem;font-weight:normal;margin:0;padding:.4rem;color:#a9a9b3}.dark-theme .home .home-profile .home-disclaimer{color:#5d5d5f}.home .summary{padding-top:1rem;padding-bottom:.8rem;color:#161209;border-bottom:1px dashed #dcdcdc}.dark-theme .home .summary{color:#a9a9b3;border-bottom:1px dashed #4a4b50}.home .summary .featured-image-preview{width:100%;padding:30% 0 0;position:relative;margin:0.6rem auto}.home .summary .featured-image-preview img{position:absolute;width:100%;height:100%;left:0;top:0;object-fit:cover}.home .summary .single-title{font-size:1.4rem;line-height:140%;margin:0.4rem 0}.home .summary .content{display:-moz-box;display:-webkit-box;-moz-box-orient:vertical;-webkit-box-orient:vertical;-webkit-line-clamp:3;margin-top:.3rem;width:100%;overflow:hidden;text-overflow:ellipsis;overflow-wrap:break-word;color:#a9a9b3}.dark-theme .home .summary .content{color:#5d5d5f}.home .summary .content h2,.home .summary .content h3,.home .summary .content h4,.home .summary .content h5,.home .summary .content h6,.home .summary .content p{font-size:1rem;display:inline}.home .summary .content h2::after,.home .summary .content h3::after,.home .summary .content h4::after,.home .summary .content h5::after,.home .summary .content h6::after,.home .summary .content p::after{content:"\A";white-space:pre}.home .summary .content h2,.home .summary .content h3,.home .summary .content h4,.home .summary .content h5,.home .summary .content h6{line-height:2}.home .summary .content h2::before,.home .summary .content h3::before,.home .summary .content h4::before,.home .summary .content h5::before,.home .summary .content h6::before{content:"|";margin-right:.3125rem;color:#161209}.dark-theme .home .summary .content h2::before,.dark-theme .home .summary .content h3::before,.dark-theme .home .summary .content h4::before,.dark-theme .home .summary .content h5::before,.dark-theme .home .summary .content h6::before{color:#a9a9b3}.home .summary .content h2{font-size:1.2rem}.home .summary .content h2::before{content:"#"}.home .summary .content a{color:#161209}.dark-theme .home .summary .content a{color:#a9a9b3}.home .summary .content a:active,.home .summary .content a:hover{color:#2d96bd}.dark-theme .home .summary .content a:active,.dark-theme .home .summary .content a:hover{color:#fff}.dark-theme .home .summary .content b,.dark-theme .home .summary .content strong{color:#5d5d5f}.home .summary .post-footer{margin-top:.4rem;display:flex;justify-content:space-between;align-items:center;font-size:.875rem}.home .summary .post-footer a{color:#2d96bd}.dark-theme .home .summary .post-footer a{color:#55bde2}.home .summary .post-footer a:active,.home .summary .post-footer a:hover{color:#ef3982}.dark-theme .home .summary .post-footer a:active,.dark-theme .home .summary .post-footer a:hover{color:#bdebfc}.home .summary .post-footer .post-tags{padding:0}.home .summary .post-footer .post-tags a{color:#161209}.dark-theme .home .summary .post-footer .post-tags a{color:#a9a9b3}.home .summary .post-footer .post-tags a:active,.home .summary .post-footer .post-tags a:hover{color:#2d96bd}.dark-theme .home .summary .post-footer .post-tags a:active,.dark-theme .home .summary .post-footer .post-tags a:hover{color:#fff}#content-404{font-size:1.8rem;line-height:3rem;transform:translateY(30vh);text-align:center}header{width:100%;z-index:100;background-color:#f8f8f8}.dark-theme header{background-color:#252627}header .header-title{font-family:"Nunito",system,-apple-system,BlinkMacSystemFont,"PingFang SC","Segoe UI","Microsoft YaHei","wenquanyi micro hei","Hiragino Sans GB","Hiragino Sans GB W3","Roboto","Oxygen","Ubuntu","Cantarell","Fira Sans","Droid Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:bold;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}header .menu .menu-item{position:relative}header .language-select{position:absolute;opacity:0;left:0;top:0;width:100%;height:100%}header .language-select:hover{cursor:pointer}header .theme-switch i{-webkit-transform:rotate(225deg);-moz-transform:rotate(225deg);-ms-transform:rotate(225deg);-o-transform:rotate(225deg);transform:rotate(225deg)}#header-desktop{display:block;position:fixed;height:3.5rem;line-height:3.5rem}#header-desktop .header-wrapper{width:auto;text-align:center;padding:0 3%;display:flex;justify-content:space-between}#header-desktop .header-wrapper .header-title{font-size:1.5rem;max-width:30%}#header-desktop .header-wrapper .menu{overflow:hidden;white-space:nowrap}#header-desktop .header-wrapper .menu .menu-item{margin:0 .5rem}#header-desktop .header-wrapper .menu .menu-item.theme-switch{margin:0 .3rem}#header-desktop .header-wrapper .menu a.active{font-weight:900;color:#161209}.dark-theme #header-desktop .header-wrapper .menu a.active{color:#fff}#header-mobile{display:none;position:fixed;height:3.5rem;line-height:3.5rem}#header-mobile .header-wrapper{padding:0;margin:0;transition:all 0.3s ease 0s}#header-mobile .header-wrapper .header-container{display:flex;justify-content:space-between;align-items:center;width:100%;font-size:1.125rem;padding-right:1rem;padding-left:1rem;box-sizing:border-box}#header-mobile .header-wrapper .header-container .header-title{max-width:80%;font-size:1.5rem}#header-mobile .header-wrapper .header-container .menu-toggle{cursor:pointer;line-height:4rem}#header-mobile .header-wrapper .header-container .menu-toggle span{display:block;background:#161209;width:1.5rem;height:2px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-transition:.1s margin .1s, .1s transform;-moz-transition:.1s margin .1s, .1s transform;-o-transition:.1s margin .1s, .1s transform;transition:.1s margin .1s, .1s transform}.dark-theme #header-mobile .header-wrapper .header-container .menu-toggle span{background:#a9a9b3}#header-mobile .header-wrapper .header-container .menu-toggle span:nth-child(1){margin-bottom:.5rem}#header-mobile .header-wrapper .header-container .menu-toggle span:nth-child(3){margin-top:.5rem}#header-mobile .header-wrapper .header-container .menu-toggle.active span{-webkit-transition:.1s margin, .1s transform .1s;-moz-transition:.1s margin, .1s transform .1s;-o-transition:.1s margin, .1s transform .1s;transition:.1s margin, .1s transform .1s}#header-mobile .header-wrapper .header-container .menu-toggle.active span:nth-child(1){-webkit-transform:rotate(45deg) translate(0.4rem, 0.5rem);-moz-transform:rotate(45deg) translate(0.4rem, 0.5rem);-ms-transform:rotate(45deg) translate(0.4rem, 0.5rem);-o-transform:rotate(45deg) translate(0.4rem, 0.5rem);transform:rotate(45deg) translate(0.4rem, 0.5rem)}#header-mobile .header-wrapper .header-container .menu-toggle.active span:nth-child(2){opacity:0}#header-mobile .header-wrapper .header-container .menu-toggle.active span:nth-child(3){-moz-transform:rotate(-45deg) translate(0.4rem, -0.5rem);-ms-transform:rotate(-45deg) translate(0.4rem, -0.5rem);-webkit-transform:rotate(-45deg) translate(0.4rem, -0.5rem);-o-transform:rotate(-45deg) translate(0.4rem, -0.5rem);transform:rotate(-45deg) translate(0.4rem, -0.5rem)}#header-mobile .header-wrapper .menu{text-align:center;background:#fff;border-top:2px solid #161209;display:none;box-shadow:0px 2px 4px rgba(0,0,0,0.1),0px 4px 8px rgba(0,0,0,0.1)}#header-mobile .header-wrapper .menu a{display:block;line-height:2.5rem}#header-mobile .header-wrapper .menu.active{display:block}.dark-theme #header-mobile .header-wrapper .menu{background:#292a2d;border-top:2px solid #a9a9b3}.copyright{font-size:.875rem}.copyright .copyright-line{width:100%}.copyright .copyright-line .icp-br{display:none}.pagination{display:flex;flex-direction:row;justify-content:center;list-style:none;white-space:nowrap;width:100%;padding:1rem 0 0}.pagination a{-webkit-font-smoothing:antialiased;font-size:.8rem;color:#bfbfbf;letter-spacing:.1rem;font-weight:700;padding:5px 5px;text-decoration:none;transition:0.3s}.pagination li{padding-bottom:3px;margin:0 20px;box-sizing:border-box;position:relative;display:inline}.pagination li.disabled{display:none}.pagination li:hover a{color:#000}.dark-theme .pagination li:hover a{color:#fff}.pagination li:before,.pagination li:after{position:absolute;content:"";width:0;height:3px;background:#000;transition:0.3s;bottom:0px}.dark-theme .pagination li:before,.dark-theme .pagination li:after{background:#fff}.pagination li:before .active,.pagination li:after .active{width:100%}.pagination li:before{left:50%}.pagination li:after{right:50%}.pagination li:hover:before,.pagination li:hover:after{width:50%}.pagination li.active a{color:#000}.dark-theme .pagination li.active a{color:#fff}.pagination li.active:before,.pagination li.active:after{width:60%}@media only screen and (max-width: 1440px){.page{max-width:56%}}@media only screen and (max-width: 1200px){.page{max-width:52%}}@media only screen and (max-width: 960px){.page{max-width:80%}.page #toc-auto{display:none}.page #toc-static{display:block}}@media only screen and (max-width: 680px){#header-desktop{display:none}#header-mobile{display:block}.page{max-width:100%;padding-top:3.5rem}.page .categories-card .card-item{width:100%}.copyright .copyright-line .icp-splitter{display:none}.copyright .copyright-line .icp-br{display:block}} /*# sourceMappingURL=style.min.css.map */ \ No newline at end of file