@font-face{font-family:Newsreader Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/newsreader-vietnamese-opsz-normal.BjhtXyW2.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Newsreader Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/newsreader-latin-ext-opsz-normal.BQn1nviT.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Newsreader Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/newsreader-latin-opsz-normal.s-izfB6B.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Newsreader Variable;font-style:italic;font-display:swap;font-weight:200 800;src:url(/_astro/newsreader-vietnamese-opsz-italic.DTr-ymY4.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Newsreader Variable;font-style:italic;font-display:swap;font-weight:200 800;src:url(/_astro/newsreader-latin-ext-opsz-italic.CSPGnFdO.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Newsreader Variable;font-style:italic;font-display:swap;font-weight:200 800;src:url(/_astro/newsreader-latin-opsz-italic.kJKFiXvB.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-cyrillic-ext-wght-normal.DjL33-gN.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-cyrillic-wght-normal.BEAKL7Jp.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-vietnamese-wght-normal.6IgcOCM7.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-latin-ext-wght-normal.DC-KSUi6.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/geist-latin-wght-normal.BgDaEnEv.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(data:font/woff2;base64,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)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-cyrillic-wght-normal.D73BlboJ.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-greek-wght-normal.Bw9x6K1M.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-vietnamese-wght-normal.Bt-aOZkq.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-latin-ext-wght-normal.DBQx-q_a.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-latin-wght-normal.B9CIFXIH.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--paper:#fffefa;--ink:#0f1423;--muted:#475164;--line:#c3d7df;--code-bg:#d8e3e7;--accent:#f25a47;--accent-text:#ab372f;--line-soft:color-mix(in oklab, var(--line) 70%, var(--paper));--code-wash:color-mix(in oklab, var(--code-bg) 40%, var(--paper));--wash:color-mix(in oklab, var(--line) 45%, transparent);--font-serif:"Newsreader Variable", Georgia, serif;--font-sans:"Geist Variable", system-ui, sans-serif;--font-mono:"JetBrains Mono Variable", ui-monospace, monospace;--step-0:1.0625rem;--step-1:1.3rem;--step-2:clamp(1.75rem, 4vw, 2.25rem);--step-hero:clamp(3.5rem, 14vw, 7rem);--gutter:2.75rem;--ease:cubic-bezier(.22, 1, .36, 1)}@font-face{font-family:CJK Quotes;src:local(PingFang SC),local(Noto Sans CJK SC),local(Source Han Sans SC),local(Microsoft YaHei);unicode-range:U+2018-2019,U+201C-201D}:root:lang(zh-CN){--font-serif:"CJK Quotes", "Newsreader Variable", "Noto Serif CJK SC", "Source Han Serif SC", "Songti SC", serif;--font-sans:"CJK Quotes", "Geist Variable", "PingFang SC", "Hiragino Sans GB", "Noto Sans CJK SC", "Source Han Sans SC", "Microsoft YaHei", sans-serif}@media (prefers-color-scheme:dark){:root{--paper:#0f1423;--ink:#eef7f2;--muted:#a7a8bd;--line:#2b333e;--code-bg:#142334;--accent:#f25a47;--accent-text:#f25a47;--line-soft:var(--line);--code-wash:color-mix(in oklab, var(--code-bg) 70%, var(--paper));--wash:color-mix(in oklab, var(--code-bg) 90%, transparent)}}*,:before,:after{box-sizing:border-box}html{background:var(--paper);color:var(--ink);font-family:var(--font-sans);-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased;font-size:100%}body{font-size:var(--step-0);background:radial-gradient(70rem 36rem at 80% -12rem, var(--wash), transparent 70%) no-repeat;margin:0;line-height:1.65}p,li{text-wrap:pretty}a{color:inherit;text-decoration-color:color-mix(in oklab, var(--accent) 60%, transparent);text-underline-offset:.22em;text-decoration-thickness:1px;transition:color .2s,text-decoration-color .2s}a:hover{color:var(--accent-text);text-decoration-color:var(--accent)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}code,pre{font-family:var(--font-mono);font-size:.84em}:not(pre)>code{border:1px solid var(--line-soft);background:var(--code-wash);white-space:nowrap;border-radius:5px;padding:.08em .36em}pre{border:1px solid var(--line-soft);background:var(--code-wash);border-radius:10px;margin:0;padding:.85rem 1.1rem;line-height:1.6;overflow-x:auto}.page{max-width:44rem;margin:0 auto;padding:0 1.5rem;position:relative}.langs{font-size:.875rem;position:absolute;top:1.75rem;right:1.5rem}.langs a{color:var(--muted);text-decoration:none}.langs a:hover{color:var(--accent-text)}.hero{padding:clamp(4rem,16vh,9rem) 0 clamp(3.5rem,10vh,6rem)}.graph{width:clamp(7rem,26vw,10rem);margin:0 0 2rem;display:block;overflow:visible}.graph path{fill:none;stroke-width:2px;stroke-linecap:round}.rail{stroke:var(--line)}.branch{stroke:var(--accent);stroke-dasharray:1;stroke-dashoffset:1px;animation:draw 1.4s .3s var(--ease) forwards}.node{fill:var(--paper);stroke:var(--line);stroke-width:2px}.node--pages{fill:var(--accent);stroke:none;opacity:0;animation:.4s 1.5s forwards appear}.wordmark{font-family:var(--font-serif);font-size:var(--step-hero);font-optical-sizing:auto;letter-spacing:-.025em;margin:0;font-weight:380;line-height:.95}.wordmark .dot{color:var(--accent)}.lede{max-width:30ch;font-size:var(--step-1);color:var(--muted);margin:1.75rem 0 0;font-weight:350;line-height:1.5}.lede a,.lede code,.lede em{color:var(--ink)}.lede em{font-family:var(--font-serif);font-size:1.1em;font-weight:400}.traits{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:1.5rem 0 0;font-size:.75rem}.section{border-top:1px solid var(--line-soft);padding:clamp(3.5rem,9vh,5rem) 0}.eyebrow{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--accent-text);margin:0 0 .75rem;font-size:.75rem}h2{font-family:var(--font-serif);font-size:var(--step-2);letter-spacing:-.01em;margin:0 0 2.5rem;font-weight:400;line-height:1.15}h3{font-size:var(--step-0);margin:0;font-weight:560;line-height:1.4}.section__lede{max-width:58ch;color:var(--muted);margin:-1rem 0 1.5rem}.steps{margin:0;padding:0;list-style:none}.step{padding:0 0 2.75rem var(--gutter);position:relative}.step:last-child{padding-bottom:0}.step:before{content:"";border-left:1.5px solid var(--line);position:absolute;top:.75rem;bottom:-.75rem;left:.5rem}.step:last-child:before{display:none}.step:after{content:"";border:1.5px solid var(--line);background:var(--paper);border-radius:50%;width:.8rem;height:.8rem;position:absolute;top:.4rem;left:calc(.1rem + .75px)}.step:last-child:after{border-color:var(--accent);background:var(--accent)}.step>p{max-width:58ch;color:var(--muted);margin:.35rem 0 1rem}.step>p:last-child{margin-bottom:0}.sites{font-family:var(--font-mono);grid-template-columns:max-content 2.25rem 1fr;gap:.5rem 0;margin:0;padding:0;font-size:.8em;list-style:none;display:grid}.sites li{grid-column:1/-1;grid-template-columns:subgrid;border:1px solid var(--line-soft);background:var(--code-wash);border-radius:10px;align-items:center;padding:.7rem 1rem;display:grid}.sites__repo{color:var(--muted)}.sites__url{color:var(--ink)}.sites__arrow{background:var(--accent);justify-self:center;width:1rem;height:1px;position:relative}.sites__arrow:after{content:"";border-top:1px solid var(--accent);border-right:1px solid var(--accent);width:6px;height:6px;position:absolute;top:-3px;right:0;transform:rotate(45deg)}.settings{border-top:1px solid var(--line-soft);margin:0}.settings div{border-bottom:1px solid var(--line-soft);grid-template-columns:11rem 1fr;gap:1rem;padding:.55rem 0;display:grid}.settings dt{color:var(--muted)}.settings dd{margin:0}.records{font-size:.78rem}.records__name{color:var(--ink)}.records__type{color:var(--accent-text)}.hints{max-width:58ch;color:var(--muted);margin:1.5rem 0 0;padding:0;list-style:none}.hints li{padding-left:1.25rem;position:relative}.hints li+li{margin-top:.5rem}.hints li:before{content:"";background:var(--accent);width:.4rem;height:1px;position:absolute;top:.72em;left:.15rem}.notes{grid-template-columns:repeat(2,minmax(0,1fr));gap:2.25rem 2.5rem;display:grid}.note{border-top:1px solid var(--line);padding-top:1rem}.note h3{font-family:var(--font-serif);font-size:var(--step-1);font-weight:420}.note p{color:var(--muted);margin:.4rem 0 0}.note code{white-space:normal}.footer{border-top:1px solid var(--line-soft);color:var(--muted);padding:2.5rem 0 4rem;font-size:.875rem}.footer p{max-width:60ch;margin:0}.footer p+p{margin-top:.35rem}:lang(zh-CN) body{line-height:1.8}:lang(zh-CN) .lede{max-width:21em}:lang(zh-CN) .lede em{font-family:inherit;font-size:1em;font-style:normal;font-weight:500}:lang(zh-CN) .eyebrow,:lang(zh-CN) .traits{font-family:var(--font-sans);letter-spacing:.1em}:lang(zh-CN) h2,:lang(zh-CN) .note h3{letter-spacing:.02em}.hero>:not(.graph),.section{animation:rise .9s var(--ease) both}.wordmark{animation-delay:.1s}.lede{animation-delay:.25s}.traits{animation-delay:.4s}.section{animation-delay:.5s}@keyframes draw{to{stroke-dashoffset:0}}@keyframes appear{to{opacity:1}}@keyframes rise{0%{opacity:0;transform:translateY(.75rem)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}.branch{stroke-dashoffset:0}.node--pages{opacity:1}}@media (width<=40rem){:root{--gutter:2rem}.sites{grid-template-columns:1fr}.sites li{grid-template-columns:1fr;gap:.25rem}.sites__arrow{display:none}.sites__url:before{content:"→ ";color:var(--accent)}.settings div{grid-template-columns:1fr;gap:0}.notes{grid-template-columns:1fr}}
