/*
 * Solo - A small and beautiful blogging system written in Java.
 * Copyright (c) 2010-present, b3log.org
 *
 * Solo is licensed under Mulan PSL v2.
 * You can use this software according to the terms and conditions of the Mulan PSL v2.
 * You may obtain a copy of Mulan PSL v2 at:
 *         http://license.coscl.org.cn/MulanPSL2
 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
 * See the Mulan PSL v2 for more details.
 */
/*
 * skin style
 *
 * @author <a href="http://vanessa.b3log.org">Liyuan Li</a>
 * @version 0.4.1.1, Feb 9, 2020
 */
/*
 * Solo - A small and beautiful blogging system written in Java.
 * Copyright (c) 2010-present, b3log.org
 *
 * Solo is licensed under Mulan PSL v2.
 * You can use this software according to the terms and conditions of the Mulan PSL v2.
 * You may obtain a copy of Mulan PSL v2 at:
 *         http://license.coscl.org.cn/MulanPSL2
 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
 * See the Mulan PSL v2 for more details.
 */
/**
 * Common style for reset
 *
 * @author <a href="http://vanessa.b3log.org">Liyuan Li</ta>
 * @version 0.2.0.2, Mar 20, 2019
 */
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@400;500;700;900&family=IBM+Plex+Mono:wght@400;500;600;700&family=Archivo+Black&family=Cormorant+Garamond:ital@1&display=swap');

html {
  -webkit-text-size-adjust: 100%;
  -ms-text-size-adjust: 100%;
  height: 100%;
}
body {
  margin: 0;
  font-family: var(--font-cn, "Helvetica Neue", "Luxi Sans", "DejaVu Sans", "Hiragino Sans GB", "Microsoft Yahei", sans-serif);
  font-size: 14px;
  background-color: var(--bg-primary);
  background-image: var(--header-bg);
  background-size: cover;
  background-position: center top;
  background-attachment: fixed;
  -webkit-font-smoothing: antialiased;
  -webkit-overflow-scrolling: touch;
}

/* Design - CSS Variables */
:root {
  --font-display: 'Archivo Black', sans-serif;
  --font-mono: 'IBM Plex Mono', 'Courier New', monospace;
  --font-cn: 'Noto Sans SC', "Helvetica Neue", "Hiragino Sans GB", "Microsoft Yahei", sans-serif;

  /* ===== 二次元玻璃设计令牌 (Anime-glass design tokens) ===== */
  --accent: #ff5d6c;        /* 珊瑚红：取自插画翅膀/天空 */
  --accent-2: #7db8ff;      /* 冰蓝：取自天空 */
  --glass-bg: linear-gradient(155deg, rgba(28,30,46,.42), rgba(16,18,30,.58));
  --glass-edge: rgba(255,255,255,.45);
  --glass-edge-soft: rgba(255,255,255,.14);
  --glass-txt: #fff;
  --glass-txt-soft: rgba(255,255,255,.78);
  --glass-txt-mute: rgba(255,255,255,.55);
  --concrete: #e8e4df;
  --charcoal: #1a1a1a;
  --alert-orange: #ff4d00;
  --electric-blue: #0066ff;
  --grid-line: rgba(0,0,0,0.08);

  /* Theme Variables - Light Mode (Default) */
  --bg-primary: #ffffff;
  --bg-secondary: #f8f9fa;
  --bg-tertiary: #e9ecef;
  --text-primary: #212529;
  --text-secondary: #6c757d;
  --text-inverse: #ffffff;
  --border-color: #dee2e6;
  --shadow-color: rgba(0, 0, 0, 0.1);
  --code-bg: #f4f4f4;
  --card-bg: #ffffff;
  --link-color: #0066ff;
  --link-hover: #0052cc;
  --header-bg: url("../images/light.webp");
  --scrollbar-bg: #f1f1f1;
  --scrollbar-thumb: #c1c1c1;
  --table-stripe: #f8f9fa;
  --blockquote-bg: #f8f9fa;
  --blockquote-border: #0066ff;
  --theme-toggle-bg: rgba(255, 255, 255, 0.9);
  --theme-toggle-border: #1a1a1a;
  --theme-toggle-icon: #1a1a1a;
}

/* Dark Mode Theme */
[data-theme="dark"] {
  --bg-primary: #1a1a1a;
  --bg-secondary: #2d2d2d;
  --bg-tertiary: #3a3a3a;
  --text-primary: #e9ecef;
  --text-secondary: #adb5bd;
  --text-inverse: #1a1a1a;
  --border-color: #495057;
  --shadow-color: rgba(0, 0, 0, 0.4);
  --code-bg: #2d2d2d;
  --card-bg: #2d2d2d;
  --link-color: #4dabf7;
  --link-hover: #339af0;
  --header-bg: url("../images/dark.webp");
  --accent: #ff7a86;
  --accent-2: #8ec5ff;
  --glass-bg: linear-gradient(155deg, rgba(18,20,34,.5), rgba(8,9,16,.66));
  --scrollbar-bg: #2d2d2d;
  --scrollbar-thumb: #555;
  --table-stripe: #2d2d2d;
  --blockquote-bg: #2d2d2d;
  --blockquote-border: #4dabf7;
  --theme-toggle-bg: rgba(26, 26, 26, 0.9);
  --theme-toggle-border: #e9ecef;
  --theme-toggle-icon: #e9ecef;
}
::-moz-selection {
  text-shadow: none;
  background: rgba(65, 131, 196, 0.4);
}
::selection {
  text-shadow: none;
  background: rgba(66, 133, 244, 0.4);
}
ul,
ol {
  margin: 0;
  padding: 0;
}
h1,
h2,
h3,
h4,
h5,
h6,
dl,
dd,
p {
  margin: 0;
}
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
nav,
section {
  display: block;
}
audio,
canvas,
video {
  display: inline-block;
}
audio:not([controls]) {
  display: none;
}
a {
  outline: 0;
  text-decoration: none;
}
a:hover {
  text-decoration: underline;
}
sub,
sup {
  position: relative;
  font-size: 75%;
  line-height: 0;
  vertical-align: baseline;
}
sup {
  top: -0.5em;
}
sub {
  bottom: -0.25em;
}
img {
  max-width: 100%;
  vertical-align: middle;
  border: 0;
  height: auto;
  -ms-interpolation-mode: bicubic;
  overflow: hidden;
  font-size: 12px;
}
button,
input,
select,
textarea {
  margin: 0;
  font-size: 100%;
  vertical-align: middle;
  font-family: "Helvetica Neue", "Luxi Sans", "DejaVu Sans", "Hiragino Sans GB", "Microsoft Yahei", sans-serif;
  outline: none;
}
button,
input {
  line-height: normal;
}
button::-moz-focus-inner,
input::-moz-focus-inner {
  padding: 0;
  border: 0;
}
button,
input[type="button"],
input[type="reset"],
input[type="submit"] {
  cursor: pointer;
  -webkit-appearance: button;
}
input[type="search"] {
  box-sizing: content-box;
  -webkit-appearance: textfield;
}
input[type="search"]::-webkit-search-decoration,
input[type="search"]::-webkit-search-cancel-button {
  -webkit-appearance: none;
}
textarea {
  overflow: auto;
  resize: vertical;
}
svg {
  fill: currentColor;
  display: inline-block;
  stroke-width: 0;
  stroke: currentColor;
  width: 14px;
  height: 14px;
}
blockquote {
  margin: 0;
}
/*
 * Solo - A small and beautiful blogging system written in Java.
 * Copyright (c) 2010-present, b3log.org
 *
 * Solo is licensed under Mulan PSL v2.
 * You can use this software according to the terms and conditions of the Mulan PSL v2.
 * You may obtain a copy of Mulan PSL v2 at:
 *         http://license.coscl.org.cn/MulanPSL2
 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
 * See the Mulan PSL v2 for more details.
 */
/**
 * uesr site
 *
 * @author <a href="http://vanessa.b3log.org">Liyuan Li</ta>
 * @version 0.1.0.0, Mar 20, 2019
 */
.user__site:hover {
  text-decoration: none;
}
/*
 * Solo - A small and beautiful blogging system written in Java.
 * Copyright (c) 2010-present, b3log.org
 *
 * Solo is licensed under Mulan PSL v2.
 * You can use this software according to the terms and conditions of the Mulan PSL v2.
 * You may obtain a copy of Mulan PSL v2 at:
 *         http://license.coscl.org.cn/MulanPSL2
 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
 * See the Mulan PSL v2 for more details.
 */
/**
 * toc
 *
 * @author <a href="http://vanessa.b3log.org">Liyuan Li</ta>
 * @version 0.1.0.0, Mar 20, 2019
 */
