@font-face{font-family:Hanken Grotesk;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/hanken-grotesk-cyrillic-ext-400-normal.BLTEyOai.woff2)format("woff2"),url(/_astro/hanken-grotesk-cyrillic-ext-400-normal.C910xUUL.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Hanken Grotesk;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/hanken-grotesk-vietnamese-400-normal.BLrFBAHj.woff2)format("woff2"),url(/_astro/hanken-grotesk-vietnamese-400-normal.C-iWyKLC.woff)format("woff");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:Hanken Grotesk;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/hanken-grotesk-latin-ext-400-normal.DR7lHpW4.woff2)format("woff2"),url(/_astro/hanken-grotesk-latin-ext-400-normal.DI-aIsWt.woff)format("woff");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:Hanken Grotesk;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/hanken-grotesk-latin-400-normal.BG6hkEXj.woff2)format("woff2"),url(/_astro/hanken-grotesk-latin-400-normal.CjyVwvJV.woff)format("woff");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:Hanken Grotesk;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/hanken-grotesk-cyrillic-ext-500-normal.DJxU5DEV.woff2)format("woff2"),url(/_astro/hanken-grotesk-cyrillic-ext-500-normal.klSdyF8A.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Hanken Grotesk;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/hanken-grotesk-vietnamese-500-normal.DxwlvJEc.woff2)format("woff2"),url(/_astro/hanken-grotesk-vietnamese-500-normal.DkDHNoXI.woff)format("woff");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:Hanken Grotesk;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/hanken-grotesk-latin-ext-500-normal.DLb9JDK8.woff2)format("woff2"),url(/_astro/hanken-grotesk-latin-ext-500-normal.BNvrJ0Ju.woff)format("woff");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:Hanken Grotesk;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/hanken-grotesk-latin-500-normal.DrDcrrxK.woff2)format("woff2"),url(/_astro/hanken-grotesk-latin-500-normal.Bo-NxEKf.woff)format("woff");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;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/newsreader-vietnamese-400-normal.DdKr49mV.woff2)format("woff2"),url(/_astro/newsreader-vietnamese-400-normal.BekUZro8.woff)format("woff");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;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/newsreader-latin-ext-400-normal.svq1FPys.woff2)format("woff2"),url(/_astro/newsreader-latin-ext-400-normal.DYA1XoQK.woff)format("woff");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;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/newsreader-latin-400-normal.BFBkh4jY.woff2)format("woff2"),url(/_astro/newsreader-latin-400-normal.gRTjlS2D.woff)format("woff");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;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/newsreader-vietnamese-500-normal.CL6a8tp2.woff2)format("woff2"),url(/_astro/newsreader-vietnamese-500-normal.BEAbKU8A.woff)format("woff");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;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/newsreader-latin-ext-500-normal.BNHmvKvI.woff2)format("woff2"),url(/_astro/newsreader-latin-ext-500-normal.CZruMFou.woff)format("woff");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;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/newsreader-latin-500-normal.B66TYsaK.woff2)format("woff2"),url(/_astro/newsreader-latin-500-normal.DFwuUcdu.woff)format("woff");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;font-style:italic;font-display:swap;font-weight:400;src:url(/_astro/newsreader-vietnamese-400-italic.bZegYFuM.woff2)format("woff2"),url(/_astro/newsreader-vietnamese-400-italic.QbB8kb5s.woff)format("woff");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;font-style:italic;font-display:swap;font-weight:400;src:url(/_astro/newsreader-latin-ext-400-italic.BMTE_bNQ.woff2)format("woff2"),url(/_astro/newsreader-latin-ext-400-italic.qdgKLcPG.woff)format("woff");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;font-style:italic;font-display:swap;font-weight:400;src:url(/_astro/newsreader-latin-400-italic.CEihAR-f.woff2)format("woff2"),url(/_astro/newsreader-latin-400-italic.CNZoH1hn.woff)format("woff");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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-cyrillic-ext-400-normal.xuaO2J-f.woff2)format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-ext-400-normal.DMdlQ8Kv.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-cyrillic-400-normal.BSMlKf0J.woff2)format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-400-normal.CEL4l2ZJ.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-vietnamese-400-normal.BulugwFq.woff2)format("woff2"),url(/_astro/ibm-plex-mono-vietnamese-400-normal.DDuiU_S-.woff)format("woff");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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-latin-ext-400-normal.BmRBH3aV.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-ext-400-normal.D3D2R8hC.woff)format("woff");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: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");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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-cyrillic-ext-500-normal.BqneJy0T.woff2)format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-ext-500-normal.BIfNGwUT.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-cyrillic-500-normal.Bq9vWWag.woff2)format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-500-normal.Ael50iVv.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-vietnamese-500-normal.DZ4AoWbu.woff2)format("woff2"),url(/_astro/ibm-plex-mono-vietnamese-500-normal.C8zxqsMH.woff)format("woff");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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-latin-ext-500-normal.CAhNIIs5.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-ext-500-normal.CZ70TYgx.woff)format("woff");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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-latin-500-normal.DSY6xOcd.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-500-normal.CB9ihrfo.woff)format("woff");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{color-scheme:light;--space-3xs:2px;--space-2xs:4px;--space-xs:8px;--space-sm:12px;--space-md:16px;--space-lg:24px;--space-xl:32px;--space-2xl:48px;--space-3xl:72px;--space-4xl:104px;--text-xs:.75rem;--text-sm:.8125rem;--text-md:.9375rem;--text-body:1.0625rem;--text-lg:1.1875rem;--text-xl:1.5rem;--text-2xl:1.875rem;--text-3xl:2.5rem;--text-4xl:3.25rem;--ease-out:cubic-bezier(.16, 1, .3, 1);--dur-micro:.12s;--dur-short:.2s;--color-paper:oklch(95.4% .009 92);--color-paper-2:oklch(92.8% .01 90);--color-paper-3:oklch(89.6% .011 88);--color-sheet:oklch(97.8% .006 92);--color-ink:oklch(24% .014 60);--color-ink-2:oklch(33% .012 60);--color-muted:oklch(48% .014 60);--color-rule:oklch(89% .01 80);--color-rule-2:oklch(74% .012 75);--color-accent:oklch(42% .105 352);--color-accent-2:oklch(35% .1 352);--color-accent-ink:oklch(97% .005 92);--color-focus:oklch(43% .115 352);--color-scrim:oklch(24% .015 60/.34);--color-error:oklch(48% .15 27);--color-success:oklch(46% .09 150);--container:1200px;--gutter:40px;--measure:34em;--control-h:28px;--font-display:"Newsreader", "Noto Serif CJK SC", "Source Han Serif SC", "Songti SC", "SimSun", Georgia, serif;--font-body:"Newsreader", "Noto Serif CJK SC", "Source Han Serif SC", "Songti SC", "SimSun", Georgia, serif;--font-ui:"Hanken Grotesk", "Noto Sans CJK SC", "Source Han Sans SC", "PingFang SC", "Microsoft YaHei", ui-sans-serif, system-ui, sans-serif;--font-outlier:"IBM Plex Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;--radius-card:2px;--radius-pill:2px;--rule-hair:1px;--rule-bar:1px;--shadow-card:none;--z-raised:10;--z-sticky:200;--z-sticky-nav:300;--z-modal:400;--z-toast:500;--z-tooltip:600}@media (width<=60rem){:root{--gutter:28px}}@media (width<=40rem){:root{--gutter:20px;--text-3xl:2.125rem;--text-4xl:2.5rem}}*,:before,:after{box-sizing:border-box}html{scrollbar-color:var(--color-rule-2) var(--color-paper);scroll-padding-top:5rem}body{background:var(--color-paper);color:var(--color-ink);font-family:var(--font-body);font-size:var(--text-body);font-kerning:normal;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;caret-color:var(--color-accent);margin:0;line-height:1.72}::selection{background:color-mix(in oklab, var(--color-accent) 16%, transparent);color:var(--color-ink)}:focus-visible{outline:2px solid var(--color-focus);outline-offset:3px;border-radius:1px}a{color:inherit;text-underline-offset:.2em;text-decoration-thickness:1px}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);letter-spacing:0;text-wrap:balance;overflow-wrap:break-word;min-width:0;margin:0;font-weight:500;line-height:1.22}h1{font-size:var(--text-3xl)}p{text-wrap:pretty;margin:0}ul,ol{margin:0}img,video{max-width:100%;height:auto;display:block}svg{display:block}[hidden]{display:none!important}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}table{border-collapse:collapse}.wrap{width:100%;max-width:var(--container);padding-inline:var(--gutter);margin-inline:auto}.measure{max-width:var(--measure)}.num,time,td.num{font-variant-numeric:tabular-nums}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.ui{font-family:var(--font-ui)}.mono{font-family:var(--font-outlier)}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}:root{--syntax-background:transparent;--syntax-foreground:var(--color-ink-2);--syntax-token-comment:oklch(45% .012 75);--syntax-token-keyword:oklch(42% .1 33);--syntax-token-function:oklch(35% .06 255);--syntax-token-variable:oklch(28% .014 70);--syntax-token-parameter:oklch(39% .04 255);--syntax-token-punctuation:oklch(43% .012 70);--syntax-token-string:oklch(40% .06 145);--syntax-token-string-expression:oklch(40% .06 145);--syntax-token-constant:oklch(44% .08 55);--syntax-token-deleted:oklch(48% .14 25);--syntax-token-inserted:oklch(42% .08 150)}body{min-height:100dvh}.site-shell{flex-direction:column;min-height:100dvh;display:flex}.site-main{padding-bottom:var(--space-4xl);flex:1 0 auto}.site-main:focus{outline:none}.skip-link{left:var(--space-md);z-index:var(--z-toast);padding:var(--space-xs) var(--space-md);background:var(--color-ink);color:var(--color-paper);font-family:var(--font-ui);font-size:var(--text-sm);text-decoration:none;position:absolute;top:-80px}.skip-link:focus{top:var(--space-md)}.masthead{background:var(--color-paper);border-bottom:var(--rule-hair) solid var(--color-rule)}.masthead__inner{justify-content:space-between;align-items:center;gap:var(--space-lg);min-height:62px;display:flex}.nav{margin-left:auto}.wordmark{align-items:baseline;gap:var(--space-sm);min-width:0;text-decoration:none;display:inline-flex}.wordmark__zh{font-family:var(--font-display);letter-spacing:.06em;font-size:1.125rem;font-weight:600}.wordmark__en{font-family:var(--font-outlier);letter-spacing:.04em;color:var(--color-muted);font-size:.6875rem}.wordmark:hover .wordmark__zh{color:var(--color-accent-2)}.nav{align-items:center;gap:var(--space-lg);display:flex}.nav a{font-family:var(--font-ui);letter-spacing:.01em;color:var(--color-muted);padding-block:var(--space-2xs);transition:color var(--dur-micro) var(--ease-out);font-size:.8125rem;text-decoration:none}.nav a:hover,.nav a[aria-current=page]{color:var(--color-ink)}.nav a[aria-current=page]:after{content:"";height:1px;margin-top:var(--space-3xs);background:var(--color-accent);display:block}.search-open{align-items:center;gap:var(--space-xs);height:30px;padding:0 var(--space-xs);margin-left:var(--space-sm);color:var(--color-muted);font-family:var(--font-ui);background:0 0;border:0;border-radius:2px;font-size:.8125rem;display:inline-flex}.search-open:hover{color:var(--color-ink);background:var(--color-paper-2)}.search-open:active{color:var(--color-ink);background:var(--color-paper-3)}.search-open svg{width:14px;height:14px}.search-open kbd{font-family:var(--font-outlier);color:var(--color-ink-2);font-size:.625rem}@media (width<=44rem){.masthead__inner{padding-block:var(--space-sm);flex-wrap:wrap;row-gap:0}.nav{gap:var(--space-md);width:100%;margin-top:var(--space-xs);padding-top:var(--space-xs);border-top:var(--rule-hair) solid var(--color-rule);order:3}.search-open{width:40px;height:40px;margin-left:auto;padding:0}.search-open kbd,.search-open span{display:none}.nav a{padding-block:var(--space-xs)}}.label{font-family:var(--font-ui);font-size:var(--text-xs);color:var(--color-muted);letter-spacing:.01em}.link-arrow{align-items:baseline;gap:var(--space-3xs);font-family:var(--font-ui);font-size:var(--text-sm);color:var(--color-ink);border-bottom:var(--rule-hair) solid transparent;transition:color var(--dur-micro) var(--ease-out), border-color var(--dur-micro) var(--ease-out);text-decoration:none;display:inline-flex}.link-arrow:hover{color:var(--color-accent-2);border-bottom-color:var(--color-accent)}.link-quiet{font-family:var(--font-ui);font-size:var(--text-sm);color:var(--color-muted);text-decoration:none}.link-quiet:hover{color:var(--color-ink)}.btn{height:var(--control-h);padding:0 var(--space-xs);border:var(--rule-hair) solid var(--color-rule-2);border-radius:var(--radius-card);color:var(--color-ink-2);font-family:var(--font-ui);letter-spacing:.01em;white-space:nowrap;transition:border-color var(--dur-micro) var(--ease-out), color var(--dur-micro) var(--ease-out), background var(--dur-micro) var(--ease-out);background:0 0;justify-content:center;align-items:center;font-size:.6875rem;text-decoration:none;display:inline-flex}.btn:hover{border-color:var(--color-ink);color:var(--color-ink);background:var(--color-sheet)}.btn:active{border-color:var(--color-ink);background:var(--color-paper-2)}.btn:disabled,.search-open:disabled{opacity:.45;cursor:not-allowed}.btn--solid{background:var(--color-ink);border-color:var(--color-ink);color:var(--color-paper)}.btn--solid:hover{background:var(--color-accent-2);border-color:var(--color-accent-2);color:var(--color-accent-ink)}.tag-row{gap:var(--space-2xs);flex-wrap:wrap;display:flex}.tag{height:20px;padding:0 var(--space-xs);border:var(--rule-hair) solid var(--color-rule);font-family:var(--font-ui);color:var(--color-muted);white-space:nowrap;border-radius:2px;align-items:center;font-size:.625rem;text-decoration:none;display:inline-flex}.tag:hover{border-color:var(--color-rule-2);color:var(--color-ink-2)}.badge{border:var(--rule-hair) solid transparent;height:18px;font-family:var(--font-ui);letter-spacing:.02em;white-space:nowrap;border-radius:2px;align-items:center;gap:4px;padding:0 6px;font-size:.625rem;display:inline-flex}.badge:before{content:"";background:currentColor;border-radius:50%;width:5px;height:5px}.badge--merged{color:oklch(43% .13 300);background:oklch(96% .02 300);border-color:oklch(88% .04 300)}.badge--open{color:oklch(40% .09 150);background:oklch(96% .018 150);border-color:oklch(88% .035 150)}.badge--closed{color:var(--color-muted);background:var(--color-paper-2);border-color:var(--color-rule)}.lang-dot{background:var(--lang,var(--color-rule-2));border-radius:50%;flex:none;width:7px;height:7px;display:inline-block}.colophon{border-top:var(--rule-hair) solid var(--color-rule)}.colophon .wrap{align-items:baseline;gap:var(--space-md) var(--space-xl);padding-block:var(--space-lg) var(--space-2xl);grid-template-columns:minmax(0,1fr) auto;display:grid}.colophon__id{align-items:baseline;gap:var(--space-xs) var(--space-md);flex-wrap:wrap;display:flex}.colophon__name{font-family:var(--font-display);font-size:.9375rem;font-weight:600}.colophon p{font-family:var(--font-ui);font-size:var(--text-xs);color:var(--color-muted)}.colophon nav{gap:var(--space-xs) var(--space-lg);flex-wrap:wrap;justify-self:end;display:flex}.colophon nav a{font-family:var(--font-ui);font-size:var(--text-xs);color:var(--color-muted);text-decoration:none}.colophon nav a:hover{color:var(--color-ink)}.colophon__meta{font-family:var(--font-outlier);color:var(--color-muted);grid-column:1/-1;font-size:.625rem;line-height:1.9}@media (width<=40rem){.colophon .wrap{grid-template-columns:1fr}.colophon nav{justify-self:start}}.search-dialog{border:var(--rule-hair) solid var(--color-rule-2);background:var(--color-paper);width:100%;max-width:40rem;max-height:min(78dvh,38rem);color:var(--color-ink);border-radius:2px;margin:auto;padding:0}.search-dialog::backdrop{background:var(--color-scrim)}.search-dialog__head{align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);border-bottom:var(--rule-hair) solid var(--color-rule);background:var(--color-paper);z-index:var(--z-raised);display:flex;position:sticky;top:0}.search-dialog__head label{font-family:var(--font-ui);font-size:var(--text-xs);color:var(--color-muted)}.search-dialog__input{min-width:0;padding:var(--space-2xs) 0;font-family:var(--font-body);color:var(--color-ink);background:0 0;border:0;flex:1;font-size:1.0625rem}.search-dialog__input:focus{outline:none}.search-dialog__input::placeholder{color:var(--color-muted);opacity:1}.search-dialog__input::-webkit-search-cancel-button,.archive-search input::-webkit-search-cancel-button{-webkit-appearance:none;appearance:none}.search-dialog__close{height:24px;padding:0 var(--space-xs);border:var(--rule-hair) solid var(--color-rule);font-family:var(--font-outlier);color:var(--color-muted);background:0 0;border-radius:2px;align-items:center;font-size:.625rem;display:inline-flex}.search-dialog__close:hover{border-color:var(--color-rule-2);color:var(--color-ink)}.search-dialog__body{padding:var(--space-sm) var(--space-md) var(--space-md);max-height:calc(78dvh - 4.5rem);overflow-y:auto}.search-status{font-family:var(--font-ui);font-size:var(--text-xs);color:var(--color-muted);margin-bottom:var(--space-xs)}.search-results{margin:0;padding:0;list-style:none}.search-results li+li{border-top:var(--rule-hair) solid var(--color-rule)}.search-results a{padding:var(--space-xs);margin-inline:calc(-1 * var(--space-xs));border-radius:2px;text-decoration:none;display:block}.search-results a:hover,.search-results a:focus-visible{background:var(--color-paper-2)}.search-results .r-title{font-family:var(--font-body);font-size:.9375rem;line-height:1.45;display:block}.search-results .r-meta{font-family:var(--font-ui);color:var(--color-muted);margin-top:1px;font-size:.6875rem;display:block}.search-hint{font-family:var(--font-ui);font-size:var(--text-xs);color:var(--color-muted);margin-top:var(--space-sm);line-height:1.8}.search-hint kbd{border:var(--rule-hair) solid var(--color-rule);padding:0 var(--space-2xs);font-family:var(--font-outlier);border-radius:2px;font-size:.625rem}.prose{font-size:var(--text-body);color:var(--color-ink-2);max-width:var(--measure);line-height:1.78}.prose>*+*{margin-top:1.05em}.prose>:first-child{margin-top:0}.prose h2,.prose h3,.prose h4{color:var(--color-ink);scroll-margin-top:5.5rem}.prose h2{border-top:var(--rule-hair) solid var(--color-rule);max-width:none;margin-top:2.4em;padding-top:.55em;font-size:1.4375rem;line-height:1.35}.prose h3{max-width:none;margin-top:1.9em;font-size:1.1875rem;line-height:1.4}.prose h4{max-width:none;font-family:var(--font-ui);margin-top:1.6em;font-size:.9375rem;font-weight:600}.prose p{max-width:none;margin:0}.prose a{color:var(--color-ink);text-decoration-color:var(--color-accent);text-underline-offset:.2em;text-decoration-thickness:1px}.prose a:hover{color:var(--color-accent-2)}.prose strong{color:var(--color-ink);font-weight:600}.prose ul,.prose ol{padding-left:1.35em}.prose li+li{margin-top:.28em}.prose li::marker{color:var(--color-rule-2)}.prose blockquote{padding:0 0 0 var(--space-md);border-left:var(--rule-bar) solid var(--color-accent);color:var(--color-ink);margin:1.6em 0;font-style:italic}.prose blockquote p+p{margin-top:.6em}.prose hr{border:0;border-top:var(--rule-hair) solid var(--color-rule);margin:2.2em 0}.prose img{border:var(--rule-hair) solid var(--color-rule);background:var(--color-sheet);margin-block:1.5em}.prose figure{margin:1.7em 0}.prose figure img{margin:0}.prose figcaption{margin-top:var(--space-xs);font-family:var(--font-ui);font-size:var(--text-xs);color:var(--color-muted)}.prose code{font-family:var(--font-outlier);background:var(--color-paper-2);overflow-wrap:anywhere;border-radius:2px;padding:.08em .28em;font-size:.84em}.prose pre{padding:var(--space-sm) var(--space-md);background:var(--color-sheet);border:var(--rule-hair) solid var(--color-rule);margin:1.5em 0;font-size:.8125rem;line-height:1.68;overflow-x:auto}.prose pre code{font-size:inherit;overflow-wrap:normal;background:0 0;border:0;padding:0;display:block}.prose pre.shiki:focus-visible{outline-offset:-2px}.prose table{width:100%;margin:1.7em 0;font-size:.875rem;line-height:1.55;display:block;overflow-x:auto}.prose thead{border-top:var(--rule-hair) solid var(--color-rule-2);border-bottom:var(--rule-hair) solid var(--color-rule-2)}.prose tbody tr{border-bottom:var(--rule-hair) solid var(--color-rule)}.prose th{padding:var(--space-xs) var(--space-sm);text-align:left;font-family:var(--font-ui);color:var(--color-ink);white-space:nowrap;font-size:.75rem;font-weight:500}.prose td{padding:var(--space-xs) var(--space-sm);vertical-align:top}.prose td:first-child,.prose th:first-child{padding-left:0}.prose .callout{padding:var(--space-sm) var(--space-md);background:var(--color-paper-2);border-left:var(--rule-bar) solid var(--color-rule-2);margin:1.7em 0;font-size:.9875rem}.prose .callout-title{font-family:var(--font-ui);font-size:var(--text-xs);color:var(--color-ink);margin-bottom:var(--space-2xs);font-weight:500}.prose .callout>*+*{margin-top:.6em}.prose .callout-warning,.prose .callout-danger{border-left-color:var(--color-accent)}.prose .callout-warning .callout-title,.prose .callout-danger .callout-title{color:var(--color-accent-2)}.prose details{border:var(--rule-hair) solid var(--color-rule);background:var(--color-sheet);padding:var(--space-xs) var(--space-md);margin:1.5em 0}.prose details summary{cursor:pointer;font-family:var(--font-ui);font-size:.875rem}.prose details[open] summary{margin-bottom:var(--space-sm)}.prose .friend-list{gap:0 var(--space-xl);margin-top:var(--space-md);grid-template-columns:repeat(auto-fill,minmax(15rem,1fr));padding:0;list-style:none;display:grid}.prose .friend-list li{padding:var(--space-sm) 0;border-bottom:var(--rule-hair) solid var(--color-rule);margin:0}.prose .friend-list a{font-family:var(--font-body);font-size:1rem}.prose .friend-list p{font-family:var(--font-ui);color:var(--color-muted);margin-top:1px;font-size:.75rem;line-height:1.6}.prose .missing-media{padding:0 var(--space-2xs);border:var(--rule-hair) dashed var(--color-rule-2);font-family:var(--font-ui);font-size:var(--text-xs);color:var(--color-muted);display:inline-block}.article-head{padding-top:var(--space-2xl)}.article-head__top{justify-content:space-between;align-items:baseline;gap:var(--space-xs) var(--space-md);font-family:var(--font-ui);font-size:var(--text-xs);color:var(--color-muted);flex-wrap:wrap;display:flex}.article-head__top a{color:var(--color-muted);text-decoration:none}.article-head__top a:hover{color:var(--color-ink)}.article-head h1{margin-top:var(--space-md);max-width:22em;font-size:clamp(1.875rem,2.2vw + 1.1rem,2.875rem);font-weight:500;line-height:1.24}.article-meta{align-items:baseline;gap:var(--space-2xs) var(--space-md);margin:var(--space-md) 0 0;font-family:var(--font-ui);font-size:var(--text-xs);color:var(--color-muted);flex-wrap:wrap;display:flex}.article-meta>div{align-items:baseline;gap:var(--space-2xs);display:flex}.article-meta dd{color:var(--color-ink-2);margin:0}.article-note{margin-top:var(--space-md);padding:var(--space-sm) var(--space-md);border-left:2px solid var(--color-rule-2);background:var(--color-paper-2);max-width:56ch;font-size:.875rem;line-height:1.65}.article-note p{max-width:none}.article-note a{color:var(--color-ink)}.article-head .tag-row{margin-top:var(--space-md)}.article-grid{gap:clamp(var(--space-xl), 5vw, var(--space-4xl));padding-top:var(--space-2xl);grid-template-columns:minmax(0,13rem) minmax(0,1fr);align-items:start;display:grid}.article-body{min-width:0}.article-grid--page{padding-top:var(--space-xl);grid-template-columns:minmax(0,1fr)}.article-grid--page .article-body{max-width:var(--measure)}.toc{top:var(--space-lg);font-family:var(--font-ui);font-size:var(--text-xs);max-height:calc(100dvh - 3rem);line-height:1.6;position:sticky;overflow-y:auto}.toc__label{margin-bottom:var(--space-xs);color:var(--color-muted)}.toc ol{border-left:var(--rule-hair) solid var(--color-rule);margin:0;padding:0;list-style:none}.toc li{margin:0}.toc a{padding:var(--space-3xs) 0 var(--space-3xs) var(--space-sm);color:var(--color-muted);border-left:1px solid #0000;margin-left:-1px;text-decoration:none;display:block}.toc a:hover{color:var(--color-ink)}.toc a[aria-current]{border-left-color:var(--color-accent);color:var(--color-ink)}.toc .lvl-3 a{padding-left:var(--space-lg)}.toc .lvl-4{display:none}@media (width<=62rem){.article-grid{gap:var(--space-lg);padding-top:var(--space-lg);grid-template-columns:minmax(0,1fr)}.toc{max-height:none;padding-bottom:var(--space-sm);border-bottom:var(--rule-hair) solid var(--color-rule);order:-1;position:static}.toc ol{gap:0 var(--space-md);border-left:0;flex-wrap:wrap;display:flex}.toc .lvl-3,.toc .lvl-4{display:none}.toc a{padding:var(--space-3xs) 0;border-left:0}}.article-foot{gap:var(--space-lg);margin-top:var(--space-3xl);padding-top:var(--space-md);border-top:var(--rule-hair) solid var(--color-rule);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.article-foot a{text-decoration:none}.article-foot .dir{font-family:var(--font-ui);font-size:var(--text-xs);color:var(--color-muted);margin-bottom:var(--space-3xs);display:block}.article-foot .t{font-family:var(--font-body);font-size:1rem;line-height:1.4}.article-foot a:hover .t{color:var(--color-accent-2)}.article-foot .next{text-align:right}@media (width<=40rem){.article-foot{grid-template-columns:1fr}.article-foot .next{text-align:left}}.prose .anchor-link{font-family:var(--font-ui);color:var(--color-rule-2);opacity:0;margin-left:.3em;font-size:.7em;text-decoration:none}.prose h2:hover .anchor-link,.prose h3:hover .anchor-link,.prose .anchor-link:focus-visible{opacity:1}.index-head{padding-top:var(--space-2xl);padding-bottom:var(--space-lg)}.index-head h1{margin-top:var(--space-xs);font-size:clamp(1.875rem,2vw + 1rem,2.5rem);line-height:1.2}.index-head p{margin-top:var(--space-sm);max-width:52ch;color:var(--color-ink-2);font-size:1rem;line-height:1.7}.notfound{padding-top:var(--space-3xl)}.notfound h1{max-width:none}.notfound p{margin-top:var(--space-md)}html,body{overflow-x:clip}
