diff --git a/LICENSE b/LICENSE
index 5ea91380..322bee44 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,7 @@
The MIT License (MIT)
-Copyright (c) 2019 Giuseppe Pignataro
+Copyright (c) 2018 LIUZHICHAO.COM
+Copyright (c) 2019 DILLONZQ.COM
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
diff --git a/LICENSE.md b/LICENSE.md
deleted file mode 100644
index a4d70877..00000000
--- a/LICENSE.md
+++ /dev/null
@@ -1,20 +0,0 @@
-The MIT License (MIT)
-
-Copyright (c) 2018 LIUZHICHAO.COM
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of
-this software and associated documentation files (the "Software"), to deal in
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software is furnished to do so,
-subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
-FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
-COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/README.md b/README.md
index a6247e2d..4dd2e95b 100644
--- a/README.md
+++ b/README.md
@@ -1,142 +1,203 @@
-KeepIt Hugo Theme
-========================
-
-KeepIt is a clean, elegant, simple but not simpler blog theme for Hugo based on the original [LeaveIt Theme](https://github.com/liuzc/LeaveIt) developed by [LiuZhichao](https://github.com/liuzc).
-
-![hugo-theme-KeepIt](https://github.com/Fastbyte01/KeepIt/blob/master/images/screenshot.png)
-
-# Demo
-To see this theme in action, Here is a live [demo site](https://suspicious-archimedes-ab369d.netlify.com) which is rendered with this theme.
-
-People that are using **KeepIt**:
-
-* [PapEr](https://page.codespaper.com)
-* [SilkeHenderickx](http://www.silkehenderickx.be)
-* [jmickey](https://mickey.dev/)
-* [ssaraf](https://ssaraf.com/)
-
-# Features
-
-* Optimized for performance: 99/100 on mobile and 100/100 on desktop in Google PageSpeed Insights
-* Optimized SEO performance with a correct SEO SCHEMA based on JSON-LD
-* A More coerent style beetwen page and sections
-* Multilanguage support
-* Pagination support
-* Google Analytics support
-* Disqus Comment System
-* Gitalk Comment System
-* Valine Comment System
-* Gitment Comment System
-* Utterances Comment System
-* Gravatar Support
-* Local Avatar Support
-* Share post support
-* Search engine verification support (Google, Bind, Yandex and Baidu)
-* Added configuration file for use on [Netlify](https://www.netlify.com)
-* Dark/Light mode
-* Up to 54 social sites supported out-of-the-box [see the list here](https://github.com/Fastbyte01/KeepIt/wiki/List-of-social-platforms-supported-out-of-box)
-* Translation ready
-* Wrap Image with Figure Tag without Shortcode. Thanks [Junian.Net](https://www.junian.net/hugo-image-figure-wrap/)
-* Load images with Lazy Load By [lazysizes](https://github.com/aFarkas/lazysizes)
-* Automatically highlighting code By [Google code-prettify](https://github.com/google/code-prettify), Customizable styles via CSS. See the [themes gallery](https://rawgit.com/google/code-prettify/master/styles/index.html).
-* Automagical image gallery with [lightGallery](https://github.com/sachinchoolur/lightGallery)
+# KeepIt Theme | Hugo [![Netlify Status](https://api.netlify.com/api/v1/badges/e60303f2-862c-4342-bf59-7c9adb10812e/deploy-status)](https://app.netlify.com/sites/hugo-keepit/deploys)
+
+[![GitHub release (latest by date)](https://img.shields.io/github/v/release/dillonzq/KeepIt?style=flat-square)](https://github.com/Fastbyte01/KeepIt/releases)
+[![Hugo](https://img.shields.io/badge/Hugo-%5E0.62.0-ff4088?style=flat-square&logo=hugo)](https://gohugo.io/)
+[![License](https://img.shields.io/github/license/dillonzq/KeepIt?style=flat-square)](https://github.com/Fastbyte01/KeepIt/blob/master/LICENSE)
+[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=dillonzq_KeepIt&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=dillonzq_KeepIt)
+[![CircleCI](https://circleci.com/gh/dillonzq/KeepIt/tree/master.svg?style=svg)](https://circleci.com/gh/dillonzq/KeepIt/tree/master)
+
+English README | [简体中文说明](https://github.com/Fastbyte01/KeepIt/blob/master/README.zh-cn.md)
+
+> **KeepIt** 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/Fastbyte01/KeepIt).
+
+Since the three themes have a similar look, if you have questions about their differences,
+read [Why choose KeepIt](#why-choose-keepit) so that you can choose the one that works best for you.
+
+![Hugo Theme KeepIt](https://github.com/Fastbyte01/KeepIt/raw/master/images/Apple-Devices-Preview.png)
+
+## [Demo Site](https://suspicious-archimedes-ab369d.netlify.app/)
+
+To see this theme in action, here is a live [demo site](https://suspicious-archimedes-ab369d.netlify.app/) which is rendered with **KeepIt** theme.
+
+## Why choose KeepIt
+
+Compared to the original LeaveIt theme and the KeepIt theme, the KeepIt theme has the following modifications.
+
+* Custom **Header**
+* Custom **CSS Style**
+* A new **home page**, compatible with the latest version of Hugo
+* 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 **table of contents**
+* More **social links**, **share sites** and **comment system**
+* **Search** supported by [Lunr.js](https://lunrjs.com/) or [algolia](https://www.algolia.com/)
+* **Copy code** to clipboard with one click
+* Extended Markdown syntax for **[Font Awesome](https://fontawesome.com/) icons**
+* Extended Markdown syntax for **ruby annotation**
+* Extended Markdown syntax for **fraction**
+* **Mathematical formula** supported by [KaTeX](https://katex.org/)
+* **Diagram syntax** shortcode supported by [mermaid](https://github.com/mermaid-js/mermaid)
+* **Interactive data visualization** shortcode supported by [ECharts](https://echarts.apache.org/)
+* **Mapbox** shortcode supported by [Mapbox GL JS](https://docs.mapbox.com/mapbox-gl-js)
+* Embedded **music player** supported by [APlayer](https://github.com/MoePlayer/APlayer) and [MetingJS](https://github.com/metowolf/MetingJS)
+* **Bilibili** player supported
+* Kinds of **admonitions** shortcode supported
+* Custom style shortcodes supported
+* **CDN** for all third-party libraries supported
* ...
-# Getting Started
-Clone this repository to your hugo theme directory.
+In short,
+if you prefer the design language and freedom of the KeepIt theme,
+if you want to use the extended Font Awesome icons conveniently,
+if you want to embed mathematical formulas, flowcharts, music or Bilibili videos in your posts,
+the KeepIt theme may be more suitable for you.
+
+I hope you will KeepIt ❤️!
+
+## 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)** supported
+* **[Fathom Analytics](https://usefathom.com/)** supported
+* Search engine **verification** supported (Google, Bind, Yandex and Baidu)
+* **CDN** for third-party libraries supported
+* Automatically converted images with **Lazy Load** by [lazysizes](https://github.com/aFarkas/lazysizes)
+
+### Appearance and Layout
+
+* **Desktop/Mobile Responsive** layout
+* **Light/Dark** mode
+* Globally consistent **design language**
+* **Pagination** supported
+* Easy-to-use and self-expanding **table of contents**
+* **Multilanguage** supported and i18n ready
+* Beautiful **CSS animation**
+
+### Social and Comment Systems
+
+* **Gravatar** supported by [Gravatar](https://gravatar.com)
+* Local **Avatar** supported
+* Up to **64** social links supported
+* Up to **24** share sites supported
+* **Disqus** comment system supported by [Disqus](https://disqus.com)
+* **Gitalk** comment system supported by [Gitalk](https://github.com/gitalk/gitalk)
+* **Valine** comment system supported by [Valine](https://valine.js.org/)
+* **Facebook comments** system supported by [Facebook](https://developers.facebook.com/docs/plugins/comments/)
+* **Telegram comments** system supported by [Telegram Comments](https://comments.app/)
+* **Commento** comment system supported by [Commento](https://commento.io/)
+* **Utterances** comment system supported by [Utterances](https://utteranc.es/)
+
+### Extended Features
+
+* **Search** supported by [Lunr.js](https://lunrjs.com/) or [algolia](https://www.algolia.com/)
+* **Twemoji** supported
+* Automatically **highlighting** code
+* **Copy code** to clipboard with one click
+* **Images gallery** supported by [lightGallery](https://github.com/sachinchoolur/lightgallery)
+* Extended Markdown syntax for **[Font Awesome](https://fontawesome.com/) icons**
+* Extended Markdown syntax for **ruby annotation**
+* Extended Markdown syntax for **fraction**
+* **Mathematical formula** supported by [KaTeX](https://katex.org/)
+* **Diagrams** shortcode supported by [mermaid](https://github.com/mermaid-js/mermaid)
+* **Interactive data visualization** shortcode supported by [ECharts](https://echarts.apache.org/)
+* **Mapbox** shortcode supported by [Mapbox GL JS](https://docs.mapbox.com/mapbox-gl-js)
+* **Music player** shortcode supported by [APlayer](https://github.com/MoePlayer/APlayer) and [MetingJS](https://github.com/metowolf/MetingJS)
+* **Bilibili player** shortcode
+* Kinds of **admonitions** shortcode
+* **Custom style** shortcode
+* **Custom script** shortcode
+* **Animated typing** supported by [TypeIt](https://typeitjs.com/)
+* **Cookie consent banner** supported by [cookieconsent](https://github.com/osano/cookieconsent)
+* ...
-```bash
-cd themes
-git clone https://github.com/Fastbyte01/KeepIt.git
-```
+## [Documentation](https://suspicious-archimedes-ab369d.netlify.app/categories/documentation/)
+
+Build Documentation Locally:
-Next, open config.toml in the base of the Hugo site and ensure the theme option is set to KeepIt:
```bash
-theme = "KeepIt"
+hugo server --source=exampleSite
```
-For more information read the [official setup guide](https://gohugo.io/documentation/) of Hugo.
-
-# Site Configuration
-Take a look in the `exampleSite` folder.
-
-This directory contains an example config file and the content for the demo. It serves as an example setup for your documentation.
-
-Copy the `config.toml` in the root directory of your website. Overwrite the existing config file if necessary.
-
-# Content Suggestions
-
-A few suggestions to help you get a good looking site quickly:
-* Keep blog posts in the content/posts directory, for example: content/posts/my-first-post.md
-* Keep static pages in the content directory, for example: content/about.md
-* Keep media like images in the static directory, for example: static/images/2019/10/screenshot.png
+## Multilingual and i18n
-# Customizing styles for your website
+KeepIt supports the following languages:
-If you want to change some styling to fit your own website needs, you can edit them:
+* English
+* Simplified Chinese
+* Traditional Chinese
+* French
+* Polish
+* Brazilian Portuguese
+* Italian
+* Spanish
+* German
+* Serbian
+* Russian
+* Romanian
+* Vietnamese
+* [Contribute with a new language](https://github.com/Fastbyte01/KeepIt/pulls)
-* `assets/css/_varibales/default.scss`: You can override the variables in `_variables.scss` to customize the style
-* `assets/css/_custom.scss` : You can put your custom css in this file
+[Languages Compatibility](https://suspicious-archimedes-ab369d.netlify.app/theme-documentation-basics/#language-compatibility)
-# Favicons, Browserconfig, Manifest
+## [Roadmap](https://github.com/Fastbyte01/KeepIt/projects/1)
-It is recommended to put your own favicons
+## Questions, ideas, bugs, pull requests
-* apple-touch-icon.png (180x180)
-* favicon-32x32.png (32x32)
-* favicon-16x16.png (16x16)
-* mstile-150x150.png (150x150)
-* android-chrome-192x192.png (192x192)
-* android-chrome-512x512.png (512x512)
-
-into `/static`. They’re easily created via https://realfavicongenerator.net/.
-
-Customize browserconfig.xml and site.webmanifest to set theme-color and background-color for example.
+All feedback is welcome! Head over to the [issue tracker](https://github.com/Fastbyte01/KeepIt/issues).
-# Tips
+## License
-#### Set production environment when generating site
+KeepIt is licensed under the **MIT** license. Check the [LICENSE file](https://github.com/Fastbyte01/KeepIt/blob/master/LICENSE) for details.
-Because some functions are only in production mode, So you **need to add a production** environment variables when generating your site.
-```bash
-HUGO_ENV=production hugo --gc --minify
-```
+## Special Thanks
-#### Hugo “extended” Sass/SCSS version required
+Thanks to the authors of following resources included in the theme:
-This theme write style with scss, So you must download and install the “extended” Sass/SCSS version
+* [normalize.css](https://github.com/necolas/normalize.css)
+* [Font Awesome](https://fontawesome.com/)
+* [Simple Icons](https://github.com/simple-icons/simple-icons)
+* [Animate.css](https://daneden.github.io/animate.css/)
+* [autocomplete](https://github.com/algolia/autocomplete)
+* [Lunr.js](https://lunrjs.com/)
+* [algoliasearch](https://github.com/algolia/algoliasearch-client-javascript)
+* [lazysizes](https://github.com/aFarkas/lazysizes)
+* [object-fit-images](https://github.com/fregante/object-fit-images)
+* [Twemoji](https://github.com/twitter/twemoji)
+* [emoji-data](https://github.com/iamcal/emoji-data)
+* [lightGallery](https://github.com/sachinchoolur/lightgallery)
+* [clipboard.js](https://github.com/zenorocha/clipboard.js)
+* [Sharer.js](https://github.com/ellisonleao/sharer.js)
+* [TypeIt](https://typeitjs.com/)
+* [KaTeX](https://katex.org/)
+* [mermaid](https://github.com/mermaid-js/mermaid)
+* [ECharts](https://echarts.apache.org/)
+* [Mapbox GL JS](https://docs.mapbox.com/mapbox-gl-js)
+* [APlayer](https://github.com/MoePlayer/APlayer)
+* [MetingJS](https://github.com/metowolf/MetingJS)
+* [Gitalk](https://github.com/gitalk/gitalk)
+* [Valine](https://valine.js.org/)
+* [cookieconsent](https://github.com/osano/cookieconsent)
-#### How to toggle dark-light mode
-* You can click the sun logo to toggle dark-light mode. In the desktop version the sun logo 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/Fastbyte01/KeepIt/blob/master/assets/js/main.js#L32)
+## Author
-# Home Post model
-If you want to show posts on index instead of a personal profile, just open config.toml in the base of the Hugo site, add the following line to config.toml
-```toml
-[params]
- home_mode = "post" # post or other
-```
-# Add logo and cover for SEO
-
-Add a logo image (127x40) and a cover image (800x600). This images are used for SEO.
-
-# Questions, ideas, bugs, pull requests?
-All feedback is welcome! Head over to the [issue tracker](https://github.com/Fastbyte01/KeepIt/issues).
+[Dillon](https://dillonzq.com)
-For more configuration info or other tips you can see the [wiki](https://github.com/Fastbyte01/KeepIt/wiki).
+## Sponsor
-# License
-LeaveIt is licensed under the MIT license. Check the LICENSE file for details.
-The following resources are included in the theme:
+If you enjoy the theme, please consider buying me a coffee ☕️.
-* lazysizes - https://github.com/aFarkas/lazysizes
-* lightGallery - https://github.com/sachinchoolur/lightGallery
-* code-prettify - https://github.com/google/code-prettify
+* [PayPal](https://paypal.me/dillonzq)
+* [Alipay](https://github.com/Fastbyte01/KeepIt/raw/master/images/Alipay.jpg)
+* [Wechat](https://github.com/Fastbyte01/KeepIt/raw/master/images/Wechat.jpg)
-# Author
-[Fastbyte01](https://github.com/Fastbyte01)
+Thanks! ❤️
-# See Also
+## Stargazers over time
-* [Hermitt](https://github.com/Track3/hermit)
-* [Goa](https://github.com/shenoybr/hugo-goa)
+[![Stargazers over time](https://starchart.cc/dillonzq/KeepIt.svg)](https://starchart.cc/dillonzq/KeepIt)
diff --git a/archetypes/default.md b/archetypes/default.md
index ce48f5ec..b37d5eb4 100644
--- a/archetypes/default.md
+++ b/archetypes/default.md
@@ -1,10 +1,62 @@
---
-title: "{{ replace .Name "-" " " | title }}"
+title: "{{ replace .TranslationBaseName "-" " " | title }}"
+subtitle: ""
date: {{ .Date }}
+lastmod: {{ .Date }}
draft: true
-description:
-categories:
- -
-featured_image:
author: ""
----
\ No newline at end of file
+authorLink: ""
+description: ""
+license: ""
+images: []
+
+tags: []
+categories: []
+
+featuredImage: ""
+featuredImagePreview: ""
+
+hiddenFromHomePage: false
+hiddenFromSearch: false
+twemoji: false
+lightgallery: true
+ruby: true
+fraction: true
+fontawesome: true
+linkToMarkdown: true
+rssFullText: false
+
+toc:
+ enable: true
+ auto: true
+code:
+ copy: true
+ maxShownLines: 50
+math:
+ enable: false
+ # ...
+mapbox:
+ # ...
+share:
+ enable: true
+ # ...
+comment:
+ enable: true
+ # ...
+library:
+ css:
+ # someCSS = "some.css"
+ # located in "assets/"
+ # Or
+ # someCSS = "https://cdn.example.com/some.css"
+ js:
+ # someJS = "some.js"
+ # located in "assets/"
+ # Or
+ # someJS = "https://cdn.example.com/some.js"
+seo:
+ images: []
+ # ...
+---
+
+
diff --git a/assets/css/_common/_core/base.scss b/assets/css/_common/_core/base.scss
deleted file mode 100644
index c28cac07..00000000
--- a/assets/css/_common/_core/base.scss
+++ /dev/null
@@ -1,133 +0,0 @@
-/** Font **/
-
- /* Lato */
- @import url(https://fonts.googleapis.com/css?family=Lato:100,300,400,700,900);
-
- /* Montserrat */
- @import url(https://fonts.googleapis.com/css?family=Montserrat:400,500,600,700,800);
-
- /* Roboto */
- @import url(https://fonts.googleapis.com/css?family=Roboto:400,900);
-
-
-
-
- html {
- &::-webkit-scrollbar {
- width: 8px;
- height: 8px;
- }
- &::-webkit-scrollbar-thumb {
- height: 40px;
- background-color: #eee;
- border-radius: 16px;
- &:hover {
- background-color: #ddd;
- }
- }
- }
-
- ::selection {
- background: rgba(0, 149, 255, 0.1);
- }
-
- html {
- font-family: "Roboto", -apple-system, BlinkMacSystemFont, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", STHeiti, "Microsoft Yahei", "WenQuanYi Micro Hei", Arial, Verdana, sans-serif;
- }
-
- body {
- font-size: 11pt;
- font-weight: 400;
- line-height: 2em;
- background-color: $light-background-color;
- color: $light-font-color;
- &:before {
- content: "";
- background-repeat: no-repeat;
- background-position: center;
- opacity: 0.05;
- position: fixed;
- top: 0;
- left: 0;
- width: 100%;
- height: 100%;
- z-index: -1;
- -webkit-filter: grayscale(100%);
- -moz-filter: grayscale(100%);
- -ms-filter: grayscale(100%);
- -o-filter: grayscale(100%);
- filter: grayscale(100%);
- filter: gray;
- }
-
- &.dark-theme {
- background-color: $dark-background-color;
- color: $dark-font-color;
- }
- }
-
- a {
- color: $light-global-link-color;
- text-decoration: none;
- transition: color 0.2s ease, border-color 0.2s ease, background 0.2s ease, opacity 0.2s ease;
- &:hover {
- color: $light-global-link-hover-color;
- text-decoration: none;
- transition: color 0.2s ease, border-color 0.2s ease, background 0.2s ease, opacity 0.2s ease;
- }
-
- .dark-theme & {
- color: $dark-global-link-color;
- text-decoration: none;
- transition: color 0.2s ease, border-color 0.2s ease, background 0.2s ease, opacity 0.2s ease;
-
- &:hover{
- color: $dark-global-link-hover-color;
- text-decoration: none;
- transition: color 0.2s ease, border-color 0.2s ease, background 0.2s ease, opacity 0.2s ease;
- }
- }
- }
-
- blockquote {
- font-size: 1rem;
- display: block;
- border-width: 1px 0;
- border-style: solid;
- border-color: $light-border-color;
- padding: 1.5em 1.2em 0.5em 1.2em;
- margin: 0 0 2em 0;
- position: relative;
-
- &:before {
- content: '\201C';
- position: absolute;
- top: 0em;
- left: 50%;
- transform: translate(-50%, -50%);
- width: 3rem;
- height: 2rem;
- font: 6em/1.08em 'PT Sans', sans-serif;
- color: $light-post-link-color;
- text-align: center;
-
- .dark-theme &{
- color: $dark-post-link-color;
- }
- }
- &:after {
- content: "#blockquote" attr(cite);
- display: block;
- text-align: right;
- font-size: 0.875em;
- color: $light-post-link-color;
-
- .dark-theme &{
- color: $dark-post-link-color;
- }
- }
-
- .dark-theme & {
- border-color: $dark-border-color;
- }
- }
\ No newline at end of file
diff --git a/assets/css/_common/_core/layout.scss b/assets/css/_common/_core/layout.scss
deleted file mode 100644
index 8e77ed39..00000000
--- a/assets/css/_common/_core/layout.scss
+++ /dev/null
@@ -1,45 +0,0 @@
- /** Layout **/
-
- .wrapper {
- display: flex;
- flex-direction: column;
- min-height: 100vh;
- width: 100%;
- }
-
- .navbar {
- height: 4rem;
- line-height: 4rem;
- width: 100%;
- .container {
- width: auto;
- max-width: 1200px;
- text-align: center;
- margin: 0 auto;
- display: flex;
- justify-content: space-between;
- }
- }
-
- .main {
- flex: 1 0 auto;
- }
- .container{
- padding-left: 1em;
- padding-right: 1em;
- }
-
- .footer {
- height: 4rem;
- width: 100%;
- text-align: center;
- line-height: 4rem;
- padding-top: 2em;
- }
-
-
- .notfound {
- font-size: 2em;
- transform: translateY(35vh);
- text-align: center;
- }
\ No newline at end of file
diff --git a/assets/css/_common/_core/media.scss b/assets/css/_common/_core/media.scss
deleted file mode 100644
index c4075578..00000000
--- a/assets/css/_common/_core/media.scss
+++ /dev/null
@@ -1,158 +0,0 @@
-@media only screen and (min-device-width: 320px) and (max-device-width: 480px) {
- .navbar {
- display: none;
- }
-
- .navbar-mobile {
- display: block !important;
- position: fixed;
- width: 100%;
- z-index: 100;
- transition: all 0.6s ease 0s;
- .container {
- padding: 0;
- margin: 0;
- height: 5em;
- line-height: 5.5em;
- background: $light-background-color;
-
- .navbar-header {
- display: flex;
- justify-content: space-between;
- align-items: center;
- width: 100%;
- padding-right: 1em;
- padding-left: 1em;
- box-sizing: border-box;
-
-
- .menu-toggle {
- cursor: pointer;
- line-height: 5.5em;
-
- span {
- display: block;
- background: #000;
- width: 36px;
- height: 2px;
- -webkit-border-radius: 3px;
- -moz-border-radius: 3px;
- border-radius: 3px;
- -webkit-transition: .25s margin .25s, .25s transform;
- -moz-transition: .25s margin .25s, .25s transform;
- transition: .25s margin .25s, .25s transform;
-
- .dark-theme & {
- background: $dark-font-color;
- }
- }
-
- span:nth-child(1) {
- margin-bottom: 8px;
- }
- span:nth-child(3) {
- margin-top: 8px;
- }
-
- &.active {
- span {
- -webkit-transition: .25s margin, .25s transform .25s;
- -moz-transition: .25s margin, .25s transform .25s;
- transition: .25s margin, .25s transform .25s;
- }
- 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);
- }
-
- span:nth-child(2) {
- opacity: 0
- }
-
- 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);
- }
- }
- }
- }
-
- .menu {
- text-align: center;
- background: #ffffff;
- border-top: 2px solid #000000;
- padding-top: 1em;
- padding-bottom: 1em;
- display: none;
- box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.1), 0px 4px 8px rgba(0, 0, 0, 0.1);
- a {
- display: block;
- line-height: 2.5em;
- }
-
- &.active {
- display: block;
- }
-
- .dark-theme & {
- background: $dark-background-color;
- border-top: 2px solid $dark-font-secondary-color;
- }
- }
- .dark-theme & {
- background: $dark-background-color !important;
- }
- }
- }
-
- #dynamic-to-top {
- display: none !important;
- }
- .footer {
- height: 3rem;
- width: 100%;
- text-align: center;
- line-height: 1.5rem;
- padding-top: 2em;
- }
-
- .post-warp {
- padding-top: 6em;
- .archive-item-date {
- display: none;
- }
- .categories-card {
- .card-item {
- width: 95%;
- }
- }
- }
-}
-
-
-
-/* iPads (portrait and landscape) ----------- */
-
-@media only screen and (min-device-width: 768px) and (max-device-width: 1024px) {}
-
-
-
-/* Desktops and laptops ----------- */
-
-@media only screen and (min-width: 1224px) {
- .navbar-mobile {
- display: none;
- }
-}
-
-
-
-/* Large screens ----------- */
-
-@media only screen and (min-width: 1824px) {
- /* Styles */
-}
\ No newline at end of file
diff --git a/assets/css/_common/_core/normalize.scss b/assets/css/_common/_core/normalize.scss
deleted file mode 100644
index 56010a8e..00000000
--- a/assets/css/_common/_core/normalize.scss
+++ /dev/null
@@ -1,356 +0,0 @@
-/*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */
-
-/* Document
- ========================================================================== */
-
-/**
- * 1. Correct the line height in all browsers.
- * 2. Prevent adjustments of font size after orientation changes in iOS.
- */
- @charset "UTF-8";
- html {
- line-height: 1.15; /* 1 */
- -webkit-text-size-adjust: 100%; /* 2 */
- }
-
- /* Sections
- ========================================================================== */
-
- /**
- * Remove the margin in all browsers.
- */
-
- html,
- body,
- main,
- div,
- span,
- a,
- li,
- ul,
- hr,
- h1,
- h2,
- h3,
- h4 {
- padding: 0;
- margin: 0;
- }
- /**
- * Correct the font size and margin on `h1` elements within `section` and
- * `article` contexts in Chrome, Firefox, and Safari.
- */
-
- h1 {
- font-size: 2em;
- margin: 0.67em 0;
- }
-
- /* Grouping content
- ========================================================================== */
-
- /**
- * 1. Add the correct box sizing in Firefox.
- * 2. Show the overflow in Edge and IE.
- */
-
- hr {
- box-sizing: content-box; /* 1 */
- height: 0; /* 1 */
- overflow: visible; /* 2 */
- }
-
- /**
- * 1. Correct the inheritance and scaling of font size in all browsers.
- * 2. Correct the odd `em` font sizing in all browsers.
- */
-
- pre {
- font-family: monospace, monospace; /* 1 */
- font-size: 1em; /* 2 */
- }
-
- /* Text-level semantics
- ========================================================================== */
-
- /**
- * Remove the gray background on active links in IE 10.
- */
-
- a {
- background-color: transparent;
- }
-
- /**
- * 1. Remove the bottom border in Chrome 57-
- * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
- */
-
- abbr[title] {
- border-bottom: none; /* 1 */
- text-decoration: underline; /* 2 */
- text-decoration: underline dotted; /* 2 */
- }
-
- /**
- * Add the correct font weight in Chrome, Edge, and Safari.
- */
-
- b,
- strong {
- font-weight: bolder;
- }
-
- /**
- * 1. Correct the inheritance and scaling of font size in all browsers.
- * 2. Correct the odd `em` font sizing in all browsers.
- */
-
- code,
- kbd,
- samp {
- font-family: monospace, monospace; /* 1 */
- font-size: 1em; /* 2 */
- }
-
- /**
- * Add the correct font size in all browsers.
- */
-
- small {
- font-size: 80%;
- }
-
- /**
- * Prevent `sub` and `sup` elements from affecting the line height in
- * all browsers.
- */
-
- sub,
- sup {
- font-size: 75%;
- line-height: 0;
- position: relative;
- vertical-align: baseline;
- }
-
- sub {
- bottom: -0.25em;
- }
-
- sup {
- top: -0.5em;
- }
-
- /* Embedded content
- ========================================================================== */
-
- /**
- * Remove the border on images inside links in IE 10.
- */
-
- img {
- border-style: none;
- }
-
- /* Forms
- ========================================================================== */
-
- /**
- * 1. Change the font styles in all browsers.
- * 2. Remove the margin in Firefox and Safari.
- */
-
- button,
- input,
- optgroup,
- select,
- textarea {
- font-family: inherit; /* 1 */
- font-size: 100%; /* 1 */
- line-height: 1.15; /* 1 */
- margin: 0; /* 2 */
- }
-
- /**
- * Show the overflow in IE.
- * 1. Show the overflow in Edge.
- */
-
- button,
- input {
- /* 1 */
- overflow: visible;
- }
-
- /**
- * Remove the inheritance of text transform in Edge, Firefox, and IE.
- * 1. Remove the inheritance of text transform in Firefox.
- */
-
- button,
- select {
- /* 1 */
- text-transform: none;
- }
-
- /**
- * Correct the inability to style clickable types in iOS and Safari.
- */
-
- button,
- [type="button"],
- [type="reset"],
- [type="submit"] {
- -webkit-appearance: button;
- }
-
- /**
- * Remove the inner border and padding in Firefox.
- */
-
- button::-moz-focus-inner,
- [type="button"]::-moz-focus-inner,
- [type="reset"]::-moz-focus-inner,
- [type="submit"]::-moz-focus-inner {
- border-style: none;
- padding: 0;
- }
-
- /**
- * Restore the focus styles unset by the previous rule.
- */
-
- button:-moz-focusring,
- [type="button"]:-moz-focusring,
- [type="reset"]:-moz-focusring,
- [type="submit"]:-moz-focusring {
- outline: 1px dotted ButtonText;
- }
-
- /**
- * Correct the padding in Firefox.
- */
-
- fieldset {
- padding: 0.35em 0.75em 0.625em;
- }
-
- /**
- * 1. Correct the text wrapping in Edge and IE.
- * 2. Correct the color inheritance from `fieldset` elements in IE.
- * 3. Remove the padding so developers are not caught out when they zero out
- * `fieldset` elements in all browsers.
- */
-
- legend {
- box-sizing: border-box; /* 1 */
- color: inherit; /* 2 */
- display: table; /* 1 */
- max-width: 100%; /* 1 */
- padding: 0; /* 3 */
- white-space: normal; /* 1 */
- }
-
- /**
- * Add the correct vertical alignment in Chrome, Firefox, and Opera.
- */
-
- progress {
- vertical-align: baseline;
- }
-
- /**
- * Remove the default vertical scrollbar in IE 10+.
- */
-
- textarea {
- overflow: auto;
- }
-
- /**
- * 1. Add the correct box sizing in IE 10.
- * 2. Remove the padding in IE 10.
- */
-
- [type="checkbox"],
- [type="radio"] {
- box-sizing: border-box; /* 1 */
- padding: 0; /* 2 */
- }
-
- /**
- * Correct the cursor style of increment and decrement buttons in Chrome.
- */
-
- [type="number"]::-webkit-inner-spin-button,
- [type="number"]::-webkit-outer-spin-button {
- height: auto;
- }
-
- /**
- * 1. Correct the odd appearance in Chrome and Safari.
- * 2. Correct the outline style in Safari.
- */
-
- [type="search"] {
- -webkit-appearance: textfield; /* 1 */
- outline-offset: -2px; /* 2 */
- }
-
- /**
- * Remove the inner padding in Chrome and Safari on macOS.
- */
-
- [type="search"]::-webkit-search-decoration {
- -webkit-appearance: none;
- }
-
- /**
- * 1. Correct the inability to style clickable types in iOS and Safari.
- * 2. Change font properties to `inherit` in Safari.
- */
-
- ::-webkit-file-upload-button {
- -webkit-appearance: button; /* 1 */
- font: inherit; /* 2 */
- }
-
- /* Interactive
- ========================================================================== */
-
- /*
- * Add the correct display in Edge, IE 10+, and Firefox.
- */
-
- details {
- display: block;
- }
-
- /*
- * Add the correct display in all browsers.
- */
-
- summary {
- display: list-item;
- }
-
- /* Misc
- ========================================================================== */
-
- /**
- * Add the correct display in IE 10+.
- */
-
- template {
- display: none;
- }
-
- /**
- * Add the correct display in IE 10.
- */
-
- [hidden] {
- display: none;
- }
-
\ No newline at end of file
diff --git a/assets/css/_common/_page/home.scss b/assets/css/_common/_page/home.scss
deleted file mode 100644
index 55f6c300..00000000
--- a/assets/css/_common/_page/home.scss
+++ /dev/null
@@ -1,54 +0,0 @@
-
- /** Home **/
-
- .intro {
- transform: translateY(25vh);
- text-align: center;
- .avatar {
- padding: 10px;
- img {
- width: 128px;
- height: auto;
- display: inline-block;
- -webkit-border-radius: 100%;
- border-radius: 100%;
- -webkit-box-shadow: 0 0 0 0.3618em rgba(0, 0, 0, 0.05);
- box-shadow: 0 0 0 0.3618em rgba(0, 0, 0, 0.05);
- margin: 0 auto;
- -webkit-transition: all ease 0.4s;
- -moz-transition: all ease 0.4s;
- -o-transition: all ease 0.4s;
- transition: all ease 0.4s;
- cursor: pointer;
- &:hover {
- position: relative;
- -webkit-transform: translateY(-0.75em);
- -moz-transform: translateY(-0.75em);
- -ms-transform: translateY(-0.75em);
- -o-transform: translateY(-0.75em);
- transform: translateY(-0.75em);
- cursor: pointer;
- }
- }
- }
- }
-
- h2.description {
- font-size: 1em;
- font-weight: normal;
- padding: 5px;
- }
-
- .social-links {
- a {
-
- padding: 0 5px;
- &:hover {
-
- background-color: transparent;
- }
- }
- .iconfont {
- font-size: 2em;
- }
- }
\ No newline at end of file
diff --git a/assets/css/_common/_page/home_post.scss b/assets/css/_common/_page/home_post.scss
deleted file mode 100644
index 7808b133..00000000
--- a/assets/css/_common/_page/home_post.scss
+++ /dev/null
@@ -1,60 +0,0 @@
-.post-warp {
- .intro {
- transform: translateY(0);
- margin: 2em 0 5em 0;
-
- .avatar {
- img {
- width: 96px;
- }
- }
- }
-
- .post {
- margin-bottom: 4em;
- border-bottom: 1px dashed #ddd;
-
- .post-content {
- padding-top: .5em;
- }
-
- .post-footer {
- display: flex;
- justify-content: space-between;
- align-items: center;
-
- .post-meta {
- a {
- color: rgba(85, 85, 85, 0.52941) !important;
- .dark-theme & {
- color: $dark-font-secondary-color !important;
- }
-
- &:hover {
- color: $light-font-secondary-color !important;
- .dark-theme & {
- color: $dark-font-secondary-color !important;
- }
- }
- }
- }
- .post-tags {
- span {
- a {
- color: rgba(85, 85, 85, 0.52941) !important;
- .dark-theme & {
- color: $dark-font-secondary-color !important;
- }
-
- &:hover {
- color: $light-font-secondary-color !important;
- .dark-theme & {
- color: $dark-font-secondary-color !important;
- }
- }
- }
- }
- }
- }
- }
-}
\ No newline at end of file
diff --git a/assets/css/_common/_page/post.scss b/assets/css/_common/_page/post.scss
deleted file mode 100644
index 6e20df23..00000000
--- a/assets/css/_common/_page/post.scss
+++ /dev/null
@@ -1,236 +0,0 @@
-/** Post **/
-
-.post-warp {
- position: relative;
- width: 100%;
- max-width: 780px;
- margin: 0 auto;
- padding-top: 2rem;
-
- .post-header h1 {
- margin: 0 !important;
- }
-
- .post-title {
- font-size: 2em;
- line-height: 1.5em;
- }
-
- .post-meta {
- color: rgba(85, 85, 85, 0.52941) !important;
- .dark-theme & {
- color: $dark-font-secondary-color !important;
- }
-
- a {
- color: $light-post-link-color;
- .dark-theme & {
- color: $dark-post-link-color;
- }
-
- &:hover {
- color: $light-post-link-hover-color;
- .dark-theme & {
- color: $dark-post-link-hover-color;
- }
- }
- }
- }
-
- .post-content {
- padding-top: 2rem;
-
- h2,
- h3,
- h4,
- h5,
- h6 {
- padding-top: .8em;
- padding-bottom: .3em;
- }
- h2::before {
- content: "#";
- margin-right: 5px;
- color: $light-post-link-color;
- .dark-theme & {
- color: $dark-post-link-color;
- }
- }
-
- h3::before {
- content: "|";
- margin-right: 5px;
- color: $light-post-link-color;
-
- .dark-theme & {
- color: $dark-post-link-color;
- }
- }
-
- a {
- color: $light-post-link-color;
- .dark-theme & {
- color: $dark-post-link-color;
- }
- }
-
- a:hover {
- color: $light-post-link-hover-color;
- .dark-theme &:hover {
- color: $dark-post-link-hover-color;
- font-weight: bold;
- text-decoration: underline;
- }
- }
-
- code,
- pre {
- padding: 7px;
- font-size: 13px;
- font-family: Consolas, Monaco, Menlo, Consolas, monospace;
- word-break: break-all;
- word-wrap: break-word;
- }
-
- code:not([class]) {
- padding: 5px 5px;
- background: #fff;
- border: 1px solid #ddd;
- box-shadow: 1px 1px 0 #fff, 2px 2px 0 #ddd;
- margin-left: 3px;
- margin-right: 3px;
-
- .dark-theme &:not([class]) {
- background: transparent;
- box-shadow: 1px 1px 0 $dark-font-secondary-color, 2px 2px 0 $dark-font-secondary-color;
- }
- }
-
- ul {
- padding-left: 2em;
- }
-
- table {
- max-width: 100%;
- margin: 10px 0;
- border-spacing: 0;
- box-shadow: 2px 2px 3px rgba(0, 0, 0, 0.125);
-
- th,
- td {
- padding: 5px 15px;
- border: 1px double #ebe9f5;
- }
- }
-
- figure {
- text-align: center;
- img:hover{
- cursor: zoom-in;
- }
- }
-
- .image-caption:not(:empty) {
- min-width: 20%;
- max-width: 80%;
- display: inline-block;
- padding: 10px;
- margin: 0 auto;
- border-bottom: 1px solid #d9d9d9;
- font-size: 14px;
- color: #969696;
- line-height: 1.7;
- }
-
- img {
- display: block;
- max-width: 80%;
- height: auto;
- margin: 0 auto;
- overflow: hidden;
- }
-
-
-
- img[data-action="zoom"] {
- cursor: zoom-in;
- }
-
- .featured_image {
- width: 100% !important;
- max-width: 100% !important;
- height: auto !important;
- margin: 0 !important;
- }
- }
-
- p {
- font-size: 1em;
- margin: .5em 0 .5em 0;
- }
-
- .post-copyright {
- margin-top: 5rem;
- border-top: 1px solid $light-border-color;
- border-bottom: 1px solid $light-border-color;
-
- .copyright-item {
- margin: 5px 0;
- }
-
- .dark-theme & {
- border-top: 1px solid $dark-border-color;
- border-bottom: 1px solid $dark-border-color;
- }
- }
-
- .post-tags {
- padding: 1rem 0 1rem;
- display: flex;
- justify-content: space-between;
-
- }
-
-
- .post-nav {
-
- &:before,
- &:after {
- content: " ";
- display: table;
- }
-
- & a.prev,
- & a.next {
- font-weight: 600;
- font-size: 16px;
-
- transition-property: transform;
- transition-timing-function: ease-out;
- transition-duration: 0.3s;
- }
-
- & a.prev {
- float: left;
- }
-
- & a.prev:hover {
- transform: translateX(-4px);
- }
-
- & a.next {
- float: right;
- }
- & a.next:hover {
- transform: translateX(4px);
- }
- }
-
- .tag:not(:last-child) a::after {
- content: " / ";
- }
-
- .post-comment{
- padding: 3em 0;
- }
-}
diff --git a/assets/css/_common/_page/tags.scss b/assets/css/_common/_page/tags.scss
deleted file mode 100644
index df112001..00000000
--- a/assets/css/_common/_page/tags.scss
+++ /dev/null
@@ -1,32 +0,0 @@
-.tag-cloud-tags {
- margin: 10px 0;
-
- a {
- display: inline-block;
- position: relative;
- margin: 5px 10px;
- word-wrap: break-word;
- transition-duration: .3s;
- transition-property: transform;
- transition-timing-function: ease-out;
-
- &:active,
- &:focus,
- &:hover {
- color: $light-global-link-hover-color;
- transform: scale(1.1);
-
- .dark-theme &{
- color: $dark-global-link-hover-color;
- }
- }
-
- small {
- color: $light-font-secondary-color;
-
- .dark-theme &{
- color: $dark-global-link-hover-color;
- }
- }
- }
-}
\ No newline at end of file
diff --git a/assets/css/_common/_page/terms.scss b/assets/css/_common/_page/terms.scss
deleted file mode 100644
index 8f0620cb..00000000
--- a/assets/css/_common/_page/terms.scss
+++ /dev/null
@@ -1,82 +0,0 @@
-.post-warp {
-
- .archive-item {
- margin-left: 2rem;
- }
-
- .categories-card {
- margin: 0 auto;
- margin-top: 3em;
- display: flex;
- align-items: center;
- justify-content: space-between;
- flex-direction: row;
- flex-wrap: wrap;
- padding: 0 2.5em;
- line-height: 1.6em;
-
- .card-item {
- font-size: 14px;
- text-align: left;
- width: 45%;
- display: flex;
- align-items: flex-start;
- margin-top:2em;
- min-height: 16em;
- padding: 0 2%;
- position: relative;
-
- .categories{
- overflow: hidden;
- }
- }
- }
-
- .archive-item-link {
- display: inline-block;
- text-decoration: none;
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
- max-width: 95%;
- &:hover {
- color: $light-global-link-hover-color;
- background-color: transparent;
- }
-
- .dark-theme & {
- color: $dark-global-link-color;
- text-decoration: none;
- transition: color 0.2s ease, border-color 0.2s ease, background 0.2s ease, opacity 0.2s ease;
-
- &:hover {
- color: $dark-global-link-hover-color;
- text-decoration: none;
- transition: color 0.2s ease, border-color 0.2s ease, background 0.2s ease, opacity 0.2s ease;
- }
- }
- }
- .archive-item-date {
- float: right;
- text-align: right;
- color: $light-font-secondary-color;
-
- .dark-theme & {
- color: $dark-font-secondary-color;
- }
- }
-
- .more-post {
- text-align: right;
- }
-}
-
-.categories {
- h3 {
- display: inline-block;
- }
- span {
- float: right;
- padding-right: 1em;
- }
-}
\ No newline at end of file
diff --git a/assets/css/_common/_prettyprint/default.scss b/assets/css/_common/_prettyprint/default.scss
deleted file mode 100644
index 29cf41a0..00000000
--- a/assets/css/_common/_prettyprint/default.scss
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Derived from einaros's Sons of Obsidian theme at
- * http://studiostyl.es/schemes/son-of-obsidian by
- * Alex Ford of CodeTunnel:
- * http://CodeTunnel.com/blog/post/71/google-code-prettify-obsidian-theme
- */
-
- .str
- {
- color: #EC7600;
- }
- .kwd
- {
- color: #93C763;
- }
- .com
- {
- color: #66747B;
- }
- .typ
- {
- color: #678CB1;
- }
- .lit
- {
- color: #FACD22;
- }
- .pun
- {
- color: #F1F2F3;
- }
- .pln
- {
- color: #F1F2F3;
- }
- .tag
- {
- color: #8AC763;
- }
- .atn
- {
- color: #E0E2E4;
- }
- .atv
- {
- color: #EC7600;
- }
- .dec
- {
- color: purple;
- }
- pre.prettyprint
- {
- border: 0px solid #888;
- }
- ol.linenums
- {
- margin-top: 0;
- margin-bottom: 0;
- }
- .prettyprint {
- background: #000;
- }
- li.L0, li.L1, li.L2, li.L3, li.L4, li.L5, li.L6, li.L7, li.L8, li.L9
- {
- color: #555;
- list-style-type: decimal;
- }
- li.L1, li.L3, li.L5, li.L7, li.L9 {
- background: #111;
- }
- @media print
- {
- .str
- {
- color: #060;
- }
- .kwd
- {
- color: #006;
- font-weight: bold;
- }
- .com
- {
- color: #600;
- font-style: italic;
- }
- .typ
- {
- color: #404;
- font-weight: bold;
- }
- .lit
- {
- color: #044;
- }
- .pun
- {
- color: #440;
- }
- .pln
- {
- color: #000;
- }
- .tag
- {
- color: #006;
- font-weight: bold;
- }
- .atn
- {
- color: #404;
- }
- .atv
- {
- color: #060;
- }
- }
diff --git a/assets/css/_common/_section/footer.scss b/assets/css/_common/_section/footer.scss
deleted file mode 100644
index 16b5e837..00000000
--- a/assets/css/_common/_section/footer.scss
+++ /dev/null
@@ -1,49 +0,0 @@
- /**Footer**/
-
- .copyright {
- font-size: 14px;
- }
-
- #dynamic-to-top {
- display: none;
- overflow: hidden;
- width: auto;
- z-index: 90;
- position: fixed;
- bottom: 2em;
- right: 2em;
- top: auto;
- left: auto;
- font-family: sans-serif;
- font-size: 1em;
- color: #fff;
- text-decoration: none;
- text-shadow: 0 1px 0 #333;
- font-weight: bold;
- padding: 17px 16px;
- border: 1px solid $light-border-color;
- background: #222;
- &:hover {
- background: #000;
- cursor: pointer;
- }
- &:active {
- background: #000;
- outline: none;
- }
- outline: none;
- &:focus, &:hover {
- outline: none;
- }
- span {
- display: block;
- overflow: hidden;
- width: 14px;
- height: 12px;
- background: url('data:image/png;base64,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') no-repeat center center;
- }
-
- .dark-theme &{
- border: 1px solid $dark-border-color;
- }
- }
\ No newline at end of file
diff --git a/assets/css/_common/_section/navbar.scss b/assets/css/_common/_section/navbar.scss
deleted file mode 100644
index 0e33d8de..00000000
--- a/assets/css/_common/_section/navbar.scss
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-
- .header-logo a{
- padding: 0 ;
-
- i{
- line-height: 2em;
- }
- }
-
-
- .navbar .menu a {
-
- padding: 0 8px;
- }
-
- .navbar .menu .active{
- font-weight: 900;
- color: $light-navbar-active-color;
-
- .dark-theme &{
- color: $dark-navbar-active-color;
- }
- }
-
- .navbar-header a:hover, .navbar .menu a:hover {
-
- background-color: transparent;
- }
diff --git a/assets/css/_common/_section/pagination.scss b/assets/css/_common/_section/pagination.scss
deleted file mode 100644
index 2b386ed1..00000000
--- a/assets/css/_common/_section/pagination.scss
+++ /dev/null
@@ -1,83 +0,0 @@
- /** pagination **/
-
- .pagination {
- display: flex;
- flex-direction: row;
- justify-content: center;
- list-style: none;
- white-space: nowrap;
- width: 100%;
- padding-top: 2em;
- a {
- -webkit-font-smoothing: antialiased;
- font-size: 12px;
- color: #bfbfbf;
- letter-spacing: 0.1em;
- font-weight: 700;
- padding: 5px 5px;
- text-decoration: none;
- transition: 0.3s;
- }
- li {
- padding-bottom: 3px;
- margin: 0 20px;
- box-sizing: border-box;
- position: relative;
- display: inline;
- &.disabled {
- display: none;
- }
- &:hover a {
- color: $light-pagination-link-active-color;
- }
-
- .dark-theme &:hover a {
- color: $dark-pagination-link-active-color;
- }
-
- &:before,
- &:after {
- position: absolute;
- content: "";
- width: 0;
- height: 3px;
- background: $light-pagination-link-active-color;
- transition: 0.3s;
- bottom: 0px;
- }
- .dark-theme &:before,
- .dark-theme &:after{
- background: $dark-pagination-link-active-color;
- }
-
- &:before .active,
- &:after .active {
- width: 100%;
- }
- &:before {
- left: 50%;
- }
- &:after {
- right: 50%;
- }
- &:hover {
- &:before,
- &:after {
- width: 50%;
- }
- }
- &.active {
- a {
- color: $light-pagination-link-active-color;
- }
-
- .dark-theme & a {
- color: $dark-pagination-link-active-color;
- }
- &:before,
- &:after {
- width: 60%;
- }
- }
- }
- }
\ No newline at end of file
diff --git a/assets/css/_core/_base.scss b/assets/css/_core/_base.scss
new file mode 100644
index 00000000..4be316d8
--- /dev/null
+++ b/assets/css/_core/_base.scss
@@ -0,0 +1,61 @@
+html {
+ font-family: $global-font-family;
+ font-weight: $global-font-weight;
+ font-display: swap;
+ font-size: $global-font-size;
+ line-height: $global-line-height;
+ width:100%;
+
+ scroll-behavior: smooth;
+
+ main [id] {
+ scroll-margin-top: $header-height + .5rem;
+ }
+}
+
+/* scrollbar, only support webkit */
+::-webkit-scrollbar {
+ width: .5rem;
+ height: .5rem;
+}
+
+::-webkit-scrollbar-thumb {
+ background-color: $scrollbar-color;
+
+ &:hover {
+ background-color: $scrollbar-hover-color;
+ }
+}
+
+::selection {
+ background-color: $selection-color;
+
+ [theme=dark] & {
+ background-color: $selection-color-dark;
+ }
+}
+
+body {
+ background-color: $global-background-color;
+ color: $global-font-color;
+ @include overflow-wrap(break-word);
+ scrollbar-color: auto;
+
+ &[theme=dark] {
+ color: $global-font-color-dark;
+ background-color: $global-background-color-dark;
+ }
+}
+
+@include ms;
+@include link(true, true);
+
+@import "../_partial/mask";
+@import "../_partial/icon";
+@import "../_partial/details";
+@import "../_partial/fixed-button";
+@import "../_partial/cookieconsent";
+
+img {
+ @include object-fit(contain);
+}
diff --git a/assets/css/_core/_layout.scss b/assets/css/_core/_layout.scss
new file mode 100644
index 00000000..154f3a6b
--- /dev/null
+++ b/assets/css/_core/_layout.scss
@@ -0,0 +1,15 @@
+/** Layout **/
+.wrapper {
+ display: flex;
+ flex-direction: column;
+ min-height: 100vh;
+ width: 100%;
+
+ main {
+ flex: 1 0 auto;
+
+ .container {
+ padding: 0 1rem;
+ }
+ }
+}
diff --git a/assets/css/_core/_media.scss b/assets/css/_core/_media.scss
new file mode 100644
index 00000000..f4c7f51f
--- /dev/null
+++ b/assets/css/_core/_media.scss
@@ -0,0 +1,80 @@
+@media only screen and (max-width: 1440px) {
+ .page {
+ width: 56%;
+ }
+}
+
+@media only screen and (max-width: 1200px) {
+ .page {
+ width: 52%;
+ }
+
+ #header-desktop .header-wrapper {
+ padding-right: 1rem;
+ }
+
+ .search-dropdown.desktop {
+ right: 1rem;
+ }
+}
+
+@media only screen and (max-width: 960px) {
+ #toc-auto {
+ display: none;
+ }
+
+ #toc-static {
+ display: block;
+ }
+
+ .page {
+ width: 80%;
+ }
+
+ #header-desktop .header-wrapper {
+ padding-left: 1rem;
+ }
+}
+
+@media only screen and (max-width: 680px) {
+ #header-desktop {
+ display: none;
+ }
+
+ #header-mobile {
+ display: block;
+ }
+
+ body.blur {
+ overflow: hidden;
+ }
+
+ .page {
+ width: 100%;
+
+ [data-header-mobile] & {
+ padding-top: $header-height;
+ }
+
+ [data-header-mobile=normal] & {
+ padding-top: 0;
+ }
+
+ .categories-card {
+ .card-item {
+ width: 100%;
+ }
+ }
+ }
+
+ .copyright {
+ .copyright-line {
+ .icp-splitter {
+ display: none;
+ }
+ .icp-br {
+ display: block;
+ }
+ }
+ }
+}
diff --git a/assets/css/_custom.scss b/assets/css/_custom.scss
index b5a52410..37edf904 100644
--- a/assets/css/_custom.scss
+++ b/assets/css/_custom.scss
@@ -1,4 +1,4 @@
// ==============================
// Custom style
+// 自定义样式
// ==============================
-// You can override the variables in _variables.scss to customize the style
\ No newline at end of file
diff --git a/assets/css/_mixin/_blur.scss b/assets/css/_mixin/_blur.scss
new file mode 100644
index 00000000..d68ac171
--- /dev/null
+++ b/assets/css/_mixin/_blur.scss
@@ -0,0 +1,5 @@
+@mixin blur {
+ .blur & {
+ @include filter(blur(1.5px));
+ }
+}
diff --git a/assets/css/_mixin/_compatibility.scss b/assets/css/_mixin/_compatibility.scss
new file mode 100644
index 00000000..b4cb2d0f
--- /dev/null
+++ b/assets/css/_mixin/_compatibility.scss
@@ -0,0 +1,110 @@
+@mixin border-radius($value) {
+ -webkit-border-radius: $value;
+ -moz-border-radius: $value;
+ border-radius: $value;
+}
+
+@mixin box-shadow($values...) {
+ -webkit-box-shadow: $values;
+ box-shadow: $values;
+}
+
+@mixin transition($values...) {
+ -webkit-transition: $values;
+ -moz-transition: $values;
+ -o-transition: $values;
+ transition: $values;
+}
+
+@mixin transform($value) {
+ -webkit-transform: $value;
+ -moz-transform: $value;
+ -ms-transform: $value;
+ -o-transform: $value;
+ transform: $value;
+}
+
+@mixin filter($value) {
+ -webkit-filter: $value;
+ -moz-filter: $value;
+ -ms-filter: $value;
+ filter: $value;
+}
+
+@mixin flex($value) {
+ -webkit-flex: $value;
+ flex: $value;
+}
+
+@mixin box($orient) {
+ display: -moz-box;
+ display: -webkit-box;
+ display: box;
+
+ -webkit-box-orient: $orient;
+ -moz-box-orient: $orient;
+ // box-orient: $orient;
+}
+
+@mixin placeholder($color) {
+ input::-webkit-input-placeholder{
+ color: $color;
+ }
+
+ input:-moz-placeholder{
+ color: $color;
+ }
+
+ input::-moz-placeholder{
+ color: $color;
+ }
+
+ input:-ms-input-placeholder{
+ color: $color;
+ }
+
+ input::placeholder {
+ color: $color;
+ }
+}
+
+@mixin max-content($property) {
+ #{$property}: -webkit-max-content;
+ #{$property}: -moz-max-content;
+ #{$property}: intrinsic;
+ #{$property}: max-content;
+}
+
+@mixin tab-size($value) {
+ -moz-tab-size: $value;
+ -o-tab-size: $value;
+ tab-size: $value;
+}
+
+@mixin appearance($value) {
+ -moz-appearance: $value;
+ -webkit-appearance: $value;
+}
+
+@mixin overflow-wrap($value) {
+ word-wrap: $value;
+ overflow-wrap: $value;
+}
+
+@mixin line-break($value) {
+ -webkit-line-break: $value;
+ -ms-line-break: $value;
+ line-break: $value;
+}
+
+@mixin ms {
+ input::-ms-clear {
+ display: none;
+ }
+}
+
+@mixin object-fit($value) {
+ -o-object-fit: $value;
+ object-fit: $value;
+ font-family: 'object-fit: #{$value};';
+}
diff --git a/assets/css/_mixin/_details.scss b/assets/css/_mixin/_details.scss
new file mode 100644
index 00000000..218e6af3
--- /dev/null
+++ b/assets/css/_mixin/_details.scss
@@ -0,0 +1,7 @@
+@mixin details-transition-open {
+ @include transition(max-height 0.8s cubic-bezier(0, 1, 0, 1) -0.1s);
+}
+
+@mixin details-transition-close {
+ @include transition(max-height 0.8s cubic-bezier(0.5, 0, 1, 0) 0s);
+}
diff --git a/assets/css/_mixin/_index.scss b/assets/css/_mixin/_index.scss
new file mode 100644
index 00000000..3c355218
--- /dev/null
+++ b/assets/css/_mixin/_index.scss
@@ -0,0 +1,4 @@
+@import "_compatibility";
+@import "_link";
+@import "_blur";
+@import "_details";
diff --git a/assets/css/_mixin/_link.scss b/assets/css/_mixin/_link.scss
new file mode 100644
index 00000000..351d8d5e
--- /dev/null
+++ b/assets/css/_mixin/_link.scss
@@ -0,0 +1,20 @@
+@mixin link($light, $dark) {
+ a, a::before, a::after {
+ text-decoration: none;
+
+ color: if($light, $global-link-color, $single-link-color);
+
+ [theme=dark] & {
+ color: if($dark, $global-link-color-dark, $single-link-color-dark);
+ }
+ }
+
+ a:active,
+ a:hover {
+ color: if($light, $global-link-hover-color, $single-link-hover-color);
+
+ [theme=dark] & {
+ color: if($dark, $global-link-hover-color-dark, $single-link-hover-color-dark);
+ }
+ }
+}
diff --git a/assets/css/_override.scss b/assets/css/_override.scss
new file mode 100644
index 00000000..c37b4ec3
--- /dev/null
+++ b/assets/css/_override.scss
@@ -0,0 +1,4 @@
+// ==============================
+// Override Variables
+// 覆盖变量
+// ==============================
diff --git a/assets/css/_page/_404.scss b/assets/css/_page/_404.scss
new file mode 100644
index 00000000..774c7dd2
--- /dev/null
+++ b/assets/css/_page/_404.scss
@@ -0,0 +1,6 @@
+#content-404 {
+ font-size: 1.8rem;
+ line-height: 3rem;
+ @include transform(translateY(30vh));
+ text-align: center;
+}
diff --git a/assets/css/_page/_archive.scss b/assets/css/_page/_archive.scss
new file mode 100644
index 00000000..2b8f466a
--- /dev/null
+++ b/assets/css/_page/_archive.scss
@@ -0,0 +1,13 @@
+.archive {
+ .single-title {
+ text-align: right;
+ }
+
+ .group-title {
+ margin-top: 1.5rem;
+ margin-bottom: 1rem;
+ }
+
+ @import "../_partial/_archive/terms";
+ @import "../_partial/_archive/tags";
+}
diff --git a/assets/css/_page/_home.scss b/assets/css/_page/_home.scss
new file mode 100644
index 00000000..4ca6eb81
--- /dev/null
+++ b/assets/css/_page/_home.scss
@@ -0,0 +1,182 @@
+.home {
+ .home-profile {
+ @include transform(translateY( 16vh));
+ padding: 0 0 .5rem;
+ text-align: center;
+
+ .home-avatar {
+ padding: .5rem;
+
+ img {
+ display: inline-block;
+ width: 8rem;
+ height: auto;
+ margin: 0 auto;
+ @include border-radius(100%);
+ @include box-shadow(0 0 0 .3618em rgba(0, 0, 0, .05));
+ @include transition(all 0.4s ease);
+
+ &:hover {
+ position: relative;
+ @include transform(translateY(-.75rem));
+ }
+ }
+ }
+
+ .home-title {
+ font-size: 1.25rem;
+ font-weight: bold;
+ margin: 0;
+ padding: .5rem;
+ }
+
+ .home-subtitle {
+ font-size: 1rem;
+ font-weight: normal;
+ margin: 0;
+ padding: .5rem;
+ }
+
+ .links {
+ padding: .5rem;
+ font-size: 1.5rem;
+
+ a * {
+ vertical-align: text-bottom;
+ }
+
+ img {
+ height: 1.5rem;
+ padding: 0 .25rem;
+ }
+ }
+
+ .home-disclaimer {
+ font-size: 1rem;
+ line-height: 1.5rem;
+ font-weight: normal;
+ margin: 0;
+ padding: .5rem;
+ color: $global-font-secondary-color;
+
+ [theme=dark] & {
+ color: $global-font-secondary-color-dark;
+ }
+ }
+ }
+}
+
+.home[data-home=posts] {
+ .home-profile {
+ @include transform(translateY(0));
+ padding-top: 2rem;
+ }
+
+ .home-avatar img {
+ width: 6rem;
+ }
+
+ .summary {
+ padding-top: 1rem;
+ padding-bottom: .8rem;
+ color: $global-font-color;
+ border-bottom: 1px dashed $global-border-color;
+
+ [theme=dark] & {
+ color: $global-font-color-dark;
+ border-bottom: 1px dashed $global-border-color-dark;
+ }
+
+ .featured-image-preview {
+ width: 100%;
+ padding: 30% 0 0;
+ position: relative;
+ margin: 0.6rem auto;
+ @include transition(transform 0.4s ease);
+
+ img {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ left: 0;
+ top: 0;
+ @include object-fit(none);
+ }
+
+ img.lazyloaded {
+ @include object-fit(cover);
+ }
+
+ &:hover {
+ @include transform(scale(1.01));
+ }
+ }
+
+ .single-title {
+ font-size: 1.25rem;
+ line-height: 140%;
+ margin: 0.4rem 0;
+ }
+
+ .content {
+ @include box(vertical);
+ -webkit-line-clamp: 3;
+ margin-top: .3rem;
+ width: 100%;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ @include overflow-wrap(break-word);
+ color: $global-font-secondary-color;
+
+ [theme=dark] & {
+ color: $global-font-secondary-color-dark;
+ }
+
+ h2,
+ h3,
+ h4,
+ h5,
+ h6,
+ p {
+ font-size: 1rem;
+ line-height: 1.5;
+ display: inline;
+
+ &::after {
+ content: "\A";
+ white-space: pre;
+ }
+ }
+
+ h2 {
+ font-size: 1.125rem;
+ }
+
+ @include link(false, true);
+
+ b, strong {
+ color: $global-font-secondary-color;
+
+ [theme=dark] & {
+ color: $global-font-secondary-color-dark;
+ }
+ }
+ }
+
+ .post-footer {
+ margin-top: .4rem;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ font-size: .875rem;
+
+ @include link(false, false);
+
+ .post-tags {
+ padding: 0;
+
+ @include link(true, true);
+ }
+ }
+ }
+}
diff --git a/assets/css/_page/_index.scss b/assets/css/_page/_index.scss
new file mode 100644
index 00000000..b715e95b
--- /dev/null
+++ b/assets/css/_page/_index.scss
@@ -0,0 +1,22 @@
+.page {
+ position: relative;
+ max-width: 800px;
+ width: 60%;
+ margin: 0 auto;
+
+ [data-header-desktop] & {
+ padding-top: $header-height;
+ }
+
+ [data-header-desktop=normal] & {
+ padding-top: 0;
+ }
+
+ @include blur;
+}
+
+@import "_single";
+@import "_special";
+@import "_archive";
+@import "_home";
+@import "_404";
diff --git a/assets/css/_page/_single.scss b/assets/css/_page/_single.scss
new file mode 100644
index 00000000..17f53654
--- /dev/null
+++ b/assets/css/_page/_single.scss
@@ -0,0 +1,347 @@
+@import "../_partial/_single/toc";
+
+.single {
+ .single-title {
+ margin: 2rem 0 .5rem;
+ font-size: 1.6rem;
+ font-weight: bold;
+ line-height: 140%;
+ }
+
+ .single-subtitle {
+ margin: .5rem 0;
+ font-size: 1.2rem;
+ font-weight: normal;
+ line-height: 100%;
+ }
+
+ .post-meta {
+ font-size: .875rem;
+ color: $global-font-secondary-color;
+
+ span {
+ display: inline-block;
+ }
+
+ [theme=dark] & {
+ color: $global-font-secondary-color-dark;
+ }
+
+ @include link(false, true);
+
+ .author {
+ font-size: 1.05rem;
+ }
+ }
+
+ .featured-image {
+ margin: .5rem 0 1rem 0;
+
+ img {
+ display: block;
+ max-width: 100%;
+ height: auto;
+ margin: 0 auto;
+ overflow: hidden;
+ }
+
+ img.lazyloaded {
+ width: 100%;
+ }
+ }
+
+ .content {
+ > h2 {
+ font-size: 1.5rem;
+
+ & code {
+ font-size: 1.25rem;
+ }
+ }
+
+ > h3 {
+ font-size: 1.375rem;
+
+ & code {
+ font-size: 1.125rem;
+ }
+ }
+
+ > h4 {
+ font-size: 1.25rem;
+
+ & code {
+ font-size: 1rem;
+ }
+ }
+
+ > h5 {
+ font-size: 1.125rem;
+ }
+
+ > h6 {
+ font-size: 1rem;
+ }
+
+ h2,
+ h3,
+ h4,
+ h5,
+ h6 {
+ font-weight: bold;
+ margin: 1.2rem 0;
+
+ [theme=dark] & {
+ font-weight: bolder;
+ }
+ }
+
+ > h2,
+ > h3,
+ > h4,
+ > h5,
+ > h6 {
+ > .header-mark::before {
+ content: "|";
+ margin-right: .3125rem;
+ color: $single-link-color;
+
+ [theme=dark] & {
+ color: $single-link-color-dark;
+ }
+ }
+ }
+
+ > h2 > .header-mark::before {
+ content: "#";
+ }
+
+ p {
+ margin: .5rem 0;
+ }
+
+ b, strong {
+ font-weight: bold;
+
+ [theme=dark] & {
+ color: #ddd;
+ }
+ }
+
+ @include link(false, false);
+
+ a {
+ @include overflow-wrap(break-word);
+
+ [theme=dark] & b, [theme=dark] & strong {
+ color: $single-link-color-dark;
+ }
+ }
+
+ [theme=dark] a:hover b, [theme=dark] a:hover strong {
+ color: $single-link-hover-color-dark;
+ }
+
+ ul, ol {
+ margin: .5rem 0;
+ padding-left: 2.5rem;
+ }
+
+ ul {
+ list-style-type: disc;
+ }
+
+ ruby {
+ background: $code-background-color;
+
+ rt {
+ color: $global-font-secondary-color;
+ }
+
+ [theme=dark] & {
+ background: $code-background-color-dark;
+
+ rt {
+ color: $global-font-secondary-color-dark;
+ }
+ }
+ }
+
+ .table-wrapper {
+ overflow-x: auto;
+
+ &::-webkit-scrollbar {
+ background-color: $table-background-color;
+
+ [theme=dark] & {
+ background-color: $table-background-color-dark;
+ }
+ }
+
+ > table {
+ width: 100%;
+ max-width: 100%;
+ margin: .625rem 0;
+ border-spacing: 0;
+ background: $table-background-color;
+ border-collapse: collapse;
+
+ [theme=dark] & {
+ background: $table-background-color-dark;
+ }
+
+ thead {
+ background: $table-thead-color;
+
+ [theme=dark] & {
+ background-color: $table-thead-color-dark;
+ }
+ }
+
+ th, td {
+ padding: .3rem 1rem;
+ border: 1px solid darken($table-thead-color, 2%);
+
+ [theme=dark] & {
+ border-color: darken($table-thead-color-dark, 2%);
+ }
+ }
+ }
+ }
+
+ img {
+ max-width: 100%;
+ min-height: 1em;
+ }
+
+ figure {
+ margin: .5rem;
+ text-align: center;
+
+ .image-caption:not(:empty) {
+ min-width: 20%;
+ max-width: 80%;
+ display: inline-block;
+ padding: .5rem;
+ margin: 0 auto;
+ font-size: .875rem;
+ color: #969696;
+ }
+
+ img {
+ display: block;
+ width: 100%;
+ height: auto;
+ margin: 0 auto;
+ overflow: hidden;
+ }
+ }
+
+ .lazyload, .lazyloading {
+ @include object-fit(scale-down);
+ }
+
+ .lazyloaded {
+ @include object-fit(fill);
+ }
+
+ blockquote {
+ display: block;
+ border-left: .5rem solid $blockquote-color;
+ background-color: rgba($blockquote-color, .2);
+ padding: .25rem .75rem;
+ margin: 1rem 0;
+
+ [theme=dark] & {
+ border-left-color: $blockquote-color-dark;
+ background-color: rgba($blockquote-color-dark, .2);
+ }
+ }
+
+ .footnotes {
+ color: $global-font-secondary-color;
+
+ [theme=dark] & {
+ color: $global-font-secondary-color-dark;
+ }
+
+ p {
+ margin: .25rem 0;
+ }
+ }
+
+ @import "../_partial/_single/code";
+ @import "../_partial/_single/instagram";
+ @import "../_partial/_single/admonition";
+ @import "../_partial/_single/echarts";
+ @import "../_partial/_single/mapbox";
+ @import "../_partial/_single/music";
+ @import "../_partial/_single/bilibili";
+
+ hr {
+ margin: 1rem 0;
+ position: relative;
+ border-top: 1px dashed $global-border-color;
+ border-bottom: none;
+
+ [theme=dark] & {
+ border-top: 1px dashed $global-border-color-dark;
+ }
+ }
+
+ kbd {
+ display: inline-block;
+ padding: .25rem;
+ background-color: $global-background-color;
+ border: 1px solid $global-border-color;
+ border-bottom-color: $global-border-color;
+ @include border-radius(3px);
+ @include box-shadow(inset 0 -1px 0 $global-border-color);
+ font-size: .8rem;
+ font-family: $code-font-family;
+ color: $code-color;
+
+ [theme=dark] & {
+ background-color: $global-background-color-dark;
+ border: 1px solid $global-border-color-dark;
+ border-bottom-color: $global-border-color-dark;
+ @include box-shadow(inset 0 -1px 0 $global-border-color-dark);
+ color: $code-color-dark;
+ }
+ }
+
+ .version {
+ height: 1.25em;
+ vertical-align: text-bottom;
+ }
+ }
+
+ @import "../_partial/_single/footer";
+ @import "../_partial/_single/comment";
+}
+
+.typeit {
+ .highlight {
+ padding: .375rem;
+ font-size: .875rem;
+ font-family: $code-font-family;
+ font-weight: bold;
+ word-break: break-all;
+ white-space: pre-wrap;
+ }
+
+ --ti-cursor-font-family: $global-font-family;
+ --ti-cursor-font-size: $global-font-size;
+ --ti-cursor-font-weight: $global-font-weight;
+ --ti-cursor-line-height: $global-line-height;
+ --ti-cursor-color: $global-font-secondary-color;
+ --ti-cursor-margin-left: 0;
+
+ [theme=dark] & {
+ --ti-cursor-color: $global-font-secondary-color-dark;
+ }
+}
+
+.lg-toolbar .lg-icon::after {
+ color: #999;
+}
diff --git a/assets/css/_page/_special.scss b/assets/css/_page/_special.scss
new file mode 100644
index 00000000..436d8d95
--- /dev/null
+++ b/assets/css/_page/_special.scss
@@ -0,0 +1,5 @@
+.special {
+ .single-title, .single-subtitle {
+ text-align: right;
+ }
+}
diff --git a/assets/css/_partial/_archive/_tags.scss b/assets/css/_partial/_archive/_tags.scss
new file mode 100644
index 00000000..d12b26f3
--- /dev/null
+++ b/assets/css/_partial/_archive/_tags.scss
@@ -0,0 +1,27 @@
+.tag-cloud-tags {
+ margin: 10px 0;
+
+ @include link(true, true);
+
+ a {
+ display: inline-block;
+ position: relative;
+ margin: 5px 10px;
+ @include overflow-wrap(break-word);
+ @include transition(all ease-out 0.3s);
+
+ &:active,
+ &:focus,
+ &:hover {
+ @include transform(scale(1.2));
+ }
+
+ sup {
+ color: $global-font-secondary-color;
+
+ [theme=dark] & {
+ color: $global-font-secondary-color-dark;
+ }
+ }
+ }
+}
diff --git a/assets/css/_partial/_archive/_terms.scss b/assets/css/_partial/_archive/_terms.scss
new file mode 100644
index 00000000..25889f88
--- /dev/null
+++ b/assets/css/_partial/_archive/_terms.scss
@@ -0,0 +1,82 @@
+.categories-card {
+ margin: 0 auto;
+ margin-top: 3rem;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ flex-direction: row;
+ flex-wrap: wrap;
+ line-height: 1.6rem;
+
+ .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;
+
+ .card-item-wrapper {
+ width: 100%;
+ overflow: hidden;
+
+ .card-item-title {
+ font-size: 1.2rem;
+ font-weight: bold;
+ display: inline-block;
+ margin-top: 1rem;
+ margin-bottom: .75rem;
+ }
+
+ span {
+ float: right;
+ padding-right: 1rem;
+ }
+ }
+ }
+}
+
+.archive-item {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ box-sizing: border-box;
+ margin: .25rem 0 .25rem 1.5rem;
+}
+
+.archive-item-link {
+ min-width: 10%;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+
+ &:hover {
+ color: $global-link-hover-color;
+ background-color: transparent;
+ }
+
+ [theme=dark] & {
+ color: $global-link-color-dark;
+
+ &:hover {
+ color: $global-link-hover-color-dark;
+ }
+ }
+}
+
+.archive-item-date {
+ width: 5em;
+ text-align: right;
+ color: $global-font-secondary-color;
+
+ [theme=dark] & {
+ color: $global-font-secondary-color-dark;
+ }
+}
+
+.more-post {
+ text-align: right;
+}
diff --git a/assets/css/_partial/_cookieconsent.scss b/assets/css/_partial/_cookieconsent.scss
new file mode 100644
index 00000000..01deb5a3
--- /dev/null
+++ b/assets/css/_partial/_cookieconsent.scss
@@ -0,0 +1,17 @@
+.cc-window.cc-banner {
+ .cc-btn {
+ color: $global-font-color;
+
+ &:hover, &:focus {
+ background-color: #ccc;
+ }
+
+ [theme=dark] & {
+ color: $global-font-color;
+
+ &:hover, &:focus {
+ background-color: #fff;
+ }
+ }
+ }
+}
diff --git a/assets/css/_partial/_details.scss b/assets/css/_partial/_details.scss
new file mode 100644
index 00000000..f1702d0d
--- /dev/null
+++ b/assets/css/_partial/_details.scss
@@ -0,0 +1,33 @@
+.details {
+ .details-summary {
+ &:hover {
+ cursor: pointer;
+ }
+ }
+
+ i.details-icon {
+ color: $global-font-secondary-color;
+ @include transition(transform 0.2s ease);
+
+ [theme=dark] & {
+ color: $global-font-secondary-color-dark;
+ }
+ }
+
+ .details-content {
+ max-height: 0;
+ overflow-y: hidden;
+ @include details-transition-open;
+ }
+
+ &.open {
+ i.details-icon {
+ @include transform(rotate(90deg));
+ }
+
+ .details-content {
+ max-height: $MAX_LENGTH;
+ @include details-transition-close;
+ }
+ }
+}
diff --git a/assets/css/_partial/_fixed-button.scss b/assets/css/_partial/_fixed-button.scss
new file mode 100644
index 00000000..eaad26ee
--- /dev/null
+++ b/assets/css/_partial/_fixed-button.scss
@@ -0,0 +1,46 @@
+#fixed-buttons {
+ display: none;
+}
+
+.fixed-button {
+ display: none;
+ z-index: 100;
+ position: fixed;
+ right: 1.5rem;
+ font-size: 1rem;
+ line-height: 1.3rem;
+ padding: .6rem .6rem;
+ color: $global-font-secondary-color;
+ background: $header-background-color;
+ @include border-radius(2rem);
+ @include transition(color 0.4s ease);
+
+ @include blur;
+
+ &:hover, &:active {
+ color: $global-font-color;
+ cursor: pointer;
+ }
+
+ &:active, &:focus, &:hover {
+ outline: none;
+ }
+
+ [theme=dark] & {
+ color: $global-font-secondary-color-dark;
+ background: $header-background-color-dark;
+
+ &:hover, &:active {
+ color: $global-font-color-dark;
+ }
+ }
+}
+
+#back-to-top {
+ display: block;
+ bottom: 1.5rem;
+}
+
+#view-comments {
+ bottom: 4.5rem;
+}
diff --git a/assets/css/_partial/_footer.scss b/assets/css/_partial/_footer.scss
new file mode 100644
index 00000000..21a89e8c
--- /dev/null
+++ b/assets/css/_partial/_footer.scss
@@ -0,0 +1,21 @@
+footer {
+ height: 2rem;
+ width: 100%;
+ text-align: center;
+ line-height: 1.25rem;
+ padding: 1rem 0;
+
+ .footer-container {
+ font-size: .875rem;
+
+ .footer-line {
+ width: 100%;
+
+ .icp-br {
+ display: none;
+ }
+ }
+ }
+
+ @include blur;
+}
diff --git a/assets/css/_partial/_header.scss b/assets/css/_partial/_header.scss
new file mode 100644
index 00000000..c4955cab
--- /dev/null
+++ b/assets/css/_partial/_header.scss
@@ -0,0 +1,468 @@
+header {
+ width: 100%;
+ z-index: 150;
+ background-color: $header-background-color;
+ @include transition(box-shadow 0.3s ease);
+
+ [theme=dark] & {
+ background-color: $header-background-color-dark;
+ }
+
+ .logo {
+ min-height: 1.5em;
+ height: 1.5em;
+ vertical-align: text-bottom;
+ }
+
+ .logo, .header-title-pre {
+ padding-right: .25rem;
+ }
+
+ .header-title-post {
+ padding-left: .25rem;
+ }
+
+ &:hover {
+ @include box-shadow(0 0 1.5rem 0 rgba(0, 0, 0, .1));
+ }
+}
+
+.header-wrapper {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ box-sizing: border-box;
+ width: 100%;
+}
+
+.header-title {
+ font-family: $header-title-font-family;
+ font-weight: bold;
+ margin-right: .5rem;
+ min-width: 10%;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ @include flex(10);
+}
+
+.menu .menu-item {
+ position: relative;
+}
+
+.language-select {
+ position: absolute;
+ opacity: 0;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+
+ &:hover {
+ cursor: pointer;
+ }
+}
+
+.search {
+ position: relative;
+
+ input {
+ color: transparent;
+ box-sizing: border-box;
+ height: 2.5rem;
+ width: 2.5rem;
+ @include border-radius(.5rem);
+ border: none;
+ outline: none;
+ background-color: $header-background-color;
+ vertical-align: baseline !important;
+ @include transition(width 0.3s ease);
+
+ [theme=dark] & {
+ background-color: $header-background-color-dark;
+ }
+ }
+
+ @include placeholder(transparent);
+
+ .search-button {
+ margin: 0;
+ position: absolute;
+ left: auto;
+ right: 1rem;
+ }
+
+ .search-toggle {
+ left: .5rem;
+ right: auto;
+ }
+
+ .search-loading {
+ display: none;
+ }
+
+ .search-clear {
+ display: none;
+ }
+
+ .open &, &.mobile {
+ input {
+ color: $global-font-color;
+ background-color: $search-background-color;
+ padding: 0 2rem 0 2rem;
+ }
+
+ [theme=dark] & {
+ input {
+ color: $global-font-color-dark;
+ background-color: $search-background-color-dark;
+ }
+
+ @include placeholder($global-font-secondary-color-dark);
+ }
+
+ @include placeholder($global-font-secondary-color);
+
+ .search-button {
+ color: $global-font-secondary-color;
+
+ [theme=dark] & {
+ color: $global-font-secondary-color-dark;
+ }
+ }
+
+ .search-clear:hover {
+ color: #ff6b6b;
+ }
+
+ .search-toggle:hover {
+ cursor: default;
+ }
+ }
+}
+
+.theme-switch i {
+ @include transform(rotate(225deg));
+}
+
+#header-desktop {
+ display: block;
+ position: fixed;
+ height: $header-height;
+ line-height: $header-height;
+
+ [data-header-desktop=normal] & {
+ position: static;
+ }
+
+ .header-wrapper {
+ padding: 0 2rem 0 10vh;
+
+ .header-title {
+ font-size: $header-title-font-size;
+ }
+
+ .menu {
+ overflow: hidden;
+ white-space: nowrap;
+
+ .menu-inner {
+ float: right;
+ }
+
+ .menu-item {
+ margin: 0 .5rem;
+
+ &.delimiter {
+ border-left: 1.5px solid $global-font-color;
+
+ [theme=dark] & {
+ border-left-color: $global-border-color-dark;
+ }
+ }
+
+ &.language {
+ margin-right: 0;
+ }
+
+ &.search {
+ margin: 0 -.5rem 0 0;
+ }
+ }
+
+ a.active {
+ font-weight: 900;
+ color: $header-hover-color;
+
+ [theme=dark] & {
+ color: $header-hover-color-dark;
+ }
+ }
+ }
+ }
+
+ &.open .header-wrapper .menu .menu-item.search {
+ margin: 0 .25rem 0 .5rem;
+
+ input {
+ width: 24rem;
+ }
+ }
+}
+
+#header-mobile {
+ display: none;
+ position: fixed;
+ height: $header-height;
+ line-height: $header-height;
+
+ [data-header-mobile=normal] & {
+ position: static;
+ }
+
+ .header-container {
+ padding: 0;
+ margin: 0;
+
+ .header-wrapper {
+ padding: 0 1rem;
+ font-size: 1.125rem;
+ @include transition(margin-top 0.3s ease);
+
+ .header-title {
+ font-size: $header-title-font-size;
+ max-width: 80%;
+ }
+
+ .menu-toggle {
+ line-height: 4rem;
+ cursor: pointer;
+ @include transition(width 0.3s ease);
+
+ span {
+ display: block;
+ background: $global-font-color;
+ width: 1.5rem;
+ height: 2px;
+ @include border-radius(3px);
+ @include transition(all 0.3s ease-in-out);
+
+ [theme=dark] & {
+ background: $global-font-color-dark;
+ }
+ }
+
+ span:nth-child(1) {
+ margin-bottom: .5rem;
+ }
+
+ span:nth-child(3) {
+ margin-top: .5rem;
+ }
+
+ &.active {
+ span:nth-child(1) {
+ @include transform(rotate(45deg) translate(.4rem, .5rem));
+ }
+
+ span:nth-child(2) {
+ opacity: 0
+ }
+
+ span:nth-child(3) {
+ @include transform(rotate(-45deg) translate(.4rem, -.5rem));
+ }
+ }
+ }
+ }
+
+ .menu {
+ text-align: center;
+ background: $header-background-color;
+ border-top: 2px solid $global-border-color;
+ display: none;
+ padding-top: .5rem;
+ @include box-shadow(0 .125rem .25rem rgba(0, 0, 0, .1));
+
+ .search-wrapper {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ box-sizing: border-box;
+ padding: ($header-height - 2.5rem) / 2 1rem;
+ line-height: 2.5rem;
+ }
+
+ .search {
+ flex-grow: 10;
+
+ .algolia-autocomplete, input {
+ width: 100%;
+ }
+ }
+
+ .search-button {
+ top: 0;
+ }
+
+ .search-cancel {
+ display: none;
+ margin-left: .75rem;
+ }
+
+ .menu-item {
+ display: block;
+ line-height: 2.5rem;
+ }
+
+ &.active {
+ display: block;
+ }
+
+ [theme=dark] & {
+ background: $header-background-color-dark;
+ border-top-color: $global-border-color-dark;
+ }
+ }
+ }
+
+ &.open {
+ .header-wrapper {
+ margin-top: -$header-height;
+ }
+
+ .menu {
+ padding-top: 0;
+ border-top: none;
+
+ .menu-item {
+ display: none;
+ }
+
+ .search-cancel {
+ display: inline;
+ }
+ }
+ }
+}
+
+.search-dropdown {
+ position: fixed;
+ z-index: 200;
+ top: $header-height;
+ @include box-shadow(0 .125rem .25rem rgba(0, 0, 0, .1));
+
+ &.desktop {
+ right: 2rem;
+ width: 30rem;
+ }
+
+ &.mobile {
+ right: 0;
+ width: 100%;
+ }
+
+ .dropdown-menu {
+ right: 0 !important;
+ background-color: $global-background-color;
+
+ [theme=dark] & {
+ background-color: $global-background-color-dark;
+ }
+
+ .suggestions {
+ overflow-y: auto;
+ max-height: calc(100vh - #{$header-height});
+
+ .suggestion {
+ padding: .75rem 1rem;
+
+ .suggestion-title {
+ display: inline-block;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ font-size: 1rem;
+ font-weight: bold;
+ max-width: 75%;
+ }
+
+ .suggestion-date {
+ font-size: .875rem;
+ float: right;
+ text-align: right;
+ color: $global-font-secondary-color;
+
+ [theme=dark] & {
+ color: $global-font-secondary-color-dark;
+ }
+ }
+
+ .suggestion-context {
+ line-height: 1.25rem;
+ @include box(vertical);
+ -webkit-line-clamp: 2;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ @include overflow-wrap(break-word);
+ color: $global-font-secondary-color;
+
+ [theme=dark] & {
+ color: $global-font-secondary-color-dark;
+ }
+ }
+
+ em {
+ font-style: normal;
+ background-color: $selection-color;
+
+ [theme=dark] & {
+ background-color: $selection-color-dark;
+ }
+ }
+
+ &.cursor {
+ background: darken($code-background-color, 5%);
+
+ [theme=dark] & {
+ background: lighten($code-background-color-dark, 5%);
+ }
+ }
+
+ &:hover {
+ cursor: pointer;
+ }
+ }
+ }
+
+ .search-empty {
+ padding: 1rem;
+ text-align: center;
+
+ .search-query {
+ font-weight: bold;
+
+ [theme=dark] & {
+ color: #ddd;
+ }
+ }
+ }
+
+ .search-footer {
+ padding: .5rem 1rem;
+ float: right;
+ font-size: .8rem;
+ color: $global-font-secondary-color;
+
+ [theme=dark] {
+ color: $global-font-secondary-color-dark;
+ }
+
+ @include link(false, false);
+
+ a {
+ font-size: 1rem;
+ }
+ }
+ }
+}
diff --git a/assets/css/_partial/_icon.scss b/assets/css/_partial/_icon.scss
new file mode 100644
index 00000000..f42d2e61
--- /dev/null
+++ b/assets/css/_partial/_icon.scss
@@ -0,0 +1,17 @@
+svg.icon {
+ display: inline-block;
+ width: 1.25em;
+ height: 1em;
+ text-align: center;
+
+ path {
+ fill: currentColor;
+ }
+}
+
+img.emoji {
+ height: 1em;
+ width: 1em;
+ margin: 0 .05em 0 .1em;
+ vertical-align: -.1em;
+}
diff --git a/assets/css/_partial/_mask.scss b/assets/css/_partial/_mask.scss
new file mode 100644
index 00000000..65b5734a
--- /dev/null
+++ b/assets/css/_partial/_mask.scss
@@ -0,0 +1,16 @@
+#mask {
+ background-repeat: no-repeat;
+ background-position: center;
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ z-index: -1;
+ background-color: rgba(0, 0, 0, 0);
+
+ .blur & {
+ z-index: 100;
+ background-color: rgba(0, 0, 0, .25);
+ }
+}
diff --git a/assets/css/_partial/_pagination.scss b/assets/css/_partial/_pagination.scss
new file mode 100644
index 00000000..10d24b77
--- /dev/null
+++ b/assets/css/_partial/_pagination.scss
@@ -0,0 +1,91 @@
+.pagination {
+ display: flex;
+ flex-direction: row;
+ justify-content: center;
+ list-style: none;
+ white-space: nowrap;
+ width: 100%;
+ padding: 1rem 0 0;
+
+ a {
+ font-size: .8rem;
+ color: #bfbfbf;
+ letter-spacing: .1rem;
+ font-weight: 700;
+ padding: 5px 5px;
+ text-decoration: none;
+ @include transition(0.3s);
+ }
+
+ li {
+ padding-bottom: 3px;
+ margin: 0 20px;
+ box-sizing: border-box;
+ position: relative;
+ display: inline;
+
+ &.disabled {
+ display: none;
+ }
+
+ &:hover a {
+ color: $pagination-link-hover-color;
+ }
+
+ [theme=dark] &:hover a {
+ color: $pagination-link-hover-color-dark;
+ }
+
+ &:before,
+ &:after {
+ position: absolute;
+ content: "";
+ width: 0;
+ height: 3px;
+ background: $pagination-link-hover-color;
+ @include transition(0.3s);
+ bottom: 0px;
+ }
+
+ [theme=dark] &:before,
+ [theme=dark] &:after {
+ background: $pagination-link-hover-color-dark;
+ }
+
+ &:before .active,
+ &:after .active {
+ width: 100%;
+ }
+
+ &:before {
+ left: 50%;
+ }
+
+ &:after {
+ right: 50%;
+ }
+
+ &:hover {
+
+ &:before,
+ &:after {
+ width: 50%;
+ }
+ }
+
+ &.active {
+ a {
+ color: $pagination-link-hover-color;
+ }
+
+ [theme=dark] & a {
+ color: $pagination-link-hover-color-dark;
+ }
+
+ &:before,
+ &:after {
+ width: 60%;
+ }
+ }
+ }
+}
diff --git a/assets/css/_partial/_single/_admonition.scss b/assets/css/_partial/_single/_admonition.scss
new file mode 100644
index 00000000..41c8cbcc
--- /dev/null
+++ b/assets/css/_partial/_single/_admonition.scss
@@ -0,0 +1,67 @@
+.admonition {
+ position: relative;
+ margin: 1rem 0;
+ padding: 0 .75rem;
+ background-color: map-get($admonition-background-color-map, 'note');
+ border-left: .25rem solid map-get($admonition-color-map, 'note');
+ overflow: auto;
+
+ .admonition-title {
+ font-weight: bold;
+ margin: 0 -0.75rem;
+ padding: .25rem 1.8rem;
+ border-bottom: 1px solid map-get($admonition-background-color-map, 'note');
+ background-color: opacify(map-get($admonition-background-color-map, 'note'), 0.15);
+ }
+
+ &.open .admonition-title {
+ background-color: map-get($admonition-background-color-map, 'note');
+ }
+
+ .admonition-content {
+ padding: .5rem 0;
+ }
+
+ i.icon {
+ font-size: 0.85rem;
+ color: map-get($admonition-color-map, 'note');
+ position: absolute;
+ top: .6rem;
+ left: .4rem;
+ }
+
+ i.details-icon {
+ position: absolute;
+ top: .6rem;
+ right: .3rem;
+ }
+
+ @each $type, $color in $admonition-color-map {
+ &.#{$type} {
+ border-left-color: $color;
+
+ i.icon {
+ color: $color;
+ }
+ }
+ }
+
+ @each $type, $color in $admonition-background-color-map {
+ &.#{$type} {
+ background-color: $color;
+
+ .admonition-title {
+ border-bottom-color: $color;
+ background-color: opacify($color, 0.15);
+ }
+
+ &.open .admonition-title {
+ background-color: $color;
+ }
+ }
+ }
+
+ &:last-child {
+ margin-bottom: .75rem;
+ }
+}
diff --git a/assets/css/_partial/_single/_bilibili.scss b/assets/css/_partial/_single/_bilibili.scss
new file mode 100644
index 00000000..6eef8e64
--- /dev/null
+++ b/assets/css/_partial/_single/_bilibili.scss
@@ -0,0 +1,16 @@
+.bilibili {
+ position: relative;
+ width: 100%;
+ height: 0;
+ padding-bottom: 75%;
+ margin: 3% auto;
+ text-align: center;
+
+ iframe {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ left: 0;
+ top: 0;
+ }
+}
diff --git a/assets/css/_partial/_single/_code.scss b/assets/css/_partial/_single/_code.scss
new file mode 100644
index 00000000..7061d8b7
--- /dev/null
+++ b/assets/css/_partial/_single/_code.scss
@@ -0,0 +1,399 @@
+code {
+ display:inline-block;
+ max-width: 100%;
+ padding: 0 .4rem;
+ @include overflow-wrap(break-word);
+ @include line-break(anywhere);
+ font-size: $code-font-size;
+ font-family: $code-font-family;
+ color: $code-color;
+
+ [theme=dark] & {
+ color: $code-color-dark;
+ }
+}
+
+pre {
+ margin: 0;
+ padding: .25rem 0 .25rem .5rem;
+ @include tab-size(4);
+
+ code {
+ padding: 0;
+ }
+
+ img {
+ min-height: 1em;
+ max-height: 1.2em;
+ vertical-align: text-bottom;
+ }
+}
+
+code, pre, .highlight table, .highlight tr, .highlight td {
+ background: $code-background-color;
+
+ [theme=dark] & {
+ background: $code-background-color-dark;
+ }
+}
+
+.highlight {
+ font-family: $code-font-family;
+ font-size: $code-font-size;
+ line-height: 1.4em;
+ margin: .5rem 0;
+
+ .table-wrapper {
+ > table,
+ > table thead,
+ > table tr,
+ > table td {
+ margin: 0;
+ padding: 0;
+ border: none !important;
+
+ span.c {
+ white-space: nowrap;
+ }
+ }
+ }
+
+ > .chroma {
+ position: relative;
+
+ .code-header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ box-sizing: border-box;
+ width: 100%;
+ font-family: $global-font-family;
+ font-weight: bold;
+ color: $code-info-color;
+ background: darken($code-background-color, 8%);
+
+ [theme=dark] & {
+ color: $code-info-color-dark;
+ background: darken($code-background-color-dark, 6%);
+ }
+
+ &:hover {
+ cursor: pointer;
+ }
+
+ .code-title {
+ width: 100%;
+ padding: .4rem;
+ }
+
+ .code-title::after {
+ padding-left: .2rem;
+ content: 'Code';
+ }
+
+ @each $type, $text in $code-type-map {
+ &.#{$type} .code-title::after {
+ content: $text;
+ }
+ }
+ }
+
+ .lntd:first-child {
+ min-width: 1.6rem;
+ text-align: right;
+ }
+
+ .lntd:last-child {
+ width: 100%;
+
+ pre {
+ @include max-content(min-width);
+ }
+ }
+
+ .ln {
+ padding-right: .75rem;
+ }
+
+ .hl {
+ display: block;
+ background-color: darken($code-background-color, 10%);
+
+ [theme=dark] & {
+ background-color: darken($code-background-color-dark, 5%);
+ }
+ }
+
+ .ln, .lnt {
+ color: $global-font-secondary-color;
+
+ [theme=dark] & {
+ color: $global-font-secondary-color-dark;
+ }
+ }
+
+ .arrow {
+ padding: 0 .2rem;
+ @include transition(transform 0.2s ease);
+ }
+
+ .ellipses {
+ padding: .4rem;
+ }
+
+ .copy {
+ display: none;
+ padding: .4rem;
+
+ &:hover {
+ cursor: pointer;
+ color: $global-link-hover-color;
+
+ [theme=dark] & {
+ color: $global-link-hover-color-dark;
+ }
+ }
+ }
+
+ .table-wrapper {
+ max-height: 0;
+ overflow-y: hidden;
+ @include details-transition-open;
+ }
+
+ &.open {
+ .code-header {
+ background: darken($code-background-color, 3%);
+
+ [theme=dark] & {
+ background: darken($code-background-color-dark, 3%);
+ }
+ }
+
+ .table-wrapper {
+ max-height: $MAX_LENGTH;
+ @include details-transition-close;
+ }
+
+ .arrow {
+ @include transform(rotate(90deg));
+ }
+
+ .ellipses {
+ display: none;
+ }
+
+ .copy {
+ display: inline;
+ }
+ }
+ }
+
+ /* Comment */ .c,
+ /* CommentHashbang */ .ch,
+ /* CommentMultiline */ .cm,
+ /* CommentSingle */ .c1,
+ /* CommentSpecial */ .cs,
+ /* CommentPreproc */ .cp,
+ /* CommentPreprocFile */ .cpf { font-style: italic }
+ /* GenericUnderline */ .gl { text-decoration: underline }
+
+ @each $class, $color in $code-highlight-color-map {
+ .#{$class} { color: $color; }
+ }
+
+ [theme=dark] & {
+ @each $class, $color in $code-highlight-color-map-dark {
+ .#{$class} { color: $color; }
+ }
+ }
+}
+
+.gist {
+ font-family: $code-font-family;
+ font-size: $code-font-size;
+
+ .table-wrapper {
+ > table,
+ > table thead,
+ > table tr,
+ > table td {
+ margin: 0;
+ padding: 0;
+ border: none !important;
+ }
+ }
+
+ .gist-file, .gist-data, .gist-meta {
+ border: none;
+ }
+
+ .gist-meta {
+ padding: .4rem .8rem;
+ background-color: darken($code-background-color, 5%);
+
+ @include link(false, false);
+
+ [theme=dark] & {
+ background-color: darken($code-background-color-dark, 5%);
+ }
+ }
+
+ [theme=dark] & {
+ // imported from https://github.com/lonekorean/gist-syntax-themes/blob/master/stylesheets/one-dark.css
+ .highlight {
+ background: #141414;
+ }
+ .blob-num,
+ .blob-code-inner,
+ .highlight,
+ .pl-enm,
+ .pl-ko,
+ .pl-mo,
+ .pl-mp1 .pl-sf,
+ .pl-ms,
+ .pl-pdc1,
+ .pl-scp,
+ .pl-smc,
+ .pl-som,
+ .pl-va,
+ .pl-vpf,
+ .pl-vpu,
+ .pl-mdr {
+ color: #aab1bf;
+ }
+ .pl-mb,
+ .pl-pdb {
+ font-weight: 700;
+ }
+ .pl-c,
+ .pl-c span,
+ .pl-pdc {
+ color: #5b6270;
+ font-style: italic;
+ }
+ .pl-sr .pl-cce {
+ color: #56b5c2;
+ font-weight: 400;
+ }
+ .pl-ef,
+ .pl-en,
+ .pl-enf,
+ .pl-eoai,
+ .pl-kos,
+ .pl-mh .pl-pdh,
+ .pl-mr {
+ color: #61afef;
+ }
+ .pl-ens,
+ .pl-vi {
+ color: #be5046;
+ }
+ .pl-enti,
+ .pl-mai .pl-sf,
+ .pl-ml,
+ .pl-sf,
+ .pl-sr,
+ .pl-sr .pl-sra,
+ .pl-src,
+ .pl-st,
+ .pl-vo {
+ color: #56b5c2;
+ }
+ .pl-eoi,
+ .pl-mri,
+ .pl-pds,
+ .pl-pse .pl-s1,
+ .pl-s,
+ .pl-s1 {
+ color: #97c279;
+ }
+ .pl-k,
+ .pl-kolp,
+ .pl-mc,
+ .pl-pde {
+ color: #c578dd;
+ }
+ .pl-mi,
+ .pl-pdi {
+ color: #c578dd;
+ font-style: italic;
+ }
+ .pl-mp,
+ .pl-stp {
+ color: #818896;
+ }
+ .pl-mdh,
+ .pl-mdi,
+ .pl-mdr {
+ font-weight: 400;
+ }
+ .pl-mdht,
+ .pl-mi1 {
+ color: #97c279;
+ background: #020;
+ }
+ .pl-md,
+ .pl-mdhf {
+ color: #df6b75;
+ background: #200;
+ }
+ .pl-corl {
+ color: #df6b75;
+ text-decoration: underline;
+ }
+ .pl-ib {
+ background: #df6b75;
+ }
+ .pl-ii {
+ background: #e0c184;
+ color: #fff;
+ }
+ .pl-iu {
+ background: #e05151;
+ }
+ .pl-ms1 {
+ color: #aab1bf;
+ background: #373b41;
+ }
+ .pl-c1,
+ .pl-cn,
+ .pl-e,
+ .pl-eoa,
+ .pl-eoac,
+ .pl-eoac .pl-pde,
+ .pl-kou,
+ .pl-mm,
+ .pl-mp .pl-s3,
+ .pl-mq,
+ .pl-s3,
+ .pl-sok,
+ .pl-sv,
+ .pl-mb {
+ color: #d19965;
+ }
+ .pl-enc,
+ .pl-entc,
+ .pl-pse .pl-s2,
+ .pl-s2,
+ .pl-sc,
+ .pl-smp,
+ .pl-sr .pl-sre,
+ .pl-stj,
+ .pl-v,
+ .pl-pdb {
+ color: #e4bf7a;
+ }
+ .pl-ent,
+ .pl-entl,
+ .pl-entm,
+ .pl-mh,
+ .pl-pdv,
+ .pl-smi,
+ .pl-sol,
+ .pl-mdh,
+ .pl-mdi {
+ color: #df6b75;
+ }
+ }
+}
diff --git a/assets/css/_partial/_single/_comment.scss b/assets/css/_partial/_single/_comment.scss
new file mode 100644
index 00000000..88899f65
--- /dev/null
+++ b/assets/css/_partial/_single/_comment.scss
@@ -0,0 +1,3 @@
+#comments {
+ padding: 8rem 0 2rem;
+}
diff --git a/assets/css/_partial/_single/_echarts.scss b/assets/css/_partial/_single/_echarts.scss
new file mode 100644
index 00000000..c5c58725
--- /dev/null
+++ b/assets/css/_partial/_single/_echarts.scss
@@ -0,0 +1,4 @@
+.echarts {
+ margin: .5rem 0;
+ text-align: center;
+}
diff --git a/assets/css/_partial/_single/_footer.scss b/assets/css/_partial/_single/_footer.scss
new file mode 100644
index 00000000..e2c13243
--- /dev/null
+++ b/assets/css/_partial/_single/_footer.scss
@@ -0,0 +1,98 @@
+.post-footer {
+ margin-top: 3rem;
+
+ .post-info {
+ border-bottom: 1px solid $global-border-color;
+ padding: 1rem 0 0.3rem;
+
+ [theme=dark] & {
+ border-bottom: 1px solid $global-border-color-dark;
+ }
+
+ .post-info-line {
+ display: flex;
+ justify-content: space-between;
+
+ .post-info-mod {
+ font-size: 0.8em;
+ color: $global-font-secondary-color;
+
+ [theme=dark] & {
+ color: $global-font-secondary-color-dark;
+ }
+
+ @include link(false, false);
+ }
+
+ .post-info-license {
+ font-size: 0.8em;
+ color: $global-font-secondary-color;
+
+ [theme=dark] & {
+ color: $global-font-secondary-color-dark;
+ }
+
+ @include link(false, false);
+ }
+
+ .post-info-md {
+ font-size: 0.8rem;
+ width: 8rem;
+
+ @include link(false, false);
+ }
+
+ .post-info-share {
+ a * {
+ vertical-align: text-bottom;
+ }
+ }
+ }
+ }
+
+ .post-info-more {
+ padding: 0.3rem 0 1rem;
+ display: flex;
+ justify-content: space-between;
+ font-size: 0.9rem;
+ }
+
+ .post-tags {
+ max-width: 65%;
+
+ * {
+ display: inline;
+ }
+ }
+
+ .post-nav {
+ &::before,
+ &::after {
+ content: ' ';
+ display: table;
+ }
+
+ & a.prev,
+ & a.next {
+ font-size: 1rem;
+ font-weight: 600;
+ @include transition(all 0.3s ease-out);
+ }
+
+ & a.prev {
+ float: left;
+ }
+
+ & a.prev:hover {
+ @include transform(translateX(-4px));
+ }
+
+ & a.next {
+ float: right;
+ }
+
+ & a.next:hover {
+ @include transform(translateX(4px));
+ }
+ }
+}
diff --git a/assets/css/_partial/_single/_instagram.scss b/assets/css/_partial/_single/_instagram.scss
new file mode 100644
index 00000000..49e08caf
--- /dev/null
+++ b/assets/css/_partial/_single/_instagram.scss
@@ -0,0 +1,5 @@
+iframe.instagram-media {
+ [theme=dark] & {
+ border: none !important;
+ }
+}
diff --git a/assets/css/_partial/_single/_mapbox.scss b/assets/css/_partial/_single/_mapbox.scss
new file mode 100644
index 00000000..4ed98560
--- /dev/null
+++ b/assets/css/_partial/_single/_mapbox.scss
@@ -0,0 +1,4 @@
+.mapbox {
+ margin: .5rem 0;
+ padding: .5rem 0;
+}
diff --git a/assets/css/_partial/_single/_music.scss b/assets/css/_partial/_single/_music.scss
new file mode 100644
index 00000000..2a205494
--- /dev/null
+++ b/assets/css/_partial/_single/_music.scss
@@ -0,0 +1,3 @@
+meting-js {
+ margin: .5rem 0;
+}
diff --git a/assets/css/_partial/_single/_toc.scss b/assets/css/_partial/_single/_toc.scss
new file mode 100644
index 00000000..aef9a09c
--- /dev/null
+++ b/assets/css/_partial/_single/_toc.scss
@@ -0,0 +1,157 @@
+.toc {
+ .toc-title {
+ font-size: $toc-title-font-size;
+ font-weight: bold;
+ text-transform: uppercase;
+ }
+
+ .toc-content {
+ font-size: $toc-content-font-size;
+
+ ul {
+ text-indent: -0.85rem;
+ padding-left: .8rem;
+ list-style: none;
+
+ a:first-child::before {
+ content: "|";
+ font-weight: bolder;
+ margin-right: .5rem;
+ color: $single-link-color;
+
+ [theme=dark] & {
+ color: $single-link-color-dark;
+ }
+ }
+
+ ul {
+ padding-left: 1.5rem;
+ }
+ }
+ }
+
+ ruby {
+ background: $code-background-color;
+
+ rt {
+ color: $global-font-secondary-color;
+ }
+
+ [theme=dark] & {
+ background: $code-background-color-dark;
+
+ rt {
+ color: $global-font-secondary-color-dark;
+ }
+ }
+ }
+}
+
+#toc-auto {
+ display: block;
+ position: absolute;
+ width: $MAX_LENGTH;
+ max-width: 0;
+ padding: 0 .8rem;
+ border-left: 4px solid $global-border-color;
+ @include overflow-wrap(break-word);
+ box-sizing: border-box;
+ top: 10rem;
+ left: 0;
+ visibility: hidden;
+
+ [data-header-desktop=normal] & {
+ top: 5rem;
+ }
+
+ @include blur;
+
+ [theme=dark] & {
+ border-left-color: $global-border-color-dark;
+ }
+
+ .toc-title {
+ margin: .8rem 0;
+ }
+
+ .toc-content {
+ &.always-active ul {
+ display: block;
+ }
+
+ > nav > ul {
+ margin: .625rem 0;
+ }
+
+ ul {
+ ul {
+ display: none;
+ }
+
+ .has-active > ul {
+ display: block;
+ }
+ }
+
+ a.active {
+ font-weight: bold;
+ color: $single-link-color;
+
+ [theme=dark] & {
+ color: $single-link-color-dark;
+ }
+
+ &::before {
+ color: $single-link-hover-color;
+
+ [theme=dark] & {
+ color: $single-link-hover-color-dark;
+ }
+ }
+ }
+ }
+}
+
+#toc-static {
+ display: none;
+ margin: .8rem 0;
+
+ &[data-kept=true] {
+ display: block;
+ }
+
+ .toc-title {
+ display: flex;
+ justify-content: space-between;
+ line-height: 2em;
+ padding: 0 .75rem;
+ background: darken($code-background-color, 6%);
+
+ [theme=dark] & {
+ background: darken($code-background-color-dark, 6%);
+ }
+ }
+
+ .toc-content {
+ background-color: $code-background-color;
+
+ > nav > ul {
+ margin: 0;
+ padding: .4rem 1rem .4rem 1.8rem;
+ }
+
+ [theme=dark] & {
+ background-color: $code-background-color-dark;
+ }
+ }
+
+ &.open {
+ .toc-title {
+ background: darken($code-background-color, 3%);
+
+ [theme=dark] & {
+ background: darken($code-background-color-dark, 3%);
+ }
+ }
+ }
+}
diff --git a/assets/css/_variables.scss b/assets/css/_variables.scss
new file mode 100644
index 00000000..6ed827b6
--- /dev/null
+++ b/assets/css/_variables.scss
@@ -0,0 +1,369 @@
+// ==============================
+// Variables
+// ==============================
+
+// ========== Global ========== //
+// Font and Line Height
+$global-font-family: system-ui, -apple-system, BlinkMacSystemFont, PingFang SC, Microsoft YaHei UI, Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, Helvetica, Arial, sans-serif !default;
+$global-font-size: 16px;
+$global-font-weight: 400;
+$global-line-height: 1.5rem;
+
+// Color of the background
+$global-background-color: #fff !default;
+$global-background-color-dark: #292a2d !default;
+
+// Color of the text
+$global-font-color: #161209 !default;
+$global-font-color-dark: #a9a9b3 !default;
+
+// Color of the secondary text
+$global-font-secondary-color: #a9a9b3 !default;
+$global-font-secondary-color-dark: #5d5d5f !default;
+
+// Color of the link
+$global-link-color: #161209 !default;
+$global-link-color-dark: #a9a9b3 !default;
+
+// Color of the hover link
+$global-link-hover-color: #2d96bd !default;
+$global-link-hover-color-dark: #fff !default;
+
+// Color of the border
+$global-border-color: #f0f0f0 !default;
+$global-border-color-dark: #363636 !default;
+// ========== Global ========== //
+
+// ========== Scrollbar ========== //
+// Color of the scrollbar
+$scrollbar-color: #87878d !default;
+
+// Color of the hover scrollbar
+$scrollbar-hover-color: #a9a9b3 !default;
+// ========== Scrollbar ========== //
+
+// ========== Selection ========== //
+// Color of the selected text
+$selection-color: rgba(53, 166, 247, 0.25) !default;
+$selection-color-dark: rgba(50, 112, 194, 0.4) !default;
+// ========== Selection ========== //
+
+// ========== Header ========== //
+// Height of the header
+$header-height: 3.5rem !default;
+
+// Color of the header background
+$header-background-color: #f8f8f8 !default;
+$header-background-color-dark: #252627 !default;
+
+// Font style of the header title
+$header-title-font-family: $global-font-family !default;
+$header-title-font-size: 1.5rem !default;
+
+// Color of the hover header item
+$header-hover-color: #161209 !default;
+$header-hover-color-dark: #fff !default;
+
+// Color of the search background
+$search-background-color: #e9e9e9 !default;
+$search-background-color-dark: #363636 !default;
+// ========== Header ========== //
+
+// ========== Single Content ========== //
+// Font size of the TOC
+$toc-title-font-size: 1.2rem !default;
+$toc-content-font-size: 1rem !default;
+
+// Color of the single link
+$single-link-color: #2d96bd !default;
+$single-link-color-dark: #55bde2 !default;
+
+// Color of the hover single link
+$single-link-hover-color: #ef3982 !default;
+$single-link-hover-color-dark: #bdebfc !default;
+
+// Color of the table background
+$table-background-color: #fff !default;
+$table-background-color-dark: #272c34 !default;
+
+// Color of the table thead
+$table-thead-color: #ededed !default;
+$table-thead-color-dark: #20252b !default;
+
+// Color of the blockquote
+$blockquote-color: #6bd6fd !default;
+$blockquote-color-dark: #59c5ec !default;
+// ========== Single Content ========== //
+
+// ========== Pagination ========== //
+// Color of the link in pagination
+$pagination-link-color: #2d96bd !default;
+$pagination-link-color-dark: #a9a9b3 !default;
+
+// Color of the hover link in pagination
+$pagination-link-hover-color: #000 !default;
+$pagination-link-hover-color-dark: #fff !default;
+// ========== Pagination ========== //
+
+// ========== Code ========== //
+// Color of the code
+$code-color: #E74C3C !default;
+$code-color-dark: #E5BF78 !default;
+
+// Color of the code background
+$code-background-color: #f5f5f5 !default;
+$code-background-color-dark: #272C34 !default;
+
+$code-info-color: #9c9c9c !default;
+$code-info-color-dark: #b1b0b0 !default;
+
+// Font size of the code
+$code-font-size: .875rem !default;
+
+// Font family of the code
+$code-font-family: Source Code Pro, Menlo, Consolas, Monaco, monospace, $global-font-family !default;
+
+// Code type map
+$code-type-map: (
+ // Custom code type
+ language-bash: 'Bash',
+ language-c: 'C',
+ language-cs: 'C#',
+ language-cpp: 'C++',
+ language-clojure: 'Clojure',
+ language-coffeescript: 'CoffeeScript',
+ language-css: 'CSS',
+ language-dart: 'Dart',
+ language-diff: 'Diff',
+ language-erlang: 'Erlang',
+ language-go: 'Go',
+ language-go-html-template: 'Go HTML Template',
+ language-groovy: 'Groovy',
+ language-haskell: 'Haskell',
+ language-html: 'HTML',
+ language-http: 'HTTP',
+ language-xml: 'XML',
+ language-java: 'Java',
+ language-js: 'JavaScript',
+ language-javascript: 'JavaScript',
+ language-json: 'JSON',
+ language-kotlin: 'Kotlin',
+ language-latex: 'LaTeX',
+ language-less: 'Less',
+ language-lisp: 'Lisp',
+ language-lua: 'Lua',
+ language-makefile: 'Makefile',
+ language-markdown: 'Markdown',
+ language-matlab: 'Matlab',
+ language-objectivec: 'Objective-C',
+ language-php: 'PHP',
+ language-perl: 'Perl',
+ language-powershell: 'PowerShell',
+ language-posh: 'PowerShell',
+ language-pwsh: 'PowerShell',
+ language-python: 'Python',
+ language-r: 'R',
+ language-ruby: 'Ruby',
+ language-rust: 'Rust',
+ language-scala: 'Scala',
+ language-scss: 'Scss',
+ language-shell: 'Shell',
+ language-sql: 'SQL',
+ language-swift: 'Swift',
+ language-tex: 'TeX',
+ language-toml: 'TOML',
+ language-ts: 'TypeScript',
+ language-typescript: 'TypeScript',
+ language-vue: 'Vue',
+ language-yml: 'YAML',
+ language-yaml: 'YAML',
+) !default;
+
+// Color map of the code highlight
+$code-highlight-color-map: (
+ /* Parentheses */ 'p': #a9a9b3,
+ /* Keyword */ 'k': #b501a9,
+ /* KeywordConstant */ 'kc': #b501a9,
+ /* KeywordDeclaration */ 'kd': #b501a9,
+ /* KeywordNamespace */ 'kn': #b501a9,
+ /* KeywordPseudo */ 'kp': #b501a9,
+ /* KeywordReserved */ 'kr': #b501a9,
+ /* KeywordType */ 'kt': #b501a9,
+ /* Name */ 'n': #333333,
+ /* NameAttribute */ 'na': #2b77fa,
+ /* NameBuiltin */ 'nb': #f74840,
+ /* NameBuiltinPseudo */ 'bp': #f74840,
+ /* NameClass */ 'nc': #cb8100,
+ /* NameConstant */ 'no': #2b77fa,
+ /* NameDecorator */ 'nd': #0086c1,
+ /* NameEntity */ 'ni': #2b77fa,
+ /* NameException */ 'ne': #2b77fa,
+ /* NameFunction */ 'nf': #2b77fa,
+ /* NameFunctionMagic */ 'fm': #1ccad6,
+ /* NameLabel */ 'nl': #2b77fa,
+ /* NameNamespace */ 'nn': #2b77fa,
+ /* NameOther */ 'nx': #333333,
+ /* NameProperty */ 'py': #2b77fa,
+ /* NameTag */ 'nt': #2b77fa,
+ /* NameVariable */ 'nv': #2b77fa,
+ /* NameVariableClass */ 'vc': #2b77fa,
+ /* NameVariableGlobal */ 'vg': #2b77fa,
+ /* NameVariableInstance */ 'vi': #2b77fa,
+ /* NameVariableMagic */ 'vm': #2b77fa,
+ /* Literal */ 'l': #2aa198,
+ /* LiteralDate */ 'ld': #2aa198,
+ /* LiteralString */ 's': #24a443,
+ /* LiteralStringAffix */ 'sa': #24a443,
+ /* LiteralStringBacktick */ 'sb': #24a443,
+ /* LiteralStringChar */ 'sc': #24a443,
+ /* LiteralStringDelimiter */ 'dl': #24a443,
+ /* LiteralStringDoc */ 'sd': #24a443,
+ /* LiteralStringDouble */ 's2': #24a443,
+ /* LiteralStringEscape */ 'se': #24a443,
+ /* LiteralStringHeredoc */ 'sh': #24a443,
+ /* LiteralStringInterpol */ 'si': #24a443,
+ /* LiteralStringOther */ 'sx': #24a443,
+ /* LiteralStringRegex */ 'sr': #24a443,
+ /* LiteralStringSingle */ 's1': #24a443,
+ /* LiteralStringSymbol */ 'ss': #24a443,
+ /* LiteralNumber */ 'm': #e2893c,
+ /* LiteralNumberBin */ 'mb': #e2893c,
+ /* LiteralNumberFloat */ 'mf': #e2893c,
+ /* LiteralNumberHex */ 'mh': #e2893c,
+ /* LiteralNumberInteger */ 'mi': #e2893c,
+ /* LiteralNumberIntegerLong */ 'il': #e2893c,
+ /* LiteralNumberOct */ 'mo': #e2893c,
+ /* Operator */ 'o': #f19b04,
+ /* OperatorWord */ 'ow': #b501a9,
+ /* Comment */ 'c': #a0a1a8,
+ /* CommentHashbang */ 'ch': #a0a1a8,
+ /* CommentMultiline */ 'cm': #a0a1a8,
+ /* CommentSingle */ 'c1': #a0a1a8,
+ /* CommentSpecial */ 'cs': #a0a1a8,
+ /* CommentPreproc */ 'cp': #a0a1a8,
+ /* CommentPreprocFile */ 'cpf': #a0a1a8,
+ /* Generic */ 'g': #e72d40,
+ /* GenericDeleted */ 'gd': #e72d40,
+ /* GenericEmph */ 'ge': #e72d40,
+ /* GenericError */ 'gr': #e72d40,
+ /* GenericHeading */ 'gh': #e72d40,
+ /* GenericInserted */ 'gi': #e72d40,
+ /* GenericOutput */ 'go': #e72d40,
+ /* GenericPrompt */ 'gp': #e72d40,
+ /* GenericStrong */ 'gs': #e72d40,
+ /* GenericSubheading */ 'gu': #e72d40,
+ /* GenericTraceback */ 'gt': #e72d40,
+ /* TextWhitespace */ 'w': #bbbbbb,
+) !default;
+$code-highlight-color-map-dark: (
+ /* Parentheses */ 'p': #a9a9b3,
+ /* Keyword */ 'k': #d371e3,
+ /* KeywordConstant */ 'kc': #d371e3,
+ /* KeywordDeclaration */ 'kd': #d371e3,
+ /* KeywordNamespace */ 'kn': #d371e3,
+ /* KeywordPseudo */ 'kp': #d371e3,
+ /* KeywordReserved */ 'kr': #d371e3,
+ /* KeywordType */ 'kt': #d371e3,
+ /* Name */ 'n': #a9b2c0,
+ /* NameAttribute */ 'na': #41b0f5,
+ /* NameBuiltin */ 'nb': #19b9c4,
+ /* NameBuiltinPseudo */ 'bp': #ecbf6f,
+ /* NameClass */ 'nc': #ecbf6f,
+ /* NameConstant */ 'no': #41b0f5,
+ /* NameDecorator */ 'nd': #ecbf6f,
+ /* NameEntity */ 'ni': #41b0f5,
+ /* NameException */ 'ne': #41b0f5,
+ /* NameFunction */ 'nf': #41b0f5,
+ /* NameFunctionMagic */ 'fm': #19b9c4,
+ /* NameLabel */ 'nl': #41b0f5,
+ /* NameNamespace */ 'nn': #41b0f5,
+ /* NameOther */ 'nx': #a9a9b3,
+ /* NameProperty */ 'py': #41b0f5,
+ /* NameTag */ 'nt': #41b0f5,
+ /* NameVariable */ 'nv': #41b0f5,
+ /* NameVariableClass */ 'vc': #41b0f5,
+ /* NameVariableGlobal */ 'vg': #41b0f5,
+ /* NameVariableInstance */ 'vi': #41b0f5,
+ /* NameVariableMagic */ 'vm': #41b0f5,
+ /* Literal */ 'l': #2aa198,
+ /* LiteralDate */ 'ld': #2aa198,
+ /* LiteralString */ 's': #8cc570,
+ /* LiteralStringAffix */ 'sa': #8cc570,
+ /* LiteralStringBacktick */ 'sb': #8cc570,
+ /* LiteralStringChar */ 'sc': #8cc570,
+ /* LiteralStringDelimiter */ 'dl': #8cc570,
+ /* LiteralStringDoc */ 'sd': #8cc570,
+ /* LiteralStringDouble */ 's2': #8cc570,
+ /* LiteralStringEscape */ 'se': #8cc570,
+ /* LiteralStringHeredoc */ 'sh': #8cc570,
+ /* LiteralStringInterpol */ 'si': #8cc570,
+ /* LiteralStringOther */ 'sx': #8cc570,
+ /* LiteralStringRegex */ 'sr': #8cc570,
+ /* LiteralStringSingle */ 's1': #8cc570,
+ /* LiteralStringSymbol */ 'ss': #8cc570,
+ /* LiteralNumber */ 'm': #db985c,
+ /* LiteralNumberBin */ 'mb': #db985c,
+ /* LiteralNumberFloat */ 'mf': #db985c,
+ /* LiteralNumberHex */ 'mh': #db985c,
+ /* LiteralNumberInteger */ 'mi': #db985c,
+ /* LiteralNumberIntegerLong */ 'il': #db985c,
+ /* LiteralNumberOct */ 'mo': #db985c,
+ /* Operator */ 'o': #ecbf6f,
+ /* OperatorWord */ 'ow': #d371e3,
+ /* Comment */ 'c': #7e848f,
+ /* CommentHashbang */ 'ch': #7e848f,
+ /* CommentMultiline */ 'cm': #7e848f,
+ /* CommentSingle */ 'c1': #7e848f,
+ /* CommentSpecial */ 'cs': #7e848f,
+ /* CommentPreproc */ 'cp': #7e848f,
+ /* CommentPreprocFile */ 'cpf': #7e848f,
+ /* Generic */ 'g': #f16372,
+ /* GenericDeleted */ 'gd': #f16372,
+ /* GenericEmph */ 'ge': #f16372,
+ /* GenericError */ 'gr': #f16372,
+ /* GenericHeading */ 'gh': #f16372,
+ /* GenericInserted */ 'gi': #f16372,
+ /* GenericOutput */ 'go': #f16372,
+ /* GenericPrompt */ 'gp': #f16372,
+ /* GenericStrong */ 'gs': #f16372,
+ /* GenericSubheading */ 'gu': #f16372,
+ /* GenericTraceback */ 'gt': #f16372,
+ /* TextWhitespace */ 'w': #bbbbbb,
+) !default;
+// ========== Code ========== //
+
+// ========== Admonition ========== //
+// Color map of the admonition
+$admonition-color-map: (
+ 'note': #448aff,
+ 'abstract': #00b0ff,
+ 'info': #00b8d4,
+ 'tip': #00bfa5,
+ 'success': #00c853,
+ 'question': #64dd17,
+ 'warning': #ff9100,
+ 'failure': #ff5252,
+ 'danger': #ff1744,
+ 'bug': #f50057,
+ 'example': #651fff,
+ 'quote': #9e9e9e,
+) !default;
+
+// Color map of the admonition background
+$admonition-background-color-map: (
+ 'note': rgba(68, 138, 255, 0.1),
+ 'abstract': rgba(0, 176, 255, 0.1),
+ 'info': rgba(0, 184, 212, 0.1),
+ 'tip': rgba(0, 191, 165, 0.1),
+ 'success': rgba(0, 200, 83, 0.1),
+ 'question': rgba(100, 221, 23, 0.1),
+ 'warning': rgba(255, 145, 0, 0.1),
+ 'failure': rgba(255, 82, 82, 0.1),
+ 'danger': rgba(255, 23, 68, 0.1),
+ 'bug': rgba(245, 0, 87, 0.1),
+ 'example': rgba(101, 31, 255, 0.1),
+ 'quote': rgba(159, 159, 159, 0.1),
+) !default;
+// ========== Admonition ========== //
+
+$MAX_LENGTH: 12000px;
diff --git a/assets/css/_variables/default.scss b/assets/css/_variables/default.scss
deleted file mode 100644
index c55151b6..00000000
--- a/assets/css/_variables/default.scss
+++ /dev/null
@@ -1,41 +0,0 @@
-/** light theme **/
-
-$light-background-color: #fff;
-
-$light-font-color: #161209;
-$light-font-secondary-color: #a9a9b3;
-
-$light-navbar-active-color: #161209;
-
-$light-global-link-color: #161209;
-$light-global-link-hover-color:#2d96bd;
-
-$light-post-link-color: #2d96bd;
-$light-post-link-hover-color:#ef3982;
-
-$light-pagination-link-color : #2d96bd;
-$light-pagination-link-active-color: #000;
-
-$light-border-color: #dcdcdc;
-
-
-
-/** dark theme **/
-
-$dark-background-color: #292a2d;
-
-$dark-font-color: #a9a9b3;
-$dark-font-secondary-color: #87878d;
-
-$dark-navbar-active-color: #fff;
-
-$dark-global-link-color: #a9a9b3;
-$dark-global-link-hover-color:#fff;
-
-$dark-post-link-color: #eee;
-$dark-post-link-hover-color:#fff;
-
-$dark-pagination-link-color : #a9a9b3;
-$dark-pagination-link-active-color: #fff;
-
-$dark-border-color: #4a4b50;
\ No newline at end of file
diff --git a/assets/css/main.scss b/assets/css/main.scss
deleted file mode 100644
index aaf188f3..00000000
--- a/assets/css/main.scss
+++ /dev/null
@@ -1,23 +0,0 @@
-@import "_variables/default.scss";
-
-@import "_common/_core/normalize.scss";
-@import "_common/_core/base.scss";
-@import "_common/_core/layout.scss";
-
-
-@import "_common/_page/home.scss";
-@import "_common/_page/terms.scss";
-@import "_common/_page/post.scss";
-@import "_common/_page/tags.scss";
-@import "_common/_page/home_post.scss";
-
-@import "_common/_section/navbar.scss";
-@import "_common/_section/footer.scss";
-@import "_common/_section/pagination.scss";
-
-
-@import "_common/_prettyprint/default.scss";
-
-
-@import "_common/_core/media.scss";
-@import "custom"
\ No newline at end of file
diff --git a/assets/css/style.scss b/assets/css/style.scss
new file mode 100644
index 00000000..cd685a8a
--- /dev/null
+++ b/assets/css/style.scss
@@ -0,0 +1,19 @@
+@charset "utf-8";
+
+@import "_variables";
+@import "_override";
+
+@import "_mixin/index";
+
+@import "_core/base";
+@import "_core/layout";
+
+@import "_page/index";
+
+@import "_partial/header";
+@import "_partial/footer";
+@import "_partial/pagination";
+
+@import "_core/media";
+
+@import "_custom";
diff --git a/assets/data/cdn/jsdelivr.yml b/assets/data/cdn/jsdelivr.yml
new file mode 100644
index 00000000..7f283175
--- /dev/null
+++ b/assets/data/cdn/jsdelivr.yml
@@ -0,0 +1,61 @@
+prefix:
+ libFiles: https://cdn.jsdelivr.net/npm/
+ # simple-icons@6.20.0 https://github.com/simple-icons/simple-icons
+ simpleIcons: https://cdn.jsdelivr.net/npm/simple-icons@6.20.0/icons/
+libFiles:
+ # normalize.css@8.0.1 https://github.com/necolas/normalize.css
+ normalizeCSS: normalize.css@8.0.1/normalize.min.css
+ # fontawesome-free@6.1.1 https://fontawesome.com/
+ fontawesomeFreeCSS: '@fortawesome/fontawesome-free@6.1.1/css/all.min.css'
+ # animate.css@4.1.1 https://github.com/daneden/animate.css
+ animateCSS: animate.css@4.1.1/animate.min.css
+ # autocomplete.js@0.38.1 https://github.com/algolia/autocomplete.js
+ autocompleteJS: autocomplete.js@0.38.1/dist/autocomplete.min.js
+ # lunr.js@2.3.9 https://lunrjs.com/
+ lunrJS: lunr@2.3.9/lunr.min.js
+ # algoliasearch@4.13.0 https://github.com/algolia/algoliasearch-client-javascript
+ algoliasearchJS: algoliasearch@4.13.0/dist/algoliasearch-lite.umd.min.js
+ # lazysizes@5.3.1 https://github.com/aFarkas/lazysizes
+ lazysizesJS: lazysizes@5.3.1/lazysizes.min.js
+ # object-fit-images@3.2.4 https://github.com/fregante/object-fit-images
+ objectFitImagesJS: object-fit-images@3.2.4/dist/ofi.min.js
+ # twemoji@14.0.2 https://github.com/twitter/twemoji
+ twemojiJS: twemoji@14.0.2/dist/twemoji.min.js
+ # lightgallery@2.4.0 https://github.com/sachinchoolur/lightgallery
+ lightgalleryCSS: lightgallery@2.4.0/css/lightgallery-bundle.min.css
+ lightgalleryJS: lightgallery@2.4.0/lightgallery.min.js
+ lightgalleryThumbnailJS: lightgallery@2.4.0/plugins/thumbnail/lg-thumbnail.min.js
+ lightgalleryZoomJS: lightgallery@2.4.0/plugins/zoom/lg-zoom.min.js
+ # clipboard.js@2.0.11 https://github.com/zenorocha/clipboard.js
+ clipboardJS: clipboard@2.0.11/dist/clipboard.min.js
+ # sharer.js@0.5.1 https://github.com/ellisonleao/sharer.js
+ sharerJS: sharer.js@0.5.1/sharer.min.js
+ # typeit@8.5.4 https://github.com/alexmacarthur/typeit
+ typeitJS: typeit@8.5.4/dist/index.umd.js
+ # katex@0.15.3 https://katex.org/
+ katexCSS: katex@0.15.3/dist/katex.min.css
+ katexJS: katex@0.15.3/dist/katex.min.js
+ katexAutoRenderJS: katex@0.15.3/dist/contrib/auto-render.min.js
+ katexCopyTexCSS: katex@0.15.3/dist/contrib/copy-tex.min.css
+ katexCopyTexJS: katex@0.15.3/dist/contrib/copy-tex.min.js
+ katexMhchemJS: katex@0.15.3/dist/contrib/mhchem.min.js
+ # mermaid@9.1.0 https://github.com/mermaid-js/mermaid
+ mermaidJS: mermaid@9.1.0/dist/mermaid.min.js
+ # echarts@5.3.2 https://echarts.apache.org/
+ echartsJS: echarts@5.3.2/dist/echarts.min.js
+ # mapbox-gl@2.8.2 https://docs.mapbox.com/mapbox-gl-js
+ mapboxGLCSS: mapbox-gl@2.8.2/dist/mapbox-gl.min.css
+ mapboxGLJS: mapbox-gl@2.8.2/dist/mapbox-gl.min.js
+ # aplayer@1.10.1 https://github.com/MoePlayer/APlayer
+ aplayerCSS: aplayer@1.10.1/dist/APlayer.min.css
+ aplayerJS: aplayer@1.10.1/dist/APlayer.min.js
+ # meting@2.0.1 https://github.com/metowolf/MetingJS
+ metingJS: meting@2.0.1/dist/Meting.min.js
+ # gitalk@1.7.2 https://github.com/gitalk/gitalk
+ gitalkCSS: gitalk@1.7.2/dist/gitalk.min.css
+ gitalkJS: gitalk@1.7.2/dist/gitalk.min.js
+ # valine@1.4.18 https://valine.js.org/
+ valineJS: valine@1.4.18/dist/Valine.min.js
+ # cookieconsent@3.1.1 https://github.com/osano/cookieconsent
+ cookieconsentCSS: cookieconsent@3.1.1/build/cookieconsent.min.css
+ cookieconsentJS: cookieconsent@3.1.1/build/cookieconsent.min.js
diff --git a/assets/data/emoji/apple.yml b/assets/data/emoji/apple.yml
new file mode 100644
index 00000000..7d81041a
--- /dev/null
+++ b/assets/data/emoji/apple.yml
@@ -0,0 +1,150 @@
+emojiCDN: 'https://cdn.jsdelivr.net/npm/emoji-datasource-apple@14.0.0/img/apple/64/'
+emojiMaps:
+ '100': 1f4af.png
+ grinning: 1f600.png
+ smiley: 1f603.png
+ smile: 1f604.png
+ grin: 1f601.png
+ laughing: 1f606.png
+ sweat_smile: 1f605.png
+ rolling_on_the_floor_laughing: 1f923.png
+ joy: 1f602.png
+ slightly_smiling_face: 1f642.png
+ upside_down_face: 1f643.png
+ wink: 1f609.png
+ blush: 1f60a.png
+ innocent: 1f607.png
+ smiling_face_with_3_hearts: 1f970.png
+ heart_eyes: 1f60d.png
+ star-struck: 1f929.png
+ kissing_heart: 1f618.png
+ kissing: 1f617.png
+ relaxed: 263a-fe0f.png
+ kissing_closed_eyes: 1f61a.png
+ kissing_smiling_eyes: 1f619.png
+ yum: 1f60b.png
+ stuck_out_tongue: 1f61b.png
+ stuck_out_tongue_winking_eye: 1f61c.png
+ zany_face: 1f92a.png
+ stuck_out_tongue_closed_eyes: 1f61d.png
+ money_mouth_face: 1f911.png
+ hugging_face: 1f917.png
+ face_with_hand_over_mouth: 1f92d.png
+ shushing_face: 1f92b.png
+ thinking_face: 1f914.png
+ zipper_mouth_face: 1f910.png
+ face_with_raised_eyebrow: 1f928.png
+ neutral_face: 1f610.png
+ expressionless: 1f611.png
+ no_mouth: 1f636.png
+ smirk: 1f60f.png
+ unamused: 1f612.png
+ face_with_rolling_eyes: 1f644.png
+ grimacing: 1f62c.png
+ lying_face: 1f925.png
+ relieved: 1f60c.png
+ pensive: 1f614.png
+ sleepy: 1f62a.png
+ drooling_face: 1f924.png
+ sleeping: 1f634.png
+ mask: 1f637.png
+ face_with_thermometer: 1f912.png
+ face_with_head_bandage: 1f915.png
+ nauseated_face: 1f922.png
+ face_vomiting: 1f92e.png
+ sneezing_face: 1f927.png
+ hot_face: 1f975.png
+ cold_face: 1f976.png
+ woozy_face: 1f974.png
+ dizzy_face: 1f635.png
+ exploding_head: 1f92f.png
+ face_with_cowboy_hat: 1f920.png
+ partying_face: 1f973.png
+ sunglasses: 1f60e.png
+ nerd_face: 1f913.png
+ face_with_monocle: 1f9d0.png
+ confused: 1f615.png
+ worried: 1f61f.png
+ slightly_frowning_face: 1f641.png
+ white_frowning_face: 2639-fe0f.png
+ open_mouth: 1f62e.png
+ hushed: 1f62f.png
+ astonished: 1f632.png
+ flushed: 1f633.png
+ pleading_face: 1f97a.png
+ frowning: 1f626.png
+ anguished: 1f627.png
+ fearful: 1f628.png
+ cold_sweat: 1f630.png
+ disappointed_relieved: 1f625.png
+ cry: 1f622.png
+ sob: 1f62d.png
+ scream: 1f631.png
+ confounded: 1f616.png
+ persevere: 1f623.png
+ disappointed: 1f61e.png
+ sweat: 1f613.png
+ weary: 1f629.png
+ tired_face: 1f62b.png
+ yawning_face: 1f971.png
+ triumph: 1f624.png
+ rage: 1f621.png
+ angry: 1f620.png
+ face_with_symbols_on_mouth: 1f92c.png
+ smiling_imp: 1f608.png
+ imp: 1f47f.png
+ skull: 1f480.png
+ skull_and_crossbones: 2620-fe0f.png
+ hankey: 1f4a9.png
+ clown_face: 1f921.png
+ japanese_ogre: 1f479.png
+ japanese_goblin: 1f47a.png
+ ghost: 1f47b.png
+ alien: 1f47d.png
+ space_invader: 1f47e.png
+ robot_face: 1f916.png
+ smiley_cat: 1f63a.png
+ smile_cat: 1f638.png
+ joy_cat: 1f639.png
+ heart_eyes_cat: 1f63b.png
+ smirk_cat: 1f63c.png
+ kissing_cat: 1f63d.png
+ scream_cat: 1f640.png
+ crying_cat_face: 1f63f.png
+ pouting_cat: 1f63e.png
+ see_no_evil: 1f648.png
+ hear_no_evil: 1f649.png
+ speak_no_evil: 1f64a.png
+ kiss: 1f48b.png
+ love_letter: 1f48c.png
+ cupid: 1f498.png
+ gift_heart: 1f49d.png
+ sparkling_heart: 1f496.png
+ heartpulse: 1f497.png
+ heartbeat: 1f493.png
+ revolving_hearts: 1f49e.png
+ two_hearts: 1f495.png
+ heart_decoration: 1f49f.png
+ heavy_heart_exclamation_mark_ornament: 2763-fe0f.png
+ broken_heart: 1f494.png
+ heart: 2764-fe0f.png
+ orange_heart: 1f9e1.png
+ yellow_heart: 1f49b.png
+ green_heart: 1f49a.png
+ blue_heart: 1f499.png
+ purple_heart: 1f49c.png
+ brown_heart: 1f90e.png
+ black_heart: 1f5a4.png
+ white_heart: 1f90d.png
+ anger: 1f4a2.png
+ boom: 1f4a5.png
+ dizzy: 1f4ab.png
+ sweat_drops: 1f4a6.png
+ dash: 1f4a8.png
+ hole: 1f573-fe0f.png
+ bomb: 1f4a3.png
+ speech_balloon: 1f4ac.png
+ left_speech_bubble: 1f5e8-fe0f.png
+ right_anger_bubble: 1f5ef-fe0f.png
+ thought_balloon: 1f4ad.png
+ zzz: 1f4a4.png
diff --git a/assets/data/emoji/facebook.yml b/assets/data/emoji/facebook.yml
new file mode 100644
index 00000000..a49d8741
--- /dev/null
+++ b/assets/data/emoji/facebook.yml
@@ -0,0 +1,150 @@
+emojiCDN: 'https://cdn.jsdelivr.net/npm/emoji-datasource-facebook@14.0.0/img/facebook/64/'
+emojiMaps:
+ '100': 1f4af.png
+ grinning: 1f600.png
+ smiley: 1f603.png
+ smile: 1f604.png
+ grin: 1f601.png
+ laughing: 1f606.png
+ sweat_smile: 1f605.png
+ rolling_on_the_floor_laughing: 1f923.png
+ joy: 1f602.png
+ slightly_smiling_face: 1f642.png
+ upside_down_face: 1f643.png
+ wink: 1f609.png
+ blush: 1f60a.png
+ innocent: 1f607.png
+ smiling_face_with_3_hearts: 1f970.png
+ heart_eyes: 1f60d.png
+ star-struck: 1f929.png
+ kissing_heart: 1f618.png
+ kissing: 1f617.png
+ relaxed: 263a-fe0f.png
+ kissing_closed_eyes: 1f61a.png
+ kissing_smiling_eyes: 1f619.png
+ yum: 1f60b.png
+ stuck_out_tongue: 1f61b.png
+ stuck_out_tongue_winking_eye: 1f61c.png
+ zany_face: 1f92a.png
+ stuck_out_tongue_closed_eyes: 1f61d.png
+ money_mouth_face: 1f911.png
+ hugging_face: 1f917.png
+ face_with_hand_over_mouth: 1f92d.png
+ shushing_face: 1f92b.png
+ thinking_face: 1f914.png
+ zipper_mouth_face: 1f910.png
+ face_with_raised_eyebrow: 1f928.png
+ neutral_face: 1f610.png
+ expressionless: 1f611.png
+ no_mouth: 1f636.png
+ smirk: 1f60f.png
+ unamused: 1f612.png
+ face_with_rolling_eyes: 1f644.png
+ grimacing: 1f62c.png
+ lying_face: 1f925.png
+ relieved: 1f60c.png
+ pensive: 1f614.png
+ sleepy: 1f62a.png
+ drooling_face: 1f924.png
+ sleeping: 1f634.png
+ mask: 1f637.png
+ face_with_thermometer: 1f912.png
+ face_with_head_bandage: 1f915.png
+ nauseated_face: 1f922.png
+ face_vomiting: 1f92e.png
+ sneezing_face: 1f927.png
+ hot_face: 1f975.png
+ cold_face: 1f976.png
+ woozy_face: 1f974.png
+ dizzy_face: 1f635.png
+ exploding_head: 1f92f.png
+ face_with_cowboy_hat: 1f920.png
+ partying_face: 1f973.png
+ sunglasses: 1f60e.png
+ nerd_face: 1f913.png
+ face_with_monocle: 1f9d0.png
+ confused: 1f615.png
+ worried: 1f61f.png
+ slightly_frowning_face: 1f641.png
+ white_frowning_face: 2639-fe0f.png
+ open_mouth: 1f62e.png
+ hushed: 1f62f.png
+ astonished: 1f632.png
+ flushed: 1f633.png
+ pleading_face: 1f97a.png
+ frowning: 1f626.png
+ anguished: 1f627.png
+ fearful: 1f628.png
+ cold_sweat: 1f630.png
+ disappointed_relieved: 1f625.png
+ cry: 1f622.png
+ sob: 1f62d.png
+ scream: 1f631.png
+ confounded: 1f616.png
+ persevere: 1f623.png
+ disappointed: 1f61e.png
+ sweat: 1f613.png
+ weary: 1f629.png
+ tired_face: 1f62b.png
+ yawning_face: 1f971.png
+ triumph: 1f624.png
+ rage: 1f621.png
+ angry: 1f620.png
+ face_with_symbols_on_mouth: 1f92c.png
+ smiling_imp: 1f608.png
+ imp: 1f47f.png
+ skull: 1f480.png
+ skull_and_crossbones: 2620-fe0f.png
+ hankey: 1f4a9.png
+ clown_face: 1f921.png
+ japanese_ogre: 1f479.png
+ japanese_goblin: 1f47a.png
+ ghost: 1f47b.png
+ alien: 1f47d.png
+ space_invader: 1f47e.png
+ robot_face: 1f916.png
+ smiley_cat: 1f63a.png
+ smile_cat: 1f638.png
+ joy_cat: 1f639.png
+ heart_eyes_cat: 1f63b.png
+ smirk_cat: 1f63c.png
+ kissing_cat: 1f63d.png
+ scream_cat: 1f640.png
+ crying_cat_face: 1f63f.png
+ pouting_cat: 1f63e.png
+ see_no_evil: 1f648.png
+ hear_no_evil: 1f649.png
+ speak_no_evil: 1f64a.png
+ kiss: 1f48b.png
+ love_letter: 1f48c.png
+ cupid: 1f498.png
+ gift_heart: 1f49d.png
+ sparkling_heart: 1f496.png
+ heartpulse: 1f497.png
+ heartbeat: 1f493.png
+ revolving_hearts: 1f49e.png
+ two_hearts: 1f495.png
+ heart_decoration: 1f49f.png
+ heavy_heart_exclamation_mark_ornament: 2763-fe0f.png
+ broken_heart: 1f494.png
+ heart: 2764-fe0f.png
+ orange_heart: 1f9e1.png
+ yellow_heart: 1f49b.png
+ green_heart: 1f49a.png
+ blue_heart: 1f499.png
+ purple_heart: 1f49c.png
+ brown_heart: 1f90e.png
+ black_heart: 1f5a4.png
+ white_heart: 1f90d.png
+ anger: 1f4a2.png
+ boom: 1f4a5.png
+ dizzy: 1f4ab.png
+ sweat_drops: 1f4a6.png
+ dash: 1f4a8.png
+ hole: 1f573-fe0f.png
+ bomb: 1f4a3.png
+ speech_balloon: 1f4ac.png
+ left_speech_bubble: 1f5e8-fe0f.png
+ right_anger_bubble: 1f5ef-fe0f.png
+ thought_balloon: 1f4ad.png
+ zzz: 1f4a4.png
diff --git a/assets/data/emoji/google.yml b/assets/data/emoji/google.yml
new file mode 100644
index 00000000..d9db49c4
--- /dev/null
+++ b/assets/data/emoji/google.yml
@@ -0,0 +1,150 @@
+emojiCDN: 'https://cdn.jsdelivr.net/npm/emoji-datasource-google@14.0.0/img/google/64/'
+emojiMaps:
+ '100': 1f4af.png
+ grinning: 1f600.png
+ smiley: 1f603.png
+ smile: 1f604.png
+ grin: 1f601.png
+ laughing: 1f606.png
+ sweat_smile: 1f605.png
+ rolling_on_the_floor_laughing: 1f923.png
+ joy: 1f602.png
+ slightly_smiling_face: 1f642.png
+ upside_down_face: 1f643.png
+ wink: 1f609.png
+ blush: 1f60a.png
+ innocent: 1f607.png
+ smiling_face_with_3_hearts: 1f970.png
+ heart_eyes: 1f60d.png
+ star-struck: 1f929.png
+ kissing_heart: 1f618.png
+ kissing: 1f617.png
+ relaxed: 263a-fe0f.png
+ kissing_closed_eyes: 1f61a.png
+ kissing_smiling_eyes: 1f619.png
+ yum: 1f60b.png
+ stuck_out_tongue: 1f61b.png
+ stuck_out_tongue_winking_eye: 1f61c.png
+ zany_face: 1f92a.png
+ stuck_out_tongue_closed_eyes: 1f61d.png
+ money_mouth_face: 1f911.png
+ hugging_face: 1f917.png
+ face_with_hand_over_mouth: 1f92d.png
+ shushing_face: 1f92b.png
+ thinking_face: 1f914.png
+ zipper_mouth_face: 1f910.png
+ face_with_raised_eyebrow: 1f928.png
+ neutral_face: 1f610.png
+ expressionless: 1f611.png
+ no_mouth: 1f636.png
+ smirk: 1f60f.png
+ unamused: 1f612.png
+ face_with_rolling_eyes: 1f644.png
+ grimacing: 1f62c.png
+ lying_face: 1f925.png
+ relieved: 1f60c.png
+ pensive: 1f614.png
+ sleepy: 1f62a.png
+ drooling_face: 1f924.png
+ sleeping: 1f634.png
+ mask: 1f637.png
+ face_with_thermometer: 1f912.png
+ face_with_head_bandage: 1f915.png
+ nauseated_face: 1f922.png
+ face_vomiting: 1f92e.png
+ sneezing_face: 1f927.png
+ hot_face: 1f975.png
+ cold_face: 1f976.png
+ woozy_face: 1f974.png
+ dizzy_face: 1f635.png
+ exploding_head: 1f92f.png
+ face_with_cowboy_hat: 1f920.png
+ partying_face: 1f973.png
+ sunglasses: 1f60e.png
+ nerd_face: 1f913.png
+ face_with_monocle: 1f9d0.png
+ confused: 1f615.png
+ worried: 1f61f.png
+ slightly_frowning_face: 1f641.png
+ white_frowning_face: 2639-fe0f.png
+ open_mouth: 1f62e.png
+ hushed: 1f62f.png
+ astonished: 1f632.png
+ flushed: 1f633.png
+ pleading_face: 1f97a.png
+ frowning: 1f626.png
+ anguished: 1f627.png
+ fearful: 1f628.png
+ cold_sweat: 1f630.png
+ disappointed_relieved: 1f625.png
+ cry: 1f622.png
+ sob: 1f62d.png
+ scream: 1f631.png
+ confounded: 1f616.png
+ persevere: 1f623.png
+ disappointed: 1f61e.png
+ sweat: 1f613.png
+ weary: 1f629.png
+ tired_face: 1f62b.png
+ yawning_face: 1f971.png
+ triumph: 1f624.png
+ rage: 1f621.png
+ angry: 1f620.png
+ face_with_symbols_on_mouth: 1f92c.png
+ smiling_imp: 1f608.png
+ imp: 1f47f.png
+ skull: 1f480.png
+ skull_and_crossbones: 2620-fe0f.png
+ hankey: 1f4a9.png
+ clown_face: 1f921.png
+ japanese_ogre: 1f479.png
+ japanese_goblin: 1f47a.png
+ ghost: 1f47b.png
+ alien: 1f47d.png
+ space_invader: 1f47e.png
+ robot_face: 1f916.png
+ smiley_cat: 1f63a.png
+ smile_cat: 1f638.png
+ joy_cat: 1f639.png
+ heart_eyes_cat: 1f63b.png
+ smirk_cat: 1f63c.png
+ kissing_cat: 1f63d.png
+ scream_cat: 1f640.png
+ crying_cat_face: 1f63f.png
+ pouting_cat: 1f63e.png
+ see_no_evil: 1f648.png
+ hear_no_evil: 1f649.png
+ speak_no_evil: 1f64a.png
+ kiss: 1f48b.png
+ love_letter: 1f48c.png
+ cupid: 1f498.png
+ gift_heart: 1f49d.png
+ sparkling_heart: 1f496.png
+ heartpulse: 1f497.png
+ heartbeat: 1f493.png
+ revolving_hearts: 1f49e.png
+ two_hearts: 1f495.png
+ heart_decoration: 1f49f.png
+ heavy_heart_exclamation_mark_ornament: 2763-fe0f.png
+ broken_heart: 1f494.png
+ heart: 2764-fe0f.png
+ orange_heart: 1f9e1.png
+ yellow_heart: 1f49b.png
+ green_heart: 1f49a.png
+ blue_heart: 1f499.png
+ purple_heart: 1f49c.png
+ brown_heart: 1f90e.png
+ black_heart: 1f5a4.png
+ white_heart: 1f90d.png
+ anger: 1f4a2.png
+ boom: 1f4a5.png
+ dizzy: 1f4ab.png
+ sweat_drops: 1f4a6.png
+ dash: 1f4a8.png
+ hole: 1f573-fe0f.png
+ bomb: 1f4a3.png
+ speech_balloon: 1f4ac.png
+ left_speech_bubble: 1f5e8-fe0f.png
+ right_anger_bubble: 1f5ef-fe0f.png
+ thought_balloon: 1f4ad.png
+ zzz: 1f4a4.png
diff --git a/assets/data/emoji/twitter.yml b/assets/data/emoji/twitter.yml
new file mode 100644
index 00000000..8be26e5a
--- /dev/null
+++ b/assets/data/emoji/twitter.yml
@@ -0,0 +1,150 @@
+emojiCDN: 'https://cdn.jsdelivr.net/npm/emoji-datasource-twitter@14.0.0/img/twitter/64/'
+emojiMaps:
+ '100': 1f4af.png
+ grinning: 1f600.png
+ smiley: 1f603.png
+ smile: 1f604.png
+ grin: 1f601.png
+ laughing: 1f606.png
+ sweat_smile: 1f605.png
+ rolling_on_the_floor_laughing: 1f923.png
+ joy: 1f602.png
+ slightly_smiling_face: 1f642.png
+ upside_down_face: 1f643.png
+ wink: 1f609.png
+ blush: 1f60a.png
+ innocent: 1f607.png
+ smiling_face_with_3_hearts: 1f970.png
+ heart_eyes: 1f60d.png
+ star-struck: 1f929.png
+ kissing_heart: 1f618.png
+ kissing: 1f617.png
+ relaxed: 263a-fe0f.png
+ kissing_closed_eyes: 1f61a.png
+ kissing_smiling_eyes: 1f619.png
+ yum: 1f60b.png
+ stuck_out_tongue: 1f61b.png
+ stuck_out_tongue_winking_eye: 1f61c.png
+ zany_face: 1f92a.png
+ stuck_out_tongue_closed_eyes: 1f61d.png
+ money_mouth_face: 1f911.png
+ hugging_face: 1f917.png
+ face_with_hand_over_mouth: 1f92d.png
+ shushing_face: 1f92b.png
+ thinking_face: 1f914.png
+ zipper_mouth_face: 1f910.png
+ face_with_raised_eyebrow: 1f928.png
+ neutral_face: 1f610.png
+ expressionless: 1f611.png
+ no_mouth: 1f636.png
+ smirk: 1f60f.png
+ unamused: 1f612.png
+ face_with_rolling_eyes: 1f644.png
+ grimacing: 1f62c.png
+ lying_face: 1f925.png
+ relieved: 1f60c.png
+ pensive: 1f614.png
+ sleepy: 1f62a.png
+ drooling_face: 1f924.png
+ sleeping: 1f634.png
+ mask: 1f637.png
+ face_with_thermometer: 1f912.png
+ face_with_head_bandage: 1f915.png
+ nauseated_face: 1f922.png
+ face_vomiting: 1f92e.png
+ sneezing_face: 1f927.png
+ hot_face: 1f975.png
+ cold_face: 1f976.png
+ woozy_face: 1f974.png
+ dizzy_face: 1f635.png
+ exploding_head: 1f92f.png
+ face_with_cowboy_hat: 1f920.png
+ partying_face: 1f973.png
+ sunglasses: 1f60e.png
+ nerd_face: 1f913.png
+ face_with_monocle: 1f9d0.png
+ confused: 1f615.png
+ worried: 1f61f.png
+ slightly_frowning_face: 1f641.png
+ white_frowning_face: 2639-fe0f.png
+ open_mouth: 1f62e.png
+ hushed: 1f62f.png
+ astonished: 1f632.png
+ flushed: 1f633.png
+ pleading_face: 1f97a.png
+ frowning: 1f626.png
+ anguished: 1f627.png
+ fearful: 1f628.png
+ cold_sweat: 1f630.png
+ disappointed_relieved: 1f625.png
+ cry: 1f622.png
+ sob: 1f62d.png
+ scream: 1f631.png
+ confounded: 1f616.png
+ persevere: 1f623.png
+ disappointed: 1f61e.png
+ sweat: 1f613.png
+ weary: 1f629.png
+ tired_face: 1f62b.png
+ yawning_face: 1f971.png
+ triumph: 1f624.png
+ rage: 1f621.png
+ angry: 1f620.png
+ face_with_symbols_on_mouth: 1f92c.png
+ smiling_imp: 1f608.png
+ imp: 1f47f.png
+ skull: 1f480.png
+ skull_and_crossbones: 2620-fe0f.png
+ hankey: 1f4a9.png
+ clown_face: 1f921.png
+ japanese_ogre: 1f479.png
+ japanese_goblin: 1f47a.png
+ ghost: 1f47b.png
+ alien: 1f47d.png
+ space_invader: 1f47e.png
+ robot_face: 1f916.png
+ smiley_cat: 1f63a.png
+ smile_cat: 1f638.png
+ joy_cat: 1f639.png
+ heart_eyes_cat: 1f63b.png
+ smirk_cat: 1f63c.png
+ kissing_cat: 1f63d.png
+ scream_cat: 1f640.png
+ crying_cat_face: 1f63f.png
+ pouting_cat: 1f63e.png
+ see_no_evil: 1f648.png
+ hear_no_evil: 1f649.png
+ speak_no_evil: 1f64a.png
+ kiss: 1f48b.png
+ love_letter: 1f48c.png
+ cupid: 1f498.png
+ gift_heart: 1f49d.png
+ sparkling_heart: 1f496.png
+ heartpulse: 1f497.png
+ heartbeat: 1f493.png
+ revolving_hearts: 1f49e.png
+ two_hearts: 1f495.png
+ heart_decoration: 1f49f.png
+ heavy_heart_exclamation_mark_ornament: 2763-fe0f.png
+ broken_heart: 1f494.png
+ heart: 2764-fe0f.png
+ orange_heart: 1f9e1.png
+ yellow_heart: 1f49b.png
+ green_heart: 1f49a.png
+ blue_heart: 1f499.png
+ purple_heart: 1f49c.png
+ brown_heart: 1f90e.png
+ black_heart: 1f5a4.png
+ white_heart: 1f90d.png
+ anger: 1f4a2.png
+ boom: 1f4a5.png
+ dizzy: 1f4ab.png
+ sweat_drops: 1f4a6.png
+ dash: 1f4a8.png
+ hole: 1f573-fe0f.png
+ bomb: 1f4a3.png
+ speech_balloon: 1f4ac.png
+ left_speech_bubble: 1f5e8-fe0f.png
+ right_anger_bubble: 1f5ef-fe0f.png
+ thought_balloon: 1f4ad.png
+ zzz: 1f4a4.png
diff --git a/assets/data/polyfill.yml b/assets/data/polyfill.yml
new file mode 100644
index 00000000..8ca0e462
--- /dev/null
+++ b/assets/data/polyfill.yml
@@ -0,0 +1,18 @@
+theme:
+ - html5shiv
+ - Object.values
+ - Promise
+ - fetch
+ - Element.prototype.after
+algoliasearch:
+ - Promise
+ - Object.entries
+ - Object.assign
+TypeIt:
+ - Array.prototype.fill
+ - Array.prototype.find
+ - Array.from
+ - IntersectionObserver
+ - Math.sign
+ - Object.assign
+ - Promise
diff --git a/assets/data/social.yml b/assets/data/social.yml
new file mode 100644
index 00000000..cb16556d
--- /dev/null
+++ b/assets/data/social.yml
@@ -0,0 +1,511 @@
+# 001: Github
+github:
+ Weight: 1
+ Prefix: https://github.com/
+ Title: GitHub
+ Icon:
+ Class: fab fa-github-alt fa-fw
+
+# 002: LinkedIn
+linkedin:
+ Weight: 2
+ Prefix: https://linkedin.com/in/
+ Title: LinkedIn
+ Icon:
+ Class: fab fa-linkedin fa-fw
+
+# 003: Twitter
+twitter:
+ Weight: 3
+ Prefix: https://twitter.com/
+ Title: Twitter
+ Icon:
+ Class: fab fa-twitter fa-fw
+
+# 004: Instagram
+instagram:
+ Weight: 4
+ Prefix: https://www.instagram.com/
+ Title: Instagram
+ Icon:
+ Class: fab fa-instagram fa-fw
+
+# 005: facebook
+facebook:
+ Weight: 5
+ Prefix: https://facebook.com/
+ Title: facebook
+ Icon:
+ Class: fab fa-facebook fa-fw
+
+# 006: Telegram
+telegram:
+ Weight: 6
+ Prefix: https://t.me/
+ Title: Telegram
+ Icon:
+ Class: fab fa-telegram-plane fa-fw
+
+# 007: Medium
+medium:
+ Weight: 7
+ Prefix: https://medium.com/
+ Title: Medium
+ Icon:
+ Class: fab fa-medium fa-fw
+
+# 008: GitLab
+gitlab:
+ Weight: 8
+ Prefix: https://gitlab.com/
+ Title: GitLab
+ Icon:
+ Class: fab fa-gitlab fa-fw
+
+# 009: YouTube Legacy
+youtubelegacy:
+ Weight: 9
+ Prefix: https://www.youtube.com/user/
+ Title: YouTube
+ Icon:
+ Class: fab fa-youtube fa-fw
+
+# 010: YouTube Custom
+youtubecustom:
+ Weight: 10
+ Prefix: https://www.youtube.com/c/
+ Title: YouTube
+ Icon:
+ Class: fab fa-youtube fa-fw
+
+# 011: YouTube Channel
+youtubechannel:
+ Weight: 11
+ Prefix: https://www.youtube.com/channel/
+ Title: YouTube
+ Icon:
+ Class: fab fa-youtube fa-fw
+
+# 012: Tumblr
+tumblr:
+ Weight: 12
+ Template: https://%v.tumblr.com/
+ Title: Tumblr
+ Icon:
+ Class: fab fa-tumblr fa-fw
+
+# 013: Quora
+quora:
+ Weight: 13
+ Prefix: https://www.quora.com/profile/
+ Title: Quora
+ Icon:
+ Class: fab fa-quora fa-fw
+
+# 014: Keybase
+keybase:
+ Weight: 14
+ Prefix: https://keybase.io/
+ Title: Keybase
+ Icon:
+ Class: fab fa-keybase fa-fw
+
+# 015: Pinterest
+pinterest:
+ Weight: 15
+ Prefix: https://www.pinterest.com/
+ Title: Pinterest
+ Icon:
+ Class: fab fa-pinterest fa-fw
+
+# 016: Reddit
+reddit:
+ Weight: 16
+ Prefix: https://www.reddit.com/user/
+ Title: Reddit
+ Icon:
+ Class: fab fa-reddit fa-fw
+
+# 017: CodePen
+codepen:
+ Weight: 17
+ Prefix: https://codepen.io/
+ Title: CodePen
+ Icon:
+ Class: fab fa-codepen fa-fw
+
+# 018: freeCodeCamp
+freecodecamp:
+ Weight: 18
+ Prefix: https://freecodecamp.org/
+ Title: freeCodeCamp
+ Icon:
+ Class: fab fa-free-code-camp fa-fw
+
+# 019: Bitbucket
+bitbucket:
+ Weight: 19
+ Prefix: https://bitbucket.org/
+ Title: Bitbucket
+ Icon:
+ Class: fab fa-bitbucket fa-fw
+
+# 020: Stack Overflow
+stackoverflow:
+ Weight: 20
+ Prefix: https://stackoverflow.com/users/
+ Title: Stack Overflow
+ Icon:
+ Class: fab fa-stack-overflow fa-fw
+
+# 021: 微博
+weibo:
+ Weight: 21
+ Prefix: https://weibo.com/
+ Title: 微博
+ Icon:
+ Class: fab fa-weibo fa-fw
+
+# 022: OK.RU
+odnoklassniki:
+ Weight: 22
+ Prefix: https://ok.ru/
+ Title: OK.RU
+ Icon:
+ Class: fab fa-odnoklassniki fa-fw
+
+# 023: VK
+vk:
+ Weight: 23
+ Prefix: https://vk.com/
+ Title: VK
+ Icon:
+ Class: fab fa-vk fa-fw
+
+# 024: Flickr
+flickr:
+ Weight: 24
+ Prefix: https://www.flickr.com/photos/
+ Title: Flickr
+ Icon:
+ Class: fab fa-flickr fa-fw
+
+# 025: Xing
+xing:
+ Weight: 25
+ Prefix: https://www.xing.com/profile/
+ Title: Xing
+ Icon:
+ Class: fab fa-xing fa-fw
+
+# 026: Snapchat
+snapchat:
+ Weight: 26
+ Prefix: https://www.snapchat.com/add/
+ Title: Snapchat
+ Icon:
+ Class: fab fa-snapchat fa-fw
+
+# 027: SoundCloud
+soundcloud:
+ Weight: 27
+ Prefix: https://soundcloud.com/
+ Title: SoundCloud
+ Icon:
+ Class: fab fa-soundcloud fa-fw
+
+# 028: Spotify
+spotify:
+ Weight: 28
+ Prefix: https://open.spotify.com/user/
+ Title: Spotify
+ Icon:
+ Class: fab fa-spotify fa-fw
+
+# 029: Bandcamp
+bandcamp:
+ Weight: 29
+ Template: https://%v.bandcamp.com/
+ Title: Bandcamp
+ Icon:
+ Class: fab fa-bandcamp fa-fw
+
+# 030: PayPal
+paypal:
+ Weight: 30
+ Prefix: https://paypal.me/
+ Title: PayPal
+ Icon:
+ Class: fab fa-paypal fa-fw
+
+# 031: 500px
+fivehundredpx:
+ Weight: 31
+ Prefix: https://500px.com/
+ Title: 500px
+ Icon:
+ Class: fab fa-500px fa-fw
+
+# 032: Mix
+mix:
+ Weight: 32
+ Prefix: https://mix.com/
+ Title: Mix
+ Icon:
+ Class: fab fa-mix fa-fw
+
+# 033: Goodreads
+goodreads:
+ Weight: 33
+ Prefix: https://www.goodreads.com/user/show/
+ Title: Goodreads
+ Icon:
+ Class: fab fa-goodreads fa-fw
+
+# 034: Last.fm
+lastfm:
+ Weight: 34
+ Prefix: https://www.last.fm/user/
+ Title: Last.fm
+ Icon:
+ Class: fab fa-lastfm fa-fw
+
+# 035: Foursquare
+foursquare:
+ Weight: 35
+ Prefix: https://foursquare.com/
+ Title: Foursquare
+ Icon:
+ Class: fab fa-foursquare fa-fw
+
+# 036: Hacker News
+hackernews:
+ Weight: 36
+ Template: https://news.ycombinator.com/user?id=%v
+ Title: Hacker News
+ Icon:
+ Class: fab fa-hacker-news fa-fw
+
+# 037: Kickstarter
+kickstarter:
+ Weight: 37
+ Prefix: https://kickstarter.com/profile/
+ Title: Kickstarter
+ Icon:
+ Class: fab fa-kickstarter fa-fw
+
+# 038: Patreon
+patreon:
+ Weight: 38
+ Prefix: https://patreon.com/
+ Title: Patreon
+ Icon:
+ Class: fab fa-patreon fa-fw
+
+# 039: Steam
+steam:
+ Weight: 39
+ Prefix: https://steamcommunity.com/id/
+ Title: Steam
+ Icon:
+ Class: fab fa-steam fa-fw
+
+# 040: Twitch
+twitch:
+ Weight: 40
+ Prefix: https://www.twitch.tv/
+ Title: Twitch
+ Icon:
+ Class: fab fa-twitch fa-fw
+
+# 041: Strava
+strava:
+ Weight: 41
+ Prefix: https://www.strava.com/athletes/
+ Title: Strava
+ Icon:
+ Class: fab fa-strava fa-fw
+
+# 042: Skype
+skype:
+ Weight: 42
+ Template: "skype:"
+ Title: Skype
+ Icon:
+ Class: fab fa-skype fa-fw
+
+# 043: WhatsApp
+whatsapp:
+ Weight: 43
+ Prefix: https://wa.me/
+ Title: WhatsApp
+ Icon:
+ Class: fab fa-whatsapp fa-fw
+
+# 044: 知乎
+zhihu:
+ Weight: 44
+ Prefix: https://www.zhihu.com/people/
+ Title: 知乎
+ Icon:
+ Simpleicons: zhihu
+
+# 045: 豆瓣
+douban:
+ Weight: 45
+ Prefix: https://www.douban.com/people/
+ Title: 豆瓣
+ Icon:
+ Simpleicons: douban
+
+# 046: Angellist
+angellist:
+ Weight: 46
+ Prefix: https://angel.co/
+ Title: Angellist
+ Icon:
+ Class: fab fa-angellist fa-fw
+
+# 047: SlideShare
+slideshare:
+ Weight: 47
+ Prefix: https://slideshare.com/
+ Title: SlideShare
+ Icon:
+ Class: fab fa-slideshare fa-fw
+
+# 048: JSFiddle
+jsfiddle:
+ Weight: 48
+ Prefix: https://jsfiddle.com/
+ Title: JSFiddle
+ Icon:
+ Class: fab fa-jsfiddle fa-fw
+
+# 049: DeviantArt
+deviantart:
+ Weight: 49
+ Template: https://%v.deviantart.com/
+ Title: DeviantArt
+ Icon:
+ Class: fab fa-deviantart fa-fw
+
+# 050: Behance
+behance:
+ Weight: 50
+ Prefix: https://behance.net/
+ Title: Behance
+ Icon:
+ Class: fab fa-behance fa-fw
+
+# 051: Dribbble
+dribbble:
+ Weight: 51
+ Prefix: https://dribbble.com/
+ Title: Dribbble
+ Icon:
+ Class: fab fa-dribbble fa-fw
+
+# 052: WordPress
+wordpress:
+ Weight: 52
+ Template: https://%v.wordpress.com/
+ Title: WordPress
+ Icon:
+ Class: fab fa-wordpress fa-fw
+
+# 053: Vine
+vine:
+ Weight: 53
+ Prefix: https://vine.co/
+ Title: Vine
+ Icon:
+ Class: fab fa-vine fa-fw
+
+# 054: Google Scholar
+googlescholar:
+ Weight: 54
+ Template: https://scholar.google.com/citations?%v
+ Title: Google Scholar
+ Icon:
+ Simpleicons: googlescholar
+
+# 055: ResearchGate
+researchgate:
+ Weight: 55
+ Prefix: https://www.researchgate.net/profile/
+ Title: ResearchGate
+ Icon:
+ Class: fab fa-researchgate fa-fw
+
+# 056: Mastodon
+mastodon:
+ Weight: 56
+ Prefix: https://mastodon.social/
+ Title: Mastodon
+ Icon:
+ Class: fab fa-mastodon fa-fw
+
+# 057: Thingiverse
+thingiverse:
+ Weight: 57
+ Prefix: https://www.thingiverse.com/
+ Title: Thingiverse
+ Icon:
+ Simpleicons: thingiverse
+
+# 058: Dev.To
+devto:
+ Weight: 58
+ Prefix: https://dev.to/
+ Title: Dev.To
+ Icon:
+ Class: fab fa-dev fa-fw
+
+# 059: Gitea
+gitea:
+ Weight: 59
+ Title: Gitea
+ Icon:
+ Simpleicons: gitea
+
+# 060: XMPP
+xmpp:
+ Weight: 60
+ Template: xmpp:%v
+ Title: XMPP
+ Icon:
+ Simpleicons: xmpp
+
+# 061: Matrix
+matrix:
+ Weight: 61
+ Prefix: https://matrix.to/#/
+ Title: Matrix
+ Icon:
+ Simpleicons: matrix
+
+# 062: bilibili
+bilibili:
+ Weight: 62
+ Prefix: https://space.bilibili.com/
+ Title: bilibili
+ Icon:
+ Simpleicons: bilibili
+
+# 063: Email
+email:
+ Weight: 63
+ Template: mailto:%v
+ Title: Email
+ Icon:
+ Class: far fa-envelope fa-fw
+
+# 064: RSS
+rss:
+ Weight: 64
+ Url: /index.xml
+ Title: RSS
+ Newtab: true
+ Icon:
+ Class: fas fa-rss fa-fw
diff --git a/assets/font/demo.css b/assets/font/demo.css
deleted file mode 100644
index a67054a0..00000000
--- a/assets/font/demo.css
+++ /dev/null
@@ -1,539 +0,0 @@
-/* Logo 字体 */
-@font-face {
- font-family: "iconfont logo";
- src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834');
- src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'),
- url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'),
- url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'),
- url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg');
-}
-
-.logo {
- font-family: "iconfont logo";
- font-size: 160px;
- font-style: normal;
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
-}
-
-/* tabs */
-.nav-tabs {
- position: relative;
-}
-
-.nav-tabs .nav-more {
- position: absolute;
- right: 0;
- bottom: 0;
- height: 42px;
- line-height: 42px;
- color: #666;
-}
-
-#tabs {
- border-bottom: 1px solid #eee;
-}
-
-#tabs li {
- cursor: pointer;
- width: 100px;
- height: 40px;
- line-height: 40px;
- text-align: center;
- font-size: 16px;
- border-bottom: 2px solid transparent;
- position: relative;
- z-index: 1;
- margin-bottom: -1px;
- color: #666;
-}
-
-
-#tabs .active {
- border-bottom-color: #f00;
- color: #222;
-}
-
-.tab-container .content {
- display: none;
-}
-
-/* 页面布局 */
-.main {
- padding: 30px 100px;
- width: 960px;
- margin: 0 auto;
-}
-
-.main .logo {
- color: #333;
- text-align: left;
- margin-bottom: 30px;
- line-height: 1;
- height: 110px;
- margin-top: -50px;
- overflow: hidden;
- *zoom: 1;
-}
-
-.main .logo a {
- font-size: 160px;
- color: #333;
-}
-
-.helps {
- margin-top: 40px;
-}
-
-.helps pre {
- padding: 20px;
- margin: 10px 0;
- border: solid 1px #e7e1cd;
- background-color: #fffdef;
- overflow: auto;
-}
-
-.icon_lists {
- width: 100% !important;
- overflow: hidden;
- *zoom: 1;
-}
-
-.icon_lists li {
- width: 100px;
- margin-bottom: 10px;
- margin-right: 20px;
- text-align: center;
- list-style: none !important;
- cursor: default;
-}
-
-.icon_lists li .code-name {
- line-height: 1.2;
-}
-
-.icon_lists .icon {
- display: block;
- height: 100px;
- line-height: 100px;
- font-size: 42px;
- margin: 10px auto;
- color: #333;
- -webkit-transition: font-size 0.25s linear, width 0.25s linear;
- -moz-transition: font-size 0.25s linear, width 0.25s linear;
- transition: font-size 0.25s linear, width 0.25s linear;
-}
-
-.icon_lists .icon:hover {
- font-size: 100px;
-}
-
-.icon_lists .svg-icon {
- /* 通过设置 font-size 来改变图标大小 */
- width: 1em;
- /* 图标和文字相邻时,垂直对齐 */
- vertical-align: -0.15em;
- /* 通过设置 color 来改变 SVG 的颜色/fill */
- fill: currentColor;
- /* path 和 stroke 溢出 viewBox 部分在 IE 下会显示
- normalize.css 中也包含这行 */
- overflow: hidden;
-}
-
-.icon_lists li .name,
-.icon_lists li .code-name {
- color: #666;
-}
-
-/* markdown 样式 */
-.markdown {
- color: #666;
- font-size: 14px;
- line-height: 1.8;
-}
-
-.highlight {
- line-height: 1.5;
-}
-
-.markdown img {
- vertical-align: middle;
- max-width: 100%;
-}
-
-.markdown h1 {
- color: #404040;
- font-weight: 500;
- line-height: 40px;
- margin-bottom: 24px;
-}
-
-.markdown h2,
-.markdown h3,
-.markdown h4,
-.markdown h5,
-.markdown h6 {
- color: #404040;
- margin: 1.6em 0 0.6em 0;
- font-weight: 500;
- clear: both;
-}
-
-.markdown h1 {
- font-size: 28px;
-}
-
-.markdown h2 {
- font-size: 22px;
-}
-
-.markdown h3 {
- font-size: 16px;
-}
-
-.markdown h4 {
- font-size: 14px;
-}
-
-.markdown h5 {
- font-size: 12px;
-}
-
-.markdown h6 {
- font-size: 12px;
-}
-
-.markdown hr {
- height: 1px;
- border: 0;
- background: #e9e9e9;
- margin: 16px 0;
- clear: both;
-}
-
-.markdown p {
- margin: 1em 0;
-}
-
-.markdown>p,
-.markdown>blockquote,
-.markdown>.highlight,
-.markdown>ol,
-.markdown>ul {
- width: 80%;
-}
-
-.markdown ul>li {
- list-style: circle;
-}
-
-.markdown>ul li,
-.markdown blockquote ul>li {
- margin-left: 20px;
- padding-left: 4px;
-}
-
-.markdown>ul li p,
-.markdown>ol li p {
- margin: 0.6em 0;
-}
-
-.markdown ol>li {
- list-style: decimal;
-}
-
-.markdown>ol li,
-.markdown blockquote ol>li {
- margin-left: 20px;
- padding-left: 4px;
-}
-
-.markdown code {
- margin: 0 3px;
- padding: 0 5px;
- background: #eee;
- border-radius: 3px;
-}
-
-.markdown strong,
-.markdown b {
- font-weight: 600;
-}
-
-.markdown>table {
- border-collapse: collapse;
- border-spacing: 0px;
- empty-cells: show;
- border: 1px solid #e9e9e9;
- width: 95%;
- margin-bottom: 24px;
-}
-
-.markdown>table th {
- white-space: nowrap;
- color: #333;
- font-weight: 600;
-}
-
-.markdown>table th,
-.markdown>table td {
- border: 1px solid #e9e9e9;
- padding: 8px 16px;
- text-align: left;
-}
-
-.markdown>table th {
- background: #F7F7F7;
-}
-
-.markdown blockquote {
- font-size: 90%;
- color: #999;
- border-left: 4px solid #e9e9e9;
- padding-left: 0.8em;
- margin: 1em 0;
-}
-
-.markdown blockquote p {
- margin: 0;
-}
-
-.markdown .anchor {
- opacity: 0;
- transition: opacity 0.3s ease;
- margin-left: 8px;
-}
-
-.markdown .waiting {
- color: #ccc;
-}
-
-.markdown h1:hover .anchor,
-.markdown h2:hover .anchor,
-.markdown h3:hover .anchor,
-.markdown h4:hover .anchor,
-.markdown h5:hover .anchor,
-.markdown h6:hover .anchor {
- opacity: 1;
- display: inline-block;
-}
-
-.markdown>br,
-.markdown>p>br {
- clear: both;
-}
-
-
-.hljs {
- display: block;
- background: white;
- padding: 0.5em;
- color: #333333;
- overflow-x: auto;
-}
-
-.hljs-comment,
-.hljs-meta {
- color: #969896;
-}
-
-.hljs-string,
-.hljs-variable,
-.hljs-template-variable,
-.hljs-strong,
-.hljs-emphasis,
-.hljs-quote {
- color: #df5000;
-}
-
-.hljs-keyword,
-.hljs-selector-tag,
-.hljs-type {
- color: #a71d5d;
-}
-
-.hljs-literal,
-.hljs-symbol,
-.hljs-bullet,
-.hljs-attribute {
- color: #0086b3;
-}
-
-.hljs-section,
-.hljs-name {
- color: #63a35c;
-}
-
-.hljs-tag {
- color: #333333;
-}
-
-.hljs-title,
-.hljs-attr,
-.hljs-selector-id,
-.hljs-selector-class,
-.hljs-selector-attr,
-.hljs-selector-pseudo {
- color: #795da3;
-}
-
-.hljs-addition {
- color: #55a532;
- background-color: #eaffea;
-}
-
-.hljs-deletion {
- color: #bd2c00;
- background-color: #ffecec;
-}
-
-.hljs-link {
- text-decoration: underline;
-}
-
-/* 代码高亮 */
-/* PrismJS 1.15.0
-https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */
-/**
- * prism.js default theme for JavaScript, CSS and HTML
- * Based on dabblet (http://dabblet.com)
- * @author Lea Verou
- */
-code[class*="language-"],
-pre[class*="language-"] {
- color: black;
- background: none;
- text-shadow: 0 1px white;
- font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
- text-align: left;
- white-space: pre;
- word-spacing: normal;
- word-break: normal;
- word-wrap: normal;
- line-height: 1.5;
-
- -moz-tab-size: 4;
- -o-tab-size: 4;
- tab-size: 4;
-
- -webkit-hyphens: none;
- -moz-hyphens: none;
- -ms-hyphens: none;
- hyphens: none;
-}
-
-pre[class*="language-"]::-moz-selection,
-pre[class*="language-"] ::-moz-selection,
-code[class*="language-"]::-moz-selection,
-code[class*="language-"] ::-moz-selection {
- text-shadow: none;
- background: #b3d4fc;
-}
-
-pre[class*="language-"]::selection,
-pre[class*="language-"] ::selection,
-code[class*="language-"]::selection,
-code[class*="language-"] ::selection {
- text-shadow: none;
- background: #b3d4fc;
-}
-
-@media print {
-
- code[class*="language-"],
- pre[class*="language-"] {
- text-shadow: none;
- }
-}
-
-/* Code blocks */
-pre[class*="language-"] {
- padding: 1em;
- margin: .5em 0;
- overflow: auto;
-}
-
-:not(pre)>code[class*="language-"],
-pre[class*="language-"] {
- background: #f5f2f0;
-}
-
-/* Inline code */
-:not(pre)>code[class*="language-"] {
- padding: .1em;
- border-radius: .3em;
- white-space: normal;
-}
-
-.token.comment,
-.token.prolog,
-.token.doctype,
-.token.cdata {
- color: slategray;
-}
-
-.token.punctuation {
- color: #999;
-}
-
-.namespace {
- opacity: .7;
-}
-
-.token.property,
-.token.tag,
-.token.boolean,
-.token.number,
-.token.constant,
-.token.symbol,
-.token.deleted {
- color: #905;
-}
-
-.token.selector,
-.token.attr-name,
-.token.string,
-.token.char,
-.token.builtin,
-.token.inserted {
- color: #690;
-}
-
-.token.operator,
-.token.entity,
-.token.url,
-.language-css .token.string,
-.style .token.string {
- color: #9a6e3a;
- background: hsla(0, 0%, 100%, .5);
-}
-
-.token.atrule,
-.token.attr-value,
-.token.keyword {
- color: #07a;
-}
-
-.token.function,
-.token.class-name {
- color: #DD4A68;
-}
-
-.token.regex,
-.token.important,
-.token.variable {
- color: #e90;
-}
-
-.token.important,
-.token.bold {
- font-weight: bold;
-}
-
-.token.italic {
- font-style: italic;
-}
-
-.token.entity {
- cursor: help;
-}
diff --git a/assets/font/demo_index.html b/assets/font/demo_index.html
deleted file mode 100644
index 0c3d3716..00000000
--- a/assets/font/demo_index.html
+++ /dev/null
@@ -1,1573 +0,0 @@
-
-
-
-
- IconFont Demo
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - Unicode
- - Font class
- - Symbol
-
-
-
查看项目
-
-
-
-
-
-
- -
-
-
weibo
- 
-
-
- -
-
-
codepen
- 
-
-
- -
-
-
spotify
- 
-
-
- -
-
-
reddit
- 
-
-
- -
-
-
icon-left
- 
-
-
- -
-
-
icon-right
- 
-
-
- -
-
-
deviantart
- 
-
-
- -
-
-
dribbble
- 
-
-
- -
-
-
zhihu
- 
-
-
- -
-
-
wordpress
- 
-
-
- -
-
-
twitter
- 
-
-
- -
-
-
whatsapp
- 
-
-
- -
-
-
facebook
- 
-
-
- -
-
-
gitlab
- 
-
-
- -
-
-
medium
- 
-
-
- -
-
-
steam
- 
-
-
- -
-
-
jsfiddle
- 
-
-
- -
-
-
soundcloud
- 
-
-
- -
-
-
y-combinator
- 
-
-
- -
-
-
linkedin
- 
-
-
- -
-
-
pinterest
- 
-
-
- -
-
-
500px
- 
-
-
- -
-
-
bitbucket
- 
-
-
- -
-
-
instagram
- 
-
-
- -
-
-
slideshare
- 
-
-
- -
-
-
twitch
- 
-
-
- -
-
-
vine
- 
-
-
- -
-
-
xing
- 
-
-
- -
-
-
snapchat
- 
-
-
- -
-
-
douban
- 
-
-
- -
-
-
github
- 
-
-
- -
-
-
t
- 
-
-
- -
-
-
mail 2
- 
-
-
- -
-
-
behance
- 
-
-
- -
-
-
POP_last.fm
- 
-
-
- -
-
-
odnoklassniki
- 
-
-
- -
-
-
strava
- 
-
-
- -
-
-
goodreads
- 
-
-
- -
-
-
kickstarter
- 
-
-
- -
-
-
bandcamp
- 
-
-
- -
-
-
flickr
- 
-
-
- -
-
-
keybase
- 
-
-
- -
-
-
paypal
- 
-
-
- -
-
-
mastodon
- 
-
-
- -
-
-
folder
- 
-
-
- -
-
-
skype
- 
-
-
- -
-
-
icon-tag
- 
-
-
- -
-
-
sun
- 
-
-
- -
-
-
timer
- 
-
-
- -
-
-
researchgate
- 
-
-
- -
-
-
angellist
- 
-
-
- -
-
-
mix
- 
-
-
- -
-
-
patreon
- 
-
-
- -
-
-
quora
- 
-
-
- -
-
-
stack-overflow
- 
-
-
- -
-
-
telegram-plane
- 
-
-
- -
-
-
tumblr
- 
-
-
- -
-
-
vk
- 
-
-
- -
-
-
youtube
- 
-
-
- -
-
-
Google scholar
- 
-
-
- -
-
-
foursquare
- 
-
-
-
-
-
Unicode 引用
-
-
-
Unicode 是字体在网页端最原始的应用方式,特点是:
-
- - 兼容性最好,支持 IE6+,及所有现代浏览器。
- - 支持按字体的方式去动态调整图标大小,颜色等等。
- - 但是因为是字体,所以不支持多色。只能使用平台里单色的图标,就算项目里有多色图标也会自动去色。
-
-
- 注意:新版 iconfont 支持多色图标,这些多色图标在 Unicode 模式下将不能使用,如果有需求建议使用symbol 的引用方式
-
-
Unicode 使用步骤如下:
-
第一步:拷贝项目下面生成的 @font-face
-
@font-face {
- font-family: 'iconfont';
- src: url('iconfont.eot');
- src: url('iconfont.eot?#iefix') format('embedded-opentype'),
- url('iconfont.woff2') format('woff2'),
- url('iconfont.woff') format('woff'),
- url('iconfont.ttf') format('truetype'),
- url('iconfont.svg#iconfont') format('svg');
-}
-
-
第二步:定义使用 iconfont 的样式
-
.iconfont {
- font-family: "iconfont" !important;
- font-size: 16px;
- font-style: normal;
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
-}
-
-
第三步:挑选相应图标并获取字体编码,应用于页面
-
-<span class="iconfont">3</span>
-
-
- "iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。
-
-
-
-
-
-
- -
-
-
- weibo
-
- .icon-weibo
-
-
-
- -
-
-
- codepen
-
- .icon-codepen
-
-
-
- -
-
-
- spotify
-
- .icon-spotify
-
-
-
- -
-
-
- reddit
-
- .icon-reddit
-
-
-
- -
-
-
- icon-left
-
- .icon-dajiantou
-
-
-
- -
-
-
- icon-right
-
- .icon-xiaojiantou
-
-
-
- -
-
-
- deviantart
-
- .icon-deviantart
-
-
-
- -
-
-
- dribbble
-
- .icon-dribbble
-
-
-
- -
-
-
- zhihu
-
- .icon-zhihu
-
-
-
- -
-
-
- wordpress
-
- .icon-wordpress
-
-
-
- -
-
-
- twitter
-
- .icon-twitter
-
-
-
- -
-
-
- whatsapp
-
- .icon-whatsapp
-
-
-
- -
-
-
- facebook
-
- .icon-facebook
-
-
-
- -
-
-
- gitlab
-
- .icon-gitlab
-
-
-
- -
-
-
- medium
-
- .icon-medium
-
-
-
- -
-
-
- steam
-
- .icon-steam
-
-
-
- -
-
-
- jsfiddle
-
- .icon-jsfiddle
-
-
-
- -
-
-
- soundcloud
-
- .icon-soundcloud
-
-
-
- -
-
-
- y-combinator
-
- .icon-ycombinator
-
-
-
- -
-
-
- linkedin
-
- .icon-linkedin
-
-
-
- -
-
-
- pinterest
-
- .icon-pinterest
-
-
-
- -
-
-
- 500px
-
- .icon-500px
-
-
-
- -
-
-
- bitbucket
-
- .icon-bitbucket
-
-
-
- -
-
-
- instagram
-
- .icon-instagram
-
-
-
- -
-
-
- slideshare
-
- .icon-slideshare
-
-
-
- -
-
-
- twitch
-
- .icon-twitch
-
-
-
- -
-
-
- vine
-
- .icon-vine
-
-
-
- -
-
-
- xing
-
- .icon-xing
-
-
-
- -
-
-
- snapchat
-
- .icon-snapchat
-
-
-
- -
-
-
- douban
-
- .icon-douban
-
-
-
- -
-
-
- github
-
- .icon-github
-
-
-
- -
-
-
- t
-
- .icon-t
-
-
-
- -
-
-
- mail 2
-
- .icon-mail
-
-
-
- -
-
-
- behance
-
- .icon-behance
-
-
-
- -
-
-
- POP_last.fm
-
- .icon-POP_lastfm
-
-
-
- -
-
-
- odnoklassniki
-
- .icon-odnoklassniki
-
-
-
- -
-
-
- strava
-
- .icon-strava
-
-
-
- -
-
-
- goodreads
-
- .icon-goodreads
-
-
-
- -
-
-
- kickstarter
-
- .icon-kickstarter
-
-
-
- -
-
-
- bandcamp
-
- .icon-bandcamp
-
-
-
- -
-
-
- flickr
-
- .icon-flickr
-
-
-
- -
-
-
- keybase
-
- .icon-keybase
-
-
-
- -
-
-
- paypal
-
- .icon-paypal
-
-
-
- -
-
-
- mastodon
-
- .icon-mastodon
-
-
-
- -
-
-
- folder
-
- .icon-folder
-
-
-
- -
-
-
- skype
-
- .icon-skype
-
-
-
- -
-
-
- icon-tag
-
- .icon-icon-tag
-
-
-
- -
-
-
- sun
-
- .icon-sun
-
-
-
- -
-
-
- timer
-
- .icon-timer
-
-
-
- -
-
-
- researchgate
-
- .icon-researchgate
-
-
-
- -
-
-
- angellist
-
- .icon-angellist
-
-
-
- -
-
-
- mix
-
- .icon-mix
-
-
-
- -
-
-
- patreon
-
- .icon-patreon
-
-
-
- -
-
-
- quora
-
- .icon-quora
-
-
-
- -
-
-
- stack-overflow
-
- .icon-stack-overflow
-
-
-
- -
-
-
- telegram-plane
-
- .icon-telegram-plane
-
-
-
- -
-
-
- tumblr
-
- .icon-tumblr
-
-
-
- -
-
-
- vk
-
- .icon-vk
-
-
-
- -
-
-
- youtube
-
- .icon-youtube
-
-
-
- -
-
-
- Google scholar
-
- .icon-Googlescholar
-
-
-
- -
-
-
- foursquare
-
- .icon-foursquare
-
-
-
-
-
-
font-class 引用
-
-
-
font-class 是 Unicode 使用方式的一种变种,主要是解决 Unicode 书写不直观,语意不明确的问题。
-
与 Unicode 使用方式相比,具有如下特点:
-
- - 兼容性良好,支持 IE8+,及所有现代浏览器。
- - 相比于 Unicode 语意明确,书写更直观。可以很容易分辨这个 icon 是什么。
- - 因为使用 class 来定义图标,所以当要替换图标时,只需要修改 class 里面的 Unicode 引用。
- - 不过因为本质上还是使用的字体,所以多色图标还是不支持的。
-
-
使用步骤如下:
-
第一步:引入项目下面生成的 fontclass 代码:
-
<link rel="stylesheet" href="./iconfont.css">
-
-
第二步:挑选相应图标并获取类名,应用于页面:
-
<span class="iconfont icon-xxx"></span>
-
-
- "
- iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。
-
-
-
-
-
-
- -
-
-
weibo
- #icon-weibo
-
-
- -
-
-
codepen
- #icon-codepen
-
-
- -
-
-
spotify
- #icon-spotify
-
-
- -
-
-
reddit
- #icon-reddit
-
-
- -
-
-
icon-left
- #icon-dajiantou
-
-
- -
-
-
icon-right
- #icon-xiaojiantou
-
-
- -
-
-
deviantart
- #icon-deviantart
-
-
- -
-
-
dribbble
- #icon-dribbble
-
-
- -
-
-
zhihu
- #icon-zhihu
-
-
- -
-
-
wordpress
- #icon-wordpress
-
-
- -
-
-
twitter
- #icon-twitter
-
-
- -
-
-
whatsapp
- #icon-whatsapp
-
-
- -
-
-
facebook
- #icon-facebook
-
-
- -
-
-
gitlab
- #icon-gitlab
-
-
- -
-
-
medium
- #icon-medium
-
-
- -
-
-
steam
- #icon-steam
-
-
- -
-
-
jsfiddle
- #icon-jsfiddle
-
-
- -
-
-
soundcloud
- #icon-soundcloud
-
-
- -
-
-
y-combinator
- #icon-ycombinator
-
-
- -
-
-
linkedin
- #icon-linkedin
-
-
- -
-
-
pinterest
- #icon-pinterest
-
-
- -
-
-
500px
- #icon-500px
-
-
- -
-
-
bitbucket
- #icon-bitbucket
-
-
- -
-
-
instagram
- #icon-instagram
-
-
- -
-
-
slideshare
- #icon-slideshare
-
-
- -
-
-
twitch
- #icon-twitch
-
-
- -
-
-
vine
- #icon-vine
-
-
- -
-
-
xing
- #icon-xing
-
-
- -
-
-
snapchat
- #icon-snapchat
-
-
- -
-
-
douban
- #icon-douban
-
-
- -
-
-
github
- #icon-github
-
-
- -
-
-
t
- #icon-t
-
-
- -
-
-
mail 2
- #icon-mail
-
-
- -
-
-
behance
- #icon-behance
-
-
- -
-
-
POP_last.fm
- #icon-POP_lastfm
-
-
- -
-
-
odnoklassniki
- #icon-odnoklassniki
-
-
- -
-
-
strava
- #icon-strava
-
-
- -
-
-
goodreads
- #icon-goodreads
-
-
- -
-
-
kickstarter
- #icon-kickstarter
-
-
- -
-
-
bandcamp
- #icon-bandcamp
-
-
- -
-
-
flickr
- #icon-flickr
-
-
- -
-
-
keybase
- #icon-keybase
-
-
- -
-
-
paypal
- #icon-paypal
-
-
- -
-
-
mastodon
- #icon-mastodon
-
-
- -
-
-
folder
- #icon-folder
-
-
- -
-
-
skype
- #icon-skype
-
-
- -
-
-
icon-tag
- #icon-icon-tag
-
-
- -
-
-
sun
- #icon-sun
-
-
- -
-
-
timer
- #icon-timer
-
-
- -
-
-
researchgate
- #icon-researchgate
-
-
- -
-
-
angellist
- #icon-angellist
-
-
- -
-
-
mix
- #icon-mix
-
-
- -
-
-
patreon
- #icon-patreon
-
-
- -
-
-
quora
- #icon-quora
-
-
- -
-
-
stack-overflow
- #icon-stack-overflow
-
-
- -
-
-
telegram-plane
- #icon-telegram-plane
-
-
- -
-
-
tumblr
- #icon-tumblr
-
-
- -
-
-
vk
- #icon-vk
-
-
- -
-
-
youtube
- #icon-youtube
-
-
- -
-
-
Google scholar
- #icon-Googlescholar
-
-
- -
-
-
foursquare
- #icon-foursquare
-
-
-
-
-
Symbol 引用
-
-
-
这是一种全新的使用方式,应该说这才是未来的主流,也是平台目前推荐的用法。相关介绍可以参考这篇文章
- 这种用法其实是做了一个 SVG 的集合,与另外两种相比具有如下特点:
-
- - 支持多色图标了,不再受单色限制。
- - 通过一些技巧,支持像字体那样,通过
font-size
, color
来调整样式。
- - 兼容性较差,支持 IE9+,及现代浏览器。
- - 浏览器渲染 SVG 的性能一般,还不如 png。
-
-
使用步骤如下:
-
第一步:引入项目下面生成的 symbol 代码:
-
<script src="./iconfont.js"></script>
-
-
第二步:加入通用 CSS 代码(引入一次就行):
-
<style>
-.icon {
- width: 1em;
- height: 1em;
- vertical-align: -0.15em;
- fill: currentColor;
- overflow: hidden;
-}
-</style>
-
-
第三步:挑选相应图标并获取类名,应用于页面:
-
<svg class="icon" aria-hidden="true">
- <use xlink:href="#icon-xxx"></use>
-</svg>
-
-
-
-
-
-
-
-
-
diff --git a/assets/font/iconfont.css b/assets/font/iconfont.css
deleted file mode 100644
index 5a0abc6d..00000000
--- a/assets/font/iconfont.css
+++ /dev/null
@@ -1,261 +0,0 @@
-@font-face {font-family: "iconfont";
- src: url('iconfont.eot?t=1553450864757'); /* IE9 */
- src: url('iconfont.eot?t=1553450864757#iefix') format('embedded-opentype'), /* IE6-IE8 */
- url('data:application/x-font-woff2;charset=utf-8;base64,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') format('woff2'),
- url('iconfont.woff?t=1553450864757') format('woff'),
- url('iconfont.ttf?t=1553450864757') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+ */
- url('iconfont.svg?t=1553450864757#iconfont') format('svg'); /* iOS 4.1- */
-}
-
-.iconfont {
- font-family: "iconfont" !important;
- font-size: 16px;
- font-style: normal;
- -webkit-font-smoothing: antialiased;
- -moz-osx-font-smoothing: grayscale;
-}
-
-.icon-weibo:before {
- content: "\e6c4";
-}
-
-.icon-codepen:before {
- content: "\ea79";
-}
-
-.icon-spotify:before {
- content: "\ebf4";
-}
-
-.icon-reddit:before {
- content: "\e761";
-}
-
-.icon-dajiantou:before {
- content: "\e642";
-}
-
-.icon-xiaojiantou:before {
- content: "\e666";
-}
-
-.icon-deviantart:before {
- content: "\e6c6";
-}
-
-.icon-dribbble:before {
- content: "\e6d8";
-}
-
-.icon-zhihu:before {
- content: "\e6ba";
-}
-
-.icon-wordpress:before {
- content: "\e848";
-}
-
-.icon-twitter:before {
- content: "\eb2a";
-}
-
-.icon-whatsapp:before {
- content: "\eb92";
-}
-
-.icon-facebook:before {
- content: "\e638";
-}
-
-.icon-gitlab:before {
- content: "\e719";
-}
-
-.icon-medium:before {
- content: "\e783";
-}
-
-.icon-steam:before {
- content: "\e811";
-}
-
-.icon-jsfiddle:before {
- content: "\e752";
-}
-
-.icon-soundcloud:before {
- content: "\e81d";
-}
-
-.icon-ycombinator:before {
- content: "\eb32";
-}
-
-.icon-linkedin:before {
- content: "\e696";
-}
-
-.icon-pinterest:before {
- content: "\e697";
-}
-
-.icon-500px:before {
- content: "\e607";
-}
-
-.icon-bitbucket:before {
- content: "\e645";
-}
-
-.icon-instagram:before {
- content: "\e6b6";
-}
-
-.icon-slideshare:before {
- content: "\e6fd";
-}
-
-.icon-twitch:before {
- content: "\e72a";
-}
-
-.icon-vine:before {
- content: "\e735";
-}
-
-.icon-xing:before {
- content: "\e741";
-}
-
-.icon-snapchat:before {
- content: "\e8b2";
-}
-
-.icon-douban:before {
- content: "\e688";
-}
-
-.icon-github:before {
- content: "\e691";
-}
-
-.icon-t:before {
- content: "\e601";
-}
-
-.icon-mail:before {
- content: "\e622";
-}
-
-.icon-behance:before {
- content: "\e621";
-}
-
-.icon-POP_lastfm:before {
- content: "\e681";
-}
-
-.icon-odnoklassniki:before {
- content: "\e624";
-}
-
-.icon-strava:before {
- content: "\e627";
-}
-
-.icon-goodreads:before {
- content: "\e62a";
-}
-
-.icon-kickstarter:before {
- content: "\e644";
-}
-
-.icon-bandcamp:before {
- content: "\e64b";
-}
-
-.icon-flickr:before {
- content: "\e660";
-}
-
-.icon-keybase:before {
- content: "\e665";
-}
-
-.icon-paypal:before {
- content: "\e667";
-}
-
-.icon-mastodon:before {
- content: "\e94a";
-}
-
-.icon-folder:before {
- content: "\e7d1";
-}
-
-.icon-skype:before {
- content: "\e87d";
-}
-
-.icon-icon-tag:before {
- content: "\e632";
-}
-
-.icon-sun:before {
- content: "\e684";
-}
-
-.icon-timer:before {
- content: "\e664";
-}
-
-.icon-researchgate:before {
- content: "\e693";
-}
-
-.icon-angellist:before {
- content: "\f163";
-}
-
-.icon-mix:before {
- content: "\f1f5";
-}
-
-.icon-patreon:before {
- content: "\f209";
-}
-
-.icon-quora:before {
- content: "\f218";
-}
-
-.icon-stack-overflow:before {
- content: "\f239";
-}
-
-.icon-telegram-plane:before {
- content: "\f246";
-}
-
-.icon-tumblr:before {
- content: "\f24a";
-}
-
-.icon-vk:before {
- content: "\f25e";
-}
-
-.icon-youtube:before {
- content: "\e765";
-}
-
-.icon-Googlescholar:before {
- content: "\e736";
-}
-
-.icon-foursquare:before {
- content: "\e8ed";
-}
-
diff --git a/assets/font/iconfont.eot b/assets/font/iconfont.eot
deleted file mode 100644
index 67fc843b..00000000
Binary files a/assets/font/iconfont.eot and /dev/null differ
diff --git a/assets/font/iconfont.js b/assets/font/iconfont.js
deleted file mode 100644
index e34671f0..00000000
--- a/assets/font/iconfont.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(h){var t,c='',l=(t=document.getElementsByTagName("script"))[t.length-1].getAttribute("data-injectcss");if(l&&!h.__iconfont__svg__cssinject__){h.__iconfont__svg__cssinject__=!0;try{document.write("")}catch(t){console&&console.log(t)}}!function(t){if(document.addEventListener)if(~["complete","loaded","interactive"].indexOf(document.readyState))setTimeout(t,0);else{var l=function(){document.removeEventListener("DOMContentLoaded",l,!1),t()};document.addEventListener("DOMContentLoaded",l,!1)}else document.attachEvent&&(c=t,o=h.document,a=!1,i=function(){a||(a=!0,c())},(q=function(){try{o.documentElement.doScroll("left")}catch(t){return void setTimeout(q,50)}i()})(),o.onreadystatechange=function(){"complete"==o.readyState&&(o.onreadystatechange=null,i())});var c,o,a,i,q}(function(){var t,l;(t=document.createElement("div")).innerHTML=c,c=null,(l=t.getElementsByTagName("svg")[0])&&(l.setAttribute("aria-hidden","true"),l.style.position="absolute",l.style.width=0,l.style.height=0,l.style.overflow="hidden",function(t,l){l.firstChild?function(t,l){l.parentNode.insertBefore(t,l)}(t,l.firstChild):l.appendChild(t)}(l,document.body))})}(window);
\ No newline at end of file
diff --git a/assets/font/iconfont.svg b/assets/font/iconfont.svg
deleted file mode 100644
index 473d7199..00000000
--- a/assets/font/iconfont.svg
+++ /dev/null
@@ -1,209 +0,0 @@
-
-
-
-
diff --git a/assets/font/iconfont.ttf b/assets/font/iconfont.ttf
deleted file mode 100644
index 6d75545d..00000000
Binary files a/assets/font/iconfont.ttf and /dev/null differ
diff --git a/assets/font/iconfont.woff b/assets/font/iconfont.woff
deleted file mode 100644
index c0047808..00000000
Binary files a/assets/font/iconfont.woff and /dev/null differ
diff --git a/assets/font/iconfont.woff2 b/assets/font/iconfont.woff2
deleted file mode 100644
index a16a19e4..00000000
Binary files a/assets/font/iconfont.woff2 and /dev/null differ
diff --git a/assets/js/dynamic.to.top.min.js b/assets/js/dynamic.to.top.min.js
deleted file mode 100755
index 98c62c5f..00000000
--- a/assets/js/dynamic.to.top.min.js
+++ /dev/null
@@ -1,13 +0,0 @@
-/*
- * Dynamic To Top Plugin
- * http://www.mattvarone.com
- *
- * By Matt Varone
- * @sksmatt
- *
- */
-var mv_dynamic_to_top = {"text":"0","version":"0","min":"200","speed":"300","easing":"easeInOutExpo","margin":"20"};
-(function($,mv_dynamic_to_top){jQuery.fn.DynamicToTop=function(options){var defaults={text:mv_dynamic_to_top.text,min:parseInt(mv_dynamic_to_top.min,10),fade_in:600,fade_out:400,speed:parseInt(mv_dynamic_to_top.speed,10),easing:mv_dynamic_to_top.easing,version:mv_dynamic_to_top.version,id:'dynamic-to-top'},settings=$.extend(defaults,options);if(settings.version===""||settings.version==='0'){settings.text=' ';}
-if(!$.isFunction(settings.easing)){settings.easing='linear';}
-var $toTop=$('').html(settings.text);$toTop.hide().appendTo('body').click(function(){$('html, body').stop().animate({scrollTop:0},settings.speed,settings.easing);return false;});$(window).scroll(function(){var sd=jQuery(window).scrollTop();if(typeof document.body.style.maxHeight==="undefined"){$toTop.css({'position':'absolute','top':sd+$(window).height()-mv_dynamic_to_top.margin});}
-if(sd>settings.min){$toTop.fadeIn(settings.fade_in);}else{$toTop.fadeOut(settings.fade_out);}});};$('body').DynamicToTop();})(jQuery,mv_dynamic_to_top);
\ No newline at end of file
diff --git a/assets/js/jquery.min.js b/assets/js/jquery.min.js
deleted file mode 100644
index b0614034..00000000
--- a/assets/js/jquery.min.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */
-!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,""],col:[2,""],tr:[2,""],td:[3,""],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 049?function(){l(t,{timeout:n});if(n!==H.ricTimeout){n=H.ricTimeout}}:te(function(){I(t)},true);return function(e){var t;if(e=e===true){n=33}if(i){return}i=true;t=r-(f.now()-a);if(t<0){t=0}if(e||t<9){s()}else{I(s,t)}}},ae=function(e){var t,i;var a=99;var r=function(){t=null;e()};var n=function(){var e=f.now()-i;if(e0;if(r&&Z(a,"overflow")!="visible"){i=a.getBoundingClientRect();r=C>i.left&&pi.top-1&&g500&&O.clientWidth>500?500:370:H.expand;k._defEx=u;f=u*H.expFactor;c=H.hFac;A=null;if(w2&&h>2&&!D.hidden){w=f;M=0}else if(h>1&&M>1&&N<6){w=u}else{w=_}}if(o!==n){y=innerWidth+n*c;z=innerHeight+n;s=n*-1;o=n}i=d[t].getBoundingClientRect();if((b=i.bottom)>=s&&(g=i.top)<=z&&(C=i.right)>=s*c&&(p=i.left)<=y&&(b||C||p||g)&&(H.loadHidden||W(d[t]))&&(m&&N<3&&!l&&(h<3||M<4)||S(d[t],n))){R(d[t]);r=true;if(N>9){break}}else if(!r&&m&&!a&&N<4&&M<4&&h>2&&(v[0]||H.preloadAfterLoad)&&(v[0]||!l&&(b||C||p||g||d[t][$](H.sizesAttr)!="auto"))){a=v[0]||d[t]}}if(a&&!r){R(a)}}};var i=ie(t);var B=function(e){var t=e.target;if(t._lazyCache){delete t._lazyCache;return}x(e);K(t,H.loadedClass);Q(t,H.loadingClass);V(t,L);X(t,"lazyloaded")};var a=te(B);var L=function(e){a({target:e.target})};var T=function(t,i){try{t.contentWindow.location.replace(i)}catch(e){t.src=i}};var F=function(e){var t;var i=e[$](H.srcsetAttr);if(t=H.customMedia[e[$]("data-media")||e[$]("media")]){e.setAttribute("media",t)}if(i){e.setAttribute("srcset",i)}};var s=te(function(t,e,i,a,r){var n,s,l,o,u,f;if(!(u=X(t,"lazybeforeunveil",e)).defaultPrevented){if(a){if(i){K(t,H.autosizesClass)}else{t.setAttribute("sizes",a)}}s=t[$](H.srcsetAttr);n=t[$](H.srcAttr);if(r){l=t.parentNode;o=l&&j.test(l.nodeName||"")}f=e.firesLoad||"src"in t&&(s||n||o);u={target:t};K(t,H.loadingClass);if(f){clearTimeout(c);c=I(x,2500);V(t,L,true)}if(o){G.call(l.getElementsByTagName("source"),F)}if(s){t.setAttribute("srcset",s)}else if(n&&!o){if(d.test(t.nodeName)){T(t,n)}else{t.src=n}}if(r&&(s||o)){Y(t,{src:n})}}if(t._lazyRace){delete t._lazyRace}Q(t,H.lazyClass);ee(function(){var e=t.complete&&t.naturalWidth>1;if(!f||e){if(e){K(t,"ls-is-cached")}B(u);t._lazyCache=true;I(function(){if("_lazyCache"in t){delete t._lazyCache}},9)}if(t.loading=="lazy"){N--}},true)});var R=function(e){if(e._lazyRace){return}var t;var i=n.test(e.nodeName);var a=i&&(e[$](H.sizesAttr)||e[$]("sizes"));var r=a=="auto";if((r||!m)&&i&&(e[$]("src")||e.srcset)&&!e.complete&&!J(e,H.errorClass)&&J(e,H.lazyClass)){return}t=X(e,"lazyunveilread").detail;if(r){re.updateElem(e,true,e.offsetWidth)}e._lazyRace=true;N++;s(e,t,r,a,i)};var r=ae(function(){H.loadMode=3;i()});var l=function(){if(H.loadMode==3){H.loadMode=2}r()};var o=function(){if(m){return}if(f.now()-e<999){I(o,999);return}m=true;H.loadMode=3;i();q("scroll",l,true)};return{_:function(){e=f.now();k.elements=D.getElementsByClassName(H.lazyClass);v=D.getElementsByClassName(H.lazyClass+" "+H.preloadClass);q("scroll",i,true);q("resize",i,true);q("pageshow",function(e){if(e.persisted){var t=D.querySelectorAll("."+H.loadingClass);if(t.length&&t.forEach){U(function(){t.forEach(function(e){if(e.complete){R(e)}})})}}});if(u.MutationObserver){new MutationObserver(i).observe(O,{childList:true,subtree:true,attributes:true})}else{O[P]("DOMNodeInserted",i,true);O[P]("DOMAttrModified",i,true);setInterval(i,999)}q("hashchange",i,true);["focus","mouseover","click","load","transitionend","animationend"].forEach(function(e){D[P](e,i,true)});if(/d$|^c/.test(D.readyState)){o()}else{q("load",o);D[P]("DOMContentLoaded",i);I(o,2e4)}if(k.elements.length){t();ee._lsFlush()}else{i()}},checkElems:i,unveil:R,_aLSL:l}}(),re=function(){var i;var n=te(function(e,t,i,a){var r,n,s;e._lazysizesWidth=a;a+="px";e.setAttribute("sizes",a);if(j.test(t.nodeName||"")){r=t.getElementsByTagName("source");for(n=0,s=r.length;nb.$items.length&&(b.s.preload=b.$items.length);var c=window.location.hash;c.indexOf("lg="+this.s.galleryId)>0&&(b.index=parseInt(c.split("&slide=")[1],10),a("body").addClass("lg-from-hash"),a("body").hasClass("lg-on")||(setTimeout(function(){b.build(b.index)}),a("body").addClass("lg-on"))),b.s.dynamic?(b.$el.trigger("onBeforeOpen.lg"),b.index=b.s.index||0,a("body").hasClass("lg-on")||setTimeout(function(){b.build(b.index),a("body").addClass("lg-on")})):b.$items.on("click.lgcustom",function(c){try{c.preventDefault(),c.preventDefault()}catch(a){c.returnValue=!1}b.$el.trigger("onBeforeOpen.lg"),b.index=b.s.index||b.$items.index(this),a("body").hasClass("lg-on")||(b.build(b.index),a("body").addClass("lg-on"))})},b.prototype.build=function(b){var c=this;c.structure(),a.each(a.fn.lightGallery.modules,function(b){c.modules[b]=new a.fn.lightGallery.modules[b](c.el)}),c.slide(b,!1,!1,!1),c.s.keyPress&&c.keyPress(),c.$items.length>1?(c.arrow(),setTimeout(function(){c.enableDrag(),c.enableSwipe()},50),c.s.mousewheel&&c.mousewheel()):c.$slide.on("click.lg",function(){c.$el.trigger("onSlideClick.lg")}),c.counter(),c.closeGallery(),c.$el.trigger("onAfterOpen.lg"),c.s.hideBarsDelay>0&&c.$outer.on("mousemove.lg click.lg touchstart.lg",function(){c.$outer.removeClass("lg-hide-items"),clearTimeout(c.hideBarTimeout),c.hideBarTimeout=setTimeout(function(){c.$outer.addClass("lg-hide-items")},c.s.hideBarsDelay)}),c.$outer.trigger("mousemove.lg")},b.prototype.structure=function(){var b,c="",d="",e=0,f="",g=this;for(a("body").append(''),a(".lg-backdrop").css("transition-duration",this.s.backdropDuration+"ms"),e=0;e';if(this.s.controls&&this.$items.length>1&&(d='"),".lg-sub-html"===this.s.appendSubHtmlTo&&(f=''),b='",a("body").append(b),this.$outer=a(".lg-outer"),this.$outer.focus(),this.$slide=this.$outer.find(".lg-item"),this.s.useLeft?(this.$outer.addClass("lg-use-left"),this.s.mode="lg-slide"):this.$outer.addClass("lg-use-css3"),g.setTop(),a(window).on("resize.lg orientationchange.lg",function(){setTimeout(function(){g.setTop()},100)}),this.$slide.eq(this.index).addClass("lg-current"),this.doCss()?this.$outer.addClass("lg-css3"):(this.$outer.addClass("lg-css"),this.s.speed=0),this.$outer.addClass(this.s.mode),this.s.enableDrag&&this.$items.length>1&&this.$outer.addClass("lg-grab"),this.s.showAfterLoad&&this.$outer.addClass("lg-show-after-load"),this.doCss()){var h=this.$outer.find(".lg-inner");h.css("transition-timing-function",this.s.cssEasing),h.css("transition-duration",this.s.speed+"ms")}setTimeout(function(){a(".lg-backdrop").addClass("in")}),setTimeout(function(){g.$outer.addClass("lg-visible")},this.s.backdropDuration),this.s.download&&this.$outer.find(".lg-toolbar").append(''),this.prevScrollTop=a(window).scrollTop()},b.prototype.setTop=function(){if("100%"!==this.s.height){var b=a(window).height(),c=(b-parseInt(this.s.height,10))/2,d=this.$outer.find(".lg");b>=parseInt(this.s.height,10)?d.css("top",c+"px"):d.css("top","0px")}},b.prototype.doCss=function(){return!!function(){var a=["transition","MozTransition","WebkitTransition","OTransition","msTransition","KhtmlTransition"],b=document.documentElement,c=0;for(c=0;c'+(parseInt(this.index,10)+1)+' / '+this.$items.length+"")},b.prototype.addHtml=function(b){var c,d,e=null;if(this.s.dynamic?this.s.dynamicEl[b].subHtmlUrl?c=this.s.dynamicEl[b].subHtmlUrl:e=this.s.dynamicEl[b].subHtml:(d=this.$items.eq(b),d.attr("data-sub-html-url")?c=d.attr("data-sub-html-url"):(e=d.attr("data-sub-html"),this.s.getCaptionFromTitleOrAlt&&!e&&(e=d.attr("title")||d.find("img").first().attr("alt")))),!c)if(void 0!==e&&null!==e){var f=e.substring(0,1);"."!==f&&"#"!==f||(e=this.s.subHtmlSelectorRelative&&!this.s.dynamic?d.find(e).html():a(e).html())}else e="";".lg-sub-html"===this.s.appendSubHtmlTo?c?this.$outer.find(this.s.appendSubHtmlTo).load(c):this.$outer.find(this.s.appendSubHtmlTo).html(e):c?this.$slide.eq(b).load(c):this.$slide.eq(b).append(e),void 0!==e&&null!==e&&(""===e?this.$outer.find(this.s.appendSubHtmlTo).addClass("lg-empty-html"):this.$outer.find(this.s.appendSubHtmlTo).removeClass("lg-empty-html")),this.$el.trigger("onAfterAppendSubHtml.lg",[b])},b.prototype.preload=function(a){var b=1,c=1;for(b=1;b<=this.s.preload&&!(b>=this.$items.length-a);b++)this.loadContent(a+b,!1,0);for(c=1;c<=this.s.preload&&!(a-c<0);c++)this.loadContent(a-c,!1,0)},b.prototype.loadContent=function(b,c,d){var e,f,g,h,i,j,k,l=this,m=!1,n=function(b){for(var c=[],d=[],e=0;eh){f=d[i];break}};if(l.s.dynamic){if(l.s.dynamicEl[b].poster&&(m=!0,g=l.s.dynamicEl[b].poster),j=l.s.dynamicEl[b].html,f=l.s.dynamicEl[b].src,k=l.s.dynamicEl[b].alt,l.s.dynamicEl[b].responsive){n(l.s.dynamicEl[b].responsive.split(","))}h=l.s.dynamicEl[b].srcset,i=l.s.dynamicEl[b].sizes}else{var o=l.$items.eq(b);if(o.attr("data-poster")&&(m=!0,g=o.attr("data-poster")),j=o.attr("data-html"),f=o.attr("href")||o.attr("data-src"),k=o.attr("title")||o.find("img").first().attr("alt"),o.attr("data-responsive")){n(o.attr("data-responsive").split(","))}h=o.attr("data-srcset"),i=o.attr("data-sizes")}var p=!1;l.s.dynamic?l.s.dynamicEl[b].iframe&&(p=!0):"true"===l.$items.eq(b).attr("data-iframe")&&(p=!0);var q=l.isVideo(f,b);if(!l.$slide.eq(b).hasClass("lg-loaded")){if(p)l.$slide.eq(b).prepend('');else if(m){var r="";r=q&&q.youtube?"lg-has-youtube":q&&q.vimeo?"lg-has-vimeo":"lg-has-html5",l.$slide.eq(b).prepend('')}else q?(l.$slide.eq(b).prepend(''),l.$el.trigger("hasVideo.lg",[b,f,j])):(k=k?'alt="'+k+'"':"",l.$slide.eq(b).prepend('![]('+f+')
'));if(l.$el.trigger("onAferAppendSlide.lg",[b]),e=l.$slide.eq(b).find(".lg-object"),i&&e.attr("sizes",i),h&&(e.attr("srcset",h),this.s.supportLegacyBrowser))try{picturefill({elements:[e[0]]})}catch(a){console.warn("lightGallery :- If you want srcset to be supported for older browser please include picturefil version 2 javascript library in your document.")}".lg-sub-html"!==this.s.appendSubHtmlTo&&l.addHtml(b),l.$slide.eq(b).addClass("lg-loaded")}l.$slide.eq(b).find(".lg-object").on("load.lg error.lg",function(){var c=0;d&&!a("body").hasClass("lg-from-hash")&&(c=d),setTimeout(function(){l.$slide.eq(b).addClass("lg-complete"),l.$el.trigger("onSlideItemLoad.lg",[b,d||0])},c)}),q&&q.html5&&!m&&l.$slide.eq(b).addClass("lg-complete"),!0===c&&(l.$slide.eq(b).hasClass("lg-complete")?l.preload(b):l.$slide.eq(b).find(".lg-object").on("load.lg error.lg",function(){l.preload(b)}))},b.prototype.slide=function(b,c,d,e){var f=this.$outer.find(".lg-current").index(),g=this;if(!g.lGalleryOn||f!==b){var h=this.$slide.length,i=g.lGalleryOn?this.s.speed:0;if(!g.lgBusy){if(this.s.download){var j;j=g.s.dynamic?!1!==g.s.dynamicEl[b].downloadUrl&&(g.s.dynamicEl[b].downloadUrl||g.s.dynamicEl[b].src):"false"!==g.$items.eq(b).attr("data-download-url")&&(g.$items.eq(b).attr("data-download-url")||g.$items.eq(b).attr("href")||g.$items.eq(b).attr("data-src")),j?(a("#lg-download").attr("href",j),g.$outer.removeClass("lg-hide-download")):g.$outer.addClass("lg-hide-download")}if(this.$el.trigger("onBeforeSlide.lg",[f,b,c,d]),g.lgBusy=!0,clearTimeout(g.hideBarTimeout),".lg-sub-html"===this.s.appendSubHtmlTo&&setTimeout(function(){g.addHtml(b)},i),this.arrowDisable(b),e||(bf&&(e="next")),c){this.$slide.removeClass("lg-prev-slide lg-current lg-next-slide");var k,l;h>2?(k=b-1,l=b+1,0===b&&f===h-1?(l=0,k=h-1):b===h-1&&0===f&&(l=0,k=h-1)):(k=0,l=1),"prev"===e?g.$slide.eq(l).addClass("lg-next-slide"):g.$slide.eq(k).addClass("lg-prev-slide"),g.$slide.eq(b).addClass("lg-current")}else g.$outer.addClass("lg-no-trans"),this.$slide.removeClass("lg-prev-slide lg-next-slide"),"prev"===e?(this.$slide.eq(b).addClass("lg-prev-slide"),this.$slide.eq(f).addClass("lg-next-slide")):(this.$slide.eq(b).addClass("lg-next-slide"),this.$slide.eq(f).addClass("lg-prev-slide")),setTimeout(function(){g.$slide.removeClass("lg-current"),g.$slide.eq(b).addClass("lg-current"),g.$outer.removeClass("lg-no-trans")},50);g.lGalleryOn?(setTimeout(function(){g.loadContent(b,!0,0)},this.s.speed+50),setTimeout(function(){g.lgBusy=!1,g.$el.trigger("onAfterSlide.lg",[f,b,c,d])},this.s.speed)):(g.loadContent(b,!0,g.s.backdropDuration),g.lgBusy=!1,g.$el.trigger("onAfterSlide.lg",[f,b,c,d])),g.lGalleryOn=!0,this.s.counter&&a("#lg-counter-current").text(b+1)}g.index=b}},b.prototype.goToNextSlide=function(a){var b=this,c=b.s.loop;a&&b.$slide.length<3&&(c=!1),b.lgBusy||(b.index+10?(b.index--,b.$el.trigger("onBeforePrevSlide.lg",[b.index,a]),b.slide(b.index,a,!1,"prev")):c?(b.index=b.$items.length-1,b.$el.trigger("onBeforePrevSlide.lg",[b.index,a]),b.slide(b.index,a,!1,"prev")):b.s.slideEndAnimatoin&&!a&&(b.$outer.addClass("lg-left-end"),setTimeout(function(){b.$outer.removeClass("lg-left-end")},400)))},b.prototype.keyPress=function(){var b=this;this.$items.length>1&&a(window).on("keyup.lg",function(a){b.$items.length>1&&(37===a.keyCode&&(a.preventDefault(),b.goToPrevSlide()),39===a.keyCode&&(a.preventDefault(),b.goToNextSlide()))}),a(window).on("keydown.lg",function(a){!0===b.s.escKey&&27===a.keyCode&&(a.preventDefault(),b.$outer.hasClass("lg-thumb-open")?b.$outer.removeClass("lg-thumb-open"):b.destroy())})},b.prototype.arrow=function(){var a=this;this.$outer.find(".lg-prev").on("click.lg",function(){a.goToPrevSlide()}),this.$outer.find(".lg-next").on("click.lg",function(){a.goToNextSlide()})},b.prototype.arrowDisable=function(a){!this.s.loop&&this.s.hideControlOnEnd&&(a+10?this.$outer.find(".lg-prev").removeAttr("disabled").removeClass("disabled"):this.$outer.find(".lg-prev").attr("disabled","disabled").addClass("disabled"))},b.prototype.setTranslate=function(a,b,c){this.s.useLeft?a.css("left",b):a.css({transform:"translate3d("+b+"px, "+c+"px, 0px)"})},b.prototype.touchMove=function(b,c){var d=c-b;Math.abs(d)>15&&(this.$outer.addClass("lg-dragging"),this.setTranslate(this.$slide.eq(this.index),d,0),this.setTranslate(a(".lg-prev-slide"),-this.$slide.eq(this.index).width()+d,0),this.setTranslate(a(".lg-next-slide"),this.$slide.eq(this.index).width()+d,0))},b.prototype.touchEnd=function(a){var b=this;"lg-slide"!==b.s.mode&&b.$outer.addClass("lg-slide"),this.$slide.not(".lg-current, .lg-prev-slide, .lg-next-slide").css("opacity","0"),setTimeout(function(){b.$outer.removeClass("lg-dragging"),a<0&&Math.abs(a)>b.s.swipeThreshold?b.goToNextSlide(!0):a>0&&Math.abs(a)>b.s.swipeThreshold?b.goToPrevSlide(!0):Math.abs(a)<5&&b.$el.trigger("onSlideClick.lg"),b.$slide.removeAttr("style")}),setTimeout(function(){b.$outer.hasClass("lg-dragging")||"lg-slide"===b.s.mode||b.$outer.removeClass("lg-slide")},b.s.speed+100)},b.prototype.enableSwipe=function(){var a=this,b=0,c=0,d=!1;a.s.enableSwipe&&a.doCss()&&(a.$slide.on("touchstart.lg",function(c){a.$outer.hasClass("lg-zoomed")||a.lgBusy||(c.preventDefault(),a.manageSwipeClass(),b=c.originalEvent.targetTouches[0].pageX)}),a.$slide.on("touchmove.lg",function(e){a.$outer.hasClass("lg-zoomed")||(e.preventDefault(),c=e.originalEvent.targetTouches[0].pageX,a.touchMove(b,c),d=!0)}),a.$slide.on("touchend.lg",function(){a.$outer.hasClass("lg-zoomed")||(d?(d=!1,a.touchEnd(c-b)):a.$el.trigger("onSlideClick.lg"))}))},b.prototype.enableDrag=function(){var b=this,c=0,d=0,e=!1,f=!1;b.s.enableDrag&&b.doCss()&&(b.$slide.on("mousedown.lg",function(d){b.$outer.hasClass("lg-zoomed")||b.lgBusy||a(d.target).text().trim()||(d.preventDefault(),b.manageSwipeClass(),c=d.pageX,e=!0,b.$outer.scrollLeft+=1,b.$outer.scrollLeft-=1,b.$outer.removeClass("lg-grab").addClass("lg-grabbing"),b.$el.trigger("onDragstart.lg"))}),a(window).on("mousemove.lg",function(a){e&&(f=!0,d=a.pageX,b.touchMove(c,d),b.$el.trigger("onDragmove.lg"))}),a(window).on("mouseup.lg",function(g){f?(f=!1,b.touchEnd(d-c),b.$el.trigger("onDragend.lg")):(a(g.target).hasClass("lg-object")||a(g.target).hasClass("lg-video-play"))&&b.$el.trigger("onSlideClick.lg"),e&&(e=!1,b.$outer.removeClass("lg-grabbing").addClass("lg-grab"))}))},b.prototype.manageSwipeClass=function(){var a=this.index+1,b=this.index-1;this.s.loop&&this.$slide.length>2&&(0===this.index?b=this.$slide.length-1:this.index===this.$slide.length-1&&(a=0)),this.$slide.removeClass("lg-next-slide lg-prev-slide"),b>-1&&this.$slide.eq(b).addClass("lg-prev-slide"),this.$slide.eq(a).addClass("lg-next-slide")},b.prototype.mousewheel=function(){var a=this;a.$outer.on("mousewheel.lg",function(b){b.deltaY&&(b.deltaY>0?a.goToPrevSlide():a.goToNextSlide(),b.preventDefault())})},b.prototype.closeGallery=function(){var b=this,c=!1;this.$outer.find(".lg-close").on("click.lg",function(){b.destroy()}),b.s.closable&&(b.$outer.on("mousedown.lg",function(b){c=!!(a(b.target).is(".lg-outer")||a(b.target).is(".lg-item ")||a(b.target).is(".lg-img-wrap"))}),b.$outer.on("mousemove.lg",function(){c=!1}),b.$outer.on("mouseup.lg",function(d){(a(d.target).is(".lg-outer")||a(d.target).is(".lg-item ")||a(d.target).is(".lg-img-wrap")&&c)&&(b.$outer.hasClass("lg-dragging")||b.destroy())}))},b.prototype.destroy=function(b){var c=this;b||(c.$el.trigger("onBeforeClose.lg"),a(window).scrollTop(c.prevScrollTop)),b&&(c.s.dynamic||this.$items.off("click.lg click.lgcustom"),a.removeData(c.el,"lightGallery")),this.$el.off(".lg.tm"),a.each(a.fn.lightGallery.modules,function(a){c.modules[a]&&c.modules[a].destroy()}),this.lGalleryOn=!1,clearTimeout(c.hideBarTimeout),this.hideBarTimeout=!1,a(window).off(".lg"),a("body").removeClass("lg-on lg-from-hash"),c.$outer&&c.$outer.removeClass("lg-visible"),a(".lg-backdrop").removeClass("in"),setTimeout(function(){c.$outer&&c.$outer.remove(),a(".lg-backdrop").remove(),b||c.$el.trigger("onCloseAfter.lg"),c.$el.focus()},c.s.backdropDuration+50)},a.fn.lightGallery=function(c){return this.each(function(){if(a.data(this,"lightGallery"))try{a(this).data("lightGallery").init()}catch(a){console.error("lightGallery has not initiated properly",a)}else a.data(this,"lightGallery",new b(this,c))})},a.fn.lightGallery.modules={}}()}),function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof module&&module.exports?module.exports=b(require("jquery")):b(a.jQuery)}(this,function(a){!function(){"use strict";var b={autoplay:!1,pause:5e3,progressBar:!0,fourceAutoplay:!1,autoplayControls:!0,appendAutoplayControlsTo:".lg-toolbar"},c=function(c){return this.core=a(c).data("lightGallery"),this.$el=a(c),!(this.core.$items.length<2)&&(this.core.s=a.extend({},b,this.core.s),this.interval=!1,this.fromAuto=!0,this.canceledOnTouch=!1,this.fourceAutoplayTemp=this.core.s.fourceAutoplay,this.core.doCss()||(this.core.s.progressBar=!1),this.init(),this)};c.prototype.init=function(){var a=this;a.core.s.autoplayControls&&a.controls(),a.core.s.progressBar&&a.core.$outer.find(".lg").append(''),a.progress(),a.core.s.autoplay&&a.$el.one("onSlideItemLoad.lg.tm",function(){a.startlAuto()}),a.$el.on("onDragstart.lg.tm touchstart.lg.tm",function(){a.interval&&(a.cancelAuto(),a.canceledOnTouch=!0)}),a.$el.on("onDragend.lg.tm touchend.lg.tm onSlideClick.lg.tm",function(){!a.interval&&a.canceledOnTouch&&(a.startlAuto(),a.canceledOnTouch=!1)})},c.prototype.progress=function(){var a,b,c=this;c.$el.on("onBeforeSlide.lg.tm",function(){c.core.s.progressBar&&c.fromAuto&&(a=c.core.$outer.find(".lg-progress-bar"),b=c.core.$outer.find(".lg-progress"),c.interval&&(b.removeAttr("style"),a.removeClass("lg-start"),setTimeout(function(){b.css("transition","width "+(c.core.s.speed+c.core.s.pause)+"ms ease 0s"),a.addClass("lg-start")},20))),c.fromAuto||c.core.s.fourceAutoplay||c.cancelAuto(),c.fromAuto=!1})},c.prototype.controls=function(){var b=this;a(this.core.s.appendAutoplayControlsTo).append(''),b.core.$outer.find(".lg-autoplay-button").on("click.lg",function(){a(b.core.$outer).hasClass("lg-show-autoplay")?(b.cancelAuto(),b.core.s.fourceAutoplay=!1):b.interval||(b.startlAuto(),b.core.s.fourceAutoplay=b.fourceAutoplayTemp)})},c.prototype.startlAuto=function(){var a=this;a.core.$outer.find(".lg-progress").css("transition","width "+(a.core.s.speed+a.core.s.pause)+"ms ease 0s"),a.core.$outer.addClass("lg-show-autoplay"),a.core.$outer.find(".lg-progress-bar").addClass("lg-start"),a.interval=setInterval(function(){a.core.index+1',this.core.$outer.find(".lg-toolbar").append(a),this.fullScreen()}},d.prototype.requestFullscreen=function(){var a=document.documentElement;a.requestFullscreen?a.requestFullscreen():a.msRequestFullscreen?a.msRequestFullscreen():a.mozRequestFullScreen?a.mozRequestFullScreen():a.webkitRequestFullscreen&&a.webkitRequestFullscreen()},d.prototype.exitFullscreen=function(){document.exitFullscreen?document.exitFullscreen():document.msExitFullscreen?document.msExitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen&&document.webkitExitFullscreen()},d.prototype.fullScreen=function(){var c=this;a(document).on("fullscreenchange.lg webkitfullscreenchange.lg mozfullscreenchange.lg MSFullscreenChange.lg",function(){c.core.$outer.toggleClass("lg-fullscreen-on")}),this.core.$outer.find(".lg-fullscreen").on("click.lg",function(){b()?c.exitFullscreen():c.requestFullscreen()})},d.prototype.destroy=function(){b()&&this.exitFullscreen(),a(document).off("fullscreenchange.lg webkitfullscreenchange.lg mozfullscreenchange.lg MSFullscreenChange.lg")},a.fn.lightGallery.modules.fullscreen=d}()}),function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(0,function(a){!function(){"use strict";var b={pager:!1},c=function(c){return this.core=a(c).data("lightGallery"),this.$el=a(c),this.core.s=a.extend({},b,this.core.s),this.core.s.pager&&this.core.$items.length>1&&this.init(),this};c.prototype.init=function(){var b,c,d,e=this,f="";if(e.core.$outer.find(".lg").append(''),e.core.s.dynamic)for(var g=0;g