.article__toc {
  overflow: auto;
}
.article__toc::-webkit-scrollbar {
  display: none;
}
.article__toc li {
  list-style-type: none;
}
.article__toc li a {
  padding-left: 10px;
  display: block;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.article__toc li a:hover {
  text-decoration: none;
}
.article__toc li.toc__h3 a {
  padding-left: 20px;
}
.article__toc li.toc__h4 a {
  padding-left: 30px;
}
.article__toc li.toc__h5 a {
  padding-left: 40px;
}
.article__toc li.toc__h6 a {
  padding-left: 50px;
}
/*
 * Solo - A small and beautiful blogging system written in Java.
 * Copyright (c) 2010-present, b3log.org
 *
 * Solo is licensed under Mulan PSL v2.
 * You can use this software according to the terms and conditions of the Mulan PSL v2.
 * You may obtain a copy of Mulan PSL v2 at:
 *         http://license.coscl.org.cn/MulanPSL2
 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
 * See the Mulan PSL v2 for more details.
 */
/**
 * Function and font text style
 *
 * @author <a href="http://vanessa.b3log.org">Liyuan Li</ta>
 * @version 0.3.0.0, Jul 17, 2019
 */
.fn__flex {
  display: flex;
}
.fn__flex-center {
  -ms-grid-row-align: center;
      align-self: center;
}
.fn__flex-inline {
  display: inline-flex;
  align-items: center;
}
.fn__flex-1 {
  flex: 1;
  min-width: 1px;
}
.fn__flex-column {
  min-height: 100%;
  display: flex;
  flex-direction: column;
}
.fn__pointer {
  cursor: pointer;
}
.fn__clear:before,
.fn__clear:after {
  display: table;
  content: "";
}
.fn__clear:after {
  clear: both;
}
.fn__left {
  float: left;
}
.fn__right {
  float: right;
}
.fn__none {
  display: none;
}
.fn__hidden {
  visibility: hidden;
}
.fn__ellipsis {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  word-wrap: normal;
}
.ft__13 {
  font-size: 13px;
}
.ft__smaller {
  font-size: 12px;
}
.ft__center {
  text-align: center;
}
.ft__nowrap {
  white-space: nowrap;
}
.vditor {
  --border-color: #d1d5da;
  --second-color: rgba(88, 96, 105, 0.36);
  --panel-background-color: #fff;
  --panel-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
  --toolbar-background-color: #f6f8fa;
  --toolbar-icon-color: #ffffff;
  --toolbar-icon-hover-color: #4285f4;
  --toolbar-height: 35px;
  --toolbar-divider-margin-top: 8px;
  --textarea-background-color: #fafbfc;
  --textarea-text-color: #24292e;
  --resize-icon-color: var(--toolbar-icon-color);
  --resize-background-color: var(--toolbar-background-color);
  --resize-hover-icon-color: var(--panel-background-color);
  --resize-hover-background-color: var(--toolbar-icon-hover-color);
  --count-background-color: rgba(27, 31, 35, 0.05);
  --heading-border-color: #eaecef;
  --blockquote-color: #ffffff;
  --ir-heading-color: #660e7a;
  --ir-title-color: #ffffff;
  --ir-bi-color: #0033b3;
  --ir-link-color: #008000;
  --ir-bracket-color: #0000ff;
  --ir-paren-color: #008000;
}
.vditor--dark {
  --border-color: #141414;
  --second-color: rgba(185, 185, 185, 0.36);
  --panel-background-color: #24292e;
  --panel-shadow: 0 1px 2px rgba(255, 255, 255, 0.2);
  --toolbar-background-color: #1d2125;
  --toolbar-icon-color: #ffffff;
  --toolbar-icon-hover-color: #fff;
  --textarea-background-color: #2f363d;
  --textarea-text-color: #d1d5da;
  --resize-icon-color: var(--border-color);
  --resize-background-color: var(--second-color);
  --resize-hover-icon-color: var(--toolbar-icon-hover-color);
  --resize-hover-background-color: rgba(185, 185, 185, 0.86);
  --count-background-color: rgba(66, 133, 244, 0.36);
  --heading-border-color: var(--textarea-text-color);
  --blockquote-color: var(--toolbar-icon-color);
  --ir-heading-color: #9876aa;
  --ir-title-color: #ffffff;
  --ir-bi-color: #cc7832;
  --ir-link-color: #ffc66d;
  --ir-bracket-color: #287bde;
  --ir-paren-color: #6a8759;
}
/**
 * tool tip.
 *
 * @author <a href="http://vanessa.b3log.org">Liyuan Li</a>
 * @version 0.1.0.0, Jan 25, 2019
 */
@-webkit-keyframes tooltip-appear {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}
@keyframes tooltip-appear {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}
.vditor-tooltipped {
  position: relative;
  cursor: pointer;
}
.vditor-tooltipped::after {
  position: absolute;
  z-index: 1000000;
  display: none;
  padding: 5px 8px;
  font-size: 11px;
  font-weight: normal;
  -webkit-font-smoothing: subpixel-antialiased;
  color: #fff;
  text-align: center;
  text-decoration: none;
  text-shadow: none;
  text-transform: none;
  letter-spacing: normal;
  word-wrap: break-word;
  white-space: pre;
  pointer-events: none;
  content: attr(aria-label);
  background: #3b3e43;
  border-radius: 3px;
  line-height: 16px;
  opacity: 0;
}
.vditor-tooltipped::before {
  position: absolute;
  z-index: 1000001;
  display: none;
  width: 0;
  height: 0;
  color: #3b3e43;
  pointer-events: none;
  content: "";
  border: 5px solid transparent;
  opacity: 0;
}
.vditor-tooltipped--hover::before,
.vditor-tooltipped--hover::after,
.vditor-tooltipped:hover::before,
.vditor-tooltipped:hover::after,
.vditor-tooltipped:active::before,
.vditor-tooltipped:active::after,
.vditor-tooltipped:focus::before,
.vditor-tooltipped:focus::after {
  display: inline-block;
  text-decoration: none;
  -webkit-animation-name: tooltip-appear;
          animation-name: tooltip-appear;
  -webkit-animation-duration: 0.15s;
          animation-duration: 0.15s;
  -webkit-animation-fill-mode: forwards;
          animation-fill-mode: forwards;
  -webkit-animation-timing-function: ease-in;
          animation-timing-function: ease-in;
}
.vditor-tooltipped__s::after,
.vditor-tooltipped__se::after,
.vditor-tooltipped__sw::after {
  top: 100%;
  right: 50%;
  margin-top: 5px;
}
.vditor-tooltipped__s::before,
.vditor-tooltipped__se::before,
.vditor-tooltipped__sw::before {
  top: auto;
  right: 50%;
  bottom: -5px;
  margin-right: -5px;
  border-bottom-color: #3b3e43;
}
.vditor-tooltipped__se::after {
  right: auto;
  left: 50%;
  margin-left: -15px;
}
.vditor-tooltipped__sw::after {
  margin-right: -15px;
}
.vditor-tooltipped__n::after,
.vditor-tooltipped__ne::after,
.vditor-tooltipped__nw::after {
  right: 50%;
  bottom: 100%;
  margin-bottom: 5px;
}
.vditor-tooltipped__n::before,
.vditor-tooltipped__ne::before,
.vditor-tooltipped__nw::before {
  top: -5px;
  right: 50%;
  bottom: auto;
  margin-right: -5px;
  border-top-color: #3b3e43;
}
.vditor-tooltipped__ne::after {
  right: auto;
  left: 50%;
  margin-left: -15px;
}
.vditor-tooltipped__nw::after {
  margin-right: -15px;
}
.vditor-tooltipped__s::after,
.vditor-tooltipped__n::after {
  transform: translateX(50%);
}
.vditor-tooltipped__w::after {
  right: 100%;
  bottom: 50%;
  margin-right: 5px;
  transform: translateY(50%);
}
.vditor-tooltipped__w::before {
  top: 50%;
  bottom: 50%;
  left: -5px;
  margin-top: -5px;
  border-left-color: #3b3e43;
}
.vditor-tooltipped__e::after {
  bottom: 50%;
  left: 100%;
  margin-left: 5px;
  transform: translateY(50%);
}
.vditor-tooltipped__e::before {
  top: 50%;
  right: -5px;
  bottom: 50%;
  margin-top: -5px;
  border-right-color: #3b3e43;
}
@media screen and (max-width: 520px) {
  .vditor-tooltipped:before,
  .vditor-tooltipped:after {
    content: none;
  }
}
/**
 * panel.
 *
 * @author <a href="http://vanessa.b3log.org">Liyuan Li</a>
 * @version 1.0.0.0, Jan 22, 2020
 */
@-webkit-keyframes scale-in {
  0% {
    opacity: 0;
    transform: scale(0.5);
  }
  100% {
    opacity: 1;
    transform: scale(1);
  }
}
@keyframes scale-in {
  0% {
    opacity: 0;
    transform: scale(0.5);
  }
  100% {
    opacity: 1;
    transform: scale(1);
  }
}
.vditor-panel {
  background-color: var(--panel-background-color);
  position: absolute;
  box-shadow: var(--panel-shadow);
  border-radius: 3px;
  padding: 5px;
  z-index: 3;
  font-size: 14px;
  display: none;
  -webkit-user-select: none;
     -moz-user-select: none;
      -ms-user-select: none;
          user-select: none;
  max-width: 320px;
  min-width: 80px;
  -webkit-animation-duration: 0.15s;
          animation-duration: 0.15s;
  -webkit-animation-name: scale-in;
          animation-name: scale-in;
  -webkit-animation-timing-function: cubic-bezier(0.2, 0, 0.13, 1.5);
          animation-timing-function: cubic-bezier(0.2, 0, 0.13, 1.5);
  color: var(--toolbar-icon-color);
}
.vditor-panel--none {
  padding: 0;
  -webkit-animation: none;
          animation: none;
  min-width: auto;
  max-width: none;
  white-space: nowrap;
  opacity: 0.86;
}
.vditor-panel--arrow:before {
  position: absolute;
  width: 0;
  height: 0;
  pointer-events: none;
  content: " ";
  border: 7px solid transparent;
  top: -14px;
  left: 5px;
  border-bottom-color: var(--panel-background-color);
}
.vditor-panel--left {
  right: 0;
}
.vditor-panel--left.vditor-panel--arrow:before {
  right: 5px;
  left: auto;
}
.vditor-input {
  border: 0;
  padding: 3px 5px;
  background-color: var(--panel-background-color);
  font-size: 12px;
  color: var(--textarea-text-color);
}
.vditor-input:focus {
  background-color: var(--toolbar-background-color);
  outline: none;
}
.vditor-icon {
  color: var(--toolbar-icon-color);
  cursor: pointer;
  float: left;
  padding: 4px 5px;
  height: 21px;
  width: 23px;
  background-color: transparent;
  border: 0;
  box-sizing: border-box;
}
.vditor-icon:hover,
.vditor-icon--current {
  color: var(--toolbar-icon-hover-color);
  background-color: transparent;
}
.vditor-icon:focus {
  outline: none;
}
.vditor-icon svg {
  height: 13px !important;
  width: 13px !important;
  float: left;
  fill: currentColor;
  pointer-events: none;
}
.vditor-toolbar {
  background-color: var(--toolbar-background-color);
  border-bottom: 1px solid var(--border-color);
  padding: 0 5px;
  line-height: 1;
}
.vditor-toolbar--pin {
  position: -webkit-sticky;
  position: sticky;
  top: 0;
  z-index: 1;
}
.vditor-toolbar--hide {
  transition: all 0.15s ease-in-out;
  height: 5px;
  overflow: hidden;
}
.vditor-toolbar--hide:hover {
  background-color: var(--toolbar-background-color);
  height: auto;
  overflow: visible;
}
.vditor-toolbar__item {
  float: left;
  position: relative;
}
.vditor-toolbar__item .vditor-tooltipped {
  color: var(--toolbar-icon-color);
  border: 0;
  padding: 10px 5px;
  background-color: transparent;
  height: var(--toolbar-height);
  width: 25px;
  box-sizing: border-box;
  font-size: 0;
}
.vditor-toolbar__item .vditor-tooltipped:focus {
  outline: none;
}
.vditor-toolbar__item .vditor-tooltipped:focus {
  cursor: pointer;
  color: var(--toolbar-icon-hover-color);
}
.vditor-toolbar__item svg {
  fill: currentColor;
  display: inline-block;
  stroke-width: 0;
  stroke: currentColor;
  width: 15px;
  height: 15px;
}
.vditor-toolbar__item input {
  position: absolute;
  width: 25px;
  height: var(--toolbar-height);
  top: 0;
  left: 0;
  cursor: pointer;
  opacity: 0.001;
  overflow: hidden;
}
.vditor-toolbar__divider {
  float: left;
  height: calc(var(--toolbar-height) - (var(--toolbar-divider-margin-top) * 2));
  border-left: 1px solid var(--second-color);
  margin: var(--toolbar-divider-margin-top) 8px;
}
.vditor-toolbar__br {
  width: 100%;
  padding: 0 !important;
  height: 0 !important;
}
.vditor-menu--current {
  color: var(--toolbar-icon-hover-color) !important;
}
.vditor-menu--disabled {
  color: var(--second-color) !important;
  cursor: not-allowed !important;
}
.vditor-emojis {
  display: inline-block;
  overflow: auto;
}
.vditor-emojis::-webkit-scrollbar {
  display: none;
}
.vditor-emojis__tip {
  flex: 1;
  min-width: 1px;
  width: 200px;
  margin-right: 10px;
  color: var(--toolbar-icon-color);
  white-space: nowrap;
  text-overflow: ellipsis;
  overflow: hidden;
}
.vditor-emojis__tail {
  margin-top: 5px;
  font-size: 12px;
  color: var(--toolbar-icon-color);
  display: flex;
}
.vditor-emojis__tail a {
  text-decoration: none;
  color: var(--toolbar-icon-color);
}
.vditor-emojis__tail a:hover {
  color: var(--toolbar-icon-hover-color);
}
.vditor-emojis button {
  cursor: pointer;
  border-radius: 3px;
  float: left;
  height: 30px;
  width: 30px;
  text-align: center;
  line-height: 26px;
  padding: 3px;
  box-sizing: border-box;
  font-size: 16px;
  transition: all 0.15s ease-in-out;
  border: 0;
  margin: 0;
  background-color: transparent;
  overflow: hidden;
}
.vditor-emojis button:focus {
  outline: none;
}
.vditor-emojis button:hover .vditor-emojis__icon {
  display: inline-block;
  transform: scale(1.2);
}
.vditor-emojis img {
  height: 20px;
  width: 20px;
  float: left;
  margin: 3px 0 0 3px;
}
@media screen and (max-width: 520px) {
  .vditor-toolbar__item {
    padding: 0 12px;
  }
  .vditor-panel--left.vditor-panel--arrow:before {
    right: 17px;
  }
}
@media (hover: hover) and (pointer: fine) {
  .vditor-toolbar__item .vditor-tooltipped:hover {
    color: var(--toolbar-icon-hover-color);
  }
}
@-webkit-keyframes slideInDown {
  from {
    transform: translate3d(0, -100%, 0);
    visibility: visible;
  }
  to {
    transform: translate3d(0, 0, 0);
  }
}
@keyframes slideInDown {
  from {
    transform: translate3d(0, -100%, 0);
    visibility: visible;
  }
  to {
    transform: translate3d(0, 0, 0);
  }
}
.vditor {
  display: flex;
  flex-direction: column;
  border: 1px solid var(--border-color);
  border-radius: 3px;
  box-sizing: border-box;
  font-family: "Helvetica Neue", "Luxi Sans", "DejaVu Sans", "Hiragino Sans GB", "Microsoft Yahei", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", "Segoe UI Symbol", "Android Emoji", "EmojiSymbols";
}
.vditor .vditor-copy {
  z-index: auto;
}
.vditor--fullscreen {
  position: fixed;
  top: 0;
  width: 100% !important;
  left: 0;
  height: 100vh !important;
  z-index: 90;
  border-radius: 0;
}
.vditor-content {
  display: flex;
  min-height: 60px;
  flex: 1;
  min-width: 1px;
  position: relative;
}
.vditor-preview {
  flex: 1;
  min-width: 1px;
  overflow: auto;
  margin-left: -1px;
  border-left: 1px solid var(--border-color);
  box-sizing: border-box;
  border-radius: 0 0 3px 0;
  background-color: var(--textarea-background-color);
}
.vditor-preview::-webkit-scrollbar {
  display: none;
}
.vditor-preview__action {
  text-align: center;
  padding: 10px;
  background-color: var(--toolbar-background-color);
}
.vditor-preview__action button {
  background-color: var(--toolbar-background-color);
  color: var(--toolbar-icon-color);
  line-height: 20px;
  border: 0;
  margin: 0 10px;
  cursor: pointer;
  padding: 0 7px;
  font-size: 12px;
}
.vditor-preview__action button.vditor-preview__action--current,
.vditor-preview__action button:hover {
  color: var(--toolbar-icon-hover-color);
  background-color: var(--toolbar-background-color);
}
.vditor-preview__action button:focus {
  outline: none;
}
.vditor-preview__action button svg {
  fill: currentColor;
  height: 15px;
  width: 15px;
  vertical-align: middle;
}
.vditor-preview > .vditor-reset {
  padding: 10px;
  margin: 0 auto;
}
.vditor-preview img:not(.emoji) {
  cursor: pointer;
}
.vditor-devtools {
  display: none;
  background-color: var(--textarea-background-color);
  overflow: auto;
  flex: 1;
  min-width: 1px;
  box-shadow: inset 1px 0 var(--border-color);
  box-sizing: border-box;
  border-radius: 0 0 3px 0;
  padding: 10px;
}
.vditor-counter {
  padding: 3px;
  color: var(--toolbar-icon-color);
  background-color: var(--count-background-color);
  border-radius: 3px;
  font-size: 12px;
  -webkit-user-select: none;
     -moz-user-select: none;
      -ms-user-select: none;
          user-select: none;
  float: right;
  margin: 8px 3px 0 0;
}
.vditor-counter--error {
  color: #d23f31;
  background-color: rgba(210, 63, 49, 0.1);
}
.vditor-resize {
  padding: 3px 0;
  cursor: row-resize;
  -webkit-user-select: none;
     -moz-user-select: none;
      -ms-user-select: none;
          user-select: none;
  position: absolute;
  width: 100%;
}
.vditor-resize--top {
  top: -3px;
}
.vditor-resize--bottom {
  bottom: -3px;
}
.vditor-resize > div {
  height: 3px;
  background-color: var(--resize-background-color);
  transition: all 0.15s ease-in-out;
}
.vditor-resize:hover > div,
.vditor-resize--selected > div {
  background-color: var(--resize-hover-background-color);
}
.vditor-resize:hover svg,
.vditor-resize--selected svg {
  color: var(--resize-hover-icon-color);
}
.vditor-resize svg {
  fill: currentColor;
  stroke-width: 0;
  stroke: currentColor;
  width: 13px;
  height: 3px;
  display: block;
  margin: 0 auto;
  color: var(--resize-icon-color);
}
.vditor-upload {
  position: absolute;
  height: 3px;
  left: 0;
  top: -2px;
  transition: all 0.15s ease-in-out;
  background-color: #4285f4;
}
.vditor-tip {
  position: absolute;
  font-size: 12px;
  top: 10px;
  -webkit-animation-duration: 0.15s;
          animation-duration: 0.15s;
  -webkit-animation-fill-mode: both;
          animation-fill-mode: both;
  left: 50%;
  z-index: 5;
}
.vditor-tip--show {
  display: block;
  -webkit-animation-name: slideInDown;
          animation-name: slideInDown;
}
.vditor-tip__content {
  text-align: left;
  display: inline-block;
  line-height: 16px;
  padding: 3px 10px;
  border-radius: 3px;
  background: var(--toolbar-background-color);
  position: relative;
  margin-left: -50%;
  color: var(--toolbar-icon-color);
  max-width: 100%;
  box-shadow: var(--panel-shadow);
}
.vditor-tip__content ul {
  margin: 2px 0;
  padding: 0 0 0 18px;
}
.vditor-tip__content a {
  color: #4285f4;
}
.vditor-tip__close {
  position: absolute;
  color: var(--toolbar-icon-color);
  top: -7px;
  right: -15px;
  font-weight: bold;
  cursor: pointer;
}
.vditor-tip__close:hover {
  color: var(--toolbar-icon-hover-color);
}
.vditor-img {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  display: flex;
  flex-direction: column;
  z-index: 3;
}
.vditor-img__bar {
  border-bottom: 1px solid var(--border-color);
  background-color: var(--toolbar-background-color);
  text-align: center;
  height: 36px;
  box-sizing: border-box;
  display: flex;
  align-items: center;
  justify-content: center;
}
.vditor-img__btn {
  display: flex;
  align-items: center;
  cursor: pointer;
  margin-left: 24px;
  -webkit-user-select: none;
     -moz-user-select: none;
      -ms-user-select: none;
          user-select: none;
  color: var(--toolbar-icon-color);
}
.vditor-img__btn:hover {
  color: var(--toolbar-icon-hover-color);
}
.vditor-img__btn svg {
  height: 14px;
  width: 14px;
  margin-right: 8px;
  fill: currentColor;
}
.vditor-img__img {
  flex: 1;
  background-color: var(--textarea-background-color);
  overflow: auto;
  cursor: zoom-out;
}
.vditor-img__img img {
  max-width: none;
}
.vditor-hint {
  background-color: var(--panel-background-color);
  position: absolute;
  box-shadow: var(--panel-shadow);
  border-radius: 3px;
  padding: 5px 0;
  z-index: 4;
  line-height: 20px;
  list-style: none;
  font-size: 12px;
  margin: 0;
  max-width: 250px;
  min-width: 80px;
  display: none;
}
.vditor-hint .vditor-hint {
  margin-top: -31px;
  left: 100%;
  right: auto;
}
.vditor-hint .vditor-hint.vditor-panel--left {
  right: 100%;
  left: auto;
}
.vditor-hint button {
  color: var(--toolbar-icon-color);
  display: block;
  padding: 3px 10px;
  border: 0;
  border-radius: 0;
  line-height: 20px;
  width: 100%;
  box-sizing: border-box;
  text-align: left;
  margin: 0;
  background-color: transparent;
  cursor: pointer;
  white-space: nowrap;
  text-overflow: ellipsis;
  overflow: hidden;
}
.vditor-hint button:focus {
  outline: none;
}
.vditor-hint--current,
.vditor-hint button:not(.vditor-menu--disabled):hover {
  background-color: var(--toolbar-background-color) !important;
  color: var(--toolbar-icon-hover-color) !important;
}
.vditor-hint__emoji {
  font-size: 16px;
  float: left;
  margin-right: 3px;
}
.vditor-hint img {
  height: 20px;
  width: 20px;
  float: left;
  margin-right: 3px;
}
.vditor-reset {
  color: #24292e;
  font-variant-ligatures: no-common-ligatures;
  font-family: "Helvetica Neue", "Luxi Sans", "DejaVu Sans", "Hiragino Sans GB", "Microsoft Yahei", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", "Segoe UI Symbol", "Android Emoji", "EmojiSymbols";
  word-wrap: break-word;
  overflow: auto;
  line-height: 1.5;
  font-size: 16px;
  word-break: break-word;
}
.vditor-reset--anchor {
  padding-left: 20px;
}
.vditor-reset--error {
  color: #d23f31;
  font-size: 12px;
  display: block;
  line-height: 16px;
}
.vditor-reset ul ul ul {
  list-style-type: square;
}
.vditor-reset ul ul {
  list-style-type: circle;
}
.vditor-reset ul {
  list-style-type: disc;
}
.vditor-reset ul,
.vditor-reset ol {
  padding-left: 2em;
  margin-top: 0;
  margin-bottom: 16px;
}
.vditor-reset li + li {
  margin-top: 0.25em;
}
.vditor-reset audio {
  max-width: 100%;
}
.vditor-reset audio:focus {
  outline: none;
}
.vditor-reset video {
  max-height: 90vh;
  max-width: 100%;
}
.vditor-reset img {
  max-width: 100%;
}
.vditor-reset img.emoji {
  cursor: auto;
  max-width: 20px;
  vertical-align: sub;
}
.vditor-reset h1,
.vditor-reset h2,
.vditor-reset h3,
.vditor-reset h4,
.vditor-reset h5,
.vditor-reset h6 {
  margin-top: 24px;
  margin-bottom: 16px;
  font-weight: 600;
  line-height: 1.25;
}
.vditor-reset h1:hover .vditor-anchor svg,
.vditor-reset h2:hover .vditor-anchor svg,
.vditor-reset h3:hover .vditor-anchor svg,
.vditor-reset h4:hover .vditor-anchor svg,
.vditor-reset h5:hover .vditor-anchor svg,
.vditor-reset h6:hover .vditor-anchor svg {
  visibility: visible;
}
.vditor-reset h1 {
  font-size: 1.75em;
}
.vditor-reset h2 {
  font-size: 1.55em;
}
.vditor-reset h3 {
  font-size: 1.38em;
}
.vditor-reset h4 {
  font-size: 1.25em;
}
.vditor-reset h5 {
  font-size: 1.13em;
}
.vditor-reset h6 {
  font-size: 1em;
}
.vditor-reset hr {
  height: 2px;
  padding: 0;
  margin: 24px 0;
  background-color: #eaecef;
  border: 0;
}
.vditor-reset p {
  margin-top: 0;
  margin-bottom: 16px;
}
.vditor-reset blockquote {
  padding: 0 1em;
  color: var(--text-secondary);
  border-left: 0.25em solid var(--accent);
  margin: 0 0 16px 0;
}
.vditor-reset blockquote > :first-child {
  margin-top: 0;
}
.vditor-reset blockquote > :last-child {
  margin-bottom: 0;
}
.vditor-reset ins > iframe {
  border: 0;
}
.vditor-reset iframe {
  border: 1px solid #d1d5da;
  max-width: 100%;
  box-sizing: border-box;
}
.vditor-reset iframe.iframe__video {
  min-width: 80%;
  min-height: 36vh;
}
.vditor-reset table {
  border-collapse: collapse;
  empty-cells: show;
  margin-bottom: 16px;
  overflow: auto;
  border-spacing: 0;
  display: block;
  word-break: keep-all;
  width: 100%;
}
.vditor-reset table tr {
  background-color: #fafbfc;
  border-top: 1px solid #c6cbd1;
}
.vditor-reset table td,
.vditor-reset table th {
  padding: 6px 13px;
  border: 1px solid #dfe2e5;
  word-break: normal;
  white-space: nowrap;
}
.vditor-reset table td:first-child::after,
.vditor-reset table th:first-child::after {
  content: "";
  display: inline-block;
  vertical-align: top;
  min-height: 24px;
}
.vditor-reset table th {
  font-weight: 600;
}
.vditor-reset table tbody tr:nth-child(2n) {
  background-color: #fff;
}
.vditor-reset code:not(.hljs):not(.highlight-chroma) {
  padding: 0.2em 0.4em;
  margin: 0;
  font-size: 85%;
  border-radius: 3px;
  font-family: mononoki, Consolas, "Liberation Mono", Menlo, Courier, monospace, "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", "Segoe UI Symbol", "Android Emoji", "EmojiSymbols";
  word-break: break-word;
  background-size: 20px 20px;
  white-space: pre-wrap;
}
.vditor-reset pre {
  margin: 1em 0;
}
.vditor-reset pre > code {
  margin: 0;
  font-size: 85%;
  padding: 0.5em;
  border-radius: 5px;
  display: block;
  overflow: auto;
  white-space: pre;
  font-family: mononoki, Consolas, "Liberation Mono", Menlo, Courier, monospace, "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", "Segoe UI Symbol", "Android Emoji", "EmojiSymbols";
  background-size: 20px 20px;
  background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8AgMAAABHkjHhAAAACVBMVEWAgIBaWlo+Pj7rTFvWAAAAA3RSTlMHCAw+VhR4AAAA+klEQVQoz4WSMW7EQAhFPxKWNh2FCx+HkaZI6RRb5DYbyVfIJXLKDCFoMbaTKSw/8ZnPAPjaH2xgZcUNUDADD7D9LtDBCLZ45fbkvo/30K8yeI64pPwl6znd/3n/Oe93P3ho9qeh72btTFzqkz0rsJle8Zr81OLEwZ1dv/713uWqvu2pl+k0fy7MWtj9r/tN5q/02z89qa/L4Dc2LvM93kezPfXlME/O86EbY/V9GB9ePX8G1/6W+/9h1dq/HGfTfzT3j/xNo7522Bfnqe5jO/fvhVthlfk434v3iO9zG/UOphyPeinPl1J8Gtaa7xPTa/Dk+RIs4deMvwGvcGsmsCvJ0AAAAABJRU5ErkJggg==);
  word-break: initial;
  word-wrap: normal;
}
.vditor-reset pre:hover div.vditor-copy {
  display: block;
}
.vditor-reset .language-math,
.vditor-reset .language-echarts,
.vditor-reset .language-mindmap,
.vditor-reset .language-plantuml,
.vditor-reset .language-mermaid,
.vditor-reset .language-abc,
.vditor-reset .language-flowchart,
.vditor-reset .language-graphviz {
  margin-bottom: 16px;
}
.vditor-reset .language-math mjx-container:focus {
  outline: none;
  cursor: context-menu;
}
.vditor-reset .language-echarts,
.vditor-reset .language-mindmap {
  overflow: hidden;
  height: 420px;
}
.vditor-reset .language-mermaid,
.vditor-reset .language-flowchart,
.vditor-reset .language-graphviz {
  text-align: center;
}
.vditor-reset .language-graphviz parsererror {
  overflow: auto;
}
.vditor-reset kbd {
  display: inline-block;
  padding: 3px 5px;
  font: 11px Consolas, "Liberation Mono", Menlo, Courier, monospace;
  line-height: 10px;
  color: #24292e;
  vertical-align: middle;
  background-color: #fafbfc;
  border: solid 1px #d1d5da;
  border-radius: 3px;
  box-shadow: inset 0 -1px 0 #d1d5da;
}
.vditor-reset summary {
  cursor: pointer;
}
.vditor-reset summary:focus {
  outline: none;
}
.vditor-reset svg {
  height: auto;
  width: auto;
  stroke-width: initial;
}
.vditor-reset p:last-child,
.vditor-reset blockquote:last-child,
.vditor-reset pre:last-child,
.vditor-reset ul:last-child,
.vditor-reset ol:last-child,
.vditor-reset hr:last-child {
  margin-bottom: 0;
}
.vditor-comment {
  border-bottom: 2px solid #f8e6ab;
}
.vditor-comment--focus,
.vditor-comment--hover {
  background-color: #faf1d1;
  border-bottom: 2px solid #ffc60a;
}
.vditor-comment--focus .vditor-comment,
.vditor-comment--hover .vditor-comment {
  border-bottom: 2px solid #ffc60a;
}
.vditor-task {
  list-style: none !important;
  word-break: break-all;
}
.vditor-task input {
  margin: 0 0.2em 0.25em -1.6em;
  font-size: 12px;
  vertical-align: middle;
}
.vditor-copy {
  position: relative;
  display: none;
  z-index: 1;
}
.vditor-copy textarea {
  position: absolute;
  left: -100000px;
  height: 10px;
}
.vditor-copy span {
  cursor: pointer;
  position: absolute;
  right: 15px;
  top: 0.5em;
}
.vditor-copy svg {
  color: #ffffff;
  height: 14px;
  width: 14px !important;
  display: block;
  fill: currentColor;
}
.vditor-linenumber {
  padding-left: 4em !important;
  position: relative;
}
.vditor-linenumber__rows {
  position: absolute;
  pointer-events: none;
  top: 0.5em;
  left: 0;
  width: 3em;
  /* works for line-numbers below 1000 lines */
  -webkit-user-select: none;
     -moz-user-select: none;
      -ms-user-select: none;
          user-select: none;
  counter-reset: linenumber;
}
.vditor-linenumber__rows > span {
  pointer-events: none;
  display: block;
}
.vditor-linenumber__rows > span::before {
  counter-increment: linenumber;
  content: counter(linenumber);
  color: rgba(158, 150, 150, 0.38);
  display: block;
  padding-right: 1em;
  text-align: right;
}
.vditor-speech {
  position: absolute;
  display: none;
  background-color: #f6f8fa;
  border: 1px solid #d1d5da;
  border-radius: 3px;
  padding: 3px;
  cursor: pointer;
  color: #ffffff;
}
.vditor-speech:hover,
.vditor-speech--current {
  color: #4285f4;
}
.vditor-speech svg {
  height: 14px;
  width: 14px;
  fill: currentColor;
  display: block;
  stroke-width: 0;
  stroke: currentColor;
}
.vditor-anchor {
  margin-left: 5px;
}
.vditor-anchor--left {
  float: left;
  padding-right: 4px;
  margin-left: -20px;
}
.vditor-anchor svg {
  visibility: hidden;
}
.vditor-anchor:hover svg {
  visibility: visible;
}
.vditor-anchor:focus {
  outline: none;
}
.vditor-linkcard {
  margin: 31px auto 16px;
  transition: all 0.15s ease-in-out;
  cursor: pointer;
  max-width: 768px;
  padding: 0 10px;
}
.vditor-linkcard a {
  border-radius: 3px;
  background-color: #f6f8fa;
  overflow: hidden;
  max-height: 250px;
  display: flex;
  text-decoration: none;
  flex-wrap: wrap-reverse;
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
}
.vditor-linkcard a:hover {
  box-shadow: 0 0 3px rgba(0, 0, 0, 0.13), 0 3px 6px rgba(0, 0, 0, 0.26);
  text-decoration: none;
}
.vditor-linkcard a:visited .vditor-linkcard__abstract {
  color: rgba(88, 96, 105, 0.36);
}
.vditor-linkcard__info {
  padding: 10px;
  min-width: 200px;
  box-sizing: border-box;
  flex: 1;
}
.vditor-linkcard__title {
  font-size: 14px;
  font-weight: 400;
  color: #24292e;
  display: flex;
  align-items: center;
}
.vditor-linkcard__title img {
  cursor: pointer;
  height: 20px;
  width: 20px;
  border-radius: 3px;
  flex-shrink: 0;
  margin-right: 5px;
}
.vditor-linkcard__abstract {
  word-wrap: break-word;
  word-break: break-all;
  -webkit-line-clamp: 2;
  overflow: hidden;
  text-overflow: ellipsis;
  -webkit-box-orient: vertical;
  display: -webkit-box;
  font-size: 13px;
  color: #ffffff;
  margin: 5px 0;
}
.vditor-linkcard__site {
  font-size: 12px;
  color: #4285f4;
}
.vditor-linkcard__image {
  background-size: cover;
  background-repeat: no-repeat;
  background-position: center center;
  max-width: 250px;
  min-width: 126px;
  cursor: pointer;
  background-color: rgba(88, 96, 105, 0.36);
}
.vditor-footnotes__goto-ref {
  text-decoration: none;
}
.vditor-toc {
  margin-bottom: 16px;
  -webkit-user-select: text;
     -moz-user-select: text;
      -ms-user-select: text;
          user-select: text;
  color: #4285f4;
}
.vditor-toc .vditor-outline__action {
  display: none;
}
.vditor-toc ul {
  list-style: none !important;
  padding-left: 1em;
}
.vditor-toc > ul {
  padding-left: 0;
}
.vditor-toc span {
  cursor: pointer;
}
.vditor-toc li > span > svg {
  width: 0;
  height: 0;
}
.vditor-outline {
  width: 250px;
  border-right: 1px solid var(--border-color);
  background-color: var(--panel-background-color);
  display: none;
  overflow: auto;
}
.vditor-outline--right {
  border-right: 0;
  border-left: 1px solid var(--border-color);
}
.vditor-outline::-webkit-scrollbar {
  display: none;
}
.vditor-outline ul {
  list-style: none !important;
  padding-left: 1em;
  margin: 0;
}
.vditor-outline__content > ul {
  padding-left: 0;
}
.vditor-outline li > span {
  display: flex;
  align-items: center;
  padding: 5px 10px;
  cursor: pointer;
  color: var(--textarea-text-color);
}
.vditor-outline li > span > svg {
  height: 10px;
  width: 10px;
}
.vditor-outline li > span:hover {
  color: var(--toolbar-icon-hover-color);
}
.vditor-outline li > span > span {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.vditor-outline__title {
  border-bottom: 1px dashed var(--border-color);
  padding: 5px 10px;
  color: var(--toolbar-icon-color);
  font-size: 12px;
}
.vditor-outline__action {
  transition: all 0.15s ease-in-out;
  fill: currentColor;
  margin-right: 5px;
  flex-shrink: 0;
}
.vditor-outline__action--close {
  transform: rotate(-90deg);
}
.vditor-wysiwyg {
  box-sizing: border-box;
  flex: 1;
  position: relative;
  width: 100%;
  min-width: 1px;
}
.vditor-wysiwyg pre.vditor-reset {
  background-color: var(--panel-background-color);
  margin: 0;
  white-space: pre-wrap;
  height: 100%;
  box-sizing: border-box;
}
.vditor-wysiwyg pre.vditor-reset[contenteditable="false"] {
  opacity: 0.3;
  cursor: not-allowed;
}
.vditor-wysiwyg pre.vditor-reset:empty::before {
  content: attr(placeholder);
  color: var(--second-color);
}
.vditor-wysiwyg pre.vditor-reset:focus {
  outline: none;
  background-color: var(--textarea-background-color);
}
.vditor-wysiwyg pre.vditor-reset:after {
  content: "";
  height: var(--editor-bottom);
  display: block;
}
.vditor-wysiwyg blockquote:empty::before,
.vditor-wysiwyg pre > code:empty::before,
.vditor-wysiwyg p:empty::before,
.vditor-wysiwyg h1:empty::after,
.vditor-wysiwyg h2:empty::after,
.vditor-wysiwyg h3:empty::after,
.vditor-wysiwyg h4:empty::after,
.vditor-wysiwyg h5:empty::after,
.vditor-wysiwyg h6:empty::after {
  content: ' ';
}
.vditor-wysiwyg code[data-marker="`"] {
  padding-left: 0 !important;
  padding-right: 0 !important;
}
.vditor-wysiwyg__block pre:first-child {
  margin-bottom: -1em;
}
.vditor-wysiwyg__block pre:first-child code {
  color: var(--textarea-text-color);
  height: auto;
  text-align: left;
}
.vditor-wysiwyg__block pre:last-child {
  margin-bottom: 1em;
}
.vditor-wysiwyg__preview {
  cursor: pointer;
  white-space: initial;
  min-height: 27px;
}
.vditor-wysiwyg > .vditor-reset > h1:before,
.vditor-wysiwyg > .vditor-reset > h2:before,
.vditor-wysiwyg > .vditor-reset > h3:before,
.vditor-wysiwyg > .vditor-reset > h4:before,
.vditor-wysiwyg > .vditor-reset > h5:before,
.vditor-wysiwyg > .vditor-reset > h6:before,
.vditor-wysiwyg div.vditor-wysiwyg__block:before,
.vditor-wysiwyg div[data-type="link-ref-defs-block"]:before,
.vditor-wysiwyg div[data-type="footnotes-block"]:before,
.vditor-wysiwyg .vditor-toc:before {
  float: left;
  padding-right: 4px;
  margin-left: -29px;
  content: 'H1';
  font-size: 0.85rem;
  font-weight: normal;
  color: var(--second-color);
}
.vditor-wysiwyg > .vditor-reset > h2:before {
  content: 'H2';
}
.vditor-wysiwyg > .vditor-reset > h3:before {
  content: 'H3';
}
.vditor-wysiwyg > .vditor-reset > h4:before {
  content: 'H4';
}
.vditor-wysiwyg > .vditor-reset > h5:before {
  content: 'H5';
}
.vditor-wysiwyg > .vditor-reset > h6:before {
  content: 'H6';
}
.vditor-wysiwyg div[data-type="link-ref-defs-block"]:before {
  content: '"A"';
}
.vditor-wysiwyg div[data-type="footnotes-block"]:before {
  content: '^F';
}
.vditor-wysiwyg div.vditor-wysiwyg__block:before {
  content: "</>";
}
.vditor-wysiwyg div.vditor-wysiwyg__block[data-type="yaml-front-matter"]:before {
  content: "F";
}
.vditor-wysiwyg div.vditor-wysiwyg__block[data-type="math-block"]:before {
  content: "$$";
}
.vditor-wysiwyg .vditor-toc:before {
  content: "ToC";
}
.vditor-wysiwyg hr {
  display: inline-block;
  margin: 12px 0;
  width: 100%;
}
.vditor-wysiwyg details {
  white-space: initial;
}
.vditor-wysiwyg a {
  cursor: pointer;
}
.vditor-wysiwyg span[data-type="backslash"] > span {
  display: none;
  color: var(--second-color);
}
.vditor-wysiwyg span[data-type="link-ref"],
.vditor-wysiwyg sup[data-type="footnotes-ref"] {
  color: #4285f4;
}
.vditor-wysiwyg span[data-type="toc-h"] {
  color: #4285f4;
  text-decoration: underline;
}
.vditor-wysiwyg div[data-type="footnotes-block"] {
  border-top: 2px solid var(--heading-border-color);
  padding-top: 24px;
  margin-top: 24px;
}
.vditor-wysiwyg div[data-type="link-ref-defs-block"] {
  color: var(--blockquote-color);
}
@media screen and (max-width: 520px) {
  .vditor-wysiwyg h1:before,
  .vditor-wysiwyg h2:before,
  .vditor-wysiwyg h3:before,
  .vditor-wysiwyg h4:before,
  .vditor-wysiwyg h5:before,
  .vditor-wysiwyg h6:before,
  .vditor-wysiwyg div.vditor-wysiwyg__block:before,
  .vditor-wysiwyg div[data-type="link-ref-defs-block"]:before,
  .vditor-wysiwyg div[data-type="footnotes-block"]:before,
  .vditor-wysiwyg .vditor-toc:before {
    content: none;
  }
}
.vditor-ir {
  box-sizing: border-box;
  flex: 1;
  min-width: 1px;
  position: relative;
  width: 100%;
}
.vditor-ir__node[data-type="code-block"]:before,
.vditor-ir__node[data-type="code-block"]:after,
.vditor-ir__node[data-type="yaml-front-matter"]:before,
.vditor-ir__node[data-type="yaml-front-matter"]:after,
.vditor-ir__node[data-type="math-block"]:before,
.vditor-ir__node[data-type="math-block"]:after {
  content: ' ';
  color: var(--second-color);
}
.vditor-ir__node:not(.vditor-ir__node--expand) .vditor-ir__marker {
  padding: 0 !important;
}
.vditor-ir__node:not(.vditor-ir__node--expand)[data-type="a"] {
  cursor: pointer;
}
.vditor-ir__node[data-type="link-ref"],
.vditor-ir__node[data-type="footnotes-ref"] {
  color: #4285f4;
}
.vditor-ir__node[data-type="html-block"] {
  margin-bottom: 1em;
}
.vditor-ir__node .vditor-ir__marker {
  width: 0;
  overflow: hidden;
  display: inline-block;
  height: 0;
  transition: all 0.15s ease-in-out;
}
.vditor-ir__node--hidden .vditor-ir__marker {
  visibility: hidden;
}
.vditor-ir__node--expand .vditor-ir__marker {
  color: var(--second-color);
  display: inline;
  height: auto;
  width: auto;
}
.vditor-ir__node--expand .vditor-ir__marker--hide {
  display: none;
}
.vditor-ir__node--expand .vditor-ir__marker--heading {
  color: var(--ir-heading-color);
}
.vditor-ir__node--expand .vditor-ir__marker--bi {
  color: var(--ir-bi-color);
}
.vditor-ir__node--expand .vditor-ir__marker--link {
  color: var(--ir-link-color);
}
.vditor-ir__node--expand .vditor-ir__marker--title {
  color: var(--ir-title-color);
}
.vditor-ir__node--expand .vditor-ir__marker--bracket {
  color: var(--ir-bracket-color);
  text-decoration: underline;
}
.vditor-ir__node--expand .vditor-ir__marker--paren {
  color: var(--ir-paren-color);
}
.vditor-ir__node--expand .vditor-ir__marker--info {
  color: var(--ir-heading-color);
}
.vditor-ir__node--expand .vditor-ir__marker--pre code {
  color: var(--textarea-text-color);
  height: auto;
  text-align: left;
}
.vditor-ir__node--expand[data-type="code-block"]:before,
.vditor-ir__node--expand[data-type="code-block"]:after {
  content: '```';
}
.vditor-ir__node--expand[data-type="yaml-front-matter"]:before,
.vditor-ir__node--expand[data-type="yaml-front-matter"]:after {
  content: '---';
}
.vditor-ir__node--expand[data-type="math-block"]:before,
.vditor-ir__node--expand[data-type="math-block"]:after {
  content: '$$';
}
.vditor-ir__node span[data-type="code-block-open-marker"],
.vditor-ir__node span[data-type="code-block-close-marker"],
.vditor-ir__node span[data-type="yaml-front-matter-open-marker"],
.vditor-ir__node span[data-type="yaml-front-matter-close-marker"],
.vditor-ir__node span[data-type="math-block-open-marker"],
.vditor-ir__node span[data-type="math-block-close-marker"] {
  display: none;
}
.vditor-ir__preview {
  cursor: pointer;
  white-space: initial;
  min-height: 27px;
}
.vditor-ir__link {
  color: var(--ir-bracket-color);
  text-decoration: underline;
}
.vditor-ir pre.vditor-reset {
  background-color: var(--panel-background-color);
  margin: 0;
  white-space: pre-wrap;
  height: 100%;
  box-sizing: border-box;
}
.vditor-ir pre.vditor-reset[contenteditable="false"] {
  opacity: 0.3;
  cursor: not-allowed;
}
.vditor-ir pre.vditor-reset:empty::before {
  content: attr(placeholder);
  color: var(--second-color);
}
.vditor-ir pre.vditor-reset:focus {
  outline: none;
  background-color: var(--textarea-background-color);
}
.vditor-ir pre.vditor-reset:after {
  content: "";
  height: var(--editor-bottom);
  display: block;
}
.vditor-ir pre.vditor-reset pre {
  margin: 0;
}
.vditor-ir hr {
  display: inline-block;
  margin: 12px 0;
  width: 100%;
}
.vditor-ir blockquote:empty::before,
.vditor-ir pre > code:empty::before,
.vditor-ir p:empty::before,
.vditor-ir h1:empty::after,
.vditor-ir h2:empty::after,
.vditor-ir h3:empty::after,
.vditor-ir h4:empty::after,
.vditor-ir h5:empty::after,
.vditor-ir h6:empty::after {
  content: ' ';
}
.vditor-ir .vditor-reset > h1:before,
.vditor-ir .vditor-reset > h2:before,
.vditor-ir .vditor-reset > h3:before,
.vditor-ir .vditor-reset > h4:before,
.vditor-ir .vditor-reset > h5:before,
.vditor-ir .vditor-reset > h6:before,
.vditor-ir div[data-type="link-ref-defs-block"]:before,
.vditor-ir div[data-type="footnotes-block"]:before,
.vditor-ir .vditor-toc:before {
  float: left;
  padding-right: 4px;
  margin-left: -29px;
  content: 'H1';
  font-size: 0.85rem;
  font-weight: normal;
  color: var(--second-color);
}
.vditor-ir .vditor-reset > h2:before {
  content: 'H2';
}
.vditor-ir .vditor-reset > h3:before {
  content: 'H3';
}
.vditor-ir .vditor-reset > h4:before {
  content: 'H4';
}
.vditor-ir .vditor-reset > h5:before {
  content: 'H5';
}
.vditor-ir .vditor-reset > h6:before {
  content: 'H6';
}
.vditor-ir div[data-type="link-ref-defs-block"] {
  color: var(--blockquote-color);
}
.vditor-ir div[data-type="link-ref-defs-block"]:before {
  content: '"A"';
}
.vditor-ir div[data-type="footnotes-block"] {
  border-top: 2px solid var(--heading-border-color);
  padding-top: 24px;
  margin-top: 24px;
}
.vditor-ir div[data-type="footnotes-block"]:before {
  content: '^F';
}
.vditor-ir div[data-type="footnotes-block"] > div[data-type="footnotes-def"] > ul,
.vditor-ir div[data-type="footnotes-block"] > div[data-type="footnotes-def"] > ol,
.vditor-ir div[data-type="footnotes-block"] > div[data-type="footnotes-def"] > p,
.vditor-ir div[data-type="footnotes-block"] > div[data-type="footnotes-def"] > blockquote,
.vditor-ir div[data-type="footnotes-block"] > div[data-type="footnotes-def"] > pre,
.vditor-ir div[data-type="footnotes-block"] > div[data-type="footnotes-def"] > table,
.vditor-ir div[data-type="footnotes-block"] > div[data-type="footnotes-def"] > hr {
  margin-left: 8px;
}
.vditor-ir .vditor-toc:before {
  content: "ToC";
}
.vditor-ir .vditor-toc span[data-type="toc-h"] {
  color: #4285f4;
  text-decoration: underline;
}
@media screen and (max-width: 520px) {
  .vditor-ir h1:before,
  .vditor-ir h2:before,
  .vditor-ir h3:before,
  .vditor-ir h4:before,
  .vditor-ir h5:before,
  .vditor-ir h6:before,
  .vditor-ir div[data-type="link-ref-defs-block"]:before,
  .vditor-ir div[data-type="footnotes-block"]:before,
  .vditor-ir .vditor-toc:before {
    content: none;
  }
}
.vditor-sv {
  font-family: "Helvetica Neue", "Luxi Sans", "DejaVu Sans", "Hiragino Sans GB", "Microsoft Yahei", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", "Segoe UI Symbol", "Android Emoji", "EmojiSymbols";
  margin: 0 1px 0 0;
  overflow: auto;
  width: 100%;
  flex: 1;
  min-width: 1px;
  border: 0;
  resize: none;
  padding: 10px 9px 10px 10px;
  box-sizing: border-box;
  background-color: var(--panel-background-color);
  outline: 0 none;
  font-size: 16px;
  line-height: 22px;
  color: var(--textarea-text-color);
  border-radius: 0 0 3px 3px;
  font-variant-ligatures: no-common-ligatures;
  white-space: pre-wrap;
  word-break: break-word;
  word-wrap: break-word;
}
.vditor-sv[contenteditable="false"] {
  opacity: 0.3;
  cursor: not-allowed;
}
.vditor-sv:empty::before {
  content: attr(placeholder);
  color: var(--second-color);
}
.vditor-sv:focus {
  background-color: var(--textarea-background-color);
}
.vditor-sv:after {
  content: "";
  height: var(--editor-bottom);
  display: block;
}
.vditor-sv span[data-type="newline"] + span[data-type="text"]:empty {
  display: inherit;
}
.vditor-sv .sup {
  vertical-align: super;
  font-size: smaller;
}
.vditor-sv .strong {
  font-weight: bold;
}
.vditor-sv .em {
  font-style: italic;
}
.vditor-sv .s {
  text-decoration: line-through;
}
.vditor-sv .mark:not(.vditor-sv__marker) {
  background-color: yellow;
  color: black;
}
.vditor-sv .h1 {
  font-size: 1.75em;
  line-height: 44px;
}
.vditor-sv .h2 {
  font-size: 1.55em;
  line-height: 38px;
}
.vditor-sv .h3 {
  font-size: 1.38em;
  line-height: 27px;
}
.vditor-sv .h4 {
  font-size: 1.25em;
  line-height: 25px;
}
.vditor-sv .h5 {
  font-size: 1.13em;
}
.vditor-sv .h6 {
  font-size: 1em;
}
.vditor-sv__marker {
  color: var(--second-color);
}
.vditor-sv__marker--heading {
  color: var(--ir-heading-color);
}
.vditor-sv__marker--bi {
  color: var(--ir-bi-color);
}
.vditor-sv__marker--link {
  color: var(--ir-link-color);
}
.vditor-sv__marker--title {
  color: var(--ir-title-color);
}
.vditor-sv__marker--bracket {
  color: var(--ir-bracket-color);
}
.vditor-sv__marker--paren {
  color: var(--ir-paren-color);
}
.vditor-sv__marker--info {
  color: var(--ir-heading-color);
}
.vditor-sv__marker--strong {
  font-weight: bold;
}
::-moz-selection {
  text-shadow: none;
  background-color: #cbeafb;
}
::selection {
  text-shadow: none;
  background-color: #cbeafb;
}
a {
  color: #77b6ff;
}
.vditor-reset::-webkit-scrollbar {
  display: none;
}
.ft__a {
  color: #ffffff;
}
.ft__a:hover {
  color: rgba(115, 138, 148, 0.8);
}
.fn__progress {
  position: fixed;
  right: 0;
  top: 0;
  left: 0;
  width: 100%;
  height: 2px;
  border: none;
  background: transparent;
  -webkit-appearance: none;
  z-index: 3;
}
.fn__progress::-webkit-progress-value {
  background-color: #77b6ff;
  -webkit-transition: width 0.2s ease 0s, opacity 0.6s ease 0s;
  transition: width 0.2s ease 0s, opacity 0.6s ease 0s;
}
.fn__progress::-webkit-progress-bar {
  background-color: transparent;
}
@-webkit-keyframes fade-in-down {
  0% {
    opacity: 0;
    transform: translateY(-10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
@keyframes fade-in-down {
  0% {
    opacity: 0;
    transform: translateY(-10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
@-webkit-keyframes bounce {
  0%,
  20%,
  50%,
  80%,
  100% {
    -webkit-transform: translateY(0);
    transform: translateY(0);
  }
  40% {
    -webkit-transform: translateY(-10px);
    transform: translateY(-10px);
  }
  60% {
    -webkit-transform: translateY(-5px);
    transform: translateY(-5px);
  }
}
@keyframes bounce {
  0%,
  20%,
  50%,
  80%,
  100% {
    -webkit-transform: translateY(0);
    transform: translateY(0);
  }
  40% {
    -webkit-transform: translateY(-10px);
    transform: translateY(-10px);
  }
  60% {
    -webkit-transform: translateY(-5px);
    transform: translateY(-5px);
  }
}
@-webkit-keyframes bounceInLeft {
  from {
    -webkit-transform-origin: left bottom;
    transform-origin: left bottom;
    -webkit-transform: rotate3d(0, 0, 1, -45deg);
    transform: rotate3d(0, 0, 1, -45deg);
    opacity: 0;
  }
  to {
    -webkit-transform-origin: left bottom;
    transform-origin: left bottom;
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
    opacity: 1;
  }
}
@keyframes bounceInLeft {
  from {
    -webkit-transform-origin: left bottom;
    transform-origin: left bottom;
    -webkit-transform: rotate3d(0, 0, 1, -45deg);
    transform: rotate3d(0, 0, 1, -45deg);
    opacity: 0;
  }
  to {
    -webkit-transform-origin: left bottom;
    transform-origin: left bottom;
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
    opacity: 1;
  }
}
@-webkit-keyframes bounceOutLeft {
  20% {
    opacity: 1;
    transform: translate3d(20px, 0, 0);
  }
  to {
    opacity: 0;
    transform: translate3d(-2000px, 0, 0);
  }
}
@keyframes bounceOutLeft {
  20% {
    opacity: 1;
    transform: translate3d(20px, 0, 0);
  }
  to {
    opacity: 0;
    transform: translate3d(-2000px, 0, 0);
  }
}
@-webkit-keyframes beating {
  0% {
    transform: scale(1);
  }
  20% {
    transform: scale(1.6);
  }
  30% {
    transform: scale(1);
  }
  50% {
    transform: scale(1.6);
  }
  70%,
  to {
    transform: scale(1);
  }
}
@keyframes beating {
  0% {
    transform: scale(1);
  }
  20% {
    transform: scale(1.6);
  }
  30% {
    transform: scale(1);
  }
  50% {
    transform: scale(1.6);
  }
  70%,
  to {
    transform: scale(1);
  }
}
.wrapper {
  max-width: 892px;
  margin: 0 auto;
  padding: 0 10px;
}

/* ========================================
   Top Navigation Bar (Butterfly Style)
   ======================================== */
.top-navbar {
  position: relative;
  z-index: 100;
  background: transparent;
  border-bottom: none;
}

/* Fixed Navigation Bar (All Pages) */
.top-navbar--fixed {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  background: transparent;
}

/* 滚动时添加半透明背景 */
.top-navbar--fixed.scrolled {
  background: rgba(255, 255, 255, 0.85);
  backdrop-filter: blur(10px);
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
}

[data-theme="dark"] .top-navbar--fixed.scrolled {
  background: rgba(20, 20, 30, 0.85);
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.3);
}

/* Content padding for fixed navbar */
body {
  padding-top: 60px;
}

/* Reset padding for index page (has hero header) */
body.has-hero-header {
  padding-top: 0;
}

.navbar-container {
  max-width: 1400px;
  margin: 0 auto;
  padding: 0 20px;
  height: 60px;
  display: flex;
  align-items: center;
  justify-content: space-between;
}

/* Logo & Title */
.navbar-logo {
  display: flex;
  align-items: center;
  gap: 12px;
  text-decoration: none;
  transition: transform 0.2s ease;
}

.navbar-logo:hover {
  transform: scale(1.02);
}

.navbar-logo-img {
  width: 40px;
  height: 40px;
  border-radius: 8px;
  object-fit: cover;
  border: 2px solid transparent;
  transition: all 0.2s ease;
}

.navbar-logo:hover .navbar-logo-img {
  border-color: var(--link-color);
  box-shadow: 0 0 15px rgba(0, 255, 255, 0.3);
}

[data-theme="dark"] .navbar-logo:hover .navbar-logo-img {
  border-color: #00ffff;
  box-shadow: 0 0 15px rgba(0, 255, 255, 0.5);
}

.navbar-title {
  font-size: 20px;
  font-weight: 700;
  color: #ffffff;
  font-family: var(--font-display);
  letter-spacing: 1px;
  text-shadow: 0 2px 10px rgba(0, 0, 0, 0.5);
}

/* Navigation Menu */
.navbar-menu {
  display: flex;
  align-items: center;
  list-style: none;
  margin: 0;
  padding: 0;
  gap: 4px;
}

.navbar-item {
  position: relative;
}

.navbar-link {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 18px;
  color: rgba(255, 255, 255, 0.85);
  text-decoration: none;
  font-size: 15px;
  font-weight: 500;
  border-radius: 25px;
  transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  position: relative;
  font-family: var(--font-mono);
  letter-spacing: 0.5px;
  text-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
}

/* 导航链接图标 */
.navbar-link::before {
  content: '';
  width: 18px;
  height: 18px;
  background-size: contain;
  background-repeat: no-repeat;
  background-position: center;
  opacity: 0.8;
  transition: all 0.3s ease;
}

/* 首页图标 */
.navbar-link[href*="/"]:not([href*="/categories"]):not([href*="/tags"]):not([href*="/archives"]):not([href*="/links"])::before,
.navbar-link[href$="/servePath"]::before {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='white'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6'/%3E%3C/svg%3E");
}

/* 分类图标 */
.navbar-link[href*="/categories"]::before {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='white'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 7h.01M7 3h5c.512 0 1.024.195 1.414.586l7 7a2 2 0 010 2.828l-7 7a2 2 0 01-2.828 0l-7-7A1.994 1.994 0 013 12V7a4 4 0 014-4z'/%3E%3C/svg%3E");
}

/* 标签图标 */
.navbar-link[href*="/tags"]::before {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='white'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M7 7h.01M7 3h5c.512 0 1.024.195 1.414.586l7 7a2 2 0 010 2.828l-7 7a2 2 0 01-2.828 0l-7-7A1.994 1.994 0 013 12V7a4 4 0 014-4z'/%3E%3C/svg%3E");
}

/* 归档图标 */
.navbar-link[href*="/archives"]::before {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='white'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 8h14M5 8a2 2 0 110-4h14a2 2 0 110 4M5 8v10a2 2 0 002 2h10a2 2 0 002-2V8m-9 4h4'/%3E%3C/svg%3E");
}

/* 友情链接图标 */
.navbar-link[href*="/links"]::before {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='white'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M13.828 10.172a4 4 0 00-5.656 0l-4 4a4 4 0 105.656 5.656l1.102-1.101m-.758-4.899a4 4 0 005.656 0l4-4a4 4 0 00-5.656-5.656l-1.1 1.1'/%3E%3C/svg%3E");
}

/* 搜索图标 */
.navbar-link[href*="/search"]::before {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='white'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z'/%3E%3C/svg%3E");
}

.navbar-link:hover {
  color: #ffffff;
  background: rgba(255, 255, 255, 0.15);
  backdrop-filter: blur(10px);
  transform: translateY(-2px);
  box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);
  text-shadow: 0 0 20px rgba(255, 255, 255, 0.5);
}

.navbar-link:hover::before {
  opacity: 1;
  filter: drop-shadow(0 0 5px rgba(255, 255, 255, 0.8));
}

.navbar-link.active {
  color: #ffffff;
  background: rgba(255, 255, 255, 0.2);
  backdrop-filter: blur(10px);
  box-shadow: 0 4px 15px rgba(0, 0, 0, 0.15);
}

.navbar-link.active::before {
  opacity: 1;
}

/* 移除原有的下划线指示器 */
.navbar-link.active::after {
  display: none;
}

/* 深色模式保持一致 */
[data-theme="dark"] .navbar-link {
  color: rgba(255, 255, 255, 0.85);
}

[data-theme="dark"] .navbar-link:hover {
  color: #00ffff;
  background: rgba(0, 255, 255, 0.15);
  text-shadow: 0 0 15px rgba(0, 255, 255, 0.8);
  box-shadow: 0 4px 20px rgba(0, 255, 255, 0.3);
}

[data-theme="dark"] .navbar-link:hover::before {
  filter: drop-shadow(0 0 5px rgba(0, 255, 255, 0.8));
}

[data-theme="dark"] .navbar-link.active {
  color: #00ffff;
  background: rgba(0, 255, 255, 0.2);
  box-shadow: 0 0 20px rgba(0, 255, 255, 0.3);
}

.navbar-link .page-icon {
  width: 16px;
  height: 16px;
  object-fit: contain;
}

/* Right Actions */
.navbar-actions {
  display: flex;
  align-items: center;
  gap: 12px;
}

/* Theme Toggle in Navbar */
.navbar-actions .theme-toggle {
  width: 42px;
  height: 42px;
  border-radius: 50%;
  border: 1px solid rgba(255, 255, 255, 0.2);
  background: rgba(255, 255, 255, 0.1);
  backdrop-filter: blur(10px);
  padding: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  cursor: pointer;
}

.navbar-actions .theme-toggle:hover {
  background: rgba(255, 255, 255, 0.2);
  border-color: rgba(255, 255, 255, 0.4);
  transform: scale(1.1) rotate(15deg);
  box-shadow: 0 0 20px rgba(255, 255, 255, 0.3);
}

.navbar-actions .theme-toggle svg {
  width: 22px;
  height: 22px;
  fill: #ffffff;
  filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.3));
}

/* 深色模式主题切换按钮 */
[data-theme="dark"] .navbar-actions .theme-toggle {
  border-color: rgba(0, 255, 255, 0.3);
  background: rgba(0, 255, 255, 0.1);
}

[data-theme="dark"] .navbar-actions .theme-toggle:hover {
  background: rgba(0, 255, 255, 0.2);
  border-color: #00ffff;
  box-shadow: 0 0 25px rgba(0, 255, 255, 0.5);
}

[data-theme="dark"] .navbar-actions .theme-toggle svg {
  fill: #00ffff;
  filter: drop-shadow(0 0 10px rgba(0, 255, 255, 0.5));
}

/* Mobile Responsive */
@media (max-width: 768px) {
  .navbar-menu {
    display: none;
  }

  .navbar-title {
    display: none;
  }

  .navbar-container {
    padding: 0 15px;
  }

  .top-navbar {
    height: 56px;
  }

  .navbar-container {
    height: 56px;
  }

  .navbar-actions .theme-toggle {
    width: 36px;
    height: 36px;
  }

  /* 移动端侧边栏按钮位置调整 */
  .side__menu {
    top: 15px;
    left: 15px;
    width: 44px;
    height: 44px;
  }

  /* 侧边栏在移动端全宽显示 */
  .side__panel {
    width: 85%;
    max-width: 320px;
  }
}

/* Header styles */
.header {
  position: relative;
  z-index: 1;
}
.header--index {
  height: 100vh;
}
.header--index:before {
  content: "";
  height: 100%;
  position: absolute;
  background: transparent;
  width: 100%;
  top: 0;
}
.header--article {
  display: none;
}
.header__title {
  position: relative;
  align-items: center;
  height: 100%;
  display: flex;
  justify-content: center;
  flex-direction: column;
  z-index: 1;
}
.header__h1 {
  letter-spacing: -2px;
  font-weight: 900;
  font-size: 56px;
  font-family: var(--font-display);
  text-shadow:
    3px 3px 0 var(--charcoal),
    -1px -1px 0 rgba(255,255,255,0.5);
  -webkit-animation: fade-in-down 1s both;
          animation: fade-in-down 1s both;
  -webkit-animation-delay: 0.5s;
          animation-delay: 0.5s;
  text-transform: uppercase;
}
.header__h1 a {
  color: #fff;
}
.header__h1 a:hover {
  text-decoration: none;
  color: var(--alert-orange);
  animation: glitch 0.3s infinite;
}
.header__desc {
  margin-top: 10px;
  color: rgba(255, 255, 255, 0.8);
  line-height: 24px;
  text-shadow: 0 3px 6px rgba(0, 0, 0, 0.3);
  -webkit-animation: fade-in-down 0.9s both;
          animation: fade-in-down 0.9s both;
  -webkit-animation-delay: 0.3s;
          animation-delay: 0.3s;
}
.header__desc--title {
  font-size: 20px;
  font-weight: 400;
}
.header__down {
  -webkit-animation: bounce 4s 2s infinite;
          animation: bounce 4s 2s infinite;
  color: rgba(255, 255, 255, 0.8);
  height: 34px;
  width: 34px;
  position: absolute;
  bottom: 10px;
  cursor: pointer;
}
.header__down:hover {
  color: #fff;
}
.side__menu {
  position: fixed;
  z-index: 9999;
  border-radius: 50%;
  top: 10px;
  left: 20px;
  width: 48px;
  height: 48px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  overflow: hidden;
  background: rgba(255, 255, 255, 0.15);
  border: 1px solid rgba(255, 255, 255, 0.2);
  box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);
}

.side__menu:hover {
  transform: scale(1.1) rotate(90deg);
  background: rgba(255, 255, 255, 0.25);
  border-color: rgba(255, 255, 255, 0.4);
  box-shadow: 0 6px 25px rgba(0, 0, 0, 0.3);
}

.side__menu svg {
  width: 24px;
  height: 24px;
  fill: #ffffff;
  filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.3));
  transition: all 0.3s ease;
}

