:root{color-scheme:light;--font:"Geist", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif, "PingFang SC", "Hiragino Sans", "Noto Sans CJK SC", "Noto Sans JP";--font-code:ui-monospace, "SF Mono", Menlo, Consolas, monospace;--text-sm:.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.25rem;--text-3xl:1.875rem;--text-h2:2.25rem;--text-h1:2.25rem;--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-6:24px;--s-8:32px;--s-10:40px;--s-12:48px;--s-16:64px;--s-20:80px;--s-24:96px;--s-32:128px;--margin:var(--s-6);--max:1280px;--measure:64ch;--section:var(--s-24);--bg:#fff;--surface:#f5f7fa;--raised:#eceff4;--ink:#111827;--ink-2:#4b5565;--muted:#5d6576;--hairline:#11182714;--accent:#2346d8;--accent-ink:#fff;--art:#0b0d14;--focus:#2346d8}:root[data-theme=dark]{color-scheme:dark;--bg:#0b0d14;--surface:#11141c;--raised:#1a1e28;--ink:#eef0f5;--ink-2:#a3a9b8;--muted:#8a92a5;--hairline:#eef0f514;--accent:#7d95ff;--accent-ink:#0b0d14;--art:#07080d;--focus:#7d95ff}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--bg:#0b0d14;--surface:#11141c;--raised:#1a1e28;--ink:#eef0f5;--ink-2:#a3a9b8;--muted:#8a92a5;--hairline:#eef0f514;--accent:#7d95ff;--accent-ink:#0b0d14;--art:#07080d;--focus:#7d95ff}}@media (width>=768px){:root{--margin:var(--s-8);--text-h2:3rem;--text-h1:3rem;--section:var(--s-32)}}@media (width>=1200px){:root{--text-h1:3.75rem}}*,:before,:after{box-sizing:border-box}[hidden]{display:none!important}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:var(--s-20)}body{background:var(--bg);min-height:100dvh;color:var(--ink);font-family:var(--font);font-size:var(--text-base);-webkit-font-smoothing:antialiased;flex-direction:column;margin:0;line-height:1.5;display:flex;overflow-x:clip}main{flex:1}main:focus{outline:none}img,svg,video{max-width:100%;height:auto;display:block}a{color:inherit;text-underline-offset:.2em;text-decoration-thickness:1px}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}h1,h2,h3,h4{letter-spacing:-.025em;text-wrap:balance;margin:0;font-weight:500;line-height:1.1}:is(h1,h2,h3):lang(zh),:is(h1,h2,h3):lang(ja),:lang(zh) :is(h1,h2,h3),:lang(ja) :is(h1,h2,h3){letter-spacing:0;line-height:1.25}p{text-wrap:pretty;margin:0}code,pre,kbd{font-family:var(--font-code);font-size:.875em}::selection{background:var(--accent);color:var(--accent-ink)}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;overflow:hidden;position:absolute!important}.skip-link{left:var(--margin);top:var(--s-3);z-index:100;padding:var(--s-3) var(--s-4);background:var(--accent);color:var(--accent-ink);font-weight:500;position:absolute}.skip-link:not(:focus){clip-path:inset(50%);width:1px;height:1px;padding:0;overflow:hidden}.wrap{width:min(100% - 2 * var(--margin), var(--max));margin-inline:auto}.muted{color:var(--muted)}.px{background:var(--accent);flex:none;width:8px;height:8px;display:inline-block}.button{justify-content:center;align-items:center;gap:var(--s-2);min-height:48px;padding:0 var(--s-6);background:var(--ink);color:var(--bg);font:inherit;cursor:pointer;border:0;font-weight:500;text-decoration:none;transition:background-color .3s cubic-bezier(.22,1,.36,1),color .3s cubic-bezier(.22,1,.36,1),transform .3s cubic-bezier(.22,1,.36,1);display:inline-flex}.button:hover{background:var(--accent);color:var(--accent-ink)}.button:active{transform:scale(.98)}.button-accent{background:var(--accent);color:var(--accent-ink)}.button-accent:hover{background:var(--ink);color:var(--bg)}.button-quiet{background:var(--raised);color:var(--ink)}.button-quiet:hover{background:var(--ink);color:var(--bg)}.link{text-decoration:underline;text-decoration-color:var(--hairline);font-weight:500;transition:text-decoration-color .3s cubic-bezier(.22,1,.36,1)}.link:hover{text-decoration-color:currentColor}.status{align-items:center;gap:var(--s-2);font-size:var(--text-sm);color:var(--ink-2);display:inline-flex}.status:before{content:"";background:currentColor;width:8px;height:8px}.status-active:before{background:#d97706}.status-stable:before{background:#16a34a}.status-idea:before{background:var(--muted)}.status-archived:before{background:var(--raised)}.page-head{width:min(100% - 2 * var(--margin), var(--max));padding:var(--s-24) 0 var(--s-12);margin-inline:auto}.page-head h1{font-size:var(--text-h1);letter-spacing:-.035em;line-height:1}.page-head p{margin-top:var(--s-4);max-width:56ch;font-size:var(--text-xl);color:var(--ink-2);line-height:1.4}.empty{width:min(100% - 2 * var(--margin), var(--max));margin:var(--s-12) auto;color:var(--muted)}.filters{gap:var(--s-2);width:min(100% - 2 * var(--margin), var(--max));margin:0 auto var(--s-8);flex-wrap:wrap;display:flex}.filters button{min-height:40px;padding:0 var(--s-4);background:var(--surface);color:var(--ink-2);font:inherit;font-size:var(--text-sm);cursor:pointer;border:0;font-weight:500;transition:background-color .3s cubic-bezier(.22,1,.36,1)}.filters button:hover{background:var(--raised)}.filters button[aria-pressed=true]{background:var(--ink);color:var(--bg)}.prose{max-width:var(--measure);font-size:var(--text-lg);line-height:1.6}.prose>*+*{margin-top:1em}.prose h2{font-size:var(--text-3xl);margin-top:1.8em}.prose h3{font-size:var(--text-xl);margin-top:1.6em}.prose ul,.prose ol{padding-left:1.2em}.prose li+li{margin-top:.4em}.prose li::marker{color:var(--accent)}.prose blockquote{padding:var(--s-4) var(--s-6);background:var(--surface);color:var(--ink-2);margin-inline:0}.prose :not(pre)>code{background:var(--raised);padding:.1em .35em}.prose pre{padding:var(--s-4) var(--s-6);font-size:var(--text-sm);line-height:1.6;overflow-x:auto;background:var(--art)!important;color:#e6eaf4!important}.prose a{font-weight:500}.prose hr{height:var(--s-8);border:0}.prose table{border-collapse:collapse;display:block;overflow-x:auto}.prose th,.prose td{padding:var(--s-2) var(--s-3);text-align:left;border-bottom:1px solid var(--hairline)}.js [data-reveal]>*{opacity:0;transition:opacity .7s cubic-bezier(.22,1,.36,1),transform .7s cubic-bezier(.22,1,.36,1);transform:translateY(32px)}.js [data-reveal].is-visible>*{opacity:1;transform:none}.js [data-reveal].is-visible>:nth-child(2){transition-delay:70ms}.js [data-reveal].is-visible>:nth-child(3){transition-delay:.14s}.js [data-reveal].is-visible>:nth-child(4){transition-delay:.21s}.js [data-reveal].is-visible>:nth-child(n+5){transition-delay:.28s}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation:none!important}.js [data-reveal]>*{opacity:1;transform:none}}.site-header[data-astro-cid-nen7h5rs]{z-index:50;background:var(--bg);position:sticky;top:0}.header-inner[data-astro-cid-nen7h5rs]{justify-content:space-between;align-items:center;gap:var(--s-4);min-height:64px;display:flex}.wordmark[data-astro-cid-nen7h5rs]{align-items:center;gap:var(--s-2);letter-spacing:-.01em;min-height:44px;font-weight:500;text-decoration:none;display:inline-flex}.site-nav[data-astro-cid-nen7h5rs]{align-items:center;gap:var(--s-6);display:flex}.nav-links[data-astro-cid-nen7h5rs]{gap:var(--s-1);margin:0;padding:0;list-style:none;display:flex}.nav-links[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs]{min-height:44px;padding-inline:var(--s-3);font-size:var(--text-sm);color:var(--ink-2);align-items:center;font-weight:500;text-decoration:none;transition:color .3s cubic-bezier(.22,1,.36,1);display:inline-flex}.nav-links[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs]:hover{color:var(--ink)}.nav-links[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs][aria-current=page]{color:var(--ink);text-decoration:underline 2px;text-decoration-color:var(--accent);text-underline-offset:6px}.header-tools[data-astro-cid-nen7h5rs]{align-items:center;gap:var(--s-2);display:flex}.lang-menu[data-astro-cid-nen7h5rs]{position:relative}.lang-menu[data-astro-cid-nen7h5rs] summary[data-astro-cid-nen7h5rs],.theme-toggle[data-astro-cid-nen7h5rs]{min-width:44px;min-height:44px;padding-inline:var(--s-3);background:var(--surface);color:var(--ink);font:inherit;font-size:var(--text-sm);cursor:pointer;border:0;justify-content:center;align-items:center;font-weight:500;list-style:none;transition:background-color .3s cubic-bezier(.22,1,.36,1);display:inline-flex}.lang-menu[data-astro-cid-nen7h5rs] summary[data-astro-cid-nen7h5rs]:hover,.theme-toggle[data-astro-cid-nen7h5rs]:hover{background:var(--raised)}.theme-toggle[data-astro-cid-nen7h5rs]{padding-inline:0}.lang-menu[data-astro-cid-nen7h5rs] summary[data-astro-cid-nen7h5rs]::-webkit-details-marker{display:none}.lang-menu[data-astro-cid-nen7h5rs] ul[data-astro-cid-nen7h5rs]{right:0;top:calc(100% + var(--s-2));min-width:12rem;padding:var(--s-2);background:var(--ink);color:var(--bg);margin:0;list-style:none;position:absolute}.lang-menu[data-astro-cid-nen7h5rs] li[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs]{min-height:40px;padding-inline:var(--s-3);font-size:var(--text-sm);align-items:center;text-decoration:none;display:flex}.lang-menu[data-astro-cid-nen7h5rs] li[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs]:hover{text-decoration:underline}.lang-menu[data-astro-cid-nen7h5rs] li[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs][aria-current=true]{background:var(--accent);color:var(--accent-ink)}.menu-toggle[data-astro-cid-nen7h5rs]{display:none}@media (width<=880px){.header-inner[data-astro-cid-nen7h5rs]{flex-wrap:wrap}.site-nav[data-astro-cid-nen7h5rs]{width:100%;padding-bottom:var(--s-3);flex-wrap:wrap;justify-content:space-between}.nav-links[data-astro-cid-nen7h5rs]{flex-wrap:wrap}.js .menu-toggle[data-astro-cid-nen7h5rs]{min-height:44px;padding-inline:var(--s-4);background:var(--surface);color:var(--ink);font:inherit;font-size:var(--text-sm);cursor:pointer;border:0;align-items:center;font-weight:500;display:inline-flex}.js .site-nav[data-astro-cid-nen7h5rs]:not(.is-open){display:none}.js .site-nav[data-astro-cid-nen7h5rs].is-open{align-items:stretch;gap:var(--s-6);min-height:calc(100dvh - 64px);padding-block:var(--s-6) var(--s-8);flex-direction:column}.js .site-nav[data-astro-cid-nen7h5rs].is-open .nav-links[data-astro-cid-nen7h5rs]{flex-direction:column}.js .site-nav[data-astro-cid-nen7h5rs].is-open .nav-links[data-astro-cid-nen7h5rs] li[data-astro-cid-nen7h5rs]{animation:.5s cubic-bezier(.22,1,.36,1) both menu-in}.js .site-nav[data-astro-cid-nen7h5rs].is-open .nav-links[data-astro-cid-nen7h5rs] li[data-astro-cid-nen7h5rs]:nth-child(2){animation-delay:60ms}.js .site-nav[data-astro-cid-nen7h5rs].is-open .nav-links[data-astro-cid-nen7h5rs] li[data-astro-cid-nen7h5rs]:nth-child(3){animation-delay:.12s}.js .site-nav[data-astro-cid-nen7h5rs].is-open .nav-links[data-astro-cid-nen7h5rs] li[data-astro-cid-nen7h5rs]:nth-child(4){animation-delay:.18s}.js .site-nav[data-astro-cid-nen7h5rs].is-open .nav-links[data-astro-cid-nen7h5rs] li[data-astro-cid-nen7h5rs]:nth-child(5){animation-delay:.24s}.js .site-nav[data-astro-cid-nen7h5rs].is-open .nav-links[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs]{font-size:var(--text-3xl);color:var(--ink);min-height:52px;padding-inline:0}.lang-menu[data-astro-cid-nen7h5rs] ul[data-astro-cid-nen7h5rs]{left:0;right:auto}}@keyframes menu-in{0%{opacity:0;transform:translateY(24px)}}.site-footer[data-astro-cid-jo6i4kqk]{margin-top:var(--section);padding-top:var(--s-24);color:#eef0f5;background:#0b0d14}.footer-contact[data-astro-cid-jo6i4kqk]{gap:var(--s-4);justify-items:start;display:grid}.footer-contact[data-astro-cid-jo6i4kqk] h2[data-astro-cid-jo6i4kqk]{font-size:var(--text-h2);letter-spacing:-.035em}.footer-contact[data-astro-cid-jo6i4kqk] p[data-astro-cid-jo6i4kqk]{font-size:var(--text-xl);color:#a3a9b8}.footer-contact[data-astro-cid-jo6i4kqk] .button[data-astro-cid-jo6i4kqk]{margin-top:var(--s-4)}.footer-cols[data-astro-cid-jo6i4kqk]{gap:var(--s-8);margin-top:var(--s-24);font-size:var(--text-sm);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.footer-cols[data-astro-cid-jo6i4kqk] ul[data-astro-cid-jo6i4kqk]{margin:0;padding:0;list-style:none}.footer-cols[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]{align-items:center;gap:var(--s-2);min-height:32px;text-decoration:none;transition:color .3s cubic-bezier(.22,1,.36,1);display:inline-flex}.footer-cols[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk] span[data-astro-cid-jo6i4kqk]{color:#8a92a5}.footer-cols[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]:hover{text-decoration:underline}.footer-mark[data-astro-cid-jo6i4kqk]{margin-top:var(--s-20)}.footer-mark[data-astro-cid-jo6i4kqk] svg[data-astro-cid-jo6i4kqk]{width:100%;overflow:visible}.footer-mark[data-astro-cid-jo6i4kqk] text[data-astro-cid-jo6i4kqk]{font-family:var(--font);letter-spacing:-.05em;fill:currentColor;font-size:180px;font-weight:500}.footer-legal[data-astro-cid-jo6i4kqk]{justify-content:space-between;gap:var(--s-2) var(--s-8);padding-block:var(--s-6);font-size:var(--text-sm);color:#8a92a5;flex-wrap:wrap;display:flex}.footer-legal[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]{color:inherit}@media (width<=720px){.footer-cols[data-astro-cid-jo6i4kqk]{grid-template-columns:1fr 1fr}}.tr-banner[data-astro-cid-a3iznlik]{background:var(--surface)}.tr-inner[data-astro-cid-a3iznlik]{font-size:var(--text-sm);flex-wrap:wrap;align-items:center;gap:.5rem 1rem;padding-block:.6rem;display:flex}.tr-inner[data-astro-cid-a3iznlik] p[data-astro-cid-a3iznlik]{flex:18rem}.tr-inner[data-astro-cid-a3iznlik] .button[data-astro-cid-a3iznlik]{min-height:44px;font-size:var(--text-sm);padding-block:.3em}.lang-suggest[data-astro-cid-hkbrpulz]{background:var(--accent);color:var(--accent-ink)}.lang-suggest-inner[data-astro-cid-hkbrpulz]{flex-wrap:wrap;align-items:center;gap:.5rem 1rem;padding-block:.6rem;display:flex}.lang-suggest-inner[data-astro-cid-hkbrpulz] p[data-astro-cid-hkbrpulz]{flex:16rem;font-weight:500}.lang-suggest[data-astro-cid-hkbrpulz] .button[data-astro-cid-hkbrpulz]{background:var(--accent-ink);color:var(--accent)}.lang-suggest-close[data-astro-cid-hkbrpulz]{min-height:44px;color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;text-decoration:underline}
