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

github.com/xianmin/hugo-theme-jane.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGerman Lashevich <german.lashevich@gmail.com>2018-04-30 01:38:26 +0300
committerGerman Lashevich <german.lashevich@gmail.com>2018-04-30 01:38:26 +0300
commit3fed277a4181869057588e440679bf53e639079c (patch)
tree3cb3567709c43dbc0c835f84fb033e143834e157
parentd4304ad17a50d6062b1a16a7883beb7c7260b8e9 (diff)
✨ Integrate hugo-easy-gallery and replace fancybox by photoswipe
-rw-r--r--dev-config.toml3
-rw-r--r--exampleSite/config.toml3
-rw-r--r--layouts/partials/head.html7
-rw-r--r--layouts/partials/scripts.html10
-rw-r--r--layouts/shortcodes/figure.html29
-rw-r--r--layouts/shortcodes/gallery.html41
-rw-r--r--layouts/shortcodes/load-photoswipe.html75
-rw-r--r--src/css/_partial/_post/_content.scss15
-rw-r--r--src/js/fancybox.js18
-rw-r--r--src/js/main.js4
-rw-r--r--static/css/hugo-easy-gallery.css159
-rw-r--r--static/dist/jane.min.css4
-rw-r--r--static/dist/jane.min.css.map2
-rw-r--r--static/dist/jane.min.js2
-rw-r--r--static/dist/jane.min.js.map2
-rw-r--r--static/js/load-photoswipe.js80
-rw-r--r--static/lib/fancybox/jquery.fancybox-3.1.20.min.css1
-rw-r--r--static/lib/fancybox/jquery.fancybox-3.1.20.min.js12
18 files changed, 405 insertions, 62 deletions
diff --git a/dev-config.toml b/dev-config.toml
index ed99727..dd55799 100644
--- a/dev-config.toml
+++ b/dev-config.toml
@@ -132,7 +132,6 @@ defaultContentLanguage = "en" # Default language to use (if you setup multiling
# 一些全局开关,你也可以在每一篇内容的 front matter 中针对单篇内容关闭或开启某些功能,在 archetypes/default.md 查看更多信息。
# Some global options, you can also close or open something in front matter for a single post, see more information from `archetypes/default.md`.
toc = true # 是否开启目录
- fancybox = true # see https://github.com/fancyapps/fancybox # 是否启用fancybox(图片可点击)
bootcdn = false # In china. @Deprecated: use [params.publicCDN] # 是否使用bootcdn(@Deprecated: 请使用[params.publicCDN])
mathjax = false # see https://www.mathjax.org/ # 是否使用mathjax(数学公式)
@@ -155,8 +154,6 @@ defaultContentLanguage = "en" # Default language to use (if you setup multiling
enable = false
jquery = '<script src="https://cdn.jsdelivr.net/npm/jquery@3.2.1/dist/jquery.min.js" integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" crossorigin="anonymous"></script>'
slideout = '<script src="https://cdn.jsdelivr.net/npm/slideout@1.0.1/dist/slideout.min.js" integrity="sha256-t+zJ/g8/KXIJMjSVQdnibt4dlaDxc9zXr/9oNPeWqdg=" crossorigin="anonymous"></script>'
- fancyboxJs = '<script src="https://cdn.jsdelivr.net/npm/@fancyapps/fancybox@3.1.20/dist/jquery.fancybox.min.js" integrity="sha256-XVLffZaxoWfGUEbdzuLi7pwaUJv1cecsQJQqGLe7axY=" crossorigin="anonymous"></script>'
- fancyboxCss = '<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fancyapps/fancybox@3.1.20/dist/jquery.fancybox.min.css" integrity="sha256-7TyXnr2YU040zfSP+rEcz29ggW4j56/ujTPwjMzyqFY=" crossorigin="anonymous">'
[params.reward] # 文章打赏
enable = false
diff --git a/exampleSite/config.toml b/exampleSite/config.toml
index 223952f..542a08d 100644
--- a/exampleSite/config.toml
+++ b/exampleSite/config.toml
@@ -85,7 +85,6 @@ defaultContentLanguage = "en" # Default language to use
# 一些全局开关,你也可以在每一篇内容的 front matter 中针对单篇内容关闭或开启某些功能,在 archetypes/default.md 查看更多信息。
# Some global options, you can also close or open something in front matter for a single post, see more information from `archetypes/default.md`.
toc = true # 是否开启目录
- fancybox = true # see https://github.com/fancyapps/fancybox # 是否启用fancybox(图片可点击)
bootcdn = false # In china. @Deprecated: use [params.publicCDN] # 是否使用bootcdn(@Deprecated: 请使用[params.publicCDN])
mathjax = false # see https://www.mathjax.org/ # 是否使用mathjax(数学公式)
contentCopyright = '<a rel="license noopener" href="https://creativecommons.org/licenses/by-nc-nd/4.0/" target="_blank">CC BY-NC-ND 4.0</a>'
@@ -107,8 +106,6 @@ defaultContentLanguage = "en" # Default language to use
enable = false
jquery = '<script src="https://cdn.jsdelivr.net/npm/jquery@3.2.1/dist/jquery.min.js" integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4=" crossorigin="anonymous"></script>'
slideout = '<script src="https://cdn.jsdelivr.net/npm/slideout@1.0.1/dist/slideout.min.js" integrity="sha256-t+zJ/g8/KXIJMjSVQdnibt4dlaDxc9zXr/9oNPeWqdg=" crossorigin="anonymous"></script>'
- fancyboxJs = '<script src="https://cdn.jsdelivr.net/npm/@fancyapps/fancybox@3.1.20/dist/jquery.fancybox.min.js" integrity="sha256-XVLffZaxoWfGUEbdzuLi7pwaUJv1cecsQJQqGLe7axY=" crossorigin="anonymous"></script>'
- fancyboxCss = '<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fancyapps/fancybox@3.1.20/dist/jquery.fancybox.min.css" integrity="sha256-7TyXnr2YU040zfSP+rEcz29ggW4j56/ujTPwjMzyqFY=" crossorigin="anonymous">'
gitmentJS = '<script src="https://cdn.jsdelivr.net/npm/gitment@0.0.3/dist/gitment.browser.min.js" crossorigin="anonymous"></script>'
gitmentCSS = '<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/gitment@0.0.3/style/default.min.css" crossorigin="anonymous">'
diff --git a/layouts/partials/head.html b/layouts/partials/head.html
index 557feea..36643cf 100644
--- a/layouts/partials/head.html
+++ b/layouts/partials/head.html
@@ -74,13 +74,6 @@
<!-- Styles -->
<link href="{{ "dist/jane.min.css?v=2.7.0" | relURL }}" rel="stylesheet">
-{{ if .Site.Params.bootcdn -}}
- {{ if .Site.Params.fancybox }}<link href="https://cdn.bootcss.com/fancybox/3.1.20/jquery.fancybox.min.css" rel="stylesheet" crossorigin="anonymous">{{ end }}
-{{- else if .Site.Params.publicCDN.enable -}}
- {{ if .Site.Params.fancybox }}{{ .Site.Params.publicCDN.fancyboxCss | safeHTML }}{{ end }}
-{{- else -}}
- {{ if .Site.Params.fancybox }}<link href="{{ "lib/fancybox/jquery.fancybox-3.1.20.min.css" | relURL }}" rel="stylesheet">{{ end }}
-{{- end }}
<!-- custom css -->
{{ range .Site.Params.customCSS }}
diff --git a/layouts/partials/scripts.html b/layouts/partials/scripts.html
index b15147c..7758f06 100644
--- a/layouts/partials/scripts.html
+++ b/layouts/partials/scripts.html
@@ -2,15 +2,12 @@
{{ if .Site.Params.bootcdn -}}
<script type="text/javascript" src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js" crossorigin="anonymous"></script>
<script type="text/javascript" src="https://cdn.bootcss.com/slideout/1.0.1/slideout.min.js" crossorigin="anonymous"></script>
- {{ if .Site.Params.fancybox }}<script type="text/javascript" src="https://cdn.bootcss.com/fancybox/3.1.20/jquery.fancybox.min.js" crossorigin="anonymous"></script>{{ end }}
{{- else if .Site.Params.publicCDN.enable -}}
{{ .Site.Params.publicCDN.jquery | safeHTML }}
{{ .Site.Params.publicCDN.slideout | safeHTML }}
- {{ if .Site.Params.fancybox }}{{ .Site.Params.publicCDN.fancyboxJs | safeHTML }}{{ end }}
{{- else -}}
<script type="text/javascript" src="{{ "lib/jquery/jquery-3.2.1.min.js" | relURL }}"></script>
<script type="text/javascript" src="{{ "lib/slideout/slideout-1.0.1.min.js" | relURL }}"></script>
- {{ if .Site.Params.fancybox }}<script type="text/javascript" src="{{ "lib/fancybox/jquery.fancybox-3.1.20.min.js" | relURL }}"></script>{{ end }}
{{- end }}
<script type="text/javascript" src="{{ "dist/jane.min.js?v=2.7.0" | relURL }}"></script>
@@ -69,6 +66,13 @@
</script>
{{- end }}
+<!-- Load PhotoSwipe js if the load-photoswipe shortcode has been used -->
+{{ if ($.Scratch.Get "photoswipeloaded") }}
+ <script src="/js/load-photoswipe.js"></script>
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.1/photoswipe.min.js" integrity="sha256-UplRCs9v4KXVJvVY+p+RSo5Q4ilAUXh7kpjyIP5odyc=" crossorigin="anonymous"></script>
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.1/photoswipe-ui-default.min.js" integrity="sha256-PWHOlUzc96pMc8ThwRIXPn8yH4NOLu42RQ0b9SpnpFk=" crossorigin="anonymous"></script>
+{{ end }}
+
<!-- custom js -->
{{ range .Site.Params.customJS }}
<script src="{{ "/js/" | relURL }}{{ . }}"></script>
diff --git a/layouts/shortcodes/figure.html b/layouts/shortcodes/figure.html
new file mode 100644
index 0000000..4c6ff1f
--- /dev/null
+++ b/layouts/shortcodes/figure.html
@@ -0,0 +1,29 @@
+<!--
+Put this file in /layouts/shortcodes/figure.html
+NB this overrides Hugo's built-in "figure" shortcode but is backwards compatible
+Documentation and licence at https://github.com/liwenyip/hugo-easy-gallery/
+-->
+<!-- count how many times we've called this shortcode; load the css if it's the first time -->
+{{- if not ($.Page.Scratch.Get "figurecount") }}<link rel="stylesheet" href="/css/hugo-easy-gallery.css" />{{ end }}
+{{- $.Page.Scratch.Add "figurecount" 1 -}}
+<!-- use either src or link-thumb for thumbnail image -->
+{{- $thumb := .Get "src" | default (printf "%s." (.Get "thumb") | replace (.Get "link") ".") }}
+<div class="box{{ with .Get "caption-position" }} fancy-figure caption-position-{{.}}{{end}}{{ with .Get "caption-effect" }} caption-effect-{{.}}{{end}}" {{ with .Get "width" }}style="max-width:{{.}}"{{end}}>
+ <figure {{ with .Get "class" }}class="{{.}}"{{ end }} itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject">
+ <div class="img"{{ if .Parent }} style="background-image: url('{{ print .Site.BaseURL $thumb }}');"{{ end }}{{ with .Get "size" }} data-size="{{.}}"{{ end }}>
+ <img itemprop="thumbnail" src="{{ $thumb }}" {{ with .Get "alt" | default (.Get "caption") }}alt="{{.}}"{{ end }}/><!-- <img> hidden if in .gallery -->
+ </div>
+ {{ with .Get "link" | default (.Get "src") }}<a href="{{.}}" itemprop="contentUrl"></a>{{ end }}
+ {{- if or (or (.Get "title") (.Get "caption")) (.Get "attr")}}
+ <figcaption>
+ {{- with .Get "title" }}<h4>{{.}}</h4>{{ end }}
+ {{- if or (.Get "caption") (.Get "attr")}}
+ <p>
+ {{- .Get "caption" -}}
+ {{- with .Get "attrlink"}}<a href="{{.}}">{{ .Get "attr" }}</a>{{ else }}{{ .Get "attr"}}{{ end -}}
+ </p>
+ {{- end }}
+ </figcaption>
+ {{- end }}
+ </figure>
+</div>
diff --git a/layouts/shortcodes/gallery.html b/layouts/shortcodes/gallery.html
new file mode 100644
index 0000000..aac2ace
--- /dev/null
+++ b/layouts/shortcodes/gallery.html
@@ -0,0 +1,41 @@
+<!--
+Put this file in /layouts/shortcodes/gallery.html
+Documentation and licence at https://github.com/liwenyip/hugo-easy-gallery/
+-->
+<!-- count how many times we've called this shortcode; load the css if it's the first time -->
+{{- if not ($.Page.Scratch.Get "figurecount") }}<link rel="stylesheet" href="/css/hugo-easy-gallery.css" />{{ end }}
+{{- $.Page.Scratch.Add "figurecount" 1 }}
+{{ $baseURL := .Site.BaseURL }}
+<div class="gallery caption-position-{{ with .Get "caption-position" | default "bottom" }}{{.}}{{end}} caption-effect-{{ with .Get "caption-effect" | default "slide" }}{{.}}{{end}} hover-effect-{{ with .Get "hover-effect" | default "zoom" }}{{.}}{{end}} {{ if ne (.Get "hover-transition") "none" }}hover-transition{{end}}" itemscope itemtype="http://schema.org/ImageGallery">
+ {{- with (.Get "dir") -}}
+ <!-- If a directory was specified, generate figures for all of the images in the directory -->
+ {{- $files := readDir (print "/static/" .) }}
+ {{- range $files -}}
+ <!-- skip files that aren't images, or that inlcude the thumb suffix in their name -->
+ {{- $thumbext := $.Get "thumb" | default "-thumb" }}
+ {{- $isthumb := .Name | findRE ($thumbext | printf "%s\\.") }}<!-- is the current file a thumbnail image? -->
+ {{- $isimg := lower .Name | findRE "\\.(gif|jpg|jpeg|tiff|png|bmp)" }}<!-- is the current file an image? -->
+ {{- if and $isimg (not $isthumb) }}
+ {{- $caption := .Name | replaceRE "\\..*" "" | humanize }}<!-- humanized filename without extension -->
+ {{- $linkURL := print $baseURL ($.Get "dir") "/" .Name | absURL }}<!-- absolute URL to hi-res image -->
+ {{- $thumb := .Name | replaceRE "(\\.)" ($thumbext | printf "%s.") }}<!-- filename of thumbnail image -->
+ {{- $thumbexists := where $files "Name" $thumb }}<!-- does a thumbnail image exist? -->
+ {{- $thumbURL := print $baseURL ($.Get "dir") "/" $thumb | absURL }}<!-- absolute URL to thumbnail image -->
+ <div class="box">
+ <figure itemprop="associatedMedia" itemscope itemtype="http://schema.org/ImageObject">
+ <div class="img" style="background-image: url('{{ if $thumbexists }}{{ $thumbURL }}{{ else }}{{ $linkURL }}{{ end }}');" >
+ <img itemprop="thumbnail" src="{{ if $thumbexists }}{{ $thumbURL }}{{ else }}{{ $linkURL }}{{ end }}" alt="{{ $caption }}" /><!-- <img> hidden if in .gallery -->
+ </div>
+ <figcaption>
+ <p>{{ $caption }}</p>
+ </figcaption>
+ <a href="{{ $linkURL }}" itemprop="contentUrl"></a><!-- put <a> last so it is stacked on top -->
+ </figure>
+ </div>
+ {{- end }}
+ {{- end }}
+ {{- else -}}
+ <!-- If no directory was specified, include any figure shortcodes called within the gallery -->
+ {{ .Inner }}
+ {{- end }}
+</div>
diff --git a/layouts/shortcodes/load-photoswipe.html b/layouts/shortcodes/load-photoswipe.html
new file mode 100644
index 0000000..4b3bfad
--- /dev/null
+++ b/layouts/shortcodes/load-photoswipe.html
@@ -0,0 +1,75 @@
+<!--
+Put this file in /layouts/shortcodes/load-photoswipe.html
+Documentation and licence at https://github.com/liwenyip/hugo-easy-gallery/
+-->
+
+<!-- prevent this shortcode from being loaded more than once per page -->
+{{ if not ($.Page.Scratch.Get "photoswipeloaded") }}
+ {{ $.Page.Scratch.Set "photoswipeloaded" 1 }}
+
+<!--
+*** jQuery must be loaded before load-photoswipe.js ***
+- If your template already loads jQuery in the header then you don't need to load it again here.
+- If your template already loads jQuery in the footer, then you could load load-photoswipe.js from the footer instead
+-->
+<!-- these files are loaded in the theme footer
+<script src="https://code.jquery.com/jquery-1.12.4.min.js" integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=" crossorigin="anonymous"></script>
+<script src="/js/load-photoswipe.js"></script>
+-->
+
+<!-- Photoswipe css/js libraries -->
+<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.1/photoswipe.min.css" integrity="sha256-sCl5PUOGMLfFYctzDW3MtRib0ctyUvI9Qsmq2wXOeBY=" crossorigin="anonymous" />
+<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.1/default-skin/default-skin.min.css" integrity="sha256-BFeI1V+Vh1Rk37wswuOYn5lsTcaU96hGaI7OUVCLjPc=" crossorigin="anonymous" />
+<!-- these files are loaded in the theme footer
+<script src="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.1/photoswipe.min.js" integrity="sha256-UplRCs9v4KXVJvVY+p+RSo5Q4ilAUXh7kpjyIP5odyc=" crossorigin="anonymous"></script>
+<script src="https://cdnjs.cloudflare.com/ajax/libs/photoswipe/4.1.1/photoswipe-ui-default.min.js" integrity="sha256-PWHOlUzc96pMc8ThwRIXPn8yH4NOLu42RQ0b9SpnpFk=" crossorigin="anonymous"></script>
+-->
+
+<!-- Root element of PhotoSwipe. Must have class pswp. -->
+<div class="pswp" tabindex="-1" role="dialog" aria-hidden="true">
+<!-- Background of PhotoSwipe.
+ It's a separate element, as animating opacity is faster than rgba(). -->
+<div class="pswp__bg"></div>
+<!-- Slides wrapper with overflow:hidden. -->
+<div class="pswp__scroll-wrap">
+ <!-- Container that holds slides.
+ PhotoSwipe keeps only 3 of them in DOM to save memory.
+ Don't modify these 3 pswp__item elements, data is added later on. -->
+ <div class="pswp__container">
+ <div class="pswp__item"></div>
+ <div class="pswp__item"></div>
+ <div class="pswp__item"></div>
+ </div>
+ <!-- Default (PhotoSwipeUI_Default) interface on top of sliding area. Can be changed. -->
+ <div class="pswp__ui pswp__ui--hidden">
+ <div class="pswp__top-bar">
+ <!-- Controls are self-explanatory. Order can be changed. -->
+ <div class="pswp__counter"></div>
+ <button class="pswp__button pswp__button--close" title="Close (Esc)"></button>
+ <button class="pswp__button pswp__button--share" title="Share"></button>
+ <button class="pswp__button pswp__button--fs" title="Toggle fullscreen"></button>
+ <button class="pswp__button pswp__button--zoom" title="Zoom in/out"></button>
+ <!-- Preloader demo http://codepen.io/dimsemenov/pen/yyBWoR -->
+ <!-- element will get class pswp__preloader--active when preloader is running -->
+ <div class="pswp__preloader">
+ <div class="pswp__preloader__icn">
+ <div class="pswp__preloader__cut">
+ <div class="pswp__preloader__donut"></div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="pswp__share-modal pswp__share-modal--hidden pswp__single-tap">
+ <div class="pswp__share-tooltip"></div>
+ </div>
+ <button class="pswp__button pswp__button--arrow--left" title="Previous (arrow left)">
+ </button>
+ <button class="pswp__button pswp__button--arrow--right" title="Next (arrow right)">
+ </button>
+ <div class="pswp__caption">
+ <div class="pswp__caption__center"></div>
+ </div>
+ </div>
+ </div>
+</div>
+{{ end }} \ No newline at end of file
diff --git a/src/css/_partial/_post/_content.scss b/src/css/_partial/_post/_content.scss
index f2fc344..163c554 100644
--- a/src/css/_partial/_post/_content.scss
+++ b/src/css/_partial/_post/_content.scss
@@ -35,10 +35,6 @@
&:hover {
border-bottom: $content-link-border;
}
-
- &.fancybox {
- border: 0;
- }
}
blockquote {
@@ -73,9 +69,10 @@
}
}
- img {
- display: inline-block;
- max-width: 100%;
+ iframe {
+ margin: 0 auto;
+ display: block;
+ width: 100%;
}
> table {
@@ -136,6 +133,10 @@
}
figure {
+ a:hover{
+ border: 0;
+ }
+
&.center {
text-align: center;
}
diff --git a/src/js/fancybox.js b/src/js/fancybox.js
deleted file mode 100644
index 0ba8588..0000000
--- a/src/js/fancybox.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/**
- * fancybox
- */
-
-export default function () {
- if ($.fancybox) {
- $('.post-content').each(function () {
- $(this).find('img').each(function () {
- $(this).wrap(`<a class="fancybox" href="${this.src}" data-fancybox="gallery" data-caption="${this.title}"></a>`)
- })
- })
-
- $('.fancybox').fancybox({
- selector: '.fancybox',
- protect: true
- })
- }
-}
diff --git a/src/js/main.js b/src/js/main.js
index 7f0b77c..d7d21d2 100644
--- a/src/js/main.js
+++ b/src/js/main.js
@@ -5,7 +5,6 @@ import mobileNavbar from './mobileNavbar';
import toc from './toc';
import headerAnchor from './headerAnchor';
import fnTooltip from './footnoteTooltip';
-import fancybox from './fancybox';
import highlight from './highlight';
@@ -15,7 +14,6 @@ $(document).ready(function () {
toc();
headerAnchor();
fnTooltip();
- fancybox();
-})
+});
highlight();
diff --git a/static/css/hugo-easy-gallery.css b/static/css/hugo-easy-gallery.css
new file mode 100644
index 0000000..d78dfec
--- /dev/null
+++ b/static/css/hugo-easy-gallery.css
@@ -0,0 +1,159 @@
+/*
+Put this file in /static/css/hugo-easy-gallery.css
+Documentation and licence at https://github.com/liwenyip/hugo-easy-gallery/
+*/
+
+
+/*
+Grid Layout Styles
+*/
+.gallery {
+ overflow: hidden;
+ margin: 10px;
+ max-width: 768px;
+}
+.gallery .box {
+ float: left;
+ position: relative;
+ /* Default: 1 tile wide */
+ width: 100%;
+ padding-bottom: 100%;
+}
+@media only screen and (min-width : 365px) {
+ /* Tablet view: 2 tiles */
+ .gallery .box {
+ width: 50%;
+ padding-bottom: 50%;
+ }
+}
+@media only screen and (min-width : 480px) {
+ /* Small desktop / ipad view: 3 tiles */
+ .gallery .box {
+ width: 33.3%;
+ padding-bottom: 33.3%; /* */
+ }
+}
+@media only screen and (min-width : 9999px) {
+ /* Medium desktop: 4 tiles */
+ .box {
+ width: 25%;
+ padding-bottom: 25%;
+ }
+}
+
+/*
+Transition styles
+*/
+.gallery.hover-transition figure,
+.gallery.hover-effect-zoom .img,
+.gallery:not(.caption-effect-appear) figcaption,
+.fancy-figure:not(.caption-effect-appear) figcaption {
+ -webkit-transition: all 0.3s ease-in-out;
+ -moz-transition: all 0.3s ease-in-out;
+ -o-transition: all 0.3s ease-in-out;
+ transition: all 0.3s ease-in-out;
+}
+/*
+figure styles
+*/
+figure {
+ position:relative; /* purely to allow absolution positioning of figcaption */
+ overflow: hidden;
+}
+.gallery figure {
+ position: absolute;
+ left: 5px;
+ right: 5px;
+ top: 5px;
+ bottom: 5px;
+}
+.gallery.hover-effect-grow figure:hover {
+ transform: scale(1.05);
+}
+.gallery.hover-effect-shrink figure:hover {
+ transform: scale(0.95);
+}
+.gallery.hover-effect-slidedown figure:hover {
+ transform: translateY(5px);
+}
+.gallery.hover-effect-slideup figure:hover {
+ transform: translateY(-5px);
+}
+
+/*
+img / a styles
+*/
+
+.gallery .img {
+ position: absolute;
+ left: 0;
+ right: 0;
+ top: 0;
+ bottom: 0;
+ background-size: cover;
+ background-position: 50% 50%;
+ background-repeat: no-repeat;
+}
+.gallery.hover-effect-zoom figure:hover .img {
+ transform: scale(1.05);
+}
+.gallery img {
+ display: none; /* only show the img if not inside a gallery */
+}
+figure a {
+ position: absolute;
+ left: 0;
+ right: 0;
+ top: 0;
+ bottom: 0;
+}
+
+/*
+figcaption styles
+*/
+.gallery figcaption,
+.fancy-figure figcaption {
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ background: #000;
+ color: #FFF;
+ text-align: center;
+ font-size: 75%; /* change this if you want bigger text */
+ background: rgba(0, 0, 0, 0.5);
+ opacity: 1;
+ cursor: pointer;
+}
+.gallery.caption-position-none figcaption,
+.fancy-figure.caption-position-none figcaption {
+ display: none;
+}
+.gallery.caption-position-center figcaption,
+.fancy-figure.caption-position-center figcaption {
+ top: 0;
+ padding: 40% 5px;
+}
+.gallery.caption-position-bottom figcaption,
+.fancy-figure.caption-position-bottom figcaption {
+ padding: 5px;
+}
+.gallery.caption-effect-fade figure:not(:hover) figcaption,
+.gallery.caption-effect-appear figure:not(:hover) figcaption,
+.fancy-figure.caption-effect-fade figure:not(:hover) figcaption,
+.fancy-figure.caption-effect-appear figure:not(:hover) figcaption {
+ background: rgba(0, 0, 0, 0);
+ opacity: 0;
+}
+.gallery.caption-effect-slide.caption-position-bottom figure:not(:hover) figcaption,
+.fancy-figure.caption-effect-slide.caption-position-bottom figure:not(:hover) figcaption {
+ margin-bottom: -100%;
+}
+.gallery.caption-effect-slide.caption-position-center figure:not(:hover) figcaption,
+.fancy-figure.caption-effect-slide.caption-position-center figure:not(:hover) figcaption {
+ top: 100%;
+}
+figcaption p {
+ margin: auto; /* override style in theme */
+}
+
diff --git a/static/dist/jane.min.css b/static/dist/jane.min.css
index f9928e4..d919640 100644
--- a/static/dist/jane.min.css
+++ b/static/dist/jane.min.css
@@ -1,4 +1,4 @@
-@font-face{font-family:custom-Id4028;src:url(data:application/x-font-woff;charset=utf-8;base64,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) format("woff");font-weight:400;font-style:normal}@font-face{font-family:Chancery;src:url(fonts/chancery/apple-chancery-webfont.eot);src:local("Apple Chancery"),url(fonts/chancery/apple-chancery-webfont.eot?#iefix) format("embedded-opentype"),url(fonts/chancery/apple-chancery-webfont.woff2) format("woff2"),url(fonts/chancery/apple-chancery-webfont.woff) format("woff"),url(fonts/chancery/apple-chancery-webfont.ttf) format("truetype"),url(fonts/chancery/apple-chancery-webfont.svg#apple-chancery) format("svg");font-weight:lighter;font-style:normal}
+@font-face{font-family:custom-Id4028;src:url(data:application/x-font-woff;charset=utf-8;base64,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) format("woff");font-weight:400;font-style:normal}@font-face{font-family:Chancery;src:url(fonts/chancery/apple-chancery-webfont.eot);src:local("Apple Chancery"),url(fonts/chancery/apple-chancery-webfont.eot?#iefix) format("embedded-opentype"),url(fonts/chancery/apple-chancery-webfont.woff2) format("woff2"),url(fonts/chancery/apple-chancery-webfont.woff) format("woff"),url(fonts/chancery/apple-chancery-webfont.ttf) format("truetype"),url(fonts/chancery/apple-chancery-webfont.svg#apple-chancery) format("svg");font-weight:lighter;font-style:normal}
-/*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}html{font-size:18px;box-sizing:border-box}body{padding:0;margin:0;font-family:Source Sans Pro,Helvetica Neue,Arial,sans-serif;font-weight:400;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.8;color:rgba(0,0,0,.84);background:#fefefe;scroll-behavior:smooth}@media screen and (max-width:1080px){body{border-top:0}}::selection{background:#c05b4d;color:#fff}img{max-width:100%;height:auto;display:inline-block;vertical-align:middle}a{color:rgba(0,0,0,.84);text-decoration:none}h1{font-size:1.6em}h1,h2{font-family:Athelas,STHeiti,Microsoft Yahei,serif}h2{font-size:1.5em}h3{font-size:1.3em}h3,h4{font-family:Athelas,STHeiti,Microsoft Yahei,serif}h4{font-size:1.2em}h5{font-size:1.1em}h5,h6{font-family:Athelas,STHeiti,Microsoft Yahei,serif}h6{font-size:1em}.container{margin:0 auto;width:1080px}@media screen and (max-width:1080px){.container{width:100%}}.content-wrapper{padding:3em 0 1px}.video-container{position:relative;padding-bottom:56.25%;padding-top:25px;height:0}.video-container iframe{position:absolute;top:0;left:0;width:100%;height:100%}.bg-llight{background-color:#f2f2f5}.bg-white{background-color:#fff}.iconfont{font-family:iconfont!important;font-style:normal;-webkit-font-smoothing:antialiased;-webkit-text-stroke-width:.2px;-moz-osx-font-smoothing:grayscale;cursor:pointer}.icon-heart:before{content:"\E000"}.icon-heart:before,.icon-right:before{text-rendering:auto;-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto;font-family:custom-Id4028;font-weight:400}.icon-right:before{content:"\E001"}.icon-left:before{content:"\E002"}.icon-left:before,.icon-up:before{text-rendering:auto;-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto;font-family:custom-Id4028;font-weight:400}.icon-up:before{content:"\E003";font-size:2em}.icon-new-window:before{content:"\E004"}.icon-new-window:before,.icon-rss:before{text-rendering:auto;-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto;font-family:custom-Id4028;font-weight:400}.icon-rss:before{content:"\E005"}.icon-email:before{content:"\E006";font-size:.8em}.icon-email:before,.icon-stack-overflow:before{text-rendering:auto;-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto;font-family:custom-Id4028;font-weight:400}.icon-stack-overflow:before{content:"\E007"}.icon-twitter:before{content:"\E008";font-size:.9em}.icon-facebook:before,.icon-twitter:before{text-rendering:auto;-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto;font-family:custom-Id4028;font-weight:400}.icon-facebook:before{content:"\E009"}.icon-linkedin:before{content:"\E00A"}.icon-google:before,.icon-linkedin:before{text-rendering:auto;-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto;font-family:custom-Id4028;font-weight:400}.icon-google:before{content:"\E00B";font-size:1.15em}.icon-github:before{content:"\E00C"}.icon-github:before,.icon-weibo:before{text-rendering:auto;-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto;font-family:custom-Id4028;font-weight:400}.icon-weibo:before{content:"\E00D";font-size:1.1em}.icon-zhihu:before{content:"\E00E"}.icon-douban:before,.icon-zhihu:before{text-rendering:auto;-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto;font-family:custom-Id4028;font-weight:400}.icon-douban:before{content:"\E00F"}.icon-pocket:before{text-rendering:auto;-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto;font-family:custom-Id4028;font-weight:400;content:"\E010"}.icon-tumblr:before{content:"\E011"}.icon-instagram:before,.icon-tumblr:before{text-rendering:auto;-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto;font-family:custom-Id4028;font-weight:400;font-size:1.1em}.icon-instagram:before{content:"\E012"}.icon-gitlab:before{content:"\E013"}.icon-gitlab:before,.icon-goodreads:before{text-rendering:auto;-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto;font-family:custom-Id4028;font-weight:400}.icon-goodreads:before{content:"\E014"}.icon-coding:before{text-rendering:auto;-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto;font-family:custom-Id4028;font-weight:400;content:"\E015";font-size:1.3em}.header:after,.header:before{content:" ";display:table}.header:after{clear:both}.header .logo-wrapper{float:left;padding-left:15px}.header .logo-wrapper .logo{font-size:36px;font-family:Chancery,cursive}@media screen and (max-width:1080px){.header .logo-wrapper{display:none}}.header .site-navbar .menu{float:right;padding-right:15px;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.header .site-navbar .menu .menu-item{display:inline-block;margin-left:1em;margin-right:1em;position:relative}.header .site-navbar .menu .menu-item+.menu-item{margin-left:10px}.header .site-navbar .menu .menu-item .submenu{visibility:hidden;position:absolute;top:120%;transition:.2s 1s;list-style:none;padding:0;background:#fff;white-space:nowrap;border:1px solid #ddd;border-bottom:none;transition:.2s .2s;z-index:99}.header .site-navbar .menu .menu-item .submenu li{border-bottom:1px solid #ddd}.header .site-navbar .menu .menu-item .submenu li a{padding:12px}.header .site-navbar .menu .menu-item:hover .submenu{visibility:visible;transition-delay:0s}.header .site-navbar .menu .menu-item-link{font-size:18px}.header .menu-parent:after{content:" \25BC";font-size:11px}.header .menu a:hover{color:#c05b4d}@media screen and (max-width:1080px){.header .site-navbar{display:none}}@media screen and (max-width:1080px){.header{padding:50px 0 0;text-align:center}}.post{padding:3em 5em;margin:0 5em 3em}.post .post-header{margin-bottom:20px;text-align:center;padding-bottom:10px;border-bottom:2px solid #d3d3d3}.post .post-header .post-title{margin:0;font-size:1.8em;font-weight:400;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-header .post-link{display:inline-block;vertical-align:middle;transform:translateZ(0);backface-visibility:hidden;box-shadow:0 0 1px transparent;position:relative;overflow:hidden}.post .post-header .post-link:before{content:"";position:absolute;z-index:-1;height:2px;bottom:0;left:51%;right:51%;background:#c05b4d;transition-duration:.2s;transition-property:right,left;transition-timing-function:ease-out}.post .post-header .post-link.active:before,.post .post-header .post-link:active:before,.post .post-header .post-link:focus:before,.post .post-header .post-link:hover:before{right:0;left:0}.post .post-header .post-meta{font-size:14px;color:#8a8a8a}.post .post-header .post-meta .post-time{font-size:15px}.post .post-header .post-meta .post-category{display:inline}.post .post-header .post-meta .post-category a{color:inherit}.post .post-header .post-meta .post-category a:before{content:"\B7"}.post .post-header .post-meta .post-category a:hover{color:#c05b4d}.post .post-header .post-meta .more-meta:before{content:"\B7"}.post .post-toc .post-toc-title{font-size:1em;max-width:9em;border:0;font-weight:400;padding:.05em .5em;line-height:1em}.post .post-toc .post-toc-content{display:block;padding:.5em;margin-top:-1.5em;line-height:1.3em}.post .post-toc .post-toc-content ul{padding-left:20px;list-style-type:none}.post .post-toc .post-toc-content ul ul{list-style:disc}.post .post-toc .post-toc-content ul ul ul{list-style:circle}.post .post-toc .post-toc-content ul ul li>a{color:#139}.post .post-toc .post-toc-content ul ul li>a:hover{color:#900}@media screen and (min-width:1080px){.post .post-toc{display:none;border:1px solid #ccc;background:#fff;box-shadow:0 0 1em #777;position:fixed;top:0;right:0;max-height:80%;overflow:auto;z-index:99}.post .post-toc .post-toc-content{display:none}.post .post-toc:hover .post-toc-content{display:block}}@media screen and (max-width:1080px){.post .post-toc{padding:10px;border-bottom:2px solid #d3d3d3;word-wrap:break-word}}.post .post-content{word-wrap:break-word}.post .post-content h1,.post .post-content h2,.post .post-content h3,.post .post-content h4,.post .post-content h5,.post .post-content h6{font-weight:600;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-content h1,.post .post-content h2{border-bottom:1px solid #ddd;margin-top:2em}.post .post-content h3{margin-top:1.5em}.post .post-content a{color:#c05b4d;word-break:break-all}.post .post-content a:hover{border-bottom:1px solid #c05b4d}.post .post-content a.fancybox{border:0}.post .post-content blockquote{margin:1em auto;padding:.2em 2em .2em 3em;color:#555;background-color:#f6f6f6;border-left:4px solid #999;position:relative;line-height:1.6;font-family:Open Sans}.post .post-content blockquote:before{font-family:Arial;content:"\201C";color:#999;font-size:4em;position:absolute;left:10px;top:-10px}.post .post-content blockquote footer{color:#333;margin-bottom:1em}.post .post-content blockquote cite:before{content:"\2014";padding-right:.3em;padding-left:.3em}.post .post-content img{display:inline-block;max-width:100%}.post .post-content>table{border:none;width:100%}.post .post-content>table td{background-color:#f0e4e4;border:3px solid #fff;padding:5px 15px}.post .post-content>table th{text-align:left;background-color:#a65b5b;color:#fff;border:3px solid #fff;padding:5px 15px}.post .post-content p>code,.post .post-content pre{padding:0 7px;background:#f8f5ec;border-radius:4px;color:#c7254e}.post .post-content code,.post .post-content pre{font-size:.9em;font-family:Consolas,Monaco,Menlo,monospace;padding:0}.post .post-content .chroma{margin:0}.post .post-content .highlight>.chroma{margin:1em 0;overflow-x:auto;position:relative;border:2px solid #ddd}.post .post-content .highlight>.chroma table{position:relative;padding:.8em 0}.post .post-content .highlight>.chroma table:after{position:absolute;top:0;right:0;padding:0 7px;font-size:.8em;font-weight:700;color:#b1b1b1;content:"Code"}.post .post-content .highlight>.chroma>table:after{content:attr(data-lang);text-transform:capitalize}.post .post-content .highlight>.chroma td,.post .post-content .highlight>.chroma tr{margin:0;padding:0;width:100%;border-collapse:collapse}.post .post-content .highlight>.chroma tr>td:first-child{width:1%;white-space:nowrap}.post .post-content .highlight>.chroma .lnt{color:#cacaca;display:block;line-height:2em}.post .post-content .chroma{color:#586e75;background-color:#f8f5ec}.post .post-content .chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}.post .post-content .chroma .lntable{border-spacing:0;padding:0;margin:0;border:0;width:auto;overflow:auto;display:block}.post .post-content .chroma .hl{display:block;width:100%}.post .post-content .chroma .ln,.post .post-content .chroma .lnt{margin-right:.4em;padding:0 .4em}.post .post-content .chroma .k{color:#859900}.post .post-content .chroma .kc{color:#859900;font-weight:700}.post .post-content .chroma .kd{color:#859900}.post .post-content .chroma .kn{color:#dc322f;font-weight:700}.post .post-content .chroma .kp,.post .post-content .chroma .kr{color:#859900}.post .post-content .chroma .kt{color:#859900;font-weight:700}.post .post-content .chroma .n,.post .post-content .chroma .na{color:#268bd2}.post .post-content .chroma .nb{color:#cb4b16}.post .post-content .chroma .bp{color:#268bd2}.post .post-content .chroma .nc{color:#cb4b16}.post .post-content .chroma .fm,.post .post-content .chroma .nd,.post .post-content .chroma .ne,.post .post-content .chroma .nf,.post .post-content .chroma .ni,.post .post-content .chroma .nl,.post .post-content .chroma .nn,.post .post-content .chroma .no,.post .post-content .chroma .nx,.post .post-content .chroma .py{color:#268bd2}.post .post-content .chroma .nt{color:#268bd2;font-weight:700}.post .post-content .chroma .nv,.post .post-content .chroma .vc,.post .post-content .chroma .vg,.post .post-content .chroma .vi,.post .post-content .chroma .vm{color:#268bd2}.post .post-content .chroma .dl,.post .post-content .chroma .l,.post .post-content .chroma .ld,.post .post-content .chroma .s,.post .post-content .chroma .s1,.post .post-content .chroma .s2,.post .post-content .chroma .sa,.post .post-content .chroma .sb,.post .post-content .chroma .sc,.post .post-content .chroma .sd,.post .post-content .chroma .se,.post .post-content .chroma .sh,.post .post-content .chroma .si,.post .post-content .chroma .sr,.post .post-content .chroma .ss,.post .post-content .chroma .sx{color:#2aa198}.post .post-content .chroma .il,.post .post-content .chroma .m,.post .post-content .chroma .mb,.post .post-content .chroma .mf,.post .post-content .chroma .mh,.post .post-content .chroma .mi,.post .post-content .chroma .mo{color:#2aa198;font-weight:700}.post .post-content .chroma .ow{color:#859900}.post .post-content .chroma .c,.post .post-content .chroma .c1,.post .post-content .chroma .ch,.post .post-content .chroma .cm,.post .post-content .chroma .cp,.post .post-content .chroma .cpf,.post .post-content .chroma .cs{color:#93a1a1;font-style:italic}.post .post-content .chroma .g,.post .post-content .chroma .gd,.post .post-content .chroma .ge,.post .post-content .chroma .gh,.post .post-content .chroma .gi,.post .post-content .chroma .go,.post .post-content .chroma .gp,.post .post-content .chroma .gr,.post .post-content .chroma .gs,.post .post-content .chroma .gt,.post .post-content .chroma .gu{color:#d33682}.post .post-content .post-summary{margin-bottom:1em}.post .post-content .read-more{text-align:right}.post .post-content .read-more .read-more-link{color:#c05b4d;font-size:1.1em;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-content .read-more .read-more-link:hover{border-bottom:1px solid #c05b4d}.post .post-content kbd{display:inline-block;padding:.25em;background-color:#fafafa;border:1px solid #dbdbdb;border-bottom-color:#b5b5b5;border-radius:3px;box-shadow:inset 0 -1px 0 #b5b5b5;font-size:.8em;line-height:1.25;font-family:SFMono-Regular,Liberation Mono,Roboto Mono,Menlo,Monaco,Consolas,Courier New,Courier,monospace;color:#4a4a4a}.post .post-content dl dt:after{content:":"}.post .post-content figure.center{text-align:center}.post .post-content figure figcaption{margin-top:.5em;text-align:center;line-height:1.5em}.post .post-content figure figcaption h4{color:#b5b5b5;margin:0}.post .post-content figure figcaption p{font-size:.9em;color:#b5b5b5;font-style:italic;margin:0}.post .post-content .task-list{list-style:none;padding-left:1.5rem}.post .header-link{margin-left:.5em;fill:currentColor;visibility:hidden}.post .post-content-header:hover .header-link{visibility:visible}.post .post-copyright{padding:10px;background-color:hsla(0,0%,71%,.1);border:1px solid #e1e1e1;border-left:solid;margin-top:3em}.post .post-copyright .copyright-item{margin:5px 0}.post .post-copyright .copyright-item a{color:#c05b4d;word-wrap:break-word}.post .post-copyright .copyright-item a:hover{border-bottom:1px solid #c05b4d}.post .post-copyright .copyright-item .item-title{display:inline-block;min-width:5rem;margin-right:.5rem;text-align:right;font-weight:700}.post .post-copyright .copyright-item .item-title:after{content:" :"}.post .post-reward{margin-top:20px;padding-top:10px;text-align:center;border-top:1px dashed #e6e6e6}.post .post-reward .reward-button{margin:15px 0;padding:3px 7px;display:inline-block;color:#c05b4d;border:1px solid #c05b4d;border-radius:5px;cursor:pointer}.post .post-reward .reward-button:hover{color:#fefefe;background-color:#c05b4d;transition:.5s}.post .post-reward #reward:checked~.qr-code{display:block}.post .post-reward #reward:checked~.reward-button,.post .post-reward .qr-code{display:none}.post .post-reward .qr-code .qr-code-image{display:inline-block;min-width:200px;width:40%;margin-top:15px}.post .post-reward .qr-code .qr-code-image span{display:inline-block;width:100%;margin:8px 0}.post .post-reward .qr-code .image{width:200px;height:200px}.post .post-footer{font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-footer .post-tags{margin-top:1em}.post .post-footer .post-tags a{color:#c05b4d;word-break:break-all;margin-right:10px}.post .post-footer .post-tags a:hover{border-bottom:1px solid #c05b4d}.post .post-footer .post-tags a:before{content:"#"}.post .post-footer .post-nav{margin-top:1em}.post .post-footer .post-nav:after,.post .post-footer .post-nav:before{content:" ";display:table}.post .post-footer .post-nav:after{clear:both}.post .post-footer .post-nav .next,.post .post-footer .post-nav .prev{font-weight:600;font-size:18px;font-family:Athelas,STHeiti,Microsoft Yahei,serif;transition-property:transform;transition-timing-function:ease-out;transition-duration:.3s}.post .post-footer .post-nav .prev{float:left}.post .post-footer .post-nav .prev:hover{color:#c05b4d;transform:translateX(-4px)}.post .post-footer .post-nav .next{float:right}.post .post-footer .post-nav .next:hover{color:#c05b4d;transform:translateX(4px)}.post .post-footer .post-nav .nav-mobile{display:none}@media screen and (max-width:1080px){.post .post-footer .post-nav .nav-default{display:none}.post .post-footer .post-nav .nav-mobile{display:inline}}.post .disqus-button{display:block;padding:15px 0;font-size:16px;color:#555;border:1px solid #ddd;text-align:center;cursor:pointer;margin-top:2em}.post .footnotes{margin-top:50px;font-size:.9em}.post .footnotes hr{border-style:solid;color:#ddd}.post .footnote-ref{display:inline;position:relative;margin-left:3px}.post .footnote-ref:hover .fn-content{opacity:1;visibility:visible;transform:translateZ(0) rotate3d(0,0,0,0)}.post .footnote-ref>a{font-weight:700}.post .footnote-ref>a:after{content:"]"}.post .footnote-ref>a:before{content:"["}.post .fn-content{position:absolute;display:inline-block;z-index:14;left:50%;bottom:100%;line-height:1.3;border-radius:.5em;border:1px solid rgba(0,0,0,.1);background:#f6f6f6;opacity:0;visibility:hidden;transform:translate3d(0,-10px,0);transition:opacity .3s,transform .3s}.post .fn-content .fn-text{display:inline-block;padding:1em;font-size:1.2em;z-index:8}.post .fn-content .fn-text a{font-weight:700}@media screen and (max-width:504px){.post{padding:1em;margin:0 0 2em}.content-wrapper{padding:1em 0 1px}}@media screen and (min-width:900px) and (max-width:1080px){.post{margin:0 2em 2em}.content-wrapper{padding:2em 0 1px}}@media screen and (min-width:504px) and (max-width:899px){.post{padding:1em;margin:0 1em 2em}.content-wrapper{padding:1em 0 1px}}.pagination{margin:2em 0;text-align:center}.pagination:after,.pagination:before{content:" ";display:table}.pagination:after{clear:both}.pagination li{display:inline-block}.pagination li a{background-color:#fff;margin-left:.1em;margin-right:.1em;border:1px solid #222;color:#222;float:left;line-height:1.42857143;padding:6px 12px;position:relative;text-decoration:none;margin-bottom:.2em}.pagination .active a{background-color:#222;border-color:#222;color:#fff;cursor:default;z-index:2}.pagination .next,.pagination .prev{font-weight:600;font-size:20px;font-family:Athelas,STHeiti,Microsoft Yahei,serif;transition-property:transform;transition-timing-function:ease-out;transition-duration:.3s}.pagination .prev{float:left}.pagination .prev:hover{color:#c05b4d;transform:translateX(-4px)}.pagination .next{float:right}.pagination .next:hover{color:#c05b4d;transform:translateX(4px)}@media screen and (max-width:1080px){.pagination{margin:1em 0}}.footer{margin-top:2em}.footer .social-links{display:flex;justify-content:center;align-items:center;flex-wrap:wrap}.footer .social-links .iconfont{font-size:1.7em}.footer .social-links .iconfont+.iconfont{margin-left:.5em}.footer .social-links .iconfont:hover{color:#c05b4d}.footer .copyright{margin:10px 0;color:#8a8a8a;text-align:center;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.footer .copyright .hexo-link,.footer .copyright .theme-link{color:#c05b4d}.footer .copyright .copyright-year{display:block}.footer .copyright .copyright-year .heart{font-size:14px}.archive{margin:0 5em 3em;background-color:#fff;padding:1em 5em 5em}.archive .archive-title{font-family:Athelas,STHeiti,Microsoft Yahei,serif}.archive .archive-title.category,.archive .archive-title.tag{margin:20px 0}.archive .archive-title .archive-name{margin:0;display:inline-block;font-weight:400;font-size:30px;line-height:32px}.archive .archive-title .archive-post-counter{display:none;color:#8a8a8a}.archive .collection-title{font-family:Athelas,STHeiti,Microsoft Yahei,serif}.archive .collection-title .archive-year{margin:2em 0 0;font-weight:400;font-size:28px;line-height:30px}.archive .archive-post{padding:15px 20px 5px;border-bottom:1px solid #cacaca;font-size:1.1em;display:table;width:100%}.archive .archive-post .archive-post-time{color:#8a8a8a;display:table-cell;width:7em;vertical-align:middle}.archive .archive-post .archive-post-title{display:table-cell;vertical-align:middle}.archive .archive-post .archive-post-title .archive-post-link{color:#c05b4d}.archive .archive-post::first-child{margin-top:10px}.archive .archive-post:hover{transition:.2s ease-out;transform:translateX(4px)}.archive .archive-post:hover .archive-post-time{color:#717171}.archive .archive-post:hover .archive-post-title .archive-post-link{color:#a14639}.archive .more-post{text-align:right}.archive .more-post .more-post-link{margin-top:1em;color:#c05b4d;font-size:1.1em;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.archive .more-post .more-post-link:hover{border-bottom:1px solid #c05b4d}@media screen and (max-width:899px){.archive{margin:0 auto 1em;padding:1em}.archive .archive-title .archive-name{font-size:26px}.archive .collection-title .archive-year{margin:10px 0;font-size:24px}.archive .archive-post{padding:5px 10px}.archive .archive-post .archive-post-time{font-size:13px;display:block}.archive .archive-post .archive-post-title{display:block}}.tag-cloud{margin:2em 0 3em;text-align:center;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.tag-cloud .tag-cloud-title{display:inline-block;font-size:24px;color:#c05b4d;border-bottom:2px solid #c05b4d}.tag-cloud .tag-cloud-tags{margin:10px 0}.tag-cloud .tag-cloud-tags a{display:inline-block;position:relative;margin:5px 10px;word-wrap:break-word;transition-duration:.2s;transition-property:transform;transition-timing-function:ease-out}.tag-cloud .tag-cloud-tags a .tag-count{display:inline-block;position:relative;top:-8px;right:-2px;color:#c05b4d;font-size:12px}.tag-cloud .tag-cloud-tags a:active,.tag-cloud .tag-cloud-tags a:focus,.tag-cloud .tag-cloud-tags a:hover{color:#c05b4d;transform:scale(1.1)}.categories{margin:2em 0 3em;text-align:center;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.categories .categories-title{display:inline-block;font-size:18px;color:#c05b4d;border-bottom:2px solid #c05b4d}.categories .categories-tags{margin:10px 0}.categories .categories-tags .category-link{display:inline-block;position:relative;margin:5px 10px;word-wrap:break-word;transition-duration:.2s;transition-property:transform;transition-timing-function:ease-out}.categories .categories-tags .category-link .category-count{display:inline-block;position:relative;top:-8px;right:-2px;color:#c05b4d;font-size:12px}.categories .categories-tags .category-link:active,.categories .categories-tags .category-link:focus,.categories .categories-tags .category-link:hover{color:#c05b4d;transform:scale(1.1)}.slideout-menu{position:fixed;top:0;left:0;bottom:0;width:180px;min-height:100vh;overflow-y:hidden;-webkit-overflow-scrolling:touch;z-index:0;display:none}.slideout-panel{z-index:1;background-color:#fefefe;min-height:100%}.slideout-open,.slideout-open .slideout-panel,.slideout-open body{overflow:hidden}.slideout-open .slideout-menu{display:block}.mobile-navbar{display:none;position:fixed;top:0;left:0;width:100%;height:50px;background:#fefefe;box-shadow:0 2px 2px #cacaca;text-align:center;transition:transform .3s ease;z-index:99}.mobile-navbar.fixed-open{transform:translate3d(180px,0,0)}.mobile-navbar .mobile-header-logo{display:inline-block;margin-right:50px}.mobile-navbar .mobile-header-logo .logo{font-size:22px;line-height:50px;font-family:Chancery,cursive}.mobile-navbar .mobile-navbar-icon{color:#c05b4d;height:50px;width:50px;font-size:24px;text-align:center;float:left;position:relative;transition:background .5s}@keyframes clickfirst{0%{transform:translateY(6px) rotate(0deg)}to{transform:translateY(0) rotate(45deg)}}@keyframes clickmid{0%{opacity:1}to{opacity:0}}@keyframes clicklast{0%{transform:translateY(-6px) rotate(0deg)}to{transform:translateY(0) rotate(-45deg)}}@keyframes outfirst{0%{transform:translateY(0) rotate(-45deg)}to{transform:translateY(-6px) rotate(0deg)}}@keyframes outmid{0%{opacity:0}to{opacity:1}}@keyframes outlast{0%{transform:translateY(0) rotate(45deg)}to{transform:translateY(6px) rotate(0deg)}}.mobile-navbar .mobile-navbar-icon span{position:absolute;left:15px;top:25px;left:calc((100% - 20px) / 2);top:calc((100% - 1px) / 2);width:20px;height:1px;background-color:#c05b4d}.mobile-navbar .mobile-navbar-icon span:first-child{transform:translateY(6px) rotate(0deg)}.mobile-navbar .mobile-navbar-icon span:nth-child(3){transform:translateY(-6px) rotate(0deg)}.mobile-navbar .mobile-navbar-icon.icon-click span:first-child{animation-duration:.5s;animation-fill-mode:both;animation-name:clickfirst}.mobile-navbar .mobile-navbar-icon.icon-click span:nth-child(2){animation-duration:.2s;animation-fill-mode:both;animation-name:clickmid}.mobile-navbar .mobile-navbar-icon.icon-click span:nth-child(3){animation-duration:.5s;animation-fill-mode:both;animation-name:clicklast}.mobile-navbar .mobile-navbar-icon.icon-out span:first-child{animation-duration:.5s;animation-fill-mode:both;animation-name:outfirst}.mobile-navbar .mobile-navbar-icon.icon-out span:nth-child(2){animation-duration:.2s;animation-fill-mode:both;animation-name:outmid}.mobile-navbar .mobile-navbar-icon.icon-out span:nth-child(3){animation-duration:.5s;animation-fill-mode:both;animation-name:outlast}.mobile-menu{background-color:hsla(45,46%,95%,.5)}.mobile-menu .mobile-menu-list{position:relative;list-style:none;margin-top:50px;padding:0;border-top:1px solid #f8f5ec}.mobile-menu .mobile-menu-list .mobile-menu-item{padding:10px 30px;border-bottom:1px solid #f8f5ec}.mobile-menu .mobile-menu-list a{font-size:18px;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.mobile-menu .mobile-menu-list a:hover{color:#c05b4d}@media screen and (max-width:1080px){.mobile-navbar{display:block}}.back-to-top{display:none;position:fixed;right:2em;bottom:2em;transition-property:transform;transition-timing-function:ease-out;transition-duration:.3s;z-index:10}.back-to-top:hover{transform:translateY(-5px)}@media screen and (max-width:1080px){.back-to-top{display:none!important}}.not-found{text-align:center}.not-found .error-emoji{color:#363636;font-size:3rem}.not-found .error-text{color:#797979;font-size:1.25rem}.not-found .error-link{margin-top:2rem}.not-found .error-link a{color:#c05b4d}
+/*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}html{font-size:18px;box-sizing:border-box}body{padding:0;margin:0;font-family:Source Sans Pro,Helvetica Neue,Arial,sans-serif;font-weight:400;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.8;color:rgba(0,0,0,.84);background:#fefefe;scroll-behavior:smooth}@media screen and (max-width:1080px){body{border-top:0}}::selection{background:#c05b4d;color:#fff}img{max-width:100%;height:auto;display:inline-block;vertical-align:middle}a{color:rgba(0,0,0,.84);text-decoration:none}h1{font-size:1.6em}h1,h2{font-family:Athelas,STHeiti,Microsoft Yahei,serif}h2{font-size:1.5em}h3{font-size:1.3em}h3,h4{font-family:Athelas,STHeiti,Microsoft Yahei,serif}h4{font-size:1.2em}h5{font-size:1.1em}h5,h6{font-family:Athelas,STHeiti,Microsoft Yahei,serif}h6{font-size:1em}.container{margin:0 auto;width:1080px}@media screen and (max-width:1080px){.container{width:100%}}.content-wrapper{padding:3em 0 1px}.video-container{position:relative;padding-bottom:56.25%;padding-top:25px;height:0}.video-container iframe{position:absolute;top:0;left:0;width:100%;height:100%}.bg-llight{background-color:#f2f2f5}.bg-white{background-color:#fff}.iconfont{font-family:iconfont!important;font-style:normal;-webkit-font-smoothing:antialiased;-webkit-text-stroke-width:.2px;-moz-osx-font-smoothing:grayscale;cursor:pointer}.icon-heart:before{content:"\E000"}.icon-heart:before,.icon-right:before{text-rendering:auto;-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto;font-family:custom-Id4028;font-weight:400}.icon-right:before{content:"\E001"}.icon-left:before{content:"\E002"}.icon-left:before,.icon-up:before{text-rendering:auto;-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto;font-family:custom-Id4028;font-weight:400}.icon-up:before{content:"\E003";font-size:2em}.icon-new-window:before{content:"\E004"}.icon-new-window:before,.icon-rss:before{text-rendering:auto;-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto;font-family:custom-Id4028;font-weight:400}.icon-rss:before{content:"\E005"}.icon-email:before{content:"\E006";font-size:.8em}.icon-email:before,.icon-stack-overflow:before{text-rendering:auto;-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto;font-family:custom-Id4028;font-weight:400}.icon-stack-overflow:before{content:"\E007"}.icon-twitter:before{content:"\E008";font-size:.9em}.icon-facebook:before,.icon-twitter:before{text-rendering:auto;-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto;font-family:custom-Id4028;font-weight:400}.icon-facebook:before{content:"\E009"}.icon-linkedin:before{content:"\E00A"}.icon-google:before,.icon-linkedin:before{text-rendering:auto;-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto;font-family:custom-Id4028;font-weight:400}.icon-google:before{content:"\E00B";font-size:1.15em}.icon-github:before{content:"\E00C"}.icon-github:before,.icon-weibo:before{text-rendering:auto;-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto;font-family:custom-Id4028;font-weight:400}.icon-weibo:before{content:"\E00D";font-size:1.1em}.icon-zhihu:before{content:"\E00E"}.icon-douban:before,.icon-zhihu:before{text-rendering:auto;-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto;font-family:custom-Id4028;font-weight:400}.icon-douban:before{content:"\E00F"}.icon-pocket:before{text-rendering:auto;-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto;font-family:custom-Id4028;font-weight:400;content:"\E010"}.icon-tumblr:before{content:"\E011"}.icon-instagram:before,.icon-tumblr:before{text-rendering:auto;-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto;font-family:custom-Id4028;font-weight:400;font-size:1.1em}.icon-instagram:before{content:"\E012"}.icon-gitlab:before{content:"\E013"}.icon-gitlab:before,.icon-goodreads:before{text-rendering:auto;-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto;font-family:custom-Id4028;font-weight:400}.icon-goodreads:before{content:"\E014"}.icon-coding:before{text-rendering:auto;-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto;font-family:custom-Id4028;font-weight:400;content:"\E015";font-size:1.3em}.header:after,.header:before{content:" ";display:table}.header:after{clear:both}.header .logo-wrapper{float:left;padding-left:15px}.header .logo-wrapper .logo{font-size:36px;font-family:Chancery,cursive}@media screen and (max-width:1080px){.header .logo-wrapper{display:none}}.header .site-navbar .menu{float:right;padding-right:15px;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.header .site-navbar .menu .menu-item{display:inline-block;margin-left:1em;margin-right:1em;position:relative}.header .site-navbar .menu .menu-item+.menu-item{margin-left:10px}.header .site-navbar .menu .menu-item .submenu{visibility:hidden;position:absolute;top:120%;transition:.2s 1s;list-style:none;padding:0;background:#fff;white-space:nowrap;border:1px solid #ddd;border-bottom:none;transition:.2s .2s;z-index:99}.header .site-navbar .menu .menu-item .submenu li{border-bottom:1px solid #ddd}.header .site-navbar .menu .menu-item .submenu li a{padding:12px}.header .site-navbar .menu .menu-item:hover .submenu{visibility:visible;transition-delay:0s}.header .site-navbar .menu .menu-item-link{font-size:18px}.header .menu-parent:after{content:" \25BC";font-size:11px}.header .menu a:hover{color:#c05b4d}@media screen and (max-width:1080px){.header .site-navbar{display:none}}@media screen and (max-width:1080px){.header{padding:50px 0 0;text-align:center}}.post{padding:3em 5em;margin:0 5em 3em}.post .post-header{margin-bottom:20px;text-align:center;padding-bottom:10px;border-bottom:2px solid #d3d3d3}.post .post-header .post-title{margin:0;font-size:1.8em;font-weight:400;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-header .post-link{display:inline-block;vertical-align:middle;transform:translateZ(0);backface-visibility:hidden;box-shadow:0 0 1px transparent;position:relative;overflow:hidden}.post .post-header .post-link:before{content:"";position:absolute;z-index:-1;height:2px;bottom:0;left:51%;right:51%;background:#c05b4d;transition-duration:.2s;transition-property:right,left;transition-timing-function:ease-out}.post .post-header .post-link.active:before,.post .post-header .post-link:active:before,.post .post-header .post-link:focus:before,.post .post-header .post-link:hover:before{right:0;left:0}.post .post-header .post-meta{font-size:14px;color:#8a8a8a}.post .post-header .post-meta .post-time{font-size:15px}.post .post-header .post-meta .post-category{display:inline}.post .post-header .post-meta .post-category a{color:inherit}.post .post-header .post-meta .post-category a:before{content:"\B7"}.post .post-header .post-meta .post-category a:hover{color:#c05b4d}.post .post-header .post-meta .more-meta:before{content:"\B7"}.post .post-toc .post-toc-title{font-size:1em;max-width:9em;border:0;font-weight:400;padding:.05em .5em;line-height:1em}.post .post-toc .post-toc-content{display:block;padding:.5em;margin-top:-1.5em;line-height:1.3em}.post .post-toc .post-toc-content ul{padding-left:20px;list-style-type:none}.post .post-toc .post-toc-content ul ul{list-style:disc}.post .post-toc .post-toc-content ul ul ul{list-style:circle}.post .post-toc .post-toc-content ul ul li>a{color:#139}.post .post-toc .post-toc-content ul ul li>a:hover{color:#900}@media screen and (min-width:1080px){.post .post-toc{display:none;border:1px solid #ccc;background:#fff;box-shadow:0 0 1em #777;position:fixed;top:0;right:0;max-height:80%;overflow:auto;z-index:99}.post .post-toc .post-toc-content{display:none}.post .post-toc:hover .post-toc-content{display:block}}@media screen and (max-width:1080px){.post .post-toc{padding:10px;border-bottom:2px solid #d3d3d3;word-wrap:break-word}}.post .post-content{word-wrap:break-word}.post .post-content h1,.post .post-content h2,.post .post-content h3,.post .post-content h4,.post .post-content h5,.post .post-content h6{font-weight:600;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-content h1,.post .post-content h2{border-bottom:1px solid #ddd;margin-top:2em}.post .post-content h3{margin-top:1.5em}.post .post-content a{color:#c05b4d;word-break:break-all}.post .post-content a:hover{border-bottom:1px solid #c05b4d}.post .post-content blockquote{margin:1em auto;padding:.2em 2em .2em 3em;color:#555;background-color:#f6f6f6;border-left:4px solid #999;position:relative;line-height:1.6;font-family:Open Sans}.post .post-content blockquote:before{font-family:Arial;content:"\201C";color:#999;font-size:4em;position:absolute;left:10px;top:-10px}.post .post-content blockquote footer{color:#333;margin-bottom:1em}.post .post-content blockquote cite:before{content:"\2014";padding-right:.3em;padding-left:.3em}.post .post-content iframe{margin:0 auto;display:block;width:100%}.post .post-content>table{border:none;width:100%}.post .post-content>table td{background-color:#f0e4e4;border:3px solid #fff;padding:5px 15px}.post .post-content>table th{text-align:left;background-color:#a65b5b;color:#fff;border:3px solid #fff;padding:5px 15px}.post .post-content p>code,.post .post-content pre{padding:0 7px;background:#f8f5ec;border-radius:4px;color:#c7254e}.post .post-content code,.post .post-content pre{font-size:.9em;font-family:Consolas,Monaco,Menlo,monospace;padding:0}.post .post-content .chroma{margin:0}.post .post-content .highlight>.chroma{margin:1em 0;overflow-x:auto;position:relative;border:2px solid #ddd}.post .post-content .highlight>.chroma table{position:relative;padding:.8em 0}.post .post-content .highlight>.chroma table:after{position:absolute;top:0;right:0;padding:0 7px;font-size:.8em;font-weight:700;color:#b1b1b1;content:"Code"}.post .post-content .highlight>.chroma>table:after{content:attr(data-lang);text-transform:capitalize}.post .post-content .highlight>.chroma td,.post .post-content .highlight>.chroma tr{margin:0;padding:0;width:100%;border-collapse:collapse}.post .post-content .highlight>.chroma tr>td:first-child{width:1%;white-space:nowrap}.post .post-content .highlight>.chroma .lnt{color:#cacaca;display:block;line-height:2em}.post .post-content .chroma{color:#586e75;background-color:#f8f5ec}.post .post-content .chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}.post .post-content .chroma .lntable{border-spacing:0;padding:0;margin:0;border:0;width:auto;overflow:auto;display:block}.post .post-content .chroma .hl{display:block;width:100%}.post .post-content .chroma .ln,.post .post-content .chroma .lnt{margin-right:.4em;padding:0 .4em}.post .post-content .chroma .k{color:#859900}.post .post-content .chroma .kc{color:#859900;font-weight:700}.post .post-content .chroma .kd{color:#859900}.post .post-content .chroma .kn{color:#dc322f;font-weight:700}.post .post-content .chroma .kp,.post .post-content .chroma .kr{color:#859900}.post .post-content .chroma .kt{color:#859900;font-weight:700}.post .post-content .chroma .n,.post .post-content .chroma .na{color:#268bd2}.post .post-content .chroma .nb{color:#cb4b16}.post .post-content .chroma .bp{color:#268bd2}.post .post-content .chroma .nc{color:#cb4b16}.post .post-content .chroma .fm,.post .post-content .chroma .nd,.post .post-content .chroma .ne,.post .post-content .chroma .nf,.post .post-content .chroma .ni,.post .post-content .chroma .nl,.post .post-content .chroma .nn,.post .post-content .chroma .no,.post .post-content .chroma .nx,.post .post-content .chroma .py{color:#268bd2}.post .post-content .chroma .nt{color:#268bd2;font-weight:700}.post .post-content .chroma .nv,.post .post-content .chroma .vc,.post .post-content .chroma .vg,.post .post-content .chroma .vi,.post .post-content .chroma .vm{color:#268bd2}.post .post-content .chroma .dl,.post .post-content .chroma .l,.post .post-content .chroma .ld,.post .post-content .chroma .s,.post .post-content .chroma .s1,.post .post-content .chroma .s2,.post .post-content .chroma .sa,.post .post-content .chroma .sb,.post .post-content .chroma .sc,.post .post-content .chroma .sd,.post .post-content .chroma .se,.post .post-content .chroma .sh,.post .post-content .chroma .si,.post .post-content .chroma .sr,.post .post-content .chroma .ss,.post .post-content .chroma .sx{color:#2aa198}.post .post-content .chroma .il,.post .post-content .chroma .m,.post .post-content .chroma .mb,.post .post-content .chroma .mf,.post .post-content .chroma .mh,.post .post-content .chroma .mi,.post .post-content .chroma .mo{color:#2aa198;font-weight:700}.post .post-content .chroma .ow{color:#859900}.post .post-content .chroma .c,.post .post-content .chroma .c1,.post .post-content .chroma .ch,.post .post-content .chroma .cm,.post .post-content .chroma .cp,.post .post-content .chroma .cpf,.post .post-content .chroma .cs{color:#93a1a1;font-style:italic}.post .post-content .chroma .g,.post .post-content .chroma .gd,.post .post-content .chroma .ge,.post .post-content .chroma .gh,.post .post-content .chroma .gi,.post .post-content .chroma .go,.post .post-content .chroma .gp,.post .post-content .chroma .gr,.post .post-content .chroma .gs,.post .post-content .chroma .gt,.post .post-content .chroma .gu{color:#d33682}.post .post-content .post-summary{margin-bottom:1em}.post .post-content .read-more{text-align:right}.post .post-content .read-more .read-more-link{color:#c05b4d;font-size:1.1em;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-content .read-more .read-more-link:hover{border-bottom:1px solid #c05b4d}.post .post-content kbd{display:inline-block;padding:.25em;background-color:#fafafa;border:1px solid #dbdbdb;border-bottom-color:#b5b5b5;border-radius:3px;box-shadow:inset 0 -1px 0 #b5b5b5;font-size:.8em;line-height:1.25;font-family:SFMono-Regular,Liberation Mono,Roboto Mono,Menlo,Monaco,Consolas,Courier New,Courier,monospace;color:#4a4a4a}.post .post-content dl dt:after{content:":"}.post .post-content figure a:hover{border:0}.post .post-content figure.center{text-align:center}.post .post-content figure figcaption{margin-top:.5em;text-align:center;line-height:1.5em}.post .post-content figure figcaption h4{color:#b5b5b5;margin:0}.post .post-content figure figcaption p{font-size:.9em;color:#b5b5b5;font-style:italic;margin:0}.post .post-content .task-list{list-style:none;padding-left:1.5rem}.post .header-link{margin-left:.5em;fill:currentColor;visibility:hidden}.post .post-content-header:hover .header-link{visibility:visible}.post .post-copyright{padding:10px;background-color:hsla(0,0%,71%,.1);border:1px solid #e1e1e1;border-left:solid;margin-top:3em}.post .post-copyright .copyright-item{margin:5px 0}.post .post-copyright .copyright-item a{color:#c05b4d;word-wrap:break-word}.post .post-copyright .copyright-item a:hover{border-bottom:1px solid #c05b4d}.post .post-copyright .copyright-item .item-title{display:inline-block;min-width:5rem;margin-right:.5rem;text-align:right;font-weight:700}.post .post-copyright .copyright-item .item-title:after{content:" :"}.post .post-reward{margin-top:20px;padding-top:10px;text-align:center;border-top:1px dashed #e6e6e6}.post .post-reward .reward-button{margin:15px 0;padding:3px 7px;display:inline-block;color:#c05b4d;border:1px solid #c05b4d;border-radius:5px;cursor:pointer}.post .post-reward .reward-button:hover{color:#fefefe;background-color:#c05b4d;transition:.5s}.post .post-reward #reward:checked~.qr-code{display:block}.post .post-reward #reward:checked~.reward-button,.post .post-reward .qr-code{display:none}.post .post-reward .qr-code .qr-code-image{display:inline-block;min-width:200px;width:40%;margin-top:15px}.post .post-reward .qr-code .qr-code-image span{display:inline-block;width:100%;margin:8px 0}.post .post-reward .qr-code .image{width:200px;height:200px}.post .post-footer{font-family:Athelas,STHeiti,Microsoft Yahei,serif}.post .post-footer .post-tags{margin-top:1em}.post .post-footer .post-tags a{color:#c05b4d;word-break:break-all;margin-right:10px}.post .post-footer .post-tags a:hover{border-bottom:1px solid #c05b4d}.post .post-footer .post-tags a:before{content:"#"}.post .post-footer .post-nav{margin-top:1em}.post .post-footer .post-nav:after,.post .post-footer .post-nav:before{content:" ";display:table}.post .post-footer .post-nav:after{clear:both}.post .post-footer .post-nav .next,.post .post-footer .post-nav .prev{font-weight:600;font-size:18px;font-family:Athelas,STHeiti,Microsoft Yahei,serif;transition-property:transform;transition-timing-function:ease-out;transition-duration:.3s}.post .post-footer .post-nav .prev{float:left}.post .post-footer .post-nav .prev:hover{color:#c05b4d;transform:translateX(-4px)}.post .post-footer .post-nav .next{float:right}.post .post-footer .post-nav .next:hover{color:#c05b4d;transform:translateX(4px)}.post .post-footer .post-nav .nav-mobile{display:none}@media screen and (max-width:1080px){.post .post-footer .post-nav .nav-default{display:none}.post .post-footer .post-nav .nav-mobile{display:inline}}.post .disqus-button{display:block;padding:15px 0;font-size:16px;color:#555;border:1px solid #ddd;text-align:center;cursor:pointer;margin-top:2em}.post .footnotes{margin-top:50px;font-size:.9em}.post .footnotes hr{border-style:solid;color:#ddd}.post .footnote-ref{display:inline;position:relative;margin-left:3px}.post .footnote-ref:hover .fn-content{opacity:1;visibility:visible;transform:translateZ(0) rotate3d(0,0,0,0)}.post .footnote-ref>a{font-weight:700}.post .footnote-ref>a:after{content:"]"}.post .footnote-ref>a:before{content:"["}.post .fn-content{position:absolute;display:inline-block;z-index:14;left:50%;bottom:100%;line-height:1.3;border-radius:.5em;border:1px solid rgba(0,0,0,.1);background:#f6f6f6;opacity:0;visibility:hidden;transform:translate3d(0,-10px,0);transition:opacity .3s,transform .3s}.post .fn-content .fn-text{display:inline-block;padding:1em;font-size:1.2em;z-index:8}.post .fn-content .fn-text a{font-weight:700}@media screen and (max-width:504px){.post{padding:1em;margin:0 0 2em}.content-wrapper{padding:1em 0 1px}}@media screen and (min-width:900px) and (max-width:1080px){.post{margin:0 2em 2em}.content-wrapper{padding:2em 0 1px}}@media screen and (min-width:504px) and (max-width:899px){.post{padding:1em;margin:0 1em 2em}.content-wrapper{padding:1em 0 1px}}.pagination{margin:2em 0;text-align:center}.pagination:after,.pagination:before{content:" ";display:table}.pagination:after{clear:both}.pagination li{display:inline-block}.pagination li a{background-color:#fff;margin-left:.1em;margin-right:.1em;border:1px solid #222;color:#222;float:left;line-height:1.42857143;padding:6px 12px;position:relative;text-decoration:none;margin-bottom:.2em}.pagination .active a{background-color:#222;border-color:#222;color:#fff;cursor:default;z-index:2}.pagination .next,.pagination .prev{font-weight:600;font-size:20px;font-family:Athelas,STHeiti,Microsoft Yahei,serif;transition-property:transform;transition-timing-function:ease-out;transition-duration:.3s}.pagination .prev{float:left}.pagination .prev:hover{color:#c05b4d;transform:translateX(-4px)}.pagination .next{float:right}.pagination .next:hover{color:#c05b4d;transform:translateX(4px)}@media screen and (max-width:1080px){.pagination{margin:1em 0}}.footer{margin-top:2em}.footer .social-links{display:flex;justify-content:center;align-items:center;flex-wrap:wrap}.footer .social-links .iconfont{font-size:1.7em}.footer .social-links .iconfont+.iconfont{margin-left:.5em}.footer .social-links .iconfont:hover{color:#c05b4d}.footer .copyright{margin:10px 0;color:#8a8a8a;text-align:center;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.footer .copyright .hexo-link,.footer .copyright .theme-link{color:#c05b4d}.footer .copyright .copyright-year{display:block}.footer .copyright .copyright-year .heart{font-size:14px}.archive{margin:0 5em 3em;background-color:#fff;padding:1em 5em 5em}.archive .archive-title{font-family:Athelas,STHeiti,Microsoft Yahei,serif}.archive .archive-title.category,.archive .archive-title.tag{margin:20px 0}.archive .archive-title .archive-name{margin:0;display:inline-block;font-weight:400;font-size:30px;line-height:32px}.archive .archive-title .archive-post-counter{display:none;color:#8a8a8a}.archive .collection-title{font-family:Athelas,STHeiti,Microsoft Yahei,serif}.archive .collection-title .archive-year{margin:2em 0 0;font-weight:400;font-size:28px;line-height:30px}.archive .archive-post{padding:15px 20px 5px;border-bottom:1px solid #cacaca;font-size:1.1em;display:table;width:100%}.archive .archive-post .archive-post-time{color:#8a8a8a;display:table-cell;width:7em;vertical-align:middle}.archive .archive-post .archive-post-title{display:table-cell;vertical-align:middle}.archive .archive-post .archive-post-title .archive-post-link{color:#c05b4d}.archive .archive-post::first-child{margin-top:10px}.archive .archive-post:hover{transition:.2s ease-out;transform:translateX(4px)}.archive .archive-post:hover .archive-post-time{color:#717171}.archive .archive-post:hover .archive-post-title .archive-post-link{color:#a14639}.archive .more-post{text-align:right}.archive .more-post .more-post-link{margin-top:1em;color:#c05b4d;font-size:1.1em;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.archive .more-post .more-post-link:hover{border-bottom:1px solid #c05b4d}@media screen and (max-width:899px){.archive{margin:0 auto 1em;padding:1em}.archive .archive-title .archive-name{font-size:26px}.archive .collection-title .archive-year{margin:10px 0;font-size:24px}.archive .archive-post{padding:5px 10px}.archive .archive-post .archive-post-time{font-size:13px;display:block}.archive .archive-post .archive-post-title{display:block}}.tag-cloud{margin:2em 0 3em;text-align:center;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.tag-cloud .tag-cloud-title{display:inline-block;font-size:24px;color:#c05b4d;border-bottom:2px solid #c05b4d}.tag-cloud .tag-cloud-tags{margin:10px 0}.tag-cloud .tag-cloud-tags a{display:inline-block;position:relative;margin:5px 10px;word-wrap:break-word;transition-duration:.2s;transition-property:transform;transition-timing-function:ease-out}.tag-cloud .tag-cloud-tags a .tag-count{display:inline-block;position:relative;top:-8px;right:-2px;color:#c05b4d;font-size:12px}.tag-cloud .tag-cloud-tags a:active,.tag-cloud .tag-cloud-tags a:focus,.tag-cloud .tag-cloud-tags a:hover{color:#c05b4d;transform:scale(1.1)}.categories{margin:2em 0 3em;text-align:center;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.categories .categories-title{display:inline-block;font-size:18px;color:#c05b4d;border-bottom:2px solid #c05b4d}.categories .categories-tags{margin:10px 0}.categories .categories-tags .category-link{display:inline-block;position:relative;margin:5px 10px;word-wrap:break-word;transition-duration:.2s;transition-property:transform;transition-timing-function:ease-out}.categories .categories-tags .category-link .category-count{display:inline-block;position:relative;top:-8px;right:-2px;color:#c05b4d;font-size:12px}.categories .categories-tags .category-link:active,.categories .categories-tags .category-link:focus,.categories .categories-tags .category-link:hover{color:#c05b4d;transform:scale(1.1)}.slideout-menu{position:fixed;top:0;left:0;bottom:0;width:180px;min-height:100vh;overflow-y:hidden;-webkit-overflow-scrolling:touch;z-index:0;display:none}.slideout-panel{z-index:1;background-color:#fefefe;min-height:100%}.slideout-open,.slideout-open .slideout-panel,.slideout-open body{overflow:hidden}.slideout-open .slideout-menu{display:block}.mobile-navbar{display:none;position:fixed;top:0;left:0;width:100%;height:50px;background:#fefefe;box-shadow:0 2px 2px #cacaca;text-align:center;transition:transform .3s ease;z-index:99}.mobile-navbar.fixed-open{transform:translate3d(180px,0,0)}.mobile-navbar .mobile-header-logo{display:inline-block;margin-right:50px}.mobile-navbar .mobile-header-logo .logo{font-size:22px;line-height:50px;font-family:Chancery,cursive}.mobile-navbar .mobile-navbar-icon{color:#c05b4d;height:50px;width:50px;font-size:24px;text-align:center;float:left;position:relative;transition:background .5s}@keyframes clickfirst{0%{transform:translateY(6px) rotate(0deg)}to{transform:translateY(0) rotate(45deg)}}@keyframes clickmid{0%{opacity:1}to{opacity:0}}@keyframes clicklast{0%{transform:translateY(-6px) rotate(0deg)}to{transform:translateY(0) rotate(-45deg)}}@keyframes outfirst{0%{transform:translateY(0) rotate(-45deg)}to{transform:translateY(-6px) rotate(0deg)}}@keyframes outmid{0%{opacity:0}to{opacity:1}}@keyframes outlast{0%{transform:translateY(0) rotate(45deg)}to{transform:translateY(6px) rotate(0deg)}}.mobile-navbar .mobile-navbar-icon span{position:absolute;left:15px;top:25px;left:calc((100% - 20px) / 2);top:calc((100% - 1px) / 2);width:20px;height:1px;background-color:#c05b4d}.mobile-navbar .mobile-navbar-icon span:first-child{transform:translateY(6px) rotate(0deg)}.mobile-navbar .mobile-navbar-icon span:nth-child(3){transform:translateY(-6px) rotate(0deg)}.mobile-navbar .mobile-navbar-icon.icon-click span:first-child{animation-duration:.5s;animation-fill-mode:both;animation-name:clickfirst}.mobile-navbar .mobile-navbar-icon.icon-click span:nth-child(2){animation-duration:.2s;animation-fill-mode:both;animation-name:clickmid}.mobile-navbar .mobile-navbar-icon.icon-click span:nth-child(3){animation-duration:.5s;animation-fill-mode:both;animation-name:clicklast}.mobile-navbar .mobile-navbar-icon.icon-out span:first-child{animation-duration:.5s;animation-fill-mode:both;animation-name:outfirst}.mobile-navbar .mobile-navbar-icon.icon-out span:nth-child(2){animation-duration:.2s;animation-fill-mode:both;animation-name:outmid}.mobile-navbar .mobile-navbar-icon.icon-out span:nth-child(3){animation-duration:.5s;animation-fill-mode:both;animation-name:outlast}.mobile-menu{background-color:hsla(45,46%,95%,.5)}.mobile-menu .mobile-menu-list{position:relative;list-style:none;margin-top:50px;padding:0;border-top:1px solid #f8f5ec}.mobile-menu .mobile-menu-list .mobile-menu-item{padding:10px 30px;border-bottom:1px solid #f8f5ec}.mobile-menu .mobile-menu-list a{font-size:18px;font-family:Athelas,STHeiti,Microsoft Yahei,serif}.mobile-menu .mobile-menu-list a:hover{color:#c05b4d}@media screen and (max-width:1080px){.mobile-navbar{display:block}}.back-to-top{display:none;position:fixed;right:2em;bottom:2em;transition-property:transform;transition-timing-function:ease-out;transition-duration:.3s;z-index:10}.back-to-top:hover{transform:translateY(-5px)}@media screen and (max-width:1080px){.back-to-top{display:none!important}}.not-found{text-align:center}.not-found .error-emoji{color:#363636;font-size:3rem}.not-found .error-text{color:#797979;font-size:1.25rem}.not-found .error-link{margin-top:2rem}.not-found .error-link a{color:#c05b4d}
/*# sourceMappingURL=jane.min.css.map*/ \ No newline at end of file
diff --git a/static/dist/jane.min.css.map b/static/dist/jane.min.css.map
index 8e1c1ef..16f9d46 100644
--- a/static/dist/jane.min.css.map
+++ b/static/dist/jane.min.css.map
@@ -1 +1 @@
-{"version":3,"sources":["webpack:///../<input css 2>","webpack:///./css/_variables.scss","webpack:///./css/_common/_normalize.scss","webpack:///./css/style.scss","webpack:///./css/_base.scss","webpack:///./css/_common/_utils.scss","webpack:///./css/_iconfont.scss","webpack:///./css/_partial/_header.scss","webpack:///./css/_partial/_header/_logo.scss","webpack:///./css/_partial/_header/_menu.scss","webpack:///./css/_partial/_post.scss","webpack:///./css/_partial/_post/_header.scss","webpack:///./css/_common/_animation.scss","webpack:///./css/_partial/_post/_toc.scss","webpack:///./css/_partial/_post/_content.scss","webpack:///./css/_partial/_post/_code.scss","webpack:///./css/_partial/_post/_chroma_highlight.scss","webpack:///./css/_partial/_post/_copyright.scss","webpack:///./css/_partial/_post/_reward.scss","webpack:///./css/_partial/_post/_footer.scss","webpack:///./css/_partial/_post/_disqus.scss","webpack:///./css/_partial/_post/_footnote.scss","webpack:///./css/_partial/_pagination.scss","webpack:///./css/_partial/_footer.scss","webpack:///./css/_partial/_footer/_social.scss","webpack:///./css/_partial/_footer/_copyright.scss","webpack:///./css/_partial/_archive.scss","webpack:///./css/_partial/_tags.scss","webpack:///./css/_partial/_categories.scss","webpack:///./css/_partial/_slideout.scss","webpack:///./css/_partial/_mobile.scss","webpack:///./css/_partial/_back-to-top.scss","webpack:///./css/_partial/_404.scss"],"names":[],"mappings":"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","file":"jane.min.css","sourcesContent":["@font-face { font-family: custom-Id4028; src:url('~!!iconfont-webpack-plugin/lib/loader.js?{\"svgs\":[\"src/fonts/svg/heart.svg\",\"src/fonts/svg/right.svg\",\"src/fonts/svg/left.svg\",\"src/fonts/svg/up.svg\",\"src/fonts/svg/new-window.svg\",\"src/fonts/svg/rss.svg\",\"src/fonts/svg/email.svg\",\"src/fonts/svg/stack-overflow.svg\",\"src/fonts/svg/twitter.svg\",\"src/fonts/svg/facebook.svg\",\"src/fonts/svg/linkedin.svg\",\"src/fonts/svg/google.svg\",\"src/fonts/svg/github.svg\",\"src/fonts/svg/weibo.svg\",\"src/fonts/svg/zhihu.svg\",\"src/fonts/svg/douban.svg\",\"src/fonts/svg/pocket.svg\",\"src/fonts/svg/tumblr.svg\",\"src/fonts/svg/instagram.svg\",\"src/fonts/svg/gitlab.svg\",\"src/fonts/svg/goodreads.svg\",\"src/fonts/svg/coding.svg\"],\"name\":\"custom-Id4028\"}!iconfont-webpack-plugin/placeholder.svg') format('woff');font-weight: normal;font-style: normal;}\n\n\n// WEBPACK FOOTER //\n// ../<input css 2>","// ==============================\n// Variables\n// ==============================\n\n// ========== Theme Color ========== //\n// Config here to change theme color\n// Default | Mint Green | Cobalt Blue | Hot Pink | Dark Violet\n$theme-color-config: 'Default';\n\n// Default theme color map\n$theme-color-map: (\n 'Default': #c05b4d #f8f5ec,\n 'Mint Green': #16982B #f5f5f5,\n 'Cobalt Blue': #0047AB #f0f2f5,\n 'Hot Pink': #FF69B4 #f8f5f5,\n 'Dark Violet': #9932CC #f5f4fa\n);\n\n// Check theme color config.\n// if it does not exist, use default theme color.\n@if not(map-has-key($theme-color-map, $theme-color-config)) {\n $theme-color-config: 'Default';\n}\n$theme-color-list: map-get($theme-color-map, $theme-color-config);\n\n// Default theme color of the site.\n$theme-color: nth($theme-color-list, 1) !default;\n\n// Deputy theme color of the site.\n$deputy-color: nth($theme-color-list, 2) !default;\n\n\n// ========== Color ========== //\n$black: #0a0a0a !default;\n$white: #fefefe !default;\n$light-gray: #e6e6e6 !default;\n$gray: #cacaca !default;\n$dark-gray: #8a8a8a !default;\n\n\n// ========== Global ========== //\n// Text color of the body.\n$global-font-color: rgba(0, 0, 0, .84) !default;\n\n// Font size attribute applied to '<html>' and '<body>'.\n$global-font-size: 18px !default;\n\n// Global width of '<body>'.\n$global-body-width: 1080px !default;\n\n// Padding of container main\n$global-container-padding: 0 20px !default;\n\n// Default line height for all type. `$global-lineheight` is 24px while `$global-font-size` is 16px.\n$global-lineheight: 1.8 !default;\n\n// Font family of the site.\n$global-font-family: 'Source Sans Pro', 'Helvetica Neue', Arial, sans-serif !default;\n\n// Serif font family of the site.\n$global-serif-font-family: Athelas, STHeiti, Microsoft Yahei, serif !default;\n\n// Background color of the site.\n$global-background: $white !default;\n\n// Headings font size of the site.\n$global-headings: (\n h1: 1.6em,\n h2: 1.5em,\n h3: 1.3em,\n h4: 1.2em,\n h5: 1.1em,\n h6: 1em\n) !default;\n\n\n// ========== Header ========== //\n// Padding of the site header.\n// $header-padding: 20px 20px !default;\n\n// Font family: Chancery\n@font-face {\n font-family: 'Chancery';\n src: url('../fonts/chancery/apple-chancery-webfont.eot');\n src: local('Apple Chancery'), url('../fonts/chancery/apple-chancery-webfont.eot?#iefix') format('embedded-opentype'),\n url('../fonts/chancery/apple-chancery-webfont.woff2') format('woff2'),\n url('../fonts/chancery/apple-chancery-webfont.woff') format('woff'),\n url('../fonts/chancery/apple-chancery-webfont.ttf') format('truetype'),\n url('../fonts/chancery/apple-chancery-webfont.svg#apple-chancery') format('svg');\n font-weight: lighter;\n font-style: normal;\n}\n\n// Font size of the logo.\n$logo-font-size: 36px !default;\n\n// Font family of the logo.\n$logo-font-family: 'Chancery', cursive, LiSu, sans-serif !default;\n\n// Margin of menu item.\n$menu-item-margin-left: 10px !default;\n\n// Margin of menu item in mobile.\n$menu-item-mobile-margin: 5px !default;\n\n// Font size of menu item link.\n$menu-link-font-size: 18px !default;\n\n// Height of the mobile header.\n$mobile-navbar-height: 50px !default;\n\n// ========== Post ========== //\n// Margin bottom of post list.\n$post-list-margin-bottom: 20px !default;\n\n// Padding of the post.\n$post-padding: 1.5em 0 !default;\n\n// Border top of the post + post.\n$post-border: 1px solid $light-gray !default;\n\n// Font size of post title.\n$post-title-font-size: 1.8em !default;\n\n// Font weight of post title.\n$post-title-font-weight: 400 !default;\n\n// Margin top of the post meta (post time).\n$post-meta-margin-top: 5px !default;\n\n// Font color of the post meta.\n$post-meta-font-color: $dark-gray !default;\n\n// Border bottom of the read more link when hover it.\n$post-readMore-border-bottom: 1px solid $theme-color !default;\n\n// Margin top of the post footer.\n$post-footer-margin-top: 20px !default;\n\n// Border top of post footer.\n$post-footer-border-top: 1px solid $light-gray !default;\n\n// Padding of the post tags.\n$post-tags-padding: 15px 0 !default;\n\n// Font size of post pagination.\n$post-nav-font-size: 18px !default;\n\n\n// ========== TOC ========== //\n// Width of the post toc.\n$post-toc-width: 200px !default;\n\n// Backgroud color of the post toc.\n$post-toc-backgroud: rgba($deputy-color, 0.6) !default;\n\n// Margin left of the post toc.\n//$post-toc-margin-left: $global-body-width - 15px !default;\n\n// Font size of the post toc title.\n$post-toc-title-size: 20px !default;\n\n// Font size of the post toc content.\n$post-toc-content: 15px !default;\n\n// List style of the post toc list.\n$post-toc-list-style: square !default;\n\n// Max screen media of the post toc.\n// $toc-max-sreen-width: 2 * $post-toc-width + $post-toc-margin-left !default;\n\n// ========== Content ========== //\n// Headings anchor.\n$content-headings-anchor: \"\" !default;\n\n// Border bottom of the link when hover it.\n$content-link-border: 1px solid $theme-color !default;\n\n// Background color of the blockquote.\n$content-blockquote-backgroud: rgba($theme-color, 0.05) !default;\n\n// Border left of the blockquote.\n$content-blockquote-border-left: 3px solid rgba($theme-color, 0.3) !default;\n\n// Border color of the table.\n$content-table-border-color: darken($deputy-color, 3%) !default;\n\n// ========== Code ========== //\n// Color of the code.\n$code-color: #c7254e !default;\n\n// Font size of code.\n$code-font-size: 0.9em !default;\n\n// Font family of the code.\n$code-font-family: Consolas, Monaco, Menlo, Consolas, monospace !default;\n\n// Color of code highlight, solarized.\n$code-highlight-color: (\n comment: #93a1a1,\n keyword: #859900,\n number: #2aa198,\n title: #268bd2,\n attribute: #b58900,\n symbol: #cb4b16,\n built_in: #dc322f,\n formula: #eee8d5\n) !default;\n\n\n// Color of the code background.\n$code-background: $deputy-color !default;\n\n\n// ========== Pagination ========== //\n// Margin of the pagination.\n$pagination-margin: 2em 0 !default;\n\n// Font size of the pagination (Without post, post pagination see line 140).\n$pagination-font-size: 20px !default;\n\n\n// ========== Footer ========== //\n// Margin top of the footer.\n$footer-margin-top: 2em !default;\n\n// Margin left of the social link.\n$social-link-margin-left: 0.5em !default;\n\n// Font size of the social icon.\n$social-icon-font-size: 1.7em !default;\n\n// Margin of the copyright.\n$copyright-margin: 10px 0 !default;\n\n\n// ========== Archive ========== //\n// Margin of the archive.\n$archive-margin: 2em 0px !default;\n\n// Max width of the archive.\n$archive-max-width: 550px !default;\n\n// Font size of the archive name.\n$archive-name-font-size: 30px !default;\n\n// Font size of the collection title.\n$collection-title-font-size: 28px !default;\n\n// Padding of the archive post.\n$archive-post-padding: 15px 20px 5px 20px !default;\n\n// Padding of the archive post in mobile.\n$archive-post-mobile-padding: 5px 10px !default;\n\n// Font size of the archive post time in mobile.\n$archive-post-mobile-time-font-size: 13px !default;\n\n// Border left of the archive post, use $archive-post-hover-border-left when hover it.\n$archive-post-border: 1px solid $gray !default;\n$archive-post-hover-border-left: 3px solid $theme-color !default;\n\n// Transition of the archive post when hover it.\n$archive-post-hover-transition: 0.2s ease-out !default;\n\n// Transform of the archive post when hover it.\n$archive-post-hover-transform: translateX(4px) !default;\n\n\n// ========== Tags ========== //\n// Font soze of the tag cloud title.\n$tag-cloud-title-size: 24px !default;\n\n// Border bottom of the tag cloud title.\n$tag-cloud-title-border-bottom: 2px solid $theme-color !default;\n\n// Margin of the tag cloud tags link.\n$tag-cloud-tags-link-margin: 5px 10px !default;\n\n\n// ========== Categories ========== //\n// Font soze of the categories title.\n$categories-title-size: 18px !default;\n\n// Border bottom of the categories title.\n$categories-title-border-bottom: 2px solid $theme-color !default;\n\n// Margin of the categories tags link.\n$categories-tags-link-margin: 5px 10px !default;\n\n// Font size of the category count\n$category-count-font-size: 12px !default;\n\n\n\n// WEBPACK FOOTER //\n// ./css/_variables.scss","/*! normalize.css v3.0.2 | MIT License | git.io/normalize */\n\n/**\n * 1. Set default font family to sans-serif.\n * 2. Prevent iOS text size adjust after orientation change, without disabling\n * user zoom.\n */\n\nhtml {\n font-family: sans-serif; /* 1 */\n -ms-text-size-adjust: 100%; /* 2 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/**\n * Remove default margin.\n */\n\nbody {\n margin: 0;\n}\n\n/* HTML5 display definitions\n ========================================================================== */\n\n/**\n * Correct `block` display not defined for any HTML5 element in IE 8/9.\n * Correct `block` display not defined for `details` or `summary` in IE 10/11\n * and Firefox.\n * Correct `block` display not defined for `main` in IE 11.\n */\n\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\n\n/**\n * 1. Correct `inline-block` display not defined in IE 8/9.\n * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\n */\n\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block; /* 1 */\n vertical-align: baseline; /* 2 */\n}\n\n/**\n * Prevent modern browsers from displaying `audio` without controls.\n * Remove excess height in iOS 5 devices.\n */\n\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n\n/**\n * Address `[hidden]` styling not present in IE 8/9/10.\n * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.\n */\n\n[hidden],\ntemplate {\n display: none;\n}\n\n/* Links\n ========================================================================== */\n\n/**\n * Remove the gray background color from active links in IE 10.\n */\n\na {\n background-color: transparent;\n}\n\n/**\n * Improve readability when focused and also mouse hovered in all browsers.\n */\n\na:active,\na:hover {\n outline: 0;\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Address styling not present in IE 8/9/10/11, Safari, and Chrome.\n */\n\nabbr[title] {\n border-bottom: 1px dotted;\n}\n\n/**\n * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.\n */\n\nb,\nstrong {\n font-weight: bold;\n}\n\n/**\n * Address styling not present in Safari and Chrome.\n */\n\ndfn {\n font-style: italic;\n}\n\n/**\n * Address variable `h1` font-size and margin within `section` and `article`\n * contexts in Firefox 4+, Safari, and Chrome.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/**\n * Address styling not present in IE 8/9.\n */\n\nmark {\n background: #ff0;\n color: #000;\n}\n\n/**\n * Address inconsistent and variable font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` affecting `line-height` in all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsup {\n top: -0.5em;\n}\n\nsub {\n bottom: -0.25em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove border when inside `a` element in IE 8/9/10.\n */\n\nimg {\n border: 0;\n}\n\n/**\n * Correct overflow not hidden in IE 9/10/11.\n */\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * Address margin not present in IE 8/9 and Safari.\n */\n\nfigure {\n margin: 1em;\n}\n\n/**\n * Address differences between Firefox and other browsers.\n */\n\nhr {\n -moz-box-sizing: content-box;\n box-sizing: content-box;\n height: 0;\n}\n\n/**\n * Contain overflow in all browsers.\n */\n\npre {\n overflow: auto;\n}\n\n/**\n * Address odd `em`-unit font size rendering in all browsers.\n */\n\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * Known limitation: by default, Chrome and Safari on OS X allow very limited\n * styling of `select`, unless a `border` property is set.\n */\n\n/**\n * 1. Correct color not being inherited.\n * Known issue: affects color of disabled elements.\n * 2. Correct font properties not being inherited.\n * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit; /* 1 */\n font: inherit; /* 2 */\n margin: 0; /* 3 */\n}\n\n/**\n * Address `overflow` set to `hidden` in IE 8/9/10/11.\n */\n\nbutton {\n overflow: visible;\n}\n\n/**\n * Address inconsistent `text-transform` inheritance for `button` and `select`.\n * All other form control elements do not inherit `text-transform` values.\n * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.\n * Correct `select` style inheritance in Firefox.\n */\n\nbutton,\nselect {\n text-transform: none;\n}\n\n/**\n * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n * and `video` controls.\n * 2. Correct inability to style clickable `input` types in iOS.\n * 3. Improve usability and consistency of cursor style between image-type\n * `input` and others.\n */\n\nbutton,\nhtml input[type=\"button\"], /* 1 */\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button; /* 2 */\n cursor: pointer; /* 3 */\n}\n\n/**\n * Re-set default cursor for disabled elements.\n */\n\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\n\n/**\n * Remove inner padding and border in Firefox 4+.\n */\n\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\n\n/**\n * Address Firefox 4+ setting `line-height` on `input` using `!important` in\n * the UA stylesheet.\n */\n\ninput {\n line-height: normal;\n}\n\n/**\n * It's recommended that you don't attempt to style these elements.\n * Firefox's implementation doesn't respect box-sizing, padding, or width.\n *\n * 1. Address box sizing set to `content-box` in IE 8/9/10.\n * 2. Remove excess padding in IE 8/9/10.\n */\n\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Fix the cursor style for Chrome's increment/decrement buttons. For certain\n * `font-size` values of the `input`, it causes the cursor style of the\n * decrement button to change from `default` to `text`.\n */\n\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Address `appearance` set to `searchfield` in Safari and Chrome.\n * 2. Address `box-sizing` set to `border-box` in Safari and Chrome\n * (include `-moz` to future-proof).\n */\n\ninput[type=\"search\"] {\n -webkit-appearance: textfield; /* 1 */\n -moz-box-sizing: content-box;\n -webkit-box-sizing: content-box; /* 2 */\n box-sizing: content-box;\n}\n\n/**\n * Remove inner padding and search cancel button in Safari and Chrome on OS X.\n * Safari (but not Chrome) clips the cancel button when the search input has\n * padding (and `textfield` appearance).\n */\n\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n * Define consistent border, margin, and padding.\n */\n\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\n\n/**\n * 1. Correct `color` not being inherited in IE 8/9/10/11.\n * 2. Remove padding so people aren't caught out if they zero out fieldsets.\n */\n\nlegend {\n border: 0; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Remove default vertical scrollbar in IE 8/9/10/11.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * Don't inherit the `font-weight` (applied by a rule above).\n * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n */\n\noptgroup {\n font-weight: bold;\n}\n\n/* Tables\n ========================================================================== */\n\n/**\n * Remove most spacing between table cells.\n */\n\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\n\ntd,\nth {\n padding: 0;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./css/_common/_normalize.scss","@charset \"UTF-8\";\n@font-face {\n font-family: 'Chancery';\n src: url(\"../fonts/chancery/apple-chancery-webfont.eot\");\n src: local(\"Apple Chancery\"), url(\"../fonts/chancery/apple-chancery-webfont.eot?#iefix\") format(\"embedded-opentype\"), url(\"../fonts/chancery/apple-chancery-webfont.woff2\") format(\"woff2\"), url(\"../fonts/chancery/apple-chancery-webfont.woff\") format(\"woff\"), url(\"../fonts/chancery/apple-chancery-webfont.ttf\") format(\"truetype\"), url(\"../fonts/chancery/apple-chancery-webfont.svg#apple-chancery\") format(\"svg\");\n font-weight: lighter;\n font-style: normal; }\n\n/*! normalize.css v3.0.2 | MIT License | git.io/normalize */\n/**\n * 1. Set default font family to sans-serif.\n * 2. Prevent iOS text size adjust after orientation change, without disabling\n * user zoom.\n */\nhtml {\n font-family: sans-serif;\n /* 1 */\n -ms-text-size-adjust: 100%;\n /* 2 */\n -webkit-text-size-adjust: 100%;\n /* 2 */ }\n\n/**\n * Remove default margin.\n */\nbody {\n margin: 0; }\n\n/* HTML5 display definitions\n ========================================================================== */\n/**\n * Correct `block` display not defined for any HTML5 element in IE 8/9.\n * Correct `block` display not defined for `details` or `summary` in IE 10/11\n * and Firefox.\n * Correct `block` display not defined for `main` in IE 11.\n */\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block; }\n\n/**\n * 1. Correct `inline-block` display not defined in IE 8/9.\n * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\n */\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block;\n /* 1 */\n vertical-align: baseline;\n /* 2 */ }\n\n/**\n * Prevent modern browsers from displaying `audio` without controls.\n * Remove excess height in iOS 5 devices.\n */\naudio:not([controls]) {\n display: none;\n height: 0; }\n\n/**\n * Address `[hidden]` styling not present in IE 8/9/10.\n * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.\n */\n[hidden],\ntemplate {\n display: none; }\n\n/* Links\n ========================================================================== */\n/**\n * Remove the gray background color from active links in IE 10.\n */\na {\n background-color: transparent; }\n\n/**\n * Improve readability when focused and also mouse hovered in all browsers.\n */\na:active,\na:hover {\n outline: 0; }\n\n/* Text-level semantics\n ========================================================================== */\n/**\n * Address styling not present in IE 8/9/10/11, Safari, and Chrome.\n */\nabbr[title] {\n border-bottom: 1px dotted; }\n\n/**\n * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.\n */\nb,\nstrong {\n font-weight: bold; }\n\n/**\n * Address styling not present in Safari and Chrome.\n */\ndfn {\n font-style: italic; }\n\n/**\n * Address variable `h1` font-size and margin within `section` and `article`\n * contexts in Firefox 4+, Safari, and Chrome.\n */\nh1 {\n font-size: 2em;\n margin: 0.67em 0; }\n\n/**\n * Address styling not present in IE 8/9.\n */\nmark {\n background: #ff0;\n color: #000; }\n\n/**\n * Address inconsistent and variable font size in all browsers.\n */\nsmall {\n font-size: 80%; }\n\n/**\n * Prevent `sub` and `sup` affecting `line-height` in all browsers.\n */\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline; }\n\nsup {\n top: -0.5em; }\n\nsub {\n bottom: -0.25em; }\n\n/* Embedded content\n ========================================================================== */\n/**\n * Remove border when inside `a` element in IE 8/9/10.\n */\nimg {\n border: 0; }\n\n/**\n * Correct overflow not hidden in IE 9/10/11.\n */\nsvg:not(:root) {\n overflow: hidden; }\n\n/* Grouping content\n ========================================================================== */\n/**\n * Address margin not present in IE 8/9 and Safari.\n */\nfigure {\n margin: 1em; }\n\n/**\n * Address differences between Firefox and other browsers.\n */\nhr {\n -moz-box-sizing: content-box;\n box-sizing: content-box;\n height: 0; }\n\n/**\n * Contain overflow in all browsers.\n */\npre {\n overflow: auto; }\n\n/**\n * Address odd `em`-unit font size rendering in all browsers.\n */\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em; }\n\n/* Forms\n ========================================================================== */\n/**\n * Known limitation: by default, Chrome and Safari on OS X allow very limited\n * styling of `select`, unless a `border` property is set.\n */\n/**\n * 1. Correct color not being inherited.\n * Known issue: affects color of disabled elements.\n * 2. Correct font properties not being inherited.\n * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\n */\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit;\n /* 1 */\n font: inherit;\n /* 2 */\n margin: 0;\n /* 3 */ }\n\n/**\n * Address `overflow` set to `hidden` in IE 8/9/10/11.\n */\nbutton {\n overflow: visible; }\n\n/**\n * Address inconsistent `text-transform` inheritance for `button` and `select`.\n * All other form control elements do not inherit `text-transform` values.\n * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.\n * Correct `select` style inheritance in Firefox.\n */\nbutton,\nselect {\n text-transform: none; }\n\n/**\n * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n * and `video` controls.\n * 2. Correct inability to style clickable `input` types in iOS.\n * 3. Improve usability and consistency of cursor style between image-type\n * `input` and others.\n */\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button;\n /* 2 */\n cursor: pointer;\n /* 3 */ }\n\n/**\n * Re-set default cursor for disabled elements.\n */\nbutton[disabled],\nhtml input[disabled] {\n cursor: default; }\n\n/**\n * Remove inner padding and border in Firefox 4+.\n */\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0; }\n\n/**\n * Address Firefox 4+ setting `line-height` on `input` using `!important` in\n * the UA stylesheet.\n */\ninput {\n line-height: normal; }\n\n/**\n * It's recommended that you don't attempt to style these elements.\n * Firefox's implementation doesn't respect box-sizing, padding, or width.\n *\n * 1. Address box sizing set to `content-box` in IE 8/9/10.\n * 2. Remove excess padding in IE 8/9/10.\n */\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box;\n /* 1 */\n padding: 0;\n /* 2 */ }\n\n/**\n * Fix the cursor style for Chrome's increment/decrement buttons. For certain\n * `font-size` values of the `input`, it causes the cursor style of the\n * decrement button to change from `default` to `text`.\n */\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto; }\n\n/**\n * 1. Address `appearance` set to `searchfield` in Safari and Chrome.\n * 2. Address `box-sizing` set to `border-box` in Safari and Chrome\n * (include `-moz` to future-proof).\n */\ninput[type=\"search\"] {\n -webkit-appearance: textfield;\n /* 1 */\n -moz-box-sizing: content-box;\n -webkit-box-sizing: content-box;\n /* 2 */\n box-sizing: content-box; }\n\n/**\n * Remove inner padding and search cancel button in Safari and Chrome on OS X.\n * Safari (but not Chrome) clips the cancel button when the search input has\n * padding (and `textfield` appearance).\n */\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none; }\n\n/**\n * Define consistent border, margin, and padding.\n */\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em; }\n\n/**\n * 1. Correct `color` not being inherited in IE 8/9/10/11.\n * 2. Remove padding so people aren't caught out if they zero out fieldsets.\n */\nlegend {\n border: 0;\n /* 1 */\n padding: 0;\n /* 2 */ }\n\n/**\n * Remove default vertical scrollbar in IE 8/9/10/11.\n */\ntextarea {\n overflow: auto; }\n\n/**\n * Don't inherit the `font-weight` (applied by a rule above).\n * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n */\noptgroup {\n font-weight: bold; }\n\n/* Tables\n ========================================================================== */\n/**\n * Remove most spacing between table cells.\n */\ntable {\n border-collapse: collapse;\n border-spacing: 0; }\n\ntd,\nth {\n padding: 0; }\n\nhtml {\n font-size: 18px;\n box-sizing: border-box; }\n\nbody {\n padding: 0;\n margin: 0;\n font-family: \"Source Sans Pro\", \"Helvetica Neue\", Arial, sans-serif;\n font-weight: normal;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n line-height: 1.8;\n color: rgba(0, 0, 0, 0.84);\n background: #fefefe;\n scroll-behavior: smooth; }\n\n@media screen and (max-width: 1080px) {\n body {\n border-top: 0; } }\n\n::selection {\n background: #c05b4d;\n color: #fff; }\n\nimg {\n max-width: 100%;\n height: auto;\n display: inline-block;\n vertical-align: middle; }\n\na {\n color: rgba(0, 0, 0, 0.84);\n text-decoration: none; }\n\nh1 {\n font-size: 1.6em;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n\nh2 {\n font-size: 1.5em;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n\nh3 {\n font-size: 1.3em;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n\nh4 {\n font-size: 1.2em;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n\nh5 {\n font-size: 1.1em;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n\nh6 {\n font-size: 1em;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n\n.container {\n margin: 0 auto;\n width: 1080px; }\n\n@media screen and (max-width: 1080px) {\n .container {\n width: 100%; } }\n\n.content-wrapper {\n padding: 3em 0 1px 0; }\n\n.video-container {\n position: relative;\n padding-bottom: 56.25%;\n /* 16:9 */\n padding-top: 25px;\n height: 0; }\n\n.video-container iframe {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%; }\n\n.bg-llight {\n background-color: #f2f2f5; }\n\n.bg-white {\n background-color: #FFF; }\n\n.iconfont {\n font-family: \"iconfont\" !important;\n font-style: normal;\n -webkit-font-smoothing: antialiased;\n -webkit-text-stroke-width: 0.2px;\n -moz-osx-font-smoothing: grayscale;\n cursor: pointer; }\n\n/* Generic Icon */\n.icon-heart::before {\n font-icon: url(\"../fonts/svg/heart.svg\"); }\n\n.icon-right::before {\n font-icon: url(\"../fonts/svg/right.svg\"); }\n\n.icon-left::before {\n font-icon: url(\"../fonts/svg/left.svg\"); }\n\n.icon-up::before {\n font-icon: url(\"../fonts/svg/up.svg\");\n font-size: 2em; }\n\n.icon-new-window::before {\n font-icon: url(\"../fonts/svg/new-window.svg\"); }\n\n.icon-rss::before {\n font-icon: url(\"../fonts/svg/rss.svg\"); }\n\n/* Social Icon */\n.icon-email::before {\n font-icon: url(\"../fonts/svg/email.svg\");\n font-size: 0.8em; }\n\n.icon-stack-overflow::before {\n font-icon: url(\"../fonts/svg/stack-overflow.svg\"); }\n\n.icon-twitter::before {\n font-icon: url(\"../fonts/svg/twitter.svg\");\n font-size: 0.9em; }\n\n.icon-facebook::before {\n font-icon: url(\"../fonts/svg/facebook.svg\"); }\n\n.icon-linkedin::before {\n font-icon: url(\"../fonts/svg/linkedin.svg\"); }\n\n.icon-google::before {\n font-icon: url(\"../fonts/svg/google.svg\");\n font-size: 1.15em; }\n\n.icon-github::before {\n font-icon: url(\"../fonts/svg/github.svg\"); }\n\n.icon-weibo::before {\n font-icon: url(\"../fonts/svg/weibo.svg\");\n font-size: 1.1em; }\n\n.icon-zhihu::before {\n font-icon: url(\"../fonts/svg/zhihu.svg\"); }\n\n.icon-douban::before {\n font-icon: url(\"../fonts/svg/douban.svg\"); }\n\n.icon-pocket::before {\n font-icon: url(\"../fonts/svg/pocket.svg\"); }\n\n.icon-tumblr::before {\n font-icon: url(\"../fonts/svg/tumblr.svg\");\n font-size: 1.1em; }\n\n.icon-instagram::before {\n font-icon: url(\"../fonts/svg/instagram.svg\");\n font-size: 1.1em; }\n\n.icon-gitlab::before {\n font-icon: url(\"../fonts/svg/gitlab.svg\"); }\n\n.icon-goodreads::before {\n font-icon: url(\"../fonts/svg/goodreads.svg\"); }\n\n.icon-coding::before {\n font-icon: url(\"../fonts/svg/coding.svg\");\n font-size: 1.3em; }\n\n.header:before, .header:after {\n content: \" \";\n display: table; }\n\n.header:after {\n clear: both; }\n\n.header .logo-wrapper {\n float: left;\n padding-left: 15px; }\n .header .logo-wrapper .logo {\n font-size: 36px;\n font-family: \"Chancery\", cursive, LiSu, sans-serif; }\n\n@media screen and (max-width: 1080px) {\n .header .logo-wrapper {\n display: none; } }\n\n.header .site-navbar .menu {\n float: right;\n padding-right: 15px;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n .header .site-navbar .menu .menu-item {\n display: inline-block;\n margin-left: 1em;\n margin-right: 1em;\n position: relative; }\n .header .site-navbar .menu .menu-item + .menu-item {\n margin-left: 10px; }\n .header .site-navbar .menu .menu-item .submenu {\n visibility: hidden;\n position: absolute;\n top: 120%;\n transition: 0.2s 1s;\n list-style: none;\n padding: 0;\n background: #fff;\n white-space: nowrap;\n border: 1px solid #ddd;\n border-bottom: none;\n transition: 0.2s 0.2s;\n /* delay of seconds on hover off */\n z-index: 99; }\n .header .site-navbar .menu .menu-item .submenu li {\n border-bottom: 1px solid #ddd; }\n .header .site-navbar .menu .menu-item .submenu li a {\n padding: 12px; }\n .header .site-navbar .menu .menu-item:hover .submenu {\n visibility: visible;\n transition-delay: 0s;\n /* react immediately on hover */ }\n .header .site-navbar .menu .menu-item-link {\n font-size: 18px; }\n\n.header .menu-parent::after {\n content: \" ▼\";\n font-size: 11px; }\n\n.header .menu a:hover {\n color: #c05b4d; }\n\n@media screen and (max-width: 1080px) {\n .header .site-navbar {\n display: none; } }\n\n@media screen and (max-width: 1080px) {\n .header {\n padding: 50px 0 0;\n text-align: center; } }\n\n.post {\n padding: 3em 5em;\n margin: 0 5em 3em; }\n .post .post-header {\n margin-bottom: 20px;\n text-align: center;\n padding-bottom: 10px;\n border-bottom: 2px LightGrey solid; }\n .post .post-header .post-title {\n margin: 0;\n font-size: 1.8em;\n font-weight: 400;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n .post .post-header .post-link {\n display: inline-block;\n vertical-align: middle;\n transform: translateZ(0);\n backface-visibility: hidden;\n box-shadow: 0 0 1px transparent;\n position: relative;\n overflow: hidden; }\n .post .post-header .post-link:before {\n content: '';\n position: absolute;\n z-index: -1;\n height: 2px;\n bottom: 0;\n left: 51%;\n right: 51%;\n background: #c05b4d;\n transition-duration: 0.2s;\n transition-property: right, left;\n transition-timing-function: ease-out; }\n .post .post-header .post-link.active:before, .post .post-header .post-link:active:before, .post .post-header .post-link:focus:before, .post .post-header .post-link:hover:before {\n right: 0;\n left: 0; }\n .post .post-header .post-meta {\n font-size: 14px;\n color: #8a8a8a; }\n .post .post-header .post-meta .post-time {\n font-size: 15px; }\n .post .post-header .post-meta .post-category {\n display: inline; }\n .post .post-header .post-meta .post-category a {\n color: inherit; }\n .post .post-header .post-meta .post-category a::before {\n content: '·'; }\n .post .post-header .post-meta .post-category a:hover {\n color: #c05b4d; }\n .post .post-header .post-meta .more-meta::before {\n content: '·'; }\n .post .post-toc .post-toc-title {\n font-size: 1em;\n max-width: 9em;\n border: 0;\n font-weight: normal;\n padding: 0.05em 0.5em;\n line-height: 1em; }\n .post .post-toc .post-toc-content {\n display: block;\n padding: 0.5em;\n margin-top: -1.5em;\n line-height: 1.3em;\n /* Hugo Table of Contents have extra dot in front */ }\n .post .post-toc .post-toc-content ul {\n padding-left: 20px;\n list-style-type: none; }\n .post .post-toc .post-toc-content ul ul {\n list-style: disc; }\n .post .post-toc .post-toc-content ul ul ul {\n list-style: circle; }\n .post .post-toc .post-toc-content ul ul li > a {\n color: #139; }\n .post .post-toc .post-toc-content ul ul li > a:hover {\n color: #900; }\n @media screen and (min-width: 1080px) {\n .post .post-toc {\n display: none;\n border: 1px solid #CCC;\n background: white;\n box-shadow: 0 0 1em #777777;\n position: fixed;\n top: 0;\n right: 0;\n max-height: 80%;\n overflow: auto;\n z-index: 99; }\n .post .post-toc .post-toc-content {\n display: none; }\n .post .post-toc:hover .post-toc-content {\n display: block; } }\n @media screen and (max-width: 1080px) {\n .post .post-toc {\n padding: 10px;\n border-bottom: 2px LightGrey solid;\n word-wrap: break-word; } }\n .post .post-content {\n word-wrap: break-word;\n /* Background */\n /* LineTableTD */\n /* LineTable */\n /* LineHighlight */\n /* LineNumbersTable */\n /* LineNumbers */\n /* Keyword */\n /* KeywordConstant */\n /* KeywordDeclaration */\n /* KeywordNamespace */\n /* KeywordPseudo */\n /* KeywordReserved */\n /* KeywordType */\n /* Name */\n /* NameAttribute */\n /* NameBuiltin */\n /* NameBuiltinPseudo */\n /* NameClass */\n /* NameConstant */\n /* NameDecorator */\n /* NameEntity */\n /* NameException */\n /* NameFunction */\n /* NameFunctionMagic */\n /* NameLabel */\n /* NameNamespace */\n /* NameOther */\n /* NameProperty */\n /* NameTag */\n /* NameVariable */\n /* NameVariableClass */\n /* NameVariableGlobal */\n /* NameVariableInstance */\n /* NameVariableMagic */\n /* Literal */\n /* LiteralDate */\n /* LiteralString */\n /* LiteralStringAffix */\n /* LiteralStringBacktick */\n /* LiteralStringChar */\n /* LiteralStringDelimiter */\n /* LiteralStringDoc */\n /* LiteralStringDouble */\n /* LiteralStringEscape */\n /* LiteralStringHeredoc */\n /* LiteralStringInterpol */\n /* LiteralStringOther */\n /* LiteralStringRegex */\n /* LiteralStringSingle */\n /* LiteralStringSymbol */\n /* LiteralNumber */\n /* LiteralNumberBin */\n /* LiteralNumberFloat */\n /* LiteralNumberHex */\n /* LiteralNumberInteger */\n /* LiteralNumberIntegerLong */\n /* LiteralNumberOct */\n /* OperatorWord */\n /* Comment */\n /* CommentHashbang */\n /* CommentMultiline */\n /* CommentSingle */\n /* CommentSpecial */\n /* CommentPreproc */\n /* CommentPreprocFile */\n /* Generic */\n /* GenericDeleted */\n /* GenericEmph */\n /* GenericError */\n /* GenericHeading */\n /* GenericInserted */\n /* GenericOutput */\n /* GenericPrompt */\n /* GenericStrong */\n /* GenericSubheading */\n /* GenericTraceback */ }\n .post .post-content h1 {\n font-weight: 600;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n .post .post-content h2 {\n font-weight: 600;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n .post .post-content h3 {\n font-weight: 600;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n .post .post-content h4 {\n font-weight: 600;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n .post .post-content h5 {\n font-weight: 600;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n .post .post-content h6 {\n font-weight: 600;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n .post .post-content h1 {\n border-bottom: 1px solid #ddd;\n margin-top: 2em; }\n .post .post-content h2 {\n border-bottom: 1px solid #ddd;\n margin-top: 2em; }\n .post .post-content h3 {\n margin-top: 1.5em; }\n .post .post-content a {\n color: #c05b4d;\n word-break: break-all; }\n .post .post-content a:hover {\n border-bottom: 1px solid #c05b4d; }\n .post .post-content a.fancybox {\n border: 0; }\n .post .post-content blockquote {\n margin: 1em auto;\n padding: 0.2em 2em 0.2em 3em;\n color: #555555;\n background-color: #F6F6F6;\n border-left: 4px solid #999;\n position: relative;\n line-height: 1.6;\n font-family: Open Sans; }\n .post .post-content blockquote::before {\n font-family: Arial;\n content: \"\\201C\";\n color: #999;\n font-size: 4em;\n position: absolute;\n left: 10px;\n top: -10px; }\n .post .post-content blockquote footer {\n color: #333333;\n margin-bottom: 1em; }\n .post .post-content blockquote cite:before {\n content: '\\2014';\n padding-right: .3em;\n padding-left: .3em; }\n .post .post-content img {\n display: inline-block;\n max-width: 100%; }\n .post .post-content > table {\n border: none;\n width: 100%; }\n .post .post-content > table td {\n background-color: #F0E4E4;\n border: 3px solid #FFF;\n padding: 5px 15px; }\n .post .post-content > table th {\n text-align: left;\n background-color: #A65B5B;\n color: #FFF;\n border: 3px solid #FFF;\n padding: 5px 15px; }\n .post .post-content p > code, .post .post-content pre {\n padding: 0 7px;\n background: #f8f5ec;\n border-radius: 4px;\n color: #c7254e; }\n .post .post-content code, .post .post-content pre {\n font-size: 0.9em;\n font-family: Consolas, Monaco, Menlo, Consolas, monospace;\n padding: 0; }\n .post .post-content .chroma {\n margin: 0; }\n .post .post-content .highlight > .chroma {\n margin: 1em 0;\n overflow-x: auto;\n position: relative;\n border: 2px solid #dddddd; }\n .post .post-content .highlight > .chroma table {\n position: relative;\n padding: 0.8em 0; }\n .post .post-content .highlight > .chroma table::after {\n position: absolute;\n top: 0;\n right: 0;\n padding: 0 7px;\n font-size: 0.8em;\n font-weight: bold;\n color: #b1b1b1;\n content: 'Code'; }\n .post .post-content .highlight > .chroma > table::after {\n content: attr(data-lang);\n text-transform: capitalize; }\n .post .post-content .highlight > .chroma tr, .post .post-content .highlight > .chroma td {\n margin: 0;\n padding: 0;\n width: 100%;\n border-collapse: collapse; }\n .post .post-content .highlight > .chroma tr > td:first-child {\n width: 1%;\n white-space: nowrap; }\n .post .post-content .highlight > .chroma .lnt {\n color: #cacaca;\n display: block;\n line-height: 2em; }\n .post .post-content .chroma {\n color: #586e75;\n background-color: #f8f5ec; }\n .post .post-content .chroma .lntd {\n vertical-align: top;\n padding: 0;\n margin: 0;\n border: 0; }\n .post .post-content .chroma .lntable {\n border-spacing: 0;\n padding: 0;\n margin: 0;\n border: 0;\n width: auto;\n overflow: auto;\n display: block; }\n .post .post-content .chroma .hl {\n display: block;\n width: 100%; }\n .post .post-content .chroma .lnt {\n margin-right: 0.4em;\n padding: 0 0.4em 0 0.4em; }\n .post .post-content .chroma .ln {\n margin-right: 0.4em;\n padding: 0 0.4em 0 0.4em; }\n .post .post-content .chroma .k {\n color: #859900; }\n .post .post-content .chroma .kc {\n color: #859900;\n font-weight: bold; }\n .post .post-content .chroma .kd {\n color: #859900; }\n .post .post-content .chroma .kn {\n color: #dc322f;\n font-weight: bold; }\n .post .post-content .chroma .kp {\n color: #859900; }\n .post .post-content .chroma .kr {\n color: #859900; }\n .post .post-content .chroma .kt {\n color: #859900;\n font-weight: bold; }\n .post .post-content .chroma .n {\n color: #268bd2; }\n .post .post-content .chroma .na {\n color: #268bd2; }\n .post .post-content .chroma .nb {\n color: #cb4b16; }\n .post .post-content .chroma .bp {\n color: #268bd2; }\n .post .post-content .chroma .nc {\n color: #cb4b16; }\n .post .post-content .chroma .no {\n color: #268bd2; }\n .post .post-content .chroma .nd {\n color: #268bd2; }\n .post .post-content .chroma .ni {\n color: #268bd2; }\n .post .post-content .chroma .ne {\n color: #268bd2; }\n .post .post-content .chroma .nf {\n color: #268bd2; }\n .post .post-content .chroma .fm {\n color: #268bd2; }\n .post .post-content .chroma .nl {\n color: #268bd2; }\n .post .post-content .chroma .nn {\n color: #268bd2; }\n .post .post-content .chroma .nx {\n color: #268bd2; }\n .post .post-content .chroma .py {\n color: #268bd2; }\n .post .post-content .chroma .nt {\n color: #268bd2;\n font-weight: bold; }\n .post .post-content .chroma .nv {\n color: #268bd2; }\n .post .post-content .chroma .vc {\n color: #268bd2; }\n .post .post-content .chroma .vg {\n color: #268bd2; }\n .post .post-content .chroma .vi {\n color: #268bd2; }\n .post .post-content .chroma .vm {\n color: #268bd2; }\n .post .post-content .chroma .l {\n color: #2aa198; }\n .post .post-content .chroma .ld {\n color: #2aa198; }\n .post .post-content .chroma .s {\n color: #2aa198; }\n .post .post-content .chroma .sa {\n color: #2aa198; }\n .post .post-content .chroma .sb {\n color: #2aa198; }\n .post .post-content .chroma .sc {\n color: #2aa198; }\n .post .post-content .chroma .dl {\n color: #2aa198; }\n .post .post-content .chroma .sd {\n color: #2aa198; }\n .post .post-content .chroma .s2 {\n color: #2aa198; }\n .post .post-content .chroma .se {\n color: #2aa198; }\n .post .post-content .chroma .sh {\n color: #2aa198; }\n .post .post-content .chroma .si {\n color: #2aa198; }\n .post .post-content .chroma .sx {\n color: #2aa198; }\n .post .post-content .chroma .sr {\n color: #2aa198; }\n .post .post-content .chroma .s1 {\n color: #2aa198; }\n .post .post-content .chroma .ss {\n color: #2aa198; }\n .post .post-content .chroma .m {\n color: #2aa198;\n font-weight: bold; }\n .post .post-content .chroma .mb {\n color: #2aa198;\n font-weight: bold; }\n .post .post-content .chroma .mf {\n color: #2aa198;\n font-weight: bold; }\n .post .post-content .chroma .mh {\n color: #2aa198;\n font-weight: bold; }\n .post .post-content .chroma .mi {\n color: #2aa198;\n font-weight: bold; }\n .post .post-content .chroma .il {\n color: #2aa198;\n font-weight: bold; }\n .post .post-content .chroma .mo {\n color: #2aa198;\n font-weight: bold; }\n .post .post-content .chroma .ow {\n color: #859900; }\n .post .post-content .chroma .c {\n color: #93a1a1;\n font-style: italic; }\n .post .post-content .chroma .ch {\n color: #93a1a1;\n font-style: italic; }\n .post .post-content .chroma .cm {\n color: #93a1a1;\n font-style: italic; }\n .post .post-content .chroma .c1 {\n color: #93a1a1;\n font-style: italic; }\n .post .post-content .chroma .cs {\n color: #93a1a1;\n font-style: italic; }\n .post .post-content .chroma .cp {\n color: #93a1a1;\n font-style: italic; }\n .post .post-content .chroma .cpf {\n color: #93a1a1;\n font-style: italic; }\n .post .post-content .chroma .g {\n color: #d33682; }\n .post .post-content .chroma .gd {\n color: #d33682; }\n .post .post-content .chroma .ge {\n color: #d33682; }\n .post .post-content .chroma .gr {\n color: #d33682; }\n .post .post-content .chroma .gh {\n color: #d33682; }\n .post .post-content .chroma .gi {\n color: #d33682; }\n .post .post-content .chroma .go {\n color: #d33682; }\n .post .post-content .chroma .gp {\n color: #d33682; }\n .post .post-content .chroma .gs {\n color: #d33682; }\n .post .post-content .chroma .gu {\n color: #d33682; }\n .post .post-content .chroma .gt {\n color: #d33682; }\n .post .post-content .post-summary {\n margin-bottom: 1em; }\n .post .post-content .read-more {\n text-align: right; }\n .post .post-content .read-more .read-more-link {\n color: #c05b4d;\n font-size: 1.1em;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n .post .post-content .read-more .read-more-link:hover {\n border-bottom: 1px solid #c05b4d; }\n .post .post-content kbd {\n display: inline-block;\n padding: 0.25em;\n background-color: #fafafa;\n border: 1px solid #dbdbdb;\n border-bottom-color: #b5b5b5;\n border-radius: 3px;\n box-shadow: inset 0 -1px 0 #b5b5b5;\n font-size: 0.8em;\n line-height: 1.25;\n font-family: \"SFMono-Regular\",\"Liberation Mono\",\"Roboto Mono\",Menlo,Monaco,Consolas,\"Courier New\",Courier,monospace;\n color: #4a4a4a; }\n .post .post-content dl dt::after {\n content: ':'; }\n .post .post-content figure.center {\n text-align: center; }\n .post .post-content figure figcaption {\n margin-top: 0.5em;\n text-align: center;\n line-height: 1.5em; }\n .post .post-content figure figcaption h4 {\n color: #b5b5b5;\n margin: 0; }\n .post .post-content figure figcaption p {\n font-size: 0.9em;\n color: #b5b5b5;\n font-style: italic;\n margin: 0; }\n .post .post-content .task-list {\n list-style: none;\n padding-left: 1.5rem; }\n .post .header-link {\n margin-left: 0.5em;\n fill: currentColor;\n visibility: hidden; }\n .post .post-content-header:hover .header-link {\n visibility: visible; }\n .post .post-copyright {\n padding: 10px;\n background-color: rgba(181, 181, 181, 0.1);\n border: 1px solid #e1e1e1;\n border-left: solid;\n margin-top: 3em; }\n .post .post-copyright .copyright-item {\n margin: 5px 0; }\n .post .post-copyright .copyright-item a {\n color: #c05b4d;\n word-wrap: break-word; }\n .post .post-copyright .copyright-item a:hover {\n border-bottom: 1px solid #c05b4d; }\n .post .post-copyright .copyright-item .item-title {\n display: inline-block;\n min-width: 5rem;\n margin-right: .5rem;\n text-align: right;\n font-weight: bold; }\n .post .post-copyright .copyright-item .item-title:after {\n content: \" :\"; }\n .post .post-reward {\n margin-top: 20px;\n padding-top: 10px;\n text-align: center;\n border-top: 1px dashed #e6e6e6; }\n .post .post-reward .reward-button {\n margin: 15px 0;\n padding: 3px 7px;\n display: inline-block;\n color: #c05b4d;\n border: 1px solid #c05b4d;\n border-radius: 5px;\n cursor: pointer; }\n .post .post-reward .reward-button:hover {\n color: #fefefe;\n background-color: #c05b4d;\n transition: 0.5s; }\n .post .post-reward #reward:checked ~ .qr-code {\n display: block; }\n .post .post-reward #reward:checked ~ .reward-button {\n display: none; }\n .post .post-reward .qr-code {\n display: none; }\n .post .post-reward .qr-code .qr-code-image {\n display: inline-block;\n min-width: 200px;\n width: 40%;\n margin-top: 15px; }\n .post .post-reward .qr-code .qr-code-image span {\n display: inline-block;\n width: 100%;\n margin: 8px 0; }\n .post .post-reward .qr-code .image {\n width: 200px;\n height: 200px; }\n .post .post-footer {\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n .post .post-footer .post-tags {\n margin-top: 1em; }\n .post .post-footer .post-tags a {\n color: #c05b4d;\n word-break: break-all;\n margin-right: 10px; }\n .post .post-footer .post-tags a:hover {\n border-bottom: 1px solid #c05b4d; }\n .post .post-footer .post-tags a::before {\n content: '#'; }\n .post .post-footer .post-nav {\n margin-top: 1em; }\n .post .post-footer .post-nav:before, .post .post-footer .post-nav:after {\n content: \" \";\n display: table; }\n .post .post-footer .post-nav:after {\n clear: both; }\n .post .post-footer .post-nav .prev,\n .post .post-footer .post-nav .next {\n font-weight: 600;\n font-size: 18px;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif;\n transition-property: transform;\n transition-timing-function: ease-out;\n transition-duration: 0.3s; }\n .post .post-footer .post-nav .prev {\n float: left; }\n .post .post-footer .post-nav .prev:hover {\n color: #c05b4d;\n transform: translateX(-4px); }\n .post .post-footer .post-nav .next {\n float: right; }\n .post .post-footer .post-nav .next:hover {\n color: #c05b4d;\n transform: translateX(4px); }\n .post .post-footer .post-nav .nav-mobile {\n display: none; }\n @media screen and (max-width: 1080px) {\n .post .post-footer .post-nav .nav-default {\n display: none; }\n .post .post-footer .post-nav .nav-mobile {\n display: inline; } }\n .post .disqus-button {\n display: block;\n padding: 15px 0;\n font-size: 16px;\n color: #555;\n border: 1px solid #ddd;\n text-align: center;\n cursor: pointer;\n margin-top: 2em; }\n .post .footnotes {\n margin-top: 50px;\n font-size: 0.9em; }\n .post .footnotes hr {\n border-style: solid;\n color: #dddddd; }\n .post .footnote-ref {\n display: inline;\n position: relative;\n margin-left: 3px; }\n .post .footnote-ref:hover .fn-content {\n opacity: 1;\n visibility: visible;\n transform: translate3d(0, 0, 0) rotate3d(0, 0, 0, 0); }\n .post .footnote-ref > a {\n font-weight: 700; }\n .post .footnote-ref > a::after {\n content: ']'; }\n .post .footnote-ref > a::before {\n content: '['; }\n .post .fn-content {\n position: absolute;\n display: inline-block;\n z-index: 14;\n left: 50%;\n bottom: 100%;\n line-height: 1.3;\n border-radius: 0.5em;\n border: 1px solid rgba(0, 0, 0, 0.1);\n background: #f6f6f6;\n opacity: 0;\n visibility: hidden;\n transform: translate3d(0, -10px, 0);\n transition: opacity 0.3s, transform 0.3s;\n /* Arrow */ }\n .post .fn-content .fn-text {\n display: inline-block;\n padding: 1em;\n font-size: 1.2em;\n z-index: 8; }\n .post .fn-content .fn-text a {\n font-weight: bold; }\n\n@media screen and (max-width: 504px) {\n .post {\n padding: 1em 1em;\n margin: 0 0 2em; }\n .content-wrapper {\n padding: 1em 0 1px; } }\n\n@media screen and (min-width: 900px) and (max-width: 1080px) {\n .post {\n margin: 0 2em 2em; }\n .content-wrapper {\n padding: 2em 0 1px; } }\n\n@media screen and (min-width: 504px) and (max-width: 899px) {\n .post {\n padding: 1em 1em;\n margin: 0 1em 2em; }\n .content-wrapper {\n padding: 1em 0 1px; } }\n\n.pagination {\n margin: 2em 0;\n text-align: center; }\n .pagination:before, .pagination:after {\n content: \" \";\n display: table; }\n .pagination:after {\n clear: both; }\n .pagination li {\n display: inline-block; }\n .pagination li a {\n background-color: #fff;\n margin-left: .1em;\n margin-right: .1em;\n border: 1px solid #222;\n color: #222;\n float: left;\n line-height: 1.42857143;\n padding: 6px 12px;\n position: relative;\n text-decoration: none;\n margin-bottom: 0.2em; }\n .pagination .active a {\n background-color: #222;\n border-color: #222;\n color: #fff;\n cursor: default;\n z-index: 2; }\n .pagination .prev,\n .pagination .next {\n font-weight: 600;\n font-size: 20px;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif;\n transition-property: transform;\n transition-timing-function: ease-out;\n transition-duration: 0.3s; }\n .pagination .prev {\n float: left; }\n .pagination .prev:hover {\n color: #c05b4d;\n transform: translateX(-4px); }\n .pagination .next {\n float: right; }\n .pagination .next:hover {\n color: #c05b4d;\n transform: translateX(4px); }\n\n@media screen and (max-width: 1080px) {\n .pagination {\n margin: 1em 0; } }\n\n.footer {\n margin-top: 2em; }\n .footer .social-links {\n display: flex;\n justify-content: center;\n align-items: center;\n flex-wrap: wrap; }\n .footer .social-links .iconfont {\n font-size: 1.7em; }\n .footer .social-links .iconfont + .iconfont {\n margin-left: 0.5em; }\n .footer .social-links .iconfont:hover {\n color: #c05b4d; }\n .footer .copyright {\n margin: 10px 0;\n color: #8a8a8a;\n text-align: center;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n .footer .copyright .hexo-link,\n .footer .copyright .theme-link {\n color: #c05b4d; }\n .footer .copyright .copyright-year {\n display: block; }\n .footer .copyright .copyright-year .heart {\n font-size: 14px; }\n\n.archive {\n margin: 0 5em 3em;\n background-color: white;\n padding: 1em 5em 5em 5em; }\n .archive .archive-title {\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n .archive .archive-title.tag, .archive .archive-title.category {\n margin: 20px 0; }\n .archive .archive-title .archive-name {\n margin: 0;\n display: inline-block;\n font-weight: 400;\n font-size: 30px;\n line-height: 32px; }\n .archive .archive-title .archive-post-counter {\n display: none;\n color: #8a8a8a; }\n .archive .collection-title {\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n .archive .collection-title .archive-year {\n margin: 2em 0 0;\n font-weight: 400;\n font-size: 28px;\n line-height: 30px; }\n .archive .archive-post {\n padding: 15px 20px 5px 20px;\n border-bottom: 1px solid #cacaca;\n font-size: 1.1em;\n display: table;\n width: 100%; }\n .archive .archive-post .archive-post-time {\n color: #8a8a8a;\n display: table-cell;\n width: 7em;\n vertical-align: middle; }\n .archive .archive-post .archive-post-title {\n display: table-cell;\n vertical-align: middle; }\n .archive .archive-post .archive-post-title .archive-post-link {\n color: #c05b4d; }\n .archive .archive-post::first-child {\n margin-top: 10px; }\n .archive .archive-post:hover {\n transition: 0.2s ease-out;\n transform: translateX(4px); }\n .archive .archive-post:hover .archive-post-time {\n color: #717171; }\n .archive .archive-post:hover .archive-post-title .archive-post-link {\n color: #a14639; }\n .archive .more-post {\n text-align: right; }\n .archive .more-post .more-post-link {\n margin-top: 1em;\n color: #c05b4d;\n font-size: 1.1em;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n .archive .more-post .more-post-link:hover {\n border-bottom: 1px solid #c05b4d; }\n\n@media screen and (max-width: 899px) {\n .archive {\n margin: 0 auto 1em auto;\n padding: 1em; }\n .archive .archive-title .archive-name {\n font-size: 26px; }\n .archive .collection-title .archive-year {\n margin: 10px 0;\n font-size: 24px; }\n .archive .archive-post {\n padding: 5px 10px; }\n .archive .archive-post .archive-post-time {\n font-size: 13px;\n display: block; }\n .archive .archive-post .archive-post-title {\n display: block; } }\n\n.tag-cloud {\n margin: 2em 0 3em;\n text-align: center;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n .tag-cloud .tag-cloud-title {\n display: inline-block;\n font-size: 24px;\n color: #c05b4d;\n border-bottom: 2px solid #c05b4d; }\n .tag-cloud .tag-cloud-tags {\n margin: 10px 0; }\n .tag-cloud .tag-cloud-tags a {\n display: inline-block;\n position: relative;\n margin: 5px 10px;\n word-wrap: break-word;\n transition-duration: 0.2s;\n transition-property: transform;\n transition-timing-function: ease-out; }\n .tag-cloud .tag-cloud-tags a .tag-count {\n display: inline-block;\n position: relative;\n top: -8px;\n right: -2px;\n color: #c05b4d;\n font-size: 12px; }\n .tag-cloud .tag-cloud-tags a:active, .tag-cloud .tag-cloud-tags a:focus, .tag-cloud .tag-cloud-tags a:hover {\n color: #c05b4d;\n transform: scale(1.1); }\n\n.categories {\n margin: 2em 0 3em;\n text-align: center;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n .categories .categories-title {\n display: inline-block;\n font-size: 18px;\n color: #c05b4d;\n border-bottom: 2px solid #c05b4d; }\n .categories .categories-tags {\n margin: 10px 0; }\n .categories .categories-tags .category-link {\n display: inline-block;\n position: relative;\n margin: 5px 10px;\n word-wrap: break-word;\n transition-duration: 0.2s;\n transition-property: transform;\n transition-timing-function: ease-out; }\n .categories .categories-tags .category-link .category-count {\n display: inline-block;\n position: relative;\n top: -8px;\n right: -2px;\n color: #c05b4d;\n font-size: 12px; }\n .categories .categories-tags .category-link:active, .categories .categories-tags .category-link:focus, .categories .categories-tags .category-link:hover {\n color: #c05b4d;\n transform: scale(1.1); }\n\n.slideout-menu {\n position: fixed;\n top: 0;\n left: 0px;\n bottom: 0;\n width: 180px;\n min-height: 100vh;\n overflow-y: hidden;\n -webkit-overflow-scrolling: touch;\n z-index: 0;\n display: none; }\n\n.slideout-panel {\n z-index: 1;\n background-color: #fefefe;\n min-height: 100%; }\n\n.slideout-open,\n.slideout-open body,\n.slideout-open .slideout-panel {\n overflow: hidden; }\n\n.slideout-open .slideout-menu {\n display: block; }\n\n.mobile-navbar {\n display: none;\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 50px;\n background: #fefefe;\n box-shadow: 0px 2px 2px #cacaca;\n text-align: center;\n transition: transform 300ms ease;\n z-index: 99; }\n .mobile-navbar.fixed-open {\n transform: translate3d(180px, 0px, 0px); }\n .mobile-navbar .mobile-header-logo {\n display: inline-block;\n margin-right: 50px; }\n .mobile-navbar .mobile-header-logo .logo {\n font-size: 22px;\n line-height: 50px;\n font-family: \"Chancery\", cursive, LiSu, sans-serif; }\n .mobile-navbar .mobile-navbar-icon {\n color: #c05b4d;\n height: 50px;\n width: 50px;\n font-size: 24px;\n text-align: center;\n float: left;\n position: relative;\n transition: background 0.5s; }\n\n@keyframes clickfirst {\n 0% {\n transform: translateY(6px) rotate(0deg); }\n 100% {\n transform: translateY(0) rotate(45deg); } }\n\n@keyframes clickmid {\n 0% {\n opacity: 1; }\n 100% {\n opacity: 0; } }\n\n@keyframes clicklast {\n 0% {\n transform: translateY(-6px) rotate(0deg); }\n 100% {\n transform: translateY(0) rotate(-45deg); } }\n\n@keyframes outfirst {\n 0% {\n transform: translateY(0) rotate(-45deg); }\n 100% {\n transform: translateY(-6px) rotate(0deg); } }\n\n@keyframes outmid {\n 0% {\n opacity: 0; }\n 100% {\n opacity: 1; } }\n\n@keyframes outlast {\n 0% {\n transform: translateY(0) rotate(45deg); }\n 100% {\n transform: translateY(6px) rotate(0deg); } }\n .mobile-navbar .mobile-navbar-icon span {\n position: absolute;\n /* fallback for browsers which still doesn't support for `calc()` */\n left: 15px;\n top: 25px;\n left: calc((100% - 20px) / 2);\n top: calc((100% - 1px) / 2);\n width: 20px;\n height: 1px;\n background-color: #c05b4d; }\n .mobile-navbar .mobile-navbar-icon span:nth-child(1) {\n transform: translateY(6px) rotate(0deg); }\n .mobile-navbar .mobile-navbar-icon span:nth-child(3) {\n transform: translateY(-6px) rotate(0deg); }\n .mobile-navbar .mobile-navbar-icon.icon-click span:nth-child(1) {\n animation-duration: 0.5s;\n animation-fill-mode: both;\n animation-name: clickfirst; }\n .mobile-navbar .mobile-navbar-icon.icon-click span:nth-child(2) {\n animation-duration: 0.2s;\n animation-fill-mode: both;\n animation-name: clickmid; }\n .mobile-navbar .mobile-navbar-icon.icon-click span:nth-child(3) {\n animation-duration: 0.5s;\n animation-fill-mode: both;\n animation-name: clicklast; }\n .mobile-navbar .mobile-navbar-icon.icon-out span:nth-child(1) {\n animation-duration: 0.5s;\n animation-fill-mode: both;\n animation-name: outfirst; }\n .mobile-navbar .mobile-navbar-icon.icon-out span:nth-child(2) {\n animation-duration: 0.2s;\n animation-fill-mode: both;\n animation-name: outmid; }\n .mobile-navbar .mobile-navbar-icon.icon-out span:nth-child(3) {\n animation-duration: 0.5s;\n animation-fill-mode: both;\n animation-name: outlast; }\n\n.mobile-menu {\n background-color: rgba(248, 245, 236, 0.5); }\n .mobile-menu .mobile-menu-list {\n position: relative;\n list-style: none;\n margin-top: 50px;\n padding: 0;\n border-top: 1px solid #f8f5ec; }\n .mobile-menu .mobile-menu-list .mobile-menu-item {\n padding: 10px 30px;\n border-bottom: 1px solid #f8f5ec; }\n .mobile-menu .mobile-menu-list a {\n font-size: 18px;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n .mobile-menu .mobile-menu-list a:hover {\n color: #c05b4d; }\n\n@media screen and (max-width: 1080px) {\n .mobile-navbar {\n display: block; } }\n\n.back-to-top {\n display: none;\n position: fixed;\n right: 2em;\n bottom: 2em;\n transition-property: transform;\n transition-timing-function: ease-out;\n transition-duration: 0.3s;\n z-index: 10; }\n .back-to-top:hover {\n transform: translateY(-5px); }\n\n@media screen and (max-width: 1080px) {\n .back-to-top {\n display: none !important; } }\n\n.not-found {\n text-align: center; }\n .not-found .error-emoji {\n color: #363636;\n font-size: 3rem; }\n .not-found .error-text {\n color: #797979;\n font-size: 1.25rem; }\n .not-found .error-link {\n margin-top: 2rem; }\n .not-found .error-link a {\n color: #c05b4d; }\n\n\n\n// WEBPACK FOOTER //\n// ./css/style.scss","@import '_common/normalize';\n\nhtml {\n font-size: $global-font-size;\n box-sizing: border-box;\n}\n\nbody {\n padding: 0;\n margin: 0;\n font-family: $global-font-family;\n font-weight: normal;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n line-height: $global-lineheight;\n color: $global-font-color;\n background: $global-background;\n scroll-behavior: smooth;\n // border-top: 3px solid $theme-color;\n}\n\n@include max-screen() {\n body {\n border-top: 0;\n }\n}\n\n::selection {\n background: $theme-color;\n color: #fff; \n}\n\n// ::-webkit-scrollbar {\n// width: 8px;\n// height: 6px; \n// }\n\n// ::-webkit-scrollbar-thumb {\n// background: lighten($theme-color, 10%);\n// border-radius: 5px;\n// }\n\n// ::-webkit-scrollbar-track {\n// background: rgba(211, 211, 211, 0.4);\n// border-radius: 5px;\n// }\n\nimg {\n max-width: 100%;\n height: auto;\n display: inline-block;\n vertical-align: middle;\n}\n\na {\n color: $global-font-color;\n text-decoration: none;\n}\n\n@each $header, $size in $global-headings {\n #{$header} {\n font-size: $size;\n font-family: $global-serif-font-family;\n }\n}\n\n.container {\n margin: 0 auto;\n width: $global-body-width;\n}\n\n@include max-screen() {\n .container {\n width: 100%;\n }\n}\n\n.content-wrapper {\n padding: 3em 0 1px 0;\n}\n\n// make video fluid:\n// https://css-tricks.com/NetMag/FluidWidthVideo/Article-FluidWidthVideo.php\n// class video-container is the wrapper used by hexo youtube tag plugin\n.video-container {\n\tposition: relative;\n\tpadding-bottom: 56.25%; /* 16:9 */\n\tpadding-top: 25px;\n\theight: 0;\n}\n.video-container iframe {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n}\n\n.bg-llight {\n background-color: #f2f2f5;\n}\n\n.bg-white {\n background-color: #FFF;\n}\n\n\n// WEBPACK FOOTER //\n// ./css/_base.scss","@mixin clearfix() {\n &:before,\n &:after {\n content: \" \";\n display: table;\n }\n \n &:after {\n clear: both;\n }\n}\n\n@mixin min-screen($min-width: $global-body-width) {\n @media screen and (min-width: $min-width) {\n @content;\n }\n}\n\n@mixin max-screen($max-width: $global-body-width) {\n @media screen and (max-width: $max-width) {\n @content;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./css/_common/_utils.scss","// ==============================\n// Iconfont\n// ==============================\n\n.iconfont {\n font-family: \"iconfont\" !important;\n font-style: normal;\n -webkit-font-smoothing: antialiased;\n -webkit-text-stroke-width: 0.2px;\n -moz-osx-font-smoothing: grayscale;\n cursor: pointer;\n}\n\n\n/* Generic Icon */\n.icon-heart::before {\n font-icon: url('../fonts/svg/heart.svg');\n}\n\n.icon-right::before {\n font-icon: url('../fonts/svg/right.svg');\n}\n\n.icon-left::before {\n font-icon: url('../fonts/svg/left.svg');\n}\n\n.icon-up::before {\n font-icon: url('../fonts/svg/up.svg');\n font-size: 2em;\n}\n\n.icon-new-window::before {\n font-icon: url('../fonts/svg/new-window.svg');\n}\n\n.icon-rss::before {\n font-icon: url('../fonts/svg/rss.svg');\n}\n\n\n/* Social Icon */\n.icon-email::before {\n font-icon: url('../fonts/svg/email.svg');\n font-size: 0.8em;\n}\n\n.icon-stack-overflow::before {\n font-icon: url('../fonts/svg/stack-overflow.svg');\n}\n\n.icon-twitter::before {\n font-icon: url('../fonts/svg/twitter.svg');\n font-size: 0.9em;\n}\n\n.icon-facebook::before {\n font-icon: url('../fonts/svg/facebook.svg');\n}\n\n.icon-linkedin::before {\n font-icon: url('../fonts/svg/linkedin.svg');\n}\n\n.icon-google::before {\n font-icon: url('../fonts/svg/google.svg');\n font-size: 1.15em;\n}\n\n.icon-github::before {\n font-icon: url('../fonts/svg/github.svg');\n}\n\n.icon-weibo::before {\n font-icon: url('../fonts/svg/weibo.svg');\n font-size: 1.1em;\n}\n\n.icon-zhihu::before {\n font-icon: url('../fonts/svg/zhihu.svg');\n}\n\n.icon-douban::before {\n font-icon: url('../fonts/svg/douban.svg');\n}\n\n.icon-pocket::before {\n font-icon: url('../fonts/svg/pocket.svg');\n}\n\n.icon-tumblr::before {\n font-icon: url('../fonts/svg/tumblr.svg');\n font-size: 1.1em;\n}\n\n.icon-instagram::before {\n font-icon: url('../fonts/svg/instagram.svg');\n font-size: 1.1em;\n}\n\n.icon-gitlab::before {\n font-icon: url('../fonts/svg/gitlab.svg');\n}\n\n.icon-goodreads::before {\n font-icon: url('../fonts/svg/goodreads.svg');\n}\n\n.icon-coding::before {\n font-icon: url('../fonts/svg/coding.svg');\n font-size: 1.3em;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./css/_iconfont.scss","// ==============================\n// Header\n// ==============================\n\n.header {\n @include clearfix; \n\n @import '_header/logo';\n @import '_header/menu';\n}\n\n\n@include max-screen() {\n .header {\n padding: 50px 0 0;\n text-align: center;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./css/_partial/_header.scss","// ==============================\n// Logo\n// =============================\n\n.logo-wrapper {\n float: left;\n padding-left: 15px;\n\n .logo {\n font-size: $logo-font-size;\n font-family: $logo-font-family;\n }\n}\n\n@include max-screen() {\n .logo-wrapper {\n display: none;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./css/_partial/_header/_logo.scss","// ==============================\n// Menu\n// =============================\n\n.site-navbar {\n .menu {\n float: right;\n padding-right: 15px;\n font-family: $global-serif-font-family;\n\n .menu-item {\n display: inline-block;\n margin-left: 1em;\n margin-right: 1em;\n position: relative;\n\n & + .menu-item {\n margin-left: $menu-item-margin-left;;\n }\n\n .submenu {\n visibility: hidden;\n position: absolute;\n top: 120%;\n // left: 50%;\n transition: 0.2s 1s;\n list-style: none;\n padding: 0;\n background: #fff;\n white-space:nowrap;\n border: 1px solid #ddd;\n border-bottom: none;\n transition: 0.2s 0.2s; /* delay of seconds on hover off */\n z-index: 99;\n\n li {\n border-bottom: 1px solid #ddd;\n\n a {\n padding: 12px;\n }\n }\n }\n\n &:hover .submenu {\n visibility: visible;\n transition-delay: 0s; /* react immediately on hover */\n }\n \n // @include underline-from-center;\n }\n\n .menu-item-link {\n font-size: $menu-link-font-size;\n }\n }\n}\n\n.menu-parent::after {\n content: \" ▼\";\n font-size: 11px;\n}\n\n.menu a:hover {\n color: $theme-color;\n}\n\n@include max-screen() {\n .site-navbar {\n display: none;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./css/_partial/_header/_menu.scss","// ==============================\n// Post\n// ==============================\n\n.post {\n padding: 3em 5em;\n margin: 0 5em 3em;\n\n @import '_post/header';\n @import '_post/toc';\n @import '_post/content';\n @import '_post/copyright';\n @import '_post/reward';\n @import '_post/footer';\n @import '_post/disqus';\n @import '_post/footnote';\n}\n\n@media screen and (max-width: 504px) {\n .post {\n padding: 1em 1em;\n margin: 0 0 2em;\n }\n\n .content-wrapper {\n padding: 1em 0 1px;\n }\n}\n\n@media screen and (min-width: 900px) and (max-width: 1080px) {\n .post {\n margin: 0 2em 2em;\n }\n\n .content-wrapper {\n padding: 2em 0 1px;\n }\n}\n\n@media screen and (min-width: 504px) and (max-width: 899px) {\n .post {\n padding: 1em 1em;\n margin: 0 1em 2em;\n }\n\n .content-wrapper {\n padding: 1em 0 1px;\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./css/_partial/_post.scss",".post-header {\n margin-bottom: 20px;\n text-align: center;\n padding-bottom: 10px;\n border-bottom: 2px LightGrey solid;\n\n .post-title {\n margin: 0;\n font-size: $post-title-font-size;\n font-weight: $post-title-font-weight;\n font-family: $global-serif-font-family;\n }\n\n .post-link {\n @include underline-from-center;\n }\n\n .post-meta {\n font-size: 14px;\n color: $post-meta-font-color;\n\n .post-time {\n font-size: 15px;\n }\n\n .post-category {\n display: inline;\n\n a {\n color: inherit;\n\n &::before {\n content: '·';\n }\n\n &:hover {\n color: $theme-color;\n }\n }\n }\n\n .more-meta {\n &::before {\n content: '·';\n }\n }\n\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./css/_partial/_post/_header.scss","@mixin underline-from-center() {\n display: inline-block;\n vertical-align: middle;\n transform: translateZ(0);\n backface-visibility: hidden;\n box-shadow: 0 0 1px transparent;\n position: relative;\n overflow: hidden;\n\n &:before {\n content: '';\n position: absolute;\n z-index: -1;\n height: 2px;\n bottom: 0;\n left: 51%;\n right: 51%;\n background: $theme-color;\n transition-duration: 0.2s;\n transition-property: right, left;\n transition-timing-function: ease-out;\n }\n\n &.active,\n &:active,\n &:focus,\n &:hover {\n &:before {\n right: 0;\n left: 0;\n }\n }\n}\n\n@mixin mobile-menu-icon() {\n @keyframes clickfirst {\n 0% {\n transform: translateY(6px) rotate(0deg);\n \n }\n\n 100% {\n transform: translateY(0) rotate(45deg);\n }\n }\t\n\n @keyframes clickmid {\n 0% {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n }\n }\n\n @keyframes clicklast {\n 0% {\n transform: translateY(-6px) rotate(0deg);\n }\n\n 100% {\n transform: translateY(0) rotate(-45deg);\n }\n }\n \n @keyframes outfirst {\n 0% {\n transform: translateY(0) rotate(-45deg);\n }\n\n 100% {\n transform: translateY(-6px) rotate(0deg);\n }\n }\t\n\n @keyframes outmid {\n 0% {\n opacity: 0;\n }\n\n 100% {\n opacity: 1;\n }\n }\n\n @keyframes outlast {\n 0% {\n transform: translateY(0) rotate(45deg);\n }\n\n 100% {\n transform: translateY(6px) rotate(0deg);\n }\n }\n\n span {\n position: absolute;\n /* fallback for browsers which still doesn't support for `calc()` */\n left: 15px;\n top: 25px;\n left: calc((100% - 20px) / 2);\n top: calc((100% - 1px) / 2);\n width: 20px;\n height: 1px;\n background-color: $theme-color;\n \n &:nth-child(1) {\n transform: translateY(6px) rotate(0deg);\n }\n\n &:nth-child(3) {\n transform: translateY(-6px) rotate(0deg);\n }\n }\n\n &.icon-click {\n span:nth-child(1) {\n animation-duration: 0.5s;\n animation-fill-mode: both;\n animation-name: clickfirst;\n }\n\n span:nth-child(2) {\n animation-duration: 0.2s;\n animation-fill-mode: both;\n animation-name: clickmid;\n }\n\n span:nth-child(3) {\n animation-duration: 0.5s;\n animation-fill-mode: both;\n animation-name: clicklast;\n }\n }\n\n &.icon-out {\n span:nth-child(1) {\n animation-duration: 0.5s;\n animation-fill-mode: both;\n animation-name: outfirst;\n }\n\n span:nth-child(2) {\n animation-duration: 0.2s;\n animation-fill-mode: both;\n animation-name: outmid;\n }\n\n span:nth-child(3) {\n animation-duration: 0.5s;\n animation-fill-mode: both;\n animation-name: outlast;\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./css/_common/_animation.scss",".post-toc {\n\n .post-toc-title {\n font-size: 1em;\n max-width: 9em;\n border: 0;\n font-weight: normal;\n padding: 0.05em 0.5em;\n line-height: 1em;\n }\n\n .post-toc-content {\n display: block;\n padding: 0.5em;\n margin-top: -1.5em;\n line-height: 1.3em;\n\n /* Hugo Table of Contents have extra dot in front */\n ul {\n padding-left: 20px;\n list-style-type: none;\n\n ul {\n list-style: disc;\n\n ul {\n list-style: circle;\n }\n\n li > a {\n color: #139;\n }\n\n li > a:hover{\n color: #900;\n }\n }\n }\n }\n\n}\n\n@include min-screen() {\n .post-toc {\n display: none;\n border: 1px solid #CCC;\n background: white;\n box-shadow: 0 0 1em #777777;\n position: fixed;\n top: 0;\n right: 0;\n max-height: 80%;\n overflow: auto;\n z-index: 99;\n\n .post-toc-content {\n display: none;\n }\n\n &:hover .post-toc-content {\n display: block;\n }\n }\n}\n\n@include max-screen() {\n .post-toc {\n padding: 10px;\n border-bottom: 2px LightGrey solid;\n word-wrap: break-word;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./css/_partial/_post/_toc.scss","// ==============================\n// Post content\n// ==============================\n\n.post-content {\n word-wrap: break-word;\n\n @for $i from 1 through 6 {\n h#{$i} {\n font-weight: 600;\n font-family: $global-serif-font-family;\n }\n }\n\n h1 {\n border-bottom: 1px solid #ddd;\n margin-top: 2em;\n }\n\n h2 {\n // font-size: 1.6em;\n border-bottom: 1px solid #ddd;\n margin-top: 2em;\n }\n\n h3 {\n // font-size: 1.3em;\n margin-top: 1.5em;\n }\n\n a {\n color: $theme-color;\n word-break: break-all;\n\n &:hover {\n border-bottom: $content-link-border;\n }\n\n &.fancybox {\n border: 0;\n }\n }\n\n blockquote {\n margin: 1em auto;\n padding: 0.2em 2em 0.2em 3em;\n color: #555555;\n background-color: #F6F6F6;\n border-left: 4px solid #999;\n position: relative;\n line-height: 1.6;\n font-family: Open Sans;\n\n &::before {\n font-family: Arial;\n content: \"\\201C\";\n color: #999;\n font-size: 4em;\n position: absolute;\n left: 10px;\n top: -10px;\n }\n\n footer {\n color: #333333;\n margin-bottom: 1em;\n }\n\n cite:before {\n content: '\\2014';\n padding-right: .3em;\n padding-left: .3em;\n }\n }\n\n img {\n display: inline-block;\n max-width: 100%;\n }\n\n > table {\n border: none;\n width: 100%;\n\n td {\n background-color: #F0E4E4;\n border: 3px solid #FFF;\n padding: 5px 15px;\n }\n\n th {\n text-align: left;\n background-color: #A65B5B;\n color: #FFF;\n border: 3px solid #FFF;\n padding: 5px 15px;\n }\n }\n\n @import 'code';\n\n .post-summary {\n margin-bottom: 1em;\n }\n\n .read-more {\n text-align: right;\n\n .read-more-link {\n color: $theme-color;\n font-size: 1.1em;\n font-family: $global-serif-font-family;\n\n &:hover {\n border-bottom: $post-readMore-border-bottom;\n }\n }\n }\n\n kbd {\n display: inline-block;\n padding: 0.25em;\n background-color: #fafafa;\n border: 1px solid #dbdbdb;\n border-bottom-color: #b5b5b5;\n border-radius: 3px;\n box-shadow: inset 0 -1px 0 #b5b5b5;\n font-size: 0.8em;\n line-height: 1.25;\n font-family: \"SFMono-Regular\",\"Liberation Mono\",\"Roboto Mono\",Menlo,Monaco,Consolas,\"Courier New\",Courier,monospace;\n color: #4a4a4a;\n }\n\n dl dt::after {\n content: ':';\n }\n\n figure {\n &.center {\n text-align: center;\n }\n\n figcaption {\n margin-top: 0.5em;\n text-align: center;\n line-height: 1.5em;\n\n h4 {\n color: #b5b5b5;\n // font-size: 0.9em;\n margin: 0;\n }\n\n p {\n font-size: 0.9em;\n color: #b5b5b5;\n font-style: italic;\n margin: 0;\n }\n }\n }\n\n .task-list {\n list-style: none;\n padding-left: 1.5rem;\n }\n}\n\n.header-link {\n margin-left: 0.5em;\n fill: currentColor;\n visibility: hidden;\n}\n\n.post-content-header:hover .header-link {\n visibility: visible;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./css/_partial/_post/_content.scss","p > code, pre {\n padding: 0 7px;\n background: $code-background;\n border-radius: 4px;\n color: $code-color;\n}\n\ncode, pre {\n font-size: $code-font-size;\n font-family: $code-font-family;\n padding: 0;\n}\n\n.chroma {\n margin: 0;\n}\n\n.highlight > .chroma {\n margin: 1em 0;\n overflow-x: auto;\n position: relative;\n border: 2px solid #dddddd;\n\n table {\n position: relative;\n padding: 0.8em 0;\n\n &::after {\n position: absolute;\n top: 0;\n right: 0;\n padding: 0 7px;\n font-size: 0.8em;\n font-weight: bold;\n color: darken($gray, 10%);\n // background: darken($code-background, 3%);\n content: 'Code';\n }\n }\n\n > table::after {\n content: attr(data-lang);\n text-transform: capitalize;\n }\n\n tr, td {\n margin: 0;\n padding: 0;\n width: 100%;\n border-collapse: collapse;\n }\n\n tr>td:first-child {\n width: 1%;\n white-space: nowrap;\n }\n\n .lnt {\n color: $gray;\n display: block;\n line-height: 2em;\n }\n}\n\n@import '_chroma_highlight';\n\n\n\n// WEBPACK FOOTER //\n// ./css/_partial/_post/_code.scss","/* Background */\n\n.chroma {\n color: #586e75;\n background-color: $code-background\n}\n\n/* LineTableTD */\n\n.chroma .lntd {\n vertical-align: top;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\n/* LineTable */\n\n.chroma .lntable {\n border-spacing: 0;\n padding: 0;\n margin: 0;\n border: 0;\n width: auto;\n overflow: auto;\n display: block;\n}\n\n/* LineHighlight */\n\n.chroma .hl {\n display: block;\n width: 100%;\n}\n\n/* LineNumbersTable */\n\n.chroma .lnt {\n margin-right: 0.4em;\n padding: 0 0.4em 0 0.4em;\n}\n\n/* LineNumbers */\n\n.chroma .ln {\n margin-right: 0.4em;\n padding: 0 0.4em 0 0.4em;\n}\n\n/* Keyword */\n\n.chroma .k {\n color: #859900\n}\n\n/* KeywordConstant */\n\n.chroma .kc {\n color: #859900;\n font-weight: bold\n}\n\n/* KeywordDeclaration */\n\n.chroma .kd {\n color: #859900\n}\n\n/* KeywordNamespace */\n\n.chroma .kn {\n color: #dc322f;\n font-weight: bold\n}\n\n/* KeywordPseudo */\n\n.chroma .kp {\n color: #859900\n}\n\n/* KeywordReserved */\n\n.chroma .kr {\n color: #859900\n}\n\n/* KeywordType */\n\n.chroma .kt {\n color: #859900;\n font-weight: bold\n}\n\n/* Name */\n\n.chroma .n {\n color: #268bd2\n}\n\n/* NameAttribute */\n\n.chroma .na {\n color: #268bd2\n}\n\n/* NameBuiltin */\n\n.chroma .nb {\n color: #cb4b16\n}\n\n/* NameBuiltinPseudo */\n\n.chroma .bp {\n color: #268bd2\n}\n\n/* NameClass */\n\n.chroma .nc {\n color: #cb4b16\n}\n\n/* NameConstant */\n\n.chroma .no {\n color: #268bd2\n}\n\n/* NameDecorator */\n\n.chroma .nd {\n color: #268bd2\n}\n\n/* NameEntity */\n\n.chroma .ni {\n color: #268bd2\n}\n\n/* NameException */\n\n.chroma .ne {\n color: #268bd2\n}\n\n/* NameFunction */\n\n.chroma .nf {\n color: #268bd2\n}\n\n/* NameFunctionMagic */\n\n.chroma .fm {\n color: #268bd2\n}\n\n/* NameLabel */\n\n.chroma .nl {\n color: #268bd2\n}\n\n/* NameNamespace */\n\n.chroma .nn {\n color: #268bd2\n}\n\n/* NameOther */\n\n.chroma .nx {\n color: #268bd2\n}\n\n/* NameProperty */\n\n.chroma .py {\n color: #268bd2\n}\n\n/* NameTag */\n\n.chroma .nt {\n color: #268bd2;\n font-weight: bold\n}\n\n/* NameVariable */\n\n.chroma .nv {\n color: #268bd2\n}\n\n/* NameVariableClass */\n\n.chroma .vc {\n color: #268bd2\n}\n\n/* NameVariableGlobal */\n\n.chroma .vg {\n color: #268bd2\n}\n\n/* NameVariableInstance */\n\n.chroma .vi {\n color: #268bd2\n}\n\n/* NameVariableMagic */\n\n.chroma .vm {\n color: #268bd2\n}\n\n/* Literal */\n\n.chroma .l {\n color: #2aa198\n}\n\n/* LiteralDate */\n\n.chroma .ld {\n color: #2aa198\n}\n\n/* LiteralString */\n\n.chroma .s {\n color: #2aa198\n}\n\n/* LiteralStringAffix */\n\n.chroma .sa {\n color: #2aa198\n}\n\n/* LiteralStringBacktick */\n\n.chroma .sb {\n color: #2aa198\n}\n\n/* LiteralStringChar */\n\n.chroma .sc {\n color: #2aa198\n}\n\n/* LiteralStringDelimiter */\n\n.chroma .dl {\n color: #2aa198\n}\n\n/* LiteralStringDoc */\n\n.chroma .sd {\n color: #2aa198\n}\n\n/* LiteralStringDouble */\n\n.chroma .s2 {\n color: #2aa198\n}\n\n/* LiteralStringEscape */\n\n.chroma .se {\n color: #2aa198\n}\n\n/* LiteralStringHeredoc */\n\n.chroma .sh {\n color: #2aa198\n}\n\n/* LiteralStringInterpol */\n\n.chroma .si {\n color: #2aa198\n}\n\n/* LiteralStringOther */\n\n.chroma .sx {\n color: #2aa198\n}\n\n/* LiteralStringRegex */\n\n.chroma .sr {\n color: #2aa198\n}\n\n/* LiteralStringSingle */\n\n.chroma .s1 {\n color: #2aa198\n}\n\n/* LiteralStringSymbol */\n\n.chroma .ss {\n color: #2aa198\n}\n\n/* LiteralNumber */\n\n.chroma .m {\n color: #2aa198;\n font-weight: bold\n}\n\n/* LiteralNumberBin */\n\n.chroma .mb {\n color: #2aa198;\n font-weight: bold\n}\n\n/* LiteralNumberFloat */\n\n.chroma .mf {\n color: #2aa198;\n font-weight: bold\n}\n\n/* LiteralNumberHex */\n\n.chroma .mh {\n color: #2aa198;\n font-weight: bold\n}\n\n/* LiteralNumberInteger */\n\n.chroma .mi {\n color: #2aa198;\n font-weight: bold\n}\n\n/* LiteralNumberIntegerLong */\n\n.chroma .il {\n color: #2aa198;\n font-weight: bold\n}\n\n/* LiteralNumberOct */\n\n.chroma .mo {\n color: #2aa198;\n font-weight: bold\n}\n\n/* OperatorWord */\n\n.chroma .ow {\n color: #859900\n}\n\n/* Comment */\n\n.chroma .c {\n color: #93a1a1;\n font-style: italic\n}\n\n/* CommentHashbang */\n\n.chroma .ch {\n color: #93a1a1;\n font-style: italic\n}\n\n/* CommentMultiline */\n\n.chroma .cm {\n color: #93a1a1;\n font-style: italic\n}\n\n/* CommentSingle */\n\n.chroma .c1 {\n color: #93a1a1;\n font-style: italic\n}\n\n/* CommentSpecial */\n\n.chroma .cs {\n color: #93a1a1;\n font-style: italic\n}\n\n/* CommentPreproc */\n\n.chroma .cp {\n color: #93a1a1;\n font-style: italic\n}\n\n/* CommentPreprocFile */\n\n.chroma .cpf {\n color: #93a1a1;\n font-style: italic\n}\n\n/* Generic */\n\n.chroma .g {\n color: #d33682\n}\n\n/* GenericDeleted */\n\n.chroma .gd {\n color: #d33682\n}\n\n/* GenericEmph */\n\n.chroma .ge {\n color: #d33682\n}\n\n/* GenericError */\n\n.chroma .gr {\n color: #d33682\n}\n\n/* GenericHeading */\n\n.chroma .gh {\n color: #d33682\n}\n\n/* GenericInserted */\n\n.chroma .gi {\n color: #d33682\n}\n\n/* GenericOutput */\n\n.chroma .go {\n color: #d33682\n}\n\n/* GenericPrompt */\n\n.chroma .gp {\n color: #d33682\n}\n\n/* GenericStrong */\n\n.chroma .gs {\n color: #d33682\n}\n\n/* GenericSubheading */\n\n.chroma .gu {\n color: #d33682\n}\n\n/* GenericTraceback */\n\n.chroma .gt {\n color: #d33682\n}\n\n\n\n// WEBPACK FOOTER //\n// ./css/_partial/_post/_chroma_highlight.scss",".post-copyright {\n padding: 10px;\n background-color: hsla(0,0%,71%,.1);\n border: 1px solid #e1e1e1;\n border-left: solid;\n margin-top: 3em;\n\n .copyright-item {\n margin: 5px 0;\n\n a {\n color: $theme-color;\n word-wrap: break-word;\n\n &:hover {\n border-bottom: $content-link-border;\n }\n }\n\n .item-title {\n display: inline-block;\n min-width: 5rem;\n margin-right: .5rem;\n text-align: right;\n font-weight: bold;\n\n &:after {\n content: \" :\";\n }\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./css/_partial/_post/_copyright.scss",".post-reward {\n margin-top: 20px;\n padding-top: 10px;\n text-align: center;\n border-top: 1px dashed $light-gray;\n\n .reward-button {\n margin: 15px 0;\n padding: 3px 7px;\n display: inline-block;\n color: $theme-color;\n border: 1px solid $theme-color;\n border-radius: 5px;\n cursor: pointer;\n\n &:hover {\n color: $white;\n background-color: $theme-color;\n transition: 0.5s;\n }\n }\n\n #reward:checked {\n & ~ .qr-code {\n display: block;\n }\n\n & ~ .reward-button {\n display: none;\n }\n }\n\n .qr-code {\n display: none;\n\n .qr-code-image {\n display: inline-block;\n min-width: 200px;\n width: 40%;\n margin-top: 15px;\n\n span {\n display: inline-block;\n width: 100%;\n margin: 8px 0;\n }\n }\n\n .image {\n width: 200px;\n height: 200px;\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./css/_partial/_post/_reward.scss","// ==============================\n// Post footer\n// ==============================\n\n.post-footer {\n font-family: $global-serif-font-family;\n\n .post-tags {\n margin-top: 1em;\n\n a {\n color: $theme-color;\n word-break: break-all;\n margin-right: 10px;\n\n &:hover {\n border-bottom: 1px solid $theme-color;\n }\n\n &::before {\n content: '#';\n }\n }\n }\n\n .post-nav {\n margin-top: 1em;\n @include clearfix;\n\n .prev,\n .next {\n font-weight: 600;\n font-size: $post-nav-font-size;\n font-family: $global-serif-font-family;\n transition-property: transform;\n transition-timing-function: ease-out;\n transition-duration: 0.3s;\n }\n\n .prev {\n float: left;\n\n &:hover {\n color: $theme-color;\n transform: translateX(-4px); \n }\n }\n\n .next {\n float: right;\n\n &:hover {\n color: $theme-color;\n transform: translateX(4px); \n }\n }\n\n .nav-mobile {\n display: none;\n }\n }\n}\n\n@include max-screen() {\n .post-footer {\n .post-nav {\n .nav-default {\n display: none;\n }\n\n .nav-mobile {\n display: inline;\n }\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./css/_partial/_post/_footer.scss","// ==============================\n// Post disqus\n// ==============================\n\n.disqus-button {\n display: block;\n padding: 15px 0;\n font-size: 16px;\n color: #555;\n border: 1px solid #ddd;\n text-align: center;\n cursor:pointer;\n margin-top: 2em;\n}\n\n\n// WEBPACK FOOTER //\n// ./css/_partial/_post/_disqus.scss",".footnotes {\n margin-top: 50px;\n font-size: 0.9em;\n\n hr {\n border-style: solid;\n color: rgb(221, 221, 221);\n }\n}\n\n.footnote-ref {\n display: inline;\n position: relative;\n margin-left: 3px;\n\n &:hover .fn-content {\n opacity: 1;\n visibility: visible;\n transform: translate3d(0, 0, 0) rotate3d(0, 0, 0, 0);\n // transition: opacity 0.3s transform 0.3s;\n }\n\n >a {\n font-weight: 700;\n &::after {\n content: ']';\n }\n &::before {\n content: '[';\n }\n }\n}\n\n.fn-content {\n position: absolute;\n display: inline-block;\n z-index: 14;\n left: 50%;\n bottom: 100%;\n line-height: 1.3;\n border-radius: 0.5em;\n border: 1px solid rgba(0, 0, 0, 0.1);\n background: #f6f6f6;\n opacity: 0;\n visibility: hidden;\n transform: translate3d(0, -10px, 0);\n transition: opacity 0.3s, transform 0.3s;\n// transition-delay: 2s;\n\n// &:hover {\n// opacity: 1;\n// pointer-events: auto;\n// }\n\n /* Arrow */\n// &:after {\n// content: '';\n// top: 100%;\n// left: 50%;\n// border: solid transparent;\n// height: 0;\n// width: 0;\n// position: absolute;\n// pointer-events: none;\n// border-color: transparent;\n// border-top-color: #f6f6f6;\n// border-width: 10px;\n// margin-left: -10px;\n// }\n .fn-text {\n // line-height: 1.35;\n display: inline-block;\n padding: 1em;\n font-size: 1.2em;\n z-index: 8;\n a {\n font-weight: bold;\n }\n }\n}\n\n\n\n\n// WEBPACK FOOTER //\n// ./css/_partial/_post/_footnote.scss","// ==============================\n// Pagination\n// ==============================\n\n.pagination {\n margin: $pagination-margin;\n text-align: center;\n @include clearfix;\n\n li {\n display: inline-block;\n\n a {\n background-color: #fff;\n margin-left: .1em;\n margin-right: .1em;\n border: 1px solid #222;\n color: #222;\n float: left;\n line-height: 1.42857143;\n padding: 6px 12px;\n position: relative;\n text-decoration: none;\n margin-bottom: 0.2em;\n }\n }\n\n .active {\n a {\n background-color: #222;\n border-color: #222;\n color: #fff;\n cursor: default;\n z-index: 2;\n }\n }\n\n .prev,\n .next {\n font-weight: 600;\n font-size: $pagination-font-size;\n font-family: $global-serif-font-family;\n transition-property: transform;\n transition-timing-function: ease-out;\n transition-duration: 0.3s;\n }\n\n .prev {\n float: left;\n\n &:hover {\n color: $theme-color;\n transform: translateX(-4px); \n }\n }\n\n .next {\n float: right;\n\n &:hover {\n color: $theme-color;\n transform: translateX(4px); \n }\n }\n}\n\n@include max-screen() {\n .pagination {\n margin: 1em 0;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./css/_partial/_pagination.scss","// ==============================\n// Post footer\n// =============================\n\n.footer {\n margin-top: $footer-margin-top;\n\n @import \"_footer/social\";\n @import \"_footer/copyright\";\n}\n\n\n// WEBPACK FOOTER //\n// ./css/_partial/_footer.scss","// ==============================\n// Social\n// =============================\n\n.social-links {\n display: flex;\n justify-content: center;\n align-items: center;\n flex-wrap: wrap;\n\n .iconfont {\n font-size: $social-icon-font-size;\n\n & + .iconfont {\n margin-left: $social-link-margin-left;\n } \n\n &:hover {\n color: $theme-color;\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./css/_partial/_footer/_social.scss","// ==============================\n// Copyright\n// =============================\n\n.copyright {\n margin: $copyright-margin;\n color: $dark-gray;\n text-align: center;\n font-family: $global-serif-font-family;\n\n .hexo-link,\n .theme-link {\n color: $theme-color;\n }\n\n .copyright-year {\n display: block;\n\n .heart {\n font-size: 14px;\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./css/_partial/_footer/_copyright.scss","// ==============================\n// Archive\n// =============================\n\n.archive {\n // margin: $archive-margin;\n // max-width: $archive-max-width;\n margin: 0 5em 3em;\n background-color: white;\n padding: 1em 5em 5em 5em;\n\n .archive-title {\n font-family: $global-serif-font-family;\n\n &.tag,\n &.category {\n margin: 20px 0;\n }\n\n .archive-name {\n margin: 0;\n display: inline-block;\n font-weight: 400;\n font-size: $archive-name-font-size;\n line-height: $archive-name-font-size + 2px;\n }\n\n .archive-post-counter {\n display: none;\n color: $dark-gray;\n }\n }\n\n .collection-title {\n font-family: $global-serif-font-family;\n \n .archive-year {\n margin: 2em 0 0;\n font-weight: 400;\n font-size: $collection-title-font-size;\n line-height: $collection-title-font-size + 2px;\n }\n }\n\n .archive-post {\n padding: $archive-post-padding;\n border-bottom: $archive-post-border;\n font-size: 1.1em;\n display: table;\n width: 100%;\n\n .archive-post-time {\n color: $dark-gray;\n display: table-cell;\n width: 7em;\n vertical-align: middle;\n }\n\n .archive-post-title {\n display: table-cell;\n vertical-align: middle;\n \n .archive-post-link {\n color: $theme-color;\n }\n }\n\n &::first-child {\n margin-top: 10px;\n }\n\n &:hover {\n // border-left: $archive-post-hover-border-left;\n transition: $archive-post-hover-transition;\n transform: $archive-post-hover-transform;\n\n .archive-post-time {\n color: darken($dark-gray, 10%);\n }\n\n .archive-post-title .archive-post-link {\n color: darken($theme-color, 10%);\n }\n }\n }\n\n .more-post {\n text-align: right;\n \n .more-post-link {\n margin-top: 1em;\n color: $theme-color;\n font-size: 1.1em;\n font-family: $global-serif-font-family;\n \n &:hover {\n border-bottom: $post-readMore-border-bottom;\n }\n }\n }\n}\n\n@media screen and (max-width: 899px) {\n .archive {\n margin: 0 auto 1em auto;\n padding: 1em;\n\n .archive-title .archive-name {\n font-size: $archive-name-font-size - 4px;\n }\n\n .collection-title .archive-year {\n margin: 10px 0;\n font-size: $collection-title-font-size - 4px;\n }\n\n .archive-post {\n padding: $archive-post-mobile-padding;\n\n .archive-post-time {\n font-size: $archive-post-mobile-time-font-size;\n display: block;\n }\n\n .archive-post-title {\n display: block;\n }\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./css/_partial/_archive.scss","// ==============================\n// Tags\n// =============================\n\n.tag-cloud {\n margin: 2em 0 3em;\n text-align: center;\n font-family: $global-serif-font-family;\n\n .tag-cloud-title {\n display: inline-block;\n font-size: $tag-cloud-title-size;\n color: $theme-color;\n border-bottom: $tag-cloud-title-border-bottom;\n }\n\n .tag-cloud-tags {\n margin: 10px 0;\n\n a {\n display: inline-block;\n position: relative;\n margin: $tag-cloud-tags-link-margin;\n word-wrap: break-word;\n transition-duration: 0.2s;\n transition-property: transform;\n transition-timing-function: ease-out;\n\n .tag-count {\n display: inline-block;\n position: relative;\n top: -8px;\n right: -2px;\n color: $theme-color;\n font-size: $category-count-font-size;\n }\n\n &:active,\n &:focus,\n &:hover {\n color: $theme-color;\n transform: scale(1.1);\n }\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./css/_partial/_tags.scss","\n.categories {\n margin: 2em 0 3em;\n text-align: center;\n font-family: $global-serif-font-family;\n\n .categories-title {\n display: inline-block;\n font-size: $categories-title-size;\n color: $theme-color;\n border-bottom: $categories-title-border-bottom;\n }\n\n .categories-tags {\n margin: 10px 0;\n\n .category-link {\n display: inline-block;\n position: relative;\n margin: $categories-tags-link-margin;\n word-wrap: break-word;\n transition-duration: 0.2s;\n transition-property: transform;\n transition-timing-function: ease-out;\n\n .category-count {\n display: inline-block;\n position: relative;\n top: -8px;\n right: -2px;\n color: $theme-color;\n font-size: $category-count-font-size;\n }\n\n &:active,\n &:focus,\n &:hover {\n color: $theme-color;\n transform: scale(1.1);\n }\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./css/_partial/_categories.scss","// ==============================\n// slideout (https://github.com/mango/slideout)\n// ==============================\n\n.slideout-menu {\n position: fixed;\n top: 0;\n left: 0px;\n bottom: 0;\n width: 180px;\n min-height: 100vh;\n overflow-y: hidden;\n -webkit-overflow-scrolling: touch;\n z-index: 0;\n display: none;\n}\n\n.slideout-panel {\n // position: relative;\n z-index: 1;\n background-color: $white;\n min-height: 100%;\n}\n\n.slideout-open,\n.slideout-open body,\n.slideout-open .slideout-panel {\n overflow: hidden;\n}\n\n.slideout-open .slideout-menu {\n display: block;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./css/_partial/_slideout.scss","// ==============================\n// Mobile Navbar\n// ==============================\n\n.mobile-navbar {\n display: none;\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: $mobile-navbar-height;\n background: $white;\n box-shadow: 0px 2px 2px $gray;\n text-align: center;\n transition: transform 300ms ease;\n z-index: 99;\n\n &.fixed-open {\n transform: translate3d(180px, 0px, 0px);\n }\n\n .mobile-header-logo {\n display: inline-block;\n margin-right: 50px;\n\n .logo {\n font-size: 22px;\n line-height: $mobile-navbar-height;\n font-family: $logo-font-family;\n }\n }\n\n .mobile-navbar-icon {\n color: $theme-color;\n height: $mobile-navbar-height;\n width: $mobile-navbar-height;\n font-size: 24px;\n text-align: center;\n float: left;\n position: relative;\n transition: background 0.5s;\n\n @include mobile-menu-icon();\n }\n}\n\n.mobile-menu {\n background-color: rgba($deputy-color, 0.5);\n\n .mobile-menu-list {\n position: relative;\n list-style: none;\n margin-top: 50px;\n padding: 0;\n border-top: 1px solid $deputy-color;\n\n .mobile-menu-item {\n padding: 10px 30px;\n border-bottom: 1px solid $deputy-color;\n }\n\n a {\n font-size: 18px;\n font-family: $global-serif-font-family;\n\n &:hover {\n color: $theme-color;\n }\n }\n }\n}\n\n@include max-screen() {\n .mobile-navbar {\n display: block;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./css/_partial/_mobile.scss","// ==============================\n// Back to top\n// =============================\n\n.back-to-top {\n display: none;\n position: fixed;\n right: 2em;\n bottom: 2em;\n transition-property: transform;\n transition-timing-function: ease-out;\n transition-duration: 0.3s;\n z-index: 10;\n\n &:hover {\n transform: translateY(-5px); \n }\n}\n\n@include max-screen() {\n .back-to-top {\n display: none !important;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./css/_partial/_back-to-top.scss","// ==============================\n// Archive\n// =============================\n\n.not-found {\n text-align: center;\n\n .error-emoji {\n color: #363636;\n font-size: 3rem;\n }\n\n .error-text {\n color: #797979;\n font-size: 1.25rem;\n }\n\n .error-link {\n margin-top: 2rem;\n\n a {\n color: $theme-color;\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./css/_partial/_404.scss"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"sources":["webpack:///../<input css 17>","webpack:///./css/_variables.scss","webpack:///./css/_common/_normalize.scss","webpack:///./css/style.scss","webpack:///./css/_base.scss","webpack:///./css/_common/_utils.scss","webpack:///./css/_iconfont.scss","webpack:///./css/_partial/_header.scss","webpack:///./css/_partial/_header/_logo.scss","webpack:///./css/_partial/_header/_menu.scss","webpack:///./css/_partial/_post.scss","webpack:///./css/_partial/_post/_header.scss","webpack:///./css/_common/_animation.scss","webpack:///./css/_partial/_post/_toc.scss","webpack:///./css/_partial/_post/_content.scss","webpack:///./css/_partial/_post/_code.scss","webpack:///./css/_partial/_post/_chroma_highlight.scss","webpack:///./css/_partial/_post/_copyright.scss","webpack:///./css/_partial/_post/_reward.scss","webpack:///./css/_partial/_post/_footer.scss","webpack:///./css/_partial/_post/_disqus.scss","webpack:///./css/_partial/_post/_footnote.scss","webpack:///./css/_partial/_pagination.scss","webpack:///./css/_partial/_footer.scss","webpack:///./css/_partial/_footer/_social.scss","webpack:///./css/_partial/_footer/_copyright.scss","webpack:///./css/_partial/_archive.scss","webpack:///./css/_partial/_tags.scss","webpack:///./css/_partial/_categories.scss","webpack:///./css/_partial/_slideout.scss","webpack:///./css/_partial/_mobile.scss","webpack:///./css/_partial/_back-to-top.scss","webpack:///./css/_partial/_404.scss"],"names":[],"mappings":"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","file":"jane.min.css","sourcesContent":["@font-face { font-family: custom-Id4028; src:url('~!!iconfont-webpack-plugin/lib/loader.js?{\"svgs\":[\"src/fonts/svg/heart.svg\",\"src/fonts/svg/right.svg\",\"src/fonts/svg/left.svg\",\"src/fonts/svg/up.svg\",\"src/fonts/svg/new-window.svg\",\"src/fonts/svg/rss.svg\",\"src/fonts/svg/email.svg\",\"src/fonts/svg/stack-overflow.svg\",\"src/fonts/svg/twitter.svg\",\"src/fonts/svg/facebook.svg\",\"src/fonts/svg/linkedin.svg\",\"src/fonts/svg/google.svg\",\"src/fonts/svg/github.svg\",\"src/fonts/svg/weibo.svg\",\"src/fonts/svg/zhihu.svg\",\"src/fonts/svg/douban.svg\",\"src/fonts/svg/pocket.svg\",\"src/fonts/svg/tumblr.svg\",\"src/fonts/svg/instagram.svg\",\"src/fonts/svg/gitlab.svg\",\"src/fonts/svg/goodreads.svg\",\"src/fonts/svg/coding.svg\"],\"name\":\"custom-Id4028\"}!iconfont-webpack-plugin/placeholder.svg') format('woff');font-weight: normal;font-style: normal;}\n\n\n// WEBPACK FOOTER //\n// ../<input css 17>","// ==============================\n// Variables\n// ==============================\n\n// ========== Theme Color ========== //\n// Config here to change theme color\n// Default | Mint Green | Cobalt Blue | Hot Pink | Dark Violet\n$theme-color-config: 'Default';\n\n// Default theme color map\n$theme-color-map: (\n 'Default': #c05b4d #f8f5ec,\n 'Mint Green': #16982B #f5f5f5,\n 'Cobalt Blue': #0047AB #f0f2f5,\n 'Hot Pink': #FF69B4 #f8f5f5,\n 'Dark Violet': #9932CC #f5f4fa\n);\n\n// Check theme color config.\n// if it does not exist, use default theme color.\n@if not(map-has-key($theme-color-map, $theme-color-config)) {\n $theme-color-config: 'Default';\n}\n$theme-color-list: map-get($theme-color-map, $theme-color-config);\n\n// Default theme color of the site.\n$theme-color: nth($theme-color-list, 1) !default;\n\n// Deputy theme color of the site.\n$deputy-color: nth($theme-color-list, 2) !default;\n\n\n// ========== Color ========== //\n$black: #0a0a0a !default;\n$white: #fefefe !default;\n$light-gray: #e6e6e6 !default;\n$gray: #cacaca !default;\n$dark-gray: #8a8a8a !default;\n\n\n// ========== Global ========== //\n// Text color of the body.\n$global-font-color: rgba(0, 0, 0, .84) !default;\n\n// Font size attribute applied to '<html>' and '<body>'.\n$global-font-size: 18px !default;\n\n// Global width of '<body>'.\n$global-body-width: 1080px !default;\n\n// Padding of container main\n$global-container-padding: 0 20px !default;\n\n// Default line height for all type. `$global-lineheight` is 24px while `$global-font-size` is 16px.\n$global-lineheight: 1.8 !default;\n\n// Font family of the site.\n$global-font-family: 'Source Sans Pro', 'Helvetica Neue', Arial, sans-serif !default;\n\n// Serif font family of the site.\n$global-serif-font-family: Athelas, STHeiti, Microsoft Yahei, serif !default;\n\n// Background color of the site.\n$global-background: $white !default;\n\n// Headings font size of the site.\n$global-headings: (\n h1: 1.6em,\n h2: 1.5em,\n h3: 1.3em,\n h4: 1.2em,\n h5: 1.1em,\n h6: 1em\n) !default;\n\n\n// ========== Header ========== //\n// Padding of the site header.\n// $header-padding: 20px 20px !default;\n\n// Font family: Chancery\n@font-face {\n font-family: 'Chancery';\n src: url('../fonts/chancery/apple-chancery-webfont.eot');\n src: local('Apple Chancery'), url('../fonts/chancery/apple-chancery-webfont.eot?#iefix') format('embedded-opentype'),\n url('../fonts/chancery/apple-chancery-webfont.woff2') format('woff2'),\n url('../fonts/chancery/apple-chancery-webfont.woff') format('woff'),\n url('../fonts/chancery/apple-chancery-webfont.ttf') format('truetype'),\n url('../fonts/chancery/apple-chancery-webfont.svg#apple-chancery') format('svg');\n font-weight: lighter;\n font-style: normal;\n}\n\n// Font size of the logo.\n$logo-font-size: 36px !default;\n\n// Font family of the logo.\n$logo-font-family: 'Chancery', cursive, LiSu, sans-serif !default;\n\n// Margin of menu item.\n$menu-item-margin-left: 10px !default;\n\n// Margin of menu item in mobile.\n$menu-item-mobile-margin: 5px !default;\n\n// Font size of menu item link.\n$menu-link-font-size: 18px !default;\n\n// Height of the mobile header.\n$mobile-navbar-height: 50px !default;\n\n// ========== Post ========== //\n// Margin bottom of post list.\n$post-list-margin-bottom: 20px !default;\n\n// Padding of the post.\n$post-padding: 1.5em 0 !default;\n\n// Border top of the post + post.\n$post-border: 1px solid $light-gray !default;\n\n// Font size of post title.\n$post-title-font-size: 1.8em !default;\n\n// Font weight of post title.\n$post-title-font-weight: 400 !default;\n\n// Margin top of the post meta (post time).\n$post-meta-margin-top: 5px !default;\n\n// Font color of the post meta.\n$post-meta-font-color: $dark-gray !default;\n\n// Border bottom of the read more link when hover it.\n$post-readMore-border-bottom: 1px solid $theme-color !default;\n\n// Margin top of the post footer.\n$post-footer-margin-top: 20px !default;\n\n// Border top of post footer.\n$post-footer-border-top: 1px solid $light-gray !default;\n\n// Padding of the post tags.\n$post-tags-padding: 15px 0 !default;\n\n// Font size of post pagination.\n$post-nav-font-size: 18px !default;\n\n\n// ========== TOC ========== //\n// Width of the post toc.\n$post-toc-width: 200px !default;\n\n// Backgroud color of the post toc.\n$post-toc-backgroud: rgba($deputy-color, 0.6) !default;\n\n// Margin left of the post toc.\n//$post-toc-margin-left: $global-body-width - 15px !default;\n\n// Font size of the post toc title.\n$post-toc-title-size: 20px !default;\n\n// Font size of the post toc content.\n$post-toc-content: 15px !default;\n\n// List style of the post toc list.\n$post-toc-list-style: square !default;\n\n// Max screen media of the post toc.\n// $toc-max-sreen-width: 2 * $post-toc-width + $post-toc-margin-left !default;\n\n// ========== Content ========== //\n// Headings anchor.\n$content-headings-anchor: \"\" !default;\n\n// Border bottom of the link when hover it.\n$content-link-border: 1px solid $theme-color !default;\n\n// Background color of the blockquote.\n$content-blockquote-backgroud: rgba($theme-color, 0.05) !default;\n\n// Border left of the blockquote.\n$content-blockquote-border-left: 3px solid rgba($theme-color, 0.3) !default;\n\n// Border color of the table.\n$content-table-border-color: darken($deputy-color, 3%) !default;\n\n// ========== Code ========== //\n// Color of the code.\n$code-color: #c7254e !default;\n\n// Font size of code.\n$code-font-size: 0.9em !default;\n\n// Font family of the code.\n$code-font-family: Consolas, Monaco, Menlo, Consolas, monospace !default;\n\n// Color of code highlight, solarized.\n$code-highlight-color: (\n comment: #93a1a1,\n keyword: #859900,\n number: #2aa198,\n title: #268bd2,\n attribute: #b58900,\n symbol: #cb4b16,\n built_in: #dc322f,\n formula: #eee8d5\n) !default;\n\n\n// Color of the code background.\n$code-background: $deputy-color !default;\n\n\n// ========== Pagination ========== //\n// Margin of the pagination.\n$pagination-margin: 2em 0 !default;\n\n// Font size of the pagination (Without post, post pagination see line 140).\n$pagination-font-size: 20px !default;\n\n\n// ========== Footer ========== //\n// Margin top of the footer.\n$footer-margin-top: 2em !default;\n\n// Margin left of the social link.\n$social-link-margin-left: 0.5em !default;\n\n// Font size of the social icon.\n$social-icon-font-size: 1.7em !default;\n\n// Margin of the copyright.\n$copyright-margin: 10px 0 !default;\n\n\n// ========== Archive ========== //\n// Margin of the archive.\n$archive-margin: 2em 0px !default;\n\n// Max width of the archive.\n$archive-max-width: 550px !default;\n\n// Font size of the archive name.\n$archive-name-font-size: 30px !default;\n\n// Font size of the collection title.\n$collection-title-font-size: 28px !default;\n\n// Padding of the archive post.\n$archive-post-padding: 15px 20px 5px 20px !default;\n\n// Padding of the archive post in mobile.\n$archive-post-mobile-padding: 5px 10px !default;\n\n// Font size of the archive post time in mobile.\n$archive-post-mobile-time-font-size: 13px !default;\n\n// Border left of the archive post, use $archive-post-hover-border-left when hover it.\n$archive-post-border: 1px solid $gray !default;\n$archive-post-hover-border-left: 3px solid $theme-color !default;\n\n// Transition of the archive post when hover it.\n$archive-post-hover-transition: 0.2s ease-out !default;\n\n// Transform of the archive post when hover it.\n$archive-post-hover-transform: translateX(4px) !default;\n\n\n// ========== Tags ========== //\n// Font soze of the tag cloud title.\n$tag-cloud-title-size: 24px !default;\n\n// Border bottom of the tag cloud title.\n$tag-cloud-title-border-bottom: 2px solid $theme-color !default;\n\n// Margin of the tag cloud tags link.\n$tag-cloud-tags-link-margin: 5px 10px !default;\n\n\n// ========== Categories ========== //\n// Font soze of the categories title.\n$categories-title-size: 18px !default;\n\n// Border bottom of the categories title.\n$categories-title-border-bottom: 2px solid $theme-color !default;\n\n// Margin of the categories tags link.\n$categories-tags-link-margin: 5px 10px !default;\n\n// Font size of the category count\n$category-count-font-size: 12px !default;\n\n\n\n// WEBPACK FOOTER //\n// ./css/_variables.scss","/*! normalize.css v3.0.2 | MIT License | git.io/normalize */\n\n/**\n * 1. Set default font family to sans-serif.\n * 2. Prevent iOS text size adjust after orientation change, without disabling\n * user zoom.\n */\n\nhtml {\n font-family: sans-serif; /* 1 */\n -ms-text-size-adjust: 100%; /* 2 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/**\n * Remove default margin.\n */\n\nbody {\n margin: 0;\n}\n\n/* HTML5 display definitions\n ========================================================================== */\n\n/**\n * Correct `block` display not defined for any HTML5 element in IE 8/9.\n * Correct `block` display not defined for `details` or `summary` in IE 10/11\n * and Firefox.\n * Correct `block` display not defined for `main` in IE 11.\n */\n\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\n\n/**\n * 1. Correct `inline-block` display not defined in IE 8/9.\n * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\n */\n\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block; /* 1 */\n vertical-align: baseline; /* 2 */\n}\n\n/**\n * Prevent modern browsers from displaying `audio` without controls.\n * Remove excess height in iOS 5 devices.\n */\n\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n\n/**\n * Address `[hidden]` styling not present in IE 8/9/10.\n * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.\n */\n\n[hidden],\ntemplate {\n display: none;\n}\n\n/* Links\n ========================================================================== */\n\n/**\n * Remove the gray background color from active links in IE 10.\n */\n\na {\n background-color: transparent;\n}\n\n/**\n * Improve readability when focused and also mouse hovered in all browsers.\n */\n\na:active,\na:hover {\n outline: 0;\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Address styling not present in IE 8/9/10/11, Safari, and Chrome.\n */\n\nabbr[title] {\n border-bottom: 1px dotted;\n}\n\n/**\n * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.\n */\n\nb,\nstrong {\n font-weight: bold;\n}\n\n/**\n * Address styling not present in Safari and Chrome.\n */\n\ndfn {\n font-style: italic;\n}\n\n/**\n * Address variable `h1` font-size and margin within `section` and `article`\n * contexts in Firefox 4+, Safari, and Chrome.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/**\n * Address styling not present in IE 8/9.\n */\n\nmark {\n background: #ff0;\n color: #000;\n}\n\n/**\n * Address inconsistent and variable font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` affecting `line-height` in all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsup {\n top: -0.5em;\n}\n\nsub {\n bottom: -0.25em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove border when inside `a` element in IE 8/9/10.\n */\n\nimg {\n border: 0;\n}\n\n/**\n * Correct overflow not hidden in IE 9/10/11.\n */\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * Address margin not present in IE 8/9 and Safari.\n */\n\nfigure {\n margin: 1em;\n}\n\n/**\n * Address differences between Firefox and other browsers.\n */\n\nhr {\n -moz-box-sizing: content-box;\n box-sizing: content-box;\n height: 0;\n}\n\n/**\n * Contain overflow in all browsers.\n */\n\npre {\n overflow: auto;\n}\n\n/**\n * Address odd `em`-unit font size rendering in all browsers.\n */\n\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * Known limitation: by default, Chrome and Safari on OS X allow very limited\n * styling of `select`, unless a `border` property is set.\n */\n\n/**\n * 1. Correct color not being inherited.\n * Known issue: affects color of disabled elements.\n * 2. Correct font properties not being inherited.\n * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit; /* 1 */\n font: inherit; /* 2 */\n margin: 0; /* 3 */\n}\n\n/**\n * Address `overflow` set to `hidden` in IE 8/9/10/11.\n */\n\nbutton {\n overflow: visible;\n}\n\n/**\n * Address inconsistent `text-transform` inheritance for `button` and `select`.\n * All other form control elements do not inherit `text-transform` values.\n * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.\n * Correct `select` style inheritance in Firefox.\n */\n\nbutton,\nselect {\n text-transform: none;\n}\n\n/**\n * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n * and `video` controls.\n * 2. Correct inability to style clickable `input` types in iOS.\n * 3. Improve usability and consistency of cursor style between image-type\n * `input` and others.\n */\n\nbutton,\nhtml input[type=\"button\"], /* 1 */\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button; /* 2 */\n cursor: pointer; /* 3 */\n}\n\n/**\n * Re-set default cursor for disabled elements.\n */\n\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\n\n/**\n * Remove inner padding and border in Firefox 4+.\n */\n\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\n\n/**\n * Address Firefox 4+ setting `line-height` on `input` using `!important` in\n * the UA stylesheet.\n */\n\ninput {\n line-height: normal;\n}\n\n/**\n * It's recommended that you don't attempt to style these elements.\n * Firefox's implementation doesn't respect box-sizing, padding, or width.\n *\n * 1. Address box sizing set to `content-box` in IE 8/9/10.\n * 2. Remove excess padding in IE 8/9/10.\n */\n\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Fix the cursor style for Chrome's increment/decrement buttons. For certain\n * `font-size` values of the `input`, it causes the cursor style of the\n * decrement button to change from `default` to `text`.\n */\n\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Address `appearance` set to `searchfield` in Safari and Chrome.\n * 2. Address `box-sizing` set to `border-box` in Safari and Chrome\n * (include `-moz` to future-proof).\n */\n\ninput[type=\"search\"] {\n -webkit-appearance: textfield; /* 1 */\n -moz-box-sizing: content-box;\n -webkit-box-sizing: content-box; /* 2 */\n box-sizing: content-box;\n}\n\n/**\n * Remove inner padding and search cancel button in Safari and Chrome on OS X.\n * Safari (but not Chrome) clips the cancel button when the search input has\n * padding (and `textfield` appearance).\n */\n\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n * Define consistent border, margin, and padding.\n */\n\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\n\n/**\n * 1. Correct `color` not being inherited in IE 8/9/10/11.\n * 2. Remove padding so people aren't caught out if they zero out fieldsets.\n */\n\nlegend {\n border: 0; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Remove default vertical scrollbar in IE 8/9/10/11.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * Don't inherit the `font-weight` (applied by a rule above).\n * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n */\n\noptgroup {\n font-weight: bold;\n}\n\n/* Tables\n ========================================================================== */\n\n/**\n * Remove most spacing between table cells.\n */\n\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\n\ntd,\nth {\n padding: 0;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./css/_common/_normalize.scss","@charset \"UTF-8\";\n@font-face {\n font-family: 'Chancery';\n src: url(\"../fonts/chancery/apple-chancery-webfont.eot\");\n src: local(\"Apple Chancery\"), url(\"../fonts/chancery/apple-chancery-webfont.eot?#iefix\") format(\"embedded-opentype\"), url(\"../fonts/chancery/apple-chancery-webfont.woff2\") format(\"woff2\"), url(\"../fonts/chancery/apple-chancery-webfont.woff\") format(\"woff\"), url(\"../fonts/chancery/apple-chancery-webfont.ttf\") format(\"truetype\"), url(\"../fonts/chancery/apple-chancery-webfont.svg#apple-chancery\") format(\"svg\");\n font-weight: lighter;\n font-style: normal; }\n\n/*! normalize.css v3.0.2 | MIT License | git.io/normalize */\n/**\n * 1. Set default font family to sans-serif.\n * 2. Prevent iOS text size adjust after orientation change, without disabling\n * user zoom.\n */\nhtml {\n font-family: sans-serif;\n /* 1 */\n -ms-text-size-adjust: 100%;\n /* 2 */\n -webkit-text-size-adjust: 100%;\n /* 2 */ }\n\n/**\n * Remove default margin.\n */\nbody {\n margin: 0; }\n\n/* HTML5 display definitions\n ========================================================================== */\n/**\n * Correct `block` display not defined for any HTML5 element in IE 8/9.\n * Correct `block` display not defined for `details` or `summary` in IE 10/11\n * and Firefox.\n * Correct `block` display not defined for `main` in IE 11.\n */\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block; }\n\n/**\n * 1. Correct `inline-block` display not defined in IE 8/9.\n * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\n */\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block;\n /* 1 */\n vertical-align: baseline;\n /* 2 */ }\n\n/**\n * Prevent modern browsers from displaying `audio` without controls.\n * Remove excess height in iOS 5 devices.\n */\naudio:not([controls]) {\n display: none;\n height: 0; }\n\n/**\n * Address `[hidden]` styling not present in IE 8/9/10.\n * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.\n */\n[hidden],\ntemplate {\n display: none; }\n\n/* Links\n ========================================================================== */\n/**\n * Remove the gray background color from active links in IE 10.\n */\na {\n background-color: transparent; }\n\n/**\n * Improve readability when focused and also mouse hovered in all browsers.\n */\na:active,\na:hover {\n outline: 0; }\n\n/* Text-level semantics\n ========================================================================== */\n/**\n * Address styling not present in IE 8/9/10/11, Safari, and Chrome.\n */\nabbr[title] {\n border-bottom: 1px dotted; }\n\n/**\n * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.\n */\nb,\nstrong {\n font-weight: bold; }\n\n/**\n * Address styling not present in Safari and Chrome.\n */\ndfn {\n font-style: italic; }\n\n/**\n * Address variable `h1` font-size and margin within `section` and `article`\n * contexts in Firefox 4+, Safari, and Chrome.\n */\nh1 {\n font-size: 2em;\n margin: 0.67em 0; }\n\n/**\n * Address styling not present in IE 8/9.\n */\nmark {\n background: #ff0;\n color: #000; }\n\n/**\n * Address inconsistent and variable font size in all browsers.\n */\nsmall {\n font-size: 80%; }\n\n/**\n * Prevent `sub` and `sup` affecting `line-height` in all browsers.\n */\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline; }\n\nsup {\n top: -0.5em; }\n\nsub {\n bottom: -0.25em; }\n\n/* Embedded content\n ========================================================================== */\n/**\n * Remove border when inside `a` element in IE 8/9/10.\n */\nimg {\n border: 0; }\n\n/**\n * Correct overflow not hidden in IE 9/10/11.\n */\nsvg:not(:root) {\n overflow: hidden; }\n\n/* Grouping content\n ========================================================================== */\n/**\n * Address margin not present in IE 8/9 and Safari.\n */\nfigure {\n margin: 1em; }\n\n/**\n * Address differences between Firefox and other browsers.\n */\nhr {\n -moz-box-sizing: content-box;\n box-sizing: content-box;\n height: 0; }\n\n/**\n * Contain overflow in all browsers.\n */\npre {\n overflow: auto; }\n\n/**\n * Address odd `em`-unit font size rendering in all browsers.\n */\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em; }\n\n/* Forms\n ========================================================================== */\n/**\n * Known limitation: by default, Chrome and Safari on OS X allow very limited\n * styling of `select`, unless a `border` property is set.\n */\n/**\n * 1. Correct color not being inherited.\n * Known issue: affects color of disabled elements.\n * 2. Correct font properties not being inherited.\n * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\n */\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit;\n /* 1 */\n font: inherit;\n /* 2 */\n margin: 0;\n /* 3 */ }\n\n/**\n * Address `overflow` set to `hidden` in IE 8/9/10/11.\n */\nbutton {\n overflow: visible; }\n\n/**\n * Address inconsistent `text-transform` inheritance for `button` and `select`.\n * All other form control elements do not inherit `text-transform` values.\n * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.\n * Correct `select` style inheritance in Firefox.\n */\nbutton,\nselect {\n text-transform: none; }\n\n/**\n * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n * and `video` controls.\n * 2. Correct inability to style clickable `input` types in iOS.\n * 3. Improve usability and consistency of cursor style between image-type\n * `input` and others.\n */\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button;\n /* 2 */\n cursor: pointer;\n /* 3 */ }\n\n/**\n * Re-set default cursor for disabled elements.\n */\nbutton[disabled],\nhtml input[disabled] {\n cursor: default; }\n\n/**\n * Remove inner padding and border in Firefox 4+.\n */\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0; }\n\n/**\n * Address Firefox 4+ setting `line-height` on `input` using `!important` in\n * the UA stylesheet.\n */\ninput {\n line-height: normal; }\n\n/**\n * It's recommended that you don't attempt to style these elements.\n * Firefox's implementation doesn't respect box-sizing, padding, or width.\n *\n * 1. Address box sizing set to `content-box` in IE 8/9/10.\n * 2. Remove excess padding in IE 8/9/10.\n */\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box;\n /* 1 */\n padding: 0;\n /* 2 */ }\n\n/**\n * Fix the cursor style for Chrome's increment/decrement buttons. For certain\n * `font-size` values of the `input`, it causes the cursor style of the\n * decrement button to change from `default` to `text`.\n */\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto; }\n\n/**\n * 1. Address `appearance` set to `searchfield` in Safari and Chrome.\n * 2. Address `box-sizing` set to `border-box` in Safari and Chrome\n * (include `-moz` to future-proof).\n */\ninput[type=\"search\"] {\n -webkit-appearance: textfield;\n /* 1 */\n -moz-box-sizing: content-box;\n -webkit-box-sizing: content-box;\n /* 2 */\n box-sizing: content-box; }\n\n/**\n * Remove inner padding and search cancel button in Safari and Chrome on OS X.\n * Safari (but not Chrome) clips the cancel button when the search input has\n * padding (and `textfield` appearance).\n */\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none; }\n\n/**\n * Define consistent border, margin, and padding.\n */\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em; }\n\n/**\n * 1. Correct `color` not being inherited in IE 8/9/10/11.\n * 2. Remove padding so people aren't caught out if they zero out fieldsets.\n */\nlegend {\n border: 0;\n /* 1 */\n padding: 0;\n /* 2 */ }\n\n/**\n * Remove default vertical scrollbar in IE 8/9/10/11.\n */\ntextarea {\n overflow: auto; }\n\n/**\n * Don't inherit the `font-weight` (applied by a rule above).\n * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n */\noptgroup {\n font-weight: bold; }\n\n/* Tables\n ========================================================================== */\n/**\n * Remove most spacing between table cells.\n */\ntable {\n border-collapse: collapse;\n border-spacing: 0; }\n\ntd,\nth {\n padding: 0; }\n\nhtml {\n font-size: 18px;\n box-sizing: border-box; }\n\nbody {\n padding: 0;\n margin: 0;\n font-family: \"Source Sans Pro\", \"Helvetica Neue\", Arial, sans-serif;\n font-weight: normal;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n line-height: 1.8;\n color: rgba(0, 0, 0, 0.84);\n background: #fefefe;\n scroll-behavior: smooth; }\n\n@media screen and (max-width: 1080px) {\n body {\n border-top: 0; } }\n\n::selection {\n background: #c05b4d;\n color: #fff; }\n\nimg {\n max-width: 100%;\n height: auto;\n display: inline-block;\n vertical-align: middle; }\n\na {\n color: rgba(0, 0, 0, 0.84);\n text-decoration: none; }\n\nh1 {\n font-size: 1.6em;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n\nh2 {\n font-size: 1.5em;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n\nh3 {\n font-size: 1.3em;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n\nh4 {\n font-size: 1.2em;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n\nh5 {\n font-size: 1.1em;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n\nh6 {\n font-size: 1em;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n\n.container {\n margin: 0 auto;\n width: 1080px; }\n\n@media screen and (max-width: 1080px) {\n .container {\n width: 100%; } }\n\n.content-wrapper {\n padding: 3em 0 1px 0; }\n\n.video-container {\n position: relative;\n padding-bottom: 56.25%;\n /* 16:9 */\n padding-top: 25px;\n height: 0; }\n\n.video-container iframe {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%; }\n\n.bg-llight {\n background-color: #f2f2f5; }\n\n.bg-white {\n background-color: #FFF; }\n\n.iconfont {\n font-family: \"iconfont\" !important;\n font-style: normal;\n -webkit-font-smoothing: antialiased;\n -webkit-text-stroke-width: 0.2px;\n -moz-osx-font-smoothing: grayscale;\n cursor: pointer; }\n\n/* Generic Icon */\n.icon-heart::before {\n font-icon: url(\"../fonts/svg/heart.svg\"); }\n\n.icon-right::before {\n font-icon: url(\"../fonts/svg/right.svg\"); }\n\n.icon-left::before {\n font-icon: url(\"../fonts/svg/left.svg\"); }\n\n.icon-up::before {\n font-icon: url(\"../fonts/svg/up.svg\");\n font-size: 2em; }\n\n.icon-new-window::before {\n font-icon: url(\"../fonts/svg/new-window.svg\"); }\n\n.icon-rss::before {\n font-icon: url(\"../fonts/svg/rss.svg\"); }\n\n/* Social Icon */\n.icon-email::before {\n font-icon: url(\"../fonts/svg/email.svg\");\n font-size: 0.8em; }\n\n.icon-stack-overflow::before {\n font-icon: url(\"../fonts/svg/stack-overflow.svg\"); }\n\n.icon-twitter::before {\n font-icon: url(\"../fonts/svg/twitter.svg\");\n font-size: 0.9em; }\n\n.icon-facebook::before {\n font-icon: url(\"../fonts/svg/facebook.svg\"); }\n\n.icon-linkedin::before {\n font-icon: url(\"../fonts/svg/linkedin.svg\"); }\n\n.icon-google::before {\n font-icon: url(\"../fonts/svg/google.svg\");\n font-size: 1.15em; }\n\n.icon-github::before {\n font-icon: url(\"../fonts/svg/github.svg\"); }\n\n.icon-weibo::before {\n font-icon: url(\"../fonts/svg/weibo.svg\");\n font-size: 1.1em; }\n\n.icon-zhihu::before {\n font-icon: url(\"../fonts/svg/zhihu.svg\"); }\n\n.icon-douban::before {\n font-icon: url(\"../fonts/svg/douban.svg\"); }\n\n.icon-pocket::before {\n font-icon: url(\"../fonts/svg/pocket.svg\"); }\n\n.icon-tumblr::before {\n font-icon: url(\"../fonts/svg/tumblr.svg\");\n font-size: 1.1em; }\n\n.icon-instagram::before {\n font-icon: url(\"../fonts/svg/instagram.svg\");\n font-size: 1.1em; }\n\n.icon-gitlab::before {\n font-icon: url(\"../fonts/svg/gitlab.svg\"); }\n\n.icon-goodreads::before {\n font-icon: url(\"../fonts/svg/goodreads.svg\"); }\n\n.icon-coding::before {\n font-icon: url(\"../fonts/svg/coding.svg\");\n font-size: 1.3em; }\n\n.header:before, .header:after {\n content: \" \";\n display: table; }\n\n.header:after {\n clear: both; }\n\n.header .logo-wrapper {\n float: left;\n padding-left: 15px; }\n .header .logo-wrapper .logo {\n font-size: 36px;\n font-family: \"Chancery\", cursive, LiSu, sans-serif; }\n\n@media screen and (max-width: 1080px) {\n .header .logo-wrapper {\n display: none; } }\n\n.header .site-navbar .menu {\n float: right;\n padding-right: 15px;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n .header .site-navbar .menu .menu-item {\n display: inline-block;\n margin-left: 1em;\n margin-right: 1em;\n position: relative; }\n .header .site-navbar .menu .menu-item + .menu-item {\n margin-left: 10px; }\n .header .site-navbar .menu .menu-item .submenu {\n visibility: hidden;\n position: absolute;\n top: 120%;\n transition: 0.2s 1s;\n list-style: none;\n padding: 0;\n background: #fff;\n white-space: nowrap;\n border: 1px solid #ddd;\n border-bottom: none;\n transition: 0.2s 0.2s;\n /* delay of seconds on hover off */\n z-index: 99; }\n .header .site-navbar .menu .menu-item .submenu li {\n border-bottom: 1px solid #ddd; }\n .header .site-navbar .menu .menu-item .submenu li a {\n padding: 12px; }\n .header .site-navbar .menu .menu-item:hover .submenu {\n visibility: visible;\n transition-delay: 0s;\n /* react immediately on hover */ }\n .header .site-navbar .menu .menu-item-link {\n font-size: 18px; }\n\n.header .menu-parent::after {\n content: \" ▼\";\n font-size: 11px; }\n\n.header .menu a:hover {\n color: #c05b4d; }\n\n@media screen and (max-width: 1080px) {\n .header .site-navbar {\n display: none; } }\n\n@media screen and (max-width: 1080px) {\n .header {\n padding: 50px 0 0;\n text-align: center; } }\n\n.post {\n padding: 3em 5em;\n margin: 0 5em 3em; }\n .post .post-header {\n margin-bottom: 20px;\n text-align: center;\n padding-bottom: 10px;\n border-bottom: 2px LightGrey solid; }\n .post .post-header .post-title {\n margin: 0;\n font-size: 1.8em;\n font-weight: 400;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n .post .post-header .post-link {\n display: inline-block;\n vertical-align: middle;\n transform: translateZ(0);\n backface-visibility: hidden;\n box-shadow: 0 0 1px transparent;\n position: relative;\n overflow: hidden; }\n .post .post-header .post-link:before {\n content: '';\n position: absolute;\n z-index: -1;\n height: 2px;\n bottom: 0;\n left: 51%;\n right: 51%;\n background: #c05b4d;\n transition-duration: 0.2s;\n transition-property: right, left;\n transition-timing-function: ease-out; }\n .post .post-header .post-link.active:before, .post .post-header .post-link:active:before, .post .post-header .post-link:focus:before, .post .post-header .post-link:hover:before {\n right: 0;\n left: 0; }\n .post .post-header .post-meta {\n font-size: 14px;\n color: #8a8a8a; }\n .post .post-header .post-meta .post-time {\n font-size: 15px; }\n .post .post-header .post-meta .post-category {\n display: inline; }\n .post .post-header .post-meta .post-category a {\n color: inherit; }\n .post .post-header .post-meta .post-category a::before {\n content: '·'; }\n .post .post-header .post-meta .post-category a:hover {\n color: #c05b4d; }\n .post .post-header .post-meta .more-meta::before {\n content: '·'; }\n .post .post-toc .post-toc-title {\n font-size: 1em;\n max-width: 9em;\n border: 0;\n font-weight: normal;\n padding: 0.05em 0.5em;\n line-height: 1em; }\n .post .post-toc .post-toc-content {\n display: block;\n padding: 0.5em;\n margin-top: -1.5em;\n line-height: 1.3em;\n /* Hugo Table of Contents have extra dot in front */ }\n .post .post-toc .post-toc-content ul {\n padding-left: 20px;\n list-style-type: none; }\n .post .post-toc .post-toc-content ul ul {\n list-style: disc; }\n .post .post-toc .post-toc-content ul ul ul {\n list-style: circle; }\n .post .post-toc .post-toc-content ul ul li > a {\n color: #139; }\n .post .post-toc .post-toc-content ul ul li > a:hover {\n color: #900; }\n @media screen and (min-width: 1080px) {\n .post .post-toc {\n display: none;\n border: 1px solid #CCC;\n background: white;\n box-shadow: 0 0 1em #777777;\n position: fixed;\n top: 0;\n right: 0;\n max-height: 80%;\n overflow: auto;\n z-index: 99; }\n .post .post-toc .post-toc-content {\n display: none; }\n .post .post-toc:hover .post-toc-content {\n display: block; } }\n @media screen and (max-width: 1080px) {\n .post .post-toc {\n padding: 10px;\n border-bottom: 2px LightGrey solid;\n word-wrap: break-word; } }\n .post .post-content {\n word-wrap: break-word;\n /* Background */\n /* LineTableTD */\n /* LineTable */\n /* LineHighlight */\n /* LineNumbersTable */\n /* LineNumbers */\n /* Keyword */\n /* KeywordConstant */\n /* KeywordDeclaration */\n /* KeywordNamespace */\n /* KeywordPseudo */\n /* KeywordReserved */\n /* KeywordType */\n /* Name */\n /* NameAttribute */\n /* NameBuiltin */\n /* NameBuiltinPseudo */\n /* NameClass */\n /* NameConstant */\n /* NameDecorator */\n /* NameEntity */\n /* NameException */\n /* NameFunction */\n /* NameFunctionMagic */\n /* NameLabel */\n /* NameNamespace */\n /* NameOther */\n /* NameProperty */\n /* NameTag */\n /* NameVariable */\n /* NameVariableClass */\n /* NameVariableGlobal */\n /* NameVariableInstance */\n /* NameVariableMagic */\n /* Literal */\n /* LiteralDate */\n /* LiteralString */\n /* LiteralStringAffix */\n /* LiteralStringBacktick */\n /* LiteralStringChar */\n /* LiteralStringDelimiter */\n /* LiteralStringDoc */\n /* LiteralStringDouble */\n /* LiteralStringEscape */\n /* LiteralStringHeredoc */\n /* LiteralStringInterpol */\n /* LiteralStringOther */\n /* LiteralStringRegex */\n /* LiteralStringSingle */\n /* LiteralStringSymbol */\n /* LiteralNumber */\n /* LiteralNumberBin */\n /* LiteralNumberFloat */\n /* LiteralNumberHex */\n /* LiteralNumberInteger */\n /* LiteralNumberIntegerLong */\n /* LiteralNumberOct */\n /* OperatorWord */\n /* Comment */\n /* CommentHashbang */\n /* CommentMultiline */\n /* CommentSingle */\n /* CommentSpecial */\n /* CommentPreproc */\n /* CommentPreprocFile */\n /* Generic */\n /* GenericDeleted */\n /* GenericEmph */\n /* GenericError */\n /* GenericHeading */\n /* GenericInserted */\n /* GenericOutput */\n /* GenericPrompt */\n /* GenericStrong */\n /* GenericSubheading */\n /* GenericTraceback */ }\n .post .post-content h1 {\n font-weight: 600;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n .post .post-content h2 {\n font-weight: 600;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n .post .post-content h3 {\n font-weight: 600;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n .post .post-content h4 {\n font-weight: 600;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n .post .post-content h5 {\n font-weight: 600;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n .post .post-content h6 {\n font-weight: 600;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n .post .post-content h1 {\n border-bottom: 1px solid #ddd;\n margin-top: 2em; }\n .post .post-content h2 {\n border-bottom: 1px solid #ddd;\n margin-top: 2em; }\n .post .post-content h3 {\n margin-top: 1.5em; }\n .post .post-content a {\n color: #c05b4d;\n word-break: break-all; }\n .post .post-content a:hover {\n border-bottom: 1px solid #c05b4d; }\n .post .post-content blockquote {\n margin: 1em auto;\n padding: 0.2em 2em 0.2em 3em;\n color: #555555;\n background-color: #F6F6F6;\n border-left: 4px solid #999;\n position: relative;\n line-height: 1.6;\n font-family: Open Sans; }\n .post .post-content blockquote::before {\n font-family: Arial;\n content: \"\\201C\";\n color: #999;\n font-size: 4em;\n position: absolute;\n left: 10px;\n top: -10px; }\n .post .post-content blockquote footer {\n color: #333333;\n margin-bottom: 1em; }\n .post .post-content blockquote cite:before {\n content: '\\2014';\n padding-right: .3em;\n padding-left: .3em; }\n .post .post-content iframe {\n margin: 0 auto;\n display: block;\n width: 100%; }\n .post .post-content > table {\n border: none;\n width: 100%; }\n .post .post-content > table td {\n background-color: #F0E4E4;\n border: 3px solid #FFF;\n padding: 5px 15px; }\n .post .post-content > table th {\n text-align: left;\n background-color: #A65B5B;\n color: #FFF;\n border: 3px solid #FFF;\n padding: 5px 15px; }\n .post .post-content p > code, .post .post-content pre {\n padding: 0 7px;\n background: #f8f5ec;\n border-radius: 4px;\n color: #c7254e; }\n .post .post-content code, .post .post-content pre {\n font-size: 0.9em;\n font-family: Consolas, Monaco, Menlo, Consolas, monospace;\n padding: 0; }\n .post .post-content .chroma {\n margin: 0; }\n .post .post-content .highlight > .chroma {\n margin: 1em 0;\n overflow-x: auto;\n position: relative;\n border: 2px solid #dddddd; }\n .post .post-content .highlight > .chroma table {\n position: relative;\n padding: 0.8em 0; }\n .post .post-content .highlight > .chroma table::after {\n position: absolute;\n top: 0;\n right: 0;\n padding: 0 7px;\n font-size: 0.8em;\n font-weight: bold;\n color: #b1b1b1;\n content: 'Code'; }\n .post .post-content .highlight > .chroma > table::after {\n content: attr(data-lang);\n text-transform: capitalize; }\n .post .post-content .highlight > .chroma tr, .post .post-content .highlight > .chroma td {\n margin: 0;\n padding: 0;\n width: 100%;\n border-collapse: collapse; }\n .post .post-content .highlight > .chroma tr > td:first-child {\n width: 1%;\n white-space: nowrap; }\n .post .post-content .highlight > .chroma .lnt {\n color: #cacaca;\n display: block;\n line-height: 2em; }\n .post .post-content .chroma {\n color: #586e75;\n background-color: #f8f5ec; }\n .post .post-content .chroma .lntd {\n vertical-align: top;\n padding: 0;\n margin: 0;\n border: 0; }\n .post .post-content .chroma .lntable {\n border-spacing: 0;\n padding: 0;\n margin: 0;\n border: 0;\n width: auto;\n overflow: auto;\n display: block; }\n .post .post-content .chroma .hl {\n display: block;\n width: 100%; }\n .post .post-content .chroma .lnt {\n margin-right: 0.4em;\n padding: 0 0.4em 0 0.4em; }\n .post .post-content .chroma .ln {\n margin-right: 0.4em;\n padding: 0 0.4em 0 0.4em; }\n .post .post-content .chroma .k {\n color: #859900; }\n .post .post-content .chroma .kc {\n color: #859900;\n font-weight: bold; }\n .post .post-content .chroma .kd {\n color: #859900; }\n .post .post-content .chroma .kn {\n color: #dc322f;\n font-weight: bold; }\n .post .post-content .chroma .kp {\n color: #859900; }\n .post .post-content .chroma .kr {\n color: #859900; }\n .post .post-content .chroma .kt {\n color: #859900;\n font-weight: bold; }\n .post .post-content .chroma .n {\n color: #268bd2; }\n .post .post-content .chroma .na {\n color: #268bd2; }\n .post .post-content .chroma .nb {\n color: #cb4b16; }\n .post .post-content .chroma .bp {\n color: #268bd2; }\n .post .post-content .chroma .nc {\n color: #cb4b16; }\n .post .post-content .chroma .no {\n color: #268bd2; }\n .post .post-content .chroma .nd {\n color: #268bd2; }\n .post .post-content .chroma .ni {\n color: #268bd2; }\n .post .post-content .chroma .ne {\n color: #268bd2; }\n .post .post-content .chroma .nf {\n color: #268bd2; }\n .post .post-content .chroma .fm {\n color: #268bd2; }\n .post .post-content .chroma .nl {\n color: #268bd2; }\n .post .post-content .chroma .nn {\n color: #268bd2; }\n .post .post-content .chroma .nx {\n color: #268bd2; }\n .post .post-content .chroma .py {\n color: #268bd2; }\n .post .post-content .chroma .nt {\n color: #268bd2;\n font-weight: bold; }\n .post .post-content .chroma .nv {\n color: #268bd2; }\n .post .post-content .chroma .vc {\n color: #268bd2; }\n .post .post-content .chroma .vg {\n color: #268bd2; }\n .post .post-content .chroma .vi {\n color: #268bd2; }\n .post .post-content .chroma .vm {\n color: #268bd2; }\n .post .post-content .chroma .l {\n color: #2aa198; }\n .post .post-content .chroma .ld {\n color: #2aa198; }\n .post .post-content .chroma .s {\n color: #2aa198; }\n .post .post-content .chroma .sa {\n color: #2aa198; }\n .post .post-content .chroma .sb {\n color: #2aa198; }\n .post .post-content .chroma .sc {\n color: #2aa198; }\n .post .post-content .chroma .dl {\n color: #2aa198; }\n .post .post-content .chroma .sd {\n color: #2aa198; }\n .post .post-content .chroma .s2 {\n color: #2aa198; }\n .post .post-content .chroma .se {\n color: #2aa198; }\n .post .post-content .chroma .sh {\n color: #2aa198; }\n .post .post-content .chroma .si {\n color: #2aa198; }\n .post .post-content .chroma .sx {\n color: #2aa198; }\n .post .post-content .chroma .sr {\n color: #2aa198; }\n .post .post-content .chroma .s1 {\n color: #2aa198; }\n .post .post-content .chroma .ss {\n color: #2aa198; }\n .post .post-content .chroma .m {\n color: #2aa198;\n font-weight: bold; }\n .post .post-content .chroma .mb {\n color: #2aa198;\n font-weight: bold; }\n .post .post-content .chroma .mf {\n color: #2aa198;\n font-weight: bold; }\n .post .post-content .chroma .mh {\n color: #2aa198;\n font-weight: bold; }\n .post .post-content .chroma .mi {\n color: #2aa198;\n font-weight: bold; }\n .post .post-content .chroma .il {\n color: #2aa198;\n font-weight: bold; }\n .post .post-content .chroma .mo {\n color: #2aa198;\n font-weight: bold; }\n .post .post-content .chroma .ow {\n color: #859900; }\n .post .post-content .chroma .c {\n color: #93a1a1;\n font-style: italic; }\n .post .post-content .chroma .ch {\n color: #93a1a1;\n font-style: italic; }\n .post .post-content .chroma .cm {\n color: #93a1a1;\n font-style: italic; }\n .post .post-content .chroma .c1 {\n color: #93a1a1;\n font-style: italic; }\n .post .post-content .chroma .cs {\n color: #93a1a1;\n font-style: italic; }\n .post .post-content .chroma .cp {\n color: #93a1a1;\n font-style: italic; }\n .post .post-content .chroma .cpf {\n color: #93a1a1;\n font-style: italic; }\n .post .post-content .chroma .g {\n color: #d33682; }\n .post .post-content .chroma .gd {\n color: #d33682; }\n .post .post-content .chroma .ge {\n color: #d33682; }\n .post .post-content .chroma .gr {\n color: #d33682; }\n .post .post-content .chroma .gh {\n color: #d33682; }\n .post .post-content .chroma .gi {\n color: #d33682; }\n .post .post-content .chroma .go {\n color: #d33682; }\n .post .post-content .chroma .gp {\n color: #d33682; }\n .post .post-content .chroma .gs {\n color: #d33682; }\n .post .post-content .chroma .gu {\n color: #d33682; }\n .post .post-content .chroma .gt {\n color: #d33682; }\n .post .post-content .post-summary {\n margin-bottom: 1em; }\n .post .post-content .read-more {\n text-align: right; }\n .post .post-content .read-more .read-more-link {\n color: #c05b4d;\n font-size: 1.1em;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n .post .post-content .read-more .read-more-link:hover {\n border-bottom: 1px solid #c05b4d; }\n .post .post-content kbd {\n display: inline-block;\n padding: 0.25em;\n background-color: #fafafa;\n border: 1px solid #dbdbdb;\n border-bottom-color: #b5b5b5;\n border-radius: 3px;\n box-shadow: inset 0 -1px 0 #b5b5b5;\n font-size: 0.8em;\n line-height: 1.25;\n font-family: \"SFMono-Regular\",\"Liberation Mono\",\"Roboto Mono\",Menlo,Monaco,Consolas,\"Courier New\",Courier,monospace;\n color: #4a4a4a; }\n .post .post-content dl dt::after {\n content: ':'; }\n .post .post-content figure a:hover {\n border: 0; }\n .post .post-content figure.center {\n text-align: center; }\n .post .post-content figure figcaption {\n margin-top: 0.5em;\n text-align: center;\n line-height: 1.5em; }\n .post .post-content figure figcaption h4 {\n color: #b5b5b5;\n margin: 0; }\n .post .post-content figure figcaption p {\n font-size: 0.9em;\n color: #b5b5b5;\n font-style: italic;\n margin: 0; }\n .post .post-content .task-list {\n list-style: none;\n padding-left: 1.5rem; }\n .post .header-link {\n margin-left: 0.5em;\n fill: currentColor;\n visibility: hidden; }\n .post .post-content-header:hover .header-link {\n visibility: visible; }\n .post .post-copyright {\n padding: 10px;\n background-color: rgba(181, 181, 181, 0.1);\n border: 1px solid #e1e1e1;\n border-left: solid;\n margin-top: 3em; }\n .post .post-copyright .copyright-item {\n margin: 5px 0; }\n .post .post-copyright .copyright-item a {\n color: #c05b4d;\n word-wrap: break-word; }\n .post .post-copyright .copyright-item a:hover {\n border-bottom: 1px solid #c05b4d; }\n .post .post-copyright .copyright-item .item-title {\n display: inline-block;\n min-width: 5rem;\n margin-right: .5rem;\n text-align: right;\n font-weight: bold; }\n .post .post-copyright .copyright-item .item-title:after {\n content: \" :\"; }\n .post .post-reward {\n margin-top: 20px;\n padding-top: 10px;\n text-align: center;\n border-top: 1px dashed #e6e6e6; }\n .post .post-reward .reward-button {\n margin: 15px 0;\n padding: 3px 7px;\n display: inline-block;\n color: #c05b4d;\n border: 1px solid #c05b4d;\n border-radius: 5px;\n cursor: pointer; }\n .post .post-reward .reward-button:hover {\n color: #fefefe;\n background-color: #c05b4d;\n transition: 0.5s; }\n .post .post-reward #reward:checked ~ .qr-code {\n display: block; }\n .post .post-reward #reward:checked ~ .reward-button {\n display: none; }\n .post .post-reward .qr-code {\n display: none; }\n .post .post-reward .qr-code .qr-code-image {\n display: inline-block;\n min-width: 200px;\n width: 40%;\n margin-top: 15px; }\n .post .post-reward .qr-code .qr-code-image span {\n display: inline-block;\n width: 100%;\n margin: 8px 0; }\n .post .post-reward .qr-code .image {\n width: 200px;\n height: 200px; }\n .post .post-footer {\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n .post .post-footer .post-tags {\n margin-top: 1em; }\n .post .post-footer .post-tags a {\n color: #c05b4d;\n word-break: break-all;\n margin-right: 10px; }\n .post .post-footer .post-tags a:hover {\n border-bottom: 1px solid #c05b4d; }\n .post .post-footer .post-tags a::before {\n content: '#'; }\n .post .post-footer .post-nav {\n margin-top: 1em; }\n .post .post-footer .post-nav:before, .post .post-footer .post-nav:after {\n content: \" \";\n display: table; }\n .post .post-footer .post-nav:after {\n clear: both; }\n .post .post-footer .post-nav .prev,\n .post .post-footer .post-nav .next {\n font-weight: 600;\n font-size: 18px;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif;\n transition-property: transform;\n transition-timing-function: ease-out;\n transition-duration: 0.3s; }\n .post .post-footer .post-nav .prev {\n float: left; }\n .post .post-footer .post-nav .prev:hover {\n color: #c05b4d;\n transform: translateX(-4px); }\n .post .post-footer .post-nav .next {\n float: right; }\n .post .post-footer .post-nav .next:hover {\n color: #c05b4d;\n transform: translateX(4px); }\n .post .post-footer .post-nav .nav-mobile {\n display: none; }\n @media screen and (max-width: 1080px) {\n .post .post-footer .post-nav .nav-default {\n display: none; }\n .post .post-footer .post-nav .nav-mobile {\n display: inline; } }\n .post .disqus-button {\n display: block;\n padding: 15px 0;\n font-size: 16px;\n color: #555;\n border: 1px solid #ddd;\n text-align: center;\n cursor: pointer;\n margin-top: 2em; }\n .post .footnotes {\n margin-top: 50px;\n font-size: 0.9em; }\n .post .footnotes hr {\n border-style: solid;\n color: #dddddd; }\n .post .footnote-ref {\n display: inline;\n position: relative;\n margin-left: 3px; }\n .post .footnote-ref:hover .fn-content {\n opacity: 1;\n visibility: visible;\n transform: translate3d(0, 0, 0) rotate3d(0, 0, 0, 0); }\n .post .footnote-ref > a {\n font-weight: 700; }\n .post .footnote-ref > a::after {\n content: ']'; }\n .post .footnote-ref > a::before {\n content: '['; }\n .post .fn-content {\n position: absolute;\n display: inline-block;\n z-index: 14;\n left: 50%;\n bottom: 100%;\n line-height: 1.3;\n border-radius: 0.5em;\n border: 1px solid rgba(0, 0, 0, 0.1);\n background: #f6f6f6;\n opacity: 0;\n visibility: hidden;\n transform: translate3d(0, -10px, 0);\n transition: opacity 0.3s, transform 0.3s;\n /* Arrow */ }\n .post .fn-content .fn-text {\n display: inline-block;\n padding: 1em;\n font-size: 1.2em;\n z-index: 8; }\n .post .fn-content .fn-text a {\n font-weight: bold; }\n\n@media screen and (max-width: 504px) {\n .post {\n padding: 1em 1em;\n margin: 0 0 2em; }\n .content-wrapper {\n padding: 1em 0 1px; } }\n\n@media screen and (min-width: 900px) and (max-width: 1080px) {\n .post {\n margin: 0 2em 2em; }\n .content-wrapper {\n padding: 2em 0 1px; } }\n\n@media screen and (min-width: 504px) and (max-width: 899px) {\n .post {\n padding: 1em 1em;\n margin: 0 1em 2em; }\n .content-wrapper {\n padding: 1em 0 1px; } }\n\n.pagination {\n margin: 2em 0;\n text-align: center; }\n .pagination:before, .pagination:after {\n content: \" \";\n display: table; }\n .pagination:after {\n clear: both; }\n .pagination li {\n display: inline-block; }\n .pagination li a {\n background-color: #fff;\n margin-left: .1em;\n margin-right: .1em;\n border: 1px solid #222;\n color: #222;\n float: left;\n line-height: 1.42857143;\n padding: 6px 12px;\n position: relative;\n text-decoration: none;\n margin-bottom: 0.2em; }\n .pagination .active a {\n background-color: #222;\n border-color: #222;\n color: #fff;\n cursor: default;\n z-index: 2; }\n .pagination .prev,\n .pagination .next {\n font-weight: 600;\n font-size: 20px;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif;\n transition-property: transform;\n transition-timing-function: ease-out;\n transition-duration: 0.3s; }\n .pagination .prev {\n float: left; }\n .pagination .prev:hover {\n color: #c05b4d;\n transform: translateX(-4px); }\n .pagination .next {\n float: right; }\n .pagination .next:hover {\n color: #c05b4d;\n transform: translateX(4px); }\n\n@media screen and (max-width: 1080px) {\n .pagination {\n margin: 1em 0; } }\n\n.footer {\n margin-top: 2em; }\n .footer .social-links {\n display: flex;\n justify-content: center;\n align-items: center;\n flex-wrap: wrap; }\n .footer .social-links .iconfont {\n font-size: 1.7em; }\n .footer .social-links .iconfont + .iconfont {\n margin-left: 0.5em; }\n .footer .social-links .iconfont:hover {\n color: #c05b4d; }\n .footer .copyright {\n margin: 10px 0;\n color: #8a8a8a;\n text-align: center;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n .footer .copyright .hexo-link,\n .footer .copyright .theme-link {\n color: #c05b4d; }\n .footer .copyright .copyright-year {\n display: block; }\n .footer .copyright .copyright-year .heart {\n font-size: 14px; }\n\n.archive {\n margin: 0 5em 3em;\n background-color: white;\n padding: 1em 5em 5em 5em; }\n .archive .archive-title {\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n .archive .archive-title.tag, .archive .archive-title.category {\n margin: 20px 0; }\n .archive .archive-title .archive-name {\n margin: 0;\n display: inline-block;\n font-weight: 400;\n font-size: 30px;\n line-height: 32px; }\n .archive .archive-title .archive-post-counter {\n display: none;\n color: #8a8a8a; }\n .archive .collection-title {\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n .archive .collection-title .archive-year {\n margin: 2em 0 0;\n font-weight: 400;\n font-size: 28px;\n line-height: 30px; }\n .archive .archive-post {\n padding: 15px 20px 5px 20px;\n border-bottom: 1px solid #cacaca;\n font-size: 1.1em;\n display: table;\n width: 100%; }\n .archive .archive-post .archive-post-time {\n color: #8a8a8a;\n display: table-cell;\n width: 7em;\n vertical-align: middle; }\n .archive .archive-post .archive-post-title {\n display: table-cell;\n vertical-align: middle; }\n .archive .archive-post .archive-post-title .archive-post-link {\n color: #c05b4d; }\n .archive .archive-post::first-child {\n margin-top: 10px; }\n .archive .archive-post:hover {\n transition: 0.2s ease-out;\n transform: translateX(4px); }\n .archive .archive-post:hover .archive-post-time {\n color: #717171; }\n .archive .archive-post:hover .archive-post-title .archive-post-link {\n color: #a14639; }\n .archive .more-post {\n text-align: right; }\n .archive .more-post .more-post-link {\n margin-top: 1em;\n color: #c05b4d;\n font-size: 1.1em;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n .archive .more-post .more-post-link:hover {\n border-bottom: 1px solid #c05b4d; }\n\n@media screen and (max-width: 899px) {\n .archive {\n margin: 0 auto 1em auto;\n padding: 1em; }\n .archive .archive-title .archive-name {\n font-size: 26px; }\n .archive .collection-title .archive-year {\n margin: 10px 0;\n font-size: 24px; }\n .archive .archive-post {\n padding: 5px 10px; }\n .archive .archive-post .archive-post-time {\n font-size: 13px;\n display: block; }\n .archive .archive-post .archive-post-title {\n display: block; } }\n\n.tag-cloud {\n margin: 2em 0 3em;\n text-align: center;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n .tag-cloud .tag-cloud-title {\n display: inline-block;\n font-size: 24px;\n color: #c05b4d;\n border-bottom: 2px solid #c05b4d; }\n .tag-cloud .tag-cloud-tags {\n margin: 10px 0; }\n .tag-cloud .tag-cloud-tags a {\n display: inline-block;\n position: relative;\n margin: 5px 10px;\n word-wrap: break-word;\n transition-duration: 0.2s;\n transition-property: transform;\n transition-timing-function: ease-out; }\n .tag-cloud .tag-cloud-tags a .tag-count {\n display: inline-block;\n position: relative;\n top: -8px;\n right: -2px;\n color: #c05b4d;\n font-size: 12px; }\n .tag-cloud .tag-cloud-tags a:active, .tag-cloud .tag-cloud-tags a:focus, .tag-cloud .tag-cloud-tags a:hover {\n color: #c05b4d;\n transform: scale(1.1); }\n\n.categories {\n margin: 2em 0 3em;\n text-align: center;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n .categories .categories-title {\n display: inline-block;\n font-size: 18px;\n color: #c05b4d;\n border-bottom: 2px solid #c05b4d; }\n .categories .categories-tags {\n margin: 10px 0; }\n .categories .categories-tags .category-link {\n display: inline-block;\n position: relative;\n margin: 5px 10px;\n word-wrap: break-word;\n transition-duration: 0.2s;\n transition-property: transform;\n transition-timing-function: ease-out; }\n .categories .categories-tags .category-link .category-count {\n display: inline-block;\n position: relative;\n top: -8px;\n right: -2px;\n color: #c05b4d;\n font-size: 12px; }\n .categories .categories-tags .category-link:active, .categories .categories-tags .category-link:focus, .categories .categories-tags .category-link:hover {\n color: #c05b4d;\n transform: scale(1.1); }\n\n.slideout-menu {\n position: fixed;\n top: 0;\n left: 0px;\n bottom: 0;\n width: 180px;\n min-height: 100vh;\n overflow-y: hidden;\n -webkit-overflow-scrolling: touch;\n z-index: 0;\n display: none; }\n\n.slideout-panel {\n z-index: 1;\n background-color: #fefefe;\n min-height: 100%; }\n\n.slideout-open,\n.slideout-open body,\n.slideout-open .slideout-panel {\n overflow: hidden; }\n\n.slideout-open .slideout-menu {\n display: block; }\n\n.mobile-navbar {\n display: none;\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 50px;\n background: #fefefe;\n box-shadow: 0px 2px 2px #cacaca;\n text-align: center;\n transition: transform 300ms ease;\n z-index: 99; }\n .mobile-navbar.fixed-open {\n transform: translate3d(180px, 0px, 0px); }\n .mobile-navbar .mobile-header-logo {\n display: inline-block;\n margin-right: 50px; }\n .mobile-navbar .mobile-header-logo .logo {\n font-size: 22px;\n line-height: 50px;\n font-family: \"Chancery\", cursive, LiSu, sans-serif; }\n .mobile-navbar .mobile-navbar-icon {\n color: #c05b4d;\n height: 50px;\n width: 50px;\n font-size: 24px;\n text-align: center;\n float: left;\n position: relative;\n transition: background 0.5s; }\n\n@keyframes clickfirst {\n 0% {\n transform: translateY(6px) rotate(0deg); }\n 100% {\n transform: translateY(0) rotate(45deg); } }\n\n@keyframes clickmid {\n 0% {\n opacity: 1; }\n 100% {\n opacity: 0; } }\n\n@keyframes clicklast {\n 0% {\n transform: translateY(-6px) rotate(0deg); }\n 100% {\n transform: translateY(0) rotate(-45deg); } }\n\n@keyframes outfirst {\n 0% {\n transform: translateY(0) rotate(-45deg); }\n 100% {\n transform: translateY(-6px) rotate(0deg); } }\n\n@keyframes outmid {\n 0% {\n opacity: 0; }\n 100% {\n opacity: 1; } }\n\n@keyframes outlast {\n 0% {\n transform: translateY(0) rotate(45deg); }\n 100% {\n transform: translateY(6px) rotate(0deg); } }\n .mobile-navbar .mobile-navbar-icon span {\n position: absolute;\n /* fallback for browsers which still doesn't support for `calc()` */\n left: 15px;\n top: 25px;\n left: calc((100% - 20px) / 2);\n top: calc((100% - 1px) / 2);\n width: 20px;\n height: 1px;\n background-color: #c05b4d; }\n .mobile-navbar .mobile-navbar-icon span:nth-child(1) {\n transform: translateY(6px) rotate(0deg); }\n .mobile-navbar .mobile-navbar-icon span:nth-child(3) {\n transform: translateY(-6px) rotate(0deg); }\n .mobile-navbar .mobile-navbar-icon.icon-click span:nth-child(1) {\n animation-duration: 0.5s;\n animation-fill-mode: both;\n animation-name: clickfirst; }\n .mobile-navbar .mobile-navbar-icon.icon-click span:nth-child(2) {\n animation-duration: 0.2s;\n animation-fill-mode: both;\n animation-name: clickmid; }\n .mobile-navbar .mobile-navbar-icon.icon-click span:nth-child(3) {\n animation-duration: 0.5s;\n animation-fill-mode: both;\n animation-name: clicklast; }\n .mobile-navbar .mobile-navbar-icon.icon-out span:nth-child(1) {\n animation-duration: 0.5s;\n animation-fill-mode: both;\n animation-name: outfirst; }\n .mobile-navbar .mobile-navbar-icon.icon-out span:nth-child(2) {\n animation-duration: 0.2s;\n animation-fill-mode: both;\n animation-name: outmid; }\n .mobile-navbar .mobile-navbar-icon.icon-out span:nth-child(3) {\n animation-duration: 0.5s;\n animation-fill-mode: both;\n animation-name: outlast; }\n\n.mobile-menu {\n background-color: rgba(248, 245, 236, 0.5); }\n .mobile-menu .mobile-menu-list {\n position: relative;\n list-style: none;\n margin-top: 50px;\n padding: 0;\n border-top: 1px solid #f8f5ec; }\n .mobile-menu .mobile-menu-list .mobile-menu-item {\n padding: 10px 30px;\n border-bottom: 1px solid #f8f5ec; }\n .mobile-menu .mobile-menu-list a {\n font-size: 18px;\n font-family: Athelas, STHeiti, Microsoft Yahei, serif; }\n .mobile-menu .mobile-menu-list a:hover {\n color: #c05b4d; }\n\n@media screen and (max-width: 1080px) {\n .mobile-navbar {\n display: block; } }\n\n.back-to-top {\n display: none;\n position: fixed;\n right: 2em;\n bottom: 2em;\n transition-property: transform;\n transition-timing-function: ease-out;\n transition-duration: 0.3s;\n z-index: 10; }\n .back-to-top:hover {\n transform: translateY(-5px); }\n\n@media screen and (max-width: 1080px) {\n .back-to-top {\n display: none !important; } }\n\n.not-found {\n text-align: center; }\n .not-found .error-emoji {\n color: #363636;\n font-size: 3rem; }\n .not-found .error-text {\n color: #797979;\n font-size: 1.25rem; }\n .not-found .error-link {\n margin-top: 2rem; }\n .not-found .error-link a {\n color: #c05b4d; }\n\n\n\n// WEBPACK FOOTER //\n// ./css/style.scss","@import '_common/normalize';\n\nhtml {\n font-size: $global-font-size;\n box-sizing: border-box;\n}\n\nbody {\n padding: 0;\n margin: 0;\n font-family: $global-font-family;\n font-weight: normal;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n line-height: $global-lineheight;\n color: $global-font-color;\n background: $global-background;\n scroll-behavior: smooth;\n // border-top: 3px solid $theme-color;\n}\n\n@include max-screen() {\n body {\n border-top: 0;\n }\n}\n\n::selection {\n background: $theme-color;\n color: #fff; \n}\n\n// ::-webkit-scrollbar {\n// width: 8px;\n// height: 6px; \n// }\n\n// ::-webkit-scrollbar-thumb {\n// background: lighten($theme-color, 10%);\n// border-radius: 5px;\n// }\n\n// ::-webkit-scrollbar-track {\n// background: rgba(211, 211, 211, 0.4);\n// border-radius: 5px;\n// }\n\nimg {\n max-width: 100%;\n height: auto;\n display: inline-block;\n vertical-align: middle;\n}\n\na {\n color: $global-font-color;\n text-decoration: none;\n}\n\n@each $header, $size in $global-headings {\n #{$header} {\n font-size: $size;\n font-family: $global-serif-font-family;\n }\n}\n\n.container {\n margin: 0 auto;\n width: $global-body-width;\n}\n\n@include max-screen() {\n .container {\n width: 100%;\n }\n}\n\n.content-wrapper {\n padding: 3em 0 1px 0;\n}\n\n// make video fluid:\n// https://css-tricks.com/NetMag/FluidWidthVideo/Article-FluidWidthVideo.php\n// class video-container is the wrapper used by hexo youtube tag plugin\n.video-container {\n\tposition: relative;\n\tpadding-bottom: 56.25%; /* 16:9 */\n\tpadding-top: 25px;\n\theight: 0;\n}\n.video-container iframe {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100%;\n\theight: 100%;\n}\n\n.bg-llight {\n background-color: #f2f2f5;\n}\n\n.bg-white {\n background-color: #FFF;\n}\n\n\n// WEBPACK FOOTER //\n// ./css/_base.scss","@mixin clearfix() {\n &:before,\n &:after {\n content: \" \";\n display: table;\n }\n \n &:after {\n clear: both;\n }\n}\n\n@mixin min-screen($min-width: $global-body-width) {\n @media screen and (min-width: $min-width) {\n @content;\n }\n}\n\n@mixin max-screen($max-width: $global-body-width) {\n @media screen and (max-width: $max-width) {\n @content;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./css/_common/_utils.scss","// ==============================\n// Iconfont\n// ==============================\n\n.iconfont {\n font-family: \"iconfont\" !important;\n font-style: normal;\n -webkit-font-smoothing: antialiased;\n -webkit-text-stroke-width: 0.2px;\n -moz-osx-font-smoothing: grayscale;\n cursor: pointer;\n}\n\n\n/* Generic Icon */\n.icon-heart::before {\n font-icon: url('../fonts/svg/heart.svg');\n}\n\n.icon-right::before {\n font-icon: url('../fonts/svg/right.svg');\n}\n\n.icon-left::before {\n font-icon: url('../fonts/svg/left.svg');\n}\n\n.icon-up::before {\n font-icon: url('../fonts/svg/up.svg');\n font-size: 2em;\n}\n\n.icon-new-window::before {\n font-icon: url('../fonts/svg/new-window.svg');\n}\n\n.icon-rss::before {\n font-icon: url('../fonts/svg/rss.svg');\n}\n\n\n/* Social Icon */\n.icon-email::before {\n font-icon: url('../fonts/svg/email.svg');\n font-size: 0.8em;\n}\n\n.icon-stack-overflow::before {\n font-icon: url('../fonts/svg/stack-overflow.svg');\n}\n\n.icon-twitter::before {\n font-icon: url('../fonts/svg/twitter.svg');\n font-size: 0.9em;\n}\n\n.icon-facebook::before {\n font-icon: url('../fonts/svg/facebook.svg');\n}\n\n.icon-linkedin::before {\n font-icon: url('../fonts/svg/linkedin.svg');\n}\n\n.icon-google::before {\n font-icon: url('../fonts/svg/google.svg');\n font-size: 1.15em;\n}\n\n.icon-github::before {\n font-icon: url('../fonts/svg/github.svg');\n}\n\n.icon-weibo::before {\n font-icon: url('../fonts/svg/weibo.svg');\n font-size: 1.1em;\n}\n\n.icon-zhihu::before {\n font-icon: url('../fonts/svg/zhihu.svg');\n}\n\n.icon-douban::before {\n font-icon: url('../fonts/svg/douban.svg');\n}\n\n.icon-pocket::before {\n font-icon: url('../fonts/svg/pocket.svg');\n}\n\n.icon-tumblr::before {\n font-icon: url('../fonts/svg/tumblr.svg');\n font-size: 1.1em;\n}\n\n.icon-instagram::before {\n font-icon: url('../fonts/svg/instagram.svg');\n font-size: 1.1em;\n}\n\n.icon-gitlab::before {\n font-icon: url('../fonts/svg/gitlab.svg');\n}\n\n.icon-goodreads::before {\n font-icon: url('../fonts/svg/goodreads.svg');\n}\n\n.icon-coding::before {\n font-icon: url('../fonts/svg/coding.svg');\n font-size: 1.3em;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./css/_iconfont.scss","// ==============================\n// Header\n// ==============================\n\n.header {\n @include clearfix; \n\n @import '_header/logo';\n @import '_header/menu';\n}\n\n\n@include max-screen() {\n .header {\n padding: 50px 0 0;\n text-align: center;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./css/_partial/_header.scss","// ==============================\n// Logo\n// =============================\n\n.logo-wrapper {\n float: left;\n padding-left: 15px;\n\n .logo {\n font-size: $logo-font-size;\n font-family: $logo-font-family;\n }\n}\n\n@include max-screen() {\n .logo-wrapper {\n display: none;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./css/_partial/_header/_logo.scss","// ==============================\n// Menu\n// =============================\n\n.site-navbar {\n .menu {\n float: right;\n padding-right: 15px;\n font-family: $global-serif-font-family;\n\n .menu-item {\n display: inline-block;\n margin-left: 1em;\n margin-right: 1em;\n position: relative;\n\n & + .menu-item {\n margin-left: $menu-item-margin-left;;\n }\n\n .submenu {\n visibility: hidden;\n position: absolute;\n top: 120%;\n // left: 50%;\n transition: 0.2s 1s;\n list-style: none;\n padding: 0;\n background: #fff;\n white-space:nowrap;\n border: 1px solid #ddd;\n border-bottom: none;\n transition: 0.2s 0.2s; /* delay of seconds on hover off */\n z-index: 99;\n\n li {\n border-bottom: 1px solid #ddd;\n\n a {\n padding: 12px;\n }\n }\n }\n\n &:hover .submenu {\n visibility: visible;\n transition-delay: 0s; /* react immediately on hover */\n }\n \n // @include underline-from-center;\n }\n\n .menu-item-link {\n font-size: $menu-link-font-size;\n }\n }\n}\n\n.menu-parent::after {\n content: \" ▼\";\n font-size: 11px;\n}\n\n.menu a:hover {\n color: $theme-color;\n}\n\n@include max-screen() {\n .site-navbar {\n display: none;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./css/_partial/_header/_menu.scss","// ==============================\n// Post\n// ==============================\n\n.post {\n padding: 3em 5em;\n margin: 0 5em 3em;\n\n @import '_post/header';\n @import '_post/toc';\n @import '_post/content';\n @import '_post/copyright';\n @import '_post/reward';\n @import '_post/footer';\n @import '_post/disqus';\n @import '_post/footnote';\n}\n\n@media screen and (max-width: 504px) {\n .post {\n padding: 1em 1em;\n margin: 0 0 2em;\n }\n\n .content-wrapper {\n padding: 1em 0 1px;\n }\n}\n\n@media screen and (min-width: 900px) and (max-width: 1080px) {\n .post {\n margin: 0 2em 2em;\n }\n\n .content-wrapper {\n padding: 2em 0 1px;\n }\n}\n\n@media screen and (min-width: 504px) and (max-width: 899px) {\n .post {\n padding: 1em 1em;\n margin: 0 1em 2em;\n }\n\n .content-wrapper {\n padding: 1em 0 1px;\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./css/_partial/_post.scss",".post-header {\n margin-bottom: 20px;\n text-align: center;\n padding-bottom: 10px;\n border-bottom: 2px LightGrey solid;\n\n .post-title {\n margin: 0;\n font-size: $post-title-font-size;\n font-weight: $post-title-font-weight;\n font-family: $global-serif-font-family;\n }\n\n .post-link {\n @include underline-from-center;\n }\n\n .post-meta {\n font-size: 14px;\n color: $post-meta-font-color;\n\n .post-time {\n font-size: 15px;\n }\n\n .post-category {\n display: inline;\n\n a {\n color: inherit;\n\n &::before {\n content: '·';\n }\n\n &:hover {\n color: $theme-color;\n }\n }\n }\n\n .more-meta {\n &::before {\n content: '·';\n }\n }\n\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./css/_partial/_post/_header.scss","@mixin underline-from-center() {\n display: inline-block;\n vertical-align: middle;\n transform: translateZ(0);\n backface-visibility: hidden;\n box-shadow: 0 0 1px transparent;\n position: relative;\n overflow: hidden;\n\n &:before {\n content: '';\n position: absolute;\n z-index: -1;\n height: 2px;\n bottom: 0;\n left: 51%;\n right: 51%;\n background: $theme-color;\n transition-duration: 0.2s;\n transition-property: right, left;\n transition-timing-function: ease-out;\n }\n\n &.active,\n &:active,\n &:focus,\n &:hover {\n &:before {\n right: 0;\n left: 0;\n }\n }\n}\n\n@mixin mobile-menu-icon() {\n @keyframes clickfirst {\n 0% {\n transform: translateY(6px) rotate(0deg);\n \n }\n\n 100% {\n transform: translateY(0) rotate(45deg);\n }\n }\t\n\n @keyframes clickmid {\n 0% {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n }\n }\n\n @keyframes clicklast {\n 0% {\n transform: translateY(-6px) rotate(0deg);\n }\n\n 100% {\n transform: translateY(0) rotate(-45deg);\n }\n }\n \n @keyframes outfirst {\n 0% {\n transform: translateY(0) rotate(-45deg);\n }\n\n 100% {\n transform: translateY(-6px) rotate(0deg);\n }\n }\t\n\n @keyframes outmid {\n 0% {\n opacity: 0;\n }\n\n 100% {\n opacity: 1;\n }\n }\n\n @keyframes outlast {\n 0% {\n transform: translateY(0) rotate(45deg);\n }\n\n 100% {\n transform: translateY(6px) rotate(0deg);\n }\n }\n\n span {\n position: absolute;\n /* fallback for browsers which still doesn't support for `calc()` */\n left: 15px;\n top: 25px;\n left: calc((100% - 20px) / 2);\n top: calc((100% - 1px) / 2);\n width: 20px;\n height: 1px;\n background-color: $theme-color;\n \n &:nth-child(1) {\n transform: translateY(6px) rotate(0deg);\n }\n\n &:nth-child(3) {\n transform: translateY(-6px) rotate(0deg);\n }\n }\n\n &.icon-click {\n span:nth-child(1) {\n animation-duration: 0.5s;\n animation-fill-mode: both;\n animation-name: clickfirst;\n }\n\n span:nth-child(2) {\n animation-duration: 0.2s;\n animation-fill-mode: both;\n animation-name: clickmid;\n }\n\n span:nth-child(3) {\n animation-duration: 0.5s;\n animation-fill-mode: both;\n animation-name: clicklast;\n }\n }\n\n &.icon-out {\n span:nth-child(1) {\n animation-duration: 0.5s;\n animation-fill-mode: both;\n animation-name: outfirst;\n }\n\n span:nth-child(2) {\n animation-duration: 0.2s;\n animation-fill-mode: both;\n animation-name: outmid;\n }\n\n span:nth-child(3) {\n animation-duration: 0.5s;\n animation-fill-mode: both;\n animation-name: outlast;\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./css/_common/_animation.scss",".post-toc {\n\n .post-toc-title {\n font-size: 1em;\n max-width: 9em;\n border: 0;\n font-weight: normal;\n padding: 0.05em 0.5em;\n line-height: 1em;\n }\n\n .post-toc-content {\n display: block;\n padding: 0.5em;\n margin-top: -1.5em;\n line-height: 1.3em;\n\n /* Hugo Table of Contents have extra dot in front */\n ul {\n padding-left: 20px;\n list-style-type: none;\n\n ul {\n list-style: disc;\n\n ul {\n list-style: circle;\n }\n\n li > a {\n color: #139;\n }\n\n li > a:hover{\n color: #900;\n }\n }\n }\n }\n\n}\n\n@include min-screen() {\n .post-toc {\n display: none;\n border: 1px solid #CCC;\n background: white;\n box-shadow: 0 0 1em #777777;\n position: fixed;\n top: 0;\n right: 0;\n max-height: 80%;\n overflow: auto;\n z-index: 99;\n\n .post-toc-content {\n display: none;\n }\n\n &:hover .post-toc-content {\n display: block;\n }\n }\n}\n\n@include max-screen() {\n .post-toc {\n padding: 10px;\n border-bottom: 2px LightGrey solid;\n word-wrap: break-word;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./css/_partial/_post/_toc.scss","// ==============================\n// Post content\n// ==============================\n\n.post-content {\n word-wrap: break-word;\n\n @for $i from 1 through 6 {\n h#{$i} {\n font-weight: 600;\n font-family: $global-serif-font-family;\n }\n }\n\n h1 {\n border-bottom: 1px solid #ddd;\n margin-top: 2em;\n }\n\n h2 {\n // font-size: 1.6em;\n border-bottom: 1px solid #ddd;\n margin-top: 2em;\n }\n\n h3 {\n // font-size: 1.3em;\n margin-top: 1.5em;\n }\n\n a {\n color: $theme-color;\n word-break: break-all;\n\n &:hover {\n border-bottom: $content-link-border;\n }\n }\n\n blockquote {\n margin: 1em auto;\n padding: 0.2em 2em 0.2em 3em;\n color: #555555;\n background-color: #F6F6F6;\n border-left: 4px solid #999;\n position: relative;\n line-height: 1.6;\n font-family: Open Sans;\n\n &::before {\n font-family: Arial;\n content: \"\\201C\";\n color: #999;\n font-size: 4em;\n position: absolute;\n left: 10px;\n top: -10px;\n }\n\n footer {\n color: #333333;\n margin-bottom: 1em;\n }\n\n cite:before {\n content: '\\2014';\n padding-right: .3em;\n padding-left: .3em;\n }\n }\n\n iframe {\n margin: 0 auto;\n display: block;\n width: 100%;\n }\n\n > table {\n border: none;\n width: 100%;\n\n td {\n background-color: #F0E4E4;\n border: 3px solid #FFF;\n padding: 5px 15px;\n }\n\n th {\n text-align: left;\n background-color: #A65B5B;\n color: #FFF;\n border: 3px solid #FFF;\n padding: 5px 15px;\n }\n }\n\n @import 'code';\n\n .post-summary {\n margin-bottom: 1em;\n }\n\n .read-more {\n text-align: right;\n\n .read-more-link {\n color: $theme-color;\n font-size: 1.1em;\n font-family: $global-serif-font-family;\n\n &:hover {\n border-bottom: $post-readMore-border-bottom;\n }\n }\n }\n\n kbd {\n display: inline-block;\n padding: 0.25em;\n background-color: #fafafa;\n border: 1px solid #dbdbdb;\n border-bottom-color: #b5b5b5;\n border-radius: 3px;\n box-shadow: inset 0 -1px 0 #b5b5b5;\n font-size: 0.8em;\n line-height: 1.25;\n font-family: \"SFMono-Regular\",\"Liberation Mono\",\"Roboto Mono\",Menlo,Monaco,Consolas,\"Courier New\",Courier,monospace;\n color: #4a4a4a;\n }\n\n dl dt::after {\n content: ':';\n }\n\n figure {\n a:hover{\n border: 0;\n }\n\n &.center {\n text-align: center;\n }\n\n figcaption {\n margin-top: 0.5em;\n text-align: center;\n line-height: 1.5em;\n\n h4 {\n color: #b5b5b5;\n // font-size: 0.9em;\n margin: 0;\n }\n\n p {\n font-size: 0.9em;\n color: #b5b5b5;\n font-style: italic;\n margin: 0;\n }\n }\n }\n\n .task-list {\n list-style: none;\n padding-left: 1.5rem;\n }\n}\n\n.header-link {\n margin-left: 0.5em;\n fill: currentColor;\n visibility: hidden;\n}\n\n.post-content-header:hover .header-link {\n visibility: visible;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./css/_partial/_post/_content.scss","p > code, pre {\n padding: 0 7px;\n background: $code-background;\n border-radius: 4px;\n color: $code-color;\n}\n\ncode, pre {\n font-size: $code-font-size;\n font-family: $code-font-family;\n padding: 0;\n}\n\n.chroma {\n margin: 0;\n}\n\n.highlight > .chroma {\n margin: 1em 0;\n overflow-x: auto;\n position: relative;\n border: 2px solid #dddddd;\n\n table {\n position: relative;\n padding: 0.8em 0;\n\n &::after {\n position: absolute;\n top: 0;\n right: 0;\n padding: 0 7px;\n font-size: 0.8em;\n font-weight: bold;\n color: darken($gray, 10%);\n // background: darken($code-background, 3%);\n content: 'Code';\n }\n }\n\n > table::after {\n content: attr(data-lang);\n text-transform: capitalize;\n }\n\n tr, td {\n margin: 0;\n padding: 0;\n width: 100%;\n border-collapse: collapse;\n }\n\n tr>td:first-child {\n width: 1%;\n white-space: nowrap;\n }\n\n .lnt {\n color: $gray;\n display: block;\n line-height: 2em;\n }\n}\n\n@import '_chroma_highlight';\n\n\n\n// WEBPACK FOOTER //\n// ./css/_partial/_post/_code.scss","/* Background */\n\n.chroma {\n color: #586e75;\n background-color: $code-background\n}\n\n/* LineTableTD */\n\n.chroma .lntd {\n vertical-align: top;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\n/* LineTable */\n\n.chroma .lntable {\n border-spacing: 0;\n padding: 0;\n margin: 0;\n border: 0;\n width: auto;\n overflow: auto;\n display: block;\n}\n\n/* LineHighlight */\n\n.chroma .hl {\n display: block;\n width: 100%;\n}\n\n/* LineNumbersTable */\n\n.chroma .lnt {\n margin-right: 0.4em;\n padding: 0 0.4em 0 0.4em;\n}\n\n/* LineNumbers */\n\n.chroma .ln {\n margin-right: 0.4em;\n padding: 0 0.4em 0 0.4em;\n}\n\n/* Keyword */\n\n.chroma .k {\n color: #859900\n}\n\n/* KeywordConstant */\n\n.chroma .kc {\n color: #859900;\n font-weight: bold\n}\n\n/* KeywordDeclaration */\n\n.chroma .kd {\n color: #859900\n}\n\n/* KeywordNamespace */\n\n.chroma .kn {\n color: #dc322f;\n font-weight: bold\n}\n\n/* KeywordPseudo */\n\n.chroma .kp {\n color: #859900\n}\n\n/* KeywordReserved */\n\n.chroma .kr {\n color: #859900\n}\n\n/* KeywordType */\n\n.chroma .kt {\n color: #859900;\n font-weight: bold\n}\n\n/* Name */\n\n.chroma .n {\n color: #268bd2\n}\n\n/* NameAttribute */\n\n.chroma .na {\n color: #268bd2\n}\n\n/* NameBuiltin */\n\n.chroma .nb {\n color: #cb4b16\n}\n\n/* NameBuiltinPseudo */\n\n.chroma .bp {\n color: #268bd2\n}\n\n/* NameClass */\n\n.chroma .nc {\n color: #cb4b16\n}\n\n/* NameConstant */\n\n.chroma .no {\n color: #268bd2\n}\n\n/* NameDecorator */\n\n.chroma .nd {\n color: #268bd2\n}\n\n/* NameEntity */\n\n.chroma .ni {\n color: #268bd2\n}\n\n/* NameException */\n\n.chroma .ne {\n color: #268bd2\n}\n\n/* NameFunction */\n\n.chroma .nf {\n color: #268bd2\n}\n\n/* NameFunctionMagic */\n\n.chroma .fm {\n color: #268bd2\n}\n\n/* NameLabel */\n\n.chroma .nl {\n color: #268bd2\n}\n\n/* NameNamespace */\n\n.chroma .nn {\n color: #268bd2\n}\n\n/* NameOther */\n\n.chroma .nx {\n color: #268bd2\n}\n\n/* NameProperty */\n\n.chroma .py {\n color: #268bd2\n}\n\n/* NameTag */\n\n.chroma .nt {\n color: #268bd2;\n font-weight: bold\n}\n\n/* NameVariable */\n\n.chroma .nv {\n color: #268bd2\n}\n\n/* NameVariableClass */\n\n.chroma .vc {\n color: #268bd2\n}\n\n/* NameVariableGlobal */\n\n.chroma .vg {\n color: #268bd2\n}\n\n/* NameVariableInstance */\n\n.chroma .vi {\n color: #268bd2\n}\n\n/* NameVariableMagic */\n\n.chroma .vm {\n color: #268bd2\n}\n\n/* Literal */\n\n.chroma .l {\n color: #2aa198\n}\n\n/* LiteralDate */\n\n.chroma .ld {\n color: #2aa198\n}\n\n/* LiteralString */\n\n.chroma .s {\n color: #2aa198\n}\n\n/* LiteralStringAffix */\n\n.chroma .sa {\n color: #2aa198\n}\n\n/* LiteralStringBacktick */\n\n.chroma .sb {\n color: #2aa198\n}\n\n/* LiteralStringChar */\n\n.chroma .sc {\n color: #2aa198\n}\n\n/* LiteralStringDelimiter */\n\n.chroma .dl {\n color: #2aa198\n}\n\n/* LiteralStringDoc */\n\n.chroma .sd {\n color: #2aa198\n}\n\n/* LiteralStringDouble */\n\n.chroma .s2 {\n color: #2aa198\n}\n\n/* LiteralStringEscape */\n\n.chroma .se {\n color: #2aa198\n}\n\n/* LiteralStringHeredoc */\n\n.chroma .sh {\n color: #2aa198\n}\n\n/* LiteralStringInterpol */\n\n.chroma .si {\n color: #2aa198\n}\n\n/* LiteralStringOther */\n\n.chroma .sx {\n color: #2aa198\n}\n\n/* LiteralStringRegex */\n\n.chroma .sr {\n color: #2aa198\n}\n\n/* LiteralStringSingle */\n\n.chroma .s1 {\n color: #2aa198\n}\n\n/* LiteralStringSymbol */\n\n.chroma .ss {\n color: #2aa198\n}\n\n/* LiteralNumber */\n\n.chroma .m {\n color: #2aa198;\n font-weight: bold\n}\n\n/* LiteralNumberBin */\n\n.chroma .mb {\n color: #2aa198;\n font-weight: bold\n}\n\n/* LiteralNumberFloat */\n\n.chroma .mf {\n color: #2aa198;\n font-weight: bold\n}\n\n/* LiteralNumberHex */\n\n.chroma .mh {\n color: #2aa198;\n font-weight: bold\n}\n\n/* LiteralNumberInteger */\n\n.chroma .mi {\n color: #2aa198;\n font-weight: bold\n}\n\n/* LiteralNumberIntegerLong */\n\n.chroma .il {\n color: #2aa198;\n font-weight: bold\n}\n\n/* LiteralNumberOct */\n\n.chroma .mo {\n color: #2aa198;\n font-weight: bold\n}\n\n/* OperatorWord */\n\n.chroma .ow {\n color: #859900\n}\n\n/* Comment */\n\n.chroma .c {\n color: #93a1a1;\n font-style: italic\n}\n\n/* CommentHashbang */\n\n.chroma .ch {\n color: #93a1a1;\n font-style: italic\n}\n\n/* CommentMultiline */\n\n.chroma .cm {\n color: #93a1a1;\n font-style: italic\n}\n\n/* CommentSingle */\n\n.chroma .c1 {\n color: #93a1a1;\n font-style: italic\n}\n\n/* CommentSpecial */\n\n.chroma .cs {\n color: #93a1a1;\n font-style: italic\n}\n\n/* CommentPreproc */\n\n.chroma .cp {\n color: #93a1a1;\n font-style: italic\n}\n\n/* CommentPreprocFile */\n\n.chroma .cpf {\n color: #93a1a1;\n font-style: italic\n}\n\n/* Generic */\n\n.chroma .g {\n color: #d33682\n}\n\n/* GenericDeleted */\n\n.chroma .gd {\n color: #d33682\n}\n\n/* GenericEmph */\n\n.chroma .ge {\n color: #d33682\n}\n\n/* GenericError */\n\n.chroma .gr {\n color: #d33682\n}\n\n/* GenericHeading */\n\n.chroma .gh {\n color: #d33682\n}\n\n/* GenericInserted */\n\n.chroma .gi {\n color: #d33682\n}\n\n/* GenericOutput */\n\n.chroma .go {\n color: #d33682\n}\n\n/* GenericPrompt */\n\n.chroma .gp {\n color: #d33682\n}\n\n/* GenericStrong */\n\n.chroma .gs {\n color: #d33682\n}\n\n/* GenericSubheading */\n\n.chroma .gu {\n color: #d33682\n}\n\n/* GenericTraceback */\n\n.chroma .gt {\n color: #d33682\n}\n\n\n\n// WEBPACK FOOTER //\n// ./css/_partial/_post/_chroma_highlight.scss",".post-copyright {\n padding: 10px;\n background-color: hsla(0,0%,71%,.1);\n border: 1px solid #e1e1e1;\n border-left: solid;\n margin-top: 3em;\n\n .copyright-item {\n margin: 5px 0;\n\n a {\n color: $theme-color;\n word-wrap: break-word;\n\n &:hover {\n border-bottom: $content-link-border;\n }\n }\n\n .item-title {\n display: inline-block;\n min-width: 5rem;\n margin-right: .5rem;\n text-align: right;\n font-weight: bold;\n\n &:after {\n content: \" :\";\n }\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./css/_partial/_post/_copyright.scss",".post-reward {\n margin-top: 20px;\n padding-top: 10px;\n text-align: center;\n border-top: 1px dashed $light-gray;\n\n .reward-button {\n margin: 15px 0;\n padding: 3px 7px;\n display: inline-block;\n color: $theme-color;\n border: 1px solid $theme-color;\n border-radius: 5px;\n cursor: pointer;\n\n &:hover {\n color: $white;\n background-color: $theme-color;\n transition: 0.5s;\n }\n }\n\n #reward:checked {\n & ~ .qr-code {\n display: block;\n }\n\n & ~ .reward-button {\n display: none;\n }\n }\n\n .qr-code {\n display: none;\n\n .qr-code-image {\n display: inline-block;\n min-width: 200px;\n width: 40%;\n margin-top: 15px;\n\n span {\n display: inline-block;\n width: 100%;\n margin: 8px 0;\n }\n }\n\n .image {\n width: 200px;\n height: 200px;\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./css/_partial/_post/_reward.scss","// ==============================\n// Post footer\n// ==============================\n\n.post-footer {\n font-family: $global-serif-font-family;\n\n .post-tags {\n margin-top: 1em;\n\n a {\n color: $theme-color;\n word-break: break-all;\n margin-right: 10px;\n\n &:hover {\n border-bottom: 1px solid $theme-color;\n }\n\n &::before {\n content: '#';\n }\n }\n }\n\n .post-nav {\n margin-top: 1em;\n @include clearfix;\n\n .prev,\n .next {\n font-weight: 600;\n font-size: $post-nav-font-size;\n font-family: $global-serif-font-family;\n transition-property: transform;\n transition-timing-function: ease-out;\n transition-duration: 0.3s;\n }\n\n .prev {\n float: left;\n\n &:hover {\n color: $theme-color;\n transform: translateX(-4px); \n }\n }\n\n .next {\n float: right;\n\n &:hover {\n color: $theme-color;\n transform: translateX(4px); \n }\n }\n\n .nav-mobile {\n display: none;\n }\n }\n}\n\n@include max-screen() {\n .post-footer {\n .post-nav {\n .nav-default {\n display: none;\n }\n\n .nav-mobile {\n display: inline;\n }\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./css/_partial/_post/_footer.scss","// ==============================\n// Post disqus\n// ==============================\n\n.disqus-button {\n display: block;\n padding: 15px 0;\n font-size: 16px;\n color: #555;\n border: 1px solid #ddd;\n text-align: center;\n cursor:pointer;\n margin-top: 2em;\n}\n\n\n// WEBPACK FOOTER //\n// ./css/_partial/_post/_disqus.scss",".footnotes {\n margin-top: 50px;\n font-size: 0.9em;\n\n hr {\n border-style: solid;\n color: rgb(221, 221, 221);\n }\n}\n\n.footnote-ref {\n display: inline;\n position: relative;\n margin-left: 3px;\n\n &:hover .fn-content {\n opacity: 1;\n visibility: visible;\n transform: translate3d(0, 0, 0) rotate3d(0, 0, 0, 0);\n // transition: opacity 0.3s transform 0.3s;\n }\n\n >a {\n font-weight: 700;\n &::after {\n content: ']';\n }\n &::before {\n content: '[';\n }\n }\n}\n\n.fn-content {\n position: absolute;\n display: inline-block;\n z-index: 14;\n left: 50%;\n bottom: 100%;\n line-height: 1.3;\n border-radius: 0.5em;\n border: 1px solid rgba(0, 0, 0, 0.1);\n background: #f6f6f6;\n opacity: 0;\n visibility: hidden;\n transform: translate3d(0, -10px, 0);\n transition: opacity 0.3s, transform 0.3s;\n// transition-delay: 2s;\n\n// &:hover {\n// opacity: 1;\n// pointer-events: auto;\n// }\n\n /* Arrow */\n// &:after {\n// content: '';\n// top: 100%;\n// left: 50%;\n// border: solid transparent;\n// height: 0;\n// width: 0;\n// position: absolute;\n// pointer-events: none;\n// border-color: transparent;\n// border-top-color: #f6f6f6;\n// border-width: 10px;\n// margin-left: -10px;\n// }\n .fn-text {\n // line-height: 1.35;\n display: inline-block;\n padding: 1em;\n font-size: 1.2em;\n z-index: 8;\n a {\n font-weight: bold;\n }\n }\n}\n\n\n\n\n// WEBPACK FOOTER //\n// ./css/_partial/_post/_footnote.scss","// ==============================\n// Pagination\n// ==============================\n\n.pagination {\n margin: $pagination-margin;\n text-align: center;\n @include clearfix;\n\n li {\n display: inline-block;\n\n a {\n background-color: #fff;\n margin-left: .1em;\n margin-right: .1em;\n border: 1px solid #222;\n color: #222;\n float: left;\n line-height: 1.42857143;\n padding: 6px 12px;\n position: relative;\n text-decoration: none;\n margin-bottom: 0.2em;\n }\n }\n\n .active {\n a {\n background-color: #222;\n border-color: #222;\n color: #fff;\n cursor: default;\n z-index: 2;\n }\n }\n\n .prev,\n .next {\n font-weight: 600;\n font-size: $pagination-font-size;\n font-family: $global-serif-font-family;\n transition-property: transform;\n transition-timing-function: ease-out;\n transition-duration: 0.3s;\n }\n\n .prev {\n float: left;\n\n &:hover {\n color: $theme-color;\n transform: translateX(-4px); \n }\n }\n\n .next {\n float: right;\n\n &:hover {\n color: $theme-color;\n transform: translateX(4px); \n }\n }\n}\n\n@include max-screen() {\n .pagination {\n margin: 1em 0;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./css/_partial/_pagination.scss","// ==============================\n// Post footer\n// =============================\n\n.footer {\n margin-top: $footer-margin-top;\n\n @import \"_footer/social\";\n @import \"_footer/copyright\";\n}\n\n\n// WEBPACK FOOTER //\n// ./css/_partial/_footer.scss","// ==============================\n// Social\n// =============================\n\n.social-links {\n display: flex;\n justify-content: center;\n align-items: center;\n flex-wrap: wrap;\n\n .iconfont {\n font-size: $social-icon-font-size;\n\n & + .iconfont {\n margin-left: $social-link-margin-left;\n } \n\n &:hover {\n color: $theme-color;\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./css/_partial/_footer/_social.scss","// ==============================\n// Copyright\n// =============================\n\n.copyright {\n margin: $copyright-margin;\n color: $dark-gray;\n text-align: center;\n font-family: $global-serif-font-family;\n\n .hexo-link,\n .theme-link {\n color: $theme-color;\n }\n\n .copyright-year {\n display: block;\n\n .heart {\n font-size: 14px;\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./css/_partial/_footer/_copyright.scss","// ==============================\n// Archive\n// =============================\n\n.archive {\n // margin: $archive-margin;\n // max-width: $archive-max-width;\n margin: 0 5em 3em;\n background-color: white;\n padding: 1em 5em 5em 5em;\n\n .archive-title {\n font-family: $global-serif-font-family;\n\n &.tag,\n &.category {\n margin: 20px 0;\n }\n\n .archive-name {\n margin: 0;\n display: inline-block;\n font-weight: 400;\n font-size: $archive-name-font-size;\n line-height: $archive-name-font-size + 2px;\n }\n\n .archive-post-counter {\n display: none;\n color: $dark-gray;\n }\n }\n\n .collection-title {\n font-family: $global-serif-font-family;\n \n .archive-year {\n margin: 2em 0 0;\n font-weight: 400;\n font-size: $collection-title-font-size;\n line-height: $collection-title-font-size + 2px;\n }\n }\n\n .archive-post {\n padding: $archive-post-padding;\n border-bottom: $archive-post-border;\n font-size: 1.1em;\n display: table;\n width: 100%;\n\n .archive-post-time {\n color: $dark-gray;\n display: table-cell;\n width: 7em;\n vertical-align: middle;\n }\n\n .archive-post-title {\n display: table-cell;\n vertical-align: middle;\n \n .archive-post-link {\n color: $theme-color;\n }\n }\n\n &::first-child {\n margin-top: 10px;\n }\n\n &:hover {\n // border-left: $archive-post-hover-border-left;\n transition: $archive-post-hover-transition;\n transform: $archive-post-hover-transform;\n\n .archive-post-time {\n color: darken($dark-gray, 10%);\n }\n\n .archive-post-title .archive-post-link {\n color: darken($theme-color, 10%);\n }\n }\n }\n\n .more-post {\n text-align: right;\n \n .more-post-link {\n margin-top: 1em;\n color: $theme-color;\n font-size: 1.1em;\n font-family: $global-serif-font-family;\n \n &:hover {\n border-bottom: $post-readMore-border-bottom;\n }\n }\n }\n}\n\n@media screen and (max-width: 899px) {\n .archive {\n margin: 0 auto 1em auto;\n padding: 1em;\n\n .archive-title .archive-name {\n font-size: $archive-name-font-size - 4px;\n }\n\n .collection-title .archive-year {\n margin: 10px 0;\n font-size: $collection-title-font-size - 4px;\n }\n\n .archive-post {\n padding: $archive-post-mobile-padding;\n\n .archive-post-time {\n font-size: $archive-post-mobile-time-font-size;\n display: block;\n }\n\n .archive-post-title {\n display: block;\n }\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./css/_partial/_archive.scss","// ==============================\n// Tags\n// =============================\n\n.tag-cloud {\n margin: 2em 0 3em;\n text-align: center;\n font-family: $global-serif-font-family;\n\n .tag-cloud-title {\n display: inline-block;\n font-size: $tag-cloud-title-size;\n color: $theme-color;\n border-bottom: $tag-cloud-title-border-bottom;\n }\n\n .tag-cloud-tags {\n margin: 10px 0;\n\n a {\n display: inline-block;\n position: relative;\n margin: $tag-cloud-tags-link-margin;\n word-wrap: break-word;\n transition-duration: 0.2s;\n transition-property: transform;\n transition-timing-function: ease-out;\n\n .tag-count {\n display: inline-block;\n position: relative;\n top: -8px;\n right: -2px;\n color: $theme-color;\n font-size: $category-count-font-size;\n }\n\n &:active,\n &:focus,\n &:hover {\n color: $theme-color;\n transform: scale(1.1);\n }\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./css/_partial/_tags.scss","\n.categories {\n margin: 2em 0 3em;\n text-align: center;\n font-family: $global-serif-font-family;\n\n .categories-title {\n display: inline-block;\n font-size: $categories-title-size;\n color: $theme-color;\n border-bottom: $categories-title-border-bottom;\n }\n\n .categories-tags {\n margin: 10px 0;\n\n .category-link {\n display: inline-block;\n position: relative;\n margin: $categories-tags-link-margin;\n word-wrap: break-word;\n transition-duration: 0.2s;\n transition-property: transform;\n transition-timing-function: ease-out;\n\n .category-count {\n display: inline-block;\n position: relative;\n top: -8px;\n right: -2px;\n color: $theme-color;\n font-size: $category-count-font-size;\n }\n\n &:active,\n &:focus,\n &:hover {\n color: $theme-color;\n transform: scale(1.1);\n }\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./css/_partial/_categories.scss","// ==============================\n// slideout (https://github.com/mango/slideout)\n// ==============================\n\n.slideout-menu {\n position: fixed;\n top: 0;\n left: 0px;\n bottom: 0;\n width: 180px;\n min-height: 100vh;\n overflow-y: hidden;\n -webkit-overflow-scrolling: touch;\n z-index: 0;\n display: none;\n}\n\n.slideout-panel {\n // position: relative;\n z-index: 1;\n background-color: $white;\n min-height: 100%;\n}\n\n.slideout-open,\n.slideout-open body,\n.slideout-open .slideout-panel {\n overflow: hidden;\n}\n\n.slideout-open .slideout-menu {\n display: block;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./css/_partial/_slideout.scss","// ==============================\n// Mobile Navbar\n// ==============================\n\n.mobile-navbar {\n display: none;\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: $mobile-navbar-height;\n background: $white;\n box-shadow: 0px 2px 2px $gray;\n text-align: center;\n transition: transform 300ms ease;\n z-index: 99;\n\n &.fixed-open {\n transform: translate3d(180px, 0px, 0px);\n }\n\n .mobile-header-logo {\n display: inline-block;\n margin-right: 50px;\n\n .logo {\n font-size: 22px;\n line-height: $mobile-navbar-height;\n font-family: $logo-font-family;\n }\n }\n\n .mobile-navbar-icon {\n color: $theme-color;\n height: $mobile-navbar-height;\n width: $mobile-navbar-height;\n font-size: 24px;\n text-align: center;\n float: left;\n position: relative;\n transition: background 0.5s;\n\n @include mobile-menu-icon();\n }\n}\n\n.mobile-menu {\n background-color: rgba($deputy-color, 0.5);\n\n .mobile-menu-list {\n position: relative;\n list-style: none;\n margin-top: 50px;\n padding: 0;\n border-top: 1px solid $deputy-color;\n\n .mobile-menu-item {\n padding: 10px 30px;\n border-bottom: 1px solid $deputy-color;\n }\n\n a {\n font-size: 18px;\n font-family: $global-serif-font-family;\n\n &:hover {\n color: $theme-color;\n }\n }\n }\n}\n\n@include max-screen() {\n .mobile-navbar {\n display: block;\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./css/_partial/_mobile.scss","// ==============================\n// Back to top\n// =============================\n\n.back-to-top {\n display: none;\n position: fixed;\n right: 2em;\n bottom: 2em;\n transition-property: transform;\n transition-timing-function: ease-out;\n transition-duration: 0.3s;\n z-index: 10;\n\n &:hover {\n transform: translateY(-5px); \n }\n}\n\n@include max-screen() {\n .back-to-top {\n display: none !important;\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./css/_partial/_back-to-top.scss","// ==============================\n// Archive\n// =============================\n\n.not-found {\n text-align: center;\n\n .error-emoji {\n color: #363636;\n font-size: 3rem;\n }\n\n .error-text {\n color: #797979;\n font-size: 1.25rem;\n }\n\n .error-link {\n margin-top: 2rem;\n\n a {\n color: $theme-color;\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./css/_partial/_404.scss"],"sourceRoot":""} \ No newline at end of file
diff --git a/static/dist/jane.min.js b/static/dist/jane.min.js
index 9ce4a29..a823514 100644
--- a/static/dist/jane.min.js
+++ b/static/dist/jane.min.js
@@ -1,2 +1,2 @@
-!function(e){var t={};function n(o){if(t[o])return t[o].exports;var c=t[o]={i:o,l:!1,exports:{}};return e[o].call(c.exports,c,c.exports,n),c.l=!0,c.exports}n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:o})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){"use strict";n(1);var o=d(n(2)),c=d(n(3)),i=d(n(4)),a=d(n(5)),l=d(n(6)),r=d(n(7)),u=d(n(8));function d(e){return e&&e.__esModule?e:{default:e}}$(document).ready(function(){(0,o.default)(),(0,c.default)(),(0,i.default)(),(0,a.default)(),(0,l.default)(),(0,r.default)()}),(0,u.default)()},function(e,t){},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){var e=$("#back-to-top");$(window).scroll(function(){$(window).scrollTop()>100?e.fadeIn(1e3):e.fadeOut(1e3)}),e.click(function(){$("body,html").animate({scrollTop:0})})}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){var e=$("#mobile-navbar"),t=$(".mobile-navbar-icon"),n=new Slideout({panel:document.getElementById("mobile-panel"),menu:document.getElementById("mobile-menu"),padding:180,tolerance:70});n.disableTouch(),t.click(function(){n.toggle()}),n.on("beforeopen",function(){e.addClass("fixed-open"),t.addClass("icon-click").removeClass("icon-out")}),n.on("beforeclose",function(){e.removeClass("fixed-open"),t.addClass("icon-out").removeClass("icon-click")}),$("#mobile-panel").on("touchend",function(){n.isOpen()&&t.click()})}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){var e,t=document.getElementById("post-toc");null!==t&&(null===document.getElementById("TableOfContents")?t.parentNode.removeChild(t):(e=$("#post-toc")).length&&$(window).width()>=1080&&$(window).scroll(function(){$(window).scrollTop()>100?e.fadeIn(1e3):e.fadeOut(100)}))}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){var e=document.getElementsByClassName("post-content")[0];if(e)for(var t=1;t<=4;t++)o(t,e)};var o=function(e,t){for(var n,o,c=t.getElementsByTagName("h"+e),i=0;i<c.length;i++){var a=c[i];a.className="post-content-header",void 0!==a.id&&""!==a.id&&a.appendChild((n=a.id,o=void 0,(o=document.createElement("a")).className="header-link",o.href="#"+n,o.innerHTML='<svg viewBox="0 0 16 10" version="1.1" width="24" height="24"><path d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"/></svg>',o))}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){$(".footnote-ref").each(function(){var e=$(this).children("a").attr("href").substr(1),t=$(document.getElementById(e)).clone(),n=$("<span>",{class:"fn-content"}),o=$("<span>",{class:"fn-text"});t.find(".footnote-return").remove(),$(this).append(n.append(o.html(t.html())))});var e=function(){var e=$(".fn-content").removeAttr("style");$(window).width()<640?e.css("width",$(window).width()/2):e.css("width",340),e.each(function(){var e=$(this).children(".fn-text").outerWidth();$(this).css({width:e,"margin-left":e/-2})})};e(),$(window).resize(e())}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){$.fancybox&&($(".post-content").each(function(){$(this).find("img").each(function(){$(this).wrap('<a class="fancybox" href="'+this.src+'" data-fancybox="gallery" data-caption="'+this.title+'"></a>')})}),$(".fancybox").fancybox({selector:".fancybox",protect:!0}))}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){document.querySelectorAll(".chroma>table").forEach(function(e){var t,n=e.querySelector("code[data-lang]");e.setAttribute("data-lang",{coffeescript:"CoffeeScript",cpp:"C++",cs:"C#",css:"CSS",html:"HTML",http:"HTTP",js:"JavaScript",json:"JSON",objectivec:"Objective-C",php:"PHP",sql:"SQL",toml:"TOML",ts:"TypeScript",typescript:"TypeScript",xml:"XML",yaml:"YAML"}[t=n.getAttribute("data-lang")]||t)})}}]);
+!function(e){var t={};function n(o){if(t[o])return t[o].exports;var c=t[o]={i:o,l:!1,exports:{}};return e[o].call(c.exports,c,c.exports,n),c.l=!0,c.exports}n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:o})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){"use strict";n(1);var o=u(n(2)),c=u(n(3)),i=u(n(4)),l=u(n(5)),r=u(n(6)),a=u(n(7));function u(e){return e&&e.__esModule?e:{default:e}}$(document).ready(function(){(0,o.default)(),(0,c.default)(),(0,i.default)(),(0,l.default)(),(0,r.default)()}),(0,a.default)()},function(e,t){},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){var e=$("#back-to-top");$(window).scroll(function(){$(window).scrollTop()>100?e.fadeIn(1e3):e.fadeOut(1e3)}),e.click(function(){$("body,html").animate({scrollTop:0})})}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){var e=$("#mobile-navbar"),t=$(".mobile-navbar-icon"),n=new Slideout({panel:document.getElementById("mobile-panel"),menu:document.getElementById("mobile-menu"),padding:180,tolerance:70});n.disableTouch(),t.click(function(){n.toggle()}),n.on("beforeopen",function(){e.addClass("fixed-open"),t.addClass("icon-click").removeClass("icon-out")}),n.on("beforeclose",function(){e.removeClass("fixed-open"),t.addClass("icon-out").removeClass("icon-click")}),$("#mobile-panel").on("touchend",function(){n.isOpen()&&t.click()})}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){var e,t=document.getElementById("post-toc");null!==t&&(null===document.getElementById("TableOfContents")?t.parentNode.removeChild(t):(e=$("#post-toc")).length&&$(window).width()>=1080&&$(window).scroll(function(){$(window).scrollTop()>100?e.fadeIn(1e3):e.fadeOut(100)}))}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){var e=document.getElementsByClassName("post-content")[0];if(e)for(var t=1;t<=4;t++)o(t,e)};var o=function(e,t){for(var n,o,c=t.getElementsByTagName("h"+e),i=0;i<c.length;i++){var l=c[i];l.className="post-content-header",void 0!==l.id&&""!==l.id&&l.appendChild((n=l.id,o=void 0,(o=document.createElement("a")).className="header-link",o.href="#"+n,o.innerHTML='<svg viewBox="0 0 16 10" version="1.1" width="24" height="24"><path d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"/></svg>',o))}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){$(".footnote-ref").each(function(){var e=$(this).children("a").attr("href").substr(1),t=$(document.getElementById(e)).clone(),n=$("<span>",{class:"fn-content"}),o=$("<span>",{class:"fn-text"});t.find(".footnote-return").remove(),$(this).append(n.append(o.html(t.html())))});var e=function(){var e=$(".fn-content").removeAttr("style");$(window).width()<640?e.css("width",$(window).width()/2):e.css("width",340),e.each(function(){var e=$(this).children(".fn-text").outerWidth();$(this).css({width:e,"margin-left":e/-2})})};e(),$(window).resize(e())}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){document.querySelectorAll(".chroma>table").forEach(function(e){var t,n=e.querySelector("code[data-lang]");e.setAttribute("data-lang",{coffeescript:"CoffeeScript",cpp:"C++",cs:"C#",css:"CSS",html:"HTML",http:"HTTP",js:"JavaScript",json:"JSON",objectivec:"Objective-C",php:"PHP",sql:"SQL",toml:"TOML",ts:"TypeScript",typescript:"TypeScript",xml:"XML",yaml:"YAML"}[t=n.getAttribute("data-lang")]||t)})}}]);
//# sourceMappingURL=jane.min.js.map \ No newline at end of file
diff --git a/static/dist/jane.min.js.map b/static/dist/jane.min.js.map
index 9bc3ed5..bcc360f 100644
--- a/static/dist/jane.min.js.map
+++ b/static/dist/jane.min.js.map
@@ -1 +1 @@
-{"version":3,"sources":["webpack:///webpack/bootstrap d97c2b1df175c134cb38","webpack:///./js/main.js","webpack:///./js/backToTop.js","webpack:///./js/mobileNavbar.js","webpack:///./js/toc.js","webpack:///./js/headerAnchor.js","webpack:///./js/footnoteTooltip.js","webpack:///./js/fancybox.js","webpack:///./js/highlight.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","$","document","ready","_backToTop2","default","_mobileNavbar2","_toc2","_headerAnchor2","_footnoteTooltip2","_fancybox2","_highlight2","$backToTop","window","scroll","scrollTop","fadeIn","fadeOut","click","animate","$mobileNav","$mobileNavIcon","slideout","Slideout","panel","getElementById","menu","padding","tolerance","disableTouch","toggle","on","addClass","removeClass","isOpen","$toc","tocContainer","parentNode","removeChild","length","width","contentBlock","getElementsByClassName","level","linkifyAnchors","containingElement","id","anchor","headers","getElementsByTagName","h","header","className","appendChild","createElement","href","innerHTML","each","this","children","attr","substr","footnote","clone","outer_wrapper","class","inner_wrapper","find","remove","append","html","position","content","removeAttr","css","outerWidth","margin-left","resize","fancybox","wrap","src","title","selector","protect","querySelectorAll","forEach","element","sub","querySelector","setAttribute","coffeescript","cpp","cs","http","js","json","objectivec","php","sql","toml","ts","typescript","xml","yaml","getAttribute"],"mappings":"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","file":"jane.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap d97c2b1df175c134cb38","import '../css/style.scss';\n\nimport backToTop from './backToTop';\nimport mobileNavbar from './mobileNavbar';\nimport toc from './toc';\nimport headerAnchor from './headerAnchor';\nimport fnTooltip from './footnoteTooltip';\nimport fancybox from './fancybox';\nimport highlight from './highlight';\n\n\n$(document).ready(function () {\n backToTop();\n mobileNavbar();\n toc();\n headerAnchor();\n fnTooltip();\n fancybox();\n})\n\nhighlight();\n\n\n\n// WEBPACK FOOTER //\n// ./js/main.js","/**\n * back to top\n */\n\nexport default function () {\n const $backToTop = $('#back-to-top');\n\n $(window).scroll(function () {\n if ($(window).scrollTop() > 100) {\n $backToTop.fadeIn(1000);\n } else {\n $backToTop.fadeOut(1000);\n }\n })\n\n $backToTop.click(function () {\n $('body,html').animate({ scrollTop: 0 });\n })\n}\n\n\n\n// WEBPACK FOOTER //\n// ./js/backToTop.js","/**\n * mobile Navbar\n */\n\nexport default function () {\n const $mobileNav = $('#mobile-navbar');\n const $mobileNavIcon = $('.mobile-navbar-icon');\n const slideout = new Slideout({\n 'panel': document.getElementById('mobile-panel'),\n 'menu': document.getElementById('mobile-menu'),\n 'padding': 180,\n 'tolerance': 70\n })\n slideout.disableTouch()\n\n $mobileNavIcon.click(function () {\n slideout.toggle()\n })\n\n slideout.on('beforeopen', function () {\n $mobileNav.addClass('fixed-open')\n $mobileNavIcon.addClass('icon-click').removeClass('icon-out')\n })\n\n slideout.on('beforeclose', function () {\n $mobileNav.removeClass('fixed-open')\n $mobileNavIcon.addClass('icon-out').removeClass('icon-click')\n })\n\n $('#mobile-panel').on('touchend', function () {\n slideout.isOpen() && $mobileNavIcon.click()\n })\n}\n\n\n\n// WEBPACK FOOTER //\n// ./js/mobileNavbar.js","/**\n * Table of Content fix\n */\n\nfunction initToc() {\n const $toc = $('#post-toc');\n if ($toc.length && $(window).width() >= 1080) {\n $(window).scroll(function () {\n if ($(window).scrollTop() > 100) {\n $toc.fadeIn(1000);\n } else {\n $toc.fadeOut(100);\n }\n });\n }\n}\n\nexport default function () {\n const tocContainer = document.getElementById('post-toc');\n if (tocContainer !== null) {\n const toc = document.getElementById('TableOfContents');\n if (toc === null) {\n // if global config 'toc = true', but there are no headings\n tocContainer.parentNode.removeChild(tocContainer);\n } else {\n initToc();\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./js/toc.js","/**\n* Anchor for post content header\n**/\n\nvar anchorForId = function (id) {\n var anchor = document.createElement(\"a\");\n anchor.className = \"header-link\";\n anchor.href = \"#\" + id;\n anchor.innerHTML = '<svg viewBox=\"0 0 16 10\" version=\"1.1\" width=\"24\" height=\"24\"><path d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"/></svg>';\n return anchor;\n};\n\nvar linkifyAnchors = function (level, containingElement) {\n var headers = containingElement.getElementsByTagName(\"h\" + level);\n for (var h = 0; h < headers.length; h++) {\n var header = headers[h];\n header.className = \"post-content-header\";\n\n if (typeof header.id !== \"undefined\" && header.id !== \"\") {\n // insert header-link before the header\n header.appendChild(anchorForId(header.id));\n }\n }\n};\n\n\nexport default function () {\n var contentBlock = document.getElementsByClassName(\"post-content\")[0];\n if (!contentBlock) {\n return;\n }\n\n for (var level = 1; level <= 4; level++) {\n linkifyAnchors(level, contentBlock);\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./js/headerAnchor.js","/**\n * footnote tooltip\n */\n\nexport default function () {\n $(\".footnote-ref\").each(function () {\n var id = $(this).children(\"a\").attr(\"href\").substr(1),\n footnote = $(document.getElementById(id)).clone(),\n outer_wrapper = $(\"<span>\", { \"class\": \"fn-content\" }),\n inner_wrapper = $(\"<span>\", { \"class\": \"fn-text\" });\n footnote.find(\".footnote-return\").remove();\n $(this).append(outer_wrapper.append(inner_wrapper.html(footnote.html())));\n });\n\n // fix tooltip position & width\n var position = function () {\n var content = $(\".fn-content\").removeAttr(\"style\");\n if ($(window).width() < 640)\n content.css(\"width\", $(window).width() / 2);\n else\n content.css(\"width\", 340); // default value\n content.each(function () {\n var width = $(this).children(\".fn-text\").outerWidth();\n $(this).css({\n \"width\": width,\n \"margin-left\": width / -2\n });\n });\n }\n position();\n $(window).resize(position());\n}\n\n\n\n// WEBPACK FOOTER //\n// ./js/footnoteTooltip.js","/**\n * fancybox\n */\n\nexport default function () {\n if ($.fancybox) {\n $('.post-content').each(function () {\n $(this).find('img').each(function () {\n $(this).wrap(`<a class=\"fancybox\" href=\"${this.src}\" data-fancybox=\"gallery\" data-caption=\"${this.title}\"></a>`)\n })\n })\n\n $('.fancybox').fancybox({\n selector: '.fancybox',\n protect: true\n })\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./js/fancybox.js","/**\n * highlight\n */\n\nexport default function () {\n document.querySelectorAll('.chroma>table')\n .forEach((element) => {\n const sub = element.querySelector('code[data-lang]');\n element.setAttribute('data-lang', mapLang(sub.getAttribute('data-lang')));\n });\n}\n\nfunction mapLang(name) {\n return {\n coffeescript: 'CoffeeScript',\n cpp: 'C++',\n cs: 'C#',\n css: 'CSS',\n html: 'HTML',\n http: 'HTTP',\n js: 'JavaScript',\n json: 'JSON',\n objectivec: 'Objective-C',\n php: 'PHP',\n sql: 'SQL',\n toml: 'TOML',\n ts: 'TypeScript',\n typescript: 'TypeScript',\n xml: 'XML',\n yaml: 'YAML',\n }[name] || name;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./js/highlight.js"],"sourceRoot":""} \ No newline at end of file
+{"version":3,"sources":["webpack:///webpack/bootstrap 8dfea32b0569faa10e04","webpack:///./js/main.js","webpack:///./js/backToTop.js","webpack:///./js/mobileNavbar.js","webpack:///./js/toc.js","webpack:///./js/headerAnchor.js","webpack:///./js/footnoteTooltip.js","webpack:///./js/highlight.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","$","document","ready","_backToTop2","default","_mobileNavbar2","_toc2","_headerAnchor2","_footnoteTooltip2","_highlight2","$backToTop","window","scroll","scrollTop","fadeIn","fadeOut","click","animate","$mobileNav","$mobileNavIcon","slideout","Slideout","panel","getElementById","menu","padding","tolerance","disableTouch","toggle","on","addClass","removeClass","isOpen","$toc","tocContainer","parentNode","removeChild","length","width","contentBlock","getElementsByClassName","level","linkifyAnchors","containingElement","id","anchor","headers","getElementsByTagName","h","header","className","appendChild","createElement","href","innerHTML","each","this","children","attr","substr","footnote","clone","outer_wrapper","class","inner_wrapper","find","remove","append","html","position","content","removeAttr","css","outerWidth","margin-left","resize","querySelectorAll","forEach","element","sub","querySelector","setAttribute","coffeescript","cpp","cs","http","js","json","objectivec","php","sql","toml","ts","typescript","xml","yaml","getAttribute"],"mappings":"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","file":"jane.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 8dfea32b0569faa10e04","import '../css/style.scss';\n\nimport backToTop from './backToTop';\nimport mobileNavbar from './mobileNavbar';\nimport toc from './toc';\nimport headerAnchor from './headerAnchor';\nimport fnTooltip from './footnoteTooltip';\nimport highlight from './highlight';\n\n\n$(document).ready(function () {\n backToTop();\n mobileNavbar();\n toc();\n headerAnchor();\n fnTooltip();\n});\n\nhighlight();\n\n\n\n// WEBPACK FOOTER //\n// ./js/main.js","/**\n * back to top\n */\n\nexport default function () {\n const $backToTop = $('#back-to-top');\n\n $(window).scroll(function () {\n if ($(window).scrollTop() > 100) {\n $backToTop.fadeIn(1000);\n } else {\n $backToTop.fadeOut(1000);\n }\n })\n\n $backToTop.click(function () {\n $('body,html').animate({ scrollTop: 0 });\n })\n}\n\n\n\n// WEBPACK FOOTER //\n// ./js/backToTop.js","/**\n * mobile Navbar\n */\n\nexport default function () {\n const $mobileNav = $('#mobile-navbar');\n const $mobileNavIcon = $('.mobile-navbar-icon');\n const slideout = new Slideout({\n 'panel': document.getElementById('mobile-panel'),\n 'menu': document.getElementById('mobile-menu'),\n 'padding': 180,\n 'tolerance': 70\n })\n slideout.disableTouch()\n\n $mobileNavIcon.click(function () {\n slideout.toggle()\n })\n\n slideout.on('beforeopen', function () {\n $mobileNav.addClass('fixed-open')\n $mobileNavIcon.addClass('icon-click').removeClass('icon-out')\n })\n\n slideout.on('beforeclose', function () {\n $mobileNav.removeClass('fixed-open')\n $mobileNavIcon.addClass('icon-out').removeClass('icon-click')\n })\n\n $('#mobile-panel').on('touchend', function () {\n slideout.isOpen() && $mobileNavIcon.click()\n })\n}\n\n\n\n// WEBPACK FOOTER //\n// ./js/mobileNavbar.js","/**\n * Table of Content fix\n */\n\nfunction initToc() {\n const $toc = $('#post-toc');\n if ($toc.length && $(window).width() >= 1080) {\n $(window).scroll(function () {\n if ($(window).scrollTop() > 100) {\n $toc.fadeIn(1000);\n } else {\n $toc.fadeOut(100);\n }\n });\n }\n}\n\nexport default function () {\n const tocContainer = document.getElementById('post-toc');\n if (tocContainer !== null) {\n const toc = document.getElementById('TableOfContents');\n if (toc === null) {\n // if global config 'toc = true', but there are no headings\n tocContainer.parentNode.removeChild(tocContainer);\n } else {\n initToc();\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./js/toc.js","/**\n* Anchor for post content header\n**/\n\nvar anchorForId = function (id) {\n var anchor = document.createElement(\"a\");\n anchor.className = \"header-link\";\n anchor.href = \"#\" + id;\n anchor.innerHTML = '<svg viewBox=\"0 0 16 10\" version=\"1.1\" width=\"24\" height=\"24\"><path d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"/></svg>';\n return anchor;\n};\n\nvar linkifyAnchors = function (level, containingElement) {\n var headers = containingElement.getElementsByTagName(\"h\" + level);\n for (var h = 0; h < headers.length; h++) {\n var header = headers[h];\n header.className = \"post-content-header\";\n\n if (typeof header.id !== \"undefined\" && header.id !== \"\") {\n // insert header-link before the header\n header.appendChild(anchorForId(header.id));\n }\n }\n};\n\n\nexport default function () {\n var contentBlock = document.getElementsByClassName(\"post-content\")[0];\n if (!contentBlock) {\n return;\n }\n\n for (var level = 1; level <= 4; level++) {\n linkifyAnchors(level, contentBlock);\n }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./js/headerAnchor.js","/**\n * footnote tooltip\n */\n\nexport default function () {\n $(\".footnote-ref\").each(function () {\n var id = $(this).children(\"a\").attr(\"href\").substr(1),\n footnote = $(document.getElementById(id)).clone(),\n outer_wrapper = $(\"<span>\", { \"class\": \"fn-content\" }),\n inner_wrapper = $(\"<span>\", { \"class\": \"fn-text\" });\n footnote.find(\".footnote-return\").remove();\n $(this).append(outer_wrapper.append(inner_wrapper.html(footnote.html())));\n });\n\n // fix tooltip position & width\n var position = function () {\n var content = $(\".fn-content\").removeAttr(\"style\");\n if ($(window).width() < 640)\n content.css(\"width\", $(window).width() / 2);\n else\n content.css(\"width\", 340); // default value\n content.each(function () {\n var width = $(this).children(\".fn-text\").outerWidth();\n $(this).css({\n \"width\": width,\n \"margin-left\": width / -2\n });\n });\n }\n position();\n $(window).resize(position());\n}\n\n\n\n// WEBPACK FOOTER //\n// ./js/footnoteTooltip.js","/**\n * highlight\n */\n\nexport default function () {\n document.querySelectorAll('.chroma>table')\n .forEach((element) => {\n const sub = element.querySelector('code[data-lang]');\n element.setAttribute('data-lang', mapLang(sub.getAttribute('data-lang')));\n });\n}\n\nfunction mapLang(name) {\n return {\n coffeescript: 'CoffeeScript',\n cpp: 'C++',\n cs: 'C#',\n css: 'CSS',\n html: 'HTML',\n http: 'HTTP',\n js: 'JavaScript',\n json: 'JSON',\n objectivec: 'Objective-C',\n php: 'PHP',\n sql: 'SQL',\n toml: 'TOML',\n ts: 'TypeScript',\n typescript: 'TypeScript',\n xml: 'XML',\n yaml: 'YAML',\n }[name] || name;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./js/highlight.js"],"sourceRoot":""} \ No newline at end of file
diff --git a/static/js/load-photoswipe.js b/static/js/load-photoswipe.js
new file mode 100644
index 0000000..978c66d
--- /dev/null
+++ b/static/js/load-photoswipe.js
@@ -0,0 +1,80 @@
+/*
+Put this file in /static/js/load-photoswipe.js
+Documentation and licence at https://github.com/liwenyip/hugo-easy-gallery/
+*/
+
+/* Show an alert if this js file has been loaded twice */
+if (window.loadphotoswipejs) {
+ window.alert("You've loaded load-photoswipe.js twice. See https://github.com/liwenyip/hugo-easy-gallery/issues/6")
+}
+var loadphotoswipejs = 1
+
+/* TODO: Make the share function work */
+$( document ).ready(function() {
+ /*
+ Initialise Photoswipe
+ */
+ var items = []; // array of slide objects that will be passed to PhotoSwipe()
+ // for every figure element on the page:
+ $('figure').each( function() {
+ if ($(this).attr('class') == 'no-photoswipe') return true; // ignore any figures where class="no-photoswipe"
+ // get properties from child a/img/figcaption elements,
+ var $figure = $(this),
+ $a = $figure.find('a'),
+ $img = $figure.find('img'),
+ $src = $a.attr('href'),
+ $title = $img.attr('alt'),
+ $msrc = $img.attr('src');
+ // if data-size on <a> tag is set, read it and create an item
+ if ($a.data('size')) {
+ var $size = $a.data('size').split('x');
+ var item = {
+ src : $src,
+ w : $size[0],
+ h : $size[1],
+ title : $title,
+ msrc : $msrc
+ };
+ console.log("Using pre-defined dimensions for " + $src);
+ // if not, set temp default size then load the image to check actual size
+ } else {
+ var item = {
+ src : $src,
+ w : 800, // temp default size
+ h : 600, // temp default size
+ title : $title,
+ msrc : $msrc
+ };
+ console.log("Using default dimensions for " + $src);
+ // load the image to check its dimensions
+ // update the item as soon as w and h are known (check every 30ms)
+ var img = new Image();
+ img.src = $src;
+ var wait = setInterval(function() {
+ var w = img.naturalWidth,
+ h = img.naturalHeight;
+ if (w && h) {
+ clearInterval(wait);
+ item.w = w;
+ item.h = h;
+ console.log("Got actual dimensions for " + img.src);
+ }
+ }, 30);
+ }
+ // Save the index of this image then add it to the array
+ var index = items.length;
+ items.push(item);
+ // Event handler for click on a figure
+ $figure.on('click', function(event) {
+ event.preventDefault(); // prevent the normal behaviour i.e. load the <a> hyperlink
+ // Get the PSWP element and initialise it with the desired options
+ var $pswp = $('.pswp')[0];
+ var options = {
+ index: index,
+ bgOpacity: 0.8,
+ showHideOpacity: true
+ }
+ new PhotoSwipe($pswp, PhotoSwipeUI_Default, items, options).init();
+ });
+ });
+}); \ No newline at end of file
diff --git a/static/lib/fancybox/jquery.fancybox-3.1.20.min.css b/static/lib/fancybox/jquery.fancybox-3.1.20.min.css
deleted file mode 100644
index e88fae3..0000000
--- a/static/lib/fancybox/jquery.fancybox-3.1.20.min.css
+++ /dev/null
@@ -1 +0,0 @@
-@charset "UTF-8";.fancybox-enabled{overflow:hidden}.fancybox-enabled body{overflow:visible;height:100%}.fancybox-is-hidden{position:absolute;top:-9999px;left:-9999px;visibility:hidden}.fancybox-container{position:fixed;top:0;left:0;width:100%;height:100%;z-index:99993;-webkit-tap-highlight-color:transparent;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translateZ(0);transform:translateZ(0)}.fancybox-container~.fancybox-container{z-index:99992}.fancybox-bg,.fancybox-inner,.fancybox-outer,.fancybox-stage{position:absolute;top:0;right:0;bottom:0;left:0}.fancybox-outer{overflow-y:auto;-webkit-overflow-scrolling:touch}.fancybox-bg{background:#1e1e1e;opacity:0;transition-duration:inherit;transition-property:opacity;transition-timing-function:cubic-bezier(.47,0,.74,.71)}.fancybox-is-open .fancybox-bg{opacity:.87;transition-timing-function:cubic-bezier(.22,.61,.36,1)}.fancybox-caption-wrap,.fancybox-infobar,.fancybox-toolbar{position:absolute;direction:ltr;z-index:99997;opacity:0;visibility:hidden;transition:opacity .25s,visibility 0s linear .25s;box-sizing:border-box}.fancybox-show-caption .fancybox-caption-wrap,.fancybox-show-infobar .fancybox-infobar,.fancybox-show-toolbar .fancybox-toolbar{opacity:1;visibility:visible;transition:opacity .25s,visibility 0s}.fancybox-infobar{top:0;left:50%;margin-left:-79px}.fancybox-infobar__body{display:inline-block;width:70px;line-height:44px;font-size:13px;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;text-align:center;color:#ddd;background-color:rgba(30,30,30,.7);pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;-webkit-font-smoothing:subpixel-antialiased}.fancybox-toolbar{top:0;right:0}.fancybox-stage{overflow:hidden;direction:ltr;z-index:99994;-webkit-transform:translateZ(0)}.fancybox-slide{position:absolute;top:0;left:0;width:100%;height:100%;margin:0;padding:0;overflow:auto;outline:none;white-space:normal;box-sizing:border-box;text-align:center;z-index:99994;-webkit-overflow-scrolling:touch;display:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition-property:opacity,-webkit-transform;transition-property:transform,opacity;transition-property:transform,opacity,-webkit-transform;-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.fancybox-slide:before{content:"";display:inline-block;vertical-align:middle;height:100%;width:0}.fancybox-is-sliding .fancybox-slide,.fancybox-slide--current,.fancybox-slide--next,.fancybox-slide--previous{display:block}.fancybox-slide--image{overflow:visible}.fancybox-slide--image:before{display:none}.fancybox-slide--video .fancybox-content,.fancybox-slide--video iframe{background:#000}.fancybox-slide--map .fancybox-content,.fancybox-slide--map iframe{background:#e5e3df}.fancybox-slide--next{z-index:99995}.fancybox-slide>*{display:inline-block;position:relative;padding:24px;margin:44px 0;border-width:0;vertical-align:middle;text-align:left;background-color:#fff;overflow:auto;box-sizing:border-box}.fancybox-slide .fancybox-image-wrap{position:absolute;top:0;left:0;margin:0;padding:0;border:0;z-index:99995;background:transparent;cursor:default;overflow:visible;-webkit-transform-origin:top left;transform-origin:top left;background-size:100% 100%;background-repeat:no-repeat;-webkit-backface-visibility:hidden;backface-visibility:hidden}.fancybox-can-zoomOut .fancybox-image-wrap{cursor:zoom-out}.fancybox-can-zoomIn .fancybox-image-wrap{cursor:zoom-in}.fancybox-can-drag .fancybox-image-wrap{cursor:-webkit-grab;cursor:grab}.fancybox-is-dragging .fancybox-image-wrap{cursor:-webkit-grabbing;cursor:grabbing}.fancybox-image,.fancybox-spaceball{position:absolute;top:0;left:0;width:100%;height:100%;margin:0;padding:0;border:0;max-width:none;max-height:none}.fancybox-spaceball{z-index:1}.fancybox-slide--iframe .fancybox-content{padding:0;width:80%;height:80%;max-width:calc(100% - 100px);max-height:calc(100% - 88px);overflow:visible;background:#fff}.fancybox-iframe{display:block;padding:0;border:0;height:100%}.fancybox-error,.fancybox-iframe{margin:0;width:100%;background:#fff}.fancybox-error{padding:40px;max-width:380px;cursor:default}.fancybox-error p{margin:0;padding:0;color:#444;font:16px/20px Helvetica Neue,Helvetica,Arial,sans-serif}.fancybox-close-small{position:absolute;top:0;right:0;width:44px;height:44px;padding:0;margin:0;border:0;border-radius:0;outline:none;background:transparent;z-index:10;cursor:pointer}.fancybox-close-small:after{content:"×";position:absolute;top:5px;right:5px;width:30px;height:30px;font:20px/30px Arial,Helvetica Neue,Helvetica,sans-serif;color:#888;font-weight:300;text-align:center;border-radius:50%;border-width:0;background:#fff;transition:background .25s;box-sizing:border-box;z-index:2}.fancybox-close-small:focus:after{outline:1px dotted #888}.fancybox-close-small:hover:after{color:#555;background:#eee}.fancybox-slide--iframe .fancybox-close-small{top:0;right:-44px}.fancybox-slide--iframe .fancybox-close-small:after{background:transparent;font-size:35px;color:#aaa}.fancybox-slide--iframe .fancybox-close-small:hover:after{color:#fff}.fancybox-caption-wrap{bottom:0;left:0;right:0;padding:60px 30px 0;background:linear-gradient(180deg,transparent 0,rgba(0,0,0,.1) 20%,rgba(0,0,0,.2) 40%,rgba(0,0,0,.6) 80%,rgba(0,0,0,.8));pointer-events:none}.fancybox-caption{padding:30px 0;border-top:1px solid hsla(0,0%,100%,.4);font-size:14px;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;color:#fff;line-height:20px;-webkit-text-size-adjust:none}.fancybox-caption a,.fancybox-caption button,.fancybox-caption select{pointer-events:all}.fancybox-caption a{color:#fff;text-decoration:underline}.fancybox-button{display:inline-block;position:relative;margin:0;padding:0;border:0;width:44px;height:44px;line-height:44px;text-align:center;background:transparent;color:#ddd;border-radius:0;cursor:pointer;vertical-align:top;outline:none}.fancybox-button[disabled]{cursor:default;pointer-events:none}.fancybox-button,.fancybox-infobar__body{background:rgba(30,30,30,.6)}.fancybox-button:hover:not([disabled]){color:#fff;background:rgba(0,0,0,.8)}.fancybox-button:after,.fancybox-button:before{content:"";pointer-events:none;position:absolute;background-color:currentColor;color:currentColor;opacity:.9;box-sizing:border-box;display:inline-block}.fancybox-button[disabled]:after,.fancybox-button[disabled]:before{opacity:.3}.fancybox-button--left:after,.fancybox-button--right:after{top:18px;width:6px;height:6px;background:transparent;border-top:2px solid currentColor;border-right:2px solid currentColor}.fancybox-button--left:after{left:20px;-webkit-transform:rotate(-135deg);transform:rotate(-135deg)}.fancybox-button--right:after{right:20px;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.fancybox-button--left{border-bottom-left-radius:5px}.fancybox-button--right{border-bottom-right-radius:5px}.fancybox-button--close:after,.fancybox-button--close:before{content:"";display:inline-block;position:absolute;height:2px;width:16px;top:calc(50% - 1px);left:calc(50% - 8px)}.fancybox-button--close:before{-webkit-transform:rotate(45deg);transform:rotate(45deg)}.fancybox-button--close:after{-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.fancybox-arrow{position:absolute;top:50%;margin:-50px 0 0;height:100px;width:54px;padding:0;border:0;outline:none;background:none;cursor:pointer;z-index:99995;opacity:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;transition:opacity .25s}.fancybox-arrow:after{content:"";position:absolute;top:28px;width:44px;height:44px;background-color:rgba(30,30,30,.8);background-image:url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjQ4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSI0OCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIgNGwtMS40MSAxLjQxTDE2LjE3IDExSDR2MmgxMi4xN2wtNS41OCA1LjU5TDEyIDIwbDgtOHoiLz48L3N2Zz4=);background-repeat:no-repeat;background-position:50%;background-size:24px 24px}.fancybox-arrow--right{right:0}.fancybox-arrow--left{left:0;-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fancybox-arrow--left:after,.fancybox-arrow--right:after{left:0}.fancybox-show-nav .fancybox-arrow{opacity:.6}.fancybox-show-nav .fancybox-arrow[disabled]{opacity:.3}.fancybox-loading{border:6px solid hsla(0,0%,39%,.4);border-top:6px solid hsla(0,0%,100%,.6);border-radius:100%;height:50px;width:50px;-webkit-animation:a .8s infinite linear;animation:a .8s infinite linear;background:transparent;position:absolute;top:50%;left:50%;margin-top:-25px;margin-left:-25px;z-index:99999}@-webkit-keyframes a{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes a{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fancybox-animated{transition-timing-function:cubic-bezier(0,0,.25,1)}.fancybox-fx-slide.fancybox-slide--previous{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);opacity:0}.fancybox-fx-slide.fancybox-slide--next{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);opacity:0}.fancybox-fx-slide.fancybox-slide--current{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}.fancybox-fx-fade.fancybox-slide--next,.fancybox-fx-fade.fancybox-slide--previous{opacity:0;transition-timing-function:cubic-bezier(.19,1,.22,1)}.fancybox-fx-fade.fancybox-slide--current{opacity:1}.fancybox-fx-zoom-in-out.fancybox-slide--previous{-webkit-transform:scale3d(1.5,1.5,1.5);transform:scale3d(1.5,1.5,1.5);opacity:0}.fancybox-fx-zoom-in-out.fancybox-slide--next{-webkit-transform:scale3d(.5,.5,.5);transform:scale3d(.5,.5,.5);opacity:0}.fancybox-fx-zoom-in-out.fancybox-slide--current{-webkit-transform:scaleX(1);transform:scaleX(1);opacity:1}.fancybox-fx-rotate.fancybox-slide--previous{-webkit-transform:rotate(-1turn);transform:rotate(-1turn);opacity:0}.fancybox-fx-rotate.fancybox-slide--next{-webkit-transform:rotate(1turn);transform:rotate(1turn);opacity:0}.fancybox-fx-rotate.fancybox-slide--current{-webkit-transform:rotate(0deg);transform:rotate(0deg);opacity:1}.fancybox-fx-circular.fancybox-slide--previous{-webkit-transform:scale3d(0,0,0) translate3d(-100%,0,0);transform:scale3d(0,0,0) translate3d(-100%,0,0);opacity:0}.fancybox-fx-circular.fancybox-slide--next{-webkit-transform:scale3d(0,0,0) translate3d(100%,0,0);transform:scale3d(0,0,0) translate3d(100%,0,0);opacity:0}.fancybox-fx-circular.fancybox-slide--current{-webkit-transform:scaleX(1) translateZ(0);transform:scaleX(1) translateZ(0);opacity:1}.fancybox-fx-tube.fancybox-slide--previous{-webkit-transform:translate3d(-100%,0,0) scale(.1) skew(-10deg);transform:translate3d(-100%,0,0) scale(.1) skew(-10deg)}.fancybox-fx-tube.fancybox-slide--next{-webkit-transform:translate3d(100%,0,0) scale(.1) skew(10deg);transform:translate3d(100%,0,0) scale(.1) skew(10deg)}.fancybox-fx-tube.fancybox-slide--current{-webkit-transform:translateZ(0) scale(1);transform:translateZ(0) scale(1)}@media (max-width:800px){.fancybox-infobar{left:0;margin-left:0}.fancybox-button--left,.fancybox-button--right{display:none!important}.fancybox-caption{padding:20px 0;margin:0}}.fancybox-button--fullscreen:before{width:15px;height:11px;left:calc(50% - 7px);top:calc(50% - 6px);border:2px solid;background:none}.fancybox-button--pause:before,.fancybox-button--play:before{top:calc(50% - 6px);left:calc(50% - 4px);background:transparent}.fancybox-button--play:before{width:0;height:0;border-top:6px inset transparent;border-bottom:6px inset transparent;border-left:10px solid;border-radius:1px}.fancybox-button--pause:before{width:7px;height:11px;border-style:solid;border-width:0 2px}.fancybox-button--thumbs,.fancybox-thumbs{display:none}@media (min-width:800px){.fancybox-button--thumbs{display:inline-block}.fancybox-button--thumbs span{font-size:23px}.fancybox-button--thumbs:before{width:3px;height:3px;top:calc(50% - 2px);left:calc(50% - 2px);box-shadow:0 -4px 0,-4px -4px 0,4px -4px 0,inset 0 0 0 32px,-4px 0 0,4px 0 0,0 4px 0,-4px 4px 0,4px 4px 0}.fancybox-thumbs{position:absolute;top:0;right:0;bottom:0;left:auto;width:220px;margin:0;padding:5px 5px 0 0;background:#fff;word-break:normal;-webkit-tap-highlight-color:transparent;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar;box-sizing:border-box;z-index:99995}.fancybox-show-thumbs .fancybox-thumbs{display:block}.fancybox-show-thumbs .fancybox-inner{right:220px}.fancybox-thumbs>ul{list-style:none;position:absolute;position:relative;width:100%;height:100%;margin:0;padding:0;overflow-x:hidden;overflow-y:auto;font-size:0}.fancybox-thumbs>ul>li{float:left;overflow:hidden;max-width:50%;padding:0;margin:0;width:105px;height:75px;position:relative;cursor:pointer;outline:none;border:5px solid transparent;border-top-width:0;border-right-width:0;-webkit-tap-highlight-color:transparent;-webkit-backface-visibility:hidden;backface-visibility:hidden;box-sizing:border-box}li.fancybox-thumbs-loading{background:rgba(0,0,0,.1)}.fancybox-thumbs>ul>li>img{position:absolute;top:0;left:0;min-width:100%;min-height:100%;max-width:none;max-height:none;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.fancybox-thumbs>ul>li:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:2px;border:4px solid #4ea7f9;z-index:99991;opacity:0;transition:all .2s cubic-bezier(.25,.46,.45,.94)}.fancybox-thumbs>ul>li.fancybox-thumbs-active:before{opacity:1}} \ No newline at end of file
diff --git a/static/lib/fancybox/jquery.fancybox-3.1.20.min.js b/static/lib/fancybox/jquery.fancybox-3.1.20.min.js
deleted file mode 100644
index e5e20f0..0000000
--- a/static/lib/fancybox/jquery.fancybox-3.1.20.min.js
+++ /dev/null
@@ -1,12 +0,0 @@
-// ==================================================
-// fancyBox v3.1.20
-//
-// Licensed GPLv3 for open source use
-// or fancyBox Commercial License for commercial use
-//
-// http://fancyapps.com/fancybox/
-// Copyright 2017 fancyApps
-//
-// ==================================================
-!function(t,e,n,o){"use strict";function i(t){var e=t.currentTarget,o=t.data?t.data.options:{},i=t.data?t.data.items:[],a=n(e).attr("data-fancybox")||"",s=0;t.preventDefault(),t.stopPropagation(),a?(i=i.length?i.filter('[data-fancybox="'+a+'"]'):n('[data-fancybox="'+a+'"]'),s=i.index(e),s<0&&(s=0)):i=[e],n.fancybox.open(i,o,s)}if(n){if(n.fn.fancybox)return void n.error("fancyBox already initialized");var a={loop:!1,margin:[44,0],gutter:50,keyboard:!0,arrows:!0,infobar:!1,toolbar:!0,buttons:["slideShow","fullScreen","thumbs","close"],idleTime:4,smallBtn:"auto",protect:!1,modal:!1,image:{preload:"auto"},ajax:{settings:{data:{fancybox:!0}}},iframe:{tpl:'<iframe id="fancybox-frame{rnd}" name="fancybox-frame{rnd}" class="fancybox-iframe" frameborder="0" vspace="0" hspace="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen allowtransparency="true" src=""></iframe>',preload:!0,css:{},attr:{scrolling:"auto"}},animationEffect:"zoom",animationDuration:366,zoomOpacity:"auto",transitionEffect:"fade",transitionDuration:366,slideClass:"",baseClass:"",baseTpl:'<div class="fancybox-container" role="dialog" tabindex="-1"><div class="fancybox-bg"></div><div class="fancybox-inner"><div class="fancybox-infobar"><button data-fancybox-prev title="{{PREV}}" class="fancybox-button fancybox-button--left"></button><div class="fancybox-infobar__body"><span data-fancybox-index></span>&nbsp;/&nbsp;<span data-fancybox-count></span></div><button data-fancybox-next title="{{NEXT}}" class="fancybox-button fancybox-button--right"></button></div><div class="fancybox-toolbar">{{BUTTONS}}</div><div class="fancybox-navigation"><button data-fancybox-prev title="{{PREV}}" class="fancybox-arrow fancybox-arrow--left" /><button data-fancybox-next title="{{NEXT}}" class="fancybox-arrow fancybox-arrow--right" /></div><div class="fancybox-stage"></div><div class="fancybox-caption-wrap"><div class="fancybox-caption"></div></div></div></div>',spinnerTpl:'<div class="fancybox-loading"></div>',errorTpl:'<div class="fancybox-error"><p>{{ERROR}}<p></div>',btnTpl:{slideShow:'<button data-fancybox-play class="fancybox-button fancybox-button--play" title="{{PLAY_START}}"></button>',fullScreen:'<button data-fancybox-fullscreen class="fancybox-button fancybox-button--fullscreen" title="{{FULL_SCREEN}}"></button>',thumbs:'<button data-fancybox-thumbs class="fancybox-button fancybox-button--thumbs" title="{{THUMBS}}"></button>',close:'<button data-fancybox-close class="fancybox-button fancybox-button--close" title="{{CLOSE}}"></button>',smallBtn:'<button data-fancybox-close class="fancybox-close-small" title="{{CLOSE}}"></button>'},parentEl:"body",autoFocus:!0,backFocus:!0,trapFocus:!0,fullScreen:{autoStart:!1},touch:{vertical:!0,momentum:!0},hash:null,media:{},slideShow:{autoStart:!1,speed:4e3},thumbs:{autoStart:!1,hideOnClose:!0},onInit:n.noop,beforeLoad:n.noop,afterLoad:n.noop,beforeShow:n.noop,afterShow:n.noop,beforeClose:n.noop,afterClose:n.noop,onActivate:n.noop,onDeactivate:n.noop,clickContent:function(t,e){return"image"===t.type&&"zoom"},clickSlide:"close",clickOutside:"close",dblclickContent:!1,dblclickSlide:!1,dblclickOutside:!1,mobile:{clickContent:function(t,e){return"image"===t.type&&"toggleControls"},clickSlide:function(t,e){return"image"===t.type?"toggleControls":"close"},dblclickContent:function(t,e){return"image"===t.type&&"zoom"},dblclickSlide:function(t,e){return"image"===t.type&&"zoom"}},lang:"en",i18n:{en:{CLOSE:"Close",NEXT:"Next",PREV:"Previous",ERROR:"The requested content cannot be loaded. <br/> Please try again later.",PLAY_START:"Start slideshow",PLAY_STOP:"Pause slideshow",FULL_SCREEN:"Full screen",THUMBS:"Thumbnails"},de:{CLOSE:"Schliessen",NEXT:"Weiter",PREV:"Zurück",ERROR:"Die angeforderten Daten konnten nicht geladen werden. <br/> Bitte versuchen Sie es später nochmal.",PLAY_START:"Diaschau starten",PLAY_STOP:"Diaschau beenden",FULL_SCREEN:"Vollbild",THUMBS:"Vorschaubilder"}}},s=n(t),r=n(e),c=0,l=function(t){return t&&t.hasOwnProperty&&t instanceof n},u=function(){return t.requestAnimationFrame||t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||t.oRequestAnimationFrame||function(e){return t.setTimeout(e,1e3/60)}}(),d=function(){var t,n=e.createElement("fakeelement"),i={transition:"transitionend",OTransition:"oTransitionEnd",MozTransition:"transitionend",WebkitTransition:"webkitTransitionEnd"};for(t in i)if(n.style[t]!==o)return i[t]}(),f=function(t){return t&&t.length&&t[0].offsetHeight},h=function(t,o,i){var s=this;s.opts=n.extend(!0,{index:i},a,o||{}),o&&n.isArray(o.buttons)&&(s.opts.buttons=o.buttons),s.id=s.opts.id||++c,s.group=[],s.currIndex=parseInt(s.opts.index,10)||0,s.prevIndex=null,s.prevPos=null,s.currPos=0,s.firstRun=null,s.createGroup(t),s.group.length&&(s.$lastFocus=n(e.activeElement).blur(),s.slides={},s.init(t))};n.extend(h.prototype,{init:function(){var t,e,o,i=this,a=i.group[i.currIndex].opts;i.scrollTop=r.scrollTop(),i.scrollLeft=r.scrollLeft(),n.fancybox.getInstance()||n.fancybox.isMobile||"hidden"===n("body").css("overflow")||(t=n("body").width(),n("html").addClass("fancybox-enabled"),t=n("body").width()-t,t>1&&n("head").append('<style id="fancybox-style-noscroll" type="text/css">.compensate-for-scrollbar, .fancybox-enabled body { margin-right: '+t+"px; }</style>")),o="",n.each(a.buttons,function(t,e){o+=a.btnTpl[e]||""}),e=n(i.translate(i,a.baseTpl.replace("{{BUTTONS}}",o))).addClass("fancybox-is-hidden").attr("id","fancybox-container-"+i.id).addClass(a.baseClass).data("FancyBox",i).prependTo(a.parentEl),i.$refs={container:e},["bg","inner","infobar","toolbar","stage","caption"].forEach(function(t){i.$refs[t]=e.find(".fancybox-"+t)}),(!a.arrows||i.group.length<2)&&e.find(".fancybox-navigation").remove(),a.infobar||i.$refs.infobar.remove(),a.toolbar||i.$refs.toolbar.remove(),i.trigger("onInit"),i.activate(),i.jumpTo(i.currIndex)},translate:function(t,e){var n=t.opts.i18n[t.opts.lang];return e.replace(/\{\{(\w+)\}\}/g,function(t,e){var i=n[e];return i===o?t:i})},createGroup:function(t){var e=this,i=n.makeArray(t);n.each(i,function(t,i){var a,s,r,c,l={},u={},d=[];n.isPlainObject(i)?(l=i,u=i.opts||i):"object"===n.type(i)&&n(i).length?(a=n(i),d=a.data(),u="options"in d?d.options:{},u="object"===n.type(u)?u:{},l.src="src"in d?d.src:u.src||a.attr("href"),["width","height","thumb","type","filter"].forEach(function(t){t in d&&(u[t]=d[t])}),"srcset"in d&&(u.image={srcset:d.srcset}),u.$orig=a,l.type||l.src||(l.type="inline",l.src=i)):l={type:"html",src:i+""},l.opts=n.extend(!0,{},e.opts,u),n.fancybox.isMobile&&(l.opts=n.extend(!0,{},l.opts,l.opts.mobile)),s=l.type||l.opts.type,r=l.src||"",!s&&r&&(r.match(/(^data:image\/[a-z0-9+\/=]*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg|ico)((\?|#).*)?$)/i)?s="image":r.match(/\.(pdf)((\?|#).*)?$/i)?s="pdf":"#"===r.charAt(0)&&(s="inline")),l.type=s,l.index=e.group.length,l.opts.$orig&&!l.opts.$orig.length&&delete l.opts.$orig,!l.opts.$thumb&&l.opts.$orig&&(l.opts.$thumb=l.opts.$orig.find("img:first")),l.opts.$thumb&&!l.opts.$thumb.length&&delete l.opts.$thumb,"function"===n.type(l.opts.caption)?l.opts.caption=l.opts.caption.apply(i,[e,l]):"caption"in d&&(l.opts.caption=d.caption),l.opts.caption=l.opts.caption===o?"":l.opts.caption+"","ajax"===s&&(c=r.split(/\s+/,2),c.length>1&&(l.src=c.shift(),l.opts.filter=c.shift())),"auto"==l.opts.smallBtn&&(n.inArray(s,["html","inline","ajax"])>-1?(l.opts.toolbar=!1,l.opts.smallBtn=!0):l.opts.smallBtn=!1),"pdf"===s&&(l.type="iframe",l.opts.iframe.preload=!1),l.opts.modal&&(l.opts=n.extend(!0,l.opts,{infobar:0,toolbar:0,smallBtn:0,keyboard:0,slideShow:0,fullScreen:0,thumbs:0,touch:0,clickContent:!1,clickSlide:!1,clickOutside:!1,dblclickContent:!1,dblclickSlide:!1,dblclickOutside:!1})),e.group.push(l)})},addEvents:function(){var o=this;o.removeEvents(),o.$refs.container.on("click.fb-close","[data-fancybox-close]",function(t){t.stopPropagation(),t.preventDefault(),o.close(t)}).on("click.fb-prev touchend.fb-prev","[data-fancybox-prev]",function(t){t.stopPropagation(),t.preventDefault(),o.previous()}).on("click.fb-next touchend.fb-next","[data-fancybox-next]",function(t){t.stopPropagation(),t.preventDefault(),o.next()}),s.on("orientationchange.fb resize.fb",function(t){t&&t.originalEvent&&"resize"===t.originalEvent.type?u(function(){o.update()}):(o.$refs.stage.hide(),setTimeout(function(){o.$refs.stage.show(),o.update()},500))}),r.on("focusin.fb",function(t){var i=n.fancybox?n.fancybox.getInstance():null;i.isClosing||!i.current||!i.current.opts.trapFocus||n(t.target).hasClass("fancybox-container")||n(t.target).is(e)||i&&"fixed"!==n(t.target).css("position")&&!i.$refs.container.has(t.target).length&&(t.stopPropagation(),i.focus(),s.scrollTop(o.scrollTop).scrollLeft(o.scrollLeft))}),r.on("keydown.fb",function(t){var e=o.current,i=t.keyCode||t.which;if(e&&e.opts.keyboard&&!n(t.target).is("input")&&!n(t.target).is("textarea"))return 8===i||27===i?(t.preventDefault(),void o.close(t)):37===i||38===i?(t.preventDefault(),void o.previous()):39===i||40===i?(t.preventDefault(),void o.next()):void o.trigger("afterKeydown",t,i)}),o.group[o.currIndex].opts.idleTime&&(o.idleSecondsCounter=0,r.on("mousemove.fb-idle mouseenter.fb-idle mouseleave.fb-idle mousedown.fb-idle touchstart.fb-idle touchmove.fb-idle scroll.fb-idle keydown.fb-idle",function(){o.idleSecondsCounter=0,o.isIdle&&o.showControls(),o.isIdle=!1}),o.idleInterval=t.setInterval(function(){o.idleSecondsCounter++,o.idleSecondsCounter>=o.group[o.currIndex].opts.idleTime&&(o.isIdle=!0,o.idleSecondsCounter=0,o.hideControls())},1e3))},removeEvents:function(){var e=this;s.off("orientationchange.fb resize.fb"),r.off("focusin.fb keydown.fb .fb-idle"),this.$refs.container.off(".fb-close .fb-prev .fb-next"),e.idleInterval&&(t.clearInterval(e.idleInterval),e.idleInterval=null)},previous:function(t){return this.jumpTo(this.currPos-1,t)},next:function(t){return this.jumpTo(this.currPos+1,t)},jumpTo:function(t,e,i){var a,s,r,c,l,u,d,h=this,p=h.group.length;if(!(h.isSliding||h.isClosing||h.isAnimating&&h.firstRun)){if(t=parseInt(t,10),s=h.current?h.current.opts.loop:h.opts.loop,!s&&(t<0||t>=p))return!1;if(a=h.firstRun=null===h.firstRun,!(p<2&&!a&&h.isSliding)){if(c=h.current,h.prevIndex=h.currIndex,h.prevPos=h.currPos,r=h.createSlide(t),p>1&&((s||r.index>0)&&h.createSlide(t-1),(s||r.index<p-1)&&h.createSlide(t+1)),h.current=r,h.currIndex=r.index,h.currPos=r.pos,h.trigger("beforeShow",a),h.updateControls(),u=n.fancybox.getTranslate(r.$slide),r.isMoved=(0!==u.left||0!==u.top)&&!r.$slide.hasClass("fancybox-animated"),r.forcedDuration=o,n.isNumeric(e)?r.forcedDuration=e:e=r.opts[a?"animationDuration":"transitionDuration"],e=parseInt(e,10),a)return r.opts.animationEffect&&e&&h.$refs.container.css("transition-duration",e+"ms"),h.$refs.container.removeClass("fancybox-is-hidden"),f(h.$refs.container),h.$refs.container.addClass("fancybox-is-open"),r.$slide.addClass("fancybox-slide--current"),h.loadSlide(r),void h.preload();n.each(h.slides,function(t,e){n.fancybox.stop(e.$slide)}),r.$slide.removeClass("fancybox-slide--next fancybox-slide--previous").addClass("fancybox-slide--current"),r.isMoved?(l=Math.round(r.$slide.width()),n.each(h.slides,function(t,o){var i=o.pos-r.pos;n.fancybox.animate(o.$slide,{top:0,left:i*l+i*o.opts.gutter},e,function(){o.$slide.removeAttr("style").removeClass("fancybox-slide--next fancybox-slide--previous"),o.pos===h.currPos&&(r.isMoved=!1,h.complete())})})):h.$refs.stage.children().removeAttr("style"),r.isLoaded?h.revealContent(r):h.loadSlide(r),h.preload(),c.pos!==r.pos&&(d="fancybox-slide--"+(c.pos>r.pos?"next":"previous"),c.$slide.removeClass("fancybox-slide--complete fancybox-slide--current fancybox-slide--next fancybox-slide--previous"),c.isComplete=!1,e&&(r.isMoved||r.opts.transitionEffect)&&(r.isMoved?c.$slide.addClass(d):(d="fancybox-animated "+d+" fancybox-fx-"+r.opts.transitionEffect,n.fancybox.animate(c.$slide,d,e,function(){c.$slide.removeClass(d).removeAttr("style")}))))}}},createSlide:function(t){var e,o,i=this;return o=t%i.group.length,o=o<0?i.group.length+o:o,!i.slides[t]&&i.group[o]&&(e=n('<div class="fancybox-slide"></div>').appendTo(i.$refs.stage),i.slides[t]=n.extend(!0,{},i.group[o],{pos:t,$slide:e,isLoaded:!1}),i.updateSlide(i.slides[t])),i.slides[t]},scaleToActual:function(t,e,i){var a,s,r,c,l,u=this,d=u.current,f=d.$content,h=parseInt(d.$slide.width(),10),p=parseInt(d.$slide.height(),10),g=d.width,b=d.height;"image"!=d.type||d.hasError||!f||u.isAnimating||(n.fancybox.stop(f),u.isAnimating=!0,t=t===o?.5*h:t,e=e===o?.5*p:e,a=n.fancybox.getTranslate(f),c=g/a.width,l=b/a.height,s=.5*h-.5*g,r=.5*p-.5*b,g>h&&(s=a.left*c-(t*c-t),s>0&&(s=0),s<h-g&&(s=h-g)),b>p&&(r=a.top*l-(e*l-e),r>0&&(r=0),r<p-b&&(r=p-b)),u.updateCursor(g,b),n.fancybox.animate(f,{top:r,left:s,scaleX:c,scaleY:l},i||330,function(){u.isAnimating=!1}),u.SlideShow&&u.SlideShow.isActive&&u.SlideShow.stop())},scaleToFit:function(t){var e,o=this,i=o.current,a=i.$content;"image"!=i.type||i.hasError||!a||o.isAnimating||(n.fancybox.stop(a),o.isAnimating=!0,e=o.getFitPos(i),o.updateCursor(e.width,e.height),n.fancybox.animate(a,{top:e.top,left:e.left,scaleX:e.width/a.width(),scaleY:e.height/a.height()},t||330,function(){o.isAnimating=!1}))},getFitPos:function(t){var e,o,i,a,r,c=this,l=t.$content,u=t.width,d=t.height,f=t.opts.margin;return!(!l||!l.length||!u&&!d)&&("number"===n.type(f)&&(f=[f,f]),2==f.length&&(f=[f[0],f[1],f[0],f[1]]),s.width()<800&&(f=[0,0,0,0]),e=parseInt(c.$refs.stage.width(),10)-(f[1]+f[3]),o=parseInt(c.$refs.stage.height(),10)-(f[0]+f[2]),i=Math.min(1,e/u,o/d),a=Math.floor(i*u),r=Math.floor(i*d),{top:Math.floor(.5*(o-r))+f[0],left:Math.floor(.5*(e-a))+f[3],width:a,height:r})},update:function(){var t=this;n.each(t.slides,function(e,n){t.updateSlide(n)})},updateSlide:function(t){var e=this,o=t.$content;o&&(t.width||t.height)&&(n.fancybox.stop(o),n.fancybox.setTranslate(o,e.getFitPos(t)),t.pos===e.currPos&&e.updateCursor()),t.$slide.trigger("refresh"),e.trigger("onUpdate",t)},updateCursor:function(t,e){var n,i=this,a=i.$refs.container.removeClass("fancybox-is-zoomable fancybox-can-zoomIn fancybox-can-drag fancybox-can-zoomOut");i.current&&!i.isClosing&&(i.isZoomable()?(a.addClass("fancybox-is-zoomable"),n=t!==o&&e!==o?t<i.current.width&&e<i.current.height:i.isScaledDown(),n?a.addClass("fancybox-can-zoomIn"):i.current.opts.touch?a.addClass("fancybox-can-drag"):a.addClass("fancybox-can-zoomOut")):i.current.opts.touch&&a.addClass("fancybox-can-drag"))},isZoomable:function(){var t,e=this,o=e.current;if(o&&!e.isClosing)return!!("image"===o.type&&o.isLoaded&&!o.hasError&&("zoom"===o.opts.clickContent||n.isFunction(o.opts.clickContent)&&"zoom"===o.opts.clickContent(o))&&(t=e.getFitPos(o),o.width>t.width||o.height>t.height))},isScaledDown:function(){var t=this,e=t.current,o=e.$content,i=!1;return o&&(i=n.fancybox.getTranslate(o),i=i.width<e.width||i.height<e.height),i},canPan:function(){var t=this,e=t.current,n=e.$content,o=!1;return n&&(o=t.getFitPos(e),o=Math.abs(n.width()-o.width)>1||Math.abs(n.height()-o.height)>1),o},loadSlide:function(t){var e,o,i,a=this;if(!t.isLoading&&!t.isLoaded){switch(t.isLoading=!0,a.trigger("beforeLoad",t),e=t.type,o=t.$slide,o.off("refresh").trigger("onReset").addClass("fancybox-slide--"+(e||"unknown")).addClass(t.opts.slideClass),e){case"image":a.setImage(t);break;case"iframe":a.setIframe(t);break;case"html":a.setContent(t,t.src||t.content);break;case"inline":n(t.src).length?a.setContent(t,n(t.src)):a.setError(t);break;case"ajax":a.showLoading(t),i=n.ajax(n.extend({},t.opts.ajax.settings,{url:t.src,success:function(e,n){"success"===n&&a.setContent(t,e)},error:function(e,n){e&&"abort"!==n&&a.setError(t)}})),o.one("onReset",function(){i.abort()});break;default:a.setError(t)}return!0}},setImage:function(e){var o,i,a,s,r=this,c=e.opts.image.srcset;if(c){a=t.devicePixelRatio||1,s=t.innerWidth*a,i=c.split(",").map(function(t){var e={};return t.trim().split(/\s+/).forEach(function(t,n){var o=parseInt(t.substring(0,t.length-1),10);return 0===n?e.url=t:void(o&&(e.value=o,e.postfix=t[t.length-1]))}),e}),i.sort(function(t,e){return t.value-e.value});for(var l=0;l<i.length;l++){var u=i[l];if("w"===u.postfix&&u.value>=s||"x"===u.postfix&&u.value>=a){o=u;break}}!o&&i.length&&(o=i[i.length-1]),o&&(e.src=o.url,e.width&&e.height&&"w"==o.postfix&&(e.height=e.width/e.height*o.value,e.width=o.value))}e.$content=n('<div class="fancybox-image-wrap"></div>').addClass("fancybox-is-hidden").appendTo(e.$slide),e.opts.preload!==!1&&e.opts.width&&e.opts.height&&(e.opts.thumb||e.opts.$thumb)?(e.width=e.opts.width,e.height=e.opts.height,e.$ghost=n("<img />").one("error",function(){n(this).remove(),e.$ghost=null,r.setBigImage(e)}).one("load",function(){r.afterLoad(e),r.setBigImage(e)}).addClass("fancybox-image").appendTo(e.$content).attr("src",e.opts.thumb||e.opts.$thumb.attr("src"))):r.setBigImage(e)},setBigImage:function(t){var e=this,o=n("<img />");t.$image=o.one("error",function(){e.setError(t)}).one("load",function(){clearTimeout(t.timouts),t.timouts=null,e.isClosing||(t.width=this.naturalWidth,t.height=this.naturalHeight,t.opts.image.srcset&&o.attr("sizes","100vw").attr("srcset",t.opts.image.srcset),e.hideLoading(t),t.$ghost?t.timouts=setTimeout(function(){t.timouts=null,t.$ghost.hide()},Math.min(300,Math.max(1e3,t.height/1600))):e.afterLoad(t))}).addClass("fancybox-image").attr("src",t.src).appendTo(t.$content),o[0].complete?o.trigger("load"):o[0].error?o.trigger("error"):t.timouts=setTimeout(function(){o[0].complete||t.hasError||e.showLoading(t)},100)},setIframe:function(t){var e,i=this,a=t.opts.iframe,s=t.$slide;t.$content=n('<div class="fancybox-content'+(a.preload?" fancybox-is-hidden":"")+'"></div>').css(a.css).appendTo(s),e=n(a.tpl.replace(/\{rnd\}/g,(new Date).getTime())).attr(a.attr).appendTo(t.$content),a.preload?(i.showLoading(t),e.on("load.fb error.fb",function(e){this.isReady=1,t.$slide.trigger("refresh"),i.afterLoad(t)}),s.on("refresh.fb",function(){var n,i,s,r,c,l=t.$content;if(1===e[0].isReady){try{n=e.contents(),i=n.find("body")}catch(t){}i&&i.length&&(a.css.width===o||a.css.height===o)&&(s=e[0].contentWindow.document.documentElement.scrollWidth,r=Math.ceil(i.outerWidth(!0)+(l.width()-s)),c=Math.ceil(i.outerHeight(!0)),l.css({width:a.css.width===o?r+(l.outerWidth()-l.innerWidth()):a.css.width,height:a.css.height===o?c+(l.outerHeight()-l.innerHeight()):a.css.height})),l.removeClass("fancybox-is-hidden")}})):this.afterLoad(t),e.attr("src",t.src),t.opts.smallBtn===!0&&t.$content.prepend(i.translate(t,t.opts.btnTpl.smallBtn)),s.one("onReset",function(){try{n(this).find("iframe").hide().attr("src","//about:blank")}catch(t){}n(this).empty(),t.isLoaded=!1})},setContent:function(t,e){var o=this;o.isClosing||(o.hideLoading(t),t.$slide.empty(),l(e)&&e.parent().length?(e.parent(".fancybox-slide--inline").trigger("onReset"),t.$placeholder=n("<div></div>").hide().insertAfter(e),e.css("display","inline-block")):t.hasError||("string"===n.type(e)&&(e=n("<div>").append(n.trim(e)).contents(),3===e[0].nodeType&&(e=n("<div>").html(e))),t.opts.filter&&(e=n("<div>").html(e).find(t.opts.filter))),t.$slide.one("onReset",function(){t.$placeholder&&(t.$placeholder.after(e.hide()).remove(),t.$placeholder=null),t.$smallBtn&&(t.$smallBtn.remove(),t.$smallBtn=null),t.hasError||(n(this).empty(),t.isLoaded=!1)}),t.$content=n(e).appendTo(t.$slide),t.opts.smallBtn&&!t.$smallBtn&&(t.$smallBtn=n(o.translate(t,t.opts.btnTpl.smallBtn)).appendTo(t.$content)),this.afterLoad(t))},setError:function(t){t.hasError=!0,t.$slide.removeClass("fancybox-slide--"+t.type),this.setContent(t,this.translate(t,t.opts.errorTpl))},showLoading:function(t){var e=this;t=t||e.current,t&&!t.$spinner&&(t.$spinner=n(e.opts.spinnerTpl).appendTo(t.$slide))},hideLoading:function(t){var e=this;t=t||e.current,t&&t.$spinner&&(t.$spinner.remove(),delete t.$spinner)},afterLoad:function(t){var e=this;e.isClosing||(t.isLoading=!1,t.isLoaded=!0,e.trigger("afterLoad",t),e.hideLoading(t),t.opts.protect&&t.$content&&!t.hasError&&(t.$content.on("contextmenu.fb",function(t){return 2==t.button&&t.preventDefault(),!0}),"image"===t.type&&n('<div class="fancybox-spaceball"></div>').appendTo(t.$content)),e.revealContent(t))},revealContent:function(t){var e,i,a,s,r,c=this,l=t.$slide,u=!1;return e=t.opts[c.firstRun?"animationEffect":"transitionEffect"],a=t.opts[c.firstRun?"animationDuration":"transitionDuration"],a=parseInt(t.forcedDuration===o?a:t.forcedDuration,10),!t.isMoved&&t.pos===c.currPos&&a||(e=!1),"zoom"!==e||t.pos===c.currPos&&a&&"image"===t.type&&!t.hasError&&(u=c.getThumbPos(t))||(e="fade"),"zoom"===e?(r=c.getFitPos(t),r.scaleX=Math.round(r.width/u.width*100)/100,r.scaleY=Math.round(r.height/u.height*100)/100,delete r.width,delete r.height,s=t.opts.zoomOpacity,"auto"==s&&(s=Math.abs(t.width/t.height-u.width/u.height)>.1),s&&(u.opacity=.1,r.opacity=1),n.fancybox.setTranslate(t.$content.removeClass("fancybox-is-hidden"),u),f(t.$content),void n.fancybox.animate(t.$content,r,a,function(){c.complete()})):(c.updateSlide(t),e?(n.fancybox.stop(l),i="fancybox-animated fancybox-slide--"+(t.pos>c.prevPos?"next":"previous")+" fancybox-fx-"+e,l.removeAttr("style").removeClass("fancybox-slide--current fancybox-slide--next fancybox-slide--previous").addClass(i),t.$content.removeClass("fancybox-is-hidden"),f(l),void n.fancybox.animate(l,"fancybox-slide--current",a,function(e){l.removeClass(i).removeAttr("style"),t.pos===c.currPos&&c.complete()},!0)):(f(l),t.$content.removeClass("fancybox-is-hidden"),void(t.pos===c.currPos&&c.complete())))},getThumbPos:function(o){var i,a=this,s=!1,r=function(e){for(var o,i=e[0],a=i.getBoundingClientRect(),s=[];null!==i.parentElement;)"hidden"!==n(i.parentElement).css("overflow")&&"auto"!==n(i.parentElement).css("overflow")||s.push(i.parentElement.getBoundingClientRect()),i=i.parentElement;return o=s.every(function(t){var e=Math.min(a.right,t.right)-Math.max(a.left,t.left),n=Math.min(a.bottom,t.bottom)-Math.max(a.top,t.top);return e>0&&n>0}),o&&a.bottom>0&&a.right>0&&a.left<n(t).width()&&a.top<n(t).height()},c=o.opts.$thumb,l=c?c.offset():0;return l&&c[0].ownerDocument===e&&r(c)&&(i=a.$refs.stage.offset(),s={top:l.top-i.top+parseFloat(c.css("border-top-width")||0),left:l.left-i.left+parseFloat(c.css("border-left-width")||0),width:c.width(),height:c.height(),scaleX:1,scaleY:1}),s},complete:function(){var t=this,o=t.current,i={};o.isMoved||!o.isLoaded||o.isComplete||(o.isComplete=!0,o.$slide.siblings().trigger("onReset"),f(o.$slide),o.$slide.addClass("fancybox-slide--complete"),n.each(t.slides,function(e,o){o.pos>=t.currPos-1&&o.pos<=t.currPos+1?i[o.pos]=o:o&&(n.fancybox.stop(o.$slide),o.$slide.unbind().remove())}),t.slides=i,t.updateCursor(),t.trigger("afterShow"),(n(e.activeElement).is("[disabled]")||o.opts.autoFocus&&"image"!=o.type&&"iframe"!==o.type)&&t.focus())},preload:function(){var t,e,n=this;n.group.length<2||(t=n.slides[n.currPos+1],e=n.slides[n.currPos-1],t&&"image"===t.type&&n.loadSlide(t),e&&"image"===e.type&&n.loadSlide(e))},focus:function(){var t,e=this.current;this.isClosing||(t=e&&e.isComplete?e.$slide.find("button,:input,[tabindex],a").filter(":not([disabled]):visible:first"):null,t=t&&t.length?t:this.$refs.container,t.focus())},activate:function(){var t=this;n(".fancybox-container").each(function(){var e=n(this).data("FancyBox");e&&e.uid!==t.uid&&!e.isClosing&&e.trigger("onDeactivate")}),t.current&&(t.$refs.container.index()>0&&t.$refs.container.prependTo(e.body),t.updateControls()),t.trigger("onActivate"),t.addEvents()},close:function(t,e){var o,i,a,s,r,c,l=this,f=l.current,h=function(){l.cleanUp(t)};return!l.isClosing&&(l.isClosing=!0,l.trigger("beforeClose",t)===!1?(l.isClosing=!1,u(function(){l.update()}),!1):(l.removeEvents(),f.timouts&&clearTimeout(f.timouts),a=f.$content,o=f.opts.animationEffect,i=n.isNumeric(e)?e:o?f.opts.animationDuration:0,f.$slide.off(d).removeClass("fancybox-slide--complete fancybox-slide--next fancybox-slide--previous fancybox-animated"),f.$slide.siblings().trigger("onReset").remove(),i&&l.$refs.container.removeClass("fancybox-is-open").addClass("fancybox-is-closing"),l.hideLoading(f),l.hideControls(),l.updateCursor(),"zoom"!==o||t!==!0&&a&&i&&"image"===f.type&&!f.hasError&&(c=l.getThumbPos(f))||(o="fade"),"zoom"===o?(n.fancybox.stop(a),r=n.fancybox.getTranslate(a),r.width=r.width*r.scaleX,r.height=r.height*r.scaleY,s=f.opts.zoomOpacity,"auto"==s&&(s=Math.abs(f.width/f.height-c.width/c.height)>.1),s&&(c.opacity=0),r.scaleX=r.width/c.width,r.scaleY=r.height/c.height,r.width=c.width,r.height=c.height,n.fancybox.setTranslate(f.$content,r),n.fancybox.animate(f.$content,c,i,h),!0):(o&&i?t===!0?setTimeout(h,i):n.fancybox.animate(f.$slide.removeClass("fancybox-slide--current"),"fancybox-animated fancybox-slide--previous fancybox-fx-"+o,i,h):h(),!0)))},cleanUp:function(t){var e,o=this;o.current.$slide.trigger("onReset"),o.$refs.container.empty().remove(),o.trigger("afterClose",t),o.$lastFocus&&!o.current.focusBack&&o.$lastFocus.focus(),o.current=null,e=n.fancybox.getInstance(),e?e.activate():(s.scrollTop(o.scrollTop).scrollLeft(o.scrollLeft),n("html").removeClass("fancybox-enabled"),n("#fancybox-style-noscroll").remove())},trigger:function(t,e){var o,i=Array.prototype.slice.call(arguments,1),a=this,s=e&&e.opts?e:a.current;return s?i.unshift(s):s=a,i.unshift(a),n.isFunction(s.opts[t])&&(o=s.opts[t].apply(s,i)),o===!1?o:void("afterClose"===t?r.trigger(t+".fb",i):a.$refs.container.trigger(t+".fb",i))},updateControls:function(t){var e=this,o=e.current,i=o.index,a=o.opts,s=a.caption,r=e.$refs.caption;o.$slide.trigger("refresh"),e.$caption=s&&s.length?r.html(s):null,e.isHiddenControls||e.showControls(),n("[data-fancybox-count]").html(e.group.length),n("[data-fancybox-index]").html(i+1),n("[data-fancybox-prev]").prop("disabled",!a.loop&&i<=0),n("[data-fancybox-next]").prop("disabled",!a.loop&&i>=e.group.length-1)},hideControls:function(){this.isHiddenControls=!0,this.$refs.container.removeClass("fancybox-show-infobar fancybox-show-toolbar fancybox-show-caption fancybox-show-nav")},showControls:function(){var t=this,e=t.current?t.current.opts:t.opts,n=t.$refs.container;t.isHiddenControls=!1,t.idleSecondsCounter=0,n.toggleClass("fancybox-show-toolbar",!(!e.toolbar||!e.buttons)).toggleClass("fancybox-show-infobar",!!(e.infobar&&t.group.length>1)).toggleClass("fancybox-show-nav",!!(e.arrows&&t.group.length>1)).toggleClass("fancybox-is-modal",!!e.modal),t.$caption?n.addClass("fancybox-show-caption "):n.removeClass("fancybox-show-caption")},toggleControls:function(){this.isHiddenControls?this.showControls():this.hideControls()}}),n.fancybox={version:"3.1.20",defaults:a,getInstance:function(t){var e=n('.fancybox-container:not(".fancybox-is-closing"):first').data("FancyBox"),o=Array.prototype.slice.call(arguments,1);return e instanceof h&&("string"===n.type(t)?e[t].apply(e,o):"function"===n.type(t)&&t.apply(e,o),e)},open:function(t,e,n){return new h(t,e,n)},close:function(t){var e=this.getInstance();e&&(e.close(),t===!0&&this.close())},destroy:function(){this.close(!0),r.off("click.fb-start")},isMobile:e.createTouch!==o&&/Android|webOS|iPhone|iPad|iPod|BlackBerry/i.test(navigator.userAgent),use3d:function(){var n=e.createElement("div");return t.getComputedStyle&&t.getComputedStyle(n).getPropertyValue("transform")&&!(e.documentMode&&e.documentMode<11)}(),getTranslate:function(t){var e;if(!t||!t.length)return!1;if(e=t.eq(0).css("transform"),e&&e.indexOf("matrix")!==-1?(e=e.split("(")[1],e=e.split(")")[0],e=e.split(",")):e=[],e.length)e=e.length>10?[e[13],e[12],e[0],e[5]]:[e[5],e[4],e[0],e[3]],e=e.map(parseFloat);else{e=[0,0,1,1];var n=/\.*translate\((.*)px,(.*)px\)/i,o=n.exec(t.eq(0).attr("style"));o&&(e[0]=parseFloat(o[2]),e[1]=parseFloat(o[1]))}return{top:e[0],left:e[1],scaleX:e[2],scaleY:e[3],opacity:parseFloat(t.css("opacity")),width:t.width(),height:t.height()}},setTranslate:function(t,e){var n="",i={};if(t&&e)return e.left===o&&e.top===o||(n=(e.left===o?t.position().left:e.left)+"px, "+(e.top===o?t.position().top:e.top)+"px",n=this.use3d?"translate3d("+n+", 0px)":"translate("+n+")"),e.scaleX!==o&&e.scaleY!==o&&(n=(n.length?n+" ":"")+"scale("+e.scaleX+", "+e.scaleY+")"),n.length&&(i.transform=n),e.opacity!==o&&(i.opacity=e.opacity),e.width!==o&&(i.width=e.width),e.height!==o&&(i.height=e.height),t.css(i)},animate:function(t,e,i,a,s){var r=d||"transitionend";n.isFunction(i)&&(a=i,i=null),n.isPlainObject(e)||t.removeAttr("style"),t.on(r,function(i){(!i||!i.originalEvent||t.is(i.originalEvent.target)&&"z-index"!=i.originalEvent.propertyName)&&(t.off(r),n.isPlainObject(e)?e.scaleX!==o&&e.scaleY!==o&&(t.css("transition-duration","0ms"),e.width=t.width()*e.scaleX,e.height=t.height()*e.scaleY,e.scaleX=1,e.scaleY=1,n.fancybox.setTranslate(t,e)):s!==!0&&t.removeClass(e),n.isFunction(a)&&a(i))}),n.isNumeric(i)&&t.css("transition-duration",i+"ms"),n.isPlainObject(e)?n.fancybox.setTranslate(t,e):t.addClass(e),t.data("timer",setTimeout(function(){t.trigger("transitionend")},i+16))},stop:function(t){clearTimeout(t.data("timer")),t.off(d)}},n.fn.fancybox=function(t){var e;return t=t||{},e=t.selector||!1,e?n("body").off("click.fb-start",e).on("click.fb-start",e,{items:n(e),options:t},i):this.off("click.fb-start").on("click.fb-start",{items:this,options:t},i),this},r.on("click.fb-start","[data-fancybox]",i)}}(window,document,window.jQuery),function(t){"use strict";var e=function(e,n,o){if(e)return o=o||"","object"===t.type(o)&&(o=t.param(o,!0)),t.each(n,function(t,n){e=e.replace("$"+t,n||"")}),o.length&&(e+=(e.indexOf("?")>0?"&":"?")+o),e},n={youtube:{matcher:/(youtube\.com|youtu\.be|youtube\-nocookie\.com)\/(watch\?(.*&)?v=|v\/|u\/|embed\/?)?(videoseries\?list=(.*)|[\w-]{11}|\?listType=(.*)&list=(.*))(.*)/i,params:{autoplay:1,autohide:1,fs:1,rel:0,hd:1,wmode:"transparent",enablejsapi:1,html5:1},paramPlace:8,type:"iframe",url:"//www.youtube.com/embed/$4",thumb:"//img.youtube.com/vi/$4/hqdefault.jpg"},vimeo:{matcher:/^.+vimeo.com\/(.*\/)?([\d]+)(.*)?/,params:{autoplay:1,hd:1,show_title:1,show_byline:1,show_portrait:0,fullscreen:1,api:1},paramPlace:3,type:"iframe",url:"//player.vimeo.com/video/$2"},metacafe:{matcher:/metacafe.com\/watch\/(\d+)\/(.*)?/,type:"iframe",url:"//www.metacafe.com/embed/$1/?ap=1"},dailymotion:{matcher:/dailymotion.com\/video\/(.*)\/?(.*)/,params:{additionalInfos:0,autoStart:1},type:"iframe",url:"//www.dailymotion.com/embed/video/$1"},vine:{matcher:/vine.co\/v\/([a-zA-Z0-9\?\=\-]+)/,type:"iframe",url:"//vine.co/v/$1/embed/simple"},instagram:{matcher:/(instagr\.am|instagram\.com)\/p\/([a-zA-Z0-9_\-]+)\/?/i,type:"image",url:"//$1/p/$2/media/?size=l"},google_maps:{matcher:/(maps\.)?google\.([a-z]{2,3}(\.[a-z]{2})?)\/(((maps\/(place\/(.*)\/)?\@(.*),(\d+.?\d+?)z))|(\?ll=))(.*)?/i,type:"iframe",url:function(t){return"//maps.google."+t[2]+"/?ll="+(t[9]?t[9]+"&z="+Math.floor(t[10])+(t[12]?t[12].replace(/^\//,"&"):""):t[12])+"&output="+(t[12]&&t[12].indexOf("layer=c")>0?"svembed":"embed")}}};t(document).on("onInit.fb",function(o,i){t.each(i.group,function(o,i){var a,s,r,c,l,u,d,f=i.src||"",h=!1;i.type||(a=t.extend(!0,{},n,i.opts.media),t.each(a,function(n,o){if(r=f.match(o.matcher),u={},d=n,r){if(h=o.type,o.paramPlace&&r[o.paramPlace]){l=r[o.paramPlace],"?"==l[0]&&(l=l.substring(1)),l=l.split("&");for(var a=0;a<l.length;++a){var p=l[a].split("=",2);2==p.length&&(u[p[0]]=decodeURIComponent(p[1].replace(/\+/g," ")))}}return c=t.extend(!0,{},o.params,i.opts[n],u),f="function"===t.type(o.url)?o.url.call(this,r,c,i):e(o.url,r,c),s="function"===t.type(o.thumb)?o.thumb.call(this,r,c,i):e(o.thumb,r),"vimeo"===d&&(f=f.replace("&%23","#")),!1}}),h?(i.src=f,i.type=h,i.opts.thumb||i.opts.$thumb&&i.opts.$thumb.length||(i.opts.thumb=s),"iframe"===h&&(t.extend(!0,i.opts,{iframe:{preload:!1,attr:{scrolling:"no"}}}),i.contentProvider=d,i.opts.slideClass+=" fancybox-slide--"+("google_maps"==d?"map":"video"))):i.type="image")})})}(window.jQuery),function(t,e,n){"use strict";var o=function(){return t.requestAnimationFrame||t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||t.oRequestAnimationFrame||function(e){
-return t.setTimeout(e,1e3/60)}}(),i=function(){return t.cancelAnimationFrame||t.webkitCancelAnimationFrame||t.mozCancelAnimationFrame||t.oCancelAnimationFrame||function(e){t.clearTimeout(e)}}(),a=function(e){var n=[];e=e.originalEvent||e||t.e,e=e.touches&&e.touches.length?e.touches:e.changedTouches&&e.changedTouches.length?e.changedTouches:[e];for(var o in e)e[o].pageX?n.push({x:e[o].pageX,y:e[o].pageY}):e[o].clientX&&n.push({x:e[o].clientX,y:e[o].clientY});return n},s=function(t,e,n){return e&&t?"x"===n?t.x-e.x:"y"===n?t.y-e.y:Math.sqrt(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2)):0},r=function(t){if(t.is("a,button,input,select,textarea")||n.isFunction(t.get(0).onclick))return!0;for(var e=0,o=t[0].attributes,i=o.length;e<i;e++)if("data-fancybox-"===o[e].nodeName.substr(0,14))return!0;return!1},c=function(e){var n=t.getComputedStyle(e)["overflow-y"],o=t.getComputedStyle(e)["overflow-x"],i=("scroll"===n||"auto"===n)&&e.scrollHeight>e.clientHeight,a=("scroll"===o||"auto"===o)&&e.scrollWidth>e.clientWidth;return i||a},l=function(t){for(var e=!1;;){if(e=c(t.get(0)))break;if(t=t.parent(),!t.length||t.hasClass("fancybox-stage")||t.is("body"))break}return e},u=function(t){var e=this;e.instance=t,e.$bg=t.$refs.bg,e.$stage=t.$refs.stage,e.$container=t.$refs.container,e.destroy(),e.$container.on("touchstart.fb.touch mousedown.fb.touch",n.proxy(e,"ontouchstart"))};u.prototype.destroy=function(){this.$container.off(".fb.touch")},u.prototype.ontouchstart=function(o){var i=this,c=n(o.target),u=i.instance,d=u.current,f=d.$content,h="touchstart"==o.type;if(h&&i.$container.off("mousedown.fb.touch"),!d||i.instance.isAnimating||i.instance.isClosing)return o.stopPropagation(),void o.preventDefault();if((!o.originalEvent||2!=o.originalEvent.button)&&c.length&&!r(c)&&!r(c.parent())&&!(o.originalEvent.clientX>c[0].clientWidth+c.offset().left)&&(i.startPoints=a(o),i.startPoints&&!(i.startPoints.length>1&&u.isSliding))){if(i.$target=c,i.$content=f,i.canTap=!0,n(e).off(".fb.touch"),n(e).on(h?"touchend.fb.touch touchcancel.fb.touch":"mouseup.fb.touch mouseleave.fb.touch",n.proxy(i,"ontouchend")),n(e).on(h?"touchmove.fb.touch":"mousemove.fb.touch",n.proxy(i,"ontouchmove")),o.stopPropagation(),!u.current.opts.touch&&!u.canPan()||!c.is(i.$stage)&&!i.$stage.find(c).length)return void(c.is("img")&&o.preventDefault());n.fancybox.isMobile&&(l(i.$target)||l(i.$target.parent()))||o.preventDefault(),i.canvasWidth=Math.round(d.$slide[0].clientWidth),i.canvasHeight=Math.round(d.$slide[0].clientHeight),i.startTime=(new Date).getTime(),i.distanceX=i.distanceY=i.distance=0,i.isPanning=!1,i.isSwiping=!1,i.isZooming=!1,i.sliderStartPos=i.sliderLastPos||{top:0,left:0},i.contentStartPos=n.fancybox.getTranslate(i.$content),i.contentLastPos=null,1!==i.startPoints.length||i.isZooming||(i.canTap=!u.isSliding,"image"===d.type&&(i.contentStartPos.width>i.canvasWidth+1||i.contentStartPos.height>i.canvasHeight+1)?(n.fancybox.stop(i.$content),i.$content.css("transition-duration","0ms"),i.isPanning=!0):i.isSwiping=!0,i.$container.addClass("fancybox-controls--isGrabbing")),2!==i.startPoints.length||u.isAnimating||d.hasError||"image"!==d.type||!d.isLoaded&&!d.$ghost||(i.isZooming=!0,i.isSwiping=!1,i.isPanning=!1,n.fancybox.stop(i.$content),i.$content.css("transition-duration","0ms"),i.centerPointStartX=.5*(i.startPoints[0].x+i.startPoints[1].x)-n(t).scrollLeft(),i.centerPointStartY=.5*(i.startPoints[0].y+i.startPoints[1].y)-n(t).scrollTop(),i.percentageOfImageAtPinchPointX=(i.centerPointStartX-i.contentStartPos.left)/i.contentStartPos.width,i.percentageOfImageAtPinchPointY=(i.centerPointStartY-i.contentStartPos.top)/i.contentStartPos.height,i.startDistanceBetweenFingers=s(i.startPoints[0],i.startPoints[1]))}},u.prototype.ontouchmove=function(t){var e=this;if(e.newPoints=a(t),n.fancybox.isMobile&&(l(e.$target)||l(e.$target.parent())))return t.stopPropagation(),void(e.canTap=!1);if((e.instance.current.opts.touch||e.instance.canPan())&&e.newPoints&&e.newPoints.length&&(e.distanceX=s(e.newPoints[0],e.startPoints[0],"x"),e.distanceY=s(e.newPoints[0],e.startPoints[0],"y"),e.distance=s(e.newPoints[0],e.startPoints[0]),e.distance>0)){if(!e.$target.is(e.$stage)&&!e.$stage.find(e.$target).length)return;t.stopPropagation(),t.preventDefault(),e.isSwiping?e.onSwipe():e.isPanning?e.onPan():e.isZooming&&e.onZoom()}},u.prototype.onSwipe=function(){var e,a=this,s=a.isSwiping,r=a.sliderStartPos.left||0;s===!0?Math.abs(a.distance)>10&&(a.canTap=!1,a.instance.group.length<2&&a.instance.opts.touch.vertical?a.isSwiping="y":a.instance.isSliding||a.instance.opts.touch.vertical===!1||"auto"===a.instance.opts.touch.vertical&&n(t).width()>800?a.isSwiping="x":(e=Math.abs(180*Math.atan2(a.distanceY,a.distanceX)/Math.PI),a.isSwiping=e>45&&e<135?"y":"x"),a.instance.isSliding=a.isSwiping,a.startPoints=a.newPoints,n.each(a.instance.slides,function(t,e){n.fancybox.stop(e.$slide),e.$slide.css("transition-duration","0ms"),e.inTransition=!1,e.pos===a.instance.current.pos&&(a.sliderStartPos.left=n.fancybox.getTranslate(e.$slide).left)}),a.instance.SlideShow&&a.instance.SlideShow.isActive&&a.instance.SlideShow.stop()):("x"==s&&(a.distanceX>0&&(a.instance.group.length<2||0===a.instance.current.index&&!a.instance.current.opts.loop)?r+=Math.pow(a.distanceX,.8):a.distanceX<0&&(a.instance.group.length<2||a.instance.current.index===a.instance.group.length-1&&!a.instance.current.opts.loop)?r-=Math.pow(-a.distanceX,.8):r+=a.distanceX),a.sliderLastPos={top:"x"==s?0:a.sliderStartPos.top+a.distanceY,left:r},a.requestId&&(i(a.requestId),a.requestId=null),a.requestId=o(function(){a.sliderLastPos&&(n.each(a.instance.slides,function(t,e){var o=e.pos-a.instance.currPos;n.fancybox.setTranslate(e.$slide,{top:a.sliderLastPos.top,left:a.sliderLastPos.left+o*a.canvasWidth+o*e.opts.gutter})}),a.$container.addClass("fancybox-is-sliding"))}))},u.prototype.onPan=function(){var t,e,a,s=this;s.canTap=!1,t=s.contentStartPos.width>s.canvasWidth?s.contentStartPos.left+s.distanceX:s.contentStartPos.left,e=s.contentStartPos.top+s.distanceY,a=s.limitMovement(t,e,s.contentStartPos.width,s.contentStartPos.height),a.scaleX=s.contentStartPos.scaleX,a.scaleY=s.contentStartPos.scaleY,s.contentLastPos=a,s.requestId&&(i(s.requestId),s.requestId=null),s.requestId=o(function(){n.fancybox.setTranslate(s.$content,s.contentLastPos)})},u.prototype.limitMovement=function(t,e,n,o){var i,a,s,r,c=this,l=c.canvasWidth,u=c.canvasHeight,d=c.contentStartPos.left,f=c.contentStartPos.top,h=c.distanceX,p=c.distanceY;return i=Math.max(0,.5*l-.5*n),a=Math.max(0,.5*u-.5*o),s=Math.min(l-n,.5*l-.5*n),r=Math.min(u-o,.5*u-.5*o),n>l&&(h>0&&t>i&&(t=i-1+Math.pow(-i+d+h,.8)||0),h<0&&t<s&&(t=s+1-Math.pow(s-d-h,.8)||0)),o>u&&(p>0&&e>a&&(e=a-1+Math.pow(-a+f+p,.8)||0),p<0&&e<r&&(e=r+1-Math.pow(r-f-p,.8)||0)),{top:e,left:t}},u.prototype.limitPosition=function(t,e,n,o){var i=this,a=i.canvasWidth,s=i.canvasHeight;return n>a?(t=t>0?0:t,t=t<a-n?a-n:t):t=Math.max(0,a/2-n/2),o>s?(e=e>0?0:e,e=e<s-o?s-o:e):e=Math.max(0,s/2-o/2),{top:e,left:t}},u.prototype.onZoom=function(){var e=this,a=e.contentStartPos.width,r=e.contentStartPos.height,c=e.contentStartPos.left,l=e.contentStartPos.top,u=s(e.newPoints[0],e.newPoints[1]),d=u/e.startDistanceBetweenFingers,f=Math.floor(a*d),h=Math.floor(r*d),p=(a-f)*e.percentageOfImageAtPinchPointX,g=(r-h)*e.percentageOfImageAtPinchPointY,b=(e.newPoints[0].x+e.newPoints[1].x)/2-n(t).scrollLeft(),m=(e.newPoints[0].y+e.newPoints[1].y)/2-n(t).scrollTop(),y=b-e.centerPointStartX,v=m-e.centerPointStartY,x=c+(p+y),w=l+(g+v),$={top:w,left:x,scaleX:e.contentStartPos.scaleX*d,scaleY:e.contentStartPos.scaleY*d};e.canTap=!1,e.newWidth=f,e.newHeight=h,e.contentLastPos=$,e.requestId&&(i(e.requestId),e.requestId=null),e.requestId=o(function(){n.fancybox.setTranslate(e.$content,e.contentLastPos)})},u.prototype.ontouchend=function(t){var o=this,s=Math.max((new Date).getTime()-o.startTime,1),r=o.isSwiping,c=o.isPanning,l=o.isZooming;return o.endPoints=a(t),o.$container.removeClass("fancybox-controls--isGrabbing"),n(e).off(".fb.touch"),o.requestId&&(i(o.requestId),o.requestId=null),o.isSwiping=!1,o.isPanning=!1,o.isZooming=!1,o.canTap?o.onTap(t):(o.speed=366,o.velocityX=o.distanceX/s*.5,o.velocityY=o.distanceY/s*.5,o.speedX=Math.max(.5*o.speed,Math.min(1.5*o.speed,1/Math.abs(o.velocityX)*o.speed)),void(c?o.endPanning():l?o.endZooming():o.endSwiping(r)))},u.prototype.endSwiping=function(t){var e=this,o=!1;e.instance.isSliding=!1,e.sliderLastPos=null,"y"==t&&Math.abs(e.distanceY)>50?(n.fancybox.animate(e.instance.current.$slide,{top:e.sliderStartPos.top+e.distanceY+150*e.velocityY,opacity:0},150),o=e.instance.close(!0,300)):"x"==t&&e.distanceX>50&&e.instance.group.length>1?o=e.instance.previous(e.speedX):"x"==t&&e.distanceX<-50&&e.instance.group.length>1&&(o=e.instance.next(e.speedX)),o!==!1||"x"!=t&&"y"!=t||e.instance.jumpTo(e.instance.current.index,150),e.$container.removeClass("fancybox-is-sliding")},u.prototype.endPanning=function(){var t,e,o,i=this;i.contentLastPos&&(i.instance.current.opts.touch.momentum===!1?(t=i.contentLastPos.left,e=i.contentLastPos.top):(t=i.contentLastPos.left+i.velocityX*i.speed,e=i.contentLastPos.top+i.velocityY*i.speed),o=i.limitPosition(t,e,i.contentStartPos.width,i.contentStartPos.height),o.width=i.contentStartPos.width,o.height=i.contentStartPos.height,n.fancybox.animate(i.$content,o,330))},u.prototype.endZooming=function(){var t,e,o,i,a=this,s=a.instance.current,r=a.newWidth,c=a.newHeight;a.contentLastPos&&(t=a.contentLastPos.left,e=a.contentLastPos.top,i={top:e,left:t,width:r,height:c,scaleX:1,scaleY:1},n.fancybox.setTranslate(a.$content,i),r<a.canvasWidth&&c<a.canvasHeight?a.instance.scaleToFit(150):r>s.width||c>s.height?a.instance.scaleToActual(a.centerPointStartX,a.centerPointStartY,150):(o=a.limitPosition(t,e,r,c),n.fancybox.setTranslate(a.content,n.fancybox.getTranslate(a.$content)),n.fancybox.animate(a.$content,o,150)))},u.prototype.onTap=function(t){var e,o=this,i=n(t.target),s=o.instance,r=s.current,c=t&&a(t)||o.startPoints,l=c[0]?c[0].x-o.$stage.offset().left:0,u=c[0]?c[0].y-o.$stage.offset().top:0,d=function(e){var i=r.opts[e];if(n.isFunction(i)&&(i=i.apply(s,[r,t])),i)switch(i){case"close":s.close(o.startEvent);break;case"toggleControls":s.toggleControls(!0);break;case"next":s.next();break;case"nextOrClose":s.group.length>1?s.next():s.close(o.startEvent);break;case"zoom":"image"==r.type&&(r.isLoaded||r.$ghost)&&(s.canPan()?s.scaleToFit():s.isScaledDown()?s.scaleToActual(l,u):s.group.length<2&&s.close(o.startEvent))}};if(!(t.originalEvent&&2==t.originalEvent.button||s.isSliding||l>i[0].clientWidth+i.offset().left)){if(i.is(".fancybox-bg,.fancybox-inner,.fancybox-outer,.fancybox-container"))e="Outside";else if(i.is(".fancybox-slide"))e="Slide";else{if(!s.current.$content||!s.current.$content.has(t.target).length)return;e="Content"}if(o.tapped){if(clearTimeout(o.tapped),o.tapped=null,Math.abs(l-o.tapX)>50||Math.abs(u-o.tapY)>50||s.isSliding)return this;d("dblclick"+e)}else o.tapX=l,o.tapY=u,r.opts["dblclick"+e]&&r.opts["dblclick"+e]!==r.opts["click"+e]?o.tapped=setTimeout(function(){o.tapped=null,d("click"+e)},300):d("click"+e);return this}},n(e).on("onActivate.fb",function(t,e){e&&!e.Guestures&&(e.Guestures=new u(e))}),n(e).on("beforeClose.fb",function(t,e){e&&e.Guestures&&e.Guestures.destroy()})}(window,document,window.jQuery),function(t,e){"use strict";var n=function(t){this.instance=t,this.init()};e.extend(n.prototype,{timer:null,isActive:!1,$button:null,speed:3e3,init:function(){var t=this;t.$button=t.instance.$refs.toolbar.find("[data-fancybox-play]").on("click",function(){t.toggle()}),(t.instance.group.length<2||!t.instance.group[t.instance.currIndex].opts.slideShow)&&t.$button.hide()},set:function(){var t=this;t.instance&&t.instance.current&&(t.instance.current.opts.loop||t.instance.currIndex<t.instance.group.length-1)?t.timer=setTimeout(function(){t.instance.next()},t.instance.current.opts.slideShow.speed||t.speed):(t.stop(),t.instance.idleSecondsCounter=0,t.instance.showControls())},clear:function(){var t=this;clearTimeout(t.timer),t.timer=null},start:function(){var t=this,e=t.instance.current;t.instance&&e&&(e.opts.loop||e.index<t.instance.group.length-1)&&(t.isActive=!0,t.$button.attr("title",e.opts.i18n[e.opts.lang].PLAY_STOP).addClass("fancybox-button--pause"),e.isComplete&&t.set())},stop:function(){var t=this,e=t.instance.current;t.clear(),t.$button.attr("title",e.opts.i18n[e.opts.lang].PLAY_START).removeClass("fancybox-button--pause"),t.isActive=!1},toggle:function(){var t=this;t.isActive?t.stop():t.start()}}),e(t).on({"onInit.fb":function(t,e){e&&!e.SlideShow&&(e.SlideShow=new n(e))},"beforeShow.fb":function(t,e,n,o){var i=e&&e.SlideShow;o?i&&n.opts.slideShow.autoStart&&i.start():i&&i.isActive&&i.clear()},"afterShow.fb":function(t,e,n){var o=e&&e.SlideShow;o&&o.isActive&&o.set()},"afterKeydown.fb":function(n,o,i,a,s){var r=o&&o.SlideShow;!r||!i.opts.slideShow||80!==s&&32!==s||e(t.activeElement).is("button,a,input")||(a.preventDefault(),r.toggle())},"beforeClose.fb onDeactivate.fb":function(t,e){var n=e&&e.SlideShow;n&&n.stop()}}),e(t).on("visibilitychange",function(){var n=e.fancybox.getInstance(),o=n&&n.SlideShow;o&&o.isActive&&(t.hidden?o.clear():o.set())})}(document,window.jQuery),function(t,e){"use strict";var n=function(){var e,n,o,i=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],a={};for(n=0;n<i.length;n++)if(e=i[n],e&&e[1]in t){for(o=0;o<e.length;o++)a[i[0][o]]=e[o];return a}return!1}();if(!n)return void(e.fancybox.defaults.btnTpl.fullScreen=!1);var o={request:function(e){e=e||t.documentElement,e[n.requestFullscreen](e.ALLOW_KEYBOARD_INPUT)},exit:function(){t[n.exitFullscreen]()},toggle:function(e){e=e||t.documentElement,this.isFullscreen()?this.exit():this.request(e)},isFullscreen:function(){return Boolean(t[n.fullscreenElement])},enabled:function(){return Boolean(t[n.fullscreenEnabled])}};e(t).on({"onInit.fb":function(t,e){var n,i=e.$refs.toolbar.find("[data-fancybox-fullscreen]");e&&!e.FullScreen&&e.group[e.currIndex].opts.fullScreen?(n=e.$refs.container,n.on("click.fb-fullscreen","[data-fancybox-fullscreen]",function(t){t.stopPropagation(),t.preventDefault(),o.toggle(n[0])}),e.opts.fullScreen&&e.opts.fullScreen.autoStart===!0&&o.request(n[0]),e.FullScreen=o):i.hide()},"afterKeydown.fb":function(t,e,n,o,i){e&&e.FullScreen&&70===i&&(o.preventDefault(),e.FullScreen.toggle(e.$refs.container[0]))},"beforeClose.fb":function(t){t&&t.FullScreen&&o.exit()}}),e(t).on(n.fullscreenchange,function(){var t=e.fancybox.getInstance();t.current&&"image"===t.current.type&&t.isAnimating&&(t.current.$content.css("transition","none"),t.isAnimating=!1,t.update(!0,!0,0))})}(document,window.jQuery),function(t,e){"use strict";var n=function(t){this.instance=t,this.init()};e.extend(n.prototype,{$button:null,$grid:null,$list:null,isVisible:!1,init:function(){var t=this,e=t.instance.group[0],n=t.instance.group[1];t.$button=t.instance.$refs.toolbar.find("[data-fancybox-thumbs]"),t.instance.group.length>1&&t.instance.group[t.instance.currIndex].opts.thumbs&&("image"==e.type||e.opts.thumb||e.opts.$thumb)&&("image"==n.type||n.opts.thumb||n.opts.$thumb)?(t.$button.on("click",function(){t.toggle()}),t.isActive=!0):(t.$button.hide(),t.isActive=!1)},create:function(){var t,n,o=this.instance;this.$grid=e('<div class="fancybox-thumbs"></div>').appendTo(o.$refs.container),t="<ul>",e.each(o.group,function(e,o){n=o.opts.thumb||(o.opts.$thumb?o.opts.$thumb.attr("src"):null),n||"image"!==o.type||(n=o.src),n&&n.length&&(t+='<li data-index="'+e+'" tabindex="0" class="fancybox-thumbs-loading"><img data-src="'+n+'" /></li>')}),t+="</ul>",this.$list=e(t).appendTo(this.$grid).on("click","li",function(){o.jumpTo(e(this).data("index"))}),this.$list.find("img").hide().one("load",function(){var t,n,o,i,a=e(this).parent().removeClass("fancybox-thumbs-loading"),s=a.outerWidth(),r=a.outerHeight();t=this.naturalWidth||this.width,n=this.naturalHeight||this.height,o=t/s,i=n/r,o>=1&&i>=1&&(o>i?(t/=i,n=r):(t=s,n/=o)),e(this).css({width:Math.floor(t),height:Math.floor(n),"margin-top":Math.min(0,Math.floor(.3*r-.3*n)),"margin-left":Math.min(0,Math.floor(.5*s-.5*t))}).show()}).each(function(){this.src=e(this).data("src")})},focus:function(){this.instance.current&&this.$list.children().removeClass("fancybox-thumbs-active").filter('[data-index="'+this.instance.current.index+'"]').addClass("fancybox-thumbs-active").focus()},close:function(){this.$grid.hide()},update:function(){this.instance.$refs.container.toggleClass("fancybox-show-thumbs",this.isVisible),this.isVisible?(this.$grid||this.create(),this.instance.trigger("onThumbsShow"),this.focus()):this.$grid&&this.instance.trigger("onThumbsHide"),this.instance.update()},hide:function(){this.isVisible=!1,this.update()},show:function(){this.isVisible=!0,this.update()},toggle:function(){this.isVisible=!this.isVisible,this.update()}}),e(t).on({"onInit.fb":function(t,e){e&&!e.Thumbs&&(e.Thumbs=new n(e))},"beforeShow.fb":function(t,e,n,o){var i=e&&e.Thumbs;if(i&&i.isActive){if(n.modal)return i.$button.hide(),void i.hide();o&&e.opts.thumbs.autoStart===!0&&i.show(),i.isVisible&&i.focus()}},"afterKeydown.fb":function(t,e,n,o,i){var a=e&&e.Thumbs;a&&a.isActive&&71===i&&(o.preventDefault(),a.toggle())},"beforeClose.fb":function(t,e){var n=e&&e.Thumbs;n&&n.isVisible&&e.opts.thumbs.hideOnClose!==!1&&n.close()}})}(document,window.jQuery),function(t,e,n){"use strict";function o(){var t=e.location.hash.substr(1),n=t.split("-"),o=n.length>1&&/^\+?\d+$/.test(n[n.length-1])?parseInt(n.pop(-1),10)||1:1,i=n.join("-");return o<1&&(o=1),{hash:t,index:o,gallery:i}}function i(t){var e;""!==t.gallery&&(e=n("[data-fancybox='"+n.escapeSelector(t.gallery)+"']").eq(t.index-1),e.length?e.trigger("click"):n("#"+n.escapeSelector(t.gallery)).trigger("click"))}function a(t){var e;return!!t&&(e=t.current?t.current.opts:t.opts,e.$orig?e.$orig.data("fancybox"):e.hash||"")}n.escapeSelector||(n.escapeSelector=function(t){var e=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g,n=function(t,e){return e?"\0"===t?"�":t.slice(0,-1)+"\\"+t.charCodeAt(t.length-1).toString(16)+" ":"\\"+t};return(t+"").replace(e,n)});var s=null,r=null;n(function(){setTimeout(function(){n.fancybox.defaults.hash!==!1&&(n(t).on({"onInit.fb":function(t,e){var n,i;e.group[e.currIndex].opts.hash!==!1&&(n=o(),i=a(e),i&&n.gallery&&i==n.gallery&&(e.currIndex=n.index-1))},"beforeShow.fb":function(n,o,i,c){var l;i.opts.hash!==!1&&(l=a(o),l&&""!==l&&(e.location.hash.indexOf(l)<0&&(o.opts.origHash=e.location.hash),s=l+(o.group.length>1?"-"+(i.index+1):""),"replaceState"in e.history?(r&&clearTimeout(r),r=setTimeout(function(){e.history[c?"pushState":"replaceState"]({},t.title,e.location.pathname+e.location.search+"#"+s),r=null},300)):e.location.hash=s))},"beforeClose.fb":function(o,i,c){var l,u;r&&clearTimeout(r),c.opts.hash!==!1&&(l=a(i),u=i&&i.opts.origHash?i.opts.origHash:"",l&&""!==l&&("replaceState"in history?e.history.replaceState({},t.title,e.location.pathname+e.location.search+u):(e.location.hash=u,n(e).scrollTop(i.scrollTop).scrollLeft(i.scrollLeft))),s=null)}}),n(e).on("hashchange.fb",function(){var t=o();n.fancybox.getInstance()?!s||s===t.gallery+"-"+t.index||1===t.index&&s==t.gallery||(s=null,n.fancybox.close()):""!==t.gallery&&i(t)}),n(e).one("unload.fb popstate.fb",function(){n.fancybox.getInstance("close",!0,0)}),i(o()))},50)})}(document,window,window.jQuery); \ No newline at end of file