@font-face{font-family:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;font-stretch:62% 125%;src:url(/_astro/archivo-vietnamese-wdth-normal.rJmnGBSt.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:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;font-stretch:62% 125%;src:url(/_astro/archivo-latin-ext-wdth-normal.7khWdh9v.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:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;font-stretch:62% 125%;src:url(/_astro/archivo-latin-wdth-normal.DY7AcnAa.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:Martian Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;font-stretch:75% 112.5%;src:url(/_astro/martian-mono-cyrillic-ext-wdth-normal.BFx_pHPN.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:Martian Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;font-stretch:75% 112.5%;src:url(/_astro/martian-mono-cyrillic-wdth-normal.Dgr-UBxV.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Martian Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;font-stretch:75% 112.5%;src:url(/_astro/martian-mono-latin-ext-wdth-normal.DeTdBbNh.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:Martian Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;font-stretch:75% 112.5%;src:url(/_astro/martian-mono-latin-wdth-normal.1TqSgyfh.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{color-scheme:light;--c-bg:oklch(97.2% 0 0);--c-surface:oklch(99.5% 0 0);--c-sunken:oklch(94.5% 0 0);--c-ink:oklch(20.5% 0 0);--c-ink-2:oklch(35% 0 0);--c-muted:oklch(48% 0 0);--c-line:oklch(20.5% 0 0/.12);--c-line-2:oklch(20.5% 0 0/.26);--c-line-3:oklch(20.5% 0 0/.5);--c-signal:oklch(84.5% .165 88);--c-signal-line:oklch(74% .16 74);--c-on-signal:oklch(20% .02 80);--c-accent-text:var(--c-ink);--c-mark:oklch(84.5% .165 88/.4);--c-plate:oklch(21.5% 0 0);--c-plate-line:oklch(100% 0 0/.075);--c-plate-ink:oklch(90% 0 0);--c-plate-muted:oklch(68% 0 0);--font-sans:"Archivo Variable", "PingFang SC", "HarmonyOS Sans SC", "MiSans", "Hiragino Sans GB", "Noto Sans SC", "Noto Sans CJK SC", "Source Han Sans SC", "Microsoft YaHei", system-ui, sans-serif;--font-mono:"Martian Mono Variable", ui-monospace, "SFMono-Regular", Menlo, Consolas, "PingFang SC", "Microsoft YaHei", monospace;--wdth-display:125%;--wdth-wide:112%;--wdth-mono:87.5%;--text-2xs:.6875rem;--text-xs:.75rem;--text-sm:.875rem;--text-base:1.0625rem;--text-lead:clamp(1.125rem, 1.04rem + .38vw, 1.3125rem);--text-h3:1.3125rem;--text-h2:clamp(1.5rem, 1.18rem + 1.1vw, 2rem);--text-h1:clamp(2rem, 1.3rem + 2.7vw, 3.25rem);--text-display:clamp(2.75rem, 1.4rem + 5.6vw, 5.75rem);--sp-1:.25rem;--sp-2:.5rem;--sp-3:.75rem;--sp-4:1rem;--sp-5:1.5rem;--sp-6:2rem;--sp-7:3rem;--sp-8:4rem;--sp-9:6rem;--sp-10:8rem;--gutter:clamp(1.25rem, .55rem + 3vw, 3rem);--page-max:78rem;--measure:68ch;--header-h:4rem;--cut-s:6px;--cut-m:12px;--cut-l:22px;--ease-out:cubic-bezier(.16, 1, .3, 1);--ease-in-out:cubic-bezier(.76, 0, .24, 1);--dur-1:.12s;--dur-2:.2s;--dur-3:.32s;--z-header:10;--z-shutter:50}[data-theme=dark]{color-scheme:dark;--c-bg:oklch(18% 0 0);--c-surface:oklch(21.5% 0 0);--c-sunken:oklch(15.5% 0 0);--c-ink:oklch(93.5% 0 0);--c-ink-2:oklch(82% 0 0);--c-muted:oklch(70% 0 0);--c-line:oklch(93.5% 0 0/.1);--c-line-2:oklch(93.5% 0 0/.22);--c-line-3:oklch(93.5% 0 0/.46);--c-signal-line:oklch(84.5% .165 88);--c-accent-text:var(--c-signal);--c-mark:oklch(84.5% .165 88/.32);--c-plate:oklch(25% 0 0)}@media (prefers-color-scheme:dark){:root:not([data-theme]){color-scheme:dark;--c-bg:oklch(18% 0 0);--c-surface:oklch(21.5% 0 0);--c-sunken:oklch(15.5% 0 0);--c-ink:oklch(93.5% 0 0);--c-ink-2:oklch(82% 0 0);--c-muted:oklch(70% 0 0);--c-line:oklch(93.5% 0 0/.1);--c-line-2:oklch(93.5% 0 0/.22);--c-line-3:oklch(93.5% 0 0/.46);--c-signal-line:oklch(84.5% .165 88);--c-accent-text:var(--c-signal);--c-mark:oklch(84.5% .165 88/.32);--c-plate:oklch(25% 0 0)}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:calc(var(--header-h) + var(--sp-5));background:var(--c-bg)}body{background:var(--c-bg);min-height:100dvh;color:var(--c-ink);font-family:var(--font-sans);font-size:var(--text-base);font-kerning:normal;font-optical-sizing:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;flex-direction:column;margin:0;line-height:1.65;display:flex}[data-theme=dark] body{letter-spacing:.005em;line-height:1.72}html:lang(zh-CN) body{letter-spacing:.01em;line-height:1.85}main{flex:1}img,svg,video{max-width:100%;display:block}img{height:auto}a{color:inherit}button{font:inherit;color:inherit}h1,h2,h3,h4{text-wrap:balance}p,li{text-wrap:pretty}::selection{background:var(--c-mark);color:var(--c-ink)}:focus-visible{outline:2px solid var(--c-ink);outline-offset:3px;border-radius:0}.container{width:min(100% - 2 * var(--gutter), var(--page-max));margin-inline:auto}.visually-hidden{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;position:absolute!important}.skip-link{top:var(--sp-2);left:var(--sp-2);z-index:calc(var(--z-shutter) + 1);padding:var(--sp-2) var(--sp-4);background:var(--c-signal);color:var(--c-on-signal);font-family:var(--font-mono);font-size:var(--text-sm);text-decoration:none;position:absolute;transform:translateY(-200%)}.skip-link:focus-visible{transform:none}.label{font-family:var(--font-mono);font-stretch:var(--wdth-mono);font-size:var(--text-xs);letter-spacing:.06em;text-transform:uppercase;color:var(--c-muted);font-weight:450;line-height:1.4}html:lang(zh-CN) .label{letter-spacing:.08em;font-size:.8125rem}.display{font-family:var(--font-sans);font-stretch:var(--wdth-display);letter-spacing:0;font-weight:760;line-height:.98}.lead{font-size:var(--text-lead);color:var(--c-ink-2);max-width:44ch;line-height:1.55}html:lang(zh-CN) .lead{max-width:34em;line-height:1.75}.num{font-variant-numeric:tabular-nums}.frame{isolation:isolate;--cut:var(--cut-m);--frame:var(--c-line-2);position:relative}.frame:before{content:"";z-index:-1;pointer-events:none;background:linear-gradient(var(--frame) 0 0) top right / calc(100% - var(--cut)) 1px no-repeat, linear-gradient(var(--frame) 0 0) top right / 1px calc(100% - var(--cut)) no-repeat, linear-gradient(var(--frame) 0 0) bottom left / calc(100% - var(--cut)) 1px no-repeat, linear-gradient(var(--frame) 0 0) bottom left / 1px calc(100% - var(--cut)) no-repeat, linear-gradient(to bottom right, transparent calc(50% - .6px), var(--frame) calc(50% - .6px) calc(50% + .6px), transparent calc(50% + .6px)) top left / var(--cut) var(--cut) no-repeat, linear-gradient(to bottom right, transparent calc(50% - .6px), var(--frame) calc(50% - .6px) calc(50% + .6px), transparent calc(50% + .6px)) bottom right / var(--cut) var(--cut) no-repeat;position:absolute;inset:0}.plate:after{content:"";z-index:-2;pointer-events:none;background:var(--plate-fill,var(--c-surface));clip-path:polygon(var(--cut) 0, 100% 0, 100% calc(100% - var(--cut)), calc(100% - var(--cut)) 100%, 0 100%, 0 var(--cut));position:absolute;inset:0}.ticks{--tick:10px;--tick-c:var(--c-line-3);background:linear-gradient(var(--tick-c) 0 0) top left / var(--tick) 1px, linear-gradient(var(--tick-c) 0 0) top left / 1px var(--tick), linear-gradient(var(--tick-c) 0 0) top right / var(--tick) 1px, linear-gradient(var(--tick-c) 0 0) top right / 1px var(--tick), linear-gradient(var(--tick-c) 0 0) bottom left / var(--tick) 1px, linear-gradient(var(--tick-c) 0 0) bottom left / 1px var(--tick), linear-gradient(var(--tick-c) 0 0) bottom right / var(--tick) 1px, linear-gradient(var(--tick-c) 0 0) bottom right / 1px var(--tick);background-repeat:no-repeat}.sig{background:var(--c-signal);clip-path:polygon(0 0,calc(100% - 4px) 0,100% 100%,4px 100%);flex:none;width:1.5rem;height:.4375rem;display:inline-block}.rule{background:linear-gradient(to right, var(--c-signal-line) 0 2.5rem, var(--c-line-2) 2.5rem);border:0;height:1px;margin:0}.ruler{background:linear-gradient(var(--c-line-2) 0 0) left bottom / 100% 1px no-repeat, linear-gradient(to right, var(--c-line-3) 0 1px, transparent 1px) left bottom / 64px 8px repeat-x, linear-gradient(to right, var(--c-line-2) 0 1px, transparent 1px) left bottom / 16px 4px repeat-x;height:8px}.link{text-decoration-line:underline;text-decoration-thickness:1px;text-decoration-color:var(--c-line-3);text-underline-offset:.22em;transition:text-decoration-color var(--dur-2), color var(--dur-2)}.link:hover{text-decoration-color:var(--c-signal-line);text-decoration-thickness:2px}.arrow-link{align-items:center;gap:var(--sp-2);min-height:2.75rem;color:var(--c-ink);text-decoration:none;display:inline-flex}.arrow-link .arrow{transition:transform var(--dur-2) var(--ease-out)}.arrow-link:hover .arrow{transform:translate(4px)}.arrow-link:hover .label,.arrow-link:hover{color:var(--c-ink)}.btn{isolation:isolate;justify-content:center;align-items:center;gap:var(--sp-2);min-height:2.75rem;color:var(--c-on-signal);font-family:var(--font-mono);font-stretch:var(--wdth-mono);font-size:var(--text-xs);letter-spacing:.07em;text-transform:uppercase;cursor:pointer;--cut:var(--cut-s);background:0 0;border:0;padding:.6rem 1.1rem;font-weight:560;text-decoration:none;display:inline-flex;position:relative}.btn:after{content:"";z-index:-1;background:var(--c-signal);clip-path:polygon(var(--cut) 0, 100% 0, 100% calc(100% - var(--cut)), calc(100% - var(--cut)) 100%, 0 100%, 0 var(--cut));transition:background-color var(--dur-2);position:absolute;inset:0}.btn:hover{color:var(--c-bg)}.btn:hover:after{background:var(--c-ink)}.btn:active{transform:translateY(1px)}.btn--ghost{color:var(--c-ink)}.btn--ghost:after{background:0 0}.btn--ghost:hover{color:var(--c-ink);--frame:var(--c-ink)}.btn--ghost:hover:after{background:var(--c-sunken)}.tag-list{gap:var(--sp-2);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.tag{--cut:var(--cut-s);--frame:var(--c-line-2);--plate-fill:transparent;min-height:1.75rem;color:var(--c-ink-2);font-family:var(--font-mono);font-stretch:var(--wdth-mono);font-size:var(--text-xs);letter-spacing:.03em;white-space:nowrap;transition:color var(--dur-2);align-items:center;gap:.3em;padding:.2rem .55rem;text-decoration:none;display:inline-flex}.tag .hash{color:var(--c-muted)}a.tag:hover{color:var(--c-ink);--frame:var(--c-ink)}.tag[aria-current=page]{color:var(--c-on-signal);--frame:transparent;--plate-fill:var(--c-signal)}.tag[aria-current=page] .hash{color:inherit}.page-head{padding-block:clamp(var(--sp-7), 6vw, var(--sp-9)) var(--sp-6)}.page-head__kicker{align-items:center;gap:var(--sp-3);margin:0 0 var(--sp-4);display:flex}.page-head__title{font-size:var(--text-h1);font-stretch:var(--wdth-wide);letter-spacing:-.005em;margin:0;font-weight:720;line-height:1.05}html:lang(zh-CN) .page-head__title{letter-spacing:.02em;font-weight:700;line-height:1.2}.page-head__lead{margin:var(--sp-4) 0 0}.page-head .rule{margin-top:var(--sp-6)}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