.side__menu:hover svg {
  filter: drop-shadow(0 0 8px rgba(255, 255, 255, 0.6));
}

@keyframes menu-breathe-light {
  0%, 100% {
    box-shadow:
      0 2px 15px rgba(0, 0, 0, 0.1),
      0 0 0 1px rgba(255, 255, 255, 0.1);
  }
  50% {
    box-shadow:
      0 2px 20px rgba(0, 0, 0, 0.15),
      0 0 0 3px rgba(255, 255, 255, 0.15);
  }
}

/* Deep dark mode menu button */
[data-theme="dark"] .side__menu {
  background: rgba(0, 255, 255, 0.1);
  border-color: rgba(0, 255, 255, 0.3);
  box-shadow: 0 4px 15px rgba(0, 255, 255, 0.2);
}

[data-theme="dark"] .side__menu:hover {
  background: rgba(0, 255, 255, 0.2);
  border-color: #00ffff;
  box-shadow: 0 6px 30px rgba(0, 255, 255, 0.4);
}

[data-theme="dark"] .side__menu svg {
  fill: #00ffff;
  filter: drop-shadow(0 0 5px rgba(0, 255, 255, 0.5));
}

[data-theme="dark"] .side__menu:hover svg {
  filter: drop-shadow(0 0 12px rgba(0, 255, 255, 0.8));
}

