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

github.com/heyeshuang/hugo-theme-tokiwa.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHe Yeshuang <yeshuanghe@gmail.com>2020-06-20 16:49:36 +0300
committerHe Yeshuang <yeshuanghe@gmail.com>2020-06-20 16:49:36 +0300
commit7394031c54d66e6285b4dcc041651a9125a0ff50 (patch)
treea0b2acbe50930716a0b4e2f686c328bc68687499
parent3df24a82173e10f6b9b1a59f7e588a3e38fb3c97 (diff)
add 'table of contents' feature
-rw-r--r--exampleSite/content/post/markdown-syntax.md272
-rwxr-xr-xlayouts/_default/baseof.html2
-rw-r--r--layouts/partials/page-header.html1
-rw-r--r--layouts/partials/toc.html10
-rw-r--r--package-lock.json259
-rwxr-xr-xpackage.json2
-rw-r--r--src/sass/style.scss97
-rw-r--r--static/dist/app.css2
8 files changed, 481 insertions, 164 deletions
diff --git a/exampleSite/content/post/markdown-syntax.md b/exampleSite/content/post/markdown-syntax.md
index d60c404..8ab118d 100644
--- a/exampleSite/content/post/markdown-syntax.md
+++ b/exampleSite/content/post/markdown-syntax.md
@@ -1,147 +1,205 @@
-+++
-author = "Hugo Authors"
-title = "Markdown Syntax Guide"
-date = "2019-03-11"
-description = "Sample article showcasing basic Markdown syntax and formatting for HTML elements."
-tags = [
- "markdown",
- "css",
- "html",
- "themes",
-]
-categories = [
- "themes",
- "syntax",
-]
-series = ["Themes Guide"]
-aliases = ["migrate-from-jekyl"]
-+++
-This article offers a sample of basic Markdown syntax that can be used in Hugo content files, also it shows whether basic HTML elements are decorated with CSS in a Hugo theme.
-<!--more-->
-
-## Headings
+---
+author : "HeYSH"
+type : "post"
+tags :
+ - 网易有钱
+ - 记账
+ - Beancount
+ - import
+categories :
+ - 折腾
+ - 生活
+title: "Beancount试用,半年后"
+description: "冷启动,自动记账,以及“养成记账的习惯”"
+date: 2019-11-07T21:58:22+08:00
+lastmod: 2020-06-13T23:39+08:00
+draft: false
+toc: true
+---
+自从2017年开始,我一直使用 *网易有钱* 记账。不得不说,如果像某落水狗讲的那样,“中国人不在乎隐私”的话,这确实是一个非常好用的APP,下载账单、导入数据一气呵成,连余额宝的利息都能够算得分毫不差——
+
+直到最近,大概是骂挨得太多,或是界面里终于塞不下更多广告,这个APP①用“维护中”挡住了所有同步按钮,并且②停止了维护。
+
+用8元买回了本属于自己的数据后,我想起之前听说过的[Beancount](https://www.byvoid.com/zht/blog/beancount-bookkeeping-1)。于是,我给那些数据找到了一些新用途。
+
+## 冷启动
+
+首先,我阅读了[这篇博文](https://yuchi.me/post/beancount-intro/),搭起了Beancount。接着,我又写了一些其它的[脚本](https://github.com/heyeshuang/beancount-homemade-importers)。
+
+### 自动建立收支账户
+### 自动建立收支账户
+### 自动建立收支账户
+### 自动建立收支账户
+### 自动建立收支账户
+### 自动建立收支账户
+### 自动建立收支账户
+### 自动建立收支账户
+### 自动建立收支账户
+### 自动建立收支账户
+### 自动建立收支账户
+### 自动建立收支账户
+
+之前的理财软件大多会提供一些初始分类,比如说mint所用的类别列表在[这里](https://www.mint.com/mint-categories)。
+对于本人[^self]之前的账本,有过记录的大概是这样几类:
+
+`
+{'交通,',
+ '交通,打车',
+ '交通,机票',
+ '交通,火车',
+ '人情,',
+ '住房,',
+ '住房,家具',
+ '住房,家纺',
+ '住房,物业水电',
+ '住房,装修',
+ '其他,',
+ '医疗,',
+ '医疗,药品',
+ '娱乐,',
+ '娱乐,电影',
+ '投资亏损,',
+ '文教,',
+ '文教,书刊',
+ '文教,文具',
+ '旅行,',
+ '旅行,景点门票',
+ '旅行,酒店',
+ '汽车,',
+ '购物,',
+ '购物,数码',
+ '购物,日用',
+ '购物,玩具',
+ '购物,电器',
+ '购物,美妆',
+ '购物,运动用品',
+ '购物,鞋服',
+ '购物,饰品',
+ '通讯,',
+ '通讯,话费',
+ '零食烟酒,',
+ '零食烟酒,水果',
+ '零食烟酒,烟酒',
+ '零食烟酒,茶水',
+ '零食烟酒,零食',
+ '零食烟酒,饮料',
+ '餐饮,',
+ '餐饮,三餐',
+ '餐饮,食材'}
+`
+
+对这些分类,利用人工~~智能~~,为每一项建立了对应的`account`,形成了一个[dict](https://github.com/heyeshuang/beancount-homemade-importers/blob/master/importers/youqian/youqianDict.py)。
+
+如果你已经下载了[beancount-homemade-importers](https://github.com/heyeshuang/beancount-homemade-importers),你可以用里面的`importers/
+youqian/accountInit.py`来自动建立这些`accounts`:
+
+```bash
+python importers/youqian/accountInit.py > New_Accounts.bean
+# 或:如果之前已经建立了一些账户的话
+python importers/youqian/accountInit.py Existing_Accounts.bean > New_Accounts.bean
+```
-The following HTML `<h1>`—`<h6>` elements represent six levels of section headings. `<h1>` is the highest section level while `<h6>` is the lowest.
+### 导入网易有钱的收入、支出数据
-# H1
-## H2
-### H3
-#### H4
-##### H5
-###### H6
+Beancount的[文档](https://docs.google.com/document/d/11EwQdujzEo2cxqaF5PgxCEZXWfKKQCYSMfdJowp_1S8/edit#)里已经对导入脚本进行了比较详细的说明。从[这个例子](https://bitbucket.org/blais/beancount/src/tip/examples/ingest/office/importers/utrade/)开始,基本上只要实现几个函数就行。
-## Paragraph
+在[beancount-homemade-importers](https://github.com/heyeshuang/beancount-homemade-importers)中,我写了一个简单的网易有钱导入脚本。在使用之前,需要用excel把默认的`xlsx`格式转换为`收入.csv`和`支出.csv`。
-Xerum, quo qui aut unt expliquam qui dolut labo. Aque venitatiusda cum, voluptionse latur sitiae dolessi aut parist aut dollo enim qui voluptate ma dolestendit peritin re plis aut quas inctum laceat est volestemque commosa as cus endigna tectur, offic to cor sequas etum rerum idem sintibus eiur? Quianimin porecus evelectur, cum que nis nust voloribus ratem aut omnimi, sitatur? Quiatem. Nam, omnis sum am facea corem alique molestrunt et eos evelece arcillit ut aut eos eos nus, sin conecerem erum fuga. Ri oditatquam, ad quibus unda veliamenimin cusam et facea ipsamus es exerum sitate dolores editium rerore eost, temped molorro ratiae volorro te reribus dolorer sperchicium faceata tiustia prat.
+之后,使用
-Itatur? Quiatae cullecum rem ent aut odis in re eossequodi nonsequ idebis ne sapicia is sinveli squiatum, core et que aut hariosam ex eat.
+```
+bean-extract importers/youqian/youqian_expense.import documents.tmp/支出.csv > 支出.bean
+bean-extract importers/youqian/youqian_income.import documents.tmp/收入.csv > 收入.bean
+```
-## Blockquotes
+来导入。
-The blockquote element represents content that is quoted from another source, optionally with a citation which must be within a `footer` or `cite` element, and optionally with in-line changes such as annotations and abbreviations.
+## 自动记账
-#### Blockquote without attribution
+写下这个标题是在2020年6月。在使用beancount半年之后,账本一共增加了270条内容,所需的时间每月不超过1小时。
-> Tiam, ad mint andaepu dandae nostion secatur sequo quae.
-> **Note** that you can use *Markdown syntax* within a blockquote.
+![](条目.png)
-#### Blockquote with attribution
+### 梳理资金的流向
-> Don't communicate by sharing memory, share memory by communicating.</p>
-> — <cite>Rob Pike[^1]</cite>
+作为一个单身工薪族,我的~~主要~~全部收入来自于工资,在经过一些卡片后,从微信、支付宝和其他地方流走。
+![用mermaid画的流程图](mermaid-diagram.svg)
-[^1]: The above quote is excerpted from Rob Pike's [talk](https://www.youtube.com/watch?v=PAAkCSZUG1c) during Gopherfest, November 18, 2015.
+{{% spoiler "(这张图是用mermaid画的,这里是源代码)" %}}
+```mermaid
+graph LR;
+ linkStyle default interpolate basis
+ subgraph one [开销]
+ A([支付宝]);
+ B([微信]);
+ G(["京东、刷卡"]);
+ H([理财]);
+ end
+ subgraph two [收入]
+ C[工商银行];
+ end
+ D[农业银行];
+ E([中国银行]);
+ F([招商银行]);
-## Tables
+ E --> H
+ E & F --> A & B
+ C --> E & D & F
+ F --> G
+ classDef auto fill:#9ACFBF
+ class B,E,F auto
+```
+{{%/spoiler%}}
-Tables aren't part of the core Markdown spec, but Hugo supports supports them out-of-the-box.
+其中,有一些银行卡(比如图中的农业银行)每月的转账记录不超过2条,这时候只要手工敲上几行就可以了。对于另外的、日常生活的花费,手动记录带来了大量时间的浪费。这时候,找到流动的枢纽,并对它们的账单进行批量处理,就可以从重复劳动中解放出来。对于我来说,要进行批量处理的节点是`中国银行`,`招商银行`和`微信`。[^alipay]
- Name | Age
---------|------
- Bob | 27
- Alice | 23
+### 写一些脚本
-#### Inline Markdown within tables
+所以,我写了中国银行、招商银行和微信钱包对账单的导入脚本。Beancount拥有比较强大的导入功能,对于简单的、CSV格式的账单文件,只要在自带的`beancount.ingest.importers.csv.importer`上[稍作修改](https://github.com/heyeshuang/beancount-homemade-importers/blob/master/importers/boc.import)就可以了;对于其它较为复杂的账单,可以自行扩展`ImporterProtocol`的子类,在[官方文档](https://docs.google.com/document/d/11EwQdujzEo2cxqaF5PgxCEZXWfKKQCYSMfdJowp_1S8/edit#heading=h.z153vh2ll6ix)中有较为详细的说明。
-| Inline&nbsp;&nbsp;&nbsp; | Markdown&nbsp;&nbsp;&nbsp; | In&nbsp;&nbsp;&nbsp; | Table |
-| ---------- | --------- | ----------------- | ---------- |
-| *italics* | **bold** | ~~strikethrough~~&nbsp;&nbsp;&nbsp; | `code` |
+另外,我还发现了[smart_importer](https://github.com/beancount/smart_importer),只要简单地增加hook,就可以给导入脚本增加更好的去重、智能猜测分类等更帅气的功能。
-## Code Blocks
+### 在每个账单日运行一次
-#### Code block with backticks
+在账单目录下,我建立了一个`TODO`文件:
```
-html
-<!DOCTYPE html>
-<html lang="en">
-<head>
- <meta charset="UTF-8">
- <title>Example HTML5 Document</title>
-</head>
-<body>
- <p>Test</p>
-</body>
-</html>
+自动导入微信、中国银行和招商(账单日)
+手动导入工行和农行
```
-#### Code block indented with four spaces
+因为微信的账单信息比较多,我一般先从它开始。每月信用卡的账单日,下载微信钱包对账单,然后运行:
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Example HTML5 Document</title>
- </head>
- <body>
- <p>Test</p>
- </body>
- </html>
+```bash
+bean-extract importers/wechat.import documents.tmp/微信支付账单.csv -f main.bean > temp.bean
+```
-#### Code block with Hugo's internal highlight shortcode
-{{< highlight html >}}
-<!DOCTYPE html>
-<html lang="en">
-<head>
- <meta charset="UTF-8">
- <title>Example HTML5 Document</title>
-</head>
-<body>
- <p>Test</p>
-</body>
-</html>
-{{< /highlight >}}
+其中,`-f`用来为`smart_importer`提供学习素材。
-## List Types
+接下来打开`temp.bean`,检查人工~~智障~~智能补充的分类条目有没有什么问题。(大概率问题很多,每个月大部分的时间会花费在这里。)
-#### Ordered List
+之后,将`temp.bean`重命名为一个有意义的名字,并在`main.bean`中`import`。接下來对银行账户的导入过程中,`smart_importer`会自动去除重复账单。
-1. First item
-2. Second item
-3. Third item
+在上面的工作都完成以后,本月的账单也只剩下几条漏网之鱼了。把它们(手动)补充,并用`balance`命令检查。
-#### Unordered List
-* List item
-* Another item
-* And another item
+### 并养成“记账的好习惯”
-#### Nested list
+在某些问答网站上,在“相见恨晚的习惯”列表,记账大概能排在top10的位置;同时,在“半途而废的习惯”里,位置大概也在附近。原因并不仅仅是“缺乏自制力”,而是手动记账花费了太多时间,而效果并不是立竿见影的。在付出和反馈不成比例时,放弃就成了唯一的选择。
-* Item
-1. First Sub-item
-2. Second Sub-item
+如果每个月只要十几分钟就可以获得成就感,习惯也就自然地养成了。
-## Other Elements — abbr, sub, sup, kbd, mark
+## 又及
-<abbr title="Graphics Interchange Format">GIF</abbr> is a bitmap image format.
+> 我跟你港,这次的内容超适合作Python教程的,还能顺便学英语!只要学会了这个,年薪百万不是梦!
-H<sub>2</sub>O
+> 现在诚征 100 个~~凯子~~幸运读者给我打钱,我的支付宝是:……
-X<sup>n</sup> + Y<sup>n</sup> = Z<sup>n</sup>
+> 呃,对不起。
-Press <kbd><kbd>CTRL</kbd>+<kbd>ALT</kbd>+<kbd>Delete</kbd></kbd> to end the session.
+以上不代表博主观点。
-Most <mark>salamanders</mark> are nocturnal, and hunt for insects, worms, and other small creatures.
+[^self]:一个普通的、抠抠索索的中青年男性,未婚,不修边幅,被阳光照到会燃烧。
+[^alipay]:细心的读者可能会注意到,我并没有将支付宝也列入进来,即使和微信的地位相似。这是由于支付宝的账单并不能显示付款账户。通过余额宝和通过信用卡支付,在对账单上没有明确的区分,这会给之后的条目合并造成困难。在开始用beancount之后,因为手动记录太麻烦,我很少用支付宝付款。 \ No newline at end of file
diff --git a/layouts/_default/baseof.html b/layouts/_default/baseof.html
index a5c058c..f00228e 100755
--- a/layouts/_default/baseof.html
+++ b/layouts/_default/baseof.html
@@ -115,7 +115,7 @@
<div class="p-6 sm:p-10 md:p-16 flex flex-wrap">
<header class="w-full md:w-2/5 xl:w-1/2 md:pr-12 lg:pr-20 xl:pr-24 order-1 md:order-1 max-w-2xl">
<div
- class="z-50 bg-gray-100 lg:min-w-0.7 max-w-xl md:float-right md:text-right leading-loose tracking-tight md:sticky md:top-0 pt-2">
+ class="z-50 bg-gray-100 bg-opacity-75 bg-opacity-custom lg:min-w-0.7 max-w-xl md:float-right md:text-right leading-loose tracking-tight md:sticky md:top-0 pt-2">
{{ block "header" . }}{{ partial "site-header.html" .}}{{ end }}
</div>
</header>
diff --git a/layouts/partials/page-header.html b/layouts/partials/page-header.html
index e66b019..6aeb563 100644
--- a/layouts/partials/page-header.html
+++ b/layouts/partials/page-header.html
@@ -16,4 +16,5 @@
{{- .Date.Format "2006-1-2 15:04" -}}
</time>
</div>
+{{ partial "toc.html" . }}
<hr /> \ No newline at end of file
diff --git a/layouts/partials/toc.html b/layouts/partials/toc.html
new file mode 100644
index 0000000..1c6b5e0
--- /dev/null
+++ b/layouts/partials/toc.html
@@ -0,0 +1,10 @@
+{{ if (.Params.toc) }}
+<details class="toc" open>
+<summary>
+ <hr />
+</summary>
+<div class="inline toc-content">
+ {{.TableOfContents}}
+</div>
+</details>
+{{ end }} \ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index dac5fb2..88e0723 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1397,17 +1397,17 @@
},
"dependencies": {
"acorn": {
- "version": "7.1.1",
- "resolved": "https://registry.npm.taobao.org/acorn/download/acorn-7.1.1.tgz",
- "integrity": "sha1-41Zo3gtALzWd5RXFSCoaufiaab8=",
+ "version": "7.3.1",
+ "resolved": "https://registry.npm.taobao.org/acorn/download/acorn-7.3.1.tgz?cache=0&sync_timestamp=1591869424806&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn%2Fdownload%2Facorn-7.3.1.tgz",
+ "integrity": "sha1-hQEHVNtTw/uvO56j4IOqXF0Uf/0=",
"dev": true
}
}
},
"acorn-walk": {
- "version": "7.1.1",
- "resolved": "https://registry.npm.taobao.org/acorn-walk/download/acorn-walk-7.1.1.tgz?cache=0&sync_timestamp=1581612804260&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn-walk%2Fdownload%2Facorn-walk-7.1.1.tgz",
- "integrity": "sha1-NF8N/61cc15zc9L+yaECPmpEuD4=",
+ "version": "7.2.0",
+ "resolved": "https://registry.npm.taobao.org/acorn-walk/download/acorn-walk-7.2.0.tgz?cache=0&sync_timestamp=1592373566227&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Facorn-walk%2Fdownload%2Facorn-walk-7.2.0.tgz",
+ "integrity": "sha1-DeiJpgEgOQmw++B7iTjcIdLpZ7w=",
"dev": true
},
"ajv": {
@@ -2706,9 +2706,9 @@
}
},
"css-unit-converter": {
- "version": "1.1.1",
- "resolved": "https://registry.npm.taobao.org/css-unit-converter/download/css-unit-converter-1.1.1.tgz",
- "integrity": "sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY=",
+ "version": "1.1.2",
+ "resolved": "https://registry.npm.taobao.org/css-unit-converter/download/css-unit-converter-1.1.2.tgz",
+ "integrity": "sha1-THf1oZVObb/2BpXsshTjJwQ2qyE=",
"dev": true
},
"css-what": {
@@ -6730,9 +6730,9 @@
},
"dependencies": {
"postcss": {
- "version": "7.0.27",
- "resolved": "https://registry.npm.taobao.org/postcss/download/postcss-7.0.27.tgz?cache=0&sync_timestamp=1581994906320&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss%2Fdownload%2Fpostcss-7.0.27.tgz",
- "integrity": "sha1-zGfNxrDao3UQW3xCSoVWc0X8VNk=",
+ "version": "7.0.32",
+ "resolved": "https://registry.npm.taobao.org/postcss/download/postcss-7.0.32.tgz?cache=0&sync_timestamp=1591101998893&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss%2Fdownload%2Fpostcss-7.0.32.tgz",
+ "integrity": "sha1-QxDW7jRwU9o0M9sr5JKIPWLOxZ0=",
"dev": true,
"requires": {
"chalk": "^2.4.2",
@@ -7010,9 +7010,9 @@
},
"dependencies": {
"postcss": {
- "version": "7.0.27",
- "resolved": "https://registry.npm.taobao.org/postcss/download/postcss-7.0.27.tgz?cache=0&sync_timestamp=1581994906320&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss%2Fdownload%2Fpostcss-7.0.27.tgz",
- "integrity": "sha1-zGfNxrDao3UQW3xCSoVWc0X8VNk=",
+ "version": "7.0.32",
+ "resolved": "https://registry.npm.taobao.org/postcss/download/postcss-7.0.32.tgz?cache=0&sync_timestamp=1591101998893&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss%2Fdownload%2Fpostcss-7.0.32.tgz",
+ "integrity": "sha1-QxDW7jRwU9o0M9sr5JKIPWLOxZ0=",
"dev": true,
"requires": {
"chalk": "^2.4.2",
@@ -8577,14 +8577,17 @@
}
},
"tailwindcss": {
- "version": "1.2.0",
- "resolved": "https://registry.npm.taobao.org/tailwindcss/download/tailwindcss-1.2.0.tgz",
- "integrity": "sha1-XfMXzrrE8xMfJ10lijnaG6Og8pE=",
+ "version": "1.4.6",
+ "resolved": "https://registry.npm.taobao.org/tailwindcss/download/tailwindcss-1.4.6.tgz",
+ "integrity": "sha1-F7NxZszaCNfn+cqZXqSM4eAIlwA=",
"dev": true,
"requires": {
+ "@fullhuman/postcss-purgecss": "^2.1.2",
"autoprefixer": "^9.4.5",
+ "browserslist": "^4.12.0",
"bytes": "^3.0.0",
- "chalk": "^3.0.0",
+ "chalk": "^4.0.0",
+ "color": "^3.1.2",
"detective": "^5.2.0",
"fs-extra": "^8.0.0",
"lodash": "^4.17.15",
@@ -8600,24 +8603,104 @@
"resolve": "^1.14.2"
},
"dependencies": {
- "ansi-styles": {
- "version": "4.2.1",
- "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-4.2.1.tgz",
- "integrity": "sha1-kK51xCTQCNJiTFvynq0xd+v881k=",
+ "@fullhuman/postcss-purgecss": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npm.taobao.org/@fullhuman/postcss-purgecss/download/@fullhuman/postcss-purgecss-2.3.0.tgz",
+ "integrity": "sha1-UKlUdX7HhpZhXT4Rjj/uLZKRiC4=",
"dev": true,
"requires": {
- "@types/color-name": "^1.1.1",
- "color-convert": "^2.0.1"
+ "postcss": "7.0.32",
+ "purgecss": "^2.3.0"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npm.taobao.org/chalk/download/chalk-2.4.2.tgz?cache=0&sync_timestamp=1591686984650&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-2.4.2.tgz",
+ "integrity": "sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-5.5.0.tgz",
+ "integrity": "sha1-4uaaRKyHcveKHsCzW2id9lMO/I8=",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.32",
+ "resolved": "https://registry.npm.taobao.org/postcss/download/postcss-7.0.32.tgz?cache=0&sync_timestamp=1591101998893&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss%2Fdownload%2Fpostcss-7.0.32.tgz",
+ "integrity": "sha1-QxDW7jRwU9o0M9sr5JKIPWLOxZ0=",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.4.2",
+ "source-map": "^0.6.1",
+ "supports-color": "^6.1.0"
+ }
+ }
}
},
+ "browserslist": {
+ "version": "4.12.0",
+ "resolved": "https://registry.npm.taobao.org/browserslist/download/browserslist-4.12.0.tgz?cache=0&sync_timestamp=1587419256330&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fbrowserslist%2Fdownload%2Fbrowserslist-4.12.0.tgz",
+ "integrity": "sha1-BsbVcVoe3mxR/Dn/Z/1kf3QLZW0=",
+ "dev": true,
+ "requires": {
+ "caniuse-lite": "^1.0.30001043",
+ "electron-to-chromium": "^1.3.413",
+ "node-releases": "^1.1.53",
+ "pkg-up": "^2.0.0"
+ }
+ },
+ "caniuse-lite": {
+ "version": "1.0.30001084",
+ "resolved": "https://registry.npm.taobao.org/caniuse-lite/download/caniuse-lite-1.0.30001084.tgz?cache=0&sync_timestamp=1592288317961&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcaniuse-lite%2Fdownload%2Fcaniuse-lite-1.0.30001084.tgz",
+ "integrity": "sha1-AORxkx6u++71T0aqIgORTTwWVmk=",
+ "dev": true
+ },
"chalk": {
- "version": "3.0.0",
- "resolved": "https://registry.npm.taobao.org/chalk/download/chalk-3.0.0.tgz",
- "integrity": "sha1-P3PCv1JlkfV0zEksUeJFY0n4ROQ=",
+ "version": "4.1.0",
+ "resolved": "https://registry.npm.taobao.org/chalk/download/chalk-4.1.0.tgz?cache=0&sync_timestamp=1591686984650&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-4.1.0.tgz",
+ "integrity": "sha1-ThSHCmGNni7dl92DRf2dncMVZGo=",
"dev": true,
"requires": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
+ },
+ "dependencies": {
+ "ansi-styles": {
+ "version": "4.2.1",
+ "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-4.2.1.tgz",
+ "integrity": "sha1-kK51xCTQCNJiTFvynq0xd+v881k=",
+ "dev": true,
+ "requires": {
+ "@types/color-name": "^1.1.1",
+ "color-convert": "^2.0.1"
+ }
+ },
+ "has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npm.taobao.org/has-flag/download/has-flag-4.0.0.tgz",
+ "integrity": "sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=",
+ "dev": true
+ },
+ "supports-color": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-7.1.0.tgz",
+ "integrity": "sha1-aOMlkd9z4lrRxLSRCKLsUHliv9E=",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
+ }
}
},
"color-convert": {
@@ -8635,20 +8718,122 @@
"integrity": "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=",
"dev": true
},
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npm.taobao.org/has-flag/download/has-flag-4.0.0.tgz",
- "integrity": "sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=",
+ "commander": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npm.taobao.org/commander/download/commander-5.1.0.tgz?cache=0&sync_timestamp=1592632075120&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcommander%2Fdownload%2Fcommander-5.1.0.tgz",
+ "integrity": "sha1-Rqu9FlL44Fm92u+Zu9yyrZzxea4=",
"dev": true
},
- "supports-color": {
- "version": "7.1.0",
- "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-7.1.0.tgz",
- "integrity": "sha1-aOMlkd9z4lrRxLSRCKLsUHliv9E=",
+ "electron-to-chromium": {
+ "version": "1.3.480",
+ "resolved": "https://registry.npm.taobao.org/electron-to-chromium/download/electron-to-chromium-1.3.480.tgz?cache=0&sync_timestamp=1592638610863&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Felectron-to-chromium%2Fdownload%2Felectron-to-chromium-1.3.480.tgz",
+ "integrity": "sha1-GQrkUHRXg0mkxPM2+6KedrIOnvU=",
+ "dev": true
+ },
+ "find-up": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-2.1.0.tgz",
+ "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
"dev": true,
"requires": {
- "has-flag": "^4.0.0"
+ "locate-path": "^2.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-2.0.0.tgz",
+ "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
+ "dev": true,
+ "requires": {
+ "p-locate": "^2.0.0",
+ "path-exists": "^3.0.0"
}
+ },
+ "p-limit": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npm.taobao.org/p-limit/download/p-limit-1.3.0.tgz?cache=0&sync_timestamp=1591460606987&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-limit%2Fdownload%2Fp-limit-1.3.0.tgz",
+ "integrity": "sha1-uGvV8MJWkJEcdZD8v8IBDVSzzLg=",
+ "dev": true,
+ "requires": {
+ "p-try": "^1.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "2.0.0",
+ "resolved": "http://registry.npm.taobao.org/p-locate/download/p-locate-2.0.0.tgz",
+ "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
+ "dev": true,
+ "requires": {
+ "p-limit": "^1.1.0"
+ }
+ },
+ "p-try": {
+ "version": "1.0.0",
+ "resolved": "http://registry.npm.taobao.org/p-try/download/p-try-1.0.0.tgz",
+ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
+ "dev": true
+ },
+ "pkg-up": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npm.taobao.org/pkg-up/download/pkg-up-2.0.0.tgz",
+ "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=",
+ "dev": true,
+ "requires": {
+ "find-up": "^2.1.0"
+ }
+ },
+ "purgecss": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npm.taobao.org/purgecss/download/purgecss-2.3.0.tgz",
+ "integrity": "sha1-UydYer9XleZUFRevixkKb7VIi7M=",
+ "dev": true,
+ "requires": {
+ "commander": "^5.0.0",
+ "glob": "^7.0.0",
+ "postcss": "7.0.32",
+ "postcss-selector-parser": "^6.0.2"
+ },
+ "dependencies": {
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npm.taobao.org/chalk/download/chalk-2.4.2.tgz?cache=0&sync_timestamp=1591686984650&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fchalk%2Fdownload%2Fchalk-2.4.2.tgz",
+ "integrity": "sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ=",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "dependencies": {
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-5.5.0.tgz",
+ "integrity": "sha1-4uaaRKyHcveKHsCzW2id9lMO/I8=",
+ "dev": true,
+ "requires": {
+ "has-flag": "^3.0.0"
+ }
+ }
+ }
+ },
+ "postcss": {
+ "version": "7.0.32",
+ "resolved": "https://registry.npm.taobao.org/postcss/download/postcss-7.0.32.tgz?cache=0&sync_timestamp=1591101998893&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpostcss%2Fdownload%2Fpostcss-7.0.32.tgz",
+ "integrity": "sha1-QxDW7jRwU9o0M9sr5JKIPWLOxZ0=",
+ "dev": true,
+ "requires": {
+ "chalk": "^2.4.2",
+ "source-map": "^0.6.1",
+ "supports-color": "^6.1.0"
+ }
+ }
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
+ "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+ "dev": true
}
}
},
diff --git a/package.json b/package.json
index 39f96f1..4c91255 100755
--- a/package.json
+++ b/package.json
@@ -31,7 +31,7 @@
"postcss-loader": "^3.0.0",
"sass-loader": "^8.0.2",
"style-loader": "^1.1.3",
- "tailwindcss": "^1.2.0",
+ "tailwindcss": "^1.4.0",
"tailwindcss-typography": "^3.0.1",
"uglifyjs-webpack-plugin": "^2.2.0",
"webpack": "^4.42.1",
diff --git a/src/sass/style.scss b/src/sass/style.scss
index 7d6e6b5..4b22ddb 100644
--- a/src/sass/style.scss
+++ b/src/sass/style.scss
@@ -49,21 +49,6 @@ hr {
height: 5px;
}
-// hr.double-line {
-// border: none;
-// border-bottom: 1px solid theme('colors.java.500');
-// border-top: 1px solid theme('colors.java.300');
-// margin-bottom: 0.8em;
-// height: 1px;
-// text-align: center; /* horizontal centering */
-// }
-// hr.double-line:after {
-// content: "§"; /* section sign */
-// color: #999;
-// display: inline; /* for vertical centering and background knockout */
-// background-color: #454545; /* same as background color */
-// padding: 0 0.5em; /* size of background color knockout */
-// }
hr.double-line {
border-top: 3px double theme('colors.eucalyptus.400');
text-align: center;
@@ -309,7 +294,85 @@ a {
// src: url('/fonts/GlowSansSC-Extended-Light.woff2') format('woff2'),
// /* Chrome 26+, Opera 23+, Firefox 39+ */
// }
+@supports (-webkit-backdrop-filter:none) or (backdrop-filter:none) {
+ .bg-opacity-custom {
+ -webkit-backdrop-filter: blur(3px);
+ backdrop-filter: blur(3px);
+ }
+}
+/******************Table of Contents' Style***********************/
+
+details.toc {
+ nav {
+ // display: inline;
+ }
+
+ nav ul {
+ list-style: disc;
+ list-style-position: inside;
+ direction: rtl;
+
+ ul {
+ list-style: circle;
+ list-style-position: inside;
+ margin-right: 1em;
+ }
+ }
+
+ nav ul>li {
+ @apply font-light;
+
+ @apply text-java-700;
+
+ a {
+ @apply text-java-700;
+ }
+ }
+
+ nav ul ul>li {
+ @apply leading-normal;
+ @apply text-sm;
+
+ @apply text-java-600;
+
+ a {
+ @apply text-java-600;
+ }
+ }
+
+ >summary {
+ cursor: pointer;
+ list-style: none;
+ }
+
+ >summary::-webkit-details-marker {
+ display: none;
+ }
+
+ hr {
+ border-top: 1px dotted theme("colors.java.400");
+ border-bottom: 1px dotted #fff;
+ margin-top: 0.8em;
+ margin-bottom: 0.4em;
+ text-align: center;
+ }
+
+ hr:after {
+ content: 'Table of Contents';
+ display: inline-block;
+ position: relative;
+ top: -19px;
+ padding: 0 5px;
+ @apply bg-opacity-75;
+ background: theme("colors.gray.100");
+ color: theme("colors.java.700");
+ font-size: 18px;
+ font-family: theme("fontFamily.serif");
+ }
+
+ }
+ @import 'tocbot/src/scss/tocbot';
-/*! purgecss end ignore */
+ /*! purgecss end ignore */
-@import "tailwindcss/utilities"; \ No newline at end of file
+ @import "tailwindcss/utilities"; \ No newline at end of file
diff --git a/static/dist/app.css b/static/dist/app.css
index bf2d2ce..9ac39d2 100644
--- a/static/dist/app.css
+++ b/static/dist/app.css
@@ -1 +1 @@
-/*! 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:.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;-webkit-text-decoration:underline dotted;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:-.25em}sup{top:-.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}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .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}[hidden],template{display:none}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}button{background-color:transparent;background-image:none;padding:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}fieldset,ol,ul{margin:0;padding:0}ol,ul{list-style:none}html{font-family:Source Han Sans SC,Source Han Sans CN,Noto Sans CJK SC,Noto Sans,-apple-system,Helvetica Neue,Helvetica,Nimbus Sans L,Arial,Liberation Sans,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Wenquanyi Micro Hei,WenQuanYi Zen Hei,ST Heiti,SimHei,WenQuanYi Zen Hei Sharp,sans-serif;line-height:1.5}*,:after,:before{box-sizing:border-box;border:0 solid #e2e8f0}hr{border-top-width:1px}img{border-style:solid}textarea{resize:vertical}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#a0aec0}input::-moz-placeholder,textarea::-moz-placeholder{color:#a0aec0}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#a0aec0}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:#a0aec0}input::placeholder,textarea::placeholder{color:#a0aec0}[role=button],button{cursor:pointer}table{border-collapse:collapse}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}button,input,optgroup,select,textarea{padding:0;line-height:inherit;color:inherit}code,kbd,pre,samp{font-family:Fira Code,Cascadia Code,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Sarasa Mono SC,Noto Sans CJK SC,"monospace",monospace}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}.heading,h1{font-family:"Source Han Serif SC","Source Han Serif CN","Noto Serif CJK SC",Songti SC,STSong,AR PL New Sung,AR PL SungtiL GB,NSimSun,SimSun,TW-Sung,WenQuanYi Bitmap Song,AR PL UMing CN,AR PL UMing HK,AR PL UMing TW,AR PL UMing TW MBE,PMingLiU,MingLiU,serif;font-weight:500;line-height:1.25;color:#01513a}h1{font-size:1.875rem}@media (min-width:1024px){h1{font-size:2.25rem}}h2{font-family:"Source Han Serif SC","Source Han Serif CN","Noto Serif CJK SC",Songti SC,STSong,AR PL New Sung,AR PL SungtiL GB,NSimSun,SimSun,TW-Sung,WenQuanYi Bitmap Song,AR PL UMing CN,AR PL UMing HK,AR PL UMing TW,AR PL UMing TW MBE,PMingLiU,MingLiU,serif;font-weight:500;line-height:1.25;color:#01513a;font-size:1.5rem}@media (min-width:1024px){h2{font-size:1.875rem}}h3{font-family:"Source Han Serif SC","Source Han Serif CN","Noto Serif CJK SC",Songti SC,STSong,AR PL New Sung,AR PL SungtiL GB,NSimSun,SimSun,TW-Sung,WenQuanYi Bitmap Song,AR PL UMing CN,AR PL UMing HK,AR PL UMing TW,AR PL UMing TW MBE,PMingLiU,MingLiU,serif;font-weight:500;line-height:1.25;color:#01513a;font-size:1.25rem}h4,h5,h6{font-family:"Source Han Serif SC","Source Han Serif CN","Noto Serif CJK SC",Songti SC,STSong,AR PL New Sung,AR PL SungtiL GB,NSimSun,SimSun,TW-Sung,WenQuanYi Bitmap Song,AR PL UMing CN,AR PL UMing HK,AR PL UMing TW,AR PL UMing TW MBE,PMingLiU,MingLiU,serif;font-weight:500;line-height:1.25;color:#01513a;font-size:1.125rem}hr{border:none;border-bottom:1px solid #9acfbf;margin-bottom:.8em;height:5px}hr.double-line{border-top:3px double #4eab90;text-align:center;border-bottom:none}hr.double-line:after{content:"\2767";display:inline-block;position:relative;top:-27px;padding:0 10px;background:#f7fafc;color:#4eab90;font-size:30px}a:not(.icon){text-decoration:none;background-image:linear-gradient(currentColor,currentColor);background-position:0 100%;background-repeat:no-repeat;background-size:0 2px;transition:background-size .3s cubic-bezier(0,.5,0,1)}a:not(.icon):focus,a:not(.icon):hover{text-decoration:none;background-size:100% 2px}a{color:#028760}a:focus,a:hover{color:#49beb7}.a-gray a{color:#718096}.a-gray a:focus,.a-gray a:hover{color:#cbd5e0}.c-rich-text{font-family:Source Han Sans SC,Source Han Sans CN,Noto Sans CJK SC,Noto Sans,-apple-system,Helvetica Neue,Helvetica,Nimbus Sans L,Arial,Liberation Sans,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Wenquanyi Micro Hei,WenQuanYi Zen Hei,ST Heiti,SimHei,WenQuanYi Zen Hei Sharp,sans-serif;font-size:1rem;line-height:1.625}.c-rich-text ::-moz-selection{color:#edf9f8;background-color:#2c726e}.c-rich-text ::selection{color:#edf9f8;background-color:#2c726e}.c-rich-text a{color:#028760}.c-rich-text a:focus,.c-rich-text a:hover{color:#49beb7}.c-rich-text>*+*{margin-top:1.5rem}.c-rich-text li{margin-bottom:.25rem}.c-rich-text li p{display:inline}.c-rich-text ul{list-style-type:square;list-style-position:inside}.c-rich-text ol{list-style-type:lower-greek;list-style-position:inside}.c-rich-text li>ol,.c-rich-text li>ul{margin-left:1rem}.c-rich-text .footnotes ol{list-style-type:decimal}.c-rich-text mark{background-color:#b6e5e2;border-bottom-color:#42aba5;border-bottom-width:2px;padding:2px;margin:0 5px}.c-rich-text img{box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05)}.c-rich-text table{overflow-x:auto;-webkit-overflow-scrolling:auto;table-layout:auto}.c-rich-text td,.c-rich-text th{border-bottom-color:#42aba5;border-bottom-width:1px;padding:.5rem 1rem}.c-rich-text th{border-top-width:1px;background-color:#edf9f8;border-top-color:#42aba5}.c-rich-text b,.c-rich-text strong{font-weight:700;color:#027a56}.c-rich-text em,.c-rich-text i{font-style:italic}.c-rich-text sub,.c-rich-text sup{font-size:.75rem;vertical-align:baseline}.c-rich-text abbr,.c-rich-text acronym{border-bottom:1px dotted;font-variant:normal;text-decoration:none}.c-rich-text abbr{cursor:help}.c-rich-text code,.c-rich-text pre,.c-rich-text pre tt{font-family:Fira Code,Cascadia Code,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Sarasa Mono SC,Noto Sans CJK SC,"monospace",monospace}.c-rich-text code,.c-rich-text kbd,.c-rich-text pre tt{padding-left:.25rem;padding-right:.25rem;border-width:1px;border-color:#80d2cd;background:repeating-linear-gradient(45deg,#b6e5e2,#b6e5e2 1px,#edf9f8 0,#edf9f8 5px)}.c-rich-text kbd kbd,.c-rich-text pre code{padding-left:0;padding-right:0;border-style:none;background:none}.c-rich-text pre{border-bottom-right-radius:.5rem;border:1px solid #49beb7;background-color:#edf9f8;padding:1em 1.5em;display:block}.c-rich-text .highlight,.c-rich-text pre{-webkit-overflow-scrolling:auto;overflow-x:auto}.c-rich-text blockquote{position:relative;margin-left:2rem;padding-right:1.5rem;padding-left:.75rem;color:#718096;border-left-width:2px;border-color:#49beb7}.page-item{flex-grow:1}.page-item.disabled a{color:#cbd5e0}.page-item.active a{color:#80d2cd}@media (min-width:1024px){.waterfall{-moz-column-count:2;column-count:2;-moz-column-gap:1rem;column-gap:1rem}.pin{-moz-column-break-inside:avoid;break-inside:avoid;padding:5px}}.bg-gray-100{background-color:#f7fafc}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.table{display:table}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.flex-wrap-reverse{flex-wrap:wrap-reverse}.items-start{align-items:flex-start}.items-baseline{align-items:baseline}.self-end{align-self:flex-end}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-between{justify-content:space-between}.content-end{align-content:flex-end}.flex-grow-0{flex-grow:0}.flex-grow-3{flex-grow:3}.flex-grow{flex-grow:1}.flex-shrink-0{flex-shrink:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.float-left{float:left}.clearfix:after{content:"";display:table;clear:both}.font-sans{font-family:Source Han Sans SC,Source Han Sans CN,Noto Sans CJK SC,Noto Sans,-apple-system,Helvetica Neue,Helvetica,Nimbus Sans L,Arial,Liberation Sans,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Wenquanyi Micro Hei,WenQuanYi Zen Hei,ST Heiti,SimHei,WenQuanYi Zen Hei Sharp,sans-serif}.font-serif{font-family:"Source Han Serif SC","Source Han Serif CN","Noto Serif CJK SC",Songti SC,STSong,AR PL New Sung,AR PL SungtiL GB,NSimSun,SimSun,TW-Sung,WenQuanYi Bitmap Song,AR PL UMing CN,AR PL UMing HK,AR PL UMing TW,AR PL UMing TW MBE,PMingLiU,MingLiU,serif}.font-cursive{font-family:FancyTitleFont,"Source Han Serif SC","Source Han Serif CN","Noto Serif CJK SC",Songti SC,STSong,AR PL New Sung,AR PL SungtiL GB,NSimSun,SimSun,TW-Sung,WenQuanYi Bitmap Song,AR PL UMing CN,AR PL UMing HK,AR PL UMing TW,AR PL UMing TW MBE,PMingLiU,MingLiU,serif}.font-light{font-weight:300}.font-normal{font-weight:400}.font-medium{font-weight:500}.h-4{height:1rem}.h-8{height:2rem}.h-12{height:3rem}.leading-tight{line-height:1.25}.leading-relaxed{line-height:1.625}.leading-loose{line-height:2}.m-0{margin:0}.my-4{margin-top:1rem;margin-bottom:1rem}.mx-auto{margin-left:auto;margin-right:auto}.max-h-16{max-height:5rem}.max-w-xl{max-width:36rem}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.min-h-70vh{min-height:70vh}.p-0{padding:0}.p-6{padding:1.5rem}.px-1{padding-left:.25rem;padding-right:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.pt-1{padding-top:.25rem}.pl-1{padding-left:.25rem}.pt-2{padding-top:.5rem}.pb-2{padding-bottom:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pr-4{padding-right:1rem}.pb-4{padding-bottom:1rem}.pl-4{padding-left:1rem}.pr-6{padding-right:1.5rem}.pb-8{padding-bottom:2rem}.relative{position:relative}.top-0{top:0}.-bottom-1{bottom:-.25rem}.fill-current{fill:currentColor}.text-gray-200{color:#edf2f7}.text-gray-500{color:#a0aec0}.text-gray-600{color:#718096}.text-gray-700{color:#4a5568}.text-eucalyptus-400{color:#4eab90}.text-eucalyptus-500{color:#028760}.text-eucalyptus-600{color:#027a56}.text-java-700{color:#2c726e}.text-medium-red-violet-400{color:#d77ab2}.text-medium-red-violet-600{color:#b23b83}.hover\:text-gray-700:hover{color:#4a5568}.hover\:text-java-400:hover{color:#80d2cd}.hover\:text-medium-red-violet-400:hover{color:#d77ab2}.focus\:text-gray-700:focus{color:#4a5568}.text-sm{font-size:.875rem}.text-xl{font-size:1.25rem}.text-3xl{font-size:1.875rem}.italic{font-style:italic}.tracking-tight{letter-spacing:-.025em}.w-4{width:1rem}.w-8{width:2rem}.w-12{width:3rem}.w-full{width:100%}.z-50{z-index:50}@media (min-width:640px){.sm\:p-10{padding:2.5rem}}@media (min-width:768px){.md\:flex-row{flex-direction:row}.md\:flex-col{flex-direction:column}.md\:items-end{align-items:flex-end}.md\:justify-end{justify-content:flex-end}.md\:content-start{align-content:flex-start}.md\:flex-grow-0{flex-grow:0}.md\:flex-grow{flex-grow:1}.md\:order-1{order:1}.md\:order-2{order:2}.md\:order-3{order:3}.md\:order-4{order:4}.md\:float-right{float:right}.md\:mb-2{margin-bottom:.5rem}.md\:max-w-xs{max-width:20rem}.md\:p-16{padding:4rem}.md\:px-0{padding-left:0;padding-right:0}.md\:pl-4{padding-left:1rem}.md\:pr-12{padding-right:3rem}.md\:sticky{position:-webkit-sticky;position:sticky}.md\:top-0{top:0}.md\:bottom-0{bottom:0}.md\:text-right{text-align:right}.md\:w-2\/5{width:40%}.md\:w-3\/5{width:60%}}@media (min-width:1024px){.lg\:min-w-0{min-width:0}.lg\:pr-20{padding-right:5rem}}@media (min-width:1280px){.xl\:pr-24{padding-right:6rem}.xl\:w-1\/2{width:50%}} \ No newline at end of file
+/*! 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:.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;-webkit-text-decoration:underline dotted;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:-.25em}sup{top:-.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}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .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}[hidden],template{display:none}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}button{background-color:transparent;background-image:none;padding:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}fieldset,ol,ul{margin:0;padding:0}ol,ul{list-style:none}html{font-family:Source Han Sans SC,Source Han Sans CN,Noto Sans CJK SC,Noto Sans,-apple-system,Helvetica Neue,Helvetica,Nimbus Sans L,Arial,Liberation Sans,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Wenquanyi Micro Hei,WenQuanYi Zen Hei,ST Heiti,SimHei,WenQuanYi Zen Hei Sharp,sans-serif;line-height:1.5}*,:after,:before{box-sizing:border-box;border:0 solid #e2e8f0}hr{border-top-width:1px}img{border-style:solid}textarea{resize:vertical}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#a0aec0}input::-moz-placeholder,textarea::-moz-placeholder{color:#a0aec0}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#a0aec0}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:#a0aec0}input::placeholder,textarea::placeholder{color:#a0aec0}[role=button],button{cursor:pointer}table{border-collapse:collapse}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}button,input,optgroup,select,textarea{padding:0;line-height:inherit;color:inherit}code,kbd,pre,samp{font-family:Fira Code,Cascadia Code,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Sarasa Mono SC,Noto Sans CJK SC,"monospace",monospace}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}.heading,h1{font-family:"Source Han Serif SC","Source Han Serif CN","Noto Serif CJK SC",Songti SC,STSong,AR PL New Sung,AR PL SungtiL GB,NSimSun,SimSun,TW-Sung,WenQuanYi Bitmap Song,AR PL UMing CN,AR PL UMing HK,AR PL UMing TW,AR PL UMing TW MBE,PMingLiU,MingLiU,serif;font-weight:500;line-height:1.25;--text-opacity:1;color:#01513a;color:rgba(1,81,58,var(--text-opacity))}h1{font-size:1.875rem}@media (min-width:1024px){h1{font-size:2.25rem}}h2{font-family:"Source Han Serif SC","Source Han Serif CN","Noto Serif CJK SC",Songti SC,STSong,AR PL New Sung,AR PL SungtiL GB,NSimSun,SimSun,TW-Sung,WenQuanYi Bitmap Song,AR PL UMing CN,AR PL UMing HK,AR PL UMing TW,AR PL UMing TW MBE,PMingLiU,MingLiU,serif;font-weight:500;line-height:1.25;--text-opacity:1;color:#01513a;color:rgba(1,81,58,var(--text-opacity));font-size:1.5rem}@media (min-width:1024px){h2{font-size:1.875rem}}h3{font-family:"Source Han Serif SC","Source Han Serif CN","Noto Serif CJK SC",Songti SC,STSong,AR PL New Sung,AR PL SungtiL GB,NSimSun,SimSun,TW-Sung,WenQuanYi Bitmap Song,AR PL UMing CN,AR PL UMing HK,AR PL UMing TW,AR PL UMing TW MBE,PMingLiU,MingLiU,serif;font-weight:500;line-height:1.25;--text-opacity:1;color:#01513a;color:rgba(1,81,58,var(--text-opacity));font-size:1.25rem}h4,h5,h6{font-family:"Source Han Serif SC","Source Han Serif CN","Noto Serif CJK SC",Songti SC,STSong,AR PL New Sung,AR PL SungtiL GB,NSimSun,SimSun,TW-Sung,WenQuanYi Bitmap Song,AR PL UMing CN,AR PL UMing HK,AR PL UMing TW,AR PL UMing TW MBE,PMingLiU,MingLiU,serif;font-weight:500;line-height:1.25;--text-opacity:1;color:#01513a;color:rgba(1,81,58,var(--text-opacity));font-size:1.125rem}hr{border:none;border-bottom:1px solid #9acfbf;margin-bottom:.8em;height:5px}hr.double-line{border-top:3px double #4eab90;text-align:center;border-bottom:none}hr.double-line:after{content:"\2767";display:inline-block;position:relative;top:-27px;padding:0 10px;background:#f7fafc;color:#4eab90;font-size:30px}a:not(.icon){text-decoration:none;background-image:linear-gradient(currentColor,currentColor);background-position:0 100%;background-repeat:no-repeat;background-size:0 2px;transition:background-size .3s cubic-bezier(0,.5,0,1)}a:not(.icon):focus,a:not(.icon):hover{text-decoration:none;background-size:100% 2px}a{color:#028760}a:focus,a:hover{color:#49beb7}.a-gray a{--text-opacity:1;color:#718096;color:rgba(113,128,150,var(--text-opacity))}.a-gray a:focus,.a-gray a:hover{color:#cbd5e0}.c-rich-text{font-family:Source Han Sans SC,Source Han Sans CN,Noto Sans CJK SC,Noto Sans,-apple-system,Helvetica Neue,Helvetica,Nimbus Sans L,Arial,Liberation Sans,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Wenquanyi Micro Hei,WenQuanYi Zen Hei,ST Heiti,SimHei,WenQuanYi Zen Hei Sharp,sans-serif;font-size:1rem;line-height:1.625}.c-rich-text ::-moz-selection{color:#edf9f8;background-color:#2c726e}.c-rich-text ::selection{color:#edf9f8;background-color:#2c726e}.c-rich-text a{color:#028760}.c-rich-text a:focus,.c-rich-text a:hover{color:#49beb7}.c-rich-text>*+*{margin-top:1.5rem}.c-rich-text li{margin-bottom:.25rem}.c-rich-text li p{display:inline}.c-rich-text ul{list-style-type:square;list-style-position:inside}.c-rich-text ol{list-style-type:lower-greek;list-style-position:inside}.c-rich-text li>ol,.c-rich-text li>ul{margin-left:1rem}.c-rich-text .footnotes ol{list-style-type:decimal}.c-rich-text mark{background-color:#b6e5e2;border-bottom-color:#42aba5;border-bottom-width:2px;padding:2px;margin:0 5px}.c-rich-text img{box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05)}.c-rich-text table{overflow-x:auto;-webkit-overflow-scrolling:auto;table-layout:auto}.c-rich-text td,.c-rich-text th{border-bottom-color:#42aba5;border-bottom-width:1px;padding:.5rem 1rem}.c-rich-text th{border-top-width:1px;background-color:#edf9f8;border-top-color:#42aba5}.c-rich-text b,.c-rich-text strong{font-weight:700;color:#027a56}.c-rich-text em,.c-rich-text i{font-style:italic}.c-rich-text sub,.c-rich-text sup{font-size:.75rem;vertical-align:baseline}.c-rich-text abbr,.c-rich-text acronym{border-bottom:1px dotted;font-variant:normal;text-decoration:none}.c-rich-text abbr{cursor:help}.c-rich-text code,.c-rich-text pre,.c-rich-text pre tt{font-family:Fira Code,Cascadia Code,Menlo,Monaco,Consolas,Liberation Mono,Courier New,Sarasa Mono SC,Noto Sans CJK SC,"monospace",monospace}.c-rich-text code,.c-rich-text kbd,.c-rich-text pre tt{padding-left:.25rem;padding-right:.25rem;border-width:1px;--border-opacity:1;border-color:#80d2cd;border-color:rgba(128,210,205,var(--border-opacity));background:repeating-linear-gradient(45deg,#b6e5e2,#b6e5e2 1px,#edf9f8 0,#edf9f8 5px)}.c-rich-text kbd kbd,.c-rich-text pre code{padding-left:0;padding-right:0;border-style:none;background:none}.c-rich-text pre{border-bottom-right-radius:.5rem;--border-opacity:1;border:1px solid #49beb7;border-color:rgba(73,190,183,var(--border-opacity));--bg-opacity:1;background-color:#edf9f8;background-color:rgba(237,249,248,var(--bg-opacity));padding:1em 1.5em;display:block}.c-rich-text .highlight,.c-rich-text pre{-webkit-overflow-scrolling:auto;overflow-x:auto}.c-rich-text blockquote{position:relative;margin-left:2rem;padding-right:1.5rem;padding-left:.75rem;--text-opacity:1;color:#718096;color:rgba(113,128,150,var(--text-opacity));border-left-width:2px;--border-opacity:1;border-color:#49beb7;border-color:rgba(73,190,183,var(--border-opacity))}.page-item{flex-grow:1}.page-item.disabled a{--text-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--text-opacity))}.page-item.active a{--text-opacity:1;color:#80d2cd;color:rgba(128,210,205,var(--text-opacity))}@media (min-width:1024px){.waterfall{-moz-column-count:2;column-count:2;-moz-column-gap:1rem;column-gap:1rem}.pin{-moz-column-break-inside:avoid;break-inside:avoid;padding:5px}}@supports ((-webkit-backdrop-filter:none) or (backdrop-filter:none)){.bg-opacity-custom{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}}details.toc nav ul{list-style:disc;list-style-position:inside;direction:rtl}details.toc nav ul ul{list-style:circle;list-style-position:inside;margin-right:1em}details.toc nav ul>li{font-weight:300}details.toc nav ul>li,details.toc nav ul>li a{--text-opacity:1;color:#2c726e;color:rgba(44,114,110,var(--text-opacity))}details.toc nav ul ul>li{line-height:1.5;font-size:.875rem}details.toc nav ul ul>li,details.toc nav ul ul>li a{--text-opacity:1;color:#42aba5;color:rgba(66,171,165,var(--text-opacity))}details.toc>summary{cursor:pointer;list-style:none}details.toc>summary::-webkit-details-marker{display:none}details.toc hr{border-top:1px dotted #80d2cd;border-bottom:1px dotted #fff;margin-top:.8em;margin-bottom:.4em;text-align:center}details.toc hr:after{content:"Table of Contents";display:inline-block;position:relative;top:-19px;padding:0 5px;--bg-opacity:0.75;background:#f7fafc;color:#2c726e;font-size:18px;font-family:"Source Han Serif SC","Source Han Serif CN","Noto Serif CJK SC",Songti SC,STSong,AR PL New Sung,AR PL SungtiL GB,NSimSun,SimSun,TW-Sung,WenQuanYi Bitmap Song,AR PL UMing CN,AR PL UMing HK,AR PL UMing TW,AR PL UMing TW MBE,PMingLiU,MingLiU,serif}.toc{overflow-y:auto}.toc>.toc-list{overflow:hidden;position:relative}.toc>.toc-list li{list-style:none}.toc-list{margin:0;padding-left:10px}a.toc-link{color:currentColor;height:100%}.is-collapsible{max-height:1000px;overflow:hidden;transition:all .3s ease-in-out}.is-collapsed{max-height:0}.is-position-fixed{position:fixed!important;top:0}.is-active-link{font-weight:700}.toc-link:before{background-color:#eee;content:" ";display:inline-block;height:inherit;left:0;margin-top:-1px;position:absolute;width:2px}.is-active-link:before{background-color:#54bc4b}.bg-gray-100{--bg-opacity:1;background-color:#f7fafc;background-color:rgba(247,250,252,var(--bg-opacity))}.bg-opacity-75{--bg-opacity:0.75}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.flex-wrap-reverse{flex-wrap:wrap-reverse}.items-start{align-items:flex-start}.items-baseline{align-items:baseline}.self-end{align-self:flex-end}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-between{justify-content:space-between}.content-end{align-content:flex-end}.flex-grow-0{flex-grow:0}.flex-grow-3{flex-grow:3}.flex-grow{flex-grow:1}.flex-shrink-0{flex-shrink:0}.order-1{order:1}.order-2{order:2}.order-3{order:3}.order-4{order:4}.float-left{float:left}.clearfix:after{content:"";display:table;clear:both}.font-sans{font-family:Source Han Sans SC,Source Han Sans CN,Noto Sans CJK SC,Noto Sans,-apple-system,Helvetica Neue,Helvetica,Nimbus Sans L,Arial,Liberation Sans,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Wenquanyi Micro Hei,WenQuanYi Zen Hei,ST Heiti,SimHei,WenQuanYi Zen Hei Sharp,sans-serif}.font-serif{font-family:"Source Han Serif SC","Source Han Serif CN","Noto Serif CJK SC",Songti SC,STSong,AR PL New Sung,AR PL SungtiL GB,NSimSun,SimSun,TW-Sung,WenQuanYi Bitmap Song,AR PL UMing CN,AR PL UMing HK,AR PL UMing TW,AR PL UMing TW MBE,PMingLiU,MingLiU,serif}.font-cursive{font-family:FancyTitleFont,"Source Han Serif SC","Source Han Serif CN","Noto Serif CJK SC",Songti SC,STSong,AR PL New Sung,AR PL SungtiL GB,NSimSun,SimSun,TW-Sung,WenQuanYi Bitmap Song,AR PL UMing CN,AR PL UMing HK,AR PL UMing TW,AR PL UMing TW MBE,PMingLiU,MingLiU,serif}.font-light{font-weight:300}.font-normal{font-weight:400}.font-medium{font-weight:500}.h-4{height:1rem}.h-8{height:2rem}.h-12{height:3rem}.text-sm{font-size:.875rem}.text-xl{font-size:1.25rem}.text-3xl{font-size:1.875rem}.leading-tight{line-height:1.25}.leading-relaxed{line-height:1.625}.leading-loose{line-height:2}.m-0{margin:0}.my-4{margin-top:1rem;margin-bottom:1rem}.mx-auto{margin-left:auto;margin-right:auto}.max-h-16{max-height:5rem}.max-w-xl{max-width:36rem}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.min-h-70vh{min-height:70vh}.p-0{padding:0}.p-6{padding:1.5rem}.px-1{padding-left:.25rem;padding-right:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.pt-1{padding-top:.25rem}.pl-1{padding-left:.25rem}.pt-2{padding-top:.5rem}.pb-2{padding-bottom:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pr-4{padding-right:1rem}.pb-4{padding-bottom:1rem}.pl-4{padding-left:1rem}.pr-6{padding-right:1.5rem}.pb-8{padding-bottom:2rem}.relative{position:relative}.top-0{top:0}.-bottom-1{bottom:-.25rem}.fill-current{fill:currentColor}.text-gray-200{--text-opacity:1;color:#edf2f7;color:rgba(237,242,247,var(--text-opacity))}.text-gray-500{--text-opacity:1;color:#a0aec0;color:rgba(160,174,192,var(--text-opacity))}.text-gray-600{--text-opacity:1;color:#718096;color:rgba(113,128,150,var(--text-opacity))}.text-gray-700{--text-opacity:1;color:#4a5568;color:rgba(74,85,104,var(--text-opacity))}.text-eucalyptus-400{--text-opacity:1;color:#4eab90;color:rgba(78,171,144,var(--text-opacity))}.text-eucalyptus-500{--text-opacity:1;color:#028760;color:rgba(2,135,96,var(--text-opacity))}.text-eucalyptus-600{--text-opacity:1;color:#027a56;color:rgba(2,122,86,var(--text-opacity))}.text-java-700{--text-opacity:1;color:#2c726e;color:rgba(44,114,110,var(--text-opacity))}.text-medium-red-violet-400{--text-opacity:1;color:#d77ab2;color:rgba(215,122,178,var(--text-opacity))}.text-medium-red-violet-600{--text-opacity:1;color:#b23b83;color:rgba(178,59,131,var(--text-opacity))}.hover\:text-gray-700:hover{--text-opacity:1;color:#4a5568;color:rgba(74,85,104,var(--text-opacity))}.hover\:text-java-400:hover{--text-opacity:1;color:#80d2cd;color:rgba(128,210,205,var(--text-opacity))}.hover\:text-medium-red-violet-400:hover{--text-opacity:1;color:#d77ab2;color:rgba(215,122,178,var(--text-opacity))}.focus\:text-gray-700:focus{--text-opacity:1;color:#4a5568;color:rgba(74,85,104,var(--text-opacity))}.italic{font-style:italic}.tracking-tight{letter-spacing:-.025em}.w-4{width:1rem}.w-8{width:2rem}.w-12{width:3rem}.w-full{width:100%}.z-50{z-index:50}@media (min-width:640px){.sm\:p-10{padding:2.5rem}}@media (min-width:768px){.md\:flex-row{flex-direction:row}.md\:flex-col{flex-direction:column}.md\:items-end{align-items:flex-end}.md\:justify-end{justify-content:flex-end}.md\:content-start{align-content:flex-start}.md\:flex-grow-0{flex-grow:0}.md\:flex-grow{flex-grow:1}.md\:order-1{order:1}.md\:order-2{order:2}.md\:order-3{order:3}.md\:order-4{order:4}.md\:float-right{float:right}.md\:mb-2{margin-bottom:.5rem}.md\:max-w-xs{max-width:20rem}.md\:p-16{padding:4rem}.md\:px-0{padding-left:0;padding-right:0}.md\:pl-4{padding-left:1rem}.md\:pr-12{padding-right:3rem}.md\:sticky{position:-webkit-sticky;position:sticky}.md\:top-0{top:0}.md\:bottom-0{bottom:0}.md\:text-right{text-align:right}.md\:w-2\/5{width:40%}.md\:w-3\/5{width:60%}}@media (min-width:1024px){.lg\:min-w-0{min-width:0}.lg\:pr-20{padding-right:5rem}}@media (min-width:1280px){.xl\:pr-24{padding-right:6rem}.xl\:w-1\/2{width:50%}} \ No newline at end of file