@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-display:swap;src:url(/_astro/ibm-plex-sans-latin-400-normal.CDDApCn2.woff2) format("woff2")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-display:swap;src:url(/_astro/ibm-plex-sans-latin-600-normal.CuJfVYMP.woff2) format("woff2")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:700;font-display:swap;src:url(/_astro/ibm-plex-sans-latin-700-normal.Bxkt5Cjx.woff2) format("woff2")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_astro/ibm-plex-mono-latin-400-normal.DMJ8VG8y.woff2) format("woff2")}@font-face{font-family:IBM Plex Mono;font-style:italic;font-weight:400;font-display:swap;src:url(/_astro/ibm-plex-mono-latin-400-italic.BqAiT5Ww.woff2) format("woff2")}:root{color-scheme:light;--background: #fdfdfd;--foreground: #282728;--accent: #006cac;--border: #d0d7de;--muted: #5b6472;--code-background: #f6f8fa;--control-border: #5b6472;--quiet-rule: #8b949e;font-family:IBM Plex Sans,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;font-synthesis:none;font-size:17px;line-height:1.7}:root[data-theme=dark]{color-scheme:dark;--background: #212737;--foreground: #eaedf3;--accent: #ff8a3d;--border: #46506a;--muted: #afb9ca;--code-background: #011627;--control-border: #afb9ca;--quiet-rule: #6b7489}@media(prefers-color-scheme:dark){:root:not([data-theme]){color-scheme:dark;--background: #212737;--foreground: #eaedf3;--accent: #ff8a3d;--border: #46506a;--muted: #afb9ca;--code-background: #011627;--control-border: #afb9ca;--quiet-rule: #6b7489}}*{box-sizing:border-box}body{margin:0;background:var(--background);color:var(--foreground);min-height:100svh;display:flex;flex-direction:column}a{color:var(--accent);text-decoration-style:dashed;text-underline-offset:.25em}button,summary,a{-webkit-tap-highlight-color:transparent}button{font:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.frame{width:min(690px,calc(100% - 32px));margin-inline:auto}.site-header{display:flex;align-items:center;justify-content:space-between;gap:24px;min-height:89px;border-bottom:1px solid var(--border)}.brand{color:var(--foreground);text-decoration:none;font-size:24px;font-weight:700;line-height:1.2}.desktop-navigation{display:flex;align-items:center;gap:20px}nav{display:flex;align-items:center;gap:24px}nav a{color:var(--foreground);font-size:16px;font-weight:600;text-decoration:none;padding-block:10px}.page-navigation a[aria-current]{color:var(--accent);text-decoration:underline;text-underline-offset:7px;text-decoration-thickness:2px}nav a:hover{text-decoration:underline}.language-switch{gap:12px;white-space:nowrap;margin-inline-start:16px}.language-switch a{font-size:14px;font-weight:400}.language-switch a[aria-current=page]{font-weight:600}.missing-translation{color:var(--muted);font-size:14px;white-space:normal}.home-links{display:flex;flex-wrap:wrap;gap:24px}.theme-switch{display:flex;border:1px solid var(--control-border);border-radius:5px;padding:2px;gap:1px}.theme-switch button{background:transparent;color:var(--muted);display:grid;place-items:center;width:32px;height:32px;border:0;border-radius:3px;cursor:pointer}:root[data-theme-preference=system] button[data-theme-choice=system],:root[data-theme-preference=light] button[data-theme-choice=light],:root[data-theme-preference=dark] button[data-theme-choice=dark]{color:var(--background);background:var(--foreground)}.theme-switch button:hover{outline:1px solid var(--control-border)}.mobile-menu{display:none}main{flex:1;padding-block:62px 80px}h1{font-size:36px;line-height:1.15;font-weight:700;max-width:520px;margin:0 0 32px;text-wrap:balance}p{margin:0}.introduction{padding-bottom:26px}.placeholder{border-top:1px solid var(--border);padding-block:32px;color:var(--muted)}.muted{color:var(--muted)}.recent-posts{border-top:1px solid var(--border);padding-top:28px}.recent-posts>h2{margin:0 0 24px;font-size:22px;line-height:1.4}.post-list{list-style:none;padding:0;margin:0;border-top:2px solid var(--foreground)}.post-row{display:grid;grid-template-columns:120px minmax(0,1fr);gap:20px;padding-block:20px;border-bottom:1px solid var(--border)}.post-row time{color:var(--muted);font-size:14px;padding-top:3px;white-space:nowrap}.post-list-title{font-size:20px;line-height:1.4;font-weight:600;margin:0 0 8px}.post-list-title a{text-decoration:none}.post-list-title a:hover{text-decoration:underline dashed}.post-details p{font-size:16px}.post-counterpart{display:inline-block;margin-top:8px;font-size:14px}.post-header{margin-bottom:36px}.post-header h1{max-width:none;color:var(--accent);margin-bottom:20px}.post-meta,.post-byline{color:var(--muted);font-size:14px;line-height:1.7}.post-byline{margin-top:8px}.tag-list{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:8px 20px}.post-tags{margin-top:12px;font-size:14px}.tag-index{font-size:18px;gap:16px 28px}.post-navigation{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:32px;border-top:1px solid var(--border);margin-top:48px;padding-top:24px;align-items:start}.post-navigation a{display:block;color:var(--accent);font-size:17px;font-weight:400;padding:0;text-decoration:underline dashed;overflow-wrap:anywhere}.post-navigation a:hover{text-decoration-style:dashed}.post-navigation .post-direction{display:block;color:var(--muted);font-size:14px;margin-bottom:8px}.post-navigation p{font-size:14px}.next-post{text-align:end}.prose{line-height:1.7;overflow-wrap:anywhere}:lang(zh-Hans) .prose{line-height:1.8}.prose>*{margin-block:0 1.4em}.prose h2{font-size:26px;line-height:1.35;margin-block:2em .8em}.prose h3{font-size:22px;line-height:1.4;margin-block:1.8em .8em}.prose li{margin-block:.5em}.prose ul,.prose ol{padding-inline-start:1.5em}.prose blockquote{margin-inline:0;padding-inline-start:20px;border-inline-start:3px solid var(--border);color:var(--muted)}.prose code{font-family:IBM Plex Mono,monospace;font-size:.85em;font-weight:400}.prose :not(pre)>code{background:var(--code-background);padding:.1em .3em;border-radius:3px}.prose pre{max-width:100%;overflow-x:auto;padding:16px;border:1px solid var(--border);border-radius:4px;line-height:1.6}.code-block{border:1px solid var(--border);border-radius:4px;background:var(--code-background);overflow:hidden}.code-head{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:40px;padding:4px 16px;border-bottom:1px solid var(--border)}.code-label{min-width:0;color:var(--muted);font-family:IBM Plex Mono,monospace;font-size:12px;overflow-wrap:anywhere}.copy-code{flex-shrink:0;min-height:30px;padding:4px 8px;border:1px solid var(--control-border);border-radius:4px;background:var(--background);color:var(--muted);font-size:12px;line-height:1.4;cursor:pointer}.copy-code:hover{color:var(--foreground)}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.code-body{position:relative}.prose .code-block pre{margin:0;padding:12px 16px;border:0;border-radius:0;background:var(--code-background);color:var(--foreground);font-size:14px;line-height:1.55}.prose .code-block pre:focus-visible{outline-offset:-3px}.prose .code-block pre code{display:block;width:max-content;min-width:100%;font-size:inherit;line-height:inherit}.code-block .elided{display:inline-block;min-width:100%;border-block:1px dashed var(--muted);color:var(--muted);font-style:italic}.code-body:before,.code-body:after{content:"";pointer-events:none;position:absolute;inset-block:0;width:32px;opacity:0}.code-body:before{left:0;background:linear-gradient(to right,var(--code-background),transparent)}.code-body:after{right:0;background:linear-gradient(to left,var(--code-background),transparent)}.code-block.more-left>.code-body:before,.code-block.more-right>.code-body:after{opacity:1}.code-block .astro-code,.code-block .astro-code span{color:var(--shiki-light);font-style:normal}:root[data-theme=dark] .code-block .astro-code,:root[data-theme=dark] .code-block .astro-code span{color:var(--shiki-dark)}@media(prefers-color-scheme:dark){:root:not([data-theme]) .code-block .astro-code,:root:not([data-theme]) .code-block .astro-code span{color:var(--shiki-dark)}}@media(max-width:639px){.prose .code-block pre{font-size:13px}}@media(min-width:1024px){.prose>.code-block,.prose>.fold{width:960px;max-width:none;margin-inline:calc((100% - 960px)/2)}}.prose img{display:block;max-width:100%;height:auto;margin-block:1em;border:1px solid var(--border);border-radius:3px}.prose table{overflow-wrap:normal;border-collapse:collapse;font-size:16px}.prose th,.prose td{min-width:8em;padding:10px 14px;border:1px solid var(--border);text-align:start}.prose hr{border:0;border-top:1px solid var(--border)}.sidenote{margin-inline:0;padding-inline-start:16px;border-inline-start:2px solid var(--quiet-rule);color:var(--muted);font-size:.925em}.sidenote>*{margin-block:0 .8em}.sidenote>:last-child{margin-bottom:0}.sidenote-title{font-family:IBM Plex Mono,monospace;font-size:12px;text-transform:uppercase;letter-spacing:.03em}.prose a[data-footnote-ref]{display:inline-flex;align-items:center;justify-content:center;min-width:24px;min-height:24px;padding:2px 4px;font-family:IBM Plex Mono,monospace;text-decoration:none;line-height:1}.prose a[data-footnote-ref]:before{content:"["}.prose a[data-footnote-ref]:after{content:"]"}.footnote-popup{position:fixed;z-index:10;width:max-content;max-width:min(22rem,calc(100vw - 32px));max-height:calc(100svh - 32px);overflow:auto;padding:12px 16px;border:1px solid var(--control-border);border-radius:4px;background:var(--background);color:var(--foreground);font-size:14px;line-height:1.6;box-shadow:0 4px 16px #0002}.footnote-popup p+p{margin-top:.75em}.footnote-popup :is(img,pre){max-width:100%}.footnote-popup code{font-family:IBM Plex Mono,monospace;font-size:.9em}.fold{border:1px solid var(--border);border-radius:4px}.fold>summary{cursor:pointer;list-style:none;padding:10px 14px;font-size:14px}.fold>summary::-webkit-details-marker{display:none}.fold>summary:before{content:"▸";display:inline-block;margin-inline-end:8px;color:var(--muted);transition:transform .15s}.fold[open]>summary:before{transform:rotate(90deg)}.fold>:not(summary){margin:0 14px 14px}.fold-hint{margin-inline-start:12px;color:var(--muted);font-weight:400}.fold-open,.fold[open]>summary .fold-closed{display:none}.fold[open]>summary .fold-open{display:inline}@media(prefers-reduced-motion:reduce){.fold>summary:before{transition:none}}.table-frame{position:relative}.table-scroll{overflow-x:auto}.table-scroll:focus-visible{outline-offset:-2px}.table-scroll table{min-width:100%}.table-frame:before,.table-frame:after{content:"";position:absolute;inset-block:0;width:32px;pointer-events:none;opacity:0}.table-frame:before{left:0;background:linear-gradient(to right,var(--background),transparent)}.table-frame:after{right:0;background:linear-gradient(to left,var(--background),transparent)}.table-frame.more-left:before,.table-frame.more-right:after{opacity:1}.image-row{display:grid;grid-template-columns:repeat(var(--image-count),minmax(0,1fr));gap:24px;align-items:start}.image-item{margin:0;min-width:0;width:100%}.image-row img{margin:0;width:100%}.image-label{margin-top:8px;font-size:14px;text-align:center}.prose .image-caption{margin-top:-8px;color:var(--muted);font-size:14px;text-align:start}.image-caption,.image-caption em{font-style:normal;text-emphasis:none}.image-zoom{display:block;max-width:100%;padding:0;margin:1em auto;background:transparent;border:0;cursor:zoom-in}.image-zoom img{margin:0}.image-row .image-zoom{width:100%;margin:0}@media(max-width:639px){.image-row{grid-template-columns:1fr;justify-items:center}.image-item{max-width:288px}}.image-lightbox{width:100vw;max-width:none;height:100svh;max-height:none;margin:0;padding:72px 24px 24px;border:0;background:transparent;cursor:zoom-out}.image-lightbox[open]{display:grid;place-items:center}.image-lightbox::backdrop{background:#000d}.image-lightbox img{max-width:100%;max-height:calc(100svh - 96px);object-fit:contain;border:1px solid var(--border)}.image-close{position:absolute;top:16px;right:16px;min-height:44px;padding:8px 16px;border:1px solid var(--control-border);border-radius:4px;background:var(--background);color:var(--foreground);cursor:pointer}@font-face{font-family:Han Punct;src:local("PingFangSC-Regular"),local("PingFang SC Regular"),local("HiraginoSansGB-W3"),local("Microsoft YaHei"),local("NotoSansCJKsc-Regular"),local("Noto Sans CJK SC"),local("SourceHanSansSC-Regular");unicode-range:U+2014,U+201C-201D,U+2026;font-weight:100 500;font-feature-settings:"fwid"}@font-face{font-family:Han Punct;src:local("PingFangSC-Semibold"),local("PingFang SC Semibold"),local("HiraginoSansGB-W6"),local("Microsoft YaHei Bold"),local("NotoSansCJKsc-Bold"),local("SourceHanSansSC-Bold");unicode-range:U+2014,U+201C-201D,U+2026;font-weight:600 900;font-feature-settings:"fwid"}html:lang(zh) body{font-family:Han Punct,IBM Plex Sans,-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif}.chinese-emphasis{font-style:normal;text-emphasis:filled dot;text-emphasis-position:under right}.image-caption em.chinese-emphasis{text-emphasis:none}.feed-links{display:flex;flex-wrap:wrap;gap:8px 20px}.site-footer{border-top:1px solid var(--border);padding-block:24px;color:var(--muted);display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px 24px;font-size:14px}.copyright{font-family:IBM Plex Mono,monospace;font-size:12px}.skip-link{position:absolute;top:-100px;left:16px;padding:8px 16px;background:var(--background);z-index:2}.skip-link:focus{top:12px}@media(max-width:719px){.site-header{position:relative;min-height:73px}.brand{font-size:22px}.desktop-navigation{display:none}.mobile-menu{display:block}.mobile-menu summary{list-style:none;display:grid;place-items:center;width:44px;height:44px;cursor:pointer}.mobile-menu summary::-webkit-details-marker{display:none}.mobile-menu[open] summary{outline:1px solid var(--control-border);border-radius:4px}.mobile-navigation{position:absolute;top:100%;right:0;z-index:1;display:grid;justify-items:start;gap:16px;padding:20px;min-width:180px;background:var(--background);border:1px solid var(--control-border);border-radius:4px}.mobile-navigation .page-navigation{align-items:start;flex-direction:column;gap:4px}.mobile-navigation .language-switch{margin-inline-start:0;margin-top:8px}.mobile-navigation .theme-switch button{width:40px;height:40px}main{padding-top:48px}h1{font-size:32px;line-height:1.2;margin-bottom:24px}}@media(max-width:479px){.post-row{grid-template-columns:1fr;gap:6px}}