/* Hide menu text */
.side__menu span {
  display: none;
}

.side__menu--edge {
  left: -3px;
  background: rgba(255, 255, 255, 0.3);
  box-shadow: 0 0 20px rgba(255, 255, 255, 0.3);
}

.side__menu--edge svg {
  fill: #fff;
  filter: drop-shadow(0 0 8px rgba(255, 255, 255, 0.5));
}

[data-theme="dark"] .side__menu--edge {
  background: #00ffff;
  box-shadow: 0 0 30px rgba(0, 255, 255, 0.8);
}

[data-theme="dark"] .side__menu--edge svg {
  fill: #000;
}
.side__main {
  display: none;
  opacity: 0;
  position: fixed;
  width: 100%;
  height: 100vh;
  z-index: 3;
  transition: all 1s ease;
}
.side__main--show {
  opacity: 1;
}
.side__main--show .side__bg {
  background-color: rgba(0, 0, 0, 0.85);
}
.side__main--show .side__panel {
  animation: cyberSlideIn 0.3s ease both;
}

/* 赛博朋克 - Panel Slide In */
@keyframes cyberSlideIn {
  0% {
    transform: translateX(-100%);
    opacity: 0;
  }
  70% {
    transform: translateX(10px);
    opacity: 1;
  }
  100% {
    transform: translateX(0);
    opacity: 1;
  }
}

