:root{color-scheme:light;accent-color:var(--accent);--bg:#fff;--bg-soft:#f5f5f7;--bg-elevated:#fff;--text:#1d1d1f;--text-strong:#1d1d1f;--text-muted:#6e6e73;--border:#0000001f;--border-strong:#00000038;--accent:#06c;--accent-soft:#0066cc1a;--code-bg:#f5f5f7;--mark:#0066cc29;--font-sans:-apple-system, BlinkMacSystemFont, "Helvetica Neue", "Segoe UI", Roboto, "Noto Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif;--font-mono:ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--container:930px;--measure:46rem;--radius:12px;--radius-lg:18px}:root[data-theme=dark]{color-scheme:dark;--bg:#000;--bg-soft:#1d1d1f;--bg-elevated:#1d1d1f;--text:#f5f5f7;--text-strong:#f5f5f7;--text-muted:#86868b;--border:#ffffff24;--border-strong:#ffffff47;--accent:#2997ff;--accent-soft:#2997ff29;--code-bg:#1d1d1f;--mark:#2997ff3d}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--bg:#000;--bg-soft:#1d1d1f;--bg-elevated:#1d1d1f;--text:#f5f5f7;--text-strong:#f5f5f7;--text-muted:#86868b;--border:#ffffff24;--border-strong:#ffffff47;--accent:#2997ff;--accent-soft:#2997ff29;--code-bg:#1d1d1f;--mark:#2997ff3d}}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;scroll-padding-top:5rem}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;overflow-wrap:break-word;flex-direction:column;min-height:100vh;margin:0;font-size:1.0625rem;line-height:1.6;display:flex}::selection{background:var(--mark)}a{color:var(--accent);text-decoration:none}a:hover{text-underline-offset:.18em;text-decoration:underline}.container{width:100%;max-width:var(--container);margin-inline:auto;padding-inline:1.25rem}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.progress{background:var(--accent);z-index:40;width:0;height:2px;transition:width 90ms linear;position:fixed;inset:0 auto auto 0}.navbar{z-index:30;background:color-mix(in srgb, var(--bg) 80%, transparent);backdrop-filter:saturate(180%)blur(20px);border-bottom:1px solid var(--border);position:sticky;top:0}.navbar__inner{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.4rem 1.6rem;min-height:3rem;padding-block:.45rem;display:flex}.navbar__brand{letter-spacing:-.012em;color:var(--text-strong);font-size:1.05rem;font-weight:600}.navbar__brand:hover{color:var(--accent);text-decoration:none}.navbar__links{opacity:.9;flex-wrap:wrap;align-items:center;gap:.3rem 1.35rem;margin:0;padding:0;font-size:.875rem;list-style:none;display:flex}.navbar__links a{color:var(--text)}.navbar__links a[aria-current=page]{color:var(--accent)}@media (width<=34rem){.navbar__inner{justify-content:flex-start}.navbar__brand{font-size:1rem}.navbar__links{gap:.3rem .8rem;font-size:.9rem}}.theme-toggle{width:2rem;height:2rem;color:var(--text);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:999px;justify-content:center;align-items:center;padding:0;display:inline-flex}.theme-toggle:hover{border-color:var(--border);color:var(--accent)}.theme-toggle svg{width:1.05rem;height:1.05rem}.lang-toggle{border:1px solid var(--border);min-width:2.05rem;height:2.05rem;color:var(--text);font:inherit;letter-spacing:.01em;cursor:pointer;background:0 0;border-radius:999px;justify-content:center;align-items:center;padding:0 .5rem;font-size:.8125rem;font-weight:600;transition:color .16s,border-color .16s;display:inline-flex}.lang-toggle:hover{border-color:var(--accent);color:var(--accent)}.lang-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:2px}html[data-lang=zh] .i18n-en,html:not([data-lang=zh]) .i18n-zh,.theme-toggle .icon-sun,:root[data-theme=light] .theme-toggle .icon-sun{display:none}:root[data-theme=dark] .theme-toggle .icon-sun{display:block}:root[data-theme=dark] .theme-toggle .icon-moon{display:none}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .theme-toggle .icon-sun{display:block}:root:not([data-theme=light]) .theme-toggle .icon-moon{display:none}}main{flex:1 0 auto;padding-block:2.5rem 4rem}.footer{background:var(--bg-soft);border-top:1px solid var(--border);color:var(--text-muted);margin-top:5rem;padding-block:1.75rem;font-size:.75rem}.footer__inner{flex-wrap:wrap;justify-content:space-between;gap:.5rem 1.25rem;display:flex}.intro{gap:.75rem;padding-bottom:1.25rem;display:grid}.intro h1{letter-spacing:-.022em;color:var(--text-strong);margin:0;font-size:clamp(2rem,6vw,2.75rem);font-weight:600}.intro p{max-width:var(--measure);color:var(--text-muted);margin:0}.section-title{letter-spacing:-.02em;color:var(--text-strong);justify-content:space-between;align-items:baseline;gap:1rem;margin:0 0 1.25rem;font-size:clamp(1.6rem,3vw,2.1rem);font-weight:600;display:flex}.page-home main{--hero-extra:0svh;--hero-overlap:0svh;max-width:none;padding-block:0;padding-inline:0}html.hero-js body.page-home main{--hero-extra:62svh;--hero-overlap:40svh}.page-home .hero-shell{height:calc(100vh - var(--nav-h,3rem) + var(--hero-extra));height:calc(100svh - var(--nav-h,3rem) + var(--hero-extra));background:var(--bg-soft);position:relative}.page-home .hero{top:var(--nav-h,3rem);height:calc(100vh - var(--nav-h,3rem));height:calc(100svh - var(--nav-h,3rem));align-items:center;display:grid;position:sticky}.page-home .hero__inner{text-align:center;justify-items:center;gap:1.15rem;max-width:44rem;display:grid}.page-home .hero__copy{opacity:var(--hero-copy,1);transform:translateY(calc((1 - var(--hero-copy,1)) * -12px));justify-items:center;gap:1.6rem;display:grid}.page-home .hero__title{letter-spacing:-.025em;color:var(--text-strong);text-wrap:balance;margin:0;font-size:clamp(2.5rem,6.4vw,4.75rem);font-weight:600;line-height:1.06}html[data-lang=zh] .page-home .hero__title{font-size:clamp(2.25rem,5.4vw,4rem)}.page-home .hero__lead,.page-home .hero__tail{opacity:var(--hero-lead,1)}.page-home .hero__name{z-index:31;transform-origin:0;white-space:nowrap;will-change:transform, opacity;display:inline-block;position:relative}.page-home .hero__lede{max-width:30rem;color:var(--text-muted);margin:0;font-size:clamp(1.0625rem,1.5vw,1.375rem);line-height:1.45}.page-home .hero__links{flex-wrap:wrap;justify-content:center;gap:.75rem 2rem;margin:.35rem 0 0;font-size:1.0625rem;display:flex}.page-home .hero__link{align-items:center;gap:.15rem;display:inline-flex}.page-home .hero__link svg{width:.85rem;height:.85rem;margin-top:.1em}.page-home .hero__link:hover{text-decoration:underline}.page-home .hero__scroll{width:2.25rem;height:2.25rem;color:var(--text-muted);opacity:calc(var(--hero-copy,1) * .85);place-items:center;display:grid;position:absolute;bottom:2rem;left:50%;translate:-50%}.page-home .hero__scroll svg{width:1.15rem;height:1.15rem}@media (prefers-reduced-motion:no-preference){.page-home .hero__title{animation:.76s 90ms backwards hero-title-in}body.page-home .home-content .animate-in{animation:none}body.page-home .home-content.is-in .animate-in{animation:.52s cubic-bezier(.22,1,.36,1) backwards rise;animation-delay:calc(var(--i,0) * 70ms)}}@keyframes hero-title-in{0%{opacity:0;transform:scale(.985)}}.page-home .home-content{z-index:2;margin-top:calc(-1 * var(--hero-overlap));background:var(--bg);padding-block:4.5rem 0;position:relative}.page-home .home-content .section-title{margin-top:0}html.hero-js body.page-home .hero{z-index:31;pointer-events:none}html.hero-js body.page-home .hero__link{pointer-events:auto}html.hero-js body.page-home .hero.is-spent,html.hero-js body.page-home .hero.is-spent .hero__link{pointer-events:none}html.hero-js body.page-home .navbar__brand{opacity:0;pointer-events:none}@media (width<=34rem){.page-home .hero__inner{gap:1rem}.page-home .hero__title{font-size:clamp(2.1rem,8.8vw,2.9rem)}html[data-lang=zh] .page-home .hero__title{font-size:clamp(1.9rem,8vw,2.6rem)}.page-home .hero__links{gap:.6rem 1.5rem;font-size:1rem}.page-home .home-content{padding-block-start:3rem}}.post-list{grid-template-columns:repeat(auto-fit,minmax(18rem,1fr));gap:1.25rem;margin:0;padding:0;list-style:none;display:grid}.post-list__item{border-radius:var(--radius-lg);background:var(--bg-soft);flex-direction:column;padding:1.75rem;display:flex}.post-list__title{letter-spacing:-.015em;margin:0;font-size:clamp(1.3rem,2.4vw,1.5rem);font-weight:600;line-height:1.25}.post-list__title a{color:var(--text-strong)}.post-list__title a:hover{color:var(--accent);text-decoration:none}.post-list__desc{color:var(--text-muted);margin:.6rem 0 0;font-size:.9375rem;line-height:1.5}.post-list__meta{color:var(--text-muted);flex-wrap:wrap;align-items:center;gap:.4rem .6rem;margin-top:auto;padding-top:1.1rem;font-size:.8125rem;display:flex}.post-list__meta .dot:before{content:"·"}.year-tag{color:var(--text-muted);align-items:center;gap:.35rem;font-size:.8125rem;display:inline-flex}.year-tag:hover{color:var(--accent);text-decoration:none}.year-tag svg{width:.9rem;height:.9rem}.chip-row{flex-wrap:wrap;align-items:center;gap:.5rem .9rem;margin-top:.9rem;display:flex}.chip{border:1px solid var(--border);color:var(--text-muted);background:0 0;border-radius:999px;align-items:center;gap:.3rem;padding:.15rem .65rem;font-size:.75rem;display:inline-flex}.chip:hover{border-color:var(--accent);color:var(--accent);text-decoration:none}.taxonomy{flex-wrap:wrap;gap:.6rem;margin:0;padding:0;list-style:none;display:flex}.taxonomy a{border:1px solid var(--border);color:var(--text);border-radius:999px;align-items:baseline;gap:.4rem;padding:.35rem .85rem;display:inline-flex}.taxonomy a:hover{border-color:var(--accent);color:var(--accent);text-decoration:none}.taxonomy small{color:var(--text-muted)}.post-header{padding-top:1rem}.post-header h1{letter-spacing:-.024em;color:var(--text-strong);margin:0;font-size:clamp(2.2rem,5.6vw,3.5rem);font-weight:600;line-height:1.1}.post-header__desc{color:var(--text-muted);max-width:var(--measure);margin:.85rem 0 0;font-size:1.15rem}.post-meta-band{border-top:1px solid var(--border);border-bottom:1px solid var(--border);grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:1rem 2rem;margin-top:2rem;padding:1.1rem 0;display:grid}.post-meta-band__label{letter-spacing:.09em;text-transform:uppercase;color:var(--text-muted);font-size:.7rem;font-weight:600;display:block}.post-meta-band__value{color:var(--text-strong);margin-top:.25rem;font-size:.95rem;font-weight:500;display:block}.post-body{--toc-width:14rem;--toc-gap:2rem;gap:var(--toc-gap);flex-direction:column;margin-top:2.5rem;display:flex}@media (width>=1000px){.post-body{--toc-gap:3rem;flex-direction:row;align-items:flex-start;transition:padding-right .34s cubic-bezier(.22,1,.36,1)}.post-body[data-toc=closed]{--toc-width:2.25rem;padding-right:calc(var(--toc-width) + var(--toc-gap))}}.toc{align-self:start;font-size:.9375rem;position:relative}.toc__toggle{z-index:1;border:1px solid var(--border);background:var(--bg);width:1.9rem;height:1.9rem;color:var(--text-muted);cursor:pointer;border-radius:999px;justify-content:center;align-items:center;padding:0;transition:color .16s,border-color .16s;display:inline-flex;position:absolute;top:0;right:0}.toc__toggle:hover{border-color:var(--accent);color:var(--accent)}.toc__toggle:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.toc__chevron{width:1rem;height:1rem;transition:transform .34s cubic-bezier(.22,1,.36,1)}.post-body[data-toc=closed] .toc__chevron{transform:rotate(180deg)}@media (width<=999.98px){.toc__chevron{transform:rotate(90deg)}.post-body[data-toc=closed] .toc__chevron{transform:rotate(-90deg)}}.toc__heading{letter-spacing:-.01em;color:var(--text-strong);margin:0;padding-right:2.4rem;font-size:1.15rem;font-weight:700}.toc__collapse{grid-template-rows:1fr;margin-top:.85rem;transition:grid-template-rows .34s cubic-bezier(.22,1,.36,1),margin-top .34s cubic-bezier(.22,1,.36,1);display:grid}.toc__collapse>*{min-height:0;overflow:hidden}.post-body[data-toc=closed] .toc__collapse{grid-template-rows:0fr;margin-top:0}.toc__list{margin:0;padding:0;list-style:none;transition:opacity .2s}.post-body[data-toc=closed] .toc__list{opacity:0}.toc__list a{color:var(--text-muted);padding:.2rem 0;line-height:1.45;display:block}.toc__list a:hover,.toc__list a[data-active]{color:var(--accent);text-decoration:none}@media (width>=1000px){.toc{flex:0 0 var(--toc-width);width:var(--toc-width);max-height:calc(100vh - 8rem);transition:flex-basis .34s cubic-bezier(.22,1,.36,1),width .34s cubic-bezier(.22,1,.36,1);position:sticky;top:5.5rem;overflow:hidden}.toc__panel{width:14rem;max-height:calc(100vh - 8rem);transition:opacity .22s;overflow-y:auto}.post-body[data-toc=closed] .toc__panel{opacity:0}}@media (prefers-reduced-motion:reduce){.toc,.toc__panel,.toc__collapse,.toc__list,.toc__chevron,.prose,.post-body{transition:none}}.prose{width:100%;max-width:var(--measure);min-width:0;margin-inline:auto;line-height:1.72;transition:max-width .34s cubic-bezier(.22,1,.36,1)}.intro+.prose{margin-inline:0}@media (width>=1000px){.prose{flex:auto}}.prose>*+*{margin-top:1.25rem}.prose h2,.prose h3,.prose h4{color:var(--text-strong);letter-spacing:-.02em;scroll-margin-top:5rem;line-height:1.3}.prose h2{margin-top:3rem;font-size:1.8rem;font-weight:600}.prose h3{margin-top:2.25rem;font-size:1.375rem;font-weight:600}.prose h4{margin-top:1.75rem;font-size:1.15rem;font-weight:600}.prose ul,.prose ol{padding-left:1.35rem}.prose li+li{margin-top:.35rem}.prose li::marker{color:var(--text-muted)}.prose blockquote{border-left:2px solid var(--accent);color:var(--text-muted);margin-inline:0;padding:.35rem 0 .35rem 1.1rem}.prose hr{border:0;border-top:1px solid var(--border)}.prose img{border-radius:var(--radius);max-width:100%;height:auto}.prose a{text-decoration:underline;text-decoration-color:color-mix(in srgb, var(--accent) 45%, transparent);text-underline-offset:.18em}.prose a:hover{text-decoration-color:var(--accent)}.prose code{font-family:var(--font-mono);font-size:.875em}.prose :not(pre)>code{border:1px solid var(--border);background:var(--bg-soft);border-radius:5px;padding:.15em .4em}.prose pre{border:1px solid var(--border);border-radius:var(--radius);margin-inline:0;padding:1.1rem 1.15rem;font-size:.875rem;line-height:1.6;position:relative;overflow-x:auto}.prose pre code{font-size:inherit;background:0 0;border:0;padding:0}.copy-code{border:1px solid var(--border);background:var(--bg-elevated);color:var(--text-muted);font-family:var(--font-sans);cursor:pointer;opacity:0;border-radius:5px;padding:.2rem .55rem;font-size:.75rem;transition:opacity .12s ease-in;position:absolute;top:.5rem;right:.5rem}.prose pre:hover .copy-code,.copy-code:focus-visible{opacity:1}@media (hover:none){.copy-code{opacity:1}}.prose table{border-collapse:collapse;width:100%;font-size:.95rem}.prose th,.prose td{border:1px solid var(--border);text-align:left;padding:.5rem .75rem}.prose th{background:var(--bg-soft);color:var(--text-strong)}:root[data-theme=dark] .astro-code,:root[data-theme=dark] .astro-code span{color:var(--shiki-dark)!important;background-color:var(--shiki-dark-bg)!important;font-style:var(--shiki-dark-font-style)!important;font-weight:var(--shiki-dark-font-weight)!important}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .astro-code,:root:not([data-theme=light]) .astro-code span{color:var(--shiki-dark)!important;background-color:var(--shiki-dark-bg)!important}}.prose .footnotes{border-top:1px solid var(--border);color:var(--text-muted);margin-top:3rem;padding-top:1.5rem;font-size:.9rem}.search-shell{--pagefind-ui-scale:.95;--pagefind-ui-primary:var(--accent);--pagefind-ui-text:var(--text);--pagefind-ui-background:var(--bg);--pagefind-ui-border:var(--border);--pagefind-ui-border-width:1px;--pagefind-ui-border-radius:var(--radius);--pagefind-ui-font:var(--font-sans)}.search-hint{border:1px dashed var(--border);border-radius:var(--radius);color:var(--text-muted);margin-top:1.25rem;padding:.9rem 1.1rem;font-size:.9375rem}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:no-preference){.animate-in{animation:.48s cubic-bezier(.22,1,.36,1) backwards rise;animation-delay:calc(var(--i,0) * 70ms)}}
