.chroma,.astro-code{color:#1f2328;background-color:#f6f8fa!important}.chroma .err,.astro-code .err{color:#f6f8fa;background-color:#82071e}.chroma .hl,.astro-code .hl{background-color:#fffacd}.chroma .ln,.astro-code .ln{color:#1f2328}.chroma .lntd,.astro-code .lntd{vertical-align:top;padding:0;margin:0;border:0}.chroma .lntable,.astro-code .lntable{border-spacing:0;padding:0;margin:0;border:0;width:auto;overflow:auto;display:block}.chroma .line{display:block}.chroma .k,.chroma .kc,.chroma .kd,.chroma .kn,.chroma .kp,.chroma .kr,.chroma .kt{color:#cf222e}.chroma .na,.chroma .nb,.chroma .bp,.chroma .vc,.chroma .vg,.chroma .vi,.chroma .nv{color:#0550ae}.chroma .nc,.chroma .no{color:#6639ba}.chroma .nd,.chroma .ne,.chroma .nf,.chroma .fm{color:#953800}.chroma .s,.chroma .sa,.chroma .sb,.chroma .sc,.chroma .dl,.chroma .sd,.chroma .s2,.chroma .se,.chroma .sh,.chroma .si,.chroma .sx,.chroma .sr,.chroma .s1{color:#0a3069}.chroma .ss{color:#032f62}.chroma .mb,.chroma .mf,.chroma .mh,.chroma .mi,.chroma .il,.chroma .mo,.chroma .o,.chroma .ow{color:#0550ae}.chroma .p{color:#1f2328}.chroma .c,.chroma .ch,.chroma .cm,.chroma .c1,.chroma .cs,.chroma .cp,.chroma .cpf{color:#57606a}.chroma .gd{color:#82071e;background-color:#ffebe9}.chroma .gi{color:#116329;background-color:#dafbe1}.chroma .ge,.chroma .go{color:#1f2328}.chroma .gl{text-decoration:underline}.chroma .w{color:#fff}pre.chroma,pre.astro-code{line-height:1.4;font-size:85%;margin:0;padding:12px}pre.chroma code,pre.astro-code code{font-size:inherit;line-height:inherit;display:block}.astro-code .line{display:inline-block;width:100%;min-height:0;margin:0;padding:0}.toc{margin:0 2px 40px;border:1px solid rgb(238,238,238);background:#f5f5f5;border-radius:8px;padding:.4em}.toc .inner{margin:5px 20px 0;padding:0 10px;opacity:.9;font-size:18px;line-height:1.6}.toc details summary{cursor:zoom-in;margin-inline-start:10px;user-select:none}.toc ul{padding:0}.toc li ul{margin-inline-start:24px}.markdown-body{counter-reset:h2-counter}.markdown-body h2{counter-increment:h2-counter;counter-reset:h3-counter}.markdown-body h2:before{content:counter(h2-counter) ". ";color:inherit;font-weight:inherit;margin-right:4px}.markdown-body h3{counter-increment:h3-counter;counter-reset:h4-counter}.markdown-body h3:before{content:counter(h2-counter) "." counter(h3-counter) " ";color:inherit;font-weight:inherit;margin-right:4px}.markdown-body h4{counter-increment:h4-counter;counter-reset:h5-counter}.markdown-body h4:before{content:counter(h2-counter) "." counter(h3-counter) "." counter(h4-counter) " ";color:inherit;font-weight:inherit;margin-right:4px}.markdown-body h5{counter-increment:h5-counter;counter-reset:h6-counter}.markdown-body h5:before{content:counter(h2-counter) "." counter(h3-counter) "." counter(h4-counter) "." counter(h5-counter) " ";color:inherit;font-weight:inherit;margin-right:4px}.markdown-body h6{counter-increment:h6-counter}.markdown-body h6:before{content:counter(h2-counter) "." counter(h3-counter) "." counter(h4-counter) "." counter(h5-counter) "." counter(h6-counter) " ";color:inherit;font-weight:inherit;margin-right:4px}.post-toc-left{position:fixed;left:max(8px,calc(50vw - var(--page-width, 900px) / 2 - 324px));top:252px;width:320px;max-height:calc(100vh - 360px);overflow-y:auto;overflow-x:hidden;background:#fff;border:1px solid #e5e7eb;border-radius:3px;box-shadow:none;z-index:999;box-sizing:border-box;font-size:13px}.post-toc-left .toc-head{display:flex;align-items:center;justify-content:flex-start}.post-toc-left .toc-head strong{display:none}.post-toc-left .toc-toggle{cursor:pointer;border:none;background:transparent;color:#333;border-radius:2px;font-size:13px;padding:4px;display:flex;align-items:center;justify-content:center;transition:background-color .2s,color .2s}.post-toc-left .toc-toggle:hover{background-color:#f3f4f6;color:#000}.post-toc-left .toc-body{padding-top:2px;padding-bottom:2px}.post-toc-left .toc-list,.post-toc-left .toc-children{list-style:none;margin:0;padding:0}.post-toc-left .toc-children{margin-left:6px}.post-toc-left .toc-line{display:grid;grid-template-columns:8px 1fr;align-items:start;column-gap:4px;min-width:0}.post-toc-left .toc-caret{cursor:pointer;color:#555;font-size:12px;width:8px;display:inline-block;user-select:none;grid-column:1;justify-self:start}.post-toc-left .toc-link{display:inline-block;color:#111;text-decoration:none;margin:2px 0;line-height:1.4;min-width:0;white-space:normal;word-break:break-word;overflow-wrap:break-word;grid-column:2;font-size:13px}.post-toc-left .toc-link:hover{text-decoration:none}.post-toc-left .toc-num{color:#333;margin-right:6px}.post-toc-left .toc-li.collapsed .toc-children{display:none!important}.post-toc-left .l1{padding-left:0}.post-toc-left .l2{padding-left:6px}.post-toc-left .l3{padding-left:12px}.post-toc-left .l4{padding-left:18px}.post-toc-left .l5{padding-left:24px}.post-toc-left .l6{padding-left:30px}.post-toc-left.collapsed .toc-body{display:none!important}.post-toc-left.collapsed .toc-toggle:after{content:none}.post-toc-left.collapsed{background:transparent;border-color:transparent;box-shadow:none;padding:6px 8px;margin-bottom:0!important}.post-toc-left.collapsed .toc-head{margin-bottom:0;justify-content:flex-end}.post-toc-left.collapsed{border:none!important;background:transparent!important;box-shadow:none!important}.post-toc-left.collapsed .toc-toggle{border:none!important;border-radius:4px;padding:0;background:transparent;width:auto;height:auto}.post-toc-left .toc-li.current>.toc-line .toc-link{font-weight:700;color:#ff2121}.post-toc-left .toc-li.current>.toc-line .toc-link .toc-num{color:inherit}.post-toc-left .toc-line:hover{background-color:#f3f4f6}.post-toc-left .toc-line:hover .toc-link,.post-toc-left .toc-line:hover .toc-num{color:#ff2121}@media(max-width:1024px){.post-toc-left{position:static;left:auto;top:auto;width:auto;max-height:none;margin:0 0 12px}.post-toc-left .toc-link{white-space:normal}}html.menu-open .post-toc-left{display:none!important}.post-social{margin:24px 0;padding:12px 0}.post-social-list{display:flex;flex-wrap:wrap;gap:10px;list-style:none;padding:0;margin:0;justify-content:center;font-size:20px}.post-social-link{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:6px;background:var(--color-bg-muted, #f1f5f9);color:var(--color-text);text-decoration:none}.post-social-link .svg-icon{font-size:20px;width:1em;height:1em;display:inline-block}.post-social-link .svg-icon svg{width:100%;height:100%;fill:currentColor}.post-social-link:hover{color:var(--color-primary);text-decoration:none!important}.post-social-link:hover .svg-icon{animation:icon-beat .8s ease-in-out infinite;transform-origin:center;will-change:transform}@keyframes icon-beat{0%{transform:scale(1)}30%{transform:scale(1.12)}60%{transform:scale(.98)}to{transform:scale(1)}}@media(prefers-reduced-motion:reduce){.post-social-link:hover .svg-icon{animation:none}}.series-navigation{background-color:#f9f9f9;border-radius:.5rem;padding:1rem;margin-top:2rem;margin-bottom:2rem;border:1px solid #f3f4f6}.series-navigation .series-title{font-weight:700;margin-bottom:.5rem;color:#111827;font-size:16px}.series-list-ul{list-style:none;padding-left:0;margin:0}.series-item{font-size:.875rem;line-height:1.625;margin-top:.25rem;color:#4b5563}.series-item.active{font-weight:500;color:#000}.series-index{margin-right:.25rem}.series-link{transition:color .15s;text-decoration:none;color:inherit}.series-link:hover{color:#000;text-decoration:underline}.post-end-bar{border:none;border-radius:6px;padding:12px;margin-top:10px;background:#f7f7f7;font-size:14px}.related-topbar{display:flex;align-items:center;justify-content:space-between;gap:8px}.related-top-left{display:inline-flex;align-items:center;color:inherit}.related-top-right{color:inherit}.related-top-left .icon-wrapper{display:inline-flex;align-items:center;justify-content:center;width:1em;height:1em;margin-right:6px;vertical-align:middle;color:inherit}.related-top-left .icon-wrapper .svg-icon{display:block;width:100%;height:100%}.related-top-left .icon-wrapper svg{display:block;width:100%;height:100%;fill:currentColor}.related-top-tag{color:inherit;text-decoration:none;font-size:13px}.related-top-tag:hover{text-decoration:underline}.related-top-link{color:inherit;text-decoration:none;font-size:13px}.related-top-link:hover{text-decoration:underline}.sep{margin:0 5px;color:#ccc}.related-section{border:none;border-radius:6px;padding:12px;margin-top:12px;background:#f7f7f7}.related-list{margin-top:4px}.related-title{margin:0 0 0 20px;font-size:1em;font-weight:700}.related-items{list-style:disc;padding-left:1.4em;margin:0}.related-item{font-size:14px;line-height:1.6;margin:2px 0}.related-link{text-decoration:none;color:inherit}.related-link:hover{text-decoration:underline;color:var(--color-primary)}.related-date{float:right;font-size:14px;white-space:nowrap;opacity:.9;text-align:right;font-variant-numeric:tabular-nums lining-nums;font-feature-settings:"tnum" 1,"lnum" 1;color:inherit}.footer-subscribe{display:flex;align-items:center;justify-content:space-between;gap:16px;border:1px solid #eee;border-radius:3px;padding:12px 14px;margin-top:20px}.footer-subscribe-content{flex:1 1 auto}.wechat-title{font-size:1.2rem;font-weight:700;margin:0 0 6px}.wechat-subtext{color:#555;margin:0 0 10px}.footer-subscribe-qr img{width:120px;height:auto;display:block;border-radius:4px}@media screen and (max-width:600px){.footer-subscribe{flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:12px;padding:10px 12px}.footer-subscribe-content{width:100%}.wechat-title{font-size:1.05rem}.wechat-subtext{font-size:.92rem}.footer-subscribe-qr img{width:160px}}#waline{margin-top:2rem;width:100%;min-height:200px}[data-waline]{--waline-font-size:14px}[data-waline] input,[data-waline] textarea,[data-waline] .wl-header-item,[data-waline] .wl-header-item label,[data-waline] .wl-header-item .wl-title{font-size:14px!important}[data-waline] .wl-power{display:none!important}[data-waline] *,[data-waline] *:before,[data-waline] *:after{box-sizing:border-box}[data-waline] .wl-header{gap:.75rem;border-bottom:1px solid var(--waline-border-color)}@media(max-width:580px){[data-waline] .wl-header-item:not(:last-child){border-bottom:1px solid var(--waline-border-color)}}[data-waline] .wl-panel{border:1px solid #eee;border-radius:3px;padding:12px 14px;background:#fff;width:100%;box-sizing:border-box;margin:0}[data-waline] .wl-editor{border:none;padding:0;min-height:10.5em;background:transparent}@media(max-width:600px){[data-waline] .wl-panel{padding:12px 14px;border-radius:3px}}[data-waline] .wl-meta-head{display:flex;align-items:center;gap:.5rem}[data-waline] .wl-sort{display:flex;gap:.75rem;list-style:none;padding-left:0;margin:0}[data-waline] .wl-sort li{cursor:pointer;padding:.25rem .5rem;border-radius:.25rem;background:var(--waline-bg-color-light)}[data-waline] .wl-count{margin-right:.75rem}.post-reactions{margin:24px 0;padding:16px;border:1px solid var(--color-border,#eee);border-radius:10px;background:var(--color-bg,#fff)}.reactions-header{display:flex;flex-direction:column;align-items:center;gap:6px;margin-bottom:12px}.reactions-header .title{font-weight:700;font-size:18px}.reactions-header .total{color:#666;font-size:14px}.reactions-list{display:flex;flex-wrap:wrap;gap:12px;justify-content:center}.reaction{display:inline-flex;align-items:center;gap:8px;padding:8px 12px;border:1px solid var(--color-border,#eee);border-radius:999px;background:transparent;cursor:pointer;transition:all .15s ease}.reaction .emoji{font-size:36px;line-height:1}.reaction .count{min-width:20px;text-align:center;font-size:16px}.reaction:hover{transform:translateY(-1px);border-color:var(--color-primary,#ff2121)}.reaction.active{background:var(--color-primary,#ff2121);color:#fff;border-color:var(--color-primary,#ff2121)}.reactions-note{margin-top:10px;color:#888;font-size:13px;text-align:center}.mermaid{display:flex;justify-content:center;margin:2rem 0}.post-ads{margin:50px 0}.markdown-body{font-size:15px;max-width:100%;line-height:1.6}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{margin-top:1.5em;margin-bottom:1em;font-weight:600;line-height:1.25;color:#24292f;scroll-margin-top:100px}.markdown-body h1{font-size:2em;padding-bottom:.3em}.markdown-body h2{font-size:1.1em;padding-bottom:.3em}.markdown-body h3{font-size:1.1em}.markdown-body h4{font-size:1em}.markdown-body h5{font-size:.875em}.markdown-body h6{font-size:.85em;color:#57606a}.markdown-body p{margin-top:0;margin-bottom:16px}.markdown-body a{text-decoration:underline;text-decoration-color:#000}.markdown-body a:hover{color:var(--color-primary);text-decoration-color:var(--color-primary)}.markdown-body blockquote{margin:16px 0;padding:0 1em;color:#57606a;border-left:.25em solid #d0d7de;font-size:1em}.markdown-body blockquote>:first-child{margin-top:0}.markdown-body blockquote>:last-child{margin-bottom:0}.markdown-body pre{padding:16px;overflow:auto;border-radius:10px;background-color:#f6f8fa;font-family:var(--font-mono);font-size:85%}.markdown-body code{padding:.2em .4em;font-size:85%;background-color:#f6f8fa;border-radius:6px;font-family:var(--font-mono);color:#c7254e}.markdown-body :not(pre)>code{background-color:#f6f8fa!important}.markdown-body ul{list-style-type:disc}.markdown-body ol{list-style-type:decimal}.markdown-body ul ul,.markdown-body ol ul{list-style-type:disc}.markdown-body ol ol,.markdown-body ul ol{list-style-type:decimal}.markdown-body ul,.markdown-body ol{margin:12px 0;padding-left:2em}.markdown-body li{margin:4px 0}.markdown-body li>p{margin:4px 0}.table-wrapper{overflow-x:auto;margin:20px 0;max-width:100%}.markdown-body table{width:100%;table-layout:auto;border-collapse:collapse;max-width:100%}.markdown-body table,.markdown-body th,.markdown-body td{border:1px solid #c9c9c9}.markdown-body th,.markdown-body td{padding:2px 8px;line-height:1.6;overflow-wrap:break-word}.markdown-body thead th{background:#f7f7f7}.markdown-body th{font-size:14px}.markdown-body td{font-size:13px}.markdown-body table th{white-space:normal;overflow-wrap:break-word;min-width:80px}.markdown-body tr:nth-child(2n){background-color:#f6f8fa}.markdown-body pre>code{padding:0;font-size:100%;background-color:transparent;border:0;font-family:inherit}.post-title{font-size:1.8rem;font-weight:700;margin-bottom:10px;font-family:inherit;line-height:1.2;text-align:center}.post-header .post-meta{margin-bottom:20px;color:#333;font-size:13px}.post .post-meta{display:block;text-align:center;margin-bottom:1rem;line-height:2;font-size:0}.post .post-meta>*{font-size:13px;vertical-align:middle}.post .post-meta .post-meta-item{display:inline-block;white-space:nowrap;vertical-align:middle}.post .post-meta .post-meta-item:not(:last-of-type):after{content:"|";display:inline-block;margin:0 10px;color:#333;font-size:12px}.post .post-meta .post-meta-item .svg-icon,.post .post-meta .post-meta-item i{display:inline-block;height:14px;width:auto;margin-right:6px;vertical-align:middle}.post .post-meta .post-meta-item .svg-icon svg{width:auto;height:100%;fill:currentColor!important;display:block}.post .post-meta .post-meta-item .post-meta-item-text{display:inline-block;vertical-align:middle;white-space:normal}.post .post-meta .post-meta-item time,.post .post-meta .post-meta-item a{font-style:normal;font-weight:400;color:inherit;text-decoration:none}.post .post-meta .post-meta-item a:hover{text-decoration:underline}.separator{margin:0 2px;color:#333}.post-tags{display:inline;font-size:13px;padding:2px 3px;margin-right:6px;border:#000 1px solid;border-radius:3px}.post-date{font-weight:400;font-style:normal}@media(max-width:768px){.post .post-meta{padding-bottom:10px}.post .post-meta .post-meta-item{margin-bottom:8px;margin-right:12px}.post .post-meta .post-meta-item:not(:last-child):after{content:none}}.post-content .hn-num{display:inline-block;margin-right:8px;color:#333;font-weight:500}.post-content img{display:block;margin:16px auto;max-width:95%;height:auto;box-shadow:0 8px 24px #00000014;border-radius:4px;transform-origin:center center;transition:transform .3s cubic-bezier(.2,.8,.2,1),box-shadow .3s cubic-bezier(.2,.8,.2,1)}.post-content img.image-zoomed{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);max-width:95vw;max-height:95vh;width:auto;height:auto;z-index:9999;box-shadow:0 16px 48px #0003;cursor:zoom-out;will-change:transform}.image-zoom-overlay{position:fixed;inset:0;background:transparent;display:none;z-index:9998;opacity:0;transition:opacity .3s ease}.image-zoom-overlay.open{display:block;opacity:1}.image-zoom-overlay{cursor:zoom-out}.image-zoom-clone{position:fixed;top:0;left:0;margin:0;z-index:9999;will-change:transform;transform-origin:center center;transform:translateZ(0);backface-visibility:hidden;box-shadow:0 16px 48px #0003;border-radius:4px;cursor:zoom-out;transition:transform .3s cubic-bezier(.2,.8,.2,1)}.post-series-nav{margin:12px 0 16px}.post-series-nav .post-nav{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border:1px solid #e0e0e0;border-radius:8px;background:#f7f7f7}.post-series-nav .post-link{color:inherit;text-decoration:none;font-size:13px}.post-series-nav .post-link:hover{text-decoration:underline}.post-series-nav .post-link.disabled{opacity:.6;pointer-events:none}.series-list{font-size:14px}.echarts-container{margin:1.5rem 0;border-radius:.5rem;overflow:hidden}.math-jax-block{display:flex;justify-content:center;align-items:center;margin:1.5em 0;overflow-x:auto;width:100%}.math-jax-inline{padding:0 .25em}br+.math-jax-inline{display:block;text-align:center;margin:1.5em 0;width:100%}p>.math-jax-inline:only-child{display:block;text-align:center;margin:1.5em 0}.post-niche-right{display:block;width:100%;margin-top:30px;font-size:13px;line-height:1.6;color:#555;padding:0;opacity:0;transition:opacity .3s ease}.post-niche-right.active{opacity:1}.niche-item{background-color:#f6f8fa96;padding:1rem;border-radius:2px}.niche-item+.niche-item{margin-top:20px}.post-niche-right p,.post-niche-right li,.post-niche-right div,.post-niche-right span{font-size:13px;line-height:1.6;color:#555}.post-niche-right h1,.post-niche-right h2,.post-niche-right h3,.post-niche-right h4{margin-top:0;font-size:1rem;color:#333;margin-bottom:10px;font-weight:600}.post-niche-right ul{padding-left:1rem}.post-niche-right img{max-width:100%;height:auto;border-radius:2px;margin:10px 0}.post-niche-right a{color:var(--color-primary, #ff2121);text-decoration:none}.post-niche-right a:hover{text-decoration:underline}@media(min-width:1450px){.post-niche-right{position:fixed;left:calc(50% + (var(--page-width, 900px) / 2) + 10px);right:auto;width:260px;top:0;bottom:120px;margin:auto;height:fit-content;max-height:90vh;overflow-y:auto;z-index:999;box-shadow:none;border:none}}@media(max-width:1449px){.post-niche-right{display:none!important}}