/* 赛博朋克 - Menu Slide In */
@keyframes cyberSlideIn {
  0% {
    opacity: 0;
    transform: translateX(-20px);
  }
  100% {
    opacity: 1;
    transform: translateX(0);
  }
}
.side__bg {
  position: fixed;
  width: 100%;
  height: 100vh;
  top: 0;
  left: 0;
  z-index: 3;
  transition: background-color 1s ease;
}
.side__panel {
  width: 300px;
  height: 100vh;
  overflow: auto;
  -webkit-animation-name: bounceOutLeft;
          animation-name: bounceOutLeft;
  -webkit-animation-duration: 1s;
          animation-duration: 1s;
  -webkit-animation-fill-mode: both;
          animation-fill-mode: both;
  position: fixed;
  left: 0;
  z-index: 4;
  top: 0;
  /* 赛博朋克 - 深色科技背景 */
  background: linear-gradient(180deg,
    #0a0a0f 0%,
    #0d0d15 50%,
    #0a0a12 100%
  );
  border-right: 2px solid #00ffff;
  box-shadow:
    0 0 20px rgba(0, 255, 255, 0.3),
    inset 0 0 60px rgba(0, 255, 255, 0.05);
  font-family: "Courier New", "Fira Code", "Consolas", monospace;
}

/* 赛博朋克 - 网格线效果 */
.side__panel::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(rgba(0, 255, 255, 0.03) 1px, transparent 1px),
    linear-gradient(90deg, rgba(0, 255, 255, 0.03) 1px, transparent 1px);
  background-size: 20px 20px;
  pointer-events: none;
  z-index: 0;
}

/* 赛博朋克 - 扫描线效果 */
.side__panel::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(
    180deg,
    transparent 0%,
    rgba(0, 255, 255, 0.02) 50%,
    transparent 100%
  );
  background-size: 100% 4px;
  animation: scanline 8s linear infinite;
  pointer-events: none;
  z-index: 1;
}

@keyframes scanline {
  0% { background-position: 0 0; }
  100% { background-position: 0 100vh; }
}

/* 赛博朋克 - 状态指示器 */
.side__panel .scanline-effect {
  position: absolute;
  top: 15px;
  right: 15px;
  width: 12px;
  height: 12px;
  background: #00ffff;
  border-radius: 2px;
  animation: cyberBlink 1s steps(2) infinite;
  z-index: 100;
  pointer-events: none;
  box-shadow:
    0 0 10px #00ffff,
    0 0 20px #00ffff,
    0 0 30px rgba(0, 255, 255, 0.5);
}

@keyframes cyberBlink {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.3; }
}

/* 移除噪点叠加 */
.side__panel .noise-overlay {
  display: none;
}

.side__panel::-webkit-scrollbar {
  display: none;
}
.side__top {
  position: fixed;
  bottom: 20px;
  right: 20px;
  height: 24px;
  width: 24px;
  cursor: pointer;
  color: #ffffff;
  opacity: 0.5;
  transition: all 0.5s ease-out;
}
.side__top--toc {
  bottom: 54px;
  display: none;
}
.side__top--bottom {
  transform: rotate(-180deg);
}
.side__top:hover {
  opacity: 1;
}
.side__header {
  background: linear-gradient(180deg, rgba(0, 255, 255, 0.05) 0%, transparent 100%);
  width: 100%;
  min-height: 200px;
  padding: 0;
  display: grid;
  grid-template-rows: auto 1fr auto;
  position: relative;
  z-index: 2;
  border-bottom: 1px solid rgba(0, 255, 255, 0.2);
}

/* 赛博朋克 - Status Bar */
.side__status-bar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 12px 15px;
  position: relative;
  background: rgba(0, 0, 0, 0.5);
  border-bottom: 1px solid rgba(0, 255, 255, 0.2);
}

.side__status-text {
  font-family: "Courier New", monospace;
  font-size: 10px;
  letter-spacing: 2px;
  color: #00ffff;
  position: relative;
  text-transform: uppercase;
  text-shadow: 0 0 10px rgba(0, 255, 255, 0.8);
}

.side__status-text::before {
  content: '> ';
  color: #ff00ff;
}

.side__status-indicator {
  width: 10px;
  height: 10px;
  background: #00ffff;
  clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%);
  animation: cyberPulse 2s ease-in-out infinite;
  box-shadow: 0 0 15px #00ffff;
}

@keyframes cyberPulse {
  0%, 100% {
    transform: rotate(0deg) scale(1);
    box-shadow: 0 0 15px #00ffff;
  }
  50% {
    transform: rotate(180deg) scale(1.1);
    box-shadow: 0 0 25px #00ffff, 0 0 35px rgba(0, 255, 255, 0.5);
  }
}

@keyframes brutalistBlink {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.3; }
}

/* Brutalist - Glitch Effect */
@keyframes glitch {
  0% { transform: translate(0); }
  20% { transform: translate(-2px, 2px); }
  40% { transform: translate(-2px, -2px); }
  60% { transform: translate(2px, 2px); }
  80% { transform: translate(2px, -2px); }
  100% { transform: translate(0); }
}

/* Brutalist - Scanline */
@keyframes scanline {
  0% { transform: translateY(-100%); }
  100% { transform: translateY(100vh); }
}

/* Brutalist - Data Flow */
@keyframes dataFlow {
  0% { background-position: 0% 50%; }
  50% { background-position: 100% 50%; }
  100% { background-position: 0% 50%; }
}

/* Brutalist - Typing Cursor */
@keyframes typingCursor {
  0%, 100% { opacity: 1; }
  50% { opacity: 0; }
}

