html:not(.dark) { --prism-foreground: #393a34; --prism-background: #f8f8f8; --prism-comment: #758575; --prism-namespace: #444; --prism-string: #bc8671; --prism-punctuation: #80817d; --prism-literal: #36acaa; --prism-keyword: #248459; --prism-function: #4d9375; --prism-deleted: #9a050f; --prism-class: #2b91af; --prism-builtin: #800000; --prism-property: #ce9178; --prism-regex: #ad502b; } html.dark { --prism-foreground: #a6accd; --prism-background: #242424; --prism-namespace: #aaa; --prism-comment: #758575; --prism-namespace: #444; --prism-string: #c3e88d; --prism-punctuation: #a6accd; --prism-literal: #36acaa; --prism-keyword: #89ddff; --prism-function: #82aaff; --prism-deleted: #9a050f; --prism-class: #4ec9b0; --prism-builtin: #d16969; --prism-property: #c792ea; --prism-regex: #ad502b; --prism-selector: #c3e88d; } :root { --hty-primary-color: #0078e7; --hty-success-color: #21ba45; --hty-warning-color: #f2711c; --hty-danger-color: #db2828; --hty-info-color: #42b8dd; --hty-link-color: #0078e7; --hty-gray-color: #999; --hty-yellow-color: #ff8718; --blockquote-border-left-color: var(--smc-border-color); } .primary { color: #005eb4; --blockquote-border-left-color: var(--hty-primary-color); --blockquote-bg-color: rgba(0,120,231,0.1); } .success { color: #198f35; --blockquote-border-left-color: var(--hty-success-color); --blockquote-bg-color: rgba(33,186,69,0.1); } .warning { color: #cf590c; --blockquote-border-left-color: var(--hty-warning-color); --blockquote-bg-color: rgba(242,113,28,0.1); } .danger { color: #b21e1e; --blockquote-border-left-color: var(--hty-danger-color); --blockquote-bg-color: rgba(219,40,40,0.1); } .info { color: #24a1c8; --blockquote-border-left-color: var(--hty-info-color); --blockquote-bg-color: rgba(66,184,221,0.1); } .link { color: #005eb4; --blockquote-border-left-color: var(--hty-link-color); --blockquote-bg-color: rgba(0,120,231,0.1); } .gray { color: #808080; --blockquote-border-left-color: var(--hty-gray-color); --blockquote-bg-color: rgba(153,153,153,0.1); } .yellow { color: #e46e00; --blockquote-border-left-color: var(--hty-yellow-color); --blockquote-bg-color: rgba(255,135,24,0.1); } html:not(.dark) { --prism-foreground: #393a34; --prism-background: #f8f8f8; --prism-comment: #758575; --prism-namespace: #444; --prism-string: #bc8671; --prism-punctuation: #80817d; --prism-literal: #36acaa; --prism-keyword: #248459; --prism-function: #4d9375; --prism-deleted: #9a050f; --prism-class: #2b91af; --prism-builtin: #800000; --prism-property: #ce9178; --prism-regex: #ad502b; } html.dark { --prism-foreground: #a6accd; --prism-background: #242424; --prism-namespace: #aaa; --prism-comment: #758575; --prism-namespace: #444; --prism-string: #c3e88d; --prism-punctuation: #a6accd; --prism-literal: #36acaa; --prism-keyword: #89ddff; --prism-function: #82aaff; --prism-deleted: #9a050f; --prism-class: #4ec9b0; --prism-builtin: #d16969; --prism-property: #c792ea; --prism-regex: #ad502b; --prism-selector: #c3e88d; } :root { --hty-mode: 'light'; --hty-bg-color: #f5f5f5; --hty-text-color: #333; --hty-secondary-text-color: #555; --post-block-bg-color: #fff; --smc-link-color: #0078e7; --yun-bg-image: url("https://fastly.jsdelivr.net/gh/XMuli/xmuliPic@pic/2025/202512091947669.jpg"); --banner-line-color: #000; --banner-char-color: #000; } html.dark { --hty-mode: 'dark'; --hty-bg-color: #303030; --hty-text-color: #f2f2f2; --hty-secondary-text-color: #eee; --post-block-bg-color: #1b1f2e; --smc-link-color: #3ca1ff; --yun-bg-image: url("https://fastly.jsdelivr.net/gh/XMuli/xmuliPic@pic/2025/202512091948959.jpg"); --banner-line-color: #fff; --banner-char-color: #fff; --banner-char-bg-color: rgba(0,0,0,0.5); --banner-char-hover-color: #000; --post-card-bg-color: rgba(27,31,46,0.8); --post-card-shadow: 0 1px 8px rgba(27,31,46,0.1); --sidebar-bg-color: rgba(27,31,46,0.95); --sidebar-bg-image: url(""); --page-btn-bg-color: rgba(0,0,0,0.5); --page-btn-hover-bg-color: rgba(199,228,255,0.9); --page-btn-active-bg-color: #0078e7; } .disable-hover, .disable-hover * { pointer-events: none !important; } @-moz-keyframes fade-in { from { opacity: 0; } to { opacity: 1; } } @-webkit-keyframes fade-in { from { opacity: 0; } to { opacity: 1; } } @-o-keyframes fade-in { from { opacity: 0; } to { opacity: 1; } } @keyframes fade-in { from { opacity: 0; } to { opacity: 1; } } ::-webkit-input-placeholder { color: #fff; } .dark .aplayer { color: #000; } body { font-family: 'PingFang SC', 'Microsoft YaHei', Roboto, Arial, sans-serif; font-weight: 400; margin: 0; padding: 0; line-height: 2; } ::selection { color: #fff; background: #8e71c1; } a { color: var(--smc-link-color); text-decoration: none; transition: color 0.1s; } a:hover, a:focus { color: #db2828; } a:active { color: #2094ff; } h1, h2, h3, h4, h5, h6 { font-weight: inherit; } h1 { font-size: 2.5rem; font-weight: 400; } h2 { font-size: 2.2rem; font-weight: 400; } h3 { font-size: 1.9rem; font-weight: 400; } h4 { font-size: 1.6rem; font-weight: 400; } h5 { font-size: 1.3rem; font-weight: 400; } h6 { font-size: 1rem false; } button { outline: none; } p { font-size: inherit; font-weight: inherit; } p:first-child { margin-top: 0; } hr { opacity: 0.2; margin: 1rem; } details { border: 1px solid var(--smc-secondary); margin: 1rem 0; } details[open] { padding: 1rem 1rem 0 1rem; } summary { font-weight: bold; padding: 0.8rem 0.8rem 0.8rem 1rem; background-color: rgba(0,120,231,0.1); } details[open] summary { border-bottom: 1px solid var(--smc-secondary); margin: -1rem -1rem 1rem -1rem; } html { scroll-behavior: smooth; } body { color: var(--hty-text-color); overflow-y: scroll; background-color: var(--hty-bg-color, #f5f5f5); } body::before { content: ''; position: fixed; width: 100%; height: 100%; z-index: -1; background-image: var(--yun-bg-image); background-size: cover; background-position: center; background-repeat: no-repeat; animation-name: bgFadeIn; animation-duration: 2s; opacity: 0.8; } @-moz-keyframes bgFadeIn { from { opacity: 0; } to { opacity: 0.8; } } @-webkit-keyframes bgFadeIn { from { opacity: 0; } to { opacity: 0.8; } } @-o-keyframes bgFadeIn { from { opacity: 0; } to { opacity: 0.8; } } @keyframes bgFadeIn { from { opacity: 0; } to { opacity: 0.8; } } :root { --banner-char-bg-color: rgba(255,255,255,0.5); --banner-char-hover-color: #fff; } #banner { position: relative; display: flex; flex-direction: column; align-items: center; height: 100vh; } #banner .char { font-family: 'Songti SC', 'Noto Serif SC', STZhongsong, STKaiti, KaiTi, Roboto, serif; font-size: var(--banner-char-size, 1rem); font-weight: 900; background-color: var(--banner-char-bg-color); line-height: 1; transition-property: all; transition-duration: 0.3s; transition-delay: 0s; } #banner .char:hover { color: var(--banner-char-hover-color); background-color: var(--banner-char-color); } #banner .char-left, #banner .char-right { display: flex; color: var(--banner-char-color); opacity: 0; } #banner .char-left { border-left: 1px solid var(--banner-line-color); border-right: 0px solid rgba(0,120,231,0.1); border-right-width: 0px; animation-duration: 0.4s; animation-delay: 0.4s; animation-fill-mode: forwards; animation-timing-function: ease-out; } #banner .char-right { border-left: 0px solid rgba(0,120,231,0.1); border-right: 1px solid var(--banner-line-color); border-left-width: 0px; animation-duration: 0.4s; animation-delay: 0.4s; animation-fill-mode: forwards; animation-timing-function: ease-out; } .banner-char-container { display: flex; flex-direction: column; align-items: center; } .vertical-line-top, .vertical-line-bottom { display: flex; background-color: var(--banner-line-color); width: 1px; height: 0; animation-duration: 0.4s; animation-fill-mode: forwards; animation-timing-function: ease-in; } .vertical-line-bottom { position: absolute; bottom: 0; } .cloud { display: flex; width: 100%; position: absolute; bottom: 0; left: 0; right: 0; z-index: 8; box-sizing: border-box; mix-blend-mode: overlay; } .cloud .waves { display: flex; position: relative; width: 100%; height: 100px; } @media (max-width: 768px) { .cloud .waves { height: 40px; } } .cloud .parallax > use { animation: move-forever 25s cubic-bezier(0.55, 0.5, 0.45, 0.5) infinite; } .cloud .parallax > use:nth-child(1) { animation-delay: -2s; animation-duration: 7s; } .cloud .parallax > use:nth-child(2) { animation-delay: -3s; animation-duration: 10s; } .cloud .parallax > use:nth-child(3) { animation-delay: -4s; animation-duration: 13s; } .cloud .parallax > use:nth-child(4) { animation-delay: -5s; animation-duration: 20s; } @-moz-keyframes move-forever { 0% { transform: translate3d(-90px, 0, 0); } 100% { transform: translate3d(85px, 0, 0); } } @-webkit-keyframes move-forever { 0% { transform: translate3d(-90px, 0, 0); } 100% { transform: translate3d(85px, 0, 0); } } @-o-keyframes move-forever { 0% { transform: translate3d(-90px, 0, 0); } 100% { transform: translate3d(85px, 0, 0); } } @keyframes move-forever { 0% { transform: translate3d(-90px, 0, 0); } 100% { transform: translate3d(85px, 0, 0); } } #goDown { display: inline-flex; position: absolute; bottom: 1rem; z-index: 9; animation: float 2s ease-in-out infinite; } #goDown .icon { color: #0078e7; width: 3rem; height: 3rem; } @-moz-keyframes float { 0% { opacity: 1; transform: translateY(0); } 50% { opacity: 0.8; transform: translateY(-0.8rem); } 100% { opacity: 1; transform: translateY(0); } } @-webkit-keyframes float { 0% { opacity: 1; transform: translateY(0); } 50% { opacity: 0.8; transform: translateY(-0.8rem); } 100% { opacity: 1; transform: translateY(0); } } @-o-keyframes float { 0% { opacity: 1; transform: translateY(0); } 50% { opacity: 0.8; transform: translateY(-0.8rem); } 100% { opacity: 1; transform: translateY(0); } } @keyframes float { 0% { opacity: 1; transform: translateY(0); } 50% { opacity: 0.8; transform: translateY(-0.8rem); } 100% { opacity: 1; transform: translateY(0); } } @-moz-keyframes extend-line { from { height: 0; } to { height: var(--banner-line-height); } } @-webkit-keyframes extend-line { from { height: 0; } to { height: var(--banner-line-height); } } @-o-keyframes extend-line { from { height: 0; } to { height: var(--banner-line-height); } } @keyframes extend-line { from { height: 0; } to { height: var(--banner-line-height); } } @-moz-keyframes char-move-left { from { opacity: 0; border-right-width: 0; } to { opacity: 1; border-right-width: var(--banner-empty-border-size, var(--banner-char-size)); } } @-webkit-keyframes char-move-left { from { opacity: 0; border-right-width: 0; } to { opacity: 1; border-right-width: var(--banner-empty-border-size, var(--banner-char-size)); } } @-o-keyframes char-move-left { from { opacity: 0; border-right-width: 0; } to { opacity: 1; border-right-width: var(--banner-empty-border-size, var(--banner-char-size)); } } @keyframes char-move-left { from { opacity: 0; border-right-width: 0; } to { opacity: 1; border-right-width: var(--banner-empty-border-size, var(--banner-char-size)); } } @-moz-keyframes char-move-right { from { opacity: 0; border-left-width: 0; } to { opacity: 1; border-left-width: var(--banner-empty-border-size, var(--banner-char-size)); } } @-webkit-keyframes char-move-right { from { opacity: 0; border-left-width: 0; } to { opacity: 1; border-left-width: var(--banner-empty-border-size, var(--banner-char-size)); } } @-o-keyframes char-move-right { from { opacity: 0; border-left-width: 0; } to { opacity: 1; border-left-width: var(--banner-empty-border-size, var(--banner-char-size)); } } @keyframes char-move-right { from { opacity: 0; border-left-width: 0; } to { opacity: 1; border-left-width: var(--banner-empty-border-size, var(--banner-char-size)); } } #footer { font-size: 0.9rem; color: var(--hty-secondary-text-color); text-align: center; padding-top: 1rem; padding-bottom: 0.5rem; } #footer .footer-separator { margin: 0 0.5rem; } #footer .footer-custom-text { margin-top: 0.3rem; line-height: 0; } #footer .footer-support { display: flex; justify-content: center; align-items: center; } #footer .footer-support-logo { display: inline-flex; justify-content: center; align-items: center; margin: 0.2rem; } #animate { animation: iconAnimate 1.33s ease-in-out infinite; } .with-love { display: inline-block; margin: 5px 5px 0 5px; color: #0078E7; } .moe-text { margin: 0 5px; } @-moz-keyframes iconAnimate { 0%, 100% { transform: scale(1); } 10%, 30% { transform: scale(0.9); } 20%, 40%, 60%, 80% { transform: scale(1.1); } 50%, 70% { transform: scale(1.1); } } @-webkit-keyframes iconAnimate { 0%, 100% { transform: scale(1); } 10%, 30% { transform: scale(0.9); } 20%, 40%, 60%, 80% { transform: scale(1.1); } 50%, 70% { transform: scale(1.1); } } @-o-keyframes iconAnimate { 0%, 100% { transform: scale(1); } 10%, 30% { transform: scale(0.9); } 20%, 40%, 60%, 80% { transform: scale(1.1); } 50%, 70% { transform: scale(1.1); } } @keyframes iconAnimate { 0%, 100% { transform: scale(1); } 10%, 30% { transform: scale(0.9); } 20%, 40%, 60%, 80% { transform: scale(1.1); } 50%, 70% { transform: scale(1.1); } } .link-items { display: flex; padding: 0 0.5rem; text-align: center; justify-content: center; flex-wrap: wrap; } .link-item { display: inline-flex; } .link-url { display: inline-flex; text-align: center; justify-self: center; line-height: 1.5; padding: 0.5rem 1rem; margin: 0.5rem; width: 15rem; transition: 0.2s; color: var(--primary-color, #000); border: 1px solid var(--primary-color, #808080); } .link-url:hover { color: #fff; background-color: var(--primary-color, #808080); box-shadow: 0 2px 20px var(--primary-color, #808080); } @media screen and (max-width: 768px) { .link-url { display: flex; } } .link-url .link-left { display: inline-block; line-height: 0; } .link-url .link-avatar { width: 4rem; height: 4rem; border-radius: 50%; background-color: #fff; border: 1px solid var(--primary-color, #808080); transition: 0.5s; } .link-url .link-avatar:hover { box-shadow: 0 0 20px rgba(0,0,0,0.1); } .link-url .link-info { padding-left: 0.6rem; } .link-url .link-blog { font-family: 'Songti SC', 'Noto Serif SC', STZhongsong, STKaiti, KaiTi, Roboto, serif; font-weight: 900; margin: 0.42rem 0; } .link-url .link-desc { font-size: 0.8rem; margin-top: 0.5rem; width: 10.5rem; white-space: nowrap; text-overflow: ellipsis; overflow: hidden; } #content { overflow: visible; } #recent-posts { row-gap: 1rem; padding: 1rem 0; } #page, #archive, #tag, #category { margin: 0 1rem 1rem 1rem; background-color: var(--post-block-bg-color); padding: 1rem 0.5rem; } @media screen and (max-width: 768px) { #page, #archive, #tag, #category { margin: 0 0 1rem 0; } } .page-subtitle { text-align: center; color: var(--hty-secondary-text-color); font-size: 1rem; margin: 0.5rem; } .category-lists, .tag-cloud { text-align: center; padding: 1rem 2rem; } .category-lists a, .tag-cloud a { display: inline-block; margin: 0 0.4rem; text-decoration: none; } .category-lists { text-align: left; } .category-lists .category-list { padding-inline-start: 0px; } .category-lists .category-list-item { list-style: none; color: var(--hty-text-color); } .category-lists .category-list-item:hover::before { color: #0078e7; } .category-lists .category-list-item::before { content: '📂'; } .category-lists .category-list-child .category-list-item::before { content: '📁'; } .category-lists .category-list-link { color: var(--hty-text-color); border-bottom: 1px dotted #999; } .category-lists .category-list-count::before { content: ' [ '; } .category-lists .category-list-count::after { content: ' ] '; } .wordcloud { position: relative; display: block; margin: 0 auto; text-align: center; } .wordcloud #wordcloud-canvas, .wordcloud #wordcloud-sidebar-canvas { cursor: url("$cursor-pointer"), pointer; } .wordcloud #wordbox { pointer-events: none; position: absolute; box-shadow: 0 0 100px 100px rgba(0,0,0,0.1); border-radius: 50px; } .wordcloud #wordbox-sidebar { pointer-events: none; position: absolute; } :root { --page-btn-bg-color: rgba(255,255,255,0.5); --page-btn-hover-bg-color: rgba(0,120,231,0.7); --page-btn-active-bg-color: rgba(32,148,255,0.9); } .page-number-basic, .pagination .space, .pagination .prev, .pagination .next, .pagination .page-number { display: inline-block; width: 2rem; height: 2rem; margin: 0; background-color: var(--page-btn-bg-color); transition: 0.2s; } .pagination { text-align: center; } .pagination .prev, .pagination .next, .pagination .page-number, .pagination .space { color: var(--hty-text-color) !important; text-decoration: none; background-color: var(--page-btn-bg-color); } .pagination .prev:hover, .pagination .next:hover, .pagination .page-number:hover, .pagination .space:hover { font-weight: normal; color: var(--hty-bg-color) !important; background: var(--page-btn-hover-bg-color); } .pagination .prev:active, .pagination .next:active, .pagination .page-number:active, .pagination .space:active { color: var(--hty-bg-color) !important; background: var(--page-btn-active-bg-color); } .pagination .prev.current, .pagination .next.current, .pagination .page-number.current, .pagination .space.current { font-weight: normal; background: var(--page-btn-active-bg-color); color: var(--hty-bg-color) !important; cursor: default; } .post-block { color: var(--hty-text-color); margin: 0 1rem; padding: 1rem; background-color: var(--post-block-bg-color); } @media screen and (max-width: 768px) { .post-block { margin: 0; padding-top: 2.5rem; } } .post-body { padding: 0 5rem; } @media screen and (max-width: 1024px) { .post-body { padding: 0 0.5rem; } } @media screen and (max-width: 768px) { .post-body { padding: 0 0.5rem; } } .post-meta { font-size: 14px; color: var(--hty-secondary-text-color); } .post-meta .icon { margin-bottom: -1px; } .post-description { font-weight: normal; padding: 0.5rem; } .post-author { display: flex; justify-content: center; } .post-author .author-avatar { display: inline-flex; justify-content: center; align-items: center; line-height: 0; } .post-author .author-avatar img { border-radius: 50%; height: 1rem; width: 1rem; padding: 2px; border: 2px solid #d3d3d3; } .post-author .author-name { margin-left: 0.5rem; font-size: 1rem; } .post-meta-item-icon { display: inline-block; color: var(--text-color, --hty-secondary-text-color); } .post-meta-divider { height: 25px; color: var(--hty-secondary-text-color); margin: 0 0.5rem; } .post-eof { margin: 50px auto; width: 50%; height: 1px; background: #0078e7; opacity: 0.1; } .post-copyright { font-size: 0.9rem; margin: 0.5rem 5rem 1rem 5rem; padding: 0.5rem 1rem; border-left: 4px solid #ff5252; background-color: var(--hty-bg-color); list-style: none; word-break: break-all; position: relative; overflow: hidden; } @media screen and (max-width: 768px) { .post-copyright { margin: 0.5rem 0; } } .post-copyright::after { position: absolute; color: #fff; background: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 496 512'%3E%3Cpath fill='gray' d='M245.8 214.9l-33.2 17.3c-9.4-19.6-25.2-20-27.4-20-22.2 0-33.3 14.6-33.3 43.9 0 23.5 9.2 43.8 33.3 43.8 14.4 0 24.6-7 30.5-21.3l30.6 15.5a73.2 73.2 0 01-65.1 39c-22.6 0-74-10.3-74-77 0-58.7 43-77 72.6-77 30.8-.1 52.7 11.9 66 35.8zm143 0l-32.7 17.3c-9.5-19.8-25.7-20-27.9-20-22.1 0-33.2 14.6-33.2 43.9 0 23.5 9.2 43.8 33.2 43.8 14.5 0 24.7-7 30.5-21.3l31 15.5c-2 3.8-21.3 39-65 39-22.7 0-74-9.9-74-77 0-58.7 43-77 72.6-77C354 179 376 191 389 214.8zM247.7 8C104.7 8 0 123 0 256c0 138.4 113.6 248 247.6 248C377.5 504 496 403 496 256 496 118 389.4 8 247.6 8zm.8 450.8c-112.5 0-203.7-93-203.7-202.8 0-105.5 85.5-203.3 203.8-203.3A201.7 201.7 0 01451.3 256c0 121.7-99.7 202.9-202.9 202.9z'/%3E%3C/svg%3E"); content: ' '; height: 10rem; width: 10rem; right: -2rem; top: -2rem; opacity: 0.1; } .tag-name { padding: 0 0.1rem; } .hty-button { font-family: Roboto, sans-serif; background-color: transparent; margin: 0 1rem; padding: 0 0.5rem; border-radius: 2px; color: #0078e7; transition-property: all; transition-duration: 0.3s; transition-delay: 0s; display: inline-flex; align-items: center; justify-content: center; border: none; min-height: 2rem; min-width: 4rem; outline: none; line-height: 2; font-size: 0.9rem; font-weight: 500; letter-spacing: 0.09rem; -webkit-font-smoothing: antialiased; } .hty-button:hover { background-color: rgba(0,120,231,0.05); } .hty-button--raised { background-color: var(--hty-primary-color, #0078e7); box-shadow: 0px 2px 10px -1px rgba(0,0,0,0.3); color: #fff; } .hty-button--raised:focus { color: #eee; } .hty-button--raised:hover { color: #fff; background-color: rgba(0,120,231,0.9); } .hty-icon-button { display: inline-flex; border: none; width: 3rem; height: 3rem; align-items: center; justify-content: center; border-radius: 50%; line-height: 1; transition-property: all; transition-duration: 0.3s; transition-delay: 0s; } .hty-icon-button:hover { background-color: rgba(0,120,231,0.1); } .hty-icon-button:active { background-color: rgba(0,120,231,0.3); } .button-glow { animation-duration: 2s; animation-iteration-count: infinite; animation-name: glowing; animation-direction: alternate; } @-moz-keyframes glowing { from { box-shadow: 0 0 0 rgba(0,0,0,0); } to { box-shadow: 0 0 20px rgba(0,120,231,0.3); } } @-webkit-keyframes glowing { from { box-shadow: 0 0 0 rgba(0,0,0,0); } to { box-shadow: 0 0 20px rgba(0,120,231,0.3); } } @-o-keyframes glowing { from { box-shadow: 0 0 0 rgba(0,0,0,0); } to { box-shadow: 0 0 20px rgba(0,120,231,0.3); } } @keyframes glowing { from { box-shadow: 0 0 0 rgba(0,0,0,0); } to { box-shadow: 0 0 20px rgba(0,120,231,0.3); } } .hty-card { position: relative; display: flex; flex-direction: column; box-sizing: border-box; transition-property: all; transition-duration: 0.3s; transition-delay: 0s; } .hty-card:hover { box-shadow: 0 0 1rem rgba(0,0,0,0.1); } ::-webkit-scrollbar { width: 8px; height: 8px; } ::-webkit-scrollbar-track { border-radius: 2px; background-color: rgba(255,255,255,0.1); } ::-webkit-scrollbar-thumb { border-radius: 2px; background-color: rgba(0,120,231,0.5); } ::-webkit-scrollbar-thumb:window-inactive { background-color: rgba(0,120,231,0.3); } ::-webkit-scrollbar-thumb:hover { background-color: rgba(0,120,231,0.7); } ::-webkit-scrollbar-thumb:active { background-color: rgba(0,120,231,0.9); } .iconfont { font-size: 1.2rem; } .icon { width: 1rem; height: 1rem; vertical-align: -0.15em; fill: currentColor; overflow: hidden; } .fireworks { position: fixed; left: 0; top: 0; z-index: 11; pointer-events: none; } .spinner { width: 60px; height: 60px; border: 1px solid #0078e7; margin: 100px auto; animation: rotateplane 1.2s infinite ease-in-out; } @-moz-keyframes rotateplane { 0% { transform: perspective(120px) rotateX(0deg) rotateY(0deg); -webkit-transform: perspective(120px) rotateX(0deg) rotateY(0deg); } 50% { transform: perspective(120px) rotateX(-180deg) rotateY(0deg); -webkit-transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg); } 100% { transform: perspective(120px) rotateX(-180deg) rotateY(-180deg); -webkit-transform: perspective(120px) rotateX(-180deg) rotateY(-180deg); } } @-webkit-keyframes rotateplane { 0% { transform: perspective(120px) rotateX(0deg) rotateY(0deg); -webkit-transform: perspective(120px) rotateX(0deg) rotateY(0deg); } 50% { transform: perspective(120px) rotateX(-180deg) rotateY(0deg); -webkit-transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg); } 100% { transform: perspective(120px) rotateX(-180deg) rotateY(-180deg); -webkit-transform: perspective(120px) rotateX(-180deg) rotateY(-180deg); } } @-o-keyframes rotateplane { 0% { transform: perspective(120px) rotateX(0deg) rotateY(0deg); -webkit-transform: perspective(120px) rotateX(0deg) rotateY(0deg); } 50% { transform: perspective(120px) rotateX(-180deg) rotateY(0deg); -webkit-transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg); } 100% { transform: perspective(120px) rotateX(-180deg) rotateY(-180deg); -webkit-transform: perspective(120px) rotateX(-180deg) rotateY(-180deg); } } @keyframes rotateplane { 0% { transform: perspective(120px) rotateX(0deg) rotateY(0deg); -webkit-transform: perspective(120px) rotateX(0deg) rotateY(0deg); } 50% { transform: perspective(120px) rotateX(-180deg) rotateY(0deg); -webkit-transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg); } 100% { transform: perspective(120px) rotateX(-180deg) rotateY(-180deg); -webkit-transform: perspective(120px) rotateX(-180deg) rotateY(-180deg); } } :root { --post-card-bg-color: rgba(255,255,255,0.8); --post-card-shadow: 0 0 10px rgba(255,255,255,0.1); } .post-card { position: relative; max-width: 900px; margin: 0 auto; transition-property: all; transition-duration: 0.3s; transition-delay: 0s; background-color: var(--post-card-bg-color); box-shadow: var(--post-card-shadow); /* tag 容器 */ } .post-card:hover { box-shadow: 0 0px 25px rgba(0,0,0,0.05); } .post-card-header { padding-top: 0.5rem; } .post-card-excerpt, .post-card-excerpt p { overflow: hidden; text-overflow: ellipsis; text-align: left; } .post-card-content { padding: 0.5rem 1rem; } .post-card-title { margin: 0; } .post-card__actions { display: flex; align-items: center; min-height: 3rem; border-top: 1px solid rgba(0,120,231,0.05); padding-left: 1rem; padding-right: 1rem; justify-content: space-between; } .post-card__actions .icon { margin-bottom: -1px; } .post-card-tag { display: inline-flex; justify-content: flex-end; } .tag-item, .category-item { font-size: 0.8rem; position: relative; color: var(--text-color, #000); letter-spacing: 1px; } .tag-item::before, .category-item::before { content: ''; position: absolute; bottom: 0; height: 100%; width: 0; right: 0; background: rgba(0,120,231,0.08); border-radius: 4px; transition: width 0.2s ease; } .tag-item:hover::before, .category-item:hover::before { width: 104%; left: -2%; } .tag-item .icon, .category-item .icon { width: 0.8rem; height: 0.8rem; padding-left: 0.1rem; } .post-top-icon { position: absolute; top: 1rem; right: 1rem; color: #f2711c; } .post-top-icon .icon { width: 1.5rem; height: 1.5rem; } .code-container { position: relative; } .code-container:hover .copy-btn { opacity: 1; } .copy-btn { position: absolute; opacity: 0; color: #808080; cursor: pointer; line-height: 1.5; padding: 1px 4px; transition: opacity 0.2s; top: 2px; right: 2px; border-radius: 4px; } .copy-btn:hover { background-color: rgba(255,255,255,0.1); } .post-collapse { position: relative; margin: 0 5rem 2rem 5rem; } @media screen and (max-width: 1024px) { .post-collapse { margin: 0 2rem 1rem 2rem; } } @media screen and (max-width: 768px) { .post-collapse { margin: 0 1rem 0.5rem 1rem; } } .post-collapse-title { font-size: 2rem; text-align: center; } .post-collapse .collection-title { position: relative; margin: 0; border-bottom: 2px solid rgba(0,120,231,0.6); } .post-collapse .collection-title::before { content: ''; position: absolute; top: 50%; width: 2px; height: 50%; background: rgba(0,120,231,0.3); } .post-collapse .collection-title .archive-year { font-family: 'Source Code Pro', Consolas, Monaco, SFMono-Regular, 'Ubuntu Mono', Menlo, monospace; color: #0078e7; margin: 0 1.5rem; } .post-collapse .collection-title .archive-year::before { content: ''; position: absolute; left: 0; top: 35%; margin-left: -11px; margin-top: -4px; width: 1.5rem; height: 1.5rem; background: #0078e7; border-radius: 50%; } .post-collapse .post-item { position: relative; } .post-collapse .post-item::before { content: ''; position: absolute; width: 2px; height: 100%; background: rgba(0,120,231,0.3); } .post-collapse .post-header { position: relative; border-bottom: 2px solid rgba(0,120,231,0.3); display: flex; } .post-collapse .post-header::before { content: ''; position: absolute; left: 0; top: 1.6rem; width: 0.5rem; height: 0.5rem; margin-left: -4px; border-radius: 50%; border: 1px solid #0078e7; background-color: #fff; z-index: 1; transition-property: all; transition-duration: 0.3s; transition-delay: 0s; transition-property: background; } .post-collapse .post-header:hover::before { background: #0078e7; } .post-collapse .post-header .post-title { margin-left: 0.1rem; padding: 0; font-size: 1rem; display: inline-flex; align-items: center; } .post-collapse .post-header .post-title .post-title-link .icon { width: 1.1rem; height: 1.1rem; margin-right: 0.3rem; } .post-collapse .post-header .post-meta { font-family: 'Source Code Pro', Consolas, Monaco, SFMono-Regular, 'Ubuntu Mono', Menlo, monospace; font-size: 1rem; margin: 1rem 0 1rem 1.2rem; white-space: nowrap; } .last-word { font-size: 1rem; margin-top: 1rem; margin-bottom: 0; } .post-header { position: relative; text-align: center; } .post-header .post-title { margin: 0; padding: 10px; font-size: 1.5rem; font-weight: 900; font-family: 'Songti SC', 'Noto Serif SC', STZhongsong, STKaiti, KaiTi, Roboto, serif; } .post-header .post-title .icon { width: 1.6rem; height: 1.6rem; margin-right: 0.3rem; } .post-header .post-title .post-title-link { position: relative; padding: 0.7rem 1.2rem; } .post-header .post-title .post-title-link .icon { width: 1.6rem; height: 1.6rem; margin-right: 0.4rem; } .post-header .post-title .post-title-link::before, .post-header .post-title .post-title-link::after { content: ''; position: absolute; width: 10px; height: 10px; opacity: 0; border: 2px solid; transition: 0.3s; transition-timing-function: cubic-bezier(0.17, 0.67, 0.05, 1.29); } .post-header .post-title .post-title-link::before { top: 0; left: 0; border-width: 2px 0 0 2px; transform: translate3d(10px, 10px, 0); } .post-header .post-title .post-title-link::after { right: 0; bottom: 0; border-width: 0 2px 2px 0; transform: translate3d(-10px, -10px, 0); } .post-header .post-title .post-title-link:hover::before, .post-header .post-title .post-title-link:hover::after { opacity: 1; transform: translate3d(0, 0, 0); } .post-edit-link { padding: 0 0.2rem; color: #999; } .post-edit-link .icon { width: 1.5rem; height: 1.5rem; } .markdown-body { color: var(--hty-text-color); font-weight: 400; font-family: 'PingFang SC', 'Microsoft YaHei', Roboto, Arial, sans-serif; padding: 1rem 0; } .markdown-body code, .markdown-body pre { font-family: 'Source Code Pro', Consolas, Monaco, SFMono-Regular, 'Ubuntu Mono', Menlo, monospace; } .markdown-body blockquote { padding: 0.6rem 1rem; border-left: 4px solid var(--blockquote-border-left-color, --smc-border-color); background-color: var(--blockquote-bg-color, rgba(0,120,231,0.05)); } .markdown-body blockquote p { margin: 0; } .markdown-body video { width: 100%; max-height: 100vh; } .markdown-body iframe { border: none; width: 100%; } .post-nav { display: flex; justify-content: space-between; margin: 0 1rem; } @media screen and (max-width: 768px) { .post-nav { margin: 0; } } .post-nav-item { display: inline-flex; outline: none; font-size: 0.9rem; font-weight: bold; text-transform: uppercase; height: 3rem; transition: 0.4s; } .post-nav-item:hover { background-color: rgba(0,120,231,0.1); box-shadow: 0 0 15px rgba(0,0,0,0.1); } .post-nav-prev { padding: 0 0.6rem 0 0.1rem; } .post-nav-next { padding: 0 0.1rem 0 0.6rem; } .post-nav-prev, .post-nav-next { display: flex; height: 3rem; align-items: center; justify-content: center; color: var(--smc-link-color); overflow: hidden; white-space: nowrap; text-overflow: ellipsis; transition-property: all; transition-duration: 0.3s; transition-delay: 0s; } @media screen and (max-width: 768px) { .post-nav-prev, .post-nav-next { max-width: 10rem; } } .post-nav-prev .icon, .post-nav-next .icon { width: 1.5rem; height: 1.5rem; } .post-nav-text { display: inline-block; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } #reward-container { padding: 1rem 0; margin: auto; text-align: center; } #reward-button { display: inline-flex; justify-content: center; align-items: center; width: 2.5rem; height: 2.5rem; color: #df667f; border-radius: 100%; } #reward-button .icon { width: 1.2rem; height: 1.2rem; } #reward-comment { margin-top: 0.5rem; } #qr img { width: 10rem; height: 10rem; display: inline-block; margin: 1rem 1rem 0 1rem; padding: 5px; border: 1px solid #ccc; border-radius: 5px; transition-property: all; transition-duration: 0.3s; transition-delay: 0s; box-shadow: 0 0 2px rgba(0,0,0,0.2); } #qr img:hover { box-shadow: 0 0 15px rgba(0,0,0,0.1); } #qr .icon { width: 1.5rem; height: 1.5rem; } .hamburger { padding: 0px 0px; display: inline-block; transition-property: opacity, filter; transition-duration: 0.15s; transition-timing-function: linear; font: inherit; color: inherit; text-transform: none; background-color: transparent; border: 0; margin: 0; overflow: visible; } .hamburger:hover { opacity: 0.7; } .hamburger.is-active:hover { opacity: 0.7; } .hamburger.is-active .hamburger-inner, .hamburger.is-active .hamburger-inner::before, .hamburger.is-active .hamburger-inner::after { background-color: #0078e7; } .hamburger-box { outline: none; width: 25px; height: 18px; display: inline-block; position: relative; } .hamburger-inner { display: block; top: 50%; } .hamburger-inner, .hamburger-inner::before, .hamburger-inner::after { width: 25px; height: 2px; background-color: #0078e7; border-radius: 3px; position: absolute; } .hamburger-inner::before, .hamburger-inner::after { content: ''; display: block; } .hamburger-inner::before { top: -8px; } .hamburger-inner::after { bottom: -8px; } .hamburger--spin .hamburger-inner { transition-duration: 0.22s; transition-timing-function: cubic-bezier(0.55, 0.055, 0.675, 0.19); } .hamburger--spin .hamburger-inner::before { transition: top 0.1s 0.25s ease-in, opacity 0.1s ease-in; } .hamburger--spin .hamburger-inner::after { transition: bottom 0.1s 0.25s ease-in, transform 0.22s cubic-bezier(0.55, 0.055, 0.675, 0.19); } .hamburger--spin.is-active .hamburger-inner { transform: rotate(225deg); transition-delay: 0.12s; transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); } .hamburger--spin.is-active .hamburger-inner::before { top: 0; opacity: 0; transition: top 0.1s ease-out, opacity 0.1s 0.12s ease-out; } .hamburger--spin.is-active .hamburger-inner::after { bottom: 0; transform: rotate(-90deg); transition: bottom 0.1s ease-out, transform 0.22s 0.12s cubic-bezier(0.215, 0.61, 0.355, 1); } .sidebar-nav { padding-left: 0px; margin-top: 1rem; margin-bottom: 0; } .sidebar-nav .sidebar-nav-item { border: 1px solid #0078e7; color: #0078e7; margin: 0 1.25rem; } .sidebar-nav .sidebar-nav-item:hover { transition-property: all; transition-duration: 0.3s; transition-delay: 0s; background-color: #0078e7; color: #fff; } .sidebar-nav .sidebar-nav-item .icon { width: 1.5rem; height: 1.5rem; } .sidebar-nav .sidebar-nav-active { background-color: #0078e7; color: #fff; box-shadow: 0 0 10px rgba(0,120,231,0.2); } .post-toc { line-height: 1.8; padding: 1rem; font-size: 1.1rem; font-family: 'Songti SC', 'Noto Serif SC', STZhongsong, STKaiti, KaiTi, Roboto, serif; } .post-toc ol { list-style: none; text-align: left; padding-left: 1rem; margin: 0; } .post-toc ol .toc-link { color: var(--smc-link-color); } .post-toc ol .toc-link:hover { color: #db2828; } .post-toc ol .toc-number { font-family: 'Source Code Pro', Consolas, Monaco, SFMono-Regular, 'Ubuntu Mono', Menlo, monospace; } .post-toc ol .toc-child { font-size: 1rem; } .post-toc ol .toc-item.active>.toc-link { color: #f2711c; border-bottom: 1px solid #f2711c; } .post-toc ol .toc-item.active>.toc-child { max-height: 10000px; } :root { --sidebar-bg-image: url("https://cdn.jsdelivr.net/gh/YunYouJun/cdn/img/bg/stars-timing-1.jpg"); } #menu-btn { display: none; position: fixed; left: 0.8rem; top: 0.6rem; line-height: 1; z-index: 20; cursor: pointer; } @media screen and (max-width: 768px) { #menu-btn { display: flex; } } .is-home #menu-btn { display: flex; } .is-home .sidebar { left: -20rem; transform: translateX(0); visibility: hidden; } .is-home .sidebar-translate { transition-property: all; transition-duration: 0.3s; transition-delay: 0s; padding-left: 0; } .is-home .sidebar-open .sidebar { transform: translateX(20rem); visibility: visible; } .is-home .sidebar-open .sidebar-translate { padding-left: 20rem; } @media screen and (max-width: 768px) { .is-home .sidebar-open .sidebar-translate { padding-left: 0; } } .sidebar { position: fixed; overflow-y: auto; top: 0; bottom: 0; left: 0; width: 20rem; background-image: var(--sidebar-bg-image, none); background-color: var(--sidebar-bg-color, #fff); background-size: contain; background-repeat: no-repeat; background-position: bottom 3rem center; text-align: center; z-index: 10; transition-property: all; transition-duration: 0.3s; transition-delay: 0s; box-shadow: 0 0 2px rgba(0,0,0,0.2); } .sidebar:hover { box-shadow: 0 0 15px rgba(0,0,0,0.1); } @media screen and (max-width: 768px) { .sidebar { left: -20rem; transform: translateX(0); } } .sidebar-translate { padding-left: 20rem; } @media screen and (max-width: 768px) { .sidebar-translate { padding-left: 0; } } .sidebar .sidebar-panel { padding: 0.5rem; display: none; } .sidebar .sidebar-panel-active { display: block; } .sidebar .links { display: block; } .sidebar .links-item { display: inline-flex; } .sidebar .links-item .icon { width: 2rem; height: 2rem; } .sidebar .links-of-author { display: flex; flex-wrap: wrap; justify-content: center; } .sidebar .links-of-author .icon { width: 1.5rem; height: 1.5rem; } .sidebar .links-of-author-item { line-height: 1; font-size: 0.9rem; } @media screen and (max-width: 768px) { .sidebar-open .sidebar { transform: translateX(20rem); visibility: visible; } .sidebar-open .sidebar-overlay { background-color: rgba(0,0,0,0.3); position: fixed; width: 100%; height: 100vh; z-index: 9; transition: 0.4s; } } #site-overview-wrap { padding-top: 2rem; } .site-info.fix-top { margin-top: -1.5rem; } .site-author-avatar { display: inline-block; line-height: 0; position: relative; } .site-author-avatar img { height: 96px; width: 96px; max-width: 100%; margin: 0px; padding: 4px; background-color: #fff; box-shadow: 0 0 10px rgba(0,0,0,0.2); transition: 0.4s; } .site-author-avatar img:hover { box-shadow: 0 0 30px rgba(0,120,231,0.2); } .site-author-avatar img { border-radius: 50%; } .site-author-name { margin-top: 0; margin-bottom: 1rem; line-height: 1.5; } .site-author-status { position: absolute; height: 1.8rem; width: 1.8rem; bottom: 0; right: 0; line-height: 1.8rem; border-radius: 50%; box-shadow: 0 1px 2px rgba(0,0,0,0.2); background-color: #fff; } .site-name { color: var(--hty-text-color); font-family: 'Songti SC', 'Noto Serif SC', STZhongsong, STKaiti, KaiTi, Roboto, serif; font-weight: 900; } .site-subtitle { color: #999; display: block; } .site-description { color: var(--hty-secondary-text-color); font-size: 0.8rem; } .site-state { display: flex; justify-content: center; overflow: hidden; line-height: 1.5; white-space: nowrap; text-align: center; margin-top: 1rem; } .site-state-item { display: flex; padding: 0 15px; align-items: center; border-left: 1px solid #999; } .site-state-item:first-child, .site-state-item:last-child { line-height: 1; padding: 0; } .site-state-item:first-child { border-left: none; border-right: 1px solid #999; } .site-state-item:last-child { border-left: 1px solid #999; } .site-state-item:nth-child(2) { border: none; } .site-state-item-icon { color: var(--hty-text-color); line-height: 1; } .site-state-item-icon .icon { width: 1.5rem; height: 1.5rem; } .site-state-item-count { color: var(--hty-text-color); display: block; text-align: center; font-size: 1rem; } #back-to-top { position: relative; position: fixed; right: -0.9rem; bottom: 1.1rem; z-index: 20; opacity: 0; color: #0078e7; transition-property: all; transition-duration: 0.3s; transition-delay: 0s; } #back-to-top.show { transform: translateX(-30px) rotate(360deg); opacity: 1; } #back-to-top .icon { width: 2.5rem; height: 2.5rem; } .progress-circle { transition: 0.3s stroke-dashoffset; transform: rotate(-90deg); transform-origin: 50% 50%; } .progress-circle-container { position: absolute; } #local-search-input { outline: none; } .search-result-container { overflow: auto; margin: 0; padding: 0.5rem 0 1rem 0; height: calc(100% - 160px); } .search-result-container ul.search-result-list { margin: 0; padding: 0; } .search-result-container ul.search-result-list li { display: block; width: 100%; padding: 0.6rem 0; } .search-result-container ul.search-result-list li .search-result-title { font-family: 'Songti SC', 'Noto Serif SC', STZhongsong, STKaiti, KaiTi, Roboto, serif; font-weight: 900; font-size: 1.2rem; } .search-result-container ul.search-result-list li .search-result { margin: 0; font-size: 0.8rem; } .search-result-container ul.search-result-list li .search-result .search-keyword { background: transparent; color: #f00; font-style: normal; text-decoration: underline; } .search-popup { backdrop-filter: blur(30px); -webkit-backdrop-filter: blur(30px); background-position: center; background-size: cover; background-repeat: no-repeat; position: fixed; top: 0; left: 0; width: 100%; height: 100%; text-align: center; padding-top: 4.5rem; margin: 0; opacity: 0; z-index: 30; transition: 0.6s; visibility: hidden; } .search-popup.show { visibility: visible; opacity: 1; } .search-header .close-icon { position: fixed; top: 0.6rem; right: 0.8rem; } .search-input { background: transparent; color: var(--hty-text-color); font-size: 1.5rem; border-radius: 3rem; padding: 1rem 1.5rem; border: 1px solid #999; box-sizing: border-box; width: 90%; max-width: 800px; font-family: 'Songti SC', 'Noto Serif SC', STZhongsong, STKaiti, KaiTi, Roboto, serif; font-weight: 900; text-align: center; } .popup .search-icon, .popup .close-icon { display: inline-block; width: 2rem; height: 2rem; padding: 0.5rem; } .popup .search-icon .icon, .popup .close-icon .icon { width: 2rem; height: 2rem; } #search { position: fixed; top: 0.6rem; right: 0.8rem; } #search .icon { color: #0078e7; } #comment { margin: 0 1rem; padding: 1rem; background-color: var(--post-block-bg-color); } @media screen and (max-width: 768px) { #comment { margin: 0; } } .comment-tooltip { font-size: 0.8rem; color: var(--hty-text-color); padding: 0.5rem; border: 1px solid #f0f0f0; margin-bottom: 1rem; } #github-issues { margin: 1rem; } #say { color: var(--hty-text-color); display: block; text-align: center; font-family: 'Songti SC', 'Noto Serif SC', STZhongsong, STKaiti, KaiTi, Roboto, serif; font-weight: bold; padding: 0.5rem; border-top: 1px solid var(--hty-secondary-text-color); border-bottom: 1px solid var(--hty-secondary-text-color); } #say #say-content { display: block; } #say #say-from { display: block; } iframe.bilibili-video { width: 100%; max-width: 800px; aspect-ratio: 16/9; } .heimu { background-color: var(--hty-text-color); transition: 0.2s; } .heimu:hover { cursor: pointer; background-color: transparent; } .hidden { display: none; } .text-center { text-align: center; } .text-uppercase { text-transform: uppercase; } .flex { display: flex; } .flex-col { flex-direction: column; } .justfiy-center { justify-content: center; } .items-center { align-items: center; } .flex-center { display: flex; justify-content: center; align-items: center; } .w-full { width: 100%; } .shadow-none { --tw-shadow: 0 0 rgba(0,0,0,0); --tw-shadow-colored: 0 0 rgba(0,0,0,0); box-shadow: none !important; } .prompt-block { display: none; padding: 1rem; border: 1px solid #d3d3d3; } .footer, footer, .footer *:not(a) { color: rgba(255,255,255,0.92) !important; text-shadow: 0 0 5px rgba(0,0,0,0.45); } .footer a { color: rgba(255,255,255,0.96) !important; font-weight: 600; text-shadow: 0 0 8px rgba(255,255,255,0.75); } .footer a:hover { color: #fff !important; text-shadow: 0 0 10px rgba(255,255,255,0.85); } .footer .live-time { color: #ffc874 !important; font-weight: 600; } .footer .copyright { color: #fff !important; } .footer .powered, .footer .beian, .footer .since { color: #fff !important; }