.clearfix::after {
  content: "";
  display: table;
  clear: both;
}
:root {
  --color-background: white;
  --color-main-text: #444;
  --color-main-text-light: #666;
  --color-border: #CCC;
  --color-border-light: #DDD;
  --color-border-even-lighter: #EEE;
  --color-near-white: #FAFAFA;
  --color-quote: #5DB1B4;
  --color-main-link: #368CCB;
  --color-main-link-hover: #2A64C8;
  --color-ignore: #AAA;
  --background-image: url('data:image/png;base64,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');
}
@media (prefers-color-scheme: dark) {
  :root {
    --color-background: #444;
    --color-main-text: #e4e4e4;
    --color-main-text-light: #eeeeee;
    --color-border: #4F4F4F;
    --color-border-light: #333;
    --color-border-even-lighter: #2F2F2F;
    --color-near-white: #FAFAFA;
    --color-quote: #5DB1B4;
    --color-main-link: #83bee8;
    --color-main-link-hover: #aeddff;
    --color-ignore: #999;
    --background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgAQMAAABJtOi3AAAABlBMVEUAAAA0MjRKwVRHAAAAAXRSTlMAQObYZgAAAAlwSFlzAAAOxAAADsQBlSsOGwAAAA9JREFUCJlj+A8EDIOXAADa6X+BHXby5QAAAABJRU5ErkJggg==);
  }
  #svg-filter {
    filter: grayscale(30%);
  }
  a {
    color: #e39777;
  }
  img {
    -webkit-filter: url(#svg-filter);
    filter: grayscale(30%);
    background: #AAA;
  }
}
/**
 * responsive breaks
 */