/* 二次元 - Cute Bounce In */
@keyframes cuteBounceIn {
  0% {
    opacity: 0;
    transform: translateX(-30px) scale(0.8);
  }
  60% {
    opacity: 1;
    transform: translateX(5px) scale(1.05);
  }
  100% {
    opacity: 1;
    transform: translateX(0) scale(1);
  }
}

/* Brutalist - Pulse Border */
@keyframes pulseBorder {
  0% { box-shadow: 0 0 0 0 rgba(255, 77, 0, 0.4); }
  70% { box-shadow: 0 0 0 10px rgba(255, 77, 0, 0); }
  100% { box-shadow: 0 0 0 0 rgba(255, 77, 0, 0); }
}

/* Brutalist - Noise Grain */
@keyframes noiseGrain {
  0%, 100% { background-position: 0 0; }
  10% { background-position: -5% -10%; }
  20% { background-position: -15% 5%; }
  30% { background-position: 7% -25%; }
  40% { background-position: -5% 25%; }
  50% { background-position: -15% 10%; }
  60% { background-position: 15% 0%; }
  70% { background-position: 0% 15%; }
  80% { background-position: 3% 35%; }
  90% { background-position: -10% 10%; }
}

/* Brutalist - Strobe Flicker */
@keyframes strobeFlicker {
  0%, 100% { opacity: 1; }
  92% { opacity: 1; }
  93% { opacity: 0.8; }
  94% { opacity: 1; }
  96% { opacity: 0.9; }
  97% { opacity: 1; }
}
.side__logo {
  width: 80px;
  height: 80px;
  border: 2px solid #00ffff;
  margin: 30px auto 15px;
  display: block;
  transition: all 0.3s ease;
  cursor: pointer;
  position: relative;
  z-index: 5;
  clip-path: polygon(
    10% 0%, 90% 0%, 100% 10%, 100% 90%,
    90% 100%, 10% 100%, 0% 90%, 0% 10%
  );
  box-shadow:
    0 0 20px rgba(0, 255, 255, 0.5),
    inset 0 0 20px rgba(0, 255, 255, 0.1);
  background: rgba(0, 0, 0, 0.8);
}

.side__logo:hover {
  border-color: #ff00ff;
  transform: scale(1.05);
  box-shadow:
    0 0 30px rgba(255, 0, 255, 0.6),
    0 0 60px rgba(0, 255, 255, 0.4),
    inset 0 0 30px rgba(255, 0, 255, 0.2);
  animation: logoGlitch 0.3s infinite;
}

.side__logo:active {
  transform: scale(0.98);
}

/* 赛博朋克 - Logo Glitch Effect */
.side__logo.logo-glitch {
  animation: cyberGlitch 0.5s ease;
}

@keyframes cyberGlitch {
  0% { transform: translate(0) scale(1); filter: hue-rotate(0deg); }
  20% { transform: translate(-5px, 5px) scale(1.1); filter: hue-rotate(90deg); }
  40% { transform: translate(5px, -5px) scale(0.9); filter: hue-rotate(180deg); }
  60% { transform: translate(-3px, 3px) scale(1.05); filter: hue-rotate(270deg); }
  80% { transform: translate(3px, -3px) scale(0.95); filter: hue-rotate(360deg); }
  100% { transform: translate(0) scale(1); filter: hue-rotate(0deg); }
}

@keyframes logoGlitch {
  0% { clip-path: polygon(10% 0%, 90% 0%, 100% 10%, 100% 90%, 90% 100%, 10% 100%, 0% 90%, 0% 10%); }
  25% { clip-path: polygon(0% 5%, 100% 0%, 95% 95%, 5% 100%); }
  50% { clip-path: polygon(5% 0%, 100% 5%, 95% 100%, 0% 95%); }
  75% { clip-path: polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%); }
  100% { clip-path: polygon(10% 0%, 90% 0%, 100% 10%, 100% 90%, 90% 100%, 10% 100%, 0% 90%, 0% 10%); }
}
.side__close {
  cursor: pointer;
  height: 24px;
  width: 24px;
  position: absolute;
  right: 15px;
  top: 15px;
  z-index: 10;
  color: #00ffff;
  transition: all 0.2s ease;
  padding: 4px;
  border: 1px solid #00ffff;
  clip-path: polygon(15% 0%, 100% 0%, 85% 100%, 0% 100%);
  background: rgba(0, 0, 0, 0.8);
}
.side__close:hover {
  color: #000;
  background: #00ffff;
  box-shadow: 0 0 20px #00ffff;
  transform: rotate(90deg);
}
.side__name {
  color: #ff00ff;
  text-align: center;
  font-family: "Courier New", monospace;
  font-size: 16px;
  font-weight: bold;
  letter-spacing: 2px;
  margin: 10px 0 5px;
  text-shadow: 0 0 10px rgba(255, 0, 255, 0.7);
  text-transform: uppercase;
}
.side__meta {
  color: #00ffff;
  text-align: center;
  font-family: "Courier New", monospace;
  font-size: 10px;
  letter-spacing: 1px;
  margin-bottom: 15px;
  text-shadow: 0 0 10px rgba(0, 255, 255, 0.5);
}

/* 赛博朋克 - Social Links */
.side__social {
  display: flex;
  justify-content: center;
  gap: 12px;
  margin-top: 20px;
  padding: 0 20px;
}

.side__social-link {
  width: 38px;
  height: 38px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(0, 0, 0, 0.6);
  border: 1px solid #00ffff;
  color: #00ffff;
  transition: all 0.2s ease;
  position: relative;
  clip-path: polygon(10% 0%, 90% 0%, 100% 10%, 100% 90%, 90% 100%, 10% 100%, 0% 90%, 0% 10%);
}

.side__social-link::before {
  display: none;
}

.side__social-link:hover {
  background: #00ffff;
  color: #000;
  transform: translateY(-3px);
  box-shadow:
    0 0 20px #00ffff,
    0 0 40px rgba(0, 255, 255, 0.5);
  border-color: #00ffff;
}

.side__social-link[data-type="github"]:hover {
  background: #00ff88;
  box-shadow: 0 0 20px #00ff88, 0 0 40px rgba(0, 255, 136, 0.5);
  border-color: #00ff88;
}

.side__social-link[data-type="wechat"]:hover {
  background: #ff00ff;
  box-shadow: 0 0 20px #ff00ff, 0 0 40px rgba(255, 0, 255, 0.5);
  border-color: #ff00ff;
}

.side__social-link[data-type="twitter"]:hover {
  background: #ffff00;
  box-shadow: 0 0 20px #ffff00, 0 0 40px rgba(255, 255, 0, 0.5);
  border-color: #ffff00;
}

.side__social-link[data-type="rss"]:hover {
  background: #ff6600;
  box-shadow: 0 0 20px #ff6600, 0 0 40px rgba(255, 102, 0, 0.5);
  border-color: #ff6600;
}

.side__social-link[data-type="discord"]:hover {
  background: #5865f2;
  box-shadow: 0 0 20px #5865f2, 0 0 40px rgba(88, 101, 242, 0.5);
  border-color: #5865f2;
}

/* 赛博朋克 - Signature */
.side__signature {
  text-align: center;
  padding: 15px 20px 10px;
  position: relative;
  z-index: 2;
  border-bottom: 1px solid rgba(0, 255, 255, 0.2);
}

.signature-line {
  font-family: "Courier New", monospace;
  font-size: 11px;
  color: #00ffff;
  position: relative;
  display: inline-block;
  opacity: 0.9;
  text-shadow: 0 0 10px rgba(0, 255, 255, 0.5);
}

.signature-line::before,
.signature-line::after {
  content: '//';
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  color: #ff00ff;
  font-size: 10px;
}

.signature-line::before {
  right: calc(100% + 8px);
}

.signature-line::after {
  left: calc(100% + 8px);
}

/* 赛博朋克 - Tags Section */
.side__tags-section {
  padding: 20px 0;
  border-top: 1px solid rgba(0, 255, 255, 0.2);
  margin-top: 20px;
  position: relative;
  z-index: 2;
}

.side__section-title {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 0 20px 15px;
  font-family: "Courier New", monospace;
}

.title-icon {
  font-size: 12px;
  color: #ff00ff;
}

.title-text {
  font-size: 10px;
  letter-spacing: 3px;
  color: #00ffff;
  font-weight: 500;
  text-transform: uppercase;
}

.side__tags {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  padding: 0 15px;
}

.side__tag {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 5px 10px;
  background: rgba(0, 0, 0, 0.6);
  color: #00ffff;
  font-family: "Courier New", monospace;
  font-size: 10px;
  text-decoration: none;
  transition: all 0.2s ease;
  letter-spacing: 1px;
  border: 1px solid rgba(0, 255, 255, 0.3);
  text-transform: uppercase;
}

.side__tag:hover {
  background: #00ffff;
  color: #000;
  transform: translateY(-2px);
  box-shadow: 0 0 15px #00ffff;
  border-color: #00ffff;
}

.tag-name {
  text-transform: uppercase;
}

.tag-count {
  background: rgba(0, 0, 0, 0.5);
  padding: 2px 5px;
  font-size: 9px;
  color: #ff00ff;
}

.side__tag:hover .tag-count {
  background: #000;
  color: #ff00ff;
}

/* 赛博朋克 - Quick Tags */
.side__quick-tags {
  padding: 20px;
  border-top: 1px solid rgba(0, 255, 255, 0.2);
  background: rgba(0, 255, 255, 0.02);
  position: relative;
  z-index: 2;
}

.quick-tags-label {
  font-family: "Courier New", monospace;
  font-size: 10px;
  letter-spacing: 3px;
  color: #ff00ff;
  font-weight: 500;
  display: block;
  margin-bottom: 12px;
  text-transform: uppercase;
}

.quick-tags-list {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.quick-tag {
  font-family: "Courier New", monospace;
  font-size: 10px;
  padding: 4px 8px;
  background: rgba(0, 0, 0, 0.6);
  border: 1px solid rgba(0, 255, 255, 0.3);
  color: #00ffff;
  text-decoration: none;
  transition: all 0.2s ease;
  letter-spacing: 1px;
  text-transform: uppercase;
}

.quick-tag:hover {
  background: #00ffff;
  color: #000;
  border-color: #00ffff;
  transform: translateY(-2px);
  box-shadow: 0 0 15px #00ffff;
}

.side__title {
  position: relative;
  font-family: "Courier New", monospace;
  font-size: 12px;
  text-align: center;
  letter-spacing: 3px;
  line-height: 1;
  margin: 10px 0;
  color: #ff00ff;
  text-transform: uppercase;
}
.side__title:after {
  content: "";
  position: absolute;
  width: 60%;
  left: 20%;
  height: 1px;
  background: linear-gradient(90deg, transparent, #ff00ff, transparent);
}
.side__title span {
  position: absolute;
  top: -8px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 1;
  padding: 0 10px;
  background: #0a0a0f;
  color: #00ffff;
  font-family: "Courier New", monospace;
  font-size: 10px;
  letter-spacing: 2px;
}
.side__nav {
  flex: 1;
  margin: 20px 0;
  padding: 0 15px;
  font-family: "Courier New", monospace;
  position: relative;
  z-index: 2;
}
.side__nav li {
  height: auto;
  display: flex;
  border-bottom: 1px solid rgba(0, 255, 255, 0.1);
}
.side__nav li:last-child {
  border-bottom: none;
}
.side__nav li:after {
  display: none;
}
.side__nav li a {
  display: flex;
  align-items: center;
  color: #00aaff;
  text-decoration: none;
  line-height: 1.4;
  padding: 10px 15px;
  font-size: 12px;
  letter-spacing: 1px;
  transition: all 0.2s ease;
  position: relative;
  width: 100%;
  text-transform: uppercase;
}
.side__nav li a::before {
  content: '>';
  position: absolute;
  left: 5px;
  font-size: 10px;
  color: #ff00ff;
  opacity: 0;
  transform: translateX(-5px);
  transition: all 0.2s ease;
}
.side__nav li a:after {
  content: '';
  position: absolute;
  right: 10px;
  width: 6px;
  height: 6px;
  background: #00ffff;
  clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%);
  opacity: 0.3;
  transition: all 0.2s ease;
}
.side__nav li a:hover {
  background: rgba(0, 255, 255, 0.1);
  color: #00ffff;
  padding-left: 25px;
  text-shadow: 0 0 10px rgba(0, 255, 255, 0.8);
}
.side__nav li a:hover::before {
  opacity: 1;
  transform: translateX(0);
}
.side__nav li a:hover::after {
  opacity: 1;
  box-shadow: 0 0 10px #00ffff;
}

/* 赛博朋克 - Menu Item Animation */
.side__nav li {
  opacity: 0;
  animation: cyberSlideIn 0.3s ease forwards;
}

.side__nav li:nth-child(1) { animation-delay: 0.1s; }
.side__nav li:nth-child(2) { animation-delay: 0.15s; }
.side__nav li:nth-child(3) { animation-delay: 0.2s; }
.side__nav li:nth-child(4) { animation-delay: 0.25s; }
.side__nav li:nth-child(5) { animation-delay: 0.3s; }
.side__nav li:nth-child(6) { animation-delay: 0.35s; }
.side__nav li:nth-child(7) { animation-delay: 0.4s; }
.side__nav li:nth-child(8) { animation-delay: 0.45s; }
.side__nav li:nth-child(9) { animation-delay: 0.5s; }
.side__nav li:nth-child(10) { animation-delay: 0.55s; }
.side__nav li img {
  display: none;
}
/* Footer - Butterfly Style */
#footer {
  position: relative;
  background: transparent;
  color: #ffffff;
  margin-top: 200px;
  text-align: center;
  padding: 40px 0 20px;
  text-shadow: 0 1px 3px rgba(0,0,0,0.5);
}

#footer-wrap {
  max-width: 900px;
  margin: 0 auto;
  padding: 0 20px;
}

#footer .copyright {
  font-size: 12px;
  margin-bottom: 8px;
  opacity: 0.9;
}

#footer .framework-info {
  font-size: 12px;
  margin-bottom: 8px;
  opacity: 0.8;
}

#footer .framework-info span {
  margin: 0 4px;
}

#footer .footer-separator {
  color: rgba(255,255,255,0.7);
  margin: 0 8px;
}

#footer .footer_custom_text {
  font-size: 12px;
  margin-bottom: 8px;
  opacity: 0.85;
}

#footer .blog-info {
  font-size: 12px;
  opacity: 0.9;
}

#footer a {
  color: #20B2AA;
  text-decoration: none;
  transition: all 0.3s ease;
  position: relative;
  display: inline-block;
}

#footer a:hover {
  color: #3DD1C4;
  text-decoration: none;
}

.footer__heart {
  display: inline-block;
  color: #f5576c;
  animation: heartbeat 1.5s ease-in-out infinite;
  margin: 0 4px;
}

@keyframes heartbeat {
  0%, 100% {
    transform: scale(1);
  }
  10%, 30% {
    transform: scale(0.9);
  }
  20%, 40% {
    transform: scale(1.1);
  }
}

.footer svg {
  height: 20px;
  width: 20px;
  margin: 0 10px 5px;
  fill: currentColor;
  vertical-align: middle;
  opacity: 0.7;
  transition: opacity 0.3s ease;
}

.footer svg:hover {
  opacity: 1;
}

/* Dark mode footer adjustments */
[data-theme="dark"] #footer {
  background: transparent;
}

[data-theme="dark"] #footer a {
  color: var(--link-color);
}

[data-theme="dark"] #footer a:hover {
  color: var(--link-hover);
}
/* ===========================================================
   文章列表：二次元磨砂玻璃卡 (Anime-glass article cards)
   背景插画从卡片透上来，统一暗调玻璃托底，深/浅模式皆适配。
   =========================================================== */
.articles-container {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
  gap: 22px;
  margin: 0;
  max-width: 100%;
}

/* ========== Post Card ========== */
.post-card {
  position: relative;
  display: flex;
  flex-direction: column;
  min-height: 230px;
  background: var(--glass-bg);
  backdrop-filter: blur(18px) saturate(160%);
  -webkit-backdrop-filter: blur(18px) saturate(160%);
  border: 1px solid var(--glass-edge-soft);
  border-radius: 20px;
  padding: 26px 26px 22px;
  color: var(--glass-txt);
  box-shadow: 0 18px 50px -12px rgba(0, 0, 0, .55),
              inset 0 1px 0 var(--glass-edge);
  overflow: hidden;
  opacity: 0;
  transform: translateY(18px);
  animation: cardReveal 0.6s cubic-bezier(.2, .7, .3, 1) forwards;
  transition: transform 0.4s cubic-bezier(.2, .7, .3, 1),
              box-shadow 0.4s ease, border-color 0.4s ease;
}

/* 顶部高光斜纹：让玻璃有"反光面"（z-index:-1 → 浮于背景之上、正文之下；
   .post-card 因 backdrop-filter 已形成层叠上下文，负 z 安全） */
.post-card::after {
  content: '';
  position: absolute;
  inset: 0;
  pointer-events: none;
  border-radius: inherit;
  background: linear-gradient(150deg, rgba(255, 255, 255, .16) 0%, transparent 28%);
  z-index: -1;
}

