@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-latin-400-normal.DMJ8VG8y.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-400-normal.CvHOgSBP.woff)format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/ibm-plex-mono-latin-600-normal.BgSNZQsw.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-600-normal.DWFSQ4vo.woff)format("woff")}:root{color-scheme:light dark;--bg:#f3f7f7;--text:#141b2d;--muted:#4e5a6e;--rule:#d3dee2;--link:#1f4f82;--link-hover:#12345c;--focus:#2e6f9e;--mark:#c5e6e8;--code-bg:#e6edef;--backdrop:#141b2d6b;--label-ground:#13203f;--label-warp:#25407a;--label-pick:#3f5385;--label-weft:#f1ebdc;--font-sans:"PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans CJK SC", "Source Han Sans SC", "Noto Sans SC", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, "SF Mono", Menlo, Consolas, "PingFang SC", "Microsoft YaHei", monospace;--measure:37rem}@media (prefers-color-scheme:dark){:root{--bg:#0e1322;--text:#dce3ee;--muted:#9aa7ba;--rule:#243049;--link:#8db6e2;--link-hover:#b9d3f0;--focus:#8db6e2;--mark:#1f4b5a;--code-bg:#161d31;--backdrop:#04070f9e;--label-ground:#182a55;--label-warp:#2d4d90;--label-pick:#4a5f96}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;overflow-wrap:break-word;margin:0;font-size:1.0625rem;line-height:1.85}@supports (text-autospace:normal){body{text-autospace:normal}}@supports (text-spacing-trim:trim-start){body{text-spacing-trim:trim-start}}::selection{background:var(--mark)}a{color:var(--link);text-underline-offset:.3em;text-decoration-line:underline;text-decoration-thickness:1px;text-decoration-color:color-mix(in srgb, currentColor 35%, transparent)}a:hover{color:var(--link-hover);text-decoration-color:currentColor}:focus-visible{outline:2px solid var(--focus);outline-offset:3px;border-radius:2px}h1,h2,h3,h4{font-weight:600;line-height:1.4}h1{margin:0 0 .75rem;font-size:1.875rem}h2{margin:2.75rem 0 .75rem;font-size:1.3125rem}h3{margin:2rem 0 .5rem;font-size:1.125rem}kbd{font-family:var(--font-mono);font-size:.8125em}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.skip-link{background:var(--text);color:var(--bg);z-index:10;padding:.25rem .75rem;position:absolute;top:-3rem;left:1rem}.skip-link:focus{top:1rem}.site{max-width:calc(var(--measure) + 2.5rem);margin:0 auto;padding:0 1.25rem}.site-header{justify-content:space-between;align-items:center;gap:1rem;min-height:4.5rem;padding-top:.75rem;display:flex}.brand{border-radius:4px;line-height:0;display:block}.brand .weave{width:8.6rem;height:auto}.site-nav{align-items:center;gap:1.25rem;font-size:.9375rem;display:flex}.site-nav a{color:var(--text);text-decoration:none}.site-nav a:hover,.site-nav a[aria-current=page]{color:var(--link);text-underline-offset:.3em;text-decoration:underline 1px}.search-trigger{font:inherit;color:var(--text);border:1px solid var(--rule);cursor:pointer;background:0 0;border-radius:6px;align-items:center;gap:.5rem;padding:.15rem .5rem .15rem .65rem;display:inline-flex}.search-trigger:hover{border-color:var(--muted)}.search-trigger kbd{color:var(--muted)}main{padding:2.5rem 0 4.5rem}.site-footer{border-top:1px solid var(--rule);color:var(--muted);padding:1.5rem 0 3rem;font-size:.875rem;line-height:1.75}.site-footer p{margin:0 0 .5rem}.site-footer a{color:inherit}.footer-links{flex-wrap:wrap;gap:.25rem 1.25rem;margin:0;padding:0;list-style:none;display:flex}.weave{max-width:100%;height:auto;display:block}.weave-ground{fill:var(--label-ground)}.weave-warp{stroke:var(--label-warp)}.weave-pick{stroke:var(--label-pick)}.weave-weft{stroke:var(--label-weft)}@media (prefers-reduced-motion:no-preference){.weave-animate .weave-weft{animation:.34s cubic-bezier(.3,.7,.2,1) both weave-pick;animation-delay:calc(var(--i) * 48ms + .12s)}.weave-animate .weave-weft.weave-rtl{animation-name:weave-pick-rtl}}@keyframes weave-pick{0%{opacity:0;clip-path:inset(0 100% 0 0)}to{opacity:1;clip-path:inset(0)}}@keyframes weave-pick-rtl{0%{opacity:0;clip-path:inset(0 0 0 100%)}to{opacity:1;clip-path:inset(0)}}.hero h1{margin:0;line-height:0}.hero .weave{width:min(100%,27rem)}.tagline{margin:1.5rem 0 .5rem;font-size:1.3125rem;font-weight:600;line-height:1.4}.intro{margin:0}.section{margin-top:3.25rem}.section>h2{margin:0 0 .75rem;font-size:1.0625rem}.now-list{margin:0;padding:0;list-style:none}.now-list li{padding-left:1.25em;position:relative}.now-list li+li{margin-top:.35rem}.now-list li:before{content:"";background:var(--label-warp);border-radius:1em;width:.6em;height:.22em;position:absolute;top:.9em;left:0}.projects{margin:0;padding:0;list-style:none}.projects li+li{margin-top:1.1rem}.project-head{justify-content:space-between;align-items:baseline;gap:1rem;display:flex}.project-name{font-family:var(--font-mono);font-size:.9375rem;font-weight:600}.project-years{color:var(--muted);font-variant-numeric:tabular-nums;font-size:.875rem}.project-summary{margin:.15rem 0 0}.more{margin:1rem 0 0}.post-list{margin:0;padding:0;list-style:none}.post-list li{grid-template-columns:6.75rem 1fr;gap:1rem;padding:.3rem 0;display:grid}.post-list time{color:var(--muted);font-variant-numeric:tabular-nums;font-size:.9375rem}@media (width<=30rem){.post-list li{grid-template-columns:1fr;gap:0;padding:.45rem 0}}.page-intro{color:var(--muted);margin:0 0 2rem}.year-group>h2{color:var(--muted);font-variant-numeric:tabular-nums;margin:2.25rem 0 .5rem;font-size:1.0625rem}.post-header{margin-bottom:2.25rem}.post-meta{color:var(--muted);margin:0;font-size:.9375rem}.post-footer{border-top:1px solid var(--rule);color:var(--muted);margin-top:3.5rem;padding-top:1.25rem;font-size:.9375rem}.post-footer p{margin:0 0 .5rem}.post-nav{grid-template-columns:1fr 1fr;gap:1rem;margin-top:2.5rem;font-size:.9375rem;display:grid}.post-nav .next{text-align:right;grid-column:2}.post-nav span{color:var(--muted);font-size:.875rem;display:block}.prose>:first-child{margin-top:0}.prose p,.prose ul,.prose ol,.prose blockquote,.prose pre,.prose table,.prose figure{margin:0 0 1.15em}.prose ul,.prose ol{padding-left:1.6em}.prose li+li,.prose li>ul,.prose li>ol{margin-top:.3em}.prose blockquote{border-left:3px solid var(--rule);color:var(--muted);margin-left:0;padding:.1em 0 .1em 1.1em}.prose code{font-family:var(--font-mono);background:var(--code-bg);border-radius:4px;padding:.12em .35em;font-size:.875em}.prose pre{background:var(--code-bg);border-radius:8px;padding:1rem 1.15rem;font-size:.875rem;line-height:1.65;overflow-x:auto}.prose pre.astro-code{background-color:var(--code-bg)!important}.prose pre code{font-size:inherit;background:0 0;border-radius:0;padding:0}@media (prefers-color-scheme:dark){.astro-code span{color:var(--shiki-dark)!important;font-style:var(--shiki-dark-font-style)!important;font-weight:var(--shiki-dark-font-weight)!important;text-decoration:var(--shiki-dark-text-decoration)!important}}.prose table{border-collapse:collapse;width:max-content;max-width:100%;font-size:.9375rem;line-height:1.7;display:block;overflow-x:auto}.prose th,.prose td{border-bottom:1px solid var(--rule);text-align:left;vertical-align:top;padding:.45em 1.25em .45em 0}.prose th{font-weight:600}.prose img{border-radius:6px;max-width:100%;height:auto}.prose hr{border:0;border-top:1px solid var(--rule);margin:2.5em 0}.prose .footnotes{color:var(--muted);font-size:.9375rem}.search{border:1px solid var(--rule);background:var(--bg);width:min(36rem,100vw - 2rem);max-height:min(34rem,100dvh - 4rem);color:var(--text);border-radius:10px;margin:12vh auto auto;padding:0;overflow:hidden;box-shadow:0 24px 60px -20px #14203f73}.search[open]{flex-direction:column;display:flex}.search::backdrop{background:var(--backdrop)}.search-bar{border-bottom:1px solid var(--rule);align-items:center;gap:.75rem;padding:.75rem 1rem;display:flex}.search-bar input{min-width:0;font:inherit;color:inherit;background:0 0;border:0;flex:1;padding:.25rem 0;font-size:1.125rem}.search-bar input:focus{outline:none}.search-close{font:inherit;color:var(--muted);border:1px solid var(--rule);cursor:pointer;background:0 0;border-radius:6px;padding:.1rem .55rem;font-size:.875rem}.search-status{color:var(--muted);margin:0;padding:.6rem 1rem;font-size:.875rem}.search-results{margin:0;padding:0 .5rem .5rem;list-style:none;overflow-y:auto}.search-results a{color:var(--text);border-radius:6px;padding:.55rem .6rem;text-decoration:none;display:block}.search-results a[data-active],.search-results a:hover{background:var(--code-bg)}.search-title{color:var(--link);font-weight:600;display:block}.search-excerpt{color:var(--muted);font-size:.875rem;line-height:1.7;display:block}.search-excerpt mark{background:var(--mark);color:var(--text);border-radius:2px}@media (width<=30rem){body{font-size:1rem}h1{font-size:1.625rem}.site-nav{gap:.9rem}.search-trigger kbd{display:none}.search{margin-top:1rem}}