body {
  background-image: var(--background-image);
  background-attachment: scroll;
  font-family: Lato, Helvetica, Tahoma, Arial, "Hiragino Sans GB", "Heiti SC", "Microsoft YaHei", "WenQuanYi Micro Hei", Heiti, ubuntu, SimSun, sans-serif;
  font-size: 1.125rem;
  line-height: 1.7;
  background-color: white;
  background-color: var(--color-background);
}
@media only screen and (max-width: 768px) {
  body {
    font-size: 1rem;
    line-height: 1.6;
  }
}
body a {
  outline: none;
}
h1,
h2,
h3,
h4,
h5,
h6 {
  font-family: "Roboto Slab", "Droid Serif", AvenirNext-Bold, "Avenir Bold", Georgia, "Times New Roman", Times, "WenQuanYi Micro Hei", Heiti, Impact, Charcoal, serif;
  position: relative;
}
h1:hover .header-anchor::after,
h2:hover .header-anchor::after,
h3:hover .header-anchor::after,
h4:hover .header-anchor::after,
h5:hover .header-anchor::after,
h6:hover .header-anchor::after {
  visibility: visible;
}
h1 .header-anchor,
h2 .header-anchor,
h3 .header-anchor,
h4 .header-anchor,
h5 .header-anchor,
h6 .header-anchor {
  visibility: hidden;
  position: absolute;
  right: 100%;
  color: #AAA;
  color: var(--color-ignore);
  border: none;
}
h1 .header-anchor:hover,
h2 .header-anchor:hover,
h3 .header-anchor:hover,
h4 .header-anchor:hover,
h5 .header-anchor:hover,
h6 .header-anchor:hover {
  border: none;
}
h2 .header-anchor::after {
  content: '# ';
}
h3 .header-anchor::after {
  content: '## ';
}
h4 .header-anchor::after {
  content: '### ';
}
.wrapper {
  max-width: 960px;
  margin: 0 auto;
}
@media only screen and (max-width: 1024px) {
  .wrapper {
    max-width: 800px;
  }
}
@media only screen and (max-width: 980px) {
  .wrapper {
    max-width: 680px;
  }
}
@media only screen and (max-width: 768px) {
  .wrapper {
    max-width: auto;
  }
}
.post-main,
.post-entry,
.page-navigator {
  border: 1px solid #DDD;
  border: 1px solid var(--color-border-light);
  box-shadow: 0 0 2px #DDD;
  box-shadow: 0 0 2px var(--color-border-light);
  background: white;
  background: var(--color-background);
  color: #444;
  color: var(--color-main-text);
  padding: 3% 6%;
  position: relative;
}
@media only screen and (max-width: 768px) {
  .post-main,
  .post-entry,
  .page-navigator {
    padding: 25px 50px;
  }
}
@media only screen and (max-width: 425px) {
  .post-main,
  .post-entry,
  .page-navigator {
    padding: 25px 5px 25px 5px;
  }
}
.post-main {
  margin: 5% auto;
}
@media only screen and (max-width: 980px) {
  .post-main {
    margin: auto;
  }
}
.post-entry {
  margin: 1em auto;
}
@media only screen and (max-width: 768px) {
  .post-entry {
    margin: 25px auto;
  }
}
.post-entry:first-child {
  margin-top: 0;
}
.page-navigator {
  padding: 0.5em 0;
}
.post-entry .post-meta {
  display: flex;
  justify-content: space-between;
  color: #AAA;
  color: var(--color-ignore);
}
.post-entry .post-meta .post-time {
  flex-shrink: 0;
}
.post-entry .post-meta .post-tag-link {
  display: inline-block;
  color: #AAA;
  color: var(--color-ignore);
  margin: 0 4px;
}
.post-entry .post-meta .post-tag-link::before {
  content: '#';
}
.post-entry .post-meta .post-tag-link:hover {
  color: #368CCB;
  color: var(--color-main-link);
  border-color: #368CCB;
  border-color: var(--color-main-link);
}
.nav {
  display: flex;
  flex-direction: row-reverse;
  justify-content: space-between;
}
@media only screen and (max-width: 425px) {
  .nav {
    flex-wrap: wrap;
  }
}
.nav .post-meta {
  color: #AAA;
  color: var(--color-ignore);
}
.nav .post-tag-link {
  color: #AAA;
  color: var(--color-ignore);
  margin: 0 4px;
}
.nav .post-tag-link::before {
  content: '#';
}
.nav .post-tag-link:hover {
  color: #368CCB;
  color: var(--color-main-link);
  border-color: #368CCB;
  border-color: var(--color-main-link);
}
.nav .post-tags {
  display: inline-block;
}
.nav .post-time {
  display: inline-block;
  font-size: 0.8em;
  padding-left: 4px;
}
.sidebar-nav-item {
  text-decoration: none;
  color: #AAA;
  color: var(--color-ignore);
  margin: 0 4px;
}
.sidebar-nav-item:hover {
  color: #368CCB;
  color: var(--color-main-link);
  border-color: #368CCB;
  border-color: var(--color-main-link);
}
h2 {
  border-bottom: 1px solid #DDD;
  border-bottom: 1px solid var(--color-border-light);
  font-weight: 500;
  margin: 1em 0 0.2em;
}
article img,
article video,
article object[type="image/svg+xml"] {
  max-width: 100%;
  display: block;
}
article img.border,
article object[type="image/svg+xml"].border {
  border: 1px solid #DDD;
  border: 1px solid var(--color-border-light);
}
article img.no-border,
article object[type="image/svg+xml"].no-border {
  border: none;
}
article img.center,
article video.center,
article object[type="image/svg+xml"].center {
  margin: 0 auto;
  display: block;
}
article img.full,
article video.full,
article object[type="image/svg+xml"].full {
  width: 100%;
}
article a {
  color: #368CCB;
  color: var(--color-main-link);
  text-decoration: none;
  opacity: 0.9;
  transition: all 0.2s;
}
article a:hover {
  border-bottom: 0.16em solid #2A64C8;
  border-bottom: 0.16em solid var(--color-main-link-hover);
  color: #2A64C8;
  color: var(--color-main-link-hover);
}
article blockquote {
  margin-left: 0;
  padding: 0 1em;
  border-left: 5px solid #5DB1B4;
  border-left: 5px solid var(--color-quote);
}
article blockquote footer {
  font-size: 85%;
}
article blockquote footer cite::before {
  content: "—";
  padding: 0 0.5em;
  font-style: italic;
}
article blockquote ol,
article blockquote ul {
  padding-left: inherit;
}
article blockquote.pullquote.left {
  border: none;
  margin: 0 1em 0 0.5em;
  width: 45%;
}
article blockquote.pullquote.right {
  border: none;
  margin: 0 0.5em 0 1em;
  width: 45%;
}
article .left,
article .alignleft {
  float: left;
}
article .right,
article .alignright {
  float: right;
}
article .video-container {
  position: relative;
  padding-top: 56.9%;
  height: 0;
  overflow: hidden;
}
article .video-container iframe,
article .video-container object,
article .video-container embed {
  position: absolute;
  top: 0;
  left: 0;
  height: 100%;
  width: 100%;
  margin-top: 0;
}
article ol,
article ul {
  padding-left: 0;
}
@media only screen and (max-width: 425px) {
  article ol,
  article ul {
    padding-left: 2em ;
  }
}
article ol ol,
article ul ol,
article ol ul,
article ul ul {
  padding-left: 3em;
}
article li p {
  margin-top: 0;
  margin-bottom: 0;
}
article code {
  background: #EEE;
  background: var(--color-border-even-lighter);
  border: 1px solid #DDD;
  border: 1px solid var(--color-border-light);
  border-radius: 3px;
  font-size: 0.85em;
}
article pre {
  font-size: 0.85em;
}
article table {
  width: 100%;
  border-collapse: collapse;
  border-spacing: 0;
  vertical-align: middle;
}
article table th {
  text-align: left;
  background: #444;
  background: var(--color-main-text);
  color: white;
  color: var(--color-background);
}
article table th,
article table td {
  padding: 5px 8px;
  border: 1px solid #DDD;
  border: 1px solid var(--color-border-light);
}
article table tr:nth-child(2n) {
  background-color: #EEE;
  background-color: var(--color-border-even-lighter);
}
article .article-gallery a.article-gallery-img {
  width: 100%;
  display: none;
}
article .article-gallery a.article-gallery-img:first-child {
  display: block;
}
article .article-gallery a.article-gallery-img img {
  width: 100%;
}
article hr {
  border: none;
  border-bottom: 1px solid #DDD;
  border-bottom: 1px solid var(--color-border-light);
}
/* menu button on small screen */
#menu {
  position: absolute;
  top: -9999px;
  left: -9999px;
}
#toggle-menu {
  cursor: pointer;
  user-select: none;
  display: none;
}
@media only screen and (max-width: 425px) {
  #toggle-menu {
    display: block;
    color: #AAA;
    color: var(--color-ignore);
    font-size: 2em;
    padding: 0 0.5em;
    float: right;
  }
  .nav-items,
  .subtitle {
    display: none;
  }
  #menu:checked ~ .nav-items {
    display: block;
    text-align: right;
  }
  #menu:checked ~ .nav-items a {
    color: #368CCB;
    color: var(--color-main-link);
  }
  #menu:checked ~ .nav-items a:last-child::after {
    display: block;
  }
}
.page-navigator {
  overflow: hidden;
  text-align: center;
  color: #666;
  color: var(--color-main-text-light);
}
.page-navigator .page-number {
  display: inline-block;
}
.page-navigator .current {
  color: #368CCB;
  color: var(--color-main-link);
}
.page-navigator .page-number,
.page-navigator .current,
.page-navigator .prev,
.page-navigator .next {
  padding: 0.1em 0.5em;
}
.page-navigator .prev {
  float: left;
}
.page-navigator .next {
  float: right;
}
.page-navigator a {
  color: inherit;
  text-decoration: none;
}
.page-navigator a:hover {
  background: #DDD;
  background: var(--color-border-light);
  color: #368CCB;
  color: var(--color-main-link);
}
details {
  padding-bottom: 1px;
  background: #EEE;
  background: var(--color-border-even-lighter);
}
details summary {
  padding-left: 8px;
  outline: none;
  cursor: pointer;
}
details[open] summary {
  background: #DDD;
  background: var(--color-border-light);
}
details[open] ol,
details[open] ul {
  padding-left: 40px;
}
details[open] ol ol,
details[open] ul ol,
details[open] ol ul,
details[open] ul ul {
  padding-left: 2em;
}
details[open] summary + figure {
  margin-top: 0;
}
details[open] > figure:last-child {
  margin-bottom: 0;
}
.post-toc details {
  user-select: none;
}
.post-toc details ol {
  list-style: none;
  padding-left: 40px;
}
.post-toc details ol ol,
.post-toc details ol ul {
  padding-left: 2em;
}
.post-toc details[open] summary ~ * {
  animation: sweep 0.2s ease-in-out;
}
@keyframes sweep {
  0% {
    opacity: 0;
    margin-left: -10px;
  }
  100% {
    opacity: 1;
    margin-left: 0px;
  }
}
.header {
  margin-top: 2em;
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  text-decoration: none;
  color: #AAA;
  color: var(--color-ignore);
}
@media only screen and (max-width: 425px) {
  .header {
    margin-top: 0;
    display: block;
  }
}
.header #logo {
  font-family: "Comic Sans MS", cursive, LiSu, sans-serif;
  font-size: 2em;
  color: gray;
  text-decoration: none;
}
.header .subtitle {
  padding-left: 0.5em;
}
.header .nav-items {
  color: gray;
}
.footnotes * {
  word-break: break-all;
}
.footer {
  display: flex;
  justify-content: space-between;
  margin-top: 1em;
  align-items: flex-end;
  color: #AAA;
  color: var(--color-ignore);
}
@media only screen and (max-width: 768px) {
  .footer {
    flex-direction: column;
    align-items: center;
  }
  .footer .social {
    padding: 1em 0.4em;
  }
  .footer .footer-content {
    padding: 0.5em 0.2em;
    text-align: center;
  }
}
.footer a {
  color: #AAA;
  color: var(--color-ignore);
}
.footer a:hover {
  color: #368CCB;
  color: var(--color-main-link);
}
.footer .social {
  display: flex;
  align-items: center;
  justify-content: center;
  color: gray;
}
.footer .social a {
  display: inline-block;
  padding: 0 6px;
  font-size: 20px;
  transition: all 0.2s ease-in-out;
}
.footer .social a:hover {
  background: #DDD;
  background: var(--color-border-light);
  color: #368CCB;
  color: var(--color-main-link);
}
.all-categories ul.tag-box,
.all-tags ul.tag-box {
  list-style: none;
  display: flex;
  flex-wrap: wrap;
}
.all-categories ul.tag-box li,
.all-tags ul.tag-box li {
  margin-bottom: 0.4em;
  margin-right: 0.4em;
}
.all-categories ul.tag-box li a,
.all-tags ul.tag-box li a {
  display: inline;
  text-decoration: none;
  border: 1px dashed #CCC;
  border: 1px dashed var(--color-border);
  border-radius: 3px;
  padding: 0.1em 0.3em;
  outline: none;
  transition: none;
}
.all-categories ul.tag-box li a span,
.all-tags ul.tag-box li a span {
  font-size: 0.8em;
  border-left: 1px solid #CCC;
  border-left: 1px solid var(--color-border);
  margin-left: 0.3em;
  padding: 0 0.3em;
}
.all-categories ul.tag-box li a:hover,
.all-tags ul.tag-box li a:hover {
  background: #666;
  background: var(--color-main-text-light);
  color: #EEE;
  color: var(--color-border-even-lighter);
}
.post-archive .date {
  padding-right: 1em;
  font-size: 0.8em;
}
.loading {
  text-align: center;
}
.spinner {
  display: inline-block;
  position: relative;
  width: 64px;
  height: 64px;
}
.spinner div {
  display: inline-block;
  position: absolute;
  left: 6px;
  width: 13px;
  background: #CCC;
  background: var(--color-border);
  animation: spinner 1.2s cubic-bezier(0, 0.5, 0.5, 1) infinite;
}
.spinner div:nth-child(1) {
  left: 6px;
  animation-delay: -0.24s;
}
.spinner div:nth-child(2) {
  left: 26px;
  animation-delay: -0.12s;
}
.spinner div:nth-child(3) {
  left: 45px;
  animation-delay: 0;
}
@keyframes spinner {
  0% {
    top: 6px;
    height: 51px;
  }
  50%,
  100% {
    top: 19px;
    height: 26px;
  }
}