.post-card:nth-child(1) { animation-delay: 0.05s; }
.post-card:nth-child(2) { animation-delay: 0.11s; }
.post-card:nth-child(3) { animation-delay: 0.17s; }
.post-card:nth-child(4) { animation-delay: 0.23s; }
.post-card:nth-child(5) { animation-delay: 0.29s; }
.post-card:nth-child(6) { animation-delay: 0.35s; }
.post-card:nth-child(n+7) { animation-delay: 0.4s; }

@keyframes cardReveal {
  to {
    opacity: 1;
    transform: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  .post-card {
    animation: none;
    opacity: 1;
    transform: none;
  }
}

/* 卡片悬停效果 */
.post-card:hover {
  transform: translateY(-6px);
  border-color: var(--glass-edge);
  box-shadow: 0 30px 60px -16px rgba(0, 0, 0, .6),
              inset 0 1px 0 var(--glass-edge),
              0 0 0 1px rgba(255, 255, 255, .04),
              0 14px 40px -20px var(--accent);
}

/* 整卡可点（无障碍 stretched-link）：标题内的真实锚点用 ::after 铺满整卡。
   标题保持 static，故 ::after 的包含块是 .post-card，覆盖整张卡。 */
.post-card__title a::after {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 1;
}

/* 分类 / 标签 等可交互元素抬到覆盖层之上，保持各自独立可点 */
.post-card__category,
.post-card__tags {
  position: relative;
  z-index: 2;
}

/* 卡片头部 */
.post-card__header {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 16px;
}

/* 日期显示 */
.post-card__date {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  width: 52px;
  height: 52px;
  flex: none;
  background: rgba(255, 255, 255, .1);
  border: 1px solid var(--glass-edge-soft);
  border-radius: 13px;
  font-family: var(--font-mono, monospace);
}

.date-day {
  font-size: 20px;
  font-weight: 700;
  line-height: 1;
  color: var(--glass-txt);
}

.date-month {
  font-size: 10px;
  font-weight: 600;
  color: var(--accent-2);
  text-transform: uppercase;
  letter-spacing: 0.12em;
  margin-top: 3px;
}

/* 分类标签 - 珊瑚红胶囊 */
.post-card__category {
  font-family: var(--font-mono, monospace);
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  background: var(--accent);
  border-radius: 30px;
  padding: 5px 12px;
  box-shadow: 0 4px 14px -3px var(--accent);
}

.post-card__category a {
  color: #fff;
  text-decoration: none;
  display: block;
}

/* 置顶徽章 - 珊瑚红描边 */
.post-card__badge.pinned {
  margin-left: auto;
  font-family: var(--font-mono, monospace);
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.14em;
  color: var(--accent);
  border: 1px solid var(--accent);
  border-radius: 6px;
  padding: 3px 8px;
}

/* 标题 */
.post-card__title {
  margin: 0 0 10px;
}

.post-card__title a {
  font-size: 1.25rem;
  font-weight: 700;
  line-height: 1.4;
  color: var(--glass-txt);
  text-decoration: none;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  transition: color 0.3s ease;
}

.post-card:hover .post-card__title a {
  color: var(--accent-2);
}

/* 摘要 */
.post-card__excerpt {
  margin: 0 0 18px;
  font-size: 0.9rem;
  line-height: 1.75;
  color: var(--glass-txt-soft);
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/* 标签容器 */
.post-card__tags {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 16px;
}

/* 标签芯片 - 冰蓝磨砂 */
.post-card__tags .tag-chip {
  font-family: var(--font-mono, monospace);
  font-size: 11px;
  color: var(--glass-txt-soft);
  background: rgba(125, 184, 255, .1);
  border: 1px solid rgba(125, 184, 255, .28);
  padding: 4px 10px;
  border-radius: 7px;
  text-decoration: none;
  transition: all 0.25s ease;
}

.post-card__tags .tag-chip::before {
  content: '#';
  color: var(--accent-2);
}

.post-card__tags .tag-chip:hover {
  background: var(--accent-2);
  color: #0b1020;
  border-color: transparent;
}

.post-card__tags .tag-chip:hover::before {
  color: #0b1020;
}

/* 卡片底部 */
.post-card__footer {
  display: flex;
  align-items: center;
  gap: 18px;
  margin-top: auto;
  padding-top: 14px;
  border-top: 1px dashed var(--glass-edge-soft);
  flex-wrap: wrap;
}

.post-meta {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  color: var(--glass-txt-mute);
  font-family: var(--font-mono, monospace);
}

.meta-icon {
  width: 14px;
  height: 14px;
  opacity: 0.6;
}

.post-meta.updated {
  color: var(--accent);
}

/* ========== 分页 ========== */
.pagination {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 8px;
  margin-top: 48px;
}

.pagination-item {
  min-width: 42px;
  height: 42px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0 14px;
  background: rgba(255, 255, 255, .07);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border: 1px solid var(--glass-edge-soft);
  border-radius: 12px;
  font-family: var(--font-mono, monospace);
  font-size: 14px;
  font-weight: 600;
  color: var(--glass-txt);
  text-decoration: none;
  transition: all 0.25s ease;
}

.pagination-item:hover {
  background: rgba(255, 255, 255, .16);
  transform: translateY(-2px);
}

.pagination-current {
  background: var(--accent);
  color: #fff;
  border-color: transparent;
  box-shadow: 0 6px 18px -4px var(--accent);
}

.pagination-dots {
  background: transparent;
  border: none;
  color: var(--glass-txt-mute);
}

/* ========== 响应式 ========== */
@media (max-width: 768px) {
  .articles-container {
    grid-template-columns: 1fr;
    gap: 18px;
    padding: 0 16px;
  }

  .post-card {
    padding: 22px;
  }

  .post-card__title a {
    font-size: 1.15rem;
  }
}

@media (max-width: 480px) {
  .post-card__header {
    flex-wrap: wrap;
  }

  .post-card__date {
    order: -1;
  }
}

/* Pagination - Butterfly Style */
.pagination {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 8px;
  margin-top: 40px;
  margin-bottom: 20px;
}

.pagination__item {
  min-width: 40px;
  height: 40px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: rgba(255, 255, 255, 0.75);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(255, 255, 255, 0.3);
  border-radius: 12px;
  color: #333;
  font-size: 14px;
  font-weight: 500;
  text-decoration: none;
  transition: all 0.3s ease;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}

.pagination__item:hover {
  background: rgba(255, 255, 255, 0.9);
  border-color: #667eea;
  color: #667eea;
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(102, 126, 234, 0.2);
  text-decoration: none;
}

.pagination__item--active {
  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
  border-color: transparent;
  color: #fff;
  box-shadow: 0 4px 15px rgba(102, 126, 234, 0.4);
}

.pagination__item--omit {
  background: transparent;
  border: none;
  color: #ffffff;
  pointer-events: none;
}

/* Dark Mode Pagination */
[data-theme="dark"] .pagination__item {
  background: rgba(0, 0, 0, 0.4);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border-color: rgba(255, 255, 255, 0.1);
  color: rgba(255, 255, 255, 0.8);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
}

[data-theme="dark"] .pagination__item:hover {
  background: rgba(0, 0, 0, 0.5);
  border-color: rgba(102, 126, 234, 0.4);
  color: #fff;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
}

[data-theme="dark"] .pagination__item--active {
  background: linear-gradient(135deg,
    rgba(102, 126, 234, 0.8) 0%,
    rgba(118, 75, 162, 0.8) 100%);
  border-color: transparent;
  color: #fff;
  box-shadow: 0 4px 15px rgba(102, 126, 234, 0.4);
}

[data-theme="dark"] .pagination__item--omit {
  color: rgba(255, 255, 255, 0.5);
}
.other__title {
  margin: 40px 0 10px;
  font-size: 28px;
  text-align: center;
  font-weight: 400;
}
.other__item {
  line-height: 20px;
  margin: 20px 35px 0 35px;
  white-space: nowrap;
  display: block;
  color: #ffffff;
  word-break: break-all;
}
.other__item--archive {
  width: 150px;
  display: inline-block;
}
/* Butterfly 风格的文章推荐区域 */
.article__bottom {
  padding: 40px 0;
  margin-top: 60px;
}

.article__bottom .fn__flex {
  flex-wrap: wrap;
  gap: 20px;
}

.article__bottom .item {
  position: relative;
  flex: 1 1 300px;
  /* 毛玻璃卡片效果 */
  background: rgba(255, 255, 255, 0.1);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border: 1px solid rgba(255, 255, 255, 0.18);
  border-radius: 16px;
  padding: 24px;
  box-sizing: border-box;
  overflow: hidden;
  text-align: center;
  /* 悬浮动画 */
  transition: all 0.35s cubic-bezier(0.4, 0, 0.2, 1);
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
}

.article__bottom .item:hover {
  transform: translateY(-8px) scale(1.02);
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.2);
  border-color: rgba(255, 255, 255, 0.3);
}

/* 渐变光晕效果 */
.article__bottom .item:before {
  content: "";
  position: absolute;
  top: -50%;
  left: -50%;
  width: 200%;
  height: 200%;
  background: radial-gradient(
    circle at 50% 50%,
    rgba(255, 255, 255, 0.08) 0%,
    transparent 50%
  );
  opacity: 0;
  transition: opacity 0.35s;
  pointer-events: none;
}

.article__bottom .item:hover:before {
  opacity: 1;
}

/* 标题带图标 */
.article__bottom .item h3 {
  color: #fff;
  position: relative;
  margin-bottom: 20px;
  font-size: 18px;
  font-weight: 600;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
}

.article__bottom .item h3:before {
  content: "📌";
  font-size: 20px;
  filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.3));
}

/* 不同标题不同图标 */
.article__bottom #externalRelevantArticles h3:before {
  content: "🔗";
}

.article__bottom #randomArticles h3:before {
  content: "🎲";
}

.article__bottom #relevantArticles h3:before {
  content: "📚";
}

.article__bottom .item ul {
  padding-left: 0;
  position: relative;
  list-style: none;
}

/* 文章链接样式 */
.article__bottom .item a {
  display: block;
  border-bottom: 1px solid rgba(255, 255, 255, 0.1);
  padding: 12px 16px;
  color: rgba(255, 255, 255, 0.85);
  margin: 0;
  border-radius: 8px;
  transition: all 0.25s ease;
  position: relative;
  overflow: hidden;
}

.article__bottom .item a:before {
  content: "→";
  position: absolute;
  right: 16px;
  opacity: 0;
  transform: translateX(-10px);
  transition: all 0.25s ease;
  color: #fff;
}

.article__bottom .item a:hover {
  background: rgba(255, 255, 255, 0.15);
  border-color: rgba(255, 255, 255, 0.2);
  color: #fff;
  padding-left: 20px;
  transform: translateX(4px);
  text-decoration: none;
}

.article__bottom .item a:hover:before {
  opacity: 1;
  transform: translateX(0);
}

/* 深色模式适配 */
[data-theme="dark"] .article__bottom .item {
  background: rgba(0, 0, 0, 0.3);
  border-color: rgba(255, 255, 255, 0.1);
}

/* Dark mode for article cards */
[data-theme="dark"] .article-card {
  background: rgba(0, 0, 0, 0.3);
  border-color: rgba(255, 255, 255, 0.1);
}

[data-theme="dark"] .article-card:hover {
  background: rgba(0, 0, 0, 0.4);
  border-color: rgba(255, 255, 255, 0.2);
}

.article__top {
  display: none;
}
.article__top div {
  max-width: 1404px;
  background-size: cover;
  background-position: center center;
  background-image: var(--header-bg);
  filter: sepia(0.2) contrast(1.3);
  height: 100%;
  margin: 0 auto;
}
.article__top canvas {
  position: absolute;
  top: 0;
  height: 100%;
  width: 100%;
}

/* 二次元磨砂玻璃 · 文章信息卡片（暗调托底，白字对比度恒定） */
.article-cover-card {
  background: var(--glass-bg);
  backdrop-filter: blur(18px) saturate(160%);
  -webkit-backdrop-filter: blur(18px) saturate(160%);
  border: 1px solid var(--glass-edge-soft);
  border-radius: 20px;
  padding: 42px 44px;
  margin: 40px auto;
  position: relative;
  z-index: 10;
  box-shadow: 0 18px 50px -12px rgba(0, 0, 0, .55),
              inset 0 1px 0 var(--glass-edge);
  max-width: 900px;
  overflow: hidden;
  transition: transform 0.35s ease, box-shadow 0.35s ease, border-color 0.35s ease;
}

/* 顶部高光斜纹 */
.article-cover-card::after {
  content: '';
  position: absolute;
  inset: 0;
  pointer-events: none;
  border-radius: inherit;
  background: linear-gradient(150deg, rgba(255, 255, 255, .16) 0%, transparent 28%);
}

.article-cover-card > * {
  position: relative;
  z-index: 1;
}

.article-cover-card:hover {
  transform: translateY(-5px);
  box-shadow: 0 30px 60px -16px rgba(0, 0, 0, .6),
              inset 0 1px 0 var(--glass-edge),
              0 14px 40px -20px var(--accent);
  border-color: var(--glass-edge);
}

.article-cover-meta {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 24px;
  flex-wrap: wrap;
  margin-bottom: 24px;
  padding-bottom: 20px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}

.meta-item {
  display: flex;
  align-items: center;
  gap: 8px;
  color: rgba(255, 255, 255, 0.8);
  font-size: 14px;
}

.meta-item a {
  color: rgba(255, 255, 255, 0.9);
  transition: color 0.25s ease;
}

.meta-item a:hover {
  color: #fff;
  text-decoration: none;
}

.meta-icon {
  width: 18px;
  height: 18px;
  opacity: 0.7;
}

.article-cover-title {
  font-size: 32px;
  font-weight: 700;
  color: #fff;
  text-align: center;
  margin: 0 0 24px 0;
  text-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
  line-height: 1.4;
}

.article-cover-badge {
  display: inline-block;
  background: var(--accent);
  color: #fff;
  font-size: 12px;
  font-weight: 600;
  padding: 5px 12px;
  border-radius: 20px;
  margin-left: 12px;
  vertical-align: middle;
  letter-spacing: 0.04em;
  box-shadow: 0 6px 18px -4px var(--accent);
}

.article-cover-tags {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  flex-wrap: wrap;
}

.tag-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: rgba(255, 255, 255, 0.1);
  border: 1px solid rgba(255, 255, 255, 0.15);
  color: rgba(255, 255, 255, 0.9);
  padding: 8px 16px;
  border-radius: 25px;
  font-size: 14px;
  transition: all 0.25s ease;
  text-decoration: none;
}

.tag-chip:hover {
  background: rgba(255, 255, 255, 0.2);
  border-color: rgba(255, 255, 255, 0.3);
  color: #fff;
  transform: translateY(-2px);
  box-shadow: 0 8px 20px rgba(0, 0, 0, 0.15);
  text-decoration: none;
}

.tag-icon {
  width: 14px;
  height: 14px;
  opacity: 0.7;
}

/* 深色模式：--glass-bg 已随主题切换，无需覆盖背景 */

