diff --git a/.gitignore b/.gitignore index 35ed95e2..715dbb73 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,6 @@ # Hugo default output directory public -resources +/exampleSite/zh/resources ## OS Files # Windows diff --git a/README.md b/README.md index 82d061ce..f95264e8 100644 --- a/README.md +++ b/README.md @@ -2,43 +2,74 @@ [![Netlify Status](https://api.netlify.com/api/v1/badges/e60303f2-862c-4342-bf59-7c9adb10812e/deploy-status)](https://app.netlify.com/sites/hugo-loveit-en/deploys) -[中文 README](README.zh.md) | [Demo Site](https://hugo-loveit-en.netlify.com) +English README | [中文说明](README.zh.md) **LoveIt** is a **clean**, **elegant** but **advanced** blog theme for [Hugo](https://gohugo.io/). It is based on the original [LeaveIt Theme](https://github.com/liuzc/LeaveIt/) and [KeepIt Theme](https://github.com/liuzc/LeaveIt/). +Since the three themes have a similar look, if you have questions about their differences, +read [Why choose LoveIt](#why-choose-loveit) so that you can choose the one that works best for you. + ![Hugo Theme LoveIt](exampleSite/static/images/Apple-Devices-Preview.png) -## Demo +## [Demo Site](https://hugo-loveit-en.netlify.com) To see this theme in action, here is a live [demo site](https://hugo-loveit-en.netlify.com) which is rendered with **LoveIt** theme. -Websites using **LoveIt** theme: +## Why choose LoveIt -* [Dillon](https://dillonzq.com) -* Yours +Compared to the original LeaveIt theme and the KeepIt theme, the LoveIt theme has the following modifications. -### Features +* Fixed title bar +* System native fonts +* Home subtitles typewriter effect +* A new list of home posts, compatible with the latest version of Hugo +* Replace all theme icons with [Font Awesome](https://fontawesome.com/) +* A lot of style detail adjustments, including color, font size, margins, code preview style +* More readable dark mode +* Some beautiful CSS animations +* Easy-to-use and self-expanding article catalog, while adapting to the mobile side +* More suitable as a blog theme, the gallery function has been removed, but the image is lazy loaded to improve performance +* Extended markdown syntax for [Font Awesome](https://fontawesome.com/) icons +* Math formula support by [Katex](https://katex.org/) +* Diagram syntax shortcode support by [mermaid](https://github.com/knsv/mermaid) +* Embedded music player support by [APlayer](https://github.com/MoePlayer/APlayer) and [MetingJS](https://github.com/metowolf/MetingJS) +* Bilibili player support +* Kinds of admonitions shortcode support +* Custom align and float style shortcodes support +* CDN for all third-party libraries support -#### Performance and SEO +In short, +if you prefer the design language and freedom of the LoveIt theme, +if you want to use the extended Font Awesome icons conveniently, +if you want to embed math formulas, flowcharts, music or Bilibili videos in your posts, +the LoveIt theme may be more suitable for you. + +I hope you will LoveIt ❤️! + +## Features + +### Performance and SEO * Optimized for performance: 99/100 on mobile and 100/100 on desktop in [Google PageSpeed Insights](https://developers.google.com/speed/pagespeed/insights) * Optimized SEO performance with a correct SEO SCHEMA based on JSON-LD * [Google Analytics](https://analytics.google.com/analytics) support * Search engine verification support (Google, Bind, Yandex and Baidu) -* CDN support +* CDN for all third-party libraries support * Automatically converted images with Lazy Load by [lazysizes](https://github.com/aFarkas/lazysizes) -#### Appearance and Layout +### Appearance and Layout * Desktops/Mobiles Responsive layout * Dark/Light Mode * A More coerent style beetwen page and sections * Pagination support +* Easy-to-use and self-expanding article catalog, while adapting to the mobile side * Multilanguage support and I18N ready +* Beautiful CSS animation -#### Social and Comment Systems +### Social and Comment Systems * Gravatar support by [Gravatar](https://gravatar.com) * Local Avatar support @@ -48,7 +79,7 @@ Websites using **LoveIt** theme: * Gitalk comment system support by [Gitalk](https://github.com/gitalk/gitalk) * Valine comment system support by [Valine](https://valine.js.org/) -#### Extended Features +### Extended Features * Automatically highlighting code by chroma in Hugo * Extended markdown syntax for [Font Awesome](https://fontawesome.com/) icons @@ -140,7 +171,7 @@ Because some features are only in production mode, so you need to add a `product * You can click the circle icon to toggle dark-light mode. In the desktop version the circle icon is to the right and in the mobile version is positioned to the left, close to the site title. * If you want to make your own theme toggle-able element, you can create an element with a class `.theme-switch`. See [here](https://github.com/dillonzq/LoveIt/blob/master/assets/js/blog.js#L14) -## Home Post model +### Home Post model If you want to show posts on index instead of a personal profile, just open `config.toml`, add the following line: @@ -149,7 +180,7 @@ If you want to show posts on index instead of a personal profile, just open `con home_mode = "post" ``` -## Add logo and cover for SEO +### Add logo and cover for SEO Add a logo image (127x40) and a cover image (800x600) in the `static` directory. diff --git a/README.zh.md b/README.zh.md index ec346985..085ecd32 100644 --- a/README.zh.md +++ b/README.zh.md @@ -2,43 +2,70 @@ [![Netlify Status](https://api.netlify.com/api/v1/badges/c51d4765-deb8-43d2-954c-720527879667/deploy-status)](https://app.netlify.com/sites/hugo-loveit-zh/deploys) -[English README](README.md) | [预览网站](https://hugo-loveit-zh.netlify.com) +[English README](README.md) | 中文说明 [LoveIt](https://github.com/dillonzq/LoveIt) 是一个**简洁**、**优雅**且**高效**的 [Hugo](https://gohugo.io/) 博客主题。 它的原型基于 [LeaveIt 主题](https://github.com/liuzc/LeaveIt/) 和 [KeepIt 主题](https://github.com/liuzc/LeaveIt/)。 +由于三个主题外观的相似性,如果你对于它们的不同之处有疑问,请阅读 [为什么选择 LoveIt](#为什么选择-LoveIt),以便你能选择最适合你的一个。 + ![Hugo 主题 LoveIt](exampleSite/static/images/Apple-Devices-Preview.png) -## 主题预览 +## 主题[预览](https://hugo-loveit-zh.netlify.com) 为了直观地浏览主题特性,这里有一个基于 **LoveIt** 主题渲染的 [预览网站](https://hugo-loveit-zh.netlify.com)。 -使用 **LoveIt** 主题的网站: +## 为什么选择 LoveIt -* [Dillon](https://dillonzq.com) -* 你的网站 +相较于 LeaveIt 主题 和 KeepIt 主题,LoveIt 主题主要有以下修改 -### 特性 +* 固定的标题栏 +* 系统原生字体 +* 主页副标题的打字机效果 +* 焕然一新的主页文章列表,已经兼容最新版 Hugo +* 所有主题图标替换为 [Font Awesome](https://fontawesome.com/) +* 大量的样式细节调整,包括颜色、字体大小、边距、代码预览样式 +* 可读性更强的暗黑模式 +* 一些美观的 CSS 动画 +* 易用和自动展开的文章目录,同时适配移动端 +* 为了更适合作为博客主题,去除了画廊功能,但保留了图片懒加载以提高性能 +* 使用 [Font Awesome](https://fontawesome.com/) 图标的扩展 Markdown 语法 +* 支持基于 [Katex](https://katex.org/) 的数学公式 +* 支持基于 [mermaid](https://github.com/knsv/mermaid) 的图表和流程图生成功能 +* 支持基于 [APlayer](https://github.com/MoePlayer/APlayer) 和 [MetingJS](https://github.com/metowolf/MetingJS) 的内嵌音乐播放器 +* 支持内嵌 Bilibili 视频 +* 支持多种提醒样式的 shortcode +* 支持自定义对齐和浮动方式的 shortcode +* 支持所有第三方库的 CDN +* 更加丰富的自定义设置 -#### 性能和 SEO +所以,如果你更偏好 LoveIt 主题的设计语言和自由度,如果你想便捷地使用扩展的 Font Awesome 图标,如果你想在文章内嵌数学公式、流程图、音乐或是 Bilibili 视频, +那么,LoveIt 主题可能是更适合你。 +希望你会 LoveIt ❤️! + +## 特性 + +### 性能和 SEO * 性能优化:在 [Google PageSpeed Insights](https://developers.google.com/speed/pagespeed/insights) 中, 99/100 的移动设备得分和 100/100 的桌面设备得分 * 使用基于 JSON-LD 格式 的 SEO SCHEMA 文件进行 SEO 优化 * 支持 [Google Analytics](https://analytics.google.com/analytics) * 支持搜索引擎的网站验证 (Google, Bind, Yandex and Baidu) -* 支持 CDN +* 支持所有第三方库的 CDN * 基于 [lazysizes](https://github.com/aFarkas/lazysizes) 自动转换图片为懒加载 -#### 外观和布局 +### 外观和布局 * 桌面设备/移动设备 响应式布局 * 暗黑/明亮 模式 * 页面和列表保持一致的视觉样式 * 支持分页 +* 易用和自动展开的文章目录,同时适配移动端 * 支持多语言和国际化 +* 美观的 CSS 动画 -#### 社交和评论系统 +### 社交和评论系统 * 支持 [Gravatar](https://gravatar.com) 头像 * 支持本地头像 @@ -48,7 +75,7 @@ * 支持 [Gitalk](https://github.com/gitalk/gitalk) 评论系统 * 支持 [Valine](https://valine.js.org/) 评论系统 -#### 扩展功能 +### 扩展功能 * 基于 Hugo 使用的 chroma 进行代码高亮 * 使用 [Font Awesome](https://fontawesome.com/) 图标的扩展 Markdown 语法 @@ -139,7 +166,7 @@ * 你可以点击圆形图标来切换网站 暗黑-明亮 模式。桌面模式下圆形图标在网页右上角,移动设备模式下在网站左上角标题旁边 * 如果你想自定义切换网站 暗黑-明亮 模式的元素,可以使用一个 class 包含 `.theme-switch` 的元素,详见[此处](https://github.com/dillonzq/LoveIt/blob/master/assets/js/blog.js#L14) -## 主页预览文章模式 +### 主页预览文章模式 如果你想在主页显示文章而不仅仅是个人信息,请打开配置文件 `config.toml`,并增加下面一行: @@ -148,7 +175,7 @@ home_mode = "post" ``` -## 增加网站 logo 和封面用于 SEO 优化 +### 增加网站 logo 和封面用于 SEO 优化 增加一个 logo 图片 (127x40) 和一个封面图片 (800x600) 在 `static` 目录。 diff --git a/exampleSite/content/about.md b/exampleSite/content/about.md index 3264abb1..84b51475 100644 --- a/exampleSite/content/about.md +++ b/exampleSite/content/about.md @@ -18,7 +18,7 @@ It is based on the original [LeaveIt Theme](https://github.com/liuzc/LeaveIt/) a * :(fab fa-searchengin): Optimized SEO performance with a correct SEO SCHEMA based on JSON-LD * :(fab fa-google): [Google Analytics](https://analytics.google.com/analytics) support * :(fas fa-search): Search engine verification support (Google, Bind, Yandex and Baidu) -* :(fas fa-tachometer-alt): CDN support +* :(fas fa-tachometer-alt): CDN for all third-party libraries support * :(far fa-images): Automatically converted images with Lazy Load by [lazysizes](https://github.com/aFarkas/lazysizes) #### Appearance and Layout @@ -27,7 +27,9 @@ It is based on the original [LeaveIt Theme](https://github.com/liuzc/LeaveIt/) a * :(fas fa-moon): / :(fas fa-sun): Mode * :(fas fa-layer-group): A More coerent style beetwen page and sections * :(fas fa-ellipsis-h): Pagination support +* :(far fa-list-alt): Easy-to-use and self-expanding article catalog, while adapting to the mobile side * :(fas fa-language): Multilanguage support and I18N ready +* :(fab fa-css3-alt): Beautiful CSS animation #### Social and Comment Systems diff --git a/exampleSite/resources/_gen/assets/scss/css/style.scss_b95b077eb505d5c0aff8055eaced30ad.content b/exampleSite/resources/_gen/assets/scss/css/style.scss_b95b077eb505d5c0aff8055eaced30ad.content new file mode 100644 index 00000000..92f86d67 --- /dev/null +++ b/exampleSite/resources/_gen/assets/scss/css/style.scss_b95b077eb505d5c0aff8055eaced30ad.content @@ -0,0 +1 @@ +/*!normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css*/@import "https://fonts.googleapis.com/css?family=Lato:100,300,400,700,900";html{line-height:1.15;-webkit-text-size-adjust:100%}html,body,main,div,span,a,li,ul,hr,h1,h2,h3,h4,h5,h6{padding:0;margin:0}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;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}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:.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}template{display:none}[hidden]{display:none}html{font-family:lato,-apple-system,BlinkMacSystemFont,helvetica neue,pingfang sc,hiragino sans gb,STHeiti,microsoft yahei,wenquanyi micro hei,Arial,Verdana,sans-serif}html::-webkit-scrollbar{width:8px;height:8px}html::-webkit-scrollbar-thumb{height:40px;background-color:#87878d;border-radius:16px}html::-webkit-scrollbar-thumb:hover{background-color:#a9a9b3}::selection{background:rgba(0,149,255,.1)}body{font-size:16px;font-weight:400;line-height:26px;background-color:#fff;color:#161209}body:before{content:"";background-repeat:no-repeat;background-position:50%;opacity:.05;position:fixed;top:0;left:0;width:100%;height:100%;z-index:-1;-webkit-filter:grayscale(100%);-moz-filter:grayscale(100%);-ms-filter:grayscale(100%);-o-filter:grayscale(100%);filter:grayscale(100%);filter:gray}body.dark-theme{color:#a9a9b3;background-color:#292a2d}a{color:#161209;text-decoration:none;transition:color .2s ease,border-color .2s ease,background .2s ease,opacity .2s ease}a:hover{color:#2d96bd}.dark-theme a{color:#a9a9b3}.dark-theme a:hover{color:#fff}.wrapper{display:flex;flex-direction:column;min-height:98vh;width:100%}.main{flex:1 0 auto}.container{padding-left:1rem;padding-right:1rem}.footer{height:2rem;width:100%;text-align:center;line-height:1.5rem;padding-top:2rem}.notfound{font-size:2rem;transform:translateY(35vh);text-align:center}.home-intro{transform:translateY(25vh);text-align:center}.home-intro .home-avatar{padding:.6rem}.home-intro .home-avatar img{width:8rem;height:auto;display:inline-block;-webkit-border-radius:100%;border-radius:100%;-webkit-box-shadow:0 0 0 .3618em rgba(0,0,0,.05);box-shadow:0 0 0 .3618em rgba(0,0,0,.05);margin:0 auto;-webkit-transition:all ease .4s;-moz-transition:all ease .4s;-o-transition:all ease .4s;transition:all ease .4s;cursor:pointer}.home-intro .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-intro .home-description{font-size:1rem;font-weight:400;padding:.4rem}.home-intro .home-social-links{padding-top:.6rem}.home-intro .home-social-links i{font-size:1.4rem}.post-warp{position:relative;width:100%;max-width:780px;margin:0 auto;padding-top:6rem}.post-warp .post-title{margin:0!important;font-size:2rem;line-height:3rem}.post-warp .post-meta{font-size:.88rem;color:rgba(85,85,85,.52941)!important}.post-warp .post-meta span{display:inline-block}.dark-theme .post-warp .post-meta{color:#87878d!important}.post-warp .post-meta a{color:#2d96bd}.dark-theme .post-warp .post-meta a{color:#eee}.post-warp .post-meta a:hover{color:#ef3982}.dark-theme .post-warp .post-meta a:hover{color:#fff}.post-warp .post-meta .author{font-size:1.05rem}.post-warp .post-featured-image{padding-top:.6rem}.post-warp .post-featured-image img{display:block;max-width:100%;height:auto;margin:0 auto;overflow:hidden}.post-warp .post-toc{display:block;position:absolute;width:240px;max-width:300px;margin-left:800px;padding:.8rem;border-left:1px solid #dcdcdc;word-wrap:break-word;box-sizing:border-box;top:12rem}.post-warp .post-toc .post-toc-title{font-weight:400;text-transform:uppercase}.post-warp .post-toc .post-toc-content.always-active ul{display:block}.post-warp .post-toc .post-toc-content>nav>ul{margin:.625rem 0}.post-warp .post-toc .post-toc-content ul{padding-left:.625rem;list-style:none}.post-warp .post-toc .post-toc-content ul ul{padding-left:1.25rem;display:none}.post-warp .post-toc .post-toc-content ul .has-active>ul{display:block}.post-warp .post-toc .post-toc-content .toc-link.active{color:#2d96bd}.post-warp .post-toc-mobile{display:none;padding-top:.8rem}.post-warp .post-toc-mobile details summary .post-toc-title{display:block;display:flex;justify-content:space-between;font-size:1.2em;font-weight:700;line-height:2em;padding:0 .625rem;background:#f5f5f5}.post-warp .post-toc-mobile details summary .post-toc-title i.details{line-height:2em}.dark-theme .post-warp .post-toc-mobile details summary .post-toc-title{background:#272c34}.post-warp .post-toc-mobile details summary::-webkit-details-marker{display:none}.post-warp .post-toc-mobile details[open] i.details{transform:rotate(180deg)}.post-warp .post-toc-mobile .post-toc-content{border:2px solid #f5f5f5}.post-warp .post-toc-mobile .post-toc-content>nav>ul{margin:.625rem 0}.post-warp .post-toc-mobile .post-toc-content ul{padding-left:.625rem;list-style:none}.post-warp .post-toc-mobile .post-toc-content ul ul{padding-left:1.25rem}.dark-theme .post-warp .post-toc-mobile .post-toc-content{border:2px solid #272c34}.post-warp .post-content .post-dummy-target:target{display:inline-block;position:relative;top:-5.6rem;visibility:hidden}.post-warp .post-content h2,.post-warp .post-content h3,.post-warp .post-content h4,.post-warp .post-content h5,.post-warp .post-content h6{padding-top:.8rem;padding-bottom:.3rem}.post-warp .post-content h2::before{content:"#";margin-right:.3125rem;color:#2d96bd}.dark-theme .post-warp .post-content h2::before{color:#eee}.post-warp .post-content h3::before,.post-warp .post-content h4::before,.post-warp .post-content h5::before,.post-warp .post-content h6::before{content:"|";margin-right:.3125rem;color:#2d96bd}.dark-theme .post-warp .post-content h3::before,.dark-theme .post-warp .post-content h4::before,.dark-theme .post-warp .post-content h5::before,.dark-theme .post-warp .post-content h6::before{color:#eee}.post-warp .post-content p{font-size:1rem;margin:.5rem 0;text-align:justify}.post-warp .post-content a{color:#2d96bd}.dark-theme .post-warp .post-content a{color:#eee}.post-warp .post-content a:hover{color:#ef3982}.dark-theme .post-warp .post-content a:hover:hover{color:#fff;font-weight:700}.post-warp .post-content ul{padding-left:2rem}.post-warp .post-content ruby{background:#f5f5f5}.post-warp .post-content ruby rt{color:#a9a9b3}.dark-theme .post-warp .post-content ruby{background:#272c34}.dark-theme .post-warp .post-content ruby rt{color:#87878d}.post-warp .post-content .table-wrapper{overflow-x:auto}.post-warp .post-content .table-wrapper>table{width:100%;max-width:100%;margin:.625rem 0;border-spacing:0;box-shadow:2px 2px 3px rgba(0,0,0,.125);background:#fff}.dark-theme .post-warp .post-content .table-wrapper>table{background:#272c34}.post-warp .post-content .table-wrapper>table thead{background:#ededed}.dark-theme .post-warp .post-content .table-wrapper>table thead{background-color:#20252b}.post-warp .post-content .table-wrapper>table th,.post-warp .post-content .table-wrapper>table td{padding:.3rem 1rem;border:1px double #dcdcdc}.dark-theme .post-warp .post-content .table-wrapper>table th,.dark-theme .post-warp .post-content .table-wrapper>table td{border:1px double #4a4b50}.post-warp .post-content figure{text-align:center}.post-warp .post-content .image-caption:not(:empty){min-width:20%;max-width:80%;display:inline-block;padding:.625rem;margin:0 auto;border-bottom:1px solid #d9d9d9;font-size:.875rem;color:#969696;line-height:1.7}.post-warp .post-content img{display:block;max-width:100%;height:auto;margin:0 auto;overflow:hidden}.post-warp .post-content blockquote{font-size:1rem;display:block;border-width:1px 0;border-style:solid;border-color:#dcdcdc;padding:1.5em 1.2em .5em;margin:0 0 2em;position:relative}.post-warp .post-content blockquote:before{content:'\201C';position:absolute;top:0;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 .post-warp .post-content blockquote:before{color:#eee}.post-warp .post-content blockquote:after{content:"#blockquote" attr(cite);display:block;text-align:right;font-size:.875em;color:#2d96bd}.dark-theme .post-warp .post-content blockquote:after{color:#eee}.dark-theme .post-warp .post-content blockquote{border-color:#4a4b50}.post-warp .post-content code,.post-warp .post-content pre{padding:7px;font-size:13px;font-family:Consolas,Monaco,Menlo,dejavu sans mono,bitstream vera sans mono,courier new,monospace;background:#f5f5f5}.dark-theme .post-warp .post-content code,.dark-theme .post-warp .post-content pre{background:#272c34}.post-warp .post-content code{padding:3px 5px;border-radius:4px;color:#e74c3c;background:#f5f5f5}.dark-theme .post-warp .post-content code{color:#e5bf78;background:#272c34}.post-warp .post-content p>code{background:#ededed}.dark-theme .post-warp .post-content p>code{color:#e5bf78;background:#20252b}.post-warp .post-content .highlight>.chroma{margin:1em 0;border-radius:5px;overflow-x:auto;box-shadow:1px 1px 2px rgba(0,0,0,.125);position:relative;background:#f5f5f5}.post-warp .post-content .highlight>.chroma code{padding:0}.post-warp .post-content .highlight>.chroma table{position:relative}.post-warp .post-content .highlight>.chroma table::after{position:absolute;top:0;right:0;left:0;padding:2px 7px;font-size:13px;font-weight:700;color:#b1b0b0;background:#ededed;content:'Code'}.dark-theme .post-warp .post-content .highlight>.chroma table::after{background:#20252b}.post-warp .post-content .highlight>.chroma.language-bash table::after{content:"Bash"}.post-warp .post-content .highlight>.chroma.language-c table::after{content:"C"}.post-warp .post-content .highlight>.chroma.language-cs table::after{content:"C#"}.post-warp .post-content .highlight>.chroma.language-cpp table::after{content:"C++"}.post-warp .post-content .highlight>.chroma.language-css table::after{content:"CSS"}.post-warp .post-content .highlight>.chroma.language-coffeescript table::after{content:"CoffeeScript"}.post-warp .post-content .highlight>.chroma.language-html table::after{content:"HTML"}.post-warp .post-content .highlight>.chroma.language-xml table::after{content:"XML"}.post-warp .post-content .highlight>.chroma.language-http table::after{content:"HTTP"}.post-warp .post-content .highlight>.chroma.language-json table::after{content:"JSON"}.post-warp .post-content .highlight>.chroma.language-java table::after{content:"Java"}.post-warp .post-content .highlight>.chroma.language-js table::after{content:"JavaScript"}.post-warp .post-content .highlight>.chroma.language-javascript table::after{content:"JavaScript"}.post-warp .post-content .highlight>.chroma.language-makefile table::after{content:"Makefile"}.post-warp .post-content .highlight>.chroma.language-markdown table::after{content:"Markdown"}.post-warp .post-content .highlight>.chroma.language-objectivec table::after{content:"Objective-C"}.post-warp .post-content .highlight>.chroma.language-php table::after{content:"PHP"}.post-warp .post-content .highlight>.chroma.language-perl table::after{content:"Perl"}.post-warp .post-content .highlight>.chroma.language-python table::after{content:"Python"}.post-warp .post-content .highlight>.chroma.language-ruby table::after{content:"Ruby"}.post-warp .post-content .highlight>.chroma.language-sql table::after{content:"SQL"}.post-warp .post-content .highlight>.chroma.language-shell table::after{content:"Shell"}.post-warp .post-content .highlight>.chroma.language-erlang table::after{content:"Erlang"}.post-warp .post-content .highlight>.chroma.language-go table::after{content:"Go"}.post-warp .post-content .highlight>.chroma.language-go-html-template table::after{content:"Go HTML Template"}.post-warp .post-content .highlight>.chroma.language-groovy table::after{content:"Groovy"}.post-warp .post-content .highlight>.chroma.language-haskell table::after{content:"Haskell"}.post-warp .post-content .highlight>.chroma.language-kotlin table::after{content:"Kotlin"}.post-warp .post-content .highlight>.chroma.language-clojure table::after{content:"Clojure"}.post-warp .post-content .highlight>.chroma.language-less table::after{content:"Less"}.post-warp .post-content .highlight>.chroma.language-lisp table::after{content:"Lisp"}.post-warp .post-content .highlight>.chroma.language-lua table::after{content:"Lua"}.post-warp .post-content .highlight>.chroma.language-matlab table::after{content:"Matlab"}.post-warp .post-content .highlight>.chroma.language-rust table::after{content:"Rust"}.post-warp .post-content .highlight>.chroma.language-scss table::after{content:"Scss"}.post-warp .post-content .highlight>.chroma.language-scala table::after{content:"Scala"}.post-warp .post-content .highlight>.chroma.language-swift table::after{content:"Swift"}.post-warp .post-content .highlight>.chroma.language-typescript table::after{content:"TypeScript"}.post-warp .post-content .highlight>.chroma.language-yml table::after{content:"YAML"}.post-warp .post-content .highlight>.chroma.language-yaml table::after{content:"YAML"}.post-warp .post-content .highlight>.chroma.language-toml table::after{content:"TOML"}.post-warp .post-content .highlight>.chroma.language-diff table::after{content:"Diff"}.post-warp .post-content .highlight>.chroma .lntd{line-height:20px}.post-warp .post-content .highlight>.chroma .lntd:first-child{width:10px}.post-warp .post-content .highlight>.chroma .lntd:first-child pre{margin:0;padding:38px 7px 8px}.post-warp .post-content .highlight>.chroma .lntd:last-child{vertical-align:top}.post-warp .post-content .highlight>.chroma .lntd:last-child pre{margin:0;padding:38px 10px 8px}.post-warp .post-content .highlight>.chroma table,.post-warp .post-content .highlight>.chroma tr,.post-warp .post-content .highlight>.chroma td{margin:0;padding:0;width:100%;border-collapse:collapse;border-color:#f5f5f5}.dark-theme .post-warp .post-content .highlight>.chroma table,.dark-theme .post-warp .post-content .highlight>.chroma tr,.dark-theme .post-warp .post-content .highlight>.chroma td{border-color:#272c34}.post-warp .post-content .highlight>.chroma .lnt{color:#cacaca}.post-warp .post-content .highlight>.chroma .hl{display:block;width:100%;background-color:#e8e8e8}.dark-theme .post-warp .post-content .highlight>.chroma .hl{background-color:#1c2025}.post-warp .post-content .highlight>.chroma .chroma .p{color:#a9a9b3}.post-warp .post-content .highlight>.chroma .k{color:#859900}.post-warp .post-content .highlight>.chroma .kc{color:#859900;font-weight:700}.post-warp .post-content .highlight>.chroma .kd{color:#859900}.post-warp .post-content .highlight>.chroma .kn{color:#dc322f;font-weight:700}.post-warp .post-content .highlight>.chroma .kp{color:#859900}.post-warp .post-content .highlight>.chroma .kr{color:#859900}.post-warp .post-content .highlight>.chroma .kt{color:#859900;font-weight:700}.post-warp .post-content .highlight>.chroma .n{color:#268bd2}.post-warp .post-content .highlight>.chroma .na{color:#268bd2}.post-warp .post-content .highlight>.chroma .nb{color:#cb4b16}.post-warp .post-content .highlight>.chroma .bp{color:#268bd2}.post-warp .post-content .highlight>.chroma .nc{color:#cb4b16}.post-warp .post-content .highlight>.chroma .no{color:#268bd2}.post-warp .post-content .highlight>.chroma .nd{color:#268bd2}.post-warp .post-content .highlight>.chroma .ni{color:#268bd2}.post-warp .post-content .highlight>.chroma .ne{color:#268bd2}.post-warp .post-content .highlight>.chroma .nf{color:#268bd2}.post-warp .post-content .highlight>.chroma .fm{color:#268bd2}.post-warp .post-content .highlight>.chroma .nl{color:#268bd2}.post-warp .post-content .highlight>.chroma .nn{color:#268bd2}.post-warp .post-content .highlight>.chroma .nx{color:#268bd2}.post-warp .post-content .highlight>.chroma .py{color:#268bd2}.post-warp .post-content .highlight>.chroma .nt{color:#268bd2;font-weight:700}.post-warp .post-content .highlight>.chroma .nv{color:#268bd2}.post-warp .post-content .highlight>.chroma .vc{color:#268bd2}.post-warp .post-content .highlight>.chroma .vg{color:#268bd2}.post-warp .post-content .highlight>.chroma .vi{color:#268bd2}.post-warp .post-content .highlight>.chroma .vm{color:#268bd2}.post-warp .post-content .highlight>.chroma .l{color:#2aa198}.post-warp .post-content .highlight>.chroma .ld{color:#2aa198}.post-warp .post-content .highlight>.chroma .s{color:#2aa198}.post-warp .post-content .highlight>.chroma .sa{color:#2aa198}.post-warp .post-content .highlight>.chroma .sb{color:#2aa198}.post-warp .post-content .highlight>.chroma .sc{color:#2aa198}.post-warp .post-content .highlight>.chroma .dl{color:#2aa198}.post-warp .post-content .highlight>.chroma .sd{color:#2aa198}.post-warp .post-content .highlight>.chroma .s2{color:#2aa198}.post-warp .post-content .highlight>.chroma .se{color:#2aa198}.post-warp .post-content .highlight>.chroma .sh{color:#2aa198}.post-warp .post-content .highlight>.chroma .si{color:#2aa198}.post-warp .post-content .highlight>.chroma .sx{color:#2aa198}.post-warp .post-content .highlight>.chroma .sr{color:#2aa198}.post-warp .post-content .highlight>.chroma .s1{color:#2aa198}.post-warp .post-content .highlight>.chroma .ss{color:#2aa198}.post-warp .post-content .highlight>.chroma .m{color:#2aa198;font-weight:700}.post-warp .post-content .highlight>.chroma .mb{color:#2aa198;font-weight:700}.post-warp .post-content .highlight>.chroma .mf{color:#2aa198;font-weight:700}.post-warp .post-content .highlight>.chroma .mh{color:#2aa198;font-weight:700}.post-warp .post-content .highlight>.chroma .mi{color:#2aa198;font-weight:700}.post-warp .post-content .highlight>.chroma .il{color:#2aa198;font-weight:700}.post-warp .post-content .highlight>.chroma .mo{color:#2aa198;font-weight:700}.post-warp .post-content .highlight>.chroma .ow{color:#859900}.post-warp .post-content .highlight>.chroma .c{color:#93a1a1;font-style:italic}.post-warp .post-content .highlight>.chroma .ch{color:#93a1a1;font-style:italic}.post-warp .post-content .highlight>.chroma .cm{color:#93a1a1;font-style:italic}.post-warp .post-content .highlight>.chroma .c1{color:#93a1a1;font-style:italic}.post-warp .post-content .highlight>.chroma .cs{color:#93a1a1;font-style:italic}.post-warp .post-content .highlight>.chroma .cp{color:#93a1a1;font-style:italic}.post-warp .post-content .highlight>.chroma .cpf{color:#93a1a1;font-style:italic}.post-warp .post-content .highlight>.chroma .g{color:#d33682}.post-warp .post-content .highlight>.chroma .gd{color:#b58900}.post-warp .post-content .highlight>.chroma .ge{color:#d33682}.post-warp .post-content .highlight>.chroma .gr{color:#d33682}.post-warp .post-content .highlight>.chroma .gh{color:#d33682}.post-warp .post-content .highlight>.chroma .gi{color:#859900}.post-warp .post-content .highlight>.chroma .go{color:#d33682}.post-warp .post-content .highlight>.chroma .gp{color:#d33682}.post-warp .post-content .highlight>.chroma .gs{color:#d33682}.post-warp .post-content .highlight>.chroma .gu{color:#d33682}.post-warp .post-content .highlight>.chroma .gt{color:#d33682}.dark-theme .post-warp .post-content .highlight>.chroma{background:#272c34}.dark-theme .post-warp .post-content .highlight>.chroma .chroma .k{color:#d371e3}.dark-theme .post-warp .post-content .highlight>.chroma .chroma .kc{color:#d371e3}.dark-theme .post-warp .post-content .highlight>.chroma .chroma .kd{color:#d371e3}.dark-theme .post-warp .post-content .highlight>.chroma .chroma .kn{color:#d371e3}.dark-theme .post-warp .post-content .highlight>.chroma .chroma .kp{color:#d371e3}.dark-theme .post-warp .post-content .highlight>.chroma .chroma .kr{color:#d371e3}.dark-theme .post-warp .post-content .highlight>.chroma .chroma .kt{color:#8be9fd}.dark-theme .post-warp .post-content .highlight>.chroma .chroma .na{color:#41b1f5}.dark-theme .post-warp .post-content .highlight>.chroma .chroma .nb{color:#8be9fd;font-style:italic}.dark-theme .post-warp .post-content .highlight>.chroma .chroma .nc{color:#e5bf78}.dark-theme .post-warp .post-content .highlight>.chroma .chroma .nf{color:#19b8c0}.dark-theme .post-warp .post-content .highlight>.chroma .chroma .nx{color:#f16473}.dark-theme .post-warp .post-content .highlight>.chroma .chroma .nl{color:#8be9fd;font-style:italic}.dark-theme .post-warp .post-content .highlight>.chroma .chroma .nt{color:#d371e3}.dark-theme .post-warp .post-content .highlight>.chroma .chroma .nv{color:#8be9fd;font-style:italic}.dark-theme .post-warp .post-content .highlight>.chroma .chroma .vc{color:#8be9fd;font-style:italic}.dark-theme .post-warp .post-content .highlight>.chroma .chroma .vg{color:#8be9fd;font-style:italic}.dark-theme .post-warp .post-content .highlight>.chroma .chroma .vi{color:#8be9fd;font-style:italic}.dark-theme .post-warp .post-content .highlight>.chroma .chroma .s{color:#8bc56f}.dark-theme .post-warp .post-content .highlight>.chroma .chroma .sa{color:#8bc56f}.dark-theme .post-warp .post-content .highlight>.chroma .chroma .sb{color:#8bc56f}.dark-theme .post-warp .post-content .highlight>.chroma .chroma .sc{color:#8bc56f}.dark-theme .post-warp .post-content .highlight>.chroma .chroma .dl{color:#8bc56f}.dark-theme .post-warp .post-content .highlight>.chroma .chroma .sd{color:#8bc56f}.dark-theme .post-warp .post-content .highlight>.chroma .chroma .s2{color:#8bc56f}.dark-theme .post-warp .post-content .highlight>.chroma .chroma .se{color:#8bc56f}.dark-theme .post-warp .post-content .highlight>.chroma .chroma .sh{color:#8bc56f}.dark-theme .post-warp .post-content .highlight>.chroma .chroma .si{color:#8bc56f}.dark-theme .post-warp .post-content .highlight>.chroma .chroma .sx{color:#8bc56f}.dark-theme .post-warp .post-content .highlight>.chroma .chroma .sr{color:#8bc56f}.dark-theme .post-warp .post-content .highlight>.chroma .chroma .s1{color:#8bc56f}.dark-theme .post-warp .post-content .highlight>.chroma .chroma .ss{color:#8bc56f}.dark-theme .post-warp .post-content .highlight>.chroma .chroma .m{color:#bd93f9}.dark-theme .post-warp .post-content .highlight>.chroma .chroma .mb{color:#bd93f9}.dark-theme .post-warp .post-content .highlight>.chroma .chroma .mf{color:#bd93f9}.dark-theme .post-warp .post-content .highlight>.chroma .chroma .mh{color:#bd93f9}.dark-theme .post-warp .post-content .highlight>.chroma .chroma .mi{color:#bd93f9}.dark-theme .post-warp .post-content .highlight>.chroma .chroma .il{color:#bd93f9}.dark-theme .post-warp .post-content .highlight>.chroma .chroma .mo{color:#bd93f9}.dark-theme .post-warp .post-content .highlight>.chroma .chroma .o{color:#d371e3}.dark-theme .post-warp .post-content .highlight>.chroma .chroma .ow{color:#d371e3}.dark-theme .post-warp .post-content .highlight>.chroma .chroma .c{color:#7e848f}.dark-theme .post-warp .post-content .highlight>.chroma .chroma .ch{color:#7e848f}.dark-theme .post-warp .post-content .highlight>.chroma .chroma .cm{color:#7e848f}.dark-theme .post-warp .post-content .highlight>.chroma .chroma .c1{color:#7e848f}.dark-theme .post-warp .post-content .highlight>.chroma .chroma .cs{color:#7e848f}.dark-theme .post-warp .post-content .highlight>.chroma .chroma .cp{color:#d371e3}.dark-theme .post-warp .post-content .highlight>.chroma .chroma .cpf{color:#d371e3}.dark-theme .post-warp .post-content .highlight>.chroma .chroma .gd{color:#8b080b}.dark-theme .post-warp .post-content .highlight>.chroma .chroma .ge{text-decoration:underline}.dark-theme .post-warp .post-content .highlight>.chroma .chroma .gh{font-weight:700}.dark-theme .post-warp .post-content .highlight>.chroma .chroma .gi{font-weight:700}.dark-theme .post-warp .post-content .highlight>.chroma .chroma .go{color:#44475a}.dark-theme .post-warp .post-content .highlight>.chroma .chroma .gu{font-weight:700}.dark-theme .post-warp .post-content .highlight>.chroma .chroma .gl{text-decoration:underline}.post-warp .post-content .admonition{box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.2);position:relative;margin:.9765em 0;padding:0 .75rem;border-left:.25rem solid #448aff;border-radius:.125rem;overflow:auto}.post-warp .post-content .admonition .admonition-title{margin:0 -.75rem;padding:.5rem .75rem .5rem 2.5rem;border-bottom:.1rem solid rgba(68,138,255,.1);background-color:rgba(68,138,255,.1);font-weight:700}.post-warp .post-content .admonition i.icon{font-size:16px;cursor:auto;position:absolute;left:.75rem;top:.75rem}.post-warp .post-content .admonition.note{border-left-color:#448aff}.post-warp .post-content .admonition.note i.icon{color:#448aff}.post-warp .post-content .admonition.abstract{border-left-color:#00b0ff}.post-warp .post-content .admonition.abstract .admonition-title{background-color:rgba(0,176,255,.1)}.post-warp .post-content .admonition.abstract i.icon{color:#00b0ff}.post-warp .post-content .admonition.info{border-left-color:#00b8d4}.post-warp .post-content .admonition.info .admonition-title{background-color:rgba(0,184,212,.1)}.post-warp .post-content .admonition.info i.icon{color:#00b8d4}.post-warp .post-content .admonition.tip{border-left-color:#00bfa5}.post-warp .post-content .admonition.tip .admonition-title{background-color:rgba(0,191,165,.1)}.post-warp .post-content .admonition.tip i.icon{color:#00bfa5}.post-warp .post-content .admonition.success{border-left-color:#00c853}.post-warp .post-content .admonition.success .admonition-title{background-color:rgba(0,200,83,.1)}.post-warp .post-content .admonition.success i.icon{color:#00c853}.post-warp .post-content .admonition.question{border-left-color:#64dd17}.post-warp .post-content .admonition.question .admonition-title{background-color:rgba(100,221,23,.1)}.post-warp .post-content .admonition.question i.icon{color:#64dd17}.post-warp .post-content .admonition.warning{border-left-color:#ff9100}.post-warp .post-content .admonition.warning .admonition-title{background-color:rgba(255,145,0,.1)}.post-warp .post-content .admonition.warning i.icon{color:#ff9100}.post-warp .post-content .admonition.failure{border-left-color:#ff5252}.post-warp .post-content .admonition.failure .admonition-title{background-color:rgba(255,82,82,.1)}.post-warp .post-content .admonition.failure i.icon{color:#ff5252}.post-warp .post-content .admonition.danger{border-left-color:#ff1744}.post-warp .post-content .admonition.danger .admonition-title{background-color:rgba(255,23,68,.1)}.post-warp .post-content .admonition.danger i.icon{color:#ff1744}.post-warp .post-content .admonition.bug{border-left-color:#f50057}.post-warp .post-content .admonition.bug .admonition-title{background-color:rgba(245,0,87,.1)}.post-warp .post-content .admonition.bug i.icon{color:#f50057}.post-warp .post-content .admonition.example{border-left-color:#651fff}.post-warp .post-content .admonition.example .admonition-title{background-color:rgba(101,31,255,.1)}.post-warp .post-content .admonition.example i.icon{color:#651fff}.post-warp .post-content .admonition.quote{border-left-color:#9e9e9e}.post-warp .post-content .admonition.quote .admonition-title{background-color:rgba(158,158,158,.1)}.post-warp .post-content .admonition.quote i.icon{color:#9e9e9e}.post-warp .post-content .admonition:last-child{margin-bottom:.75rem}.post-warp .post-content details.admonition summary{display:block;outline:none;cursor:pointer}.post-warp .post-content details.admonition summary::-webkit-details-marker{display:none}.post-warp .post-content details.admonition summary i.details{position:absolute;top:.75rem;right:.75rem;color:#161209}.dark-theme .post-warp .post-content details.admonition summary i.details{color:#a9a9b3}.post-warp .post-content details.admonition[open] i.details{transform:rotate(180deg)}.post-warp .post-content .mermaid{}.post-warp .post-content .mermaid .label{font-family:trebuchet ms,verdana,arial;color:#333}.post-warp .post-content .mermaid .label text{fill:#333}.post-warp .post-content .mermaid .node rect,.post-warp .post-content .mermaid .node circle,.post-warp .post-content .mermaid .node ellipse,.post-warp .post-content .mermaid .node polygon{fill:#eee;stroke:#999;stroke-width:1px}.post-warp .post-content .mermaid .node.clickable{cursor:pointer}.post-warp .post-content .mermaid .arrowheadPath{fill:#333}.post-warp .post-content .mermaid .edgePath .path{stroke:#666;stroke-width:1.5px}.post-warp .post-content .mermaid .edgeLabel{background-color:#fff}.post-warp .post-content .mermaid .cluster rect{fill:#eaf2fb;stroke:#26a;stroke-width:1px}.post-warp .post-content .mermaid .cluster text{fill:#333}.post-warp .post-content .mermaid div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:trebuchet ms,verdana,arial;font-size:12px;background:#eaf2fb;border:1px solid #26a;border-radius:2px;pointer-events:none;z-index:100}.post-warp .post-content .mermaid .actor{stroke:#999;fill:#eee}.post-warp .post-content .mermaid text.actor{fill:#333;stroke:none}.post-warp .post-content .mermaid .actor-line{stroke:#666}.post-warp .post-content .mermaid .messageLine0{stroke-width:1.5;stroke-dasharray:'2 2';stroke:#333}.post-warp .post-content .mermaid .messageLine1{stroke-width:1.5;stroke-dasharray:'2 2';stroke:#333}.post-warp .post-content .mermaid #arrowhead{fill:#333}.post-warp .post-content .mermaid .sequenceNumber{fill:#fff}.post-warp .post-content .mermaid #sequencenumber{fill:#333}.post-warp .post-content .mermaid #crosshead path{fill:#333!important;stroke:#333!important}.post-warp .post-content .mermaid .messageText{fill:#333;stroke:none}.post-warp .post-content .mermaid .labelBox{stroke:#999;fill:#eee}.post-warp .post-content .mermaid .labelText{fill:#333;stroke:none}.post-warp .post-content .mermaid .loopText{fill:#333;stroke:none}.post-warp .post-content .mermaid .loopLine{stroke-width:2;stroke-dasharray:'2 2';stroke:#999}.post-warp .post-content .mermaid .note{stroke:#770;fill:#ffa}.post-warp .post-content .mermaid .noteText{fill:#000;stroke:none;font-family:trebuchet ms,verdana,arial;font-size:14px}.post-warp .post-content .mermaid .activation0{fill:#f4f4f4;stroke:#666}.post-warp .post-content .mermaid .activation1{fill:#f4f4f4;stroke:#666}.post-warp .post-content .mermaid .activation2{fill:#f4f4f4;stroke:#666}.post-warp .post-content .mermaid .section{stroke:none;opacity:.2}.post-warp .post-content .mermaid .section0{fill:#80b3e6}.post-warp .post-content .mermaid .section2{fill:#80b3e6}.post-warp .post-content .mermaid .section1,.post-warp .post-content .mermaid .section3{fill:#fff;opacity:.2}.post-warp .post-content .mermaid .sectionTitle0{fill:#333}.post-warp .post-content .mermaid .sectionTitle1{fill:#333}.post-warp .post-content .mermaid .sectionTitle2{fill:#333}.post-warp .post-content .mermaid .sectionTitle3{fill:#333}.post-warp .post-content .mermaid .sectionTitle{text-anchor:start;font-size:11px;text-height:14px}.post-warp .post-content .mermaid .grid .tick{stroke:#e6e5e5;opacity:.3;shape-rendering:crispEdges}.post-warp .post-content .mermaid .grid path{stroke-width:0}.post-warp .post-content .mermaid .today{fill:none;stroke:#d42;stroke-width:2px}.post-warp .post-content .mermaid .task{stroke-width:2}.post-warp .post-content .mermaid .taskText{text-anchor:middle;font-size:11px}.post-warp .post-content .mermaid .taskTextOutsideRight{fill:#333;text-anchor:start;font-size:11px}.post-warp .post-content .mermaid .taskTextOutsideLeft{fill:#333;text-anchor:end;font-size:11px}.post-warp .post-content .mermaid .task.clickable{cursor:pointer}.post-warp .post-content .mermaid .taskText.clickable{cursor:pointer;fill:#003163!important;font-weight:700}.post-warp .post-content .mermaid .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163!important;font-weight:700}.post-warp .post-content .mermaid .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163!important;font-weight:700}.post-warp .post-content .mermaid .taskText0,.post-warp .post-content .mermaid .taskText1,.post-warp .post-content .mermaid .taskText2,.post-warp .post-content .mermaid .taskText3{fill:#fff}.post-warp .post-content .mermaid .task0,.post-warp .post-content .mermaid .task1,.post-warp .post-content .mermaid .task2,.post-warp .post-content .mermaid .task3{fill:#26a;stroke:#1a4d80}.post-warp .post-content .mermaid .taskTextOutside0,.post-warp .post-content .mermaid .taskTextOutside2{fill:#333}.post-warp .post-content .mermaid .taskTextOutside1,.post-warp .post-content .mermaid .taskTextOutside3{fill:#333}.post-warp .post-content .mermaid .active0,.post-warp .post-content .mermaid .active1,.post-warp .post-content .mermaid .active2,.post-warp .post-content .mermaid .active3{fill:#eee;stroke:#1a4d80}.post-warp .post-content .mermaid .activeText0,.post-warp .post-content .mermaid .activeText1,.post-warp .post-content .mermaid .activeText2,.post-warp .post-content .mermaid .activeText3{fill:#333!important}.post-warp .post-content .mermaid .done0,.post-warp .post-content .mermaid .done1,.post-warp .post-content .mermaid .done2,.post-warp .post-content .mermaid .done3{stroke:#666;fill:#bbb;stroke-width:2}.post-warp .post-content .mermaid .doneText0,.post-warp .post-content .mermaid .doneText1,.post-warp .post-content .mermaid .doneText2,.post-warp .post-content .mermaid .doneText3{fill:#333!important}.post-warp .post-content .mermaid .crit0,.post-warp .post-content .mermaid .crit1,.post-warp .post-content .mermaid .crit2,.post-warp .post-content .mermaid .crit3{stroke:#b1361b;fill:#d42;stroke-width:2}.post-warp .post-content .mermaid .activeCrit0,.post-warp .post-content .mermaid .activeCrit1,.post-warp .post-content .mermaid .activeCrit2,.post-warp .post-content .mermaid .activeCrit3{stroke:#b1361b;fill:#eee;stroke-width:2}.post-warp .post-content .mermaid .doneCrit0,.post-warp .post-content .mermaid .doneCrit1,.post-warp .post-content .mermaid .doneCrit2,.post-warp .post-content .mermaid .doneCrit3{stroke:#b1361b;fill:#bbb;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}.post-warp .post-content .mermaid .milestone{transform:rotate(45deg) scale(0.8,0.8)}.post-warp .post-content .mermaid .milestoneText{font-style:italic}.post-warp .post-content .mermaid .doneCritText0,.post-warp .post-content .mermaid .doneCritText1,.post-warp .post-content .mermaid .doneCritText2,.post-warp .post-content .mermaid .doneCritText3{fill:#333!important}.post-warp .post-content .mermaid .activeCritText0,.post-warp .post-content .mermaid .activeCritText1,.post-warp .post-content .mermaid .activeCritText2,.post-warp .post-content .mermaid .activeCritText3{fill:#333!important}.post-warp .post-content .mermaid .titleText{text-anchor:middle;font-size:18px;fill:#333}.post-warp .post-content .mermaid g.classGroup text{fill:#999;stroke:none;font-family:trebuchet ms,verdana,arial;font-size:10px}.post-warp .post-content .mermaid g.classGroup rect{fill:#eee;stroke:#999}.post-warp .post-content .mermaid g.classGroup line{stroke:#999;stroke-width:1}.post-warp .post-content .mermaid .classLabel .box{stroke:none;stroke-width:0;fill:#eee;opacity:.5}.post-warp .post-content .mermaid .classLabel .label{fill:#999;font-size:10px}.post-warp .post-content .mermaid .relation{stroke:#999;stroke-width:1;fill:none}.post-warp .post-content .mermaid #compositionStart{fill:#999;stroke:#999;stroke-width:1}.post-warp .post-content .mermaid #compositionEnd{fill:#999;stroke:#999;stroke-width:1}.post-warp .post-content .mermaid #aggregationStart{fill:#eee;stroke:#999;stroke-width:1}.post-warp .post-content .mermaid #aggregationEnd{fill:#eee;stroke:#999;stroke-width:1}.post-warp .post-content .mermaid #dependencyStart{fill:#999;stroke:#999;stroke-width:1}.post-warp .post-content .mermaid #dependencyEnd{fill:#999;stroke:#999;stroke-width:1}.post-warp .post-content .mermaid #extensionStart{fill:#999;stroke:#999;stroke-width:1}.post-warp .post-content .mermaid #extensionEnd{fill:#999;stroke:#999;stroke-width:1}.post-warp .post-content .mermaid .commit-id,.post-warp .post-content .mermaid .commit-msg,.post-warp .post-content .mermaid .branch-label{fill:lightgrey;color:lightgrey}.dark-theme .post-warp .post-content .mermaid{}.dark-theme .post-warp .post-content .mermaid .label{font-family:trebuchet ms,verdana,arial;color:#333}.dark-theme .post-warp .post-content .mermaid .label text{fill:#333}.dark-theme .post-warp .post-content .mermaid .node rect,.dark-theme .post-warp .post-content .mermaid .node circle,.dark-theme .post-warp .post-content .mermaid .node ellipse,.dark-theme .post-warp .post-content .mermaid .node polygon{fill:#bdd5ea;stroke:purple;stroke-width:1px}.dark-theme .post-warp .post-content .mermaid .node.clickable{cursor:pointer}.dark-theme .post-warp .post-content .mermaid .arrowheadPath{fill:lightgrey}.dark-theme .post-warp .post-content .mermaid .edgePath .path{stroke:lightgrey;stroke-width:1.5px}.dark-theme .post-warp .post-content .mermaid .edgeLabel{background-color:#e8e8e8}.dark-theme .post-warp .post-content .mermaid .cluster rect{fill:#6d6d65;stroke:rgba(255,255,255,.25);stroke-width:1px}.dark-theme .post-warp .post-content .mermaid .cluster text{fill:#f9fffe}.dark-theme .post-warp .post-content .mermaid div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:trebuchet ms,verdana,arial;font-size:12px;background:#6d6d65;border:1px solid rgba(255,255,255,.25);border-radius:2px;pointer-events:none;z-index:100}.dark-theme .post-warp .post-content .mermaid .actor{stroke:#81b1db;fill:#bdd5ea}.dark-theme .post-warp .post-content .mermaid text.actor{fill:#000;stroke:none}.dark-theme .post-warp .post-content .mermaid .actor-line{stroke:lightgrey}.dark-theme .post-warp .post-content .mermaid .messageLine0{stroke-width:1.5;stroke-dasharray:'2 2';stroke:lightgrey}.dark-theme .post-warp .post-content .mermaid .messageLine1{stroke-width:1.5;stroke-dasharray:'2 2';stroke:lightgrey}.dark-theme .post-warp .post-content .mermaid #arrowhead{fill:lightgrey}.dark-theme .post-warp .post-content .mermaid .sequenceNumber{fill:#fff}.dark-theme .post-warp .post-content .mermaid #sequencenumber{fill:lightgrey}.dark-theme .post-warp .post-content .mermaid #crosshead path{fill:lightgrey!important;stroke:lightgrey!important}.dark-theme .post-warp .post-content .mermaid .messageText{fill:lightgrey;stroke:none}.dark-theme .post-warp .post-content .mermaid .labelBox{stroke:#81b1db;fill:#bdd5ea}.dark-theme .post-warp .post-content .mermaid .labelText{fill:#323d47;stroke:none}.dark-theme .post-warp .post-content .mermaid .loopText{fill:lightgrey;stroke:none}.dark-theme .post-warp .post-content .mermaid .loopLine{stroke-width:2;stroke-dasharray:'2 2';stroke:#81b1db}.dark-theme .post-warp .post-content .mermaid .note{stroke:rgba(255,255,255,.25);fill:#fff5ad}.dark-theme .post-warp .post-content .mermaid .noteText{fill:#000;stroke:none;font-family:trebuchet ms,verdana,arial;font-size:14px}.dark-theme .post-warp .post-content .mermaid .activation0{fill:#f4f4f4;stroke:#666}.dark-theme .post-warp .post-content .mermaid .activation1{fill:#f4f4f4;stroke:#666}.dark-theme .post-warp .post-content .mermaid .activation2{fill:#f4f4f4;stroke:#666}.dark-theme .post-warp .post-content .mermaid .section{stroke:none;opacity:.2}.dark-theme .post-warp .post-content .mermaid .section0{fill:rgba(255,255,255,.3)}.dark-theme .post-warp .post-content .mermaid .section2{fill:#eae8b9}.dark-theme .post-warp .post-content .mermaid .section1,.dark-theme .post-warp .post-content .mermaid .section3{fill:#fff;opacity:.2}.dark-theme .post-warp .post-content .mermaid .sectionTitle0{fill:#f9fffe}.dark-theme .post-warp .post-content .mermaid .sectionTitle1{fill:#f9fffe}.dark-theme .post-warp .post-content .mermaid .sectionTitle2{fill:#f9fffe}.dark-theme .post-warp .post-content .mermaid .sectionTitle3{fill:#f9fffe}.dark-theme .post-warp .post-content .mermaid .sectionTitle{text-anchor:start;font-size:11px;text-height:14px}.dark-theme .post-warp .post-content .mermaid .grid .tick{stroke:lightgrey;opacity:.3;shape-rendering:crispEdges}.dark-theme .post-warp .post-content .mermaid .grid path{stroke-width:0}.dark-theme .post-warp .post-content .mermaid .today{fill:none;stroke:#db5757;stroke-width:2px}.dark-theme .post-warp .post-content .mermaid .task{stroke-width:2}.dark-theme .post-warp .post-content .mermaid .taskText{text-anchor:middle;font-size:11px}.dark-theme .post-warp .post-content .mermaid .taskTextOutsideRight{fill:#323d47;text-anchor:start;font-size:11px}.dark-theme .post-warp .post-content .mermaid .taskTextOutsideLeft{fill:#323d47;text-anchor:end;font-size:11px}.dark-theme .post-warp .post-content .mermaid .task.clickable{cursor:pointer}.dark-theme .post-warp .post-content .mermaid .taskText.clickable{cursor:pointer;fill:#003163!important;font-weight:700}.dark-theme .post-warp .post-content .mermaid .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163!important;font-weight:700}.dark-theme .post-warp .post-content .mermaid .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163!important;font-weight:700}.dark-theme .post-warp .post-content .mermaid .taskText0,.dark-theme .post-warp .post-content .mermaid .taskText1,.dark-theme .post-warp .post-content .mermaid .taskText2,.dark-theme .post-warp .post-content .mermaid .taskText3{fill:#323d47}.dark-theme .post-warp .post-content .mermaid .task0,.dark-theme .post-warp .post-content .mermaid .task1,.dark-theme .post-warp .post-content .mermaid .task2,.dark-theme .post-warp .post-content .mermaid .task3{fill:#bdd5ea;stroke:rgba(255,255,255,.5)}.dark-theme .post-warp .post-content .mermaid .taskTextOutside0,.dark-theme .post-warp .post-content .mermaid .taskTextOutside2{fill:lightgrey}.dark-theme .post-warp .post-content .mermaid .taskTextOutside1,.dark-theme .post-warp .post-content .mermaid .taskTextOutside3{fill:lightgrey}.dark-theme .post-warp .post-content .mermaid .active0,.dark-theme .post-warp .post-content .mermaid .active1,.dark-theme .post-warp .post-content .mermaid .active2,.dark-theme .post-warp .post-content .mermaid .active3{fill:#81b1db;stroke:rgba(255,255,255,.5)}.dark-theme .post-warp .post-content .mermaid .activeText0,.dark-theme .post-warp .post-content .mermaid .activeText1,.dark-theme .post-warp .post-content .mermaid .activeText2,.dark-theme .post-warp .post-content .mermaid .activeText3{fill:#323d47!important}.dark-theme .post-warp .post-content .mermaid .done0,.dark-theme .post-warp .post-content .mermaid .done1,.dark-theme .post-warp .post-content .mermaid .done2,.dark-theme .post-warp .post-content .mermaid .done3{stroke:grey;fill:lightgrey;stroke-width:2}.dark-theme .post-warp .post-content .mermaid .doneText0,.dark-theme .post-warp .post-content .mermaid .doneText1,.dark-theme .post-warp .post-content .mermaid .doneText2,.dark-theme .post-warp .post-content .mermaid .doneText3{fill:#323d47!important}.dark-theme .post-warp .post-content .mermaid .crit0,.dark-theme .post-warp .post-content .mermaid .crit1,.dark-theme .post-warp .post-content .mermaid .crit2,.dark-theme .post-warp .post-content .mermaid .crit3{stroke:#e83737;fill:#e83737;stroke-width:2}.dark-theme .post-warp .post-content .mermaid .activeCrit0,.dark-theme .post-warp .post-content .mermaid .activeCrit1,.dark-theme .post-warp .post-content .mermaid .activeCrit2,.dark-theme .post-warp .post-content .mermaid .activeCrit3{stroke:#e83737;fill:#81b1db;stroke-width:2}.dark-theme .post-warp .post-content .mermaid .doneCrit0,.dark-theme .post-warp .post-content .mermaid .doneCrit1,.dark-theme .post-warp .post-content .mermaid .doneCrit2,.dark-theme .post-warp .post-content .mermaid .doneCrit3{stroke:#e83737;fill:lightgrey;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}.dark-theme .post-warp .post-content .mermaid .milestone{transform:rotate(45deg) scale(0.8,0.8)}.dark-theme .post-warp .post-content .mermaid .milestoneText{font-style:italic}.dark-theme .post-warp .post-content .mermaid .doneCritText0,.dark-theme .post-warp .post-content .mermaid .doneCritText1,.dark-theme .post-warp .post-content .mermaid .doneCritText2,.dark-theme .post-warp .post-content .mermaid .doneCritText3{fill:#323d47!important}.dark-theme .post-warp .post-content .mermaid .activeCritText0,.dark-theme .post-warp .post-content .mermaid .activeCritText1,.dark-theme .post-warp .post-content .mermaid .activeCritText2,.dark-theme .post-warp .post-content .mermaid .activeCritText3{fill:#323d47!important}.dark-theme .post-warp .post-content .mermaid .titleText{text-anchor:middle;font-size:18px;fill:#323d47}.dark-theme .post-warp .post-content .mermaid g.classGroup text{fill:purple;stroke:none;font-family:trebuchet ms,verdana,arial;font-size:10px}.dark-theme .post-warp .post-content .mermaid g.classGroup rect{fill:#bdd5ea;stroke:purple}.dark-theme .post-warp .post-content .mermaid g.classGroup line{stroke:purple;stroke-width:1}.dark-theme .post-warp .post-content .mermaid .classLabel .box{stroke:none;stroke-width:0;fill:#bdd5ea;opacity:.5}.dark-theme .post-warp .post-content .mermaid .classLabel .label{fill:purple;font-size:10px}.dark-theme .post-warp .post-content .mermaid .relation{stroke:purple;stroke-width:1;fill:none}.dark-theme .post-warp .post-content .mermaid #compositionStart{fill:purple;stroke:purple;stroke-width:1}.dark-theme .post-warp .post-content .mermaid #compositionEnd{fill:purple;stroke:purple;stroke-width:1}.dark-theme .post-warp .post-content .mermaid #aggregationStart{fill:#bdd5ea;stroke:purple;stroke-width:1}.dark-theme .post-warp .post-content .mermaid #aggregationEnd{fill:#bdd5ea;stroke:purple;stroke-width:1}.dark-theme .post-warp .post-content .mermaid #dependencyStart{fill:purple;stroke:purple;stroke-width:1}.dark-theme .post-warp .post-content .mermaid #dependencyEnd{fill:purple;stroke:purple;stroke-width:1}.dark-theme .post-warp .post-content .mermaid #extensionStart{fill:purple;stroke:purple;stroke-width:1}.dark-theme .post-warp .post-content .mermaid #extensionEnd{fill:purple;stroke:purple;stroke-width:1}.dark-theme .post-warp .post-content .mermaid .commit-id,.dark-theme .post-warp .post-content .mermaid .commit-msg,.dark-theme .post-warp .post-content .mermaid .branch-label{fill:lightgrey;color:lightgrey}.post-warp .post-content .echarts{width:100%;height:30rem;margin:3% auto;text-align:center}.post-warp .post-content .bilibili{position:relative;width:100%;height:0;padding-bottom:75%;margin:3% auto}.post-warp .post-content .bilibili iframe{position:absolute;width:100%;height:100%;left:0;top:0}.post-warp .post-content hr{margin:1rem 0;position:relative;border-top:1px dashed #dcdcdc;border-bottom:none}.dark-theme .post-warp .post-content hr{border-top:1px dashed #4a4b50}.post-warp .post-content kbd{display:inline-block;padding:.25em;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:.8em;line-height:1.25rem;font-family:Consolas,Monaco,Menlo,dejavu sans mono,bitstream vera sans mono,courier new,monospace;color:#e74c3c}.dark-theme .post-warp .post-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}.post-warp .post-content .typeit .code{padding:.375rem;font-size:.875rem;font-family:Consolas,Monaco,Menlo,Consolas,monospace;font-weight:700;word-break:break-all}.post-warp .post-content .typeit .code .k{color:#d371e3}.post-warp .post-content .typeit .code .kt{color:#d371e3}.post-warp .post-content .typeit .code .kc{color:#d371e3}.post-warp .post-content .typeit .code .o{color:#d371e3}.post-warp .post-content .typeit .code .nf{color:#f16473}.post-warp .post-content .typeit .code .na{color:#41b1f5}.post-warp .post-content .typeit .code .s{color:#8bc56f}.post-warp .post-content .typeit .code .n{color:#db975c}.post-warp .post-content .typeit .code .c1{color:#7e848f}.post-warp .post-content .align-left{text-align:left}.post-warp .post-content .align-center{text-align:center}.post-warp .post-content .align-right{text-align:right}.post-warp .post-content .float-left{float:left}.post-warp .post-content .float-right{float:right}.post-warp .post-footer{margin-top:3rem}.post-warp .post-footer .post-info{border-bottom:1px solid #dcdcdc;padding:1rem 0 .3rem}.dark-theme .post-warp .post-footer .post-info{border-bottom:1px solid #4a4b50}.post-warp .post-footer .post-info .post-info-line{display:flex;justify-content:space-between}.post-warp .post-footer .post-info .post-info-line .post-info-mod{font-size:.8em;color:#a9a9b3}.dark-theme .post-warp .post-footer .post-info .post-info-line .post-info-mod{color:#87878d}.post-warp .post-footer .post-info .post-info-line .post-info-license{font-size:.8em;color:#a9a9b3}.dark-theme .post-warp .post-footer .post-info .post-info-line .post-info-license{color:#87878d}.post-warp .post-footer .post-info .post-info-line .post-info-md a{font-size:.8em;color:#2d96bd}.dark-theme .post-warp .post-footer .post-info .post-info-line .post-info-md a{color:#eee}.post-warp .post-footer .post-info .post-info-line .post-info-md a:hover{color:#ef3982}.dark-theme .post-warp .post-footer .post-info .post-info-line .post-info-md a:hover{color:#fff}.post-warp .post-footer .post-info-more{padding:.3rem 0 1rem;display:flex;justify-content:space-between;font-size:.9rem}.post-warp .post-footer .post-nav:before,.post-warp .post-footer .post-nav:after{content:" ";display:table}.post-warp .post-footer .post-nav a.prev,.post-warp .post-footer .post-nav a.next{font-weight:600;font-size:1rem;transition-property:transform;transition-timing-function:ease-out;transition-duration:.3s}.post-warp .post-footer .post-nav a.prev{float:left}.post-warp .post-footer .post-nav a.prev:hover{transform:translateX(-4px)}.post-warp .post-footer .post-nav a.next{float:right}.post-warp .post-footer .post-nav a.next:hover{transform:translateX(4px)}.post-warp .post-comment{padding:3rem 0}.post-warp .home-intro{transform:translateY(0);padding:2rem 0}.post-warp .home-intro .home-avatar img{width:6rem}.post-warp .post{padding-top:1rem;padding-bottom:.8rem;color:#161209;border-bottom:1px dashed #dcdcdc}.dark-theme .post-warp .post{color:#a9a9b3;border-bottom:1px dashed #4a4b50}.post-warp .post .post-featured-image-preview{width:100%;padding:30% 0 0;position:relative;margin-bottom:1rem}.post-warp .post .post-featured-image-preview img{position:absolute;width:100%;height:100%;left:0;top:0;object-fit:cover}.post-warp .post .post-list-title{font-size:1.6rem}.post-warp .post .post-meta{font-size:.875rem!important}.post-warp .post .post-meta a{color:#a9a9b3!important}.dark-theme .post-warp .post .post-meta a{color:#87878d!important}.post-warp .post .post-meta a:hover{color:#2d96bd!important}.dark-theme .post-warp .post .post-meta a:hover{color:#fff!important}.post-warp .post .post-content{padding-top:.2rem;font-size:.9rem;width:100%;max-height:7rem;overflow:hidden}.post-warp .post .post-content h2,.post-warp .post .post-content h3,.post-warp .post .post-content h4,.post-warp .post .post-content h5,.post-warp .post .post-content h6{font-size:1rem;line-height:1rem;padding-top:.3rem;padding-bottom:.3rem}.post-warp .post .post-content p{margin:0;padding-top:.3rem;padding-bottom:.3rem}.post-warp .post .post-footer{margin-top:.5rem;display:flex;justify-content:space-between;align-items:center;font-size:.875rem!important}.post-warp .post .post-footer a{color:#2d96bd!important}.dark-theme .post-warp .post .post-footer a{color:#eee!important}.post-warp .post .post-footer a:hover{color:#ef3982!important}.dark-theme .post-warp .post .post-footer a:hover{color:#fff!important}.post-warp .post .post-footer .post-tags{padding:0}.post-warp .post .post-footer .post-tags a{color:#161209!important}.dark-theme .post-warp .post .post-footer .post-tags a{color:#a9a9b3!important}.post-warp .post .post-footer .post-tags a:hover{color:#2d96bd!important}.dark-theme .post-warp .post .post-footer .post-tags a:hover{color:#fff!important}.archive .post-title{text-align:right;padding-bottom:2rem}.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 .categories{width:100%;overflow:hidden}.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 .2s ease,border-color .2s ease,background .2s ease,opacity .2s ease}.dark-theme .archive .archive-item-link:hover{color:#fff;text-decoration:none;transition:color .2s ease,border-color .2s ease,background .2s ease,opacity .2s ease}.archive .archive-item-date{float:right;text-align:right;color:#a9a9b3}.dark-theme .archive .archive-item-date{color:#87878d}.archive .more-post{text-align:right}.archive .categories h3{display:inline-block}.archive .categories span{float:right;padding-right:1rem}.archive .tag-cloud-tags{margin:10px 0}.archive .tag-cloud-tags a{display:inline-block;position:relative;margin:5px 10px;word-wrap:break-word;transition-duration:.3s;transition-property:transform;transition-timing-function:ease-out}.archive .tag-cloud-tags a:active,.archive .tag-cloud-tags a:focus,.archive .tag-cloud-tags a:hover{color:#2d96bd;transform:scale(1.1)}.dark-theme .archive .tag-cloud-tags a:active,.dark-theme .archive .tag-cloud-tags a:focus,.dark-theme .archive .tag-cloud-tags a:hover{color:#fff}.archive .tag-cloud-tags a small{color:#a9a9b3}.dark-theme .archive .tag-cloud-tags a small{color:#fff}.single .post-title{text-align:right;padding-bottom:2rem}.navbar{display:block;position:fixed;width:100%;z-index:100;height:4rem;line-height:4rem;background-color:#fafafa}.dark-theme .navbar{background-color:#252627}.navbar .navbar-container{width:auto;text-align:center;margin:0 6rem;display:flex;justify-content:space-between}.navbar .navbar-container .navbar-header a{padding:0 8px}.navbar .navbar-container .navbar-header a i{line-height:2em}.navbar .navbar-container .navbar-menu a{padding:0 8px}.navbar .navbar-container .navbar-menu a.active{font-weight:900;color:#161209}.dark-theme .navbar .navbar-container .navbar-menu a.active{color:#fff}.navbar-mobile{display:none;position:fixed;width:100%;z-index:100;transition:all .3s ease 0s}.navbar-mobile .navbar-container{padding:0;margin:0;height:4.5em;line-height:4.5em;background:#fff}.navbar-mobile .navbar-container .navbar-header{display:flex;justify-content:space-between;align-items:center;width:100%;font-size:18px;padding-right:1em;padding-left:1em;box-sizing:border-box}.navbar-mobile .navbar-container .navbar-header .menu-toggle{cursor:pointer;line-height:4.5em}.navbar-mobile .navbar-container .navbar-header .menu-toggle span{display:block;background:#000;width:36px;height:2px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-transition:.2s margin .2s,.2s transform;-moz-transition:.2s margin .2s,.2s transform;transition:.2s margin .2s,.2s transform}.dark-theme .navbar-mobile .navbar-container .navbar-header .menu-toggle span{background:#a9a9b3}.navbar-mobile .navbar-container .navbar-header .menu-toggle span:nth-child(1){margin-bottom:8px}.navbar-mobile .navbar-container .navbar-header .menu-toggle span:nth-child(3){margin-top:8px}.navbar-mobile .navbar-container .navbar-header .menu-toggle.active span{-webkit-transition:.2s margin,.2s transform .2s;-moz-transition:.2s margin,.2s transform .2s;transition:.2s margin,.2s transform .2s}.navbar-mobile .navbar-container .navbar-header .menu-toggle.active span:nth-child(1){-moz-transform:rotate(45deg) translate(4px,6px);-ms-transform:rotate(45deg) translate(4px,6px);-webkit-transform:rotate(45deg) translate(4px,6px);transform:rotate(45deg) translate(4px,6px)}.navbar-mobile .navbar-container .navbar-header .menu-toggle.active span:nth-child(2){opacity:0}.navbar-mobile .navbar-container .navbar-header .menu-toggle.active span:nth-child(3){-moz-transform:rotate(-45deg) translate(8px,-10px);-ms-transform:rotate(-45deg) translate(8px,-10px);-webkit-transform:rotate(-45deg) translate(8px,-10px);transform:rotate(-45deg) translate(8px,-10px)}.navbar-mobile .navbar-container .navbar-menu{text-align:center;background:#fff;border-top:2px solid #161209;display:none;box-shadow:0 2px 4px rgba(0,0,0,.1),0 4px 8px rgba(0,0,0,.1)}.navbar-mobile .navbar-container .navbar-menu a{display:block;line-height:2.5em}.navbar-mobile .navbar-container .navbar-menu.active{display:block}.dark-theme .navbar-mobile .navbar-container .navbar-menu{background:#292a2d;border-top:2px solid #a9a9b3}.dark-theme .navbar-mobile .navbar-container{background:#292a2d}.copyright{font-size:.875rem}.copyright .copyright-line{width:100%}.dynamic-to-top{display:none;overflow:hidden;width:auto;z-index:90;position:fixed;bottom:2rem;right:2rem;top:auto;left:auto;font-family:sans-serif;font-size:1rem;color:#fff;text-decoration:none;text-shadow:0 1px 0 #333;font-weight:700;padding:1rem;border:1px solid #dcdcdc;background:#222;outline:none}.dynamic-to-top:hover{background:#000;cursor:pointer}.dynamic-to-top:active{background:#000;outline:none}.dynamic-to-top:focus,.dynamic-to-top:hover{outline:none}.dynamic-to-top span{display:block;overflow:hidden;width:.875rem;height:.75rem;background:url(data:image/png;base64,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) no-repeat 50%}.dark-theme .dynamic-to-top{border:1px solid #4a4b50}.pagination{display:flex;flex-direction:row;justify-content:center;list-style:none;white-space:nowrap;width:100%;padding-top:1rem}.pagination a{-webkit-font-smoothing:antialiased;font-size:.8rem;color:#bfbfbf;letter-spacing:.1rem;font-weight:700;padding:5px;text-decoration:none;transition:.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:.3s;bottom:0}.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:1300px){.post-warp{max-width:560px}.post-warp .post-toc{margin-left:580px}}@media only screen and (max-width:1080px){.navbar .navbar-container{margin:0 2rem}.post-warp{max-width:80%}.post-warp .post-toc{display:none}.post-warp .post-toc-mobile{display:block}}@media only screen and (max-width:480px){.navbar{display:none}.navbar-mobile{display:block}.post-warp{max-width:100%}.post-warp .categories-card .card-item{width:95%}.dynamic-to-top{display:none!important}} \ No newline at end of file diff --git a/exampleSite/resources/_gen/assets/scss/css/style.scss_b95b077eb505d5c0aff8055eaced30ad.json b/exampleSite/resources/_gen/assets/scss/css/style.scss_b95b077eb505d5c0aff8055eaced30ad.json new file mode 100644 index 00000000..0095485d --- /dev/null +++ b/exampleSite/resources/_gen/assets/scss/css/style.scss_b95b077eb505d5c0aff8055eaced30ad.json @@ -0,0 +1 @@ +{"Target":"css/style.min.css","MediaType":"text/css","Data":{}} \ No newline at end of file diff --git a/exampleSite/zh/content/about.md b/exampleSite/zh/content/about.md index 5becb782..8bc3ba66 100644 --- a/exampleSite/zh/content/about.md +++ b/exampleSite/zh/content/about.md @@ -18,7 +18,7 @@ draft: false * :(fab fa-searchengin): 使用基于 JSON-LD 格式 的 SEO SCHEMA 文件进行 SEO 优化 * :(fab fa-google): 支持 [Google Analytics](https://analytics.google.com/analytics) * :(fas fa-search): 支持搜索引擎的网站验证 (Google, Bind, Yandex and Baidu) -* :(fas fa-tachometer-alt): 支持 CDN +* :(fas fa-tachometer-alt): 支持所有第三方库的 CDN * :(far fa-images): 基于 [lazysizes](https://github.com/aFarkas/lazysizes) 自动转换图片为懒加载 #### 外观和布局 @@ -27,7 +27,9 @@ draft: false * :(fas fa-moon): / :(fas fa-sun): 模式 * :(fas fa-layer-group): 页面和列表保持一致的视觉样式 * :(fas fa-ellipsis-h): 支持分页 +* :(far fa-list-alt): 易用和自动展开的文章目录,同时适配移动端 * :(fas fa-language): 支持多语言和国际化 +* :(fab fa-css3-alt): 美观的 CSS 动画 #### 社交和评论系统