Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/uPagge/uBlogger.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDillon <dillonzq@outlook.com>2020-03-19 07:35:37 +0300
committerGitHub <noreply@github.com>2020-03-19 07:35:37 +0300
commit774e831a210e44aeca9848eb0d636aae5af009dd (patch)
tree317e02755f373860127d0aa783f84d1b0f0c16da
parent84d48f37dcf35e9f414445e1eed3489c674fe1af (diff)
feat(shortcode): refactor and improve image shortcode (#187)
-rw-r--r--assets/css/_page/_single.scss32
-rw-r--r--assets/svg/loading.small.svg8
-rw-r--r--exampleSite/config.toml16
-rw-r--r--exampleSite/content/posts/theme-documentation-basics.en.md10
-rw-r--r--exampleSite/content/posts/theme-documentation-basics.fr.md10
-rw-r--r--exampleSite/content/posts/theme-documentation-basics.zh-cn.md6
-rw-r--r--exampleSite/content/posts/theme-documentation-shortcodes.en.md278
-rw-r--r--exampleSite/content/posts/theme-documentation-shortcodes.fr.md280
-rw-r--r--exampleSite/content/posts/theme-documentation-shortcodes.zh-cn.md205
-rw-r--r--layouts/_default/_markup/render-image.html4
-rw-r--r--layouts/_default/summary.html2
-rw-r--r--layouts/partials/home/profile.html4
-rw-r--r--layouts/partials/plugin/image.html22
-rw-r--r--layouts/posts/single.html2
-rw-r--r--layouts/shortcodes/image.html40
-rw-r--r--layouts/shortcodes/link.html8
-rw-r--r--resources/_gen/assets/scss/css/style.template.scss_90197bdac482216ecaaaae0fb88517c1.content2
17 files changed, 650 insertions, 279 deletions
diff --git a/assets/css/_page/_single.scss b/assets/css/_page/_single.scss
index dec3d75..fa25f94 100644
--- a/assets/css/_page/_single.scss
+++ b/assets/css/_page/_single.scss
@@ -48,6 +48,38 @@
@import "../_partial/_single/toc";
.content {
+ > h2 {
+ font-size: 1.5rem;
+
+ & code {
+ font-size: 1.25rem;
+ }
+ }
+
+ > h3 {
+ font-size: 1.375rem;
+
+ & code {
+ font-size: 1.125rem;
+ }
+ }
+
+ > h4 {
+ font-size: 1.25rem;
+
+ & code {
+ font-size: 1rem;
+ }
+ }
+
+ > h5 {
+ font-size: 1.125rem;
+ }
+
+ > h6 {
+ font-size: 1rem;
+ }
+
h2,
h3,
h4,
diff --git a/assets/svg/loading.small.svg b/assets/svg/loading.small.svg
index ef1694d..f406250 100644
--- a/assets/svg/loading.small.svg
+++ b/assets/svg/loading.small.svg
@@ -2,9 +2,9 @@
<svg width="69" height="69" viewBox="-31 -31 100 100" xmlns="http://www.w3.org/2000/svg">
<defs>
<linearGradient x1="8.042%" y1="0%" x2="65.682%" y2="23.865%" id="a">
- <stop stop-color="#fff" stop-opacity="0" offset="0%"/>
- <stop stop-color="#fff" stop-opacity=".631" offset="63.146%"/>
- <stop stop-color="#fff" offset="100%"/>
+ <stop stop-color="#a5a5a5" stop-opacity="0" offset="0%"/>
+ <stop stop-color="#a5a5a5" stop-opacity=".631" offset="63.146%"/>
+ <stop stop-color="#a5a5a5" offset="100%"/>
</linearGradient>
</defs>
<g fill="none" fill-rule="evenodd">
@@ -18,7 +18,7 @@
dur="0.9s"
repeatCount="indefinite" />
</path>
- <circle fill="#fff" cx="36" cy="18" r="1">
+ <circle fill="#a5a5a5" cx="36" cy="18" r="1">
<animateTransform
attributeName="transform"
type="rotate"
diff --git a/exampleSite/config.toml b/exampleSite/config.toml
index 151dce7..489a8c5 100644
--- a/exampleSite/config.toml
+++ b/exampleSite/config.toml
@@ -44,7 +44,7 @@ enableEmoji = true
[languages.en.menu]
[[languages.en.menu.main]]
identifier = "posts"
- # you can add extra information before the name (HTML format is allowed), such as icons
+ # you can add extra information before the name (HTML format is supported), such as icons
pre = ""
name = "Posts"
url = "/posts/"
@@ -108,7 +108,7 @@ enableEmoji = true
typeit = true
# whether to show social links
social = true
- # disclaimer (HTML format is allowed)
+ # disclaimer (HTML format is supported)
disclaimer = ""
# Home Page Posts
[languages.en.params.home.posts]
@@ -342,7 +342,7 @@ enableEmoji = true
typeit = true
# 是否显示社交账号
social = true
- # 免责声明 (允许使用 HTML 格式)
+ # 免责声明 (支持 HTML 格式)
disclaimer = ""
# 主页文章列表
[languages.zh-cn.params.home.posts]
@@ -576,7 +576,7 @@ enableEmoji = true
typeit = true
# whether to show social links
social = true
- # disclaimer (HTML format is allowed)
+ # disclaimer (HTML format is supported)
disclaimer = ""
# Home Page Posts
[languages.fr.params.home.posts]
@@ -753,11 +753,11 @@ enableEmoji = true
# Site creation time
# 网站创立年份
since = 2019
- # ICP info only in China (HTML format is allowed)
- # ICP 备案信息,仅在中国使用 (允许使用 HTML 格式)
+ # ICP info only in China (HTML format is supported)
+ # ICP 备案信息,仅在中国使用 (支持 HTML 格式)
icp = ""
- # license info (HTML format is allowed)
- # 许可协议信息 (允许使用 HTML 格式)
+ # license info (HTML format is supported)
+ # 许可协议信息 (支持 HTML 格式)
license= '<a rel="license external nofollow noopener noreffer" href="https://creativecommons.org/licenses/by-nc/4.0/" target="_blank">CC BY-NC 4.0</a>'
# Page config
# 文章页面配置
diff --git a/exampleSite/content/posts/theme-documentation-basics.en.md b/exampleSite/content/posts/theme-documentation-basics.en.md
index 11637b4..f2b6da3 100644
--- a/exampleSite/content/posts/theme-documentation-basics.en.md
+++ b/exampleSite/content/posts/theme-documentation-basics.en.md
@@ -42,7 +42,7 @@ Since [Markdown Render Hooks](https://gohugo.io/getting-started/configuration-ma
{{< /admonition >}}
{{< admonition note "Why need the Hugo extended version?" >}}
-Since this theme processes SCSS to CSS, the Hugo extended version is needed.
+Since this theme processes SCSS to CSS, Hugo needs to be the extended version.
{{< /admonition >}}
## 2 Installation
@@ -99,7 +99,7 @@ theme = "LoveIt"
[menu]
[[menu.main]]
identifier = "posts"
- # you can add extra information before the name (HTML format is allowed), such as icons
+ # you can add extra information before the name (HTML format is supported), such as icons
pre = ""
name = "Posts"
url = "/posts/"
@@ -206,9 +206,9 @@ Note that some of these parameters are explained in details in other sections of
[params.footer]
# Site creation time
since = 2019
- # ICP info only in China (HTML format is allowed)
+ # ICP info only in China (HTML format is supported)
icp = ""
- # license info (HTML format is allowed)
+ # license info (HTML format is supported)
license = '<a rel="license external nofollow noopener noreffer" href="https://creativecommons.org/licenses/by-nc/4.0/" target="_blank">CC BY-NC 4.0</a>'
# Home Page Info
[params.home]
@@ -226,7 +226,7 @@ Note that some of these parameters are explained in details in other sections of
# whether to show social links
social = true
# {{< version 0.2.0 >}}
- # disclaimer (HTML format is allowed)
+ # disclaimer (HTML format is supported)
disclaimer = ""
# Home Page Posts
[params.home.posts]
diff --git a/exampleSite/content/posts/theme-documentation-basics.fr.md b/exampleSite/content/posts/theme-documentation-basics.fr.md
index 858946d..cf3e9c4 100644
--- a/exampleSite/content/posts/theme-documentation-basics.fr.md
+++ b/exampleSite/content/posts/theme-documentation-basics.fr.md
@@ -47,7 +47,7 @@ Since [Markdown Render Hooks](https://gohugo.io/getting-started/configuration-ma
{{< /admonition >}}
{{< admonition note "Why need the Hugo extended version?" >}}
-Since this theme processes SCSS to CSS, the Hugo extended version is needed.
+Since this theme processes SCSS to CSS, Hugo needs to be the extended version.
{{< /admonition >}}
## 2 Installation
@@ -104,7 +104,7 @@ theme = "LoveIt"
[menu]
[[menu.main]]
identifier = "posts"
- # you can add extra information before the name (HTML format is allowed), such as icons
+ # you can add extra information before the name (HTML format is supported), such as icons
pre = ""
name = "Posts"
url = "/posts/"
@@ -211,9 +211,9 @@ Note that some of these parameters are explained in details in other sections of
[params.footer]
# Site creation time
since = 2019
- # ICP info only in China (HTML format is allowed)
+ # ICP info only in China (HTML format is supported)
icp = ""
- # license info (HTML format is allowed)
+ # license info (HTML format is supported)
license = '<a rel="license external nofollow noopener noreffer" href="https://creativecommons.org/licenses/by-nc/4.0/" target="_blank">CC BY-NC 4.0</a>'
# Home Page Info
[params.home]
@@ -231,7 +231,7 @@ Note that some of these parameters are explained in details in other sections of
# whether to show social links
social = true
# {{< version 0.2.0 >}}
- # disclaimer (HTML format is allowed)
+ # disclaimer (HTML format is supported)
disclaimer = ""
# Home Page Posts
[params.home.posts]
diff --git a/exampleSite/content/posts/theme-documentation-basics.zh-cn.md b/exampleSite/content/posts/theme-documentation-basics.zh-cn.md
index 87ae150..c53e853 100644
--- a/exampleSite/content/posts/theme-documentation-basics.zh-cn.md
+++ b/exampleSite/content/posts/theme-documentation-basics.zh-cn.md
@@ -209,9 +209,9 @@ hugo
[params.footer]
# 网站创立年份
since = 2019
- # ICP 备案信息,仅在中国使用 (允许使用 HTML 格式)
+ # ICP 备案信息,仅在中国使用 (支持 HTML 格式)
icp = ""
- # 许可协议信息 (允许使用 HTML 格式)
+ # 许可协议信息 (支持 HTML 格式)
license = '<a rel="license external nofollow noopener noreffer" href="https://creativecommons.org/licenses/by-nc/4.0/" target="_blank">CC BY-NC 4.0</a>'
# 文章页面配置
[params.home]
@@ -229,7 +229,7 @@ hugo
# 是否显示社交账号
social = true
# {{< version 0.2.0 >}}
- # 免责声明 (允许使用 HTML 格式)
+ # 免责声明 (支持 HTML 格式)
disclaimer = ""
# 主页文章列表
[params.home.posts]
diff --git a/exampleSite/content/posts/theme-documentation-shortcodes.en.md b/exampleSite/content/posts/theme-documentation-shortcodes.en.md
index 2ff765d..e864250 100644
--- a/exampleSite/content/posts/theme-documentation-shortcodes.en.md
+++ b/exampleSite/content/posts/theme-documentation-shortcodes.en.md
@@ -46,7 +46,7 @@ Hugo ships with a set of predefined shortcodes that represent very common usage.
[Documentation of `figure`](https://gohugo.io/content-management/shortcodes/#figure)
-Example `figure` Input:
+Example `figure` input:
```markdown
{{</* figure src="/images/theme-documentation-shortcodes/lighthouse.jpg" title="Lighthouse (figure)" */>}}
@@ -71,7 +71,7 @@ The HTML looks like this:
[Documentation of `gist`](https://gohugo.io/content-management/shortcodes/#gist)
-Example `gist` Input:
+Example `gist` input:
```markdown
{{</* gist spf13 7896402 */>}}
@@ -91,7 +91,7 @@ The HTML looks like this:
[Documentation of `highlight`](https://gohugo.io/content-management/shortcodes/#instagram)
-Example `highlight` Input:
+Example `highlight` input:
```markdown
{{</* highlight html */>}}
@@ -123,7 +123,7 @@ The rendered output looks like this:
[Documentation of `instagram`](https://gohugo.io/content-management/shortcodes/#instagram)
-Example `instagram` Input:
+Example `instagram` input:
```markdown
{{</* instagram BWNjjyYFxVx hidecaption */>}}
@@ -137,7 +137,7 @@ The rendered output looks like this:
[Documentation of `param`](https://gohugo.io/content-management/shortcodes/#param)
-Example `param` Input:
+Example `param` input:
```markdown
{{</* param description */>}}
@@ -155,7 +155,7 @@ The rendered output looks like this:
[Documentation of `tweet`](https://gohugo.io/content-management/shortcodes/#tweet)
-Example `tweet` Input:
+Example `tweet` input:
```markdown
{{</* tweet 877500564405444608 */>}}
@@ -169,7 +169,7 @@ The rendered output looks like this:
[Documentation of `vimeo`](https://gohugo.io/content-management/shortcodes/#vimeo)
-Example `vimeo` Input:
+Example `vimeo` input:
```markdown
{{</* vimeo 146022717 */>}}
@@ -183,7 +183,7 @@ The rendered output looks like this:
[Documentation of `youtube`](https://gohugo.io/content-management/shortcodes/#youtube)
-Example `youtube` Input:
+Example `youtube` input:
```markdown
{{</* youtube w7Ft2ymGmfc */>}}
@@ -201,9 +201,13 @@ The rendered output looks like this:
`style` is a shortcode to insert custom style in your post.
-The `style` shortcode can use two parameters. The first is the custom style content and the second is the HTML tag around the content you want to change style, and whose default value is `p`.
+The `style` shortcode has two positional parameters.
-Example `style` Input:
+The **first** one is the custom style content.
+
+And the **second** one is the HTML tag around the content you want to change style, and whose default value is `p`.
+
+Example `style` input:
```markdown
{{</* style "text-align: right" */>}}
@@ -225,31 +229,31 @@ This is a right-aligned paragraph.
`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:
+The `link` shortcode has the following named parameters:
-* **href**
+* **href** *[required]* (**first** positional parameter)
Destination of the link.
-* **content**
+* **content** *[optional]* (**second** positional parameter)
- Content of the link (HTML format is allowed).
+ Content of the link, default is the value of **href** parameter.
-* **title**
+ *Markdown or HTML format is supported.*
- `title` attribute of the HTML `a` tag, which will be shown when hovering on the link.
+* **title** *[optional]* (**third** positional parameter)
-* **rel**
-
- Additional `rel` attributes of the HTML `a` tag.
+ `title` attribute of the HTML `a` tag, which will be shown when hovering on the link.
-* **class**
+* **class** *[optional]*
`class` attribute of the HTML `a` tag.
-#### Basic `link`
+* **rel** *[optional]*
+
+ Additional `rel` attributes of the HTML `a` tag.
-Example basic `link` Input:
+Example `link` input:
```markdown
{{</* link "https://assemble.io" */>}}
@@ -271,7 +275,7 @@ The rendered output looks like this:
* {{< link "mailto:contact@revolunet.com" >}}
* {{< link "https://assemble.io" Assemble >}}
-#### Add a Title
+Example `link` input with a title:
```markdown
{{</* link "https://github.com/upstage/" Upstage "Visit Upstage!" */>}}
@@ -287,45 +291,75 @@ The rendered output looks like this (hover over the link, there should be a tool
`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).
-The `image` shortcode can use the following named parameters:
+The `image` shortcode has the following named parameters:
-* **src**
+* **src** *[required]* (**first** positional parameter)
URL of the image to be displayed.
-* **description**
+* **alt** *[optional]* (**second** positional parameter)
+
+ Alternate text for the image if the image cannot be displayed, default is the value of **src** parameter.
- Image description.
+ *Markdown or HTML format is supported.*
-* **title**
+* **caption** *[optional]* (**third** positional parameter)
- Image title.
+ Image caption.
-* **class**
+ *Markdown or HTML format is supported.*
+
+* **title** *[optional]*
+
+ Image title that will be shown when hovering on the image.
+
+* **class** *[optional]*
`class` attribute of the HTML `figure` tag.
-* **src_s**
+* **src_s** *[optional]*
+
+ URL of the image thumbnail, used for lightgallery, default is the value of **src** parameter.
+
+* **src_l** *[optional]*
+
+ URL of the HD image, used for lightgallery, default is the value of **src** parameter.
+
+* **height** *[optional]*
+
+ `height` attribute of the image.
+
+* **width** *[optional]*
- URL of the image thumbnail, used for lightgallery.
+ `width` attribute of the image.
-* **src_l**
+* **linked** *[optional]*
- URL of the HD image, used for lightgallery.
+ Whether the image needs to be hyperlinked, default is `true`.
-Example `image` Input:
+* **rel** *[optional]*
+
+ Additional `rel` attributes of the HTML `a` tag, if **linked** parameter is set to `true`.
+
+* **large** *[optional]*
+
+ Whether the image is large used for loading animation, if **linked** parameter is set to `false`.
+
+Example `image` input:
```markdown
-{{</* image src="/images/theme-documentation-shortcodes/lighthouse.jpg" title="Lighthouse (`image`)" src-s="/images/theme-documentation-shortcodes/lighthouse-small.jpg" src-l="/images/theme-documentation-shortcodes/lighthouse-large.jpg" */>}}
+{{</* image src="/images/theme-documentation-shortcodes/lighthouse.jpg" caption="Lighthouse (`image`)" src-s="/images/theme-documentation-shortcodes/lighthouse-small.jpg" src-l="/images/theme-documentation-shortcodes/lighthouse-large.jpg" */>}}
```
The rendered output looks like this:
-{{< image src="/images/theme-documentation-shortcodes/lighthouse.jpg" title="Lighthouse (`image`)" src-s="/images/theme-documentation-shortcodes/lighthouse-small.jpg" src-l="/images/theme-documentation-shortcodes/lighthouse-large.jpg" >}}
+{{< image src="/images/theme-documentation-shortcodes/lighthouse.jpg" caption="Lighthouse (`image`)" src-s="/images/theme-documentation-shortcodes/lighthouse-small.jpg" src-l="/images/theme-documentation-shortcodes/lighthouse-large.jpg" >}}
### `admonition`
-The `admonition` shortcode supports **12** types of banners to help you put notice in your page and `Markdown` format is supported.
+The `admonition` shortcode supports **12** types of banners to help you put notice in your page.
+
+*Markdown or HTML format in the content is supported.*
{{< admonition >}}
A **note** banner
@@ -375,23 +409,21 @@ An **example** banner
A **quote** banner
{{< /admonition >}}
-The `admonition` shortcode can use the following named parameters:
+The `admonition` shortcode has the following named parameters:
-* **type**
+* **type** *[optional]* (**first** positional parameter)
- Type of the `admonition` banner, default is **note**
+ Type of the `admonition` banner, default is `note`.
-* **title**
+* **title** *[optional]* (**second** positional parameter)
- Title of the `admonition` banner, default is the type name of the banner
+ Title of the `admonition` banner, default is the value of **type** parameter.
-* **details**
+* **details** *[optional]* (**third** positional parameter)
- if `true`, the content will be expandable/collapsible.
+ Whether the content will be expandable/collapsible, default is `false`.
-You can also use the positional parameters in the order of **type**, **title** and **details**.
-
-Example `admonition` Input:
+Example `admonition` input:
```markdown
{{</* admonition type=tip title="This is a tip" details=true */>}}
@@ -417,7 +449,7 @@ Just insert your mermaid code in the `mermaid` shortcode and that’s it.
#### Flowchart {#flowchart}
-Example **flowchart** `mermaid` Input:
+Example **flowchart** `mermaid` input:
```markdown
{{</* mermaid */>}}
@@ -441,7 +473,7 @@ graph LR;
#### Sequence Diagram {#sequence-diagram}
-Example **sequence diagram** `mermaid` Input:
+Example **sequence diagram** `mermaid` input:
```markdown
{{</* mermaid */>}}
@@ -477,7 +509,7 @@ sequenceDiagram
#### GANTT {#gantt}
-Example **GANTT** `mermaid` Input:
+Example **GANTT** `mermaid` input:
```markdown
{{</* mermaid */>}}
@@ -521,7 +553,7 @@ gantt
#### Class Diagram {#class-diagram}
-Example **class diagram** `mermaid` Input:
+Example **class diagram** `mermaid` input:
```markdown
{{</* mermaid */>}}
@@ -563,7 +595,7 @@ classDiagram
#### State Diagram {#state-diagram}
-Example **state diagram** `mermaid` Input:
+Example **state diagram** `mermaid` input:
```markdown
{{</* mermaid */>}}
@@ -591,7 +623,7 @@ stateDiagram
#### Git Graph {#git-graph}
-Example **git graph** `mermaid` Input:
+Example **git graph** `mermaid` input:
```markdown
{{</* mermaid */>}}
@@ -637,7 +669,7 @@ end
#### Pie {#pie}
-Example **pie** `mermaid` Input:
+Example **pie** `mermaid` input:
```markdown
{{</* mermaid */>}}
@@ -665,7 +697,7 @@ The basic chart types ECharts supports include [line series](https://echarts.apa
Just insert your ECharts option in `JSON`/`YAML`/`TOML` format in the `echarts` shortcode and that’s it.
-Example `echarts` Input in `JSON` format:
+Example `echarts` input in `JSON` format:
```json
{{</* echarts */>}}
@@ -1039,32 +1071,29 @@ The rendered output looks like this:
The `music` shortcode embeds a responsive music player based on [APlayer](https://github.com/MoePlayer/APlayer) and [MetingJS](https://github.com/metowolf/MetingJS).
-The `music` shortcode can use the following named parameters:
-
-|parameter |default |description|
-|:---------------|:------------:|:----------|
-|url |**require** |music URL|
-|name |options |music name|
-|artist |options |music artist|
-|cover |options |music cover URL|
-|server |**require** |music platform: `netease`, `tencent`, `kugou`, `xiami`, `baidu`|
-|type |**require** |`song`, `playlist`, `album`, `search`, `artist`|
-|id |**require** |song id / playlist id / album id / search keyword|
-|auto |options |music link, support: `netease`, `tencent`, `xiami`|
-|fixed |`false` |enable fixed mode|
-|mini |`false` |enable mini mode|
-|autoplay |`false` |audio autoplay|
-|theme |`#a9a9b3` |main color|
-|loop |`all` |player loop play, values: 'all', 'one', 'none'|
-|order |`list` |player play order, values: 'list', 'random'|
-|volume |`0.7` |default volume, notice that player will remember user setting, default volume will not work after user set volume themselves|
-|mutex |`true` |prevent to play multiple player at the same time, pause other players when this player start play|
-|list-folded |`false` |indicate whether list should folded at first|
-|list-max-height |`340px` |list max height|
+There are three ways to use it the `music` shortcode.
#### Custom Music URL {#custom-music-url}
-Example `music` Input:
+The `music` shortcode has the following named parameters by custom music URL:
+
+* **server** *[required]*
+
+ URL of the custom music.
+
+* **name** *[optional]*
+
+ Name of the custom music.
+
+* **artist** *[optional]*
+
+ Artist of the custom music.
+
+* **cover** *[required]*
+
+ URL of the custom music cover.
+
+Example `music` input by custom music URL:
```markdown
{{</* music url="https://rainymood.com/audio1110/0.m4a" name=rainymood artist=rainymood cover="https://rainymood.com/i/badge.jpg" */>}}
@@ -1076,7 +1105,14 @@ The rendered output looks like this:
#### Music Platform URL Automatic Identification {#automatic-identification}
-Example `music` Input:
+The `music` shortcode has one named parameter by music platform URL automatic identification:
+
+* **auto** *[required]* (**first** positional parameter)
+
+ URL of the music platform URL for automatic identification,
+ which supports `netease`, `tencent` and `xiami` music platform.
+
+Example `music` input by music platform URL automatic identification:
```markdown
{{</* music auto="https://music.163.com/#/playlist?id=60198" */>}}
@@ -1090,7 +1126,25 @@ The rendered output looks like this:
#### Custom Server, Type and ID {#custom-server}
-Example `music` Input:
+The `music` shortcode has the following named parameters by custom music platform:
+
+* **server** *[required]* (**first** positional parameter)
+
+ [`netease`, `tencent`, `kugou`, `xiami`, `baidu`]
+
+ Music platform.
+
+* **type** *[required]* (**second** positional parameter)
+
+ [`song`, `playlist`, `album`, `search`, `artist`]
+
+ Type of the music.
+
+* **id** *[required]* (**third** positional parameter)
+
+ Song ID, or playlist ID, or album ID, or search keyword, or artist ID.
+
+Example `music` input by custom music platform:
```markdown
{{</* music server="netease" type="song" id="1868553" */>}}
@@ -1102,6 +1156,56 @@ The rendered output looks like this:
{{< music netease song 1868553 >}}
+#### Other Parameters
+
+The `music` shortcode has other named parameters applying to the above three ways:
+
+* **theme** *[optional]*
+
+ Main color of the music player, default is `#a9a9b3`.
+
+* **fixed** *[optional]*
+
+ Whether to enable fixed mode, default is `false`.
+
+* **mini** *[optional]*
+
+ Whether to enable mini mode, default is `false`.
+
+* **autoplay** *[optional]*
+
+ Whether to autoplay music, default is `false`.
+
+* **volume** *[optional]*
+
+ Default volume when the player is first opened, which will be remembered in the browser, default is `0.7`.
+
+* **mutex** *[optional]*
+
+ Whether to pause other players when this player starts playing, default is `true`.
+
+The `music` shortcode has the following named parameters only applying to the type of music list:
+
+* **loop** *[optional]*
+
+ [`all`, `one`, `none`]
+
+ Loop mode of the music list, default is `none`.
+
+* **order** *[optional]*
+
+ [`list`, `random`]
+
+ Play order of the music list, default is `list`.
+
+* **list-folded** *[optional]*
+
+ Whether the music list should be folded at first, default is `false`.
+
+* **list-max-height** *[optional]*
+
+ Max height of the music list, default is `340px`.
+
### `bilibili`
The `bilibili` shortcode embeds a responsive video player for bilibili videos.
@@ -1112,7 +1216,7 @@ When the video only has one part, only the `av` ID of the video is required, e.g
https://www.bilibili.com/video/av47027633
```
-Example `bilibili` Input:
+Example `bilibili` input:
```markdown
{{</* bilibili 47027633 */>}}
@@ -1131,7 +1235,7 @@ When the video has multiple parts, in addition to the `av` ID of the video,
https://www.bilibili.com/video/av36570401?p=3
```
-Example `bilibili` Input with `p`:
+Example `bilibili` input with `p`:
```markdown
{{</* bilibili 36570401 3 */>}}
@@ -1153,7 +1257,7 @@ Just insert your content in the `typeit` shortcode and that’s it.
Simple content is allowed in `Markdown` format and **without** rich block content such as images and more...
-Example `typeit` Input:
+Example `typeit` input:
```markdown
{{</* typeit */>}}
@@ -1169,7 +1273,7 @@ This is a *paragraph* with **typing animation** based on [TypeIt](https://typeit
Alternatively, you can use custom **HTML tags**.
-Example `typeit` Input with `h4` tag:
+Example `typeit` input with `h4` tag:
```markdown
{{</* typeit tag=h4 */>}}
@@ -1187,7 +1291,7 @@ This is a *paragraph* with **typing animation** based on [TypeIt](https://typeit
Code content is allowed and will be highlighted by named parameter `code` for the type of code language.
-Example `typeit` Input with `code`:
+Example `typeit` input with `code`:
```markdown
{{</* typeit code=java */>}}
@@ -1216,7 +1320,7 @@ But sometimes you may want to start a set of `typeit` contents in order.
A set of `typeit` contents with the same value of named parameter `group` will start typing animation in sequence.
-Example `typeit` Input with `group`:
+Example `typeit` input with `group`:
```markdown
{{</* typeit group=paragraph */>}}
diff --git a/exampleSite/content/posts/theme-documentation-shortcodes.fr.md b/exampleSite/content/posts/theme-documentation-shortcodes.fr.md
index 4aa5943..b69dcba 100644
--- a/exampleSite/content/posts/theme-documentation-shortcodes.fr.md
+++ b/exampleSite/content/posts/theme-documentation-shortcodes.fr.md
@@ -51,7 +51,7 @@ Hugo ships with a set of predefined shortcodes that represent very common usage.
[Documentation of `figure`](https://gohugo.io/content-management/shortcodes/#figure)
-Example `figure` Input:
+Example `figure` input:
```markdown
{{</* figure src="/images/theme-documentation-shortcodes/lighthouse.jpg" title="Lighthouse (figure)" */>}}
@@ -76,7 +76,7 @@ The HTML looks like this:
[Documentation of `gist`](https://gohugo.io/content-management/shortcodes/#gist)
-Example `gist` Input:
+Example `gist` input:
```markdown
{{</* gist spf13 7896402 */>}}
@@ -96,7 +96,7 @@ The HTML looks like this:
[Documentation of `highlight`](https://gohugo.io/content-management/shortcodes/#instagram)
-Example `highlight` Input:
+Example `highlight` input:
```markdown
{{</* highlight html */>}}
@@ -128,7 +128,7 @@ The rendered output looks like this:
[Documentation of `instagram`](https://gohugo.io/content-management/shortcodes/#instagram)
-Example `instagram` Input:
+Example `instagram` input:
```markdown
{{</* instagram BWNjjyYFxVx hidecaption */>}}
@@ -142,7 +142,7 @@ The rendered output looks like this:
[Documentation of `param`](https://gohugo.io/content-management/shortcodes/#param)
-Example `param` Input:
+Example `param` input:
```markdown
{{</* param description */>}}
@@ -160,7 +160,7 @@ The rendered output looks like this:
[Documentation of `tweet`](https://gohugo.io/content-management/shortcodes/#tweet)
-Example `tweet` Input:
+Example `tweet` input:
```markdown
{{</* tweet 877500564405444608 */>}}
@@ -174,7 +174,7 @@ The rendered output looks like this:
[Documentation of `vimeo`](https://gohugo.io/content-management/shortcodes/#vimeo)
-Example `vimeo` Input:
+Example `vimeo` input:
```markdown
{{</* vimeo 146022717 */>}}
@@ -188,7 +188,7 @@ The rendered output looks like this:
[Documentation of `youtube`](https://gohugo.io/content-management/shortcodes/#youtube)
-Example `youtube` Input:
+Example `youtube` input:
```markdown
{{</* youtube w7Ft2ymGmfc */>}}
@@ -206,9 +206,13 @@ The rendered output looks like this:
`style` is a shortcode to insert custom style in your post.
-The `style` shortcode can use two parameters. The first is the custom style content and the second is the HTML tag around the content you want to change style, and whose default value is `p`.
+The `style` shortcode has two positional parameters.
-Example `style` Input:
+The **first** one is the custom style content.
+
+And the **second** one is the HTML tag around the content you want to change style, and whose default value is `p`.
+
+Example `style` input:
```markdown
{{</* style "text-align: right" */>}}
@@ -225,36 +229,36 @@ This is a right-aligned paragraph.
### `link`
{{< admonition warning >}}
-{{< version 2.2.0 >}}
+{{< version 0.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:
+The `link` shortcode has the following named parameters:
-* **href**
+* **href** *[required]* (**first** positional parameter)
Destination of the link.
-* **content**
+* **content** *[optional]* (**second** positional parameter)
- Content of the link (HTML format is allowed).
+ Content of the link, default is the value of **href** parameter.
-* **title**
+ *Markdown or HTML format is supported.*
- `title` attribute of the HTML `a` tag, which will be shown when hovering on the link.
+* **title** *[optional]* (**third** positional parameter)
-* **rel**
-
- Additional `rel` attributes of the HTML `a` tag.
+ `title` attribute of the HTML `a` tag, which will be shown when hovering on the link.
-* **class**
+* **class** *[optional]*
`class` attribute of the HTML `a` tag.
-#### Basic `link`
+* **rel** *[optional]*
+
+ Additional `rel` attributes of the HTML `a` tag.
-Example basic `link` Input:
+Example `link` input:
```markdown
{{</* link "https://assemble.io" */>}}
@@ -276,7 +280,7 @@ The rendered output looks like this:
* {{< link "mailto:contact@revolunet.com" >}}
* {{< link "https://assemble.io" Assemble >}}
-#### Add a Title
+Example `link` input with a title:
```markdown
{{</* link "https://github.com/upstage/" Upstage "Visit Upstage!" */>}}
@@ -292,45 +296,75 @@ The rendered output looks like this (hover over the link, there should be a tool
`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).
-The `image` shortcode can use the following named parameters:
+The `image` shortcode has the following named parameters:
-* **src**
+* **src** *[required]* (**first** positional parameter)
URL of the image to be displayed.
-* **description**
+* **alt** *[optional]* (**second** positional parameter)
+
+ Alternate text for the image if the image cannot be displayed, default is the value of **src** parameter.
- Image description.
+ *Markdown or HTML format is supported.*
-* **title**
+* **caption** *[optional]* (**third** positional parameter)
- Image title.
+ Image caption.
-* **class**
+ *Markdown or HTML format is supported.*
+
+* **title** *[optional]*
+
+ Image title that will be shown when hovering on the image.
+
+* **class** *[optional]*
`class` attribute of the HTML `figure` tag.
-* **src_s**
+* **src_s** *[optional]*
+
+ URL of the image thumbnail, used for lightgallery, default is the value of **src** parameter.
+
+* **src_l** *[optional]*
+
+ URL of the HD image, used for lightgallery, default is the value of **src** parameter.
+
+* **height** *[optional]*
+
+ `height` attribute of the image.
+
+* **width** *[optional]*
- URL of the image thumbnail, used for lightgallery.
+ `width` attribute of the image.
-* **src_l**
+* **linked** *[optional]*
- URL of the HD image, used for lightgallery.
+ Whether the image needs to be hyperlinked, default is `true`.
-Example `image` Input:
+* **rel** *[optional]*
+
+ Additional `rel` attributes of the HTML `a` tag, if **linked** parameter is set to `true`.
+
+* **large** *[optional]*
+
+ Whether the image is large used for loading animation, if **linked** parameter is set to `false`.
+
+Example `image` input:
```markdown
-{{</* image src="/images/theme-documentation-shortcodes/lighthouse.jpg" title="Lighthouse (`image`)" src-s="/images/theme-documentation-shortcodes/lighthouse-small.jpg" src-l="/images/theme-documentation-shortcodes/lighthouse-large.jpg" */>}}
+{{</* image src="/images/theme-documentation-shortcodes/lighthouse.jpg" caption="Lighthouse (`image`)" src-s="/images/theme-documentation-shortcodes/lighthouse-small.jpg" src-l="/images/theme-documentation-shortcodes/lighthouse-large.jpg" */>}}
```
The rendered output looks like this:
-{{< image src="/images/theme-documentation-shortcodes/lighthouse.jpg" title="Lighthouse (`image`)" src-s="/images/theme-documentation-shortcodes/lighthouse-small.jpg" src-l="/images/theme-documentation-shortcodes/lighthouse-large.jpg" >}}
+{{< image src="/images/theme-documentation-shortcodes/lighthouse.jpg" caption="Lighthouse (`image`)" src-s="/images/theme-documentation-shortcodes/lighthouse-small.jpg" src-l="/images/theme-documentation-shortcodes/lighthouse-large.jpg" >}}
### `admonition`
-The `admonition` shortcode supports **12** types of banners to help you put notice in your page and `Markdown` format is supported.
+The `admonition` shortcode supports **12** types of banners to help you put notice in your page.
+
+*Markdown or HTML format in the content is supported.*
{{< admonition >}}
A **note** banner
@@ -380,23 +414,21 @@ An **example** banner
A **quote** banner
{{< /admonition >}}
-The `admonition` shortcode can use the following named parameters:
+The `admonition` shortcode has the following named parameters:
-* **type**
+* **type** *[optional]* (**first** positional parameter)
- Type of the `admonition` banner, default is **note**
+ Type of the `admonition` banner, default is `note`.
-* **title**
+* **title** *[optional]* (**second** positional parameter)
- Title of the `admonition` banner, default is the type name of the banner
+ Title of the `admonition` banner, default is the value of **type** parameter.
-* **details**
+* **details** *[optional]* (**third** positional parameter)
- if `true`, the content will be expandable/collapsible.
+ Whether the content will be expandable/collapsible, default is `false`.
-You can also use the positional parameters in the order of **type**, **title** and **details**.
-
-Example `admonition` Input:
+Example `admonition` input:
```markdown
{{</* admonition type=tip title="This is a tip" details=true */>}}
@@ -422,7 +454,7 @@ Just insert your mermaid code in the `mermaid` shortcode and that’s it.
#### Flowchart {#flowchart}
-Example **flowchart** `mermaid` Input:
+Example **flowchart** `mermaid` input:
```markdown
{{</* mermaid */>}}
@@ -446,7 +478,7 @@ graph LR;
#### Sequence Diagram {#sequence-diagram}
-Example **sequence diagram** `mermaid` Input:
+Example **sequence diagram** `mermaid` input:
```markdown
{{</* mermaid */>}}
@@ -482,7 +514,7 @@ sequenceDiagram
#### GANTT {#gantt}
-Example **GANTT** `mermaid` Input:
+Example **GANTT** `mermaid` input:
```markdown
{{</* mermaid */>}}
@@ -526,7 +558,7 @@ gantt
#### Class Diagram {#class-diagram}
-Example **class diagram** `mermaid` Input:
+Example **class diagram** `mermaid` input:
```markdown
{{</* mermaid */>}}
@@ -568,7 +600,7 @@ classDiagram
#### State Diagram {#state-diagram}
-Example **state diagram** `mermaid` Input:
+Example **state diagram** `mermaid` input:
```markdown
{{</* mermaid */>}}
@@ -596,7 +628,7 @@ stateDiagram
#### Git Graph {#git-graph}
-Example **git graph** `mermaid` Input:
+Example **git graph** `mermaid` input:
```markdown
{{</* mermaid */>}}
@@ -642,7 +674,7 @@ end
#### Pie {#pie}
-Example **pie** `mermaid` Input:
+Example **pie** `mermaid` input:
```markdown
{{</* mermaid */>}}
@@ -670,7 +702,7 @@ The basic chart types ECharts supports include [line series](https://echarts.apa
Just insert your ECharts option in `JSON`/`YAML`/`TOML` format in the `echarts` shortcode and that’s it.
-Example `echarts` Input in `JSON` format:
+Example `echarts` input in `JSON` format:
```json
{{</* echarts */>}}
@@ -1044,32 +1076,29 @@ The rendered output looks like this:
The `music` shortcode embeds a responsive music player based on [APlayer](https://github.com/MoePlayer/APlayer) and [MetingJS](https://github.com/metowolf/MetingJS).
-The `music` shortcode can use the following named parameters:
-
-|parameter |default |description|
-|:---------------|:------------:|:----------|
-|url |**require** |music URL|
-|name |options |music name|
-|artist |options |music artist|
-|cover |options |music cover URL|
-|server |**require** |music platform: `netease`, `tencent`, `kugou`, `xiami`, `baidu`|
-|type |**require** |`song`, `playlist`, `album`, `search`, `artist`|
-|id |**require** |song id / playlist id / album id / search keyword|
-|auto |options |music link, support: `netease`, `tencent`, `xiami`|
-|fixed |`false` |enable fixed mode|
-|mini |`false` |enable mini mode|
-|autoplay |`false` |audio autoplay|
-|theme |`#a9a9b3` |main color|
-|loop |`all` |player loop play, values: 'all', 'one', 'none'|
-|order |`list` |player play order, values: 'list', 'random'|
-|volume |`0.7` |default volume, notice that player will remember user setting, default volume will not work after user set volume themselves|
-|mutex |`true` |prevent to play multiple player at the same time, pause other players when this player start play|
-|list-folded |`false` |indicate whether list should folded at first|
-|list-max-height |`340px` |list max height|
+There are three ways to use it the `music` shortcode.
#### Custom Music URL {#custom-music-url}
-Example `music` Input:
+The `music` shortcode has the following named parameters by custom music URL:
+
+* **server** *[required]*
+
+ URL of the custom music.
+
+* **name** *[optional]*
+
+ Name of the custom music.
+
+* **artist** *[optional]*
+
+ Artist of the custom music.
+
+* **cover** *[required]*
+
+ URL of the custom music cover.
+
+Example `music` input by custom music URL:
```markdown
{{</* music url="https://rainymood.com/audio1110/0.m4a" name=rainymood artist=rainymood cover="https://rainymood.com/i/badge.jpg" */>}}
@@ -1081,7 +1110,14 @@ The rendered output looks like this:
#### Music Platform URL Automatic Identification {#automatic-identification}
-Example `music` Input:
+The `music` shortcode has one named parameter by music platform URL automatic identification:
+
+* **auto** *[required]* (**first** positional parameter)
+
+ URL of the music platform URL for automatic identification,
+ which supports `netease`, `tencent` and `xiami` music platform.
+
+Example `music` input by music platform URL automatic identification:
```markdown
{{</* music auto="https://music.163.com/#/playlist?id=60198" */>}}
@@ -1095,7 +1131,25 @@ The rendered output looks like this:
#### Custom Server, Type and ID {#custom-server}
-Example `music` Input:
+The `music` shortcode has the following named parameters by custom music platform:
+
+* **server** *[required]* (**first** positional parameter)
+
+ [`netease`, `tencent`, `kugou`, `xiami`, `baidu`]
+
+ Music platform.
+
+* **type** *[required]* (**second** positional parameter)
+
+ [`song`, `playlist`, `album`, `search`, `artist`]
+
+ Type of the music.
+
+* **id** *[required]* (**third** positional parameter)
+
+ Song ID, or playlist ID, or album ID, or search keyword, or artist ID.
+
+Example `music` input by custom music platform:
```markdown
{{</* music server="netease" type="song" id="1868553" */>}}
@@ -1107,6 +1161,56 @@ The rendered output looks like this:
{{< music netease song 1868553 >}}
+#### Other Parameters
+
+The `music` shortcode has other named parameters applying to the above three ways:
+
+* **theme** *[optional]*
+
+ Main color of the music player, default is `#a9a9b3`.
+
+* **fixed** *[optional]*
+
+ Whether to enable fixed mode, default is `false`.
+
+* **mini** *[optional]*
+
+ Whether to enable mini mode, default is `false`.
+
+* **autoplay** *[optional]*
+
+ Whether to autoplay music, default is `false`.
+
+* **volume** *[optional]*
+
+ Default volume when the player is first opened, which will be remembered in the browser, default is `0.7`.
+
+* **mutex** *[optional]*
+
+ Whether to pause other players when this player starts playing, default is `true`.
+
+The `music` shortcode has the following named parameters only applying to the type of music list:
+
+* **loop** *[optional]*
+
+ [`all`, `one`, `none`]
+
+ Loop mode of the music list, default is `none`.
+
+* **order** *[optional]*
+
+ [`list`, `random`]
+
+ Play order of the music list, default is `list`.
+
+* **list-folded** *[optional]*
+
+ Whether the music list should be folded at first, default is `false`.
+
+* **list-max-height** *[optional]*
+
+ Max height of the music list, default is `340px`.
+
### `bilibili`
The `bilibili` shortcode embeds a responsive video player for bilibili videos.
@@ -1117,7 +1221,7 @@ When the video only has one part, only the `av` ID of the video is required, e.g
https://www.bilibili.com/video/av47027633
```
-Example `bilibili` Input:
+Example `bilibili` input:
```markdown
{{</* bilibili 47027633 */>}}
@@ -1136,7 +1240,7 @@ When the video has multiple parts, in addition to the `av` ID of the video,
https://www.bilibili.com/video/av36570401?p=3
```
-Example `bilibili` Input with `p`:
+Example `bilibili` input with `p`:
```markdown
{{</* bilibili 36570401 3 */>}}
@@ -1158,7 +1262,7 @@ Just insert your content in the `typeit` shortcode and that’s it.
Simple content is allowed in `Markdown` format and **without** rich block content such as images and more...
-Example `typeit` Input:
+Example `typeit` input:
```markdown
{{</* typeit */>}}
@@ -1174,7 +1278,7 @@ This is a *paragraph* with **typing animation** based on [TypeIt](https://typeit
Alternatively, you can use custom **HTML tags**.
-Example `typeit` Input with `h4` tag:
+Example `typeit` input with `h4` tag:
```markdown
{{</* typeit tag=h4 */>}}
@@ -1192,7 +1296,7 @@ This is a *paragraph* with **typing animation** based on [TypeIt](https://typeit
Code content is allowed and will be highlighted by named parameter `code` for the type of code language.
-Example `typeit` Input with `code`:
+Example `typeit` input with `code`:
```markdown
{{</* typeit code=java */>}}
@@ -1221,7 +1325,7 @@ But sometimes you may want to start a set of `typeit` contents in order.
A set of `typeit` contents with the same value of named parameter `group` will start typing animation in sequence.
-Example `typeit` Input with `group`:
+Example `typeit` input with `group`:
```markdown
{{</* typeit group=paragraph */>}}
diff --git a/exampleSite/content/posts/theme-documentation-shortcodes.zh-cn.md b/exampleSite/content/posts/theme-documentation-shortcodes.zh-cn.md
index f20fdc6..1768bcb 100644
--- a/exampleSite/content/posts/theme-documentation-shortcodes.zh-cn.md
+++ b/exampleSite/content/posts/theme-documentation-shortcodes.zh-cn.md
@@ -202,8 +202,11 @@ Hugo 附带了一组预定义的 shortcodes, 它们实现了一些非常常见
`style` shortcode 用来在你的文章中插入自定义样式.
-`style` shortcode 使用两个参数.
-第一个是自定义样式的内容, 第二个是包裹你要更改样式的内容的 HTML 标签, 默认值是 `p`.
+`style` shortcode 有两个位置参数.
+
+第一个参数是自定义样式的内容.
+
+第二个参数是包裹你要更改样式的内容的 HTML 标签, 默认值是 `p`.
一个 `style` 示例:
@@ -228,31 +231,31 @@ This is a right-aligned paragraph.
`link` shortcode 是 [Markdown 链接语法](../basic-markdown-syntax/#links) 的替代.
`link` shortcode 可以提供一些其它的功能并且可以在代码块中使用.
-`link` shortcode 可以使用以下命名参数:
+`link` shortcode 有以下命名参数:
-* **href**
+* **href** *[必需]* (**第一个**位置参数)
链接的目标.
-* **content**
+* **content** *[可选]* (**第二个**位置参数)
+
+ 链接的内容, 默认值是 **href** 参数的值.
- 链接的内容 (允许 HTML 格式).
+ *支持 Markdown 或者 HTML 格式.*
-* **title**
+* **title** *[可选]* (**第三个**位置参数)
HTML `a` 标签 的 `title` 属性, 当悬停在链接上会显示的提示.
-* **rel**
+* **rel** *[可选]*
HTML `a` 标签 的 `rel` 补充属性.
-* **class**
+* **class** *[可选]*
HTML `a` 标签 的 `class` 属性.
-#### 基本 `link`
-
-一个基本的 `link` 示例:
+一个 `link` 示例:
```markdown
{{</* link "https://assemble.io" */>}}
@@ -274,7 +277,7 @@ This is a right-aligned paragraph.
* {{< link "mailto:contact@revolunet.com" >}}
* {{< link "https://assemble.io" Assemble >}}
-#### 添加一个标题
+一个带有标题的 `link` 示例:
```markdown
{{</* link "https://github.com/upstage/" Upstage "Visit Upstage!" */>}}
@@ -290,45 +293,75 @@ This is a right-aligned paragraph.
`image` shortcode 是 [`figure` shortcode](#figure) 的替代. `image` shortcode 可以充分利用 [lazysizes](https://github.com/aFarkas/lazysizes) 和 [lightgallery.js](https://github.com/sachinchoolur/lightgallery.js) 两个依赖库.
-`image` shortcode 可以使用以下命名参数:
+`image` shortcode 有以下命名参数:
-* **src**
+* **src** *[必需]* (**第一个**位置参数)
图片的 URL.
-* **description**
+* **alt** *[可选]* (**第二个**位置参数)
+
+ 图片无法显示时的替代文本, 默认值是 **src** 参数的值.
- 图片描述.
+ *支持 Markdown 或者 HTML 格式.*
-* **title**
+* **caption** *[可选]* (**第三个**位置参数)
图片标题.
-* **class**
+ *支持 Markdown 或者 HTML 格式.*
+
+* **title** *[可选]*
+
+ 当悬停在图片上会显示的提示.
+
+* **class** *[可选]*
HTML `figure` 标签的 `class` 属性.
-* **src_s**
+* **src_s** *[可选]*
+
+ 图片缩略图的 URL, 用在画廊模式中, 默认值是 **src** 参数的值.
+
+* **src_l** *[可选]*
+
+ 高清图片的 URL, 用在画廊模式中, 默认值是 **src** 参数的值.
+
+* **height** *[可选]*
+
+ 图片的 `height` 属性.
+
+* **width** *[可选]*
+
+ 图片的 `width` 属性.
+
+* **linked** *[可选]*
+
+ 图片是否需要被链接, 默认值是 `true`.
- 图片缩略图的 URL, 用在画廊模式中.
+* **rel** *[可选]*
-* **src_l**
+ HTML `a` 标签 的 `rel` 补充属性, 仅在 **linked** 属性设置成 `true` 时有效.
- 高清图片的 URL, 用在画廊模式中.
+* **large** *[可选]*
+
+ 图片是否是大尺寸的, 用来加载动画, 仅在 **linked** 属性设置成 `false` 时有效.
一个 `image` 示例:
```markdown
-{{</* image src="/images/theme-documentation-shortcodes/lighthouse.jpg" title="Lighthouse (`image`)" src-s="/images/theme-documentation-shortcodes/lighthouse-small.jpg" src-l="/images/theme-documentation-shortcodes/lighthouse-large.jpg" */>}}
+{{</* image src="/images/theme-documentation-shortcodes/lighthouse.jpg" caption="Lighthouse (`image`)" src-s="/images/theme-documentation-shortcodes/lighthouse-small.jpg" src-l="/images/theme-documentation-shortcodes/lighthouse-large.jpg" */>}}
```
呈现的输出效果如下:
-{{< image src="/images/theme-documentation-shortcodes/lighthouse.jpg" title="Lighthouse (`image`)" src-s="/images/theme-documentation-shortcodes/lighthouse-small.jpg" src-l="/images/theme-documentation-shortcodes/lighthouse-large.jpg" >}}
+{{< image src="/images/theme-documentation-shortcodes/lighthouse.jpg" caption="Lighthouse (`image`)" src-s="/images/theme-documentation-shortcodes/lighthouse-small.jpg" src-l="/images/theme-documentation-shortcodes/lighthouse-large.jpg" >}}
### `admonition`
-`admonition` shortcode 支持 **12** 种 帮助你在页面中插入提示的横幅. 同时, `Markdown` 格式文本是支持的.
+`admonition` shortcode 支持 **12** 种 帮助你在页面中插入提示的横幅.
+
+*支持 Markdown 或者 HTML 格式.*
{{< admonition >}}
一个 **注意** 横幅
@@ -378,21 +411,19 @@ This is a right-aligned paragraph.
一个 **引用** 横幅
{{< /admonition >}}
-`admonition` shortcode 可以使用以下命名参数:
-
-* **type**
+`admonition` shortcode 有以下命名参数:
- `admonition` 横幅的类型, 默认值是 **note**
+* **type** *[必需]* (**第一个**位置参数)
-* **title**
+ `admonition` 横幅的类型, 默认值是 `note`.
- `admonition` 横幅的标题, 默认值是横幅的类型名称
+* **title** *[可选]* (**第二个**位置参数)
-* **details**
+ `admonition` 横幅的标题, 默认值是 **type** 参数的值.
- 如果设为 `true`, 横幅内容将是可展开/可折叠.
+* **details** *[可选]* (**第三个**位置参数)
-你还可以按 **type**, **title** 和 **details** 的顺序使用位置参数.
+ 横幅内容是否可展开/可折叠, 默认值是 `false`.
一个 `admonition` 示例:
@@ -1042,6 +1073,8 @@ data = [
`music` shortcode 基于 [APlayer](https://github.com/MoePlayer/APlayer) 和 [MetingJS](https://github.com/metowolf/MetingJS) 提供了一个内嵌的响应式音乐播放器.
+有三种方式使用 `music` shortcode.
+
`music` shortcode 可以使用以下命名参数:
|参数 |默认值 |描述|
@@ -1067,7 +1100,25 @@ data = [
#### 自定义音乐 URL {#custom-music-url}
-一个 `music` 示例:
+`music` shortcode 有以下命名参数来使用自定义音乐 URL:
+
+* **server** *[必需]*
+
+ 音乐的链接.
+
+* **type** *[可选]*
+
+ 音乐的名称.
+
+* **artist** *[可选]*
+
+ 音乐的创作者.
+
+* **cover** *[可选]*
+
+ 音乐的封面链接.
+
+一个使用自定义音乐 URL 的 `music` 示例:
```markdown
{{</* music url="https://rainymood.com/audio1110/0.m4a" name=rainymood artist=rainymood cover="https://rainymood.com/i/badge.jpg" */>}}
@@ -1077,9 +1128,15 @@ data = [
{{< music url="https://rainymood.com/audio1110/0.m4a" name=rainymood artist=rainymood cover="https://rainymood.com/i/badge.jpg" >}}
-#### 来自音乐平台的 URL 自动识别 {#automatic-identification}
+#### 音乐平台 URL 的自动识别 {#automatic-identification}
-一个 `music` 示例:
+`music` shortcode 有一个命名参数来使用音乐平台 URL 的自动识别:
+
+* **auto** *[必需]]* (**第一个**位置参数)
+
+ 用来自动识别的音乐平台 URL, 支持 `netease`, `tencent` 和 `xiami` 平台.
+
+一个使用音乐平台 URL 的自动识别的 `music` 示例:
```markdown
{{</* music auto="https://music.163.com/#/playlist?id=60198" */>}}
@@ -1091,9 +1148,27 @@ data = [
{{< music auto="https://music.163.com/#/playlist?id=60198" >}}
-#### 自定义平台, 类型和 ID {#custom-server}
+#### 自定义音乐平台, 类型和 ID {#custom-server}
+
+`music` shortcode 有以下命名参数来使用自定义音乐平台:
-一个 `music` 示例:
+* **server** *[必需]* (**第一个**位置参数)
+
+ [`netease`, `tencent`, `kugou`, `xiami`, `baidu`]
+
+ 音乐平台.
+
+* **type** *[必需]* (**第二个**位置参数)
+
+ [`song`, `playlist`, `album`, `search`, `artist`]
+
+ 音乐类型.
+
+* **id** *[必需]* (**第三个**位置参数)
+
+ 歌曲 ID, 或者播放列表 ID, 或者专辑 ID, 或者搜索关键词, 或者创作者 ID.
+
+一个使用自定义音乐平台的 `music` 示例:
```markdown
{{</* music server="netease" type="song" id="1868553" */>}}
@@ -1105,6 +1180,56 @@ data = [
{{< music netease song 1868553 >}}
+#### 其它参数
+
+`music` shortcode 有一些可以应用于以上三种方式的其它命名参数:
+
+* **theme** *[可选]*
+
+ 音乐播放器的主题色, 默认值是 `#a9a9b3`.
+
+* **fixed** *[可选]*
+
+ 是否开启固定模式, 默认值是 `false`.
+
+* **mini** *[可选]*
+
+ 是否开启迷你模式, 默认值是 `false`.
+
+* **autoplay** *[可选]*
+
+ 是否自动播放音乐, 默认值是 `false`.
+
+* **volume** *[可选]*
+
+ 第一次打开播放器时的默认音量, 会被保存在浏览器缓存中, 默认值是 `0.7`.
+
+* **mutex** *[可选]*
+
+ 是否自动暂停其它播放器, 默认值是 `true`.
+
+`music` shortcode 还有一些只适用于音乐列表方式的其它命名参数:
+
+* **loop** *[可选]*
+
+ [`all`, `one`, `none`]
+
+ 音乐列表的循环模式, 默认值是 `none`.
+
+* **order** *[可选]*
+
+ [`list`, `random`]
+
+ 音乐列表的播放顺序, 默认值是 `list`.
+
+* **list-folded** *[可选]*
+
+ 初次打开的时候音乐列表是否折叠, 默认值是 `false`.
+
+* **list-max-height** *[可选]*
+
+ 音乐列表的最大高度, 默认值是 `340px`.
+
### `bilibili`
`bilibili` shortcode 提供了一个内嵌的用来播放 bilibili 视频的响应式播放器.
diff --git a/layouts/_default/_markup/render-image.html b/layouts/_default/_markup/render-image.html
index 6f3320a..bf7c6f8 100644
--- a/layouts/_default/_markup/render-image.html
+++ b/layouts/_default/_markup/render-image.html
@@ -1,10 +1,10 @@
{{- with .Title -}}
<figure>
- {{- partial "plugin/image.html" (dict "src" $.Destination "title" $.Title "description" $.Text "lightgallery" true "scratch" ($.Page.Scratch.Get "scratch")) -}}
+ {{- partial "plugin/image.html" (dict "src" $.Destination "alt" $.Text "caption" . "linked" true) -}}
<figcaption class="image-caption">
{{- . | safeHTML -}}
</figcaption>
</figure>
{{- else -}}
- {{- partial "plugin/image.html" (dict "src_s" .Destination "title" .Title "description" .Text "lightgallery" false "scratch" (.Page.Scratch.Get "scratch")) -}}
+ {{- partial "plugin/image.html" (dict "src" .Destination "alt" .Text) -}}
{{- end -}}
diff --git a/layouts/_default/summary.html b/layouts/_default/summary.html
index 440bfd0..0c75db2 100644
--- a/layouts/_default/summary.html
+++ b/layouts/_default/summary.html
@@ -5,7 +5,7 @@
{{- with .Params.featuredImage -}}
<div class="featured-image-preview">
{{- $image := $.Params.featuredImagePreview | default . -}}
- {{- partial "plugin/image.html" (dict "src" $image "description" $.Description "scratch" $scratch) -}}
+ {{- partial "plugin/image.html" (dict "src" $image "alt" $.Description "large" true) -}}
</div>
{{- end -}}
diff --git a/layouts/partials/home/profile.html b/layouts/partials/home/profile.html
index 2524dba..bcf08c8 100644
--- a/layouts/partials/home/profile.html
+++ b/layouts/partials/home/profile.html
@@ -7,8 +7,8 @@
{{- end -}}
{{- with $avatar -}}
<div class="home-avatar">
- <a href="/posts">
- {{- partial "plugin/image.html" (dict "src_s" . "title" "avatar" "description" (T "home") "scratch" $scratch) -}}
+ <a href="/posts" title="{{ T `home` }}">
+ {{- partial "plugin/image.html" (dict "src" . "alt" (T "home")) -}}
</a>
</div>
{{- end -}}
diff --git a/layouts/partials/plugin/image.html b/layouts/partials/plugin/image.html
index 99a698d..3710acf 100644
--- a/layouts/partials/plugin/image.html
+++ b/layouts/partials/plugin/image.html
@@ -1,30 +1,28 @@
{{- /* lazysizes and lightgallery.js */ -}}
+{{- $loading := resources.Get "svg/loading.svg" | minify -}}
{{- $small := .src_s | default .src -}}
{{- $large := .src_l | default .src -}}
-{{- $loading := resources.Get "svg/loading.svg" | minify -}}
-{{- if not .src | and .src_s -}}
- {{- $loading = resources.Get "svg/loading.small.svg" | minify -}}
-{{- end -}}
-{{- if .lightgallery -}}
- <a class="lightgallery" href="{{ $large | safeURL }}" title="{{ .description }}" data-thumbnail="{{ $small | safeURL }}"{{ if .title }} data-sub-html="<h2>{{ .title }}</h2><p>{{ .description }}</p>"{{ end }}>
+{{- $alt := .alt | default .src -}}
+{{- if .linked -}}
+ <a class="lightgallery" href="{{ $large | safeURL }}" title="{{ .title | default $alt }}" data-thumbnail="{{ $small | safeURL }}"{{ with .caption }} data-sub-html="<h2>{{ . }}</h2>{{ with $.alt }}<p>{{ . }}</p>{{ end }}"{{ end }}{{ with .rel }} rel="{{ . }}"{{ end }}>
<img
class="lazyload"
src="{{ $loading.RelPermalink | safeURL }}"
data-sizes="auto"
data-srcset="{{ $small | safeURL }}, {{ .src | safeURL }} 1.5x, {{ $large | safeURL }} 2x"
data-src="{{ .src | safeURL }}"
- alt="{{ .title | default .description }}" />
+ alt="{{ $alt }}"{{ with .height }} height="{{ . }}"{{ end }}{{ with .width }} width="{{ . }}"{{ end }} />
</a>
- {{- with .scratch -}}
- {{- .Set "lightgallery" true -}}
- {{- end -}}
{{- else -}}
+ {{- if not .large -}}
+ {{- $loading = resources.Get "svg/loading.small.svg" | minify -}}
+ {{- end -}}
<img
class="lazyload"
src="{{ $loading.RelPermalink | safeURL }}"
data-sizes="auto"
data-srcset="{{ $small | safeURL }}, {{ .src | safeURL }} 1.5x, {{ $large | safeURL }} 2x"
data-src="{{ .src | safeURL }}"
- alt="{{ .title | default .description }}"
- title="{{ .description }}" />
+ alt="{{ $alt }}"
+ title="{{ .title | default $alt }}"{{ with .height }} height="{{ . }}"{{ end }}{{ with .width }} width="{{ . }}"{{ end }} />
{{- end -}}
diff --git a/layouts/posts/single.html b/layouts/posts/single.html
index d7a1a4a..8c79a84 100644
--- a/layouts/posts/single.html
+++ b/layouts/posts/single.html
@@ -48,7 +48,7 @@
{{- /* Featured image */ -}}
{{- with .Params.featuredImage -}}
<div class="featured-image">
- {{- partial "plugin/image.html" (dict "src" . "description" $.Description "scratch" $scratch) -}}
+ {{- partial "plugin/image.html" (dict "src" . "alt" $.Description "large" true) -}}
</div>
{{- end -}}
diff --git a/layouts/shortcodes/image.html b/layouts/shortcodes/image.html
index 4887b9d..9b51bc3 100644
--- a/layouts/shortcodes/image.html
+++ b/layouts/shortcodes/image.html
@@ -1,18 +1,28 @@
-<figure{{ with .Get "class" }} class="{{ . }}"{{ end }}>
- {{- $options := .Get "src" | dict "src" -}}
- {{- $options = .Get "src_s" | dict "src_s" | merge $options -}}
- {{- $options = .Get "src_l" | dict "src_l" | merge $options -}}
- {{- $title := .Get "title" | $.Page.RenderString -}}
- {{- $options = $title | dict "title" | merge $options -}}
- {{- $description := .Get "description" | $.Page.RenderString -}}
- {{- $options = $description | dict "description" | merge $options -}}
- {{- $lightgallery := ne .Page.Site.Params.page.lightgallery false | and (ne .Page.Params.lightgallery false) -}}
- {{- $options = $lightgallery | dict "lightgallery" | merge $options -}}
- {{- $options = .Page.Scratch.Get "scratch" | dict "scratch" | merge $options -}}
- {{- partial "plugin/image.html" $options -}}
- {{- with $title | default $description -}}
+{{- $options := cond .IsNamedParams (.Get "src") (.Get 0) | dict "src" -}}
+{{- $options = cond .IsNamedParams (.Get "alt") (.Get 1) | .Page.RenderString | dict "alt" | merge $options -}}
+{{- $caption := cond .IsNamedParams (.Get "caption") (.Get 2) | .Page.RenderString -}}
+{{- $options = dict "caption" $caption | merge $options -}}
+
+{{- if .IsNamedParams -}}
+ {{- $options = dict "title" (.Get "title") | merge $options -}}
+ {{- $options = dict "src_s" (.Get "src_s") | merge $options -}}
+ {{- $options = dict "src_l" (.Get "src_l") | merge $options -}}
+ {{- $options = dict "height" (.Get "height") | merge $options -}}
+ {{- $options = dict "width" (.Get "width") | merge $options -}}
+ {{- $options = dict "large" (.Get "large") | merge $options -}}
+ {{- $options = .Get "linked" | ne false | dict "linked" | merge $options -}}
+ {{- $options = dict "rel" (.Get "rel") | merge $options -}}
+{{- else -}}
+ {{- $options = cond $caption true false | dict "linked" | merge $options -}}
+{{- end -}}
+
+{{- with $caption -}}
+ <figure{{ with cond $.IsNamedParams ($.Get "class") "" }} class="{{ . }}"{{ end }}>
+ {{- partial "plugin/image.html" $options -}}
<figcaption class="image-caption">
{{- . | safeHTML -}}
</figcaption>
- {{- end -}}
-</figure>
+ </figure>
+{{- else -}}
+ {{- partial "plugin/image.html" $options -}}
+{{- end -}}
diff --git a/layouts/shortcodes/link.html b/layouts/shortcodes/link.html
index 5208d81..94c31b0 100644
--- a/layouts/shortcodes/link.html
+++ b/layouts/shortcodes/link.html
@@ -1,12 +1,10 @@
-{{- $options := dict -}}
+{{- $options := cond .IsNamedParams (.Get "href") (.Get 0) | dict "href" -}}
{{- if .IsNamedParams -}}
- {{- $options = dict "href" (.Get "href") | merge $options -}}
+ {{- $options = dict "content" (.Get "content") | 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 -}}
+ {{- $options = dict "rel" (.Get "rel") | 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 -}}
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 43e1f2c..e42cbc1 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=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}.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 sup{color:#a9a9b3}.dark-theme .archive .tag-cloud-tags a sup{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}}
+@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{font-size:1.5rem}.single .content>h2 code{font-size:1.25rem}.single .content>h3{font-size:1.375rem}.single .content>h3 code{font-size:1.125rem}.single .content>h4{font-size:1.25rem}.single .content>h4 code{font-size:1rem}.single .content>h5{font-size:1.125rem}.single .content>h6{font-size:1rem}.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}.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 sup{color:#a9a9b3}.dark-theme .archive .tag-cloud-tags a sup{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