.article__meta {
  padding-top: 40px;
  text-transform: uppercase;
  color: rgba(115, 138, 148, 0.8);
}
.article__meta a {
  color: #ffffff;
}
.article__title {
  font-size: 28px;
  margin: 10px 0;
}
.article__title sup {
  font-size: 14px;
  font-weight: normal;
  color: rgba(115, 138, 148, 0.8);
}
.article__share {
  margin-bottom: 40px;
  position: relative;
  width: 200px;
  margin: 0 auto;
}
.article__share .item {
  color: #fdc200;
  cursor: pointer;
  transition: all 0.3s ease;
  margin: 0 10px;
}
.article__share .item svg {
  height: 20px;
  width: 20px;
}
.article__share .item[data-type="wechat"] {
  color: #3caf36;
}
.article__share .item[data-type="twitter"] {
  color: #18a3fa;
}
.article__share .item[data-type="weibo"] {
  color: #f93;
}
.article__share .item:hover {
  opacity: 0.6;
}
.article__share .item__qr {
  position: absolute;
  top: 24px;
  left: 68px;
  height: 99px;
  width: 99px;
}
.article__content {
  padding: 40px;
  box-sizing: border-box;
}
.post__toc {
  position: fixed;
  top: 84px;
  bottom: 80px;
  overflow: auto;
  padding-left: 3px;
  right: 20px;
  max-width: 160px;
  display: none;
}
.post__toc::-webkit-scrollbar {
  display: none;
}
.post__toc .article__toc {
  overflow: initial;
  border-left: 1px solid rgba(255, 255, 255, 0.2);
  margin: 0;
  font-size: 14px;
  line-height: 24px;
}
.post__toc .article__toc li.current a,
.post__toc .article__toc a:hover {
  color: #fff;
  text-shadow: 0 0 10px rgba(255, 255, 255, 0.5);
}
.post__toc .article__toc a {
  display: block;
  margin-top: -24px;
  color: rgba(255, 255, 255, 0.7);
}
.post__toc li:before {
  position: relative;
  top: -2px;
  left: -4px;
  display: inline-block;
  width: 7px;
  height: 7px;
  content: '';
  border-radius: 50%;
}
.post__toc li.current:before {
  background-color: #fff;
  box-shadow: 0 0 10px rgba(255, 255, 255, 0.6);
}
.comment-body-ref {
  position: absolute;
  left: 80px;
  right: 0;
}
.comment__title {
  text-align: center;
  padding: 40px 0;
  color: #ffffff;
}
.comment #comments {
  position: relative;
}
.comment .item {
  margin-bottom: 40px;
  border: 1px solid rgba(255, 255, 255, 0.8);
  border-radius: 5px;
  background: rgba(255, 255, 255, 0.9);
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.04);
  list-style: none;
  padding: 20px;
}
.comment .item__meta {
  color: rgba(115, 138, 148, 0.8);
  font-size: 12px;
}
.comment .item__avatar {
  float: left;
  height: 40px;
  width: 40px;
  border-radius: 20px;
  border: 1px solid rgba(0, 0, 0, 0.04);
  margin: 0 20px 20px 0;
  background-size: cover;
  background-position: center center;
}
.comment .item__name {
  color: rgba(115, 138, 148, 0.8);
  float: left;
  line-height: 40px;
}
.comment .item__name a {
  color: #ffffff;
}
.comment .item__name a:hover {
  color: rgba(115, 138, 148, 0.8);
}
.comment .item:hover .item__reply {
  display: block;
}
.comment #comment {
  margin-bottom: 30px;
  padding: 20px;
  border-radius: 3px;
  background: rgba(255, 255, 255, 0.9);
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.04);
  border: 0;
  resize: none;
  cursor: pointer;
  width: 100%;
  box-sizing: border-box;
}
@media (max-width: 768px) {
  .pagination {
    margin-top: 5px;
  }
  .pagination__item {
    margin: 0 2px 5px 2px;
  }
  .footer {
    margin-top: 0;
  }
  .footer .wrapper:after {
    content: none;
  }
  .post__toc {
    z-index: 230;
    background: #fff;
    left: 0 !important;
    top: 0 !important;
    width: 100%;
    max-width: initial;
    box-sizing: border-box;
    display: none;
    bottom: 0;
  }
  .articles {
    margin: 20px auto 10px;
    gap: 16px;
  }
  .article-card {
    padding: 0;
  }
  .article-card-title {
    font-size: 18px;
  }
  .article__bottom .item {
    flex: 1 1 100%;
    margin: 0 0 15px 0;
    padding: 20px;
  }
  .article__bottom .item h3 {
    font-size: 16px;
  }
  .article__bottom .item a {
    padding: 10px 12px;
    font-size: 14px;
  }
  .article-cover-card {
    margin: -40px 15px 30px;
    padding: 24px 20px;
  }
  .article-cover-title {
    font-size: 24px;
  }
  .article-cover-meta {
    gap: 16px;
  }
  .article-cover-badge {
    display: block;
    margin: 8px 0 0 0;
    text-align: center;
  }
  .comment__title {
    padding: 10px 0;
  }
  .comment #comment,
  .comment .item {
    margin-bottom: 10px;
    padding: 10px;
  }
  .comment .item__avatar {
    margin: 0 10px 10px 0;
  }
  .side__top--toc {
    display: block;
  }
}

/*
 * Theme Toggle Styles
 */
/* Smooth transition for theme changes */
body,
.header,
.side__main,
.article,
.post,
.card,
button,
input,
textarea,
select,
a {
  transition: background-color 0.3s ease, color 0.3s ease, border-color 0.3s ease, box-shadow 0.3s ease;
}

/* Hide old fixed theme toggle button - now in navbar */
.theme-toggle:not(.navbar-actions .theme-toggle) {
  display: none;
}

/* Theme Toggle Button in Navbar */
.navbar-actions .theme-toggle {
  position: relative;
  top: auto;
  right: auto;
}

/* Breathing animation for idle state */
@keyframes breathe {
  0%, 100% {
    box-shadow:
      0 4px 20px rgba(0, 0, 0, 0.15),
      0 0 0 1px rgba(255, 255, 255, 0.1),
      inset 0 1px 0 rgba(255, 255, 255, 0.2);
  }
  50% {
    box-shadow:
      0 4px 25px rgba(0, 0, 0, 0.2),
      0 0 0 3px rgba(255, 255, 255, 0.15),
      inset 0 1px 0 rgba(255, 255, 255, 0.3);
  }
}

/* Only apply these styles to navbar theme toggle */
.navbar-actions .theme-toggle {
  animation: breathe 3s ease-in-out infinite;
}

/* Dark theme button style */
[data-theme="dark"] .navbar-actions .theme-toggle {
  border: 2px solid rgba(233, 236, 239, 0.3);
  background: rgba(26, 26, 26, 0.15);
  box-shadow:
    0 4px 20px rgba(0, 0, 0, 0.4),
    0 0 0 1px rgba(233, 236, 239, 0.1),
    inset 0 1px 0 rgba(233, 236, 239, 0.1);
}

[data-theme="dark"] .navbar-actions .theme-toggle:hover {
  box-shadow:
    0 6px 30px rgba(77, 171, 247, 0.3),
    0 0 0 4px rgba(77, 171, 247, 0.2),
    inset 0 1px 0 rgba(233, 236, 239, 0.2);
}

/* Hover state - glow effect */
.navbar-actions .theme-toggle:hover {
  animation: none;
  transform: scale(1.08);
  border-color: rgba(255, 255, 255, 0.5);
  box-shadow:
    0 6px 30px rgba(255, 255, 255, 0.3),
    0 0 20px rgba(255, 255, 255, 0.2),
    0 0 0 4px rgba(255, 255, 255, 0.15),
    inset 0 1px 0 rgba(255, 255, 255, 0.3);
}

/* Icon styles */
.navbar-actions .theme-toggle svg {
  width: 20px;
  height: 20px;
  fill: var(--text-secondary);
  transition: all 0.3s ease;
}

[data-theme="dark"] .navbar-actions .theme-toggle svg {
  fill: #e9ecef;
}

/* Icon visibility with fade transition */
.navbar-actions .theme-toggle .sun-icon {
  opacity: 1;
  transform: rotate(0deg) scale(1);
}

.navbar-actions .theme-toggle .moon-icon {
  position: absolute;
  opacity: 0;
  transform: rotate(-90deg) scale(0.5);
}

[data-theme="dark"] .navbar-actions .theme-toggle .sun-icon {
  opacity: 0;
  transform: rotate(90deg) scale(0.5);
}

[data-theme="dark"] .navbar-actions .theme-toggle .moon-icon {
  opacity: 1;
  transform: rotate(0deg) scale(1);
}

/* Theme transition for all elements */
html {
  transition: background-color 0.5s ease;
}

body,
.header,
.side__main,
.article,
.post,
.card,
button,
input,
textarea,
select,
a {
  transition: background-color 0.5s ease, color 0.3s ease, border-color 0.3s ease, box-shadow 0.3s ease;
}

/* Toast notification */
.theme-toast {
  position: fixed;
  top: 85px;
  right: 23px;
  z-index: 9998;
  padding: 10px 16px;
  border-radius: 12px;
  font-size: 14px;
  font-weight: 500;
  display: flex;
  align-items: center;
  gap: 8px;
  opacity: 0;
  transform: translateY(-10px);
  pointer-events: none;
  transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}

.theme-toast.show {
  opacity: 1;
  transform: translateY(0);
}

.theme-toast::before {
  content: '';
  position: absolute;
  bottom: -6px;
  right: 18px;
  width: 12px;
  height: 12px;
  background: inherit;
  transform: rotate(45deg);
  border-radius: 2px;
}

.theme-toast.light {
  background: rgba(255, 255, 255, 0.95);
  color: #1a1a1a;
  border: 1px solid rgba(0, 0, 0, 0.1);
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);
}

.theme-toast.dark {
  background: rgba(26, 26, 26, 0.95);
  color: #e9ecef;
  border: 1px solid rgba(233, 236, 239, 0.2);
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.4);
}

.theme-toast__icon {
  font-size: 16px;
}

/* Apply theme variables to body and main elements */
body {
  background-color: var(--bg-primary);
  color: var(--text-primary);
}

a {
  color: var(--link-color);
}

a:hover {
  color: var(--link-hover);
}

/* Scrollbar styling */
::-webkit-scrollbar {
  width: 10px;
  height: 10px;
}

::-webkit-scrollbar-track {
  background: var(--scrollbar-bg);
}

::-webkit-scrollbar-thumb {
  background: var(--scrollbar-thumb);
  border-radius: 5px;
}

::-webkit-scrollbar-thumb:hover {
  background: var(--text-secondary);
}

/* Code blocks */
pre, code {
  background-color: var(--code-bg) !important;
}

/* Tables */
table {
  border-color: var(--border-color);
}

table tr:nth-child(even) {
  background-color: var(--table-stripe);
}

/* Blockquote */
blockquote {
  background-color: var(--blockquote-bg);
  border-left: 4px solid var(--blockquote-border);
  color: var(--text-secondary);
}

/* Cards and containers */
.article__content,
.post,
.article-card,
.comment .item,
.comment #comment {
  background-color: var(--card-bg);
  border-color: var(--border-color);
}

/* Input elements */
input, textarea, select {
  background-color: var(--bg-secondary);
  color: var(--text-primary);
  border-color: var(--border-color);
}

input:focus, textarea:focus, select:focus {
  outline-color: var(--link-color);
  border-color: var(--link-color);
}

/* Selection */
::selection {
  background-color: var(--link-color);
  color: var(--text-inverse);
}

::-moz-selection {
  background-color: var(--link-color);
  color: var(--text-inverse);
}

/* ============================================================
   可读性优化 (Readability pass) — 2026-06，仅本地
   目标：把铺满全站的头图退成安静底纹，正文/卡片/导航更清晰。
   全部为追加覆盖样式，删掉本段即可完全回滚。
   ============================================================ */

/* 1) 背景图压暗 + 轻模糊蒙层：fixed 大图退为安静背景，白字到处都能读
   （fixed 覆盖整个视口，z-index:-1 → 浮于 body 背景图之上、所有内容之下） */
body::before {
  content: "";
  position: fixed;
  inset: 0;
  background: linear-gradient(180deg, rgba(10, 11, 20, .46), rgba(10, 11, 20, .58));
  -webkit-backdrop-filter: blur(2px) saturate(.92);
          backdrop-filter: blur(2px) saturate(.92);
  z-index: -1;
  pointer-events: none;
}
[data-theme="dark"] body::before {
  background: linear-gradient(180deg, rgba(4, 5, 11, .60), rgba(4, 5, 11, .70));
}

/* 2) 玻璃卡片更实：提高不透明度，正文/文章卡片对比度更高（.post-card、文章正文卡都用此变量） */
:root {
  --glass-bg: linear-gradient(155deg, rgba(22, 24, 38, .74), rgba(12, 14, 24, .82));
  --glass-edge-soft: rgba(255, 255, 255, .18);
}
[data-theme="dark"] {
  --glass-bg: linear-gradient(155deg, rgba(14, 16, 28, .80), rgba(6, 7, 14, .86));
}

/* 3) 顶部导航：默认就给一层半透明 + 模糊（之前全透明，非首页几乎不可见），滚动后更实 */
.top-navbar--fixed {
  background: rgba(14, 16, 26, .30);
  -webkit-backdrop-filter: blur(8px) saturate(140%);
          backdrop-filter: blur(8px) saturate(140%);
  border-bottom: 1px solid rgba(255, 255, 255, .08);
  transition: background .25s ease, box-shadow .25s ease;
}
.top-navbar--fixed.scrolled {
  background: rgba(14, 16, 26, .82);
  -webkit-backdrop-filter: blur(14px) saturate(150%);
          backdrop-filter: blur(14px) saturate(150%);
  box-shadow: 0 2px 16px rgba(0, 0, 0, .28);
}
[data-theme="dark"] .top-navbar--fixed.scrolled {
  background: rgba(6, 7, 14, .86);
}
.navbar-link:hover {
  background: rgba(255, 255, 255, .12);
  border-radius: 8px;
}

/* 4) 首页 hero 标题蒙层：中部柔和压暗，标题/副标题在任何背景图上都清晰 */
.header--index:before {
  background: radial-gradient(70% 55% at 50% 52%,
              rgba(0, 0, 0, .30) 0%, rgba(0, 0, 0, 0) 72%);
  z-index: 0;
}

/* ============================================================
   友链空状态 + 正文排版优化 — 2026-06，仅本地追加
   删掉本段即可完全回滚。
   ============================================================ */

/* === 友链页空状态：玻璃卡片 + 柔和图标，替代原本的空白页 === */
.links-empty {
  max-width: 540px;
  margin: 40px auto 72px;
  padding: 56px 36px;
  text-align: center;
  background: var(--glass-bg);
  border: 1px solid var(--glass-edge-soft);
  border-radius: 22px;
  -webkit-backdrop-filter: blur(14px) saturate(150%);
          backdrop-filter: blur(14px) saturate(150%);
  box-shadow: 0 24px 60px -26px rgba(0, 0, 0, .65),
              inset 0 1px 0 var(--glass-edge-soft);
  color: var(--glass-txt-soft);
  animation: linksEmptyIn .5s ease both;
}
@keyframes linksEmptyIn {
  from { opacity: 0; transform: translateY(14px); }
  to   { opacity: 1; transform: none; }
}
.links-empty__icon {
  width: 76px;
  height: 76px;
  margin: 0 auto 22px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  color: var(--accent-2);
  background: radial-gradient(circle at 50% 38%,
              rgba(125, 184, 255, .22), rgba(125, 184, 255, 0) 70%);
  filter: drop-shadow(0 8px 18px rgba(125, 184, 255, .30));
}
.links-empty__icon svg { width: 44px; height: 44px; display: block; }
.links-empty__title {
  margin: 0 0 12px;
  font-size: 21px;
  font-weight: 600;
  color: var(--glass-txt);
}
.links-empty__desc {
  margin: 0 0 26px;
  font-size: 15px;
  line-height: 1.75;
  color: var(--glass-txt-mute);
}
.links-empty__cta {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 11px 24px;
  border-radius: 999px;
  font-size: 14px;
  font-weight: 600;
  color: #fff;
  background: linear-gradient(135deg, var(--accent), var(--accent-2));
  box-shadow: 0 12px 26px -12px var(--accent);
  transition: transform .2s ease, box-shadow .2s ease;
}
.links-empty__cta:hover {
  transform: translateY(-2px);
  box-shadow: 0 18px 34px -12px var(--accent);
  color: #fff;
}
.links-empty__cta svg { width: 18px; height: 18px; }

/* === 正文排版：行宽 / 行高 / 字号优化，提升中文长文阅读体验 ===
   仅作用于文章正文卡 .article__content，不影响编辑器预览等其它 vditor-reset 场景。 */
.article__content {
  font-size: 17px;
  line-height: 1.9;
  letter-spacing: .015em;
}
/* 行宽：把正文测量宽度收到舒适区间（约 38em ≈ 36~40 个汉字/行），
   文字列居中，两侧自然留白；图片 / 表格 / 代码块 / 媒体保持全宽。 */
.article__content > p,
.article__content > ul,
.article__content > ol,
.article__content > dl,
.article__content > h1,
.article__content > h2,
.article__content > h3,
.article__content > h4,
.article__content > h5,
.article__content > h6,
.article__content > blockquote {
  max-width: 38em;
  margin-left: auto;
  margin-right: auto;
}
.article__content > p {
  margin-bottom: 1.15em;
}
/* 标题节奏：与正文拉开间距，层级更清晰 */
.article__content > h1,
.article__content > h2,
.article__content > h3,
.article__content > h4 {
  line-height: 1.4;
  margin-top: 1.9em;
  margin-bottom: .7em;
}
.article__content > h2 {
  padding-bottom: .3em;
  border-bottom: 1px solid var(--border-color);
}
/* 列表内项目行距略放宽，避免中文列表过于拥挤 */
.article__content li + li {
  margin-top: .4em;
}

@media (max-width: 768px) {
  .article__content {
    font-size: 16px;
    line-height: 1.85;
    padding: 24px 18px;
  }
  /* 小屏不再收窄，铺满卡片可读区 */
  .article__content > p,
  .article__content > ul,
  .article__content > ol,
  .article__content > dl,
  .article__content > h1,
  .article__content > h2,
  .article__content > h3,
  .article__content > h4,
  .article__content > h5,
  .article__content > h6,
  .article__content > blockquote {
    max-width: none;
  }
  .links-empty {
    margin: 28px 12px 56px;
    padding: 44px 24px;
  }
}
