pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*!
  Theme: GitHub Dark
  Description: Dark theme as seen on github.com
  Author: github.com
  Maintainer: @Hirse
  Updated: 2021-05-15

  Outdated base version: https://github.com/primer/github-syntax-dark
  Current colors taken from GitHub's CSS
*/.hljs{color:#c9d1d9;background:#0d1117}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#ff7b72}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#d2a8ff}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#79c0ff}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#a5d6ff}.hljs-built_in,.hljs-symbol{color:#ffa657}.hljs-comment,.hljs-code,.hljs-formula{color:#8b949e}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#7ee787}.hljs-subst{color:#c9d1d9}.hljs-section{color:#1f6feb;font-weight:700}.hljs-bullet{color:#f2cc60}.hljs-emphasis{color:#c9d1d9;font-style:italic}.hljs-strong{color:#c9d1d9;font-weight:700}.hljs-addition{color:#aff5b4;background-color:#033a16}.hljs-deletion{color:#ffdcd7;background-color:#67060c}:root{--bg: #f5f5f5;--surface: #ffffff;--text: #303133;--text-strong: #333333;--text-muted: #909399;--border: #ebeef5;--border-strong: #dcdfe6;--primary: #fb6c28;--primary-hover: #e85d1a;--gradient: linear-gradient(270deg, #986fee, #8695e6, #68b7dd, #18d7d3);--code: #409eff;--code-bg: #e8f3ff;--shadow: 0 0 10px -5px #949494;--shadow-hover: 0 6px 18px -6px rgba(0, 0, 0, .18);--radius: 8px;--radius-sm: 4px;--radius-pill: 999px;--max-width: 1100px;--header-h: 60px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 36px;--space-7: 60px;--text-xs: 12px;--text-sm: 13px;--text-md: 14px;--text-base: 16px;--text-lg: 19px;--text-xl: 24px;--text-2xl: 30px;--text-3xl: 40px;--dur-fast: .12s;--dur: .2s;--ease: cubic-bezier(.2, .8, .2, 1);--focus-ring: 0 0 0 2px var(--surface), 0 0 0 4px var(--primary)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei,微软雅黑,Arial,sans-serif;background:var(--bg);color:var(--text);line-height:1.7;-webkit-font-smoothing:antialiased}a{color:var(--primary);text-decoration:none;transition:color .2s}a:hover{color:var(--primary-hover)}a:focus-visible,button:focus-visible,.post-card:focus-visible,.pagination__item:focus-visible,.tag:focus-visible{outline:none;box-shadow:var(--focus-ring)}.site-logo:focus-visible{outline:none;box-shadow:var(--focus-ring);border-radius:var(--radius-sm)}.container{max-width:var(--max-width);margin:0 auto;padding:0 20px}.site-header{position:sticky;top:0;z-index:10;background:#ffffffd9;-webkit-backdrop-filter:saturate(180%) blur(10px);backdrop-filter:saturate(180%) blur(10px);border-bottom:1px solid var(--border);box-shadow:var(--shadow)}.site-header__inner{display:flex;align-items:center;justify-content:space-between;height:var(--header-h)}.site-logo{font-size:22px;font-weight:800;letter-spacing:.5px;background:var(--gradient);-webkit-background-clip:text;background-clip:text;color:transparent}.site-nav a{margin-left:22px;font-weight:600;color:var(--text)}.site-nav a:hover{color:var(--primary)}.site-main{padding:36px 20px 60px;min-height:62vh}.site-footer{border-top:1px solid var(--border);background:var(--surface);padding:28px 0;color:var(--text-muted);text-align:center}.site-footer__links a{margin:0 10px;font-weight:600}.site-footer__beian{margin:4px 0 0}.site-footer__beian a{font-weight:600}.beian-icon{width:16px;height:16px;vertical-align:middle;margin-right:6px;color:var(--text-muted)}.hero{text-align:center;padding:30px 0 6px}.hero__title{font-size:40px;font-weight:800;margin:0 0 12px;background:var(--gradient);-webkit-background-clip:text;background-clip:text;color:transparent}.hero__desc{font-size:18px;color:var(--text-muted);margin:0 auto 18px;max-width:640px}.hero__tags{display:flex;flex-wrap:wrap;gap:10px;justify-content:center}.section-head{display:flex;align-items:baseline;justify-content:space-between;margin:40px 0 18px}.section-head__title{font-size:22px;margin:0;color:var(--text-strong)}.section-head__more{font-weight:600;color:var(--text-muted)}.section-head__more:hover{color:var(--primary)}.post-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:24px}.post-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);display:flex;flex-direction:column;transition:transform .25s ease,box-shadow .25s ease}.post-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-hover)}.post-card__cover{display:block;height:160px;position:relative}.post-card__cover img{width:100%;height:100%;object-fit:cover;display:block}.post-card__cover--gradient{display:flex;align-items:flex-end;padding:14px}.post-card__cover-cat{color:#fff;font-weight:700;font-size:14px;background:#00000047;padding:4px 10px;border-radius:var(--radius-pill)}.post-card__body{padding:18px;display:flex;flex-direction:column;gap:10px;flex:1}.post-card__meta{display:flex;align-items:center;gap:12px;font-size:13px;color:var(--text-muted)}.post-card__title{font-size:19px;margin:0;line-height:1.4}.post-card__title a{color:var(--text)}.post-card__title a:hover{color:var(--primary)}.post-card__summary{margin:0;color:var(--text-muted);font-size:14px;flex:1;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.post-card__tags{display:flex;flex-wrap:wrap;gap:8px}.post-card__footer{font-size:13px;color:var(--text-muted)}.badge{font-size:12px;font-weight:700;padding:2px 10px;border-radius:var(--radius-pill)}.badge--cat{background:var(--gradient);color:#fff}.tag{display:inline-block;font-size:12px;font-weight:600;padding:4px 10px;border-radius:var(--radius-pill);background:#fb6c281a;color:var(--primary);transition:background .2s,color .2s}.tag:hover{background:var(--gradient);color:#fff}.tag-cloud{display:flex;flex-wrap:wrap;gap:14px;margin-top:10px}.tag--cloud{font-size:15px;padding:8px 16px;background:#fb6c281a;color:var(--primary);border:1px solid transparent;box-shadow:var(--shadow);transition:background .2s,color .2s}.tag--cloud:hover{background:var(--gradient);color:#fff}.tag--count{margin-left:6px;font-size:12px;color:var(--text-muted)}.page-head{margin:10px 0 24px}.page-head__title{font-size:28px;margin:0 0 6px;color:var(--text-strong)}.page-head__sub{color:var(--text-muted);margin:0}.empty{color:var(--text-muted);text-align:center;padding:40px 0}.breadcrumb{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin:0 0 18px;font-size:13px;color:var(--text-muted)}.breadcrumb a{color:var(--text-muted);font-weight:600}.breadcrumb a:hover{color:var(--primary)}.breadcrumb .sep{color:var(--border-strong)}.breadcrumb .cur{color:var(--text-strong);font-weight:600}.post{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:34px 38px;box-shadow:var(--shadow)}.post__head{border-bottom:1px solid var(--border);padding-bottom:20px;margin-bottom:24px}.post__meta{display:flex;align-items:center;gap:14px;font-size:14px;color:var(--text-muted);margin-bottom:12px}.post__title{font-size:30px;margin:0 0 14px;line-height:1.3;color:var(--text-strong)}.post__tags{display:flex;flex-wrap:wrap;gap:8px}.post__nav{display:flex;justify-content:space-between;gap:16px;margin-top:40px;padding-top:22px;border-top:1px solid var(--border)}.post__nav a{display:flex;flex-direction:column;gap:4px;padding:14px 18px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);flex:1;transition:border-color .2s}.post__nav-next{text-align:right}.post__nav-label{font-size:13px;color:var(--text-muted)}.post__nav-title{font-weight:700;color:var(--text);transition:color .2s}.post__nav a:hover{border-color:var(--primary)}.post__nav a:hover .post__nav-title{color:var(--primary)}.prose{font-size:16px;line-height:1.85;color:var(--text)}.prose h1,.prose h2,.prose h3{line-height:1.35;margin:1.6em 0 .6em;color:var(--text-strong)}.prose h2{font-size:24px;padding-left:12px;border-left:4px solid var(--primary)}.prose h3{font-size:20px}.prose p{margin:.8em 0}.prose img{max-width:100%;border-radius:10px}.prose blockquote{margin:1em 0;padding:10px 18px;border-left:4px solid var(--primary);background:#fb6c2812;color:var(--text-muted);border-radius:0 var(--radius) var(--radius) 0}.prose ul,.prose ol{padding-left:1.5em}.prose li{margin:.35em 0}.prose code{font-family:JetBrains Mono,Fira Code,Consolas,Monaco,monospace;font-size:.9em;background:var(--code-bg);padding:2px 6px;border-radius:var(--radius-sm);color:var(--code)}.prose pre{background:#0f172a;color:#e2e8f0;padding:18px 20px;border-radius:var(--radius);overflow-x:auto;margin:1.2em 0;font-size:14px;line-height:1.6;box-shadow:var(--shadow)}.prose pre code{background:transparent;color:inherit;padding:0;font-size:14px;border-radius:0}.code-block{margin:1.2em 0;border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}.code-block__bar{display:flex;align-items:center;gap:6px;height:36px;padding:0 14px;background:#282c34;border-radius:var(--radius) var(--radius) 0 0}.dot{width:12px;height:12px;border-radius:50%;display:inline-block}.dot--r{background:#ff5f56}.dot--y{background:#ffbd2e}.dot--g{background:#27c93f}.code-block__copy{margin-left:auto;border:none;background:transparent;color:#ffffff8c;font-size:12px;cursor:pointer;padding:4px 8px;border-radius:var(--radius-sm);transition:color .2s,background .2s}.code-block__copy:hover{color:#fff;background:#ffffff1f}.code-block pre{margin:0;border-radius:0 0 var(--radius) var(--radius);box-shadow:none}.prose table{border-collapse:collapse;width:100%;margin:1.2em 0}.prose th,.prose td{border:1px solid var(--border);padding:8px 12px;text-align:left}.prose th{background:var(--bg)}.about{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:34px 38px;box-shadow:var(--shadow)}.about__head{display:flex;align-items:center;gap:18px;margin-bottom:18px}.about__avatar{width:84px;height:84px;border-radius:50%;box-shadow:var(--shadow)}.about__title{margin:0 0 6px}.about__author{margin:0;color:var(--text-muted)}.about__bio{white-space:pre-line;color:var(--text-muted)}.about__stack,.about__social{padding-left:1.4em}.about__stack li,.about__social li{margin:.4em 0}.btn{display:inline-block;padding:10px 22px;border-radius:var(--radius-pill);background:var(--gradient);color:#fff;font-weight:700}.btn:hover{color:#fff;opacity:.92}.grad-0{background:linear-gradient(135deg,#667eea,#764ba2)}.grad-1{background:linear-gradient(135deg,#11998e,#38ef7d)}.grad-2{background:linear-gradient(135deg,#f093fb,#f5576c)}.grad-3{background:linear-gradient(135deg,#4facfe,#00f2fe)}.grad-4{background:linear-gradient(135deg,#fa709a,#fee140)}.grad-5{background:linear-gradient(135deg,#30cfd0,#330867)}@media (max-width: 640px){.hero__title{font-size:30px}.post-grid{grid-template-columns:1fr}.post,.about{padding:22px 20px}.prose{font-size:15px}.post__nav{flex-direction:column}}@media (prefers-color-scheme: dark){:root{--bg: #1f1f1f;--surface: #2a2a2a;--text: #c8c8c8;--text-strong: #ededed;--text-muted: #a0a0a0;--border: #3a3a3a;--border-strong: #4a4a4a;--primary: #a8a8ff;--primary-hover: #c0c0ff;--code-bg: #353246;--code: #efa141}.site-header{background:#2a2a2ad9}.site-footer{background:var(--surface)}.prose blockquote{background:#fb6c281a}}.pagination{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px;margin:36px 0 8px}.pagination__item{display:inline-flex;align-items:center;justify-content:center;min-width:38px;height:38px;padding:0 14px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);font-size:14px;font-weight:600;transition:border-color .2s,color .2s,background .2s}.pagination__item:hover{border-color:var(--primary);color:var(--primary)}.pagination__item--active{border-color:var(--primary);background:var(--primary);color:#fff;cursor:default}.pagination__item--active:hover{color:#fff;opacity:.92}.pagination__item--disabled{color:var(--text-muted);background:var(--bg);border-color:var(--border);cursor:not-allowed;opacity:.6}.pagination__item--disabled:hover{color:var(--text-muted);border-color:var(--border)}.skip-link{position:absolute;left:12px;top:12px;padding:10px 16px;background:var(--primary);color:#fff;font-weight:700;border-radius:var(--radius);transform:translateY(-150%);transition:transform var(--dur) var(--ease);z-index:100}.skip-link:focus,.skip-link:focus-visible{transform:translateY(0);color:#fff;box-shadow:var(--focus-ring)}.site-nav a.is-active,.site-nav a[aria-current=page]{color:var(--primary);position:relative}.site-nav a.is-active:after,.site-nav a[aria-current=page]:after{content:"";position:absolute;left:0;right:0;bottom:-22px;height:2px;background:var(--primary);border-radius:2px}.site-header{border-bottom:1px solid var(--border)}.site-nav a.is-active:after,.site-nav a[aria-current=page]:after{bottom:-21px}.prose :is(h1,h2,h3),.page-head__title,.section-head__title{scroll-margin-top:calc(var(--header-h) + 12px)}.code-block__copy{position:relative}.code-block__copy:after{content:attr(data-state);position:absolute;right:0;top:100%;margin-top:4px;font-size:var(--text-xs);color:var(--text-muted);white-space:nowrap;opacity:0;transition:opacity var(--dur) var(--ease);pointer-events:none}.code-block__bar{position:relative}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.post-card:hover{transform:none}.site-header{-webkit-backdrop-filter:none;backdrop-filter:none}}.empty,.notfound{text-align:center;padding:60px var(--space-4);color:var(--text-muted)}.empty__icon,.notfound__code{display:inline-block;margin:0 0 var(--space-3);font-size:var(--text-3xl);background:var(--gradient);-webkit-background-clip:text;background-clip:text;color:transparent}.notfound__code{font-size:90px;font-weight:800;line-height:1}.notfound__text{margin:var(--space-3) 0 var(--space-5)}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.prose pre.hljs,.code-block pre.hljs{background:#0f172a;padding:18px 20px}.code-block pre.hljs{padding:18px 20px}.code-block__lang{margin-left:10px;font-size:12px;font-weight:600;letter-spacing:.4px;color:#ffffff73;-webkit-user-select:none;user-select:none}.code-block__lang+.code-block__copy{margin-left:auto}@media (max-width: 640px){.pagination__item{min-width:34px;height:34px;padding:0 10px;font-size:13px}.tag-cloud{gap:10px}.hero{padding-top:16px}}.site-main{animation:page-fade-in .22s ease both}@keyframes page-fade-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion: reduce){.site-main{animation:none}}
