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

  Outdated base version: https://github.com/primer/github-syntax-light
  Current colors taken from GitHub's CSS
*/.hljs{color:#24292e;background:#fff}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#d73a49}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#6f42c1}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#005cc5}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#032f62}.hljs-built_in,.hljs-symbol{color:#e36209}.hljs-comment,.hljs-code,.hljs-formula{color:#6a737d}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#22863a}.hljs-subst{color:#24292e}.hljs-section{color:#005cc5;font-weight:700}.hljs-bullet{color:#735c0f}.hljs-emphasis{color:#24292e;font-style:italic}.hljs-strong{color:#24292e;font-weight:700}.hljs-addition{color:#22863a;background-color:#f0fff4}.hljs-deletion{color:#b31d28;background-color:#ffeef0}:root{--paper: #f6f3ed;--paper-hi: #fffefb;--ink: #1a1815;--ink-2: #4f4940;--ink-3: #8c8477;--line: #e3ddd1;--line-2: #efeae0;--seal: #9c3b2c;--seal-soft: rgba(156, 59, 44, .08);--serif: "Songti SC", "STSong", "Noto Serif SC", "Source Han Serif SC", "Songti TC", Georgia, serif;--sans: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;--mono: "SF Mono", ui-monospace, Menlo, Consolas, monospace;--max: 780px}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background-color:var(--paper);background-image:radial-gradient(circle at 18% 12%,rgba(255,255,255,.9),transparent 45%),radial-gradient(circle at 82% 78%,rgba(226,218,203,.5),transparent 50%);background-attachment:fixed;color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;font-size:16px;line-height:1.7}a{color:inherit;text-decoration:none}button{font-family:inherit;cursor:pointer}img{max-width:100%;display:block}.wrap{max-width:var(--max);margin:0 auto;padding:0 28px}.demo-bar{background:var(--seal-soft);border-bottom:1px solid rgba(156,59,44,.18);text-align:center;font-size:12px;letter-spacing:.1em;color:var(--seal);padding:7px 12px}.demo-bar a,.linklike{border:none;background:none;padding:0;font-size:12px;letter-spacing:.1em;color:var(--seal);border-bottom:1px solid rgba(156,59,44,.4)}.linklike:hover{border-bottom-color:var(--seal)}.nav{position:sticky;top:0;z-index:40;-webkit-backdrop-filter:saturate(140%) blur(10px);backdrop-filter:saturate(140%) blur(10px);background:#f6f3edc7;border-bottom:1px solid var(--line-2)}.nav-inner{max-width:var(--max);margin:0 auto;padding:18px 28px;display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;column-gap:18px;row-gap:4px}.brand{font-family:var(--serif);font-size:22px;letter-spacing:.34em;color:var(--ink)}.brand small{display:block;font-family:var(--sans);font-size:10px;letter-spacing:.3em;color:var(--ink-3);margin-top:2px;text-transform:uppercase}.navlinks{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:26px;font-size:13px;letter-spacing:.14em;color:var(--ink-2)}.navlinks a{position:relative;padding-bottom:3px}.navlinks a:after{content:"";position:absolute;left:0;right:100%;bottom:0;height:1px;background:var(--seal);transition:right .35s cubic-bezier(.2,.8,.2,1)}.navlinks a:hover{color:var(--seal)}.navlinks a:hover:after{right:0}.navlinks .active{color:var(--seal)}.navlinks .active:after{right:0}.eyebrow{font-size:11px;letter-spacing:.32em;color:var(--ink-3);text-transform:uppercase}.muted{color:var(--ink-3)}.seal{color:var(--seal)}.btn{border:1px solid var(--line);background:transparent;color:var(--ink);padding:9px 20px;font-size:13px;letter-spacing:.16em;border-radius:2px;transition:all .25s ease}.btn:hover{border-color:var(--seal);color:var(--seal);background:var(--seal-soft)}.btn.solid{background:var(--ink);color:var(--paper-hi);border-color:var(--ink)}.btn.solid:hover{background:var(--seal);border-color:var(--seal);color:#fff}.btn.ghost{border-color:transparent;color:var(--ink-3)}.btn.ghost:hover{color:var(--seal);background:transparent}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.sm{padding:5px 12px;font-size:12px;letter-spacing:.1em}.field{margin-bottom:22px}.field label{display:block;font-size:11px;letter-spacing:.24em;color:var(--ink-3);margin-bottom:8px}.input{width:100%;border:none;border-bottom:1px solid var(--line);background:transparent;padding:9px 2px;font-size:15px;font-family:var(--sans);color:var(--ink);transition:border-color .25s ease}.input:focus{outline:none;border-color:var(--seal)}textarea.input{border:1px solid var(--line);padding:12px;line-height:1.8;resize:vertical}textarea.code{font-family:var(--mono);font-size:13.5px}.notice{border-left:2px solid var(--seal);background:var(--seal-soft);padding:10px 14px;font-size:13px;color:var(--ink-2)}.notice.plain{border-color:var(--line);background:transparent;color:var(--ink-3)}.hero{padding:92px 0 56px;position:relative}.hero h1{font-family:var(--serif);font-size:clamp(34px,5.4vw,50px);font-weight:500;letter-spacing:.06em;margin:0 0 18px;line-height:1.35}.hero p{max-width:30em;color:var(--ink-2);font-size:15px;margin:0}.hero .vertical{writing-mode:vertical-rl;position:absolute;right:0;top:100px;font-family:var(--serif);font-size:12px;letter-spacing:.5em;color:var(--ink-3)}.section-head{display:flex;align-items:baseline;justify-content:space-between;border-bottom:1px solid var(--line);padding-bottom:12px;margin-bottom:4px}.section-head h2{font-family:var(--serif);font-size:17px;font-weight:500;letter-spacing:.22em;margin:0}.postrow{display:grid;grid-template-columns:92px 1fr;gap:26px;padding:26px 0;border-bottom:1px solid var(--line-2);animation:rise .6s cubic-bezier(.2,.8,.2,1) both}.postrow .date{font-family:var(--mono);font-size:11.5px;letter-spacing:.06em;color:var(--ink-3);padding-top:6px}.postrow .body{min-width:0}.postrow h3{font-family:var(--serif);font-size:21px;font-weight:500;margin:0 0 8px;line-height:1.5;letter-spacing:.02em;transition:color .25s ease}.postrow:hover h3{color:var(--seal)}.postrow .sum{color:var(--ink-2);font-size:14.5px;margin:0 0 12px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.meta{display:flex;align-items:center;gap:14px;font-size:11.5px;letter-spacing:.08em;color:var(--ink-3);flex-wrap:wrap}.pin{color:var(--seal);border:1px solid rgba(156,59,44,.3);padding:1px 6px;font-size:10.5px;letter-spacing:.14em}.tags{display:flex;gap:8px;flex-wrap:wrap}.tag{font-size:11.5px;letter-spacing:.08em;color:var(--seal);border:1px solid rgba(156,59,44,.22);padding:2px 9px;border-radius:1px;background:transparent;transition:all .2s ease}.tag:hover,.tag.on{background:var(--seal);color:#fff;border-color:var(--seal)}.tag.plain{color:var(--ink-3);border-color:var(--line)}.tag.plain:hover{background:transparent;color:var(--ink);border-color:var(--ink-3)}.progress{position:fixed;top:0;left:0;height:2px;background:var(--seal);z-index:60;transition:width .1s linear}.article-head{padding:74px 0 30px;border-bottom:1px solid var(--line-2)}.article-head h1{font-family:var(--serif);font-size:clamp(28px,4.2vw,38px);font-weight:500;line-height:1.45;letter-spacing:.03em;margin:14px 0 16px}.prose{font-family:var(--serif);font-size:17px;line-height:1.95;color:#2b2722;padding:34px 0 20px;word-wrap:break-word}.prose p{margin:1.35em 0}.prose p:first-child{font-size:17.5px}.prose h2{font-size:21px;font-weight:500;margin:2.4em 0 .9em;padding-left:14px;position:relative;letter-spacing:.04em}.prose h2:before{content:"";position:absolute;left:0;top:.42em;bottom:.42em;width:2px;background:var(--seal)}.prose h3{font-size:18px;font-weight:500;margin:2em 0 .8em;letter-spacing:.04em}.prose h4{font-size:16px;font-weight:600;margin:1.8em 0 .6em}.prose a{color:var(--seal);border-bottom:1px solid rgba(156,59,44,.35)}.prose a:hover{background:var(--seal-soft)}.prose ul,.prose ol{padding-left:1.4em;margin:1.2em 0}.prose li{margin:.45em 0}.prose blockquote{margin:1.6em 0;padding:4px 0 4px 18px;border-left:2px solid var(--seal);color:var(--ink-2);background:linear-gradient(to right,var(--seal-soft),transparent 70%)}.prose blockquote p{margin:.6em 0}.prose hr{border:none;border-top:1px dashed var(--line);margin:2.6em 0}.prose code{font-family:var(--mono);font-size:13.5px;background:#8c84771f;padding:2px 6px;border-radius:2px}.prose pre{background:var(--paper-hi);border:1px solid var(--line-2);border-radius:3px;padding:16px 18px;overflow-x:auto;margin:1.7em 0;line-height:1.7}.prose pre code{background:transparent;padding:0;font-size:13px}.prose img{border:1px solid var(--line-2);border-radius:2px;margin:1.8em 0;background:var(--paper-hi)}.prose table{width:100%;border-collapse:collapse;margin:1.6em 0;font-size:15px}.prose th,.prose td{border:1px solid var(--line);padding:8px 12px}.prose th{background:#8c847714;font-weight:500}.img-locked{display:inline-block;font-size:12px;letter-spacing:.1em;color:var(--ink-3);border:1px dashed var(--line);padding:4px 10px;font-family:var(--sans)}.article-foot{border-top:1px solid var(--line);margin-top:30px;padding-top:26px}.actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.comments{margin:50px 0 20px}.c-form{padding:16px 0 4px}.c-form-foot{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-top:12px}.cnode{padding:14px 0 10px;border-top:1px solid var(--line-2);animation:rise .45s cubic-bezier(.2,.8,.2,1) both}.c-head{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;font-size:12px;color:var(--ink-3);letter-spacing:.04em}.c-name{font-family:var(--serif);font-size:13.5px;color:var(--ink);letter-spacing:.05em}.c-region{border:1px solid var(--line);padding:0 6px;font-size:11px;letter-spacing:.06em}.c-op{background:none;border:none;padding:0;font-size:11.5px;letter-spacing:.1em;color:var(--ink-3)}.c-op:hover{color:var(--seal)}.cnode .cnode{border-left:1px solid var(--line-2);padding-left:14px;margin-top:2px}.cnode.depth-1{margin-left:16px}.cnode.depth-2{margin-left:32px}.cnode.depth-3{margin-left:48px}.c-body{margin-top:6px;font-size:14.5px;line-height:1.85;color:var(--ink-2);white-space:pre-wrap;word-break:break-word}.c-at{color:var(--seal);font-size:13.5px}.c-reply{margin-top:10px;padding-left:14px;border-left:2px solid var(--line)}.cloud{display:flex;flex-wrap:wrap;gap:12px;padding:30px 0}.cloud .tag{font-size:14px;padding:5px 14px;font-family:var(--serif)}.about-grid{display:grid;grid-template-columns:148px 1fr;gap:34px;padding:40px 0}.avatar{width:148px;height:148px;border:1px solid var(--line);background:var(--paper-hi);display:flex;align-items:center;justify-content:center;font-family:var(--serif);font-size:40px;color:var(--seal);overflow:hidden}.avatar img{width:100%;height:100%;object-fit:cover}.about-grid p{font-family:var(--serif);font-size:16.5px;line-height:1.95;color:var(--ink-2)}.auth{max-width:400px;margin:0 auto;padding:74px 0 60px}.tabs{display:flex;gap:22px;border-bottom:1px solid var(--line);margin-bottom:32px}.tabs button{background:none;border:none;padding:0 0 10px;font-size:13px;letter-spacing:.16em;color:var(--ink-3);position:relative}.tabs button.on{color:var(--seal)}.tabs button.on:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;background:var(--seal)}.row{display:flex;gap:10px}.row .input{flex:1}.admin{padding:60px 0}.admin-head{display:flex;align-items:baseline;justify-content:space-between;border-bottom:1px solid var(--line);padding-bottom:14px;margin-bottom:10px}.admin-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 0;border-bottom:1px solid var(--line-2)}.admin-row .t{font-family:var(--serif);font-size:17px}.admin-row .t .badge{font-family:var(--sans);font-size:10.5px;letter-spacing:.12em;border:1px solid var(--line);color:var(--ink-3);padding:1px 6px;margin-left:10px}.admin-row .t .badge.on{border-color:#9c3b2c59;color:var(--seal)}.editor{display:grid;grid-template-columns:1fr 1fr;gap:28px;padding:20px 0 60px}.editor .pane{min-width:0}.preview{border:1px solid var(--line-2);background:var(--paper-hi);padding:22px 24px;max-height:74vh;overflow-y:auto}.preview .prose{font-size:15.5px;padding:0}.toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;padding:12px 0;border-bottom:1px solid var(--line-2);margin-bottom:18px}.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.stat{border:1px solid var(--line-2);background:var(--paper-hi);padding:16px 18px}.stat b{display:block;font-family:var(--serif);font-size:26px;font-weight:500;letter-spacing:.04em}.stat span{font-size:11px;letter-spacing:.2em;color:var(--ink-3)}.contact-block{padding:46px 0 0}.contact-row{display:grid;grid-template-columns:110px 1fr;gap:18px;padding:15px 0;border-bottom:1px solid var(--line-2);align-items:start}.contact-row .k{font-size:11px;letter-spacing:.24em;color:var(--ink-3);padding-top:3px}.contact-row a{color:var(--seal);border-bottom:1px solid rgba(156,59,44,.3)}.contact-row .v{display:flex;align-items:center;gap:16px;font-size:15px;flex-wrap:wrap}.qr{width:108px;height:108px;border:1px solid var(--line);background:var(--paper-hi);object-fit:contain}.wechat-card{display:block;margin-top:26px;max-width:430px;border:1px solid var(--line);background:var(--paper-hi);transition:box-shadow .3s ease,transform .3s ease,border-color .3s ease}.wechat-card img{width:100%;display:block}.wechat-card:hover{border-color:var(--line);box-shadow:0 8px 26px #1a181512;transform:translateY(-2px)}.prose figure{margin:2.2em 0}.prose figure img{margin:0}.prose figcaption{font-family:var(--sans);font-size:12.5px;letter-spacing:.06em;color:var(--ink-3);text-align:center;margin-top:10px}.footer{margin-top:80px;border-top:1px solid var(--line);padding:34px 0 60px;font-size:12.5px;color:var(--ink-3);letter-spacing:.06em}.footer .grid{display:flex;justify-content:space-between;gap:30px;flex-wrap:wrap;align-items:flex-end}.subscribe{display:flex;gap:10px;align-items:center}.subscribe .input{width:200px;font-size:13px}.empty{padding:60px 0;text-align:center;color:var(--ink-3);font-size:14px;letter-spacing:.1em}.spinner{position:relative;width:100%;height:44px;margin:52px auto 0}.spinner:before{content:"";position:absolute;left:50%;top:4px;width:18px;height:18px;margin-left:-9px;border:1px solid var(--line);border-top-color:var(--seal);border-radius:50%;animation:spin .9s linear infinite}.spinner:after{content:"载入中";position:absolute;left:50%;bottom:0;transform:translate(-50%);font-size:11px;letter-spacing:.2em;color:var(--ink-3);white-space:nowrap}@keyframes spin{to{transform:rotate(360deg)}}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.fade{animation:rise .55s cubic-bezier(.2,.8,.2,1) both}.search{width:180px;font-size:13px}@media (max-width: 760px){.wrap{padding:0 20px}.nav-inner{padding:13px 20px;column-gap:14px}.brand{font-size:18px;letter-spacing:.2em}.brand small{display:none}.navlinks{gap:15px;font-size:12.5px;letter-spacing:.04em}.navlinks a,.navlinks button{padding:2px 0 5px}.navlinks .btn.sm{padding:4px 11px}.hero{padding:46px 0 28px}.hero h1{letter-spacing:.03em}.hero .vertical{display:none}.section-head{flex-wrap:wrap;gap:10px}.search{width:100%}.postrow{grid-template-columns:1fr;gap:8px;padding:22px 0}.postrow .date{padding-top:0}.postrow h3{font-size:19px}.article-head{padding:44px 0 22px}.prose{font-size:16.5px;line-height:1.9}.prose table{display:block;overflow-x:auto}.editor{grid-template-columns:1fr}.editor textarea.input{min-height:44vh}.preview{max-height:none}.about-grid{grid-template-columns:1fr;gap:20px}.avatar{width:108px;height:108px;font-size:32px}.contact-row{grid-template-columns:1fr;gap:6px}.wechat-card{max-width:100%}.c-form-foot{align-items:flex-start;gap:10px}.c-reply,.cnode .cnode{padding-left:10px}.stat-grid{grid-template-columns:repeat(2,1fr);gap:10px}.stat{padding:13px 14px}.stat b{font-size:22px}.admin-head{flex-wrap:wrap;gap:10px}.admin-row{flex-wrap:wrap}.admin-row .actions{width:100%;justify-content:flex-start}.footer{padding:28px 0 44px}.footer .grid{gap:20px}.subscribe{width:100%}.subscribe .input{width:auto;flex:1;min-width:0}@supports (padding-bottom: env(safe-area-inset-bottom)){.footer{padding-bottom:calc(44px + env(safe-area-inset-bottom))}}}@media (max-width: 420px){.wrap{padding:0 16px}.nav-inner{padding:11px 16px;column-gap:10px}.navlinks{font-size:12px;letter-spacing:.02em;gap:12px}.navlinks .btn.sm{padding:3px 9px}.hero{padding:38px 0 24px}.article-head h1{font-size:26px}.postrow h3{font-size:18px}.cnode.depth-1{margin-left:8px}.cnode.depth-2{margin-left:16px}.cnode.depth-3{margin-left:24px}.cnode .cnode{padding-left:8px}.stat b{font-size:20px}.tag{font-size:11px;padding:2px 7px}}
