@keyframes astroFadeInOut{0%{opacity:1}to{opacity:0}}@keyframes astroFadeIn{0%{opacity:0;mix-blend-mode:plus-lighter}to{opacity:1;mix-blend-mode:plus-lighter}}@keyframes astroFadeOut{0%{opacity:1;mix-blend-mode:plus-lighter}to{opacity:0;mix-blend-mode:plus-lighter}}@keyframes astroSlideFromRight{0%{transform:translate(100%)}}@keyframes astroSlideFromLeft{0%{transform:translate(-100%)}}@keyframes astroSlideToRight{to{transform:translate(100%)}}@keyframes astroSlideToLeft{to{transform:translate(-100%)}}@media(prefers-reduced-motion){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}[data-astro-transition-scope]{animation:none!important}}html{--un-bg-opacity:var(--un-preset-theme-colors-background--alpha, 1);background-color:oklch(var(--un-preset-theme-colors-background) / var(--un-bg-opacity));--un-text-opacity:var(--un-preset-theme-colors-secondary--alpha, 1);color:oklch(var(--un-preset-theme-colors-secondary) / var(--un-text-opacity));-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;scrollbar-width:thin;scrollbar-color:oklch(var(--un-preset-theme-colors-secondary) / .25) transparent;scrollbar-gutter:stable;text-autospace:normal}body{backface-visibility:hidden;-webkit-backface-visibility:hidden}body::selection{--un-bg-opacity:var(--un-preset-theme-colors-highlight--alpha, 1);background-color:oklch(var(--un-preset-theme-colors-highlight) / var(--un-bg-opacity))}.highlight-static,.highlight-hover{position:relative;display:inline-block}.highlight-static:after,.highlight-hover:after{position:absolute;left:0;z-index:-1;height:.5em;width:100%;--un-bg-opacity:var(--un-preset-theme-colors-highlight--alpha, 1);background-color:oklch(var(--un-preset-theme-colors-highlight) / var(--un-bg-opacity));content:""}.highlight-static:after,.highlight-hover:hover:after{transform-origin:bottom left;--un-scale-x:1;transform:translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}.highlight-hover:after{transform-origin:bottom right;--un-scale-x:0;transform:translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z));transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-timing-function:cubic-bezier(0,0,.2,1)}@media(min-width:1024px){.highlight-hover:after{transition-duration:.3s}}.heading-anchor-link{display:inline-block;--un-translate-y:.1em;transform:translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}h1:hover .heading-anchor-link svg,h2:hover .heading-anchor-link svg,h3:hover .heading-anchor-link svg,h4:hover .heading-anchor-link svg{opacity:.4}.heading-anchor-link svg{margin-left:.4em;aspect-ratio:1/1;width:.9em;opacity:0;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-timing-function:cubic-bezier(0,0,.2,1)}.heading-anchor-link svg:active{--un-scale-x:.9;--un-scale-y:.9;transform:translate(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotate(var(--un-rotate-z)) skew(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z))}h1:hover .heading-anchor-link svg:hover,h2:hover .heading-anchor-link svg:hover,h3:hover .heading-anchor-link svg:hover,h4:hover .heading-anchor-link svg:hover{opacity:.8}.zoom-overlay{position:fixed;left:0;top:0;z-index:999;display:none;height:100%;width:100%;cursor:zoom-out;background-color:oklch(var(--un-preset-theme-colors-background) / .95);opacity:0;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:.3s}.zoom-img{position:fixed;z-index:1000;cursor:zoom-out;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:.3s}.code-copy-button{position:absolute;right:.55rem;top:.55rem;z-index:99;display:grid;aspect-ratio:1/1;width:2rem;cursor:pointer;place-items:center;border-width:1px;border-color:oklch(var(--un-preset-theme-colors-secondary) / .05);border-radius:.25rem;border-style:solid;border-color:oklch(var(--un-preset-theme-colors-secondary) / .15);--un-bg-opacity:var(--un-preset-theme-colors-background--alpha, 1);background-color:oklch(var(--un-preset-theme-colors-background) / var(--un-bg-opacity));color:oklch(var(--un-preset-theme-colors-secondary) / .8);opacity:0;transition:opacity .15s ease-out,background-color .15s ease-out}.code-copy-button:hover{border-color:oklch(var(--un-preset-theme-colors-primary) / .15);color:oklch(var(--un-preset-theme-colors-primary) / .8)}.code-block-wrapper:hover .code-copy-button{opacity:1}.icon-copy,.icon-check{grid-area:1/1;aspect-ratio:1/1;width:50%}.icon-check{opacity:0}.code-copy-button.copied{border-style:none;--un-bg-opacity:1;background-color:rgb(5 150 105 / var(--un-bg-opacity));--un-text-opacity:var(--un-preset-theme-colors-background--alpha, 1);color:oklch(var(--un-preset-theme-colors-background) / var(--un-text-opacity))}html.dark .code-copy-button.copied{--un-bg-opacity:1;background-color:rgb(16 185 129 / var(--un-bg-opacity))}.code-copy-button.copied .icon-copy{opacity:0}.code-copy-button.copied .icon-check{opacity:1}.heti{overflow-wrap:break-word;line-height:1.5;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto}.heti:is(:lang(zh),:lang(ja),:lang(ko)){letter-spacing:.025em}.heti .post-title{margin-bottom:.5rem;margin-top:0;font-size:2.125rem;font-weight:700}@media(min-width:1024px){.heti .post-title{font-size:2.25rem}}.heti :where(h1,h2,h3,h4,h5,h6){margin-bottom:1rem;margin-top:1.5em;scroll-margin-top:5rem;font-weight:600}.heti :where(h1){font-size:1.75rem;--un-text-opacity:var(--un-preset-theme-colors-primary--alpha, 1);color:oklch(var(--un-preset-theme-colors-primary) / var(--un-text-opacity))}.heti :where(h2){font-size:1.5rem;--un-text-opacity:var(--un-preset-theme-colors-primary--alpha, 1);color:oklch(var(--un-preset-theme-colors-primary) / var(--un-text-opacity))}.heti :where(h3){font-size:1.25rem}.heti :where(h4){font-size:1.125rem}.heti :where(h5){font-size:1rem}.heti :where(h6){font-weight:400}.heti :where(h1,h2,h3){text-wrap:balance;line-height:1.33em}.heti :where(h1,h2,h3):is(:lang(zh),:lang(ja),:lang(ko)){text-wrap:pretty;letter-spacing:.05em}.heti :where(h1+h2,h2+h3,h3+h4,h4+h5,h5+h6){margin-top:1rem}.heti :where(p:not(.no-heti):not(.no-heti *)){margin-bottom:1rem;text-wrap:pretty}.heti :where(p:not(.no-heti):not(.no-heti *)):is(:lang(zh),:lang(ja),:lang(ko)){text-align:justify}.heti :where(a:not(.no-heti):not(.no-heti *)){font-weight:600;letter-spacing:0em;text-decoration-line:underline;text-decoration-thickness:.075em;-webkit-text-decoration-color:oklch(var(--un-preset-theme-colors-secondary) / .8);text-decoration-color:oklch(var(--un-preset-theme-colors-secondary) / .8);text-underline-offset:.1em;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-timing-function:cubic-bezier(0,0,.2,1)}.heti :where(a:not(.no-heti):not(.no-heti *)):hover{--un-text-opacity:var(--un-preset-theme-colors-primary--alpha, 1);color:oklch(var(--un-preset-theme-colors-primary) / var(--un-text-opacity));-webkit-text-decoration-color:oklch(var(--un-preset-theme-colors-primary) / .8);text-decoration-color:oklch(var(--un-preset-theme-colors-primary) / .8)}@media(min-width:1024px){.heti :where(a:not(.no-heti):not(.no-heti *)){text-decoration-thickness:.1em}}.heti :where(a:not(.no-heti):not(.no-heti *)):is(:lang(zh),:lang(ja),:lang(ko)){word-break:break-all}.heti :where(img:not(.no-heti):not(.no-heti *)){margin-left:auto;margin-right:auto;cursor:zoom-in}.heti :where(img:not(figure img):not(.no-heti):not(.no-heti *)){margin-top:1.5rem;margin-bottom:1.5rem}.heti :where(figure){margin-top:1.5rem;margin-bottom:1.5rem;width:100%}.heti :where(figcaption){margin-top:.625rem;text-align:center;font-size:.875rem;line-height:1.25rem;color:oklch(var(--un-preset-theme-colors-secondary) / .8)}.heti :is(h1,h2,h3,h4,h5,h6,img,figure)+:is(img,figure){margin-top:1rem}.heti :is(img,figure):has(+:is(img,figure)){margin-bottom:1rem}.heti :where(pre){overflow:auto;border-width:1px;border-color:oklch(var(--un-preset-theme-colors-secondary) / .05);border-radius:.25rem;border-style:solid;background-color:oklch(var(--un-preset-theme-colors-secondary) / .05)!important;padding:.75rem 1rem;scrollbar-width:thin;scrollbar-color:oklch(var(--un-preset-theme-colors-secondary) / 0) transparent;transition:scrollbar-color .3s ease-out}.heti :where(pre):hover{scrollbar-color:oklch(var(--un-preset-theme-colors-secondary) / .15) transparent}.heti pre code{border-style:none;background-color:transparent;padding:0}html.dark .heti pre span{color:var(--shiki-dark)!important}.heti .code-block-wrapper{position:relative;margin-top:1.5rem;margin-bottom:1.5rem}.heti :is(h1,h2,h3,h4,h5,h6,.code-block-wrapper)+.code-block-wrapper{margin-top:1rem}.heti .code-block-wrapper:has(+.code-block-wrapper){margin-bottom:1rem}.heti :where(code){border-width:1px;border-color:oklch(var(--un-preset-theme-colors-secondary) / .05);border-radius:.25rem;border-style:solid;background-color:oklch(var(--un-preset-theme-colors-secondary) / .05);padding:.15em .4em;font-size:.85em;letter-spacing:0em;counter-reset:line}.heti :where(code):is(:lang(zh),:lang(ja),:lang(ko)){word-break:break-all}.heti code span.line{position:relative;padding-left:2rem}.heti code span.line:before{position:absolute;left:0;width:1rem;color:oklch(var(--un-preset-theme-colors-secondary) / .4);line-height:1.9em;content:counter(line);counter-increment:line;direction:rtl}.heti :where(blockquote){margin-top:1.5rem;margin-bottom:1.5rem;border-left-width:4px;border-color:oklch(var(--un-preset-theme-colors-secondary) / .25);border-style:solid;padding:.125rem 1rem;color:oklch(var(--un-preset-theme-colors-secondary) / .8)}.heti blockquote[class*=admonition-]{padding-top:.375rem;padding-bottom:.375rem;--un-text-opacity:var(--un-preset-theme-colors-secondary--alpha, 1);color:oklch(var(--un-preset-theme-colors-secondary) / var(--un-text-opacity))}.heti blockquote blockquote{padding-top:0;padding-bottom:0}.heti blockquote>:first-child{margin-top:0}.heti blockquote>:last-child{margin-bottom:0}.heti :is(h1,h2,h3,h4,h5,h6,blockquote)+blockquote{margin-top:1rem}.heti blockquote:has(+blockquote){margin-bottom:1rem}.heti :where(table){margin-top:1.5rem;margin-bottom:1.5rem;box-sizing:border-box;display:block;max-width:100%;table-layout:fixed;overflow-x:auto;scrollbar-width:thin;scrollbar-color:oklch(var(--un-preset-theme-colors-secondary) / 0) transparent;transition:scrollbar-color .3s ease-out}.heti :where(table):hover{scrollbar-color:oklch(var(--un-preset-theme-colors-secondary) / .15) transparent}.heti :where(th,td){border-bottom-width:1px;border-bottom-color:oklch(var(--un-preset-theme-colors-secondary) / .25);padding-left:.75rem;padding-right:.75rem;padding-bottom:.375rem}.heti tr :where(td:first-child,th:first-child){padding-left:0}.heti tr :where(td:last-child,th:last-child){padding-right:0}.heti :where(td){padding-top:.375rem}.heti tr:last-child :where(td){border-bottom-width:0px}.heti :is(h1,h2,h3,h4,h5,h6,table)+table{margin-top:1rem}.heti table:has(+table){margin-bottom:1rem}.heti :where(ul,ol){margin-top:1.5rem;margin-bottom:1.5rem;padding-left:2em}.heti :where(ul,ol) :where(ul,ol){margin-bottom:.25em;margin-top:0}.heti :where(ul){list-style-type:disc}.heti :where(ol){list-style-type:decimal}.heti :where(ul,ol) :where(ul){list-style-type:circle}.heti :where(ul,ol) :where(ul,ol) :where(ul){list-style-type:square}.heti :where(li){margin-top:.25em;list-style-type:unset}.heti :is(h1,h2,h3,h4,h5,h6,ul,ol)+:is(ul,ol){margin-top:1rem}.heti :is(ul,ol):has(+:is(ul,ol)){margin-bottom:1rem}.heti :where(sub,sup){position:relative;margin-left:.1em;margin-right:.1em;vertical-align:baseline;font-size:.75em}.heti :where(sub){bottom:-.25em}.heti :where(sup){top:-.5em}.heti :where(abbr[title]){cursor:help;border-bottom-width:1px;--un-border-opacity:var(--un-preset-theme-colors-secondary--alpha, 1);border-color:oklch(var(--un-preset-theme-colors-secondary) / var(--un-border-opacity));border-style:dotted;padding-bottom:.0625rem;text-decoration:none}.heti :where(u){text-decoration-line:underline;-webkit-text-decoration-color:rgb(248 113 113 / var(--un-line-opacity));--un-line-opacity:1;text-decoration-color:rgb(248 113 113 / var(--un-line-opacity));text-underline-offset:.25em;text-decoration-style:wavy}html.dark .heti :where(u){-webkit-text-decoration-color:rgb(248 113 113 / .6);text-decoration-color:#f8717199}.heti :where(kbd){display:inline-block;padding:.3em .4em;font-size:.85em;font-weight:700;line-height:1;letter-spacing:0em;border-width:1px;border-color:oklch(var(--un-preset-theme-colors-secondary) / .05);border-radius:.25rem;border-style:solid;border-color:oklch(var(--un-preset-theme-colors-secondary) / .4);--un-text-opacity:var(--un-preset-theme-colors-secondary--alpha, 1);color:oklch(var(--un-preset-theme-colors-secondary) / var(--un-text-opacity))}.heti :where(mark){--un-bg-opacity:var(--un-preset-theme-colors-highlight--alpha, 1);background-color:oklch(var(--un-preset-theme-colors-highlight) / var(--un-bg-opacity));padding-top:.1625rem;padding-bottom:.1625rem;color:inherit}.heti :where(sub,sup) :where(a){text-decoration:none}.heti :where(sup):target,.heti :where(sup) a:target{--un-bg-opacity:var(--un-preset-theme-colors-highlight--alpha, 1);background-color:oklch(var(--un-preset-theme-colors-highlight) / var(--un-bg-opacity))}.heti .data-footnote-backref{font-family:Georgia,Songti SC,STSong,Noto Serif CJK SC,serif;text-decoration:none}.heti :where(hr){margin-bottom:2.625rem;margin-top:3.625rem;height:auto;border-style:none;text-align:center}.heti :where(hr):before{white-space:pre;font-size:1.5rem;color:oklch(var(--un-preset-theme-colors-secondary) / .25);font-family:Georgia,Songti SC,STSong,Noto Serif CJK SC,serif;content:"*   *   *"}.heti :where(b,strong){font-weight:600}.heti :where(em){font-style:italic}.heti :where(cite):is(:lang(zh),:lang(ja),:lang(ko)){font-style:normal}.heti :where(q:is(:lang(zh),:lang(ja),:lang(ko))){quotes:"「" "」" "『" "』"}:root{font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei,Noto Sans CJK SC,sans-serif;color-scheme:light}html.dark{color-scheme:dark}body{margin:0;font-size:16px;line-height:1.8;overflow-wrap:anywhere}*{box-sizing:border-box}.site-nav{display:flex;flex-wrap:wrap;gap:0 1.5rem;padding:0;list-style:none}.site-nav button{font:inherit;color:inherit;cursor:pointer;opacity:.72}.site-nav button:hover{opacity:1}@media(min-width:1024px){.site-nav{display:block}.site-nav li{margin-bottom:.35rem}.site-nav li:last-child{margin-top:1.2rem}}@media(max-height:740px)and (min-width:1024px){footer{position:static!important;width:auto!important;margin-top:4rem}nav{top:11rem!important}}.skip-link{position:absolute;left:1rem;top:-5rem;z-index:100;background:#ffe78a;color:#202024;padding:.5rem}.skip-link:focus{top:1rem}:focus-visible{outline:2px solid currentColor;outline-offset:5px;border-radius:2px}.edition{font-size:.76rem;letter-spacing:.16em;margin-bottom:1rem;opacity:.7}.section-title{font-size:1.45rem;font-weight:600;margin:0 0 1.1rem;letter-spacing:.04em}.lead{font-size:1rem;margin-bottom:2.7rem;line-height:1.95;max-width:36em}.article-list{list-style:none;padding:0;margin:0}.article-list li{margin:0 0 2.5rem;padding:0 0 1.8rem;border-bottom:1px solid color-mix(in srgb,currentColor 12%,transparent)}.article-list h3{font-size:1.19rem;font-weight:550;line-height:1.6;margin:0 0 .6rem;letter-spacing:.035em}.article-list .excerpt{margin:.65rem 0 0;font-size:.94rem;line-height:1.9;opacity:.87}.entry-meta{font-size:.77rem;letter-spacing:.035em;opacity:.64;display:flex;gap:.8rem;flex-wrap:wrap}.entry-title:hover{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:5px}.section-link{font-size:.875rem;display:inline-block;margin:0 0 2.4rem;text-decoration:underline;text-underline-offset:4px}.article-header{margin-bottom:2.2rem}.article-header h1{font-size:clamp(1.75rem,4.8vw,2.2rem);line-height:1.45;letter-spacing:.04em;font-weight:600;margin:0 0 .85rem;text-wrap:balance}.heti{line-height:1.95;font-size:1.02rem;overflow-wrap:anywhere}.heti :where(h2){font-size:1.35rem;margin-top:2.2rem}.heti :where(h3){font-size:1.14rem;margin-top:1.65rem}.heti :where(p:not(.no-heti):not(.no-heti *)){text-align:start}.heti :where(pre){font-size:.85rem;line-height:1.65;max-width:100%;tab-size:2}.heti :where(img,video){max-width:100%;height:auto}.heti :where(table){display:block;max-width:100%;overflow-x:auto;font-size:.9rem}.heti :where(code){overflow-wrap:anywhere}.heti :where(pre code){overflow-wrap:normal}.article-footer{margin-top:3rem;padding-top:1.2rem;border-top:1px solid color-mix(in srgb,currentColor 15%,transparent);font-size:.8rem}.article-footer a{text-decoration:underline;text-underline-offset:4px;margin-right:1.2rem}.version{font-size:.66rem;margin-top:1rem;opacity:.52;word-break:break-all}.source-note{font-size:.84rem;opacity:.75;margin:.8rem 0 1.6rem}.archive-year{font-size:1.1rem;font-family:Georgia,serif;margin:2.2rem 0 1.3rem;opacity:.65}.filters{display:flex;gap:1.2rem;flex-wrap:wrap;font-size:.88rem;margin-bottom:2rem}.filters a{text-decoration:underline;text-underline-offset:4px}.search-input{display:block;width:100%;border:1px solid color-mix(in srgb,currentColor 25%,transparent);padding:.85rem 1rem;background:transparent;color:inherit;border-radius:3px;font:inherit;margin:1rem 0}#search-status{font-size:.85rem;margin-bottom:1.5rem;opacity:.7}footer{line-height:1.85!important;opacity:.74}@media(max-width:600px){body{font-size:16px}.heti{font-size:1rem}.article-list li{margin-bottom:1.65rem;padding-bottom:1.4rem}.lead{margin-bottom:2rem}nav{margin-bottom:2.2rem!important}.article-header{margin-bottom:1.7rem}.site-nav{gap:0 1.25rem}.article-list h3{font-size:1.1rem}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
