.astro-route-announcer{position:absolute;left:0;top:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;white-space:nowrap;width:1px;height:1px}@font-face{font-family:Newsreader Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/newsreader-vietnamese-wght-normal.Czsa-EzN.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,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-wght-normal.C-3rgBeH.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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-wght-normal.CCVVNp6i.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Maple Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/maple-mono-latin-400-normal.WIx2rg0p.woff2) format("woff2"),url(/_astro/maple-mono-latin-400-normal.OcfaEJ46.woff) format("woff")}@font-face{font-family:"Libertinus Serif";font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/libertinus-serif-latin-400-normal.UuLrF836.woff2) format("woff2"),url(/_astro/libertinus-serif-latin-400-normal.23LEb6vZ.woff) format("woff")}@font-face{font-family:"Libertinus Serif";font-style:italic;font-display:swap;font-weight:400;src:url(/_astro/libertinus-serif-latin-400-italic.B2pw30VD.woff2) format("woff2"),url(/_astro/libertinus-serif-latin-400-italic.Yo4WIJgi.woff) format("woff")}@font-face{font-family:"Libertinus Serif";font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/libertinus-serif-latin-600-normal.CHKIencd.woff2) format("woff2"),url(/_astro/libertinus-serif-latin-600-normal.BS-h1Jzn.woff) format("woff")}@font-face{font-family:"Libertinus Serif";font-style:italic;font-display:swap;font-weight:600;src:url(/_astro/libertinus-serif-latin-600-italic.DgZds2gh.woff2) format("woff2"),url(/_astro/libertinus-serif-latin-600-italic.D1CByYOi.woff) format("woff")}@font-face{font-family:"Libertinus Serif";font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/libertinus-serif-latin-700-normal.DgcGlGzg.woff2) format("woff2"),url(/_astro/libertinus-serif-latin-700-normal.DtCYrCCq.woff) format("woff")}@font-face{font-family:"Libertinus Serif";font-style:italic;font-display:swap;font-weight:700;src:url(/_astro/libertinus-serif-latin-700-italic.lPpydvp6.woff2) format("woff2"),url(/_astro/libertinus-serif-latin-700-italic.IeNutqWi.woff) format("woff")}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/space-grotesk-vietnamese-400-normal.B7xT_GF5.woff2) format("woff2"),url(/_astro/space-grotesk-vietnamese-400-normal.BIWiOVfw.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/space-grotesk-latin-ext-400-normal.CfP_5XZW.woff2) format("woff2"),url(/_astro/space-grotesk-latin-ext-400-normal.DRPE3kg4.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:Space Grotesk;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/space-grotesk-latin-400-normal.CJ-V5oYT.woff2) format("woff2"),url(/_astro/space-grotesk-latin-400-normal.BnQMeOim.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/space-grotesk-vietnamese-500-normal.BmEvtly_.woff2) format("woff2"),url(/_astro/space-grotesk-vietnamese-500-normal.BTqKIpxg.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/space-grotesk-latin-ext-500-normal.DUe3BAxM.woff2) format("woff2"),url(/_astro/space-grotesk-latin-ext-500-normal.3dgZTiw9.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:Space Grotesk;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/space-grotesk-latin-500-normal.lFbtlQH6.woff2) format("woff2"),url(/_astro/space-grotesk-latin-500-normal.CNSSEhBt.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/space-grotesk-vietnamese-700-normal.DMty7AZE.woff2) format("woff2"),url(/_astro/space-grotesk-vietnamese-700-normal.Duxec5Rn.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/space-grotesk-latin-ext-700-normal.BQnZhY3m.woff2) format("woff2"),url(/_astro/space-grotesk-latin-ext-700-normal.HVCqSBdx.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:Space Grotesk;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/space-grotesk-latin-700-normal.RjhwGPKo.woff2) format("woff2"),url(/_astro/space-grotesk-latin-700-normal.CwsQ-cCU.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@keyframes astroFadeInOut{0%{opacity:1}to{opacity:0}}@keyframes astroFadeIn{0%{opacity:0;mix-blend-mode:plus-lighter}to{opacity:1;mix-blend-mode:plus-lighter}}@keyframes astroFadeOut{0%{opacity:1;mix-blend-mode:plus-lighter}to{opacity:0;mix-blend-mode:plus-lighter}}@keyframes astroSlideFromRight{0%{transform:translate(100%)}}@keyframes astroSlideFromLeft{0%{transform:translate(-100%)}}@keyframes astroSlideToRight{to{transform:translate(100%)}}@keyframes astroSlideToLeft{to{transform:translate(-100%)}}@media(prefers-reduced-motion){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}[data-astro-transition-scope]{animation:none!important}}@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0;--tw-duration:initial;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0}}}@layer theme{:root,:host{--font-sans:"Space Grotesk", "PingFang SC", "Microsoft YaHei", sans-serif;--font-serif:"Newsreader", "Source Han Serif SC", "Songti SC", serif;--font-mono:"Maple Mono", "Cascadia Code", "SFMono-Regular", monospace;--spacing:.25rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--container-6xl:72rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--text-5xl:3rem;--text-5xl--line-height:1;--font-weight-medium:500;--font-weight-semibold:600;--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:"Space Grotesk", "PingFang SC", "Microsoft YaHei", sans-serif;--default-mono-font-family:"Maple Mono", "Cascadia Code", "SFMono-Regular", monospace}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){*{outline-color:color-mix(in oklab,var(--ring) 50%,transparent)}}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background-color:var(--background);min-height:100vh;color:var(--foreground);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-image:linear-gradient(#fffffff0,#f4f4f2fa);font-family:Space Grotesk,PingFang SC,Microsoft YaHei,sans-serif}body:before{content:"";pointer-events:none;background:radial-gradient(circle at top,#00000009,#0000 42%),linear-gradient(#ffffff80,#fff0);position:fixed;inset:0}img{max-width:100%;display:block}a{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}code,pre,kbd{font-family:var(--font-mono)}pre{overflow-x:auto}::selection{color:#111111f5;background:#1111111f}}@layer components{.page-shell{width:100%;max-width:var(--container-6xl);padding-inline:calc(var(--spacing) * 4);margin-inline:auto}@media(min-width:40rem){.page-shell{padding-inline:calc(var(--spacing) * 6)}}@media(min-width:64rem){.page-shell{padding-inline:calc(var(--spacing) * 8)}}.eyebrow{--tw-font-weight:var(--font-weight-medium);font-size:.7rem;font-weight:var(--font-weight-medium);--tw-tracking:.28em;letter-spacing:.28em;color:var(--muted-foreground);text-transform:uppercase}.surface{border-radius:var(--box-radius);border-style:var(--tw-border-style);background-color:var(--card);border-width:1px}@supports (color:color-mix(in lab,red,red)){.surface{background-color:color-mix(in oklab,var(--card) 92%,transparent)}}.surface{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);box-shadow:0 20px 80px #0808080a}.page-intro{max-width:var(--container-3xl)}:where(.page-intro>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}.page-intro__title{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);--tw-tracking:-.08em;letter-spacing:-.08em}@media(min-width:40rem){.page-intro__title{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}}@media(min-width:64rem){.page-intro__title{font-size:3.5rem}}.page-intro__lead{max-width:var(--container-3xl);font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height));--tw-leading:calc(var(--spacing) * 8);line-height:calc(var(--spacing) * 8);color:var(--muted-foreground)}@media(min-width:40rem){.page-intro__lead{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}}.meta-row{align-items:center;column-gap:calc(var(--spacing) * 4);row-gap:calc(var(--spacing) * 2);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--muted-foreground);flex-wrap:wrap;display:flex}.tag-list,.toc ol{margin:calc(var(--spacing) * 0);padding:calc(var(--spacing) * 0);list-style-type:none}.tag-list{gap:calc(var(--spacing) * 2);flex-wrap:wrap;display:flex}:where(.section-stack>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}.entry-card{border-style:var(--tw-border-style);background-color:var(--card);border-width:1px;position:relative}@supports (color:color-mix(in lab,red,red)){.entry-card{background-color:color-mix(in oklab,var(--card) 90%,transparent)}}.entry-card{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));--tw-duration:.2s;transition-duration:.2s}@media(hover:hover){.entry-card:hover{--tw-translate-y:calc(var(--spacing) * -.5);translate:var(--tw-translate-x) var(--tw-translate-y);background-color:var(--card)}}.entry-card{box-shadow:0 16px 44px #0f0f0f08}.entry-card__title{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);--tw-tracking:-.05em;letter-spacing:-.05em;color:var(--foreground)}@media(min-width:40rem){.entry-card__title{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}}.entry-card__title a{color:var(--foreground)}.entry-card__description,.meta-line{margin:calc(var(--spacing) * 0)}.entry-card__description{max-width:var(--container-3xl);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:calc(var(--spacing) * 7);line-height:calc(var(--spacing) * 7);color:var(--muted-foreground)}@media(min-width:40rem){.entry-card__description{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}}.meta-line{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-tracking:.22em;letter-spacing:.22em;color:var(--muted-foreground);text-transform:uppercase}.stretched-link:after{content:"";position:absolute;inset:0}.article-layout{gap:calc(var(--spacing) * 6);display:grid}@media(min-width:64rem){.article-layout{grid-template-columns:minmax(0,1fr) 17rem;align-items:flex-start}.article-sidebar{top:calc(var(--spacing) * 32);position:sticky}}.toc{border-radius:var(--box-radius);border-style:var(--tw-border-style);background-color:var(--card);border-width:1px}@supports (color:color-mix(in lab,red,red)){.toc{background-color:color-mix(in oklab,var(--card) 92%,transparent)}}.toc{padding:calc(var(--spacing) * 5)}.toc__title{margin:calc(var(--spacing) * 0);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height));--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium);--tw-tracking:.24em;letter-spacing:.24em;color:var(--muted-foreground);text-transform:uppercase}.toc ol{margin-top:calc(var(--spacing) * 4);border-left-style:var(--tw-border-style);border-left-width:1px;border-color:var(--border)}@supports (color:color-mix(in lab,red,red)){.toc ol{border-color:color-mix(in oklab,var(--border) 70%,transparent)}}.toc ol{padding-left:calc(var(--spacing) * 4)}.toc li+li{margin-top:calc(var(--spacing) * 3)}.toc__group{border-radius:calc(var(--radius) * 1.2);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.toc summary{list-style-type:none}.toc summary::-webkit-details-marker{display:none}.toc__summary{cursor:pointer;align-items:center;gap:calc(var(--spacing) * 2);border-radius:var(--radius);padding-inline:calc(var(--spacing) * 2);padding-block:calc(var(--spacing) * 1);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6);color:var(--muted-foreground);display:flex}@media(hover:hover){.toc__summary:hover{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.toc__summary:hover{background-color:color-mix(in oklab,var(--muted) 50%,transparent)}}.toc__summary:hover{color:var(--foreground)}}.toc__group[open]>.toc__summary{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.toc__group[open]>.toc__summary{background-color:color-mix(in oklab,var(--muted) 50%,transparent)}}.toc__group[open]>.toc__summary{color:var(--foreground)}.toc__chevron{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height));--tw-leading:1;transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration));line-height:1;display:inline-block}.toc__group[open] .toc__chevron{transform:rotate(90deg)}.toc__parent,.toc li>a{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6);color:var(--muted-foreground)}@media(hover:hover){:is(.toc__parent,.toc li>a):hover{color:var(--foreground)}}.toc__group[open] .toc__parent{color:var(--foreground)}.toc__nested{padding-left:calc(var(--spacing) * 6)}.toc details[open]>.toc__nested{margin-top:calc(var(--spacing) * 3)}.article-prose{border-radius:var(--box-radius);border-style:var(--tw-border-style);background-color:var(--card);border-width:1px}@supports (color:color-mix(in lab,red,red)){.article-prose{background-color:color-mix(in oklab,var(--card) 92%,transparent)}}.article-prose{padding-inline:calc(var(--spacing) * 6);padding-block:calc(var(--spacing) * 8)}@media(min-width:40rem){.article-prose{padding-inline:calc(var(--spacing) * 10);padding-block:calc(var(--spacing) * 12)}}.article-prose{box-shadow:0 20px 80px #0808080a}.article-prose>:first-child{margin-top:0}.article-prose>:last-child{margin-bottom:0}.article-prose h1,.article-prose h2,.article-prose h3,.article-prose h4{color:var(--foreground);font-family:var(--font-sans);letter-spacing:-.05em;font-weight:600;line-height:1.1}.article-prose h1{margin-top:0;font-size:clamp(1.3rem,2.4vw,1.8rem)}.article-prose h2{margin-top:2.5rem;font-size:clamp(1.2rem,2vw,1.6rem)}.article-prose h3{margin-top:1.75rem;font-size:clamp(1.15rem,1.6vw,1.35rem)}.article-prose h4{margin-top:1.5rem;font-size:1.05rem}.article-prose p,.article-prose ul,.article-prose ol,.article-prose blockquote,.article-prose pre,.article-prose table,.article-prose .latex-svg,.article-prose mjx-container[display]{margin:1rem 0}.article-prose p,.article-prose li{--tw-leading:calc(var(--spacing) * 8);font-size:1.02rem;line-height:calc(var(--spacing) * 8);color:var(--muted-foreground)}.article-prose ul,.article-prose ol{padding-left:1.4rem}.article-prose li::marker{color:#1111117a}.article-prose a{color:var(--foreground);text-decoration-line:underline;-webkit-text-decoration-color:var(--border);text-decoration-color:var(--border);text-underline-offset:4px}@media(hover:hover){.article-prose a:hover{-webkit-text-decoration-color:var(--foreground);text-decoration-color:var(--foreground)}}.article-prose blockquote{border-style:var(--tw-border-style);border-width:1px;border-color:var(--border);border-radius:1.5rem}@supports (color:color-mix(in lab,red,red)){.article-prose blockquote{border-color:color-mix(in oklab,var(--border) 70%,transparent)}}.article-prose blockquote{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.article-prose blockquote{background-color:color-mix(in oklab,var(--muted) 55%,transparent)}}.article-prose blockquote{padding-inline:calc(var(--spacing) * 5);padding-block:calc(var(--spacing) * 4)}.article-prose pre{border-style:var(--tw-border-style);border-width:1px;border-color:var(--border);border-radius:1.5rem}@supports (color:color-mix(in lab,red,red)){.article-prose pre{border-color:color-mix(in oklab,var(--border) 70%,transparent)}}.article-prose pre{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.article-prose pre{background-color:color-mix(in oklab,var(--muted) 70%,transparent)}}.article-prose pre{padding:calc(var(--spacing) * 4)}.article-prose code:not(pre code){border-radius:calc(var(--radius) * .8);background-color:var(--muted);padding-inline:calc(var(--spacing) * 1.5);padding-block:calc(var(--spacing) * .5);color:var(--foreground);font-size:.95em}.article-prose hr{margin-block:calc(var(--spacing) * 8);border-style:var(--tw-border-style);border-width:0;border-top-style:var(--tw-border-style);border-top-width:1px;border-color:var(--border)}.article-prose table{border-collapse:collapse;width:100%}.article-prose th,.article-prose td{border-style:var(--tw-border-style);border-width:1px;border-color:var(--border);padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 3);text-align:left}.tool-landing{--tool-bg:#f2f1ed;--tool-surface:#e6e5e0;--tool-surface-soft:#ebeae5;--tool-surface-light:#f7f7f4;--tool-ink:#26251e;--tool-muted:#26251e9e;--tool-border:#26251e1a;--tool-border-strong:#26251e33;--tool-accent:#f54e00;--tool-hover:#cf2d56;--tool-shadow:#00000024 0 28px 70px, #0000001a 0 14px 32px;isolation:isolate;position:relative}:where(.tool-landing>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 10) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 10) * calc(1 - var(--tw-space-y-reverse)))}@media(min-width:64rem){:where(.tool-landing>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 12) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 12) * calc(1 - var(--tw-space-y-reverse)))}}.tool-landing{color:var(--tool-ink)}.tool-landing:before{content:"";z-index:-1;background:radial-gradient(circle at top center,#ffffff80,transparent 40%),linear-gradient(180deg,#ffffff57,#fff0),var(--tool-bg);border-top:1px solid #26251e14;border-bottom:1px solid #26251e14;position:absolute;inset:-2rem calc(50% - 50vw) -3rem}.tool-hero{gap:calc(var(--spacing) * 8);display:grid}@media(min-width:64rem){.tool-hero{grid-template-columns:minmax(0,1fr) minmax(320px,470px);align-items:center}}:where(.tool-hero__copy>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}.tool-hero__chips,.tool-tag-row,.tool-actions{margin:calc(var(--spacing) * 0);align-items:center;gap:calc(var(--spacing) * 2);padding:calc(var(--spacing) * 0);flex-wrap:wrap;list-style-type:none;display:flex}.tool-kicker{font-family:var(--font-sans);letter-spacing:.18em;text-transform:uppercase;color:var(--tool-muted);margin:0;font-size:.72rem;font-weight:400}.tool-hero__title{max-width:10ch;font-family:var(--font-sans);letter-spacing:-.11em;color:var(--tool-ink);margin:0;font-size:clamp(3rem,8vw,4.8rem);font-weight:400;line-height:.96}.tool-hero__lead{max-width:40rem;font-family:var(--font-serif);color:var(--tool-muted);margin:0;font-size:clamp(1.08rem,1.6vw,1.22rem);line-height:1.65}.tool-pill{border:1px solid var(--tool-border);background:var(--tool-surface);min-height:2rem;font-family:var(--font-sans);letter-spacing:.01em;color:#26251ed1;border-radius:9999px;align-items:center;padding:.28rem .75rem .3rem;font-size:.78rem;font-weight:400;display:inline-flex}.tool-pill--strong{background:var(--tool-surface-soft)}.tool-pill--tag{color:#26251eb8;background:#e1e0db}.tool-button{background:var(--tool-surface-soft);min-height:2.75rem;color:var(--tool-ink);font-family:var(--font-sans);letter-spacing:-.01em;border:1px solid #0000;border-radius:8px;justify-content:center;align-items:center;padding:.66rem .9rem .66rem 1rem;font-size:.9rem;font-weight:400;line-height:1;text-decoration:none;transition:color .15s,background-color .15s,box-shadow .2s,transform .2s;display:inline-flex;box-shadow:0 4px 12px #00000014}.tool-button:hover{color:var(--tool-hover);transform:translateY(-1px);box-shadow:0 10px 22px #0000001a}.tool-button--ghost{border-color:var(--tool-border);color:#26251eb8;box-shadow:none;background:#26251e0f}.tool-actions__note{max-width:30rem;font-family:var(--font-serif);color:var(--tool-muted);margin:0;font-size:1rem;line-height:1.65}.tool-preview{position:relative}.tool-window{border:1px solid var(--tool-border);background:linear-gradient(180deg,#ffffff85,#ffffff2e),var(--tool-surface);box-shadow:var(--tool-shadow),#26251e14 0 0 0 1px;border-radius:18px;padding:.7rem}.tool-window__frame{background:#26251e;border:1px solid #ffffff14;border-radius:14px;overflow:hidden;box-shadow:inset 0 0 0 1px #ffffff0d}.tool-window__bar{align-items:center;gap:calc(var(--spacing) * 3);color:#ffffffa6;font-family:var(--font-mono);background:#ffffff0a;border-bottom:1px solid #ffffff14;margin:0;padding:.8rem 1rem;font-size:.76rem;display:flex}.tool-window__bar p,.tool-window__label,.tool-window__status,.tool-screen__eyebrow,.tool-screen__label,.tool-summary__label,.tool-outline__title,.tool-timeline__badge{font-family:var(--font-mono)}.tool-window__bar p,.tool-window__header,.tool-screen__header,.tool-screen__card,.tool-summary__card,.tool-timeline__item,.tool-outline__list{margin:0}.tool-window__dots{align-items:center;gap:calc(var(--spacing) * 1.5);display:flex}.tool-window__dots span{background:#ffffff3d;border-radius:9999px;width:.5rem;height:.5rem}.tool-window__dots span:first-child{background:#dfa88f}.tool-window__dots span:nth-child(2){background:#9fc9a2}.tool-window__dots span:last-child{background:#9fbbe0}.tool-window__body{gap:calc(var(--spacing) * 5);padding:1.15rem;display:grid}.tool-window__header{justify-content:space-between;align-items:center;gap:calc(var(--spacing) * 3);display:flex}.tool-window__label{letter-spacing:.08em;text-transform:uppercase;color:#ffffff94;font-size:.72rem}.tool-window__status{color:#ffffffb8;background:#ffffff0d;border:1px solid #ffffff1a;border-radius:9999px;align-items:center;padding:.25rem .65rem;font-size:.72rem;display:inline-flex}.tool-screen{gap:calc(var(--spacing) * 4);background:#ffffff0a;border:1px solid #ffffff14;border-radius:14px;padding:1rem;display:grid}.tool-screen__header{justify-content:space-between;align-items:flex-start;gap:calc(var(--spacing) * 4);display:flex}.tool-screen__eyebrow{letter-spacing:.08em;text-transform:uppercase;color:#ffffff8c;margin:0 0 .35rem;font-size:.72rem}.tool-screen__title{font-family:var(--font-sans);letter-spacing:-.06em;color:#fff;margin:0;font-size:1.4rem;font-weight:400;line-height:1.06}.tool-screen__badge{color:#ffffffb8;font-family:var(--font-sans);background:#ffffff0f;border:1px solid #ffffff14;border-radius:9999px;align-items:center;padding:.3rem .7rem;font-size:.78rem;display:inline-flex}.tool-screen__grid{gap:calc(var(--spacing) * 3);display:grid}@media(min-width:40rem){.tool-screen__grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.tool-screen__card{background:#ffffff0a;border:1px solid #ffffff14;border-radius:12px;padding:.85rem}.tool-screen__label{letter-spacing:.08em;text-transform:uppercase;color:#ffffff80;margin:0 0 .55rem;font-size:.72rem}.tool-screen__value{font-family:var(--font-sans);letter-spacing:-.02em;color:#ffffffeb;margin:0;font-size:.95rem;line-height:1.45}.tool-timeline{margin:calc(var(--spacing) * 0);gap:calc(var(--spacing) * 3);padding:calc(var(--spacing) * 0);list-style:none;display:grid}.tool-timeline__item{grid-template-columns:2rem minmax(0,1fr);align-items:start;gap:.8rem;display:grid}.tool-timeline__badge{color:#26251e;border-radius:9999px;place-items:center;width:2rem;height:2rem;font-size:.72rem;display:grid}.tool-timeline__item strong{font-family:var(--font-sans);letter-spacing:-.02em;color:#fff;margin:0;font-size:1rem;font-weight:400;display:block}.tool-timeline__item p{font-family:var(--font-serif);color:#ffffffa8;margin:.28rem 0 0;font-size:.98rem;line-height:1.55}.tool-timeline__item--thinking .tool-timeline__badge{background:#dfa88f}.tool-timeline__item--grep .tool-timeline__badge{background:#9fc9a2}.tool-timeline__item--read .tool-timeline__badge{background:#9fbbe0}.tool-timeline__item--edit .tool-timeline__badge{background:#c0a8dd}.tool-summary{gap:calc(var(--spacing) * 4);display:grid}@media(min-width:48rem){.tool-summary{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:80rem){.tool-summary{grid-template-columns:repeat(4,minmax(0,1fr))}}.tool-summary__card{border:1px solid var(--tool-border);background:#ffffff57;border-radius:10px;padding:1.1rem 1.15rem 1rem;box-shadow:0 0 16px #00000005}.tool-summary__label{letter-spacing:.08em;text-transform:uppercase;color:var(--tool-muted);font-size:.72rem}.tool-summary__value{font-family:var(--font-sans);letter-spacing:-.04em;color:var(--tool-ink);margin:.7rem 0 0;font-size:1.28rem;font-weight:400;line-height:1.15}.tool-summary__detail{font-family:var(--font-serif);color:var(--tool-muted);margin:.65rem 0 0;font-size:1rem;line-height:1.6}.tool-body{gap:calc(var(--spacing) * 6);display:grid}@media(min-width:80rem){.tool-body{grid-template-columns:minmax(0,1fr) 18rem;align-items:flex-start}.tool-body__side{top:calc(var(--spacing) * 28);position:sticky}}.tool-outline{border:1px solid var(--tool-border);background:#ffffff5c;border-radius:10px;padding:1.15rem;box-shadow:0 0 16px #00000005}.tool-outline__title{letter-spacing:.08em;text-transform:uppercase;color:var(--tool-muted);margin:0;font-size:.72rem}.tool-outline__list{margin-top:calc(var(--spacing) * 4);border-left-style:var(--tw-border-style);padding-left:calc(var(--spacing) * 0);border-left-width:1px;border-color:var(--tool-border);list-style-type:none}.tool-outline__list li+li{margin-top:.7rem}.tool-outline__list a{font-family:var(--font-sans);color:var(--tool-muted);padding-left:.85rem;font-size:.94rem;line-height:1.5;text-decoration:none;display:block}.tool-prose{border:1px solid var(--tool-border);background:#fff6;border-radius:14px;padding:1.4rem 1.35rem 1.8rem;box-shadow:0 0 16px #00000005}.tool-prose>:first-child{margin-top:0}.tool-prose>:last-child{margin-bottom:0}.tool-prose h2,.tool-prose h3,.tool-prose h4{font-family:var(--font-sans);color:var(--tool-ink);font-weight:400}.tool-prose h2{border-top:1px solid var(--tool-border);letter-spacing:-.07em;margin-top:3rem;padding-top:1.4rem;font-size:clamp(2rem,3vw,2.35rem);line-height:1.08}.tool-prose h2:first-of-type{border-top:0;margin-top:0;padding-top:0}.tool-prose h3{letter-spacing:-.04em;margin-top:1.9rem;font-size:1.35rem;line-height:1.15}.tool-prose h4{letter-spacing:-.02em;margin-top:1.5rem;font-size:1.08rem;line-height:1.2}.tool-prose p,.tool-prose li,.tool-prose blockquote{font-family:var(--font-serif);color:var(--tool-muted);font-size:1.08rem;line-height:1.75}.tool-prose ul,.tool-prose ol{margin:1rem 0;padding-left:1.4rem}.tool-prose li::marker{color:#26251e73}.tool-prose blockquote{border:1px solid var(--tool-border-strong);background:var(--tool-surface-light);border-radius:12px;margin:0 0 1.6rem;padding:1rem 1.1rem}.tool-prose a{color:var(--tool-accent);text-underline-offset:.22em;text-decoration-color:#26251e38}.tool-prose a:hover{color:var(--tool-hover)}.tool-prose code:not(pre code){color:var(--tool-ink);background:#26251e0f;border-radius:4px;padding:.1rem .45rem}.tool-prose pre{background:#26251e;border:1px solid #ffffff14;border-radius:14px;margin:1.15rem 0;padding:1rem;box-shadow:inset 0 0 0 1px #ffffff0a}.tool-prose pre code{color:#ffffffe6}.tool-prose hr{border:0;border-top:1px solid var(--tool-border);margin:2.5rem 0}.tool-landing .pager__item{border-color:var(--tool-border);background:#ffffff5c}.tool-landing .pager__item:hover{background:#ffffff7a}.pager{gap:calc(var(--spacing) * 4);padding-top:calc(var(--spacing) * 2);display:grid}@media(min-width:48rem){.pager{grid-template-columns:repeat(2,minmax(0,1fr))}}.pager__item{border-radius:var(--box-radius);border-style:var(--tw-border-style);background-color:var(--card);border-width:1px}@supports (color:color-mix(in lab,red,red)){.pager__item{background-color:color-mix(in oklab,var(--card) 92%,transparent)}}.pager__item{padding:calc(var(--spacing) * 5);color:var(--foreground);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media(hover:hover){.pager__item:hover{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.pager__item:hover{background-color:color-mix(in oklab,var(--muted) 40%,transparent)}}}.pager__item strong{margin-top:calc(var(--spacing) * 2);font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height));--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold);--tw-tracking:-.04em;letter-spacing:-.04em;color:var(--foreground);display:block}.pager__item--empty{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--muted-foreground)}.nav-scroll{scrollbar-width:none}.nav-scroll::-webkit-scrollbar{display:none}.language-switcher{isolation:isolate;position:relative;overflow:hidden}.language-switcher:after{content:"";z-index:2;pointer-events:none;border:1px solid var(--border);border-radius:inherit;position:absolute;inset:0}body:has(.note-shell):before{display:none}.note-shell{--note-page:#f5f1e8;--note-paper:#fffdf8;--note-ink:#17140f;--note-muted:#5f584d;--note-faint:#8b8173;--note-rule:#d8cfbf;--note-rule-strong:#b7aa95;--note-link:#5d321f;--font-note-body:"Libertinus Serif", "LXGW Neo ZhiSong CJK", var(--font-serif);--font-note-heading:"Libertinus Serif", "Dream Han Serif CN", "LXGW Neo ZhiSong CJK", var(--font-serif);--font-note-heading-weight:600;width:min(100%,82rem);color:var(--note-ink);margin-inline:auto;padding:9rem 1rem 5rem}.note-shell .page-intro{border-bottom:1px solid var(--note-rule);text-align:center;max-width:calc(820px + 16rem + clamp(1.75rem,4vw,3.5rem));margin:0 auto 2.5rem;padding-bottom:.65rem}.note-shell .note-back-link{width:fit-content;font-family:var(--font-sans);color:var(--note-faint);justify-content:flex-start;align-items:center;gap:.5rem;margin:0 auto 1.35rem 0;font-size:.92rem;text-decoration:none;display:flex}.note-shell .note-back-link:hover{color:var(--note-ink)}.note-shell .page-intro .eyebrow{font-family:var(--font-sans);font-synthesis:none;letter-spacing:.18em;color:var(--note-faint);margin:0;font-size:.72rem;font-weight:400}.note-shell .page-intro__title{max-width:none;font-family:var(--font-note-heading);font-size:clamp(2.25rem,5vw,3.6rem);font-weight:var(--font-note-heading-weight);font-synthesis:none;letter-spacing:-.035em;color:var(--note-ink);text-wrap:balance;margin:.65rem auto 0;line-height:1.04}.note-shell .page-intro__lead{max-width:42rem;font-family:var(--font-serif);color:var(--note-muted);margin:1rem auto 0;font-size:1.08rem;line-height:1.75}.note-shell .meta-row{font-family:var(--font-sans);letter-spacing:.06em;color:var(--note-faint);justify-content:center;margin-top:1.15rem;font-size:.78rem}.note-shell .tag-list{justify-content:center;margin-top:1.1rem}.note-shell [data-slot=badge]{border-color:var(--note-rule);color:var(--note-muted);font-family:var(--font-sans);background:0 0;font-weight:400}.note-shell .article-layout{grid-template-columns:minmax(0,820px) minmax(13rem,16rem);justify-content:center;align-items:start;gap:clamp(1.75rem,4vw,3.5rem);display:grid}.note-shell .article-sidebar{position:sticky;top:7.5rem}.note-shell .toc{border:0;border-left:1px solid var(--note-rule);box-shadow:none;background:0 0;border-radius:0;padding:.2rem 0 .25rem 1rem}.note-shell .toc__title{font-family:var(--font-sans);letter-spacing:.18em;color:var(--note-faint);font-size:.68rem;font-weight:500}.note-shell .toc ol{border-left:0;margin-top:.8rem;padding-left:0}.note-shell .toc li+li{margin-top:.45rem}.note-shell .toc__summary,.note-shell .toc__parent,.note-shell .toc li>a{font-family:var(--font-sans);font-synthesis:none;color:var(--note-muted);border-radius:0;padding:0;font-size:.93rem;font-weight:400;line-height:1.45}.note-shell .toc__summary:hover,.note-shell .toc__group[open]>.toc__summary{color:var(--note-ink);background:0 0}.note-shell .toc__nested{padding-left:1rem}.note-shell .article-prose{counter-reset:note-section;border:1px solid var(--note-rule);background:var(--note-paper);width:100%;color:var(--note-ink);font-family:var(--font-note-body);text-rendering:optimizelegibility;border-radius:4px;padding:clamp(2rem,4vw,4.25rem) clamp(1.35rem,4vw,4rem);font-size:1.08rem;line-height:1.78;box-shadow:0 24px 70px #2d231414}.note-shell .article-prose h1,.note-shell .article-prose h2,.note-shell .article-prose h3,.note-shell .article-prose h4{font-family:var(--font-note-heading);font-weight:var(--font-note-heading-weight);font-synthesis:none;letter-spacing:-.015em;color:var(--note-ink);scroll-margin-top:7.5rem}.note-shell .article-prose h1{counter-increment:note-section;counter-reset:note-subsection;border-bottom:1px solid var(--note-rule);margin:3.1rem 0 1.2rem;padding-bottom:.55rem;font-size:clamp(1.5rem,3vw,1.8rem);line-height:1.18}.note-shell .article-prose h1:first-child{margin-top:0}html[lang=zh-CN] .note-shell .article-prose h1:before,html[lang=zh-CN] .note-shell .article-prose h2:before{font-family:Dream Han Serif CN;font-weight:var(--font-note-heading-weight);font-synthesis:none}.note-shell .article-prose h1:before{content:counter(note-section) ". ";color:var(--note-faint)}.note-shell .article-prose h2{counter-increment:note-subsection;margin:2.2rem 0 .85rem;font-size:clamp(1.2rem,2vw,1.4rem);line-height:1.26}.note-shell .article-prose h2:before{content:counter(note-section) "." counter(note-subsection) " ";color:var(--note-faint)}.note-shell .article-prose h3{margin:1.8rem 0 .75rem;font-size:1.15rem;line-height:1.35}.note-shell .article-prose h4{margin:1.45rem 0 .6rem;font-size:1.04rem;line-height:1.35}.note-shell .article-prose p,.note-shell .article-prose li{color:var(--note-ink);font-family:var(--font-note-body);font-size:1.08rem;line-height:1.82}.note-shell .article-prose p{text-align:justify;text-wrap:pretty;margin:.9rem 0}.note-shell .article-prose ul,.note-shell .article-prose ol{margin:1rem 0;padding-left:1.55rem}.note-shell .article-prose li+li{margin-top:.35rem}.note-shell .article-prose li::marker{color:var(--note-faint)}.note-shell .article-prose a{color:var(--note-link);text-underline-offset:.22em;text-decoration-color:#5d321f52;text-decoration-thickness:.06em}.note-shell .article-prose a:hover{color:var(--note-ink);-webkit-text-decoration-color:var(--note-ink);text-decoration-color:var(--note-ink)}.note-shell .article-prose blockquote{border:0;border-left:3px solid var(--note-rule-strong);background:var(--note-page);border-radius:0;margin:1.25rem 0}@supports (color:color-mix(in lab,red,red)){.note-shell .article-prose blockquote{background:color-mix(in srgb,var(--note-page) 64%,white)}}.note-shell .article-prose blockquote{color:var(--note-muted);padding:.8rem 1.1rem}.note-shell .article-prose pre{border:1px solid var(--note-rule);box-shadow:none;background:#f3efe6;border-radius:4px;margin:1.2rem 0;padding:1rem}.note-shell .article-prose .code-block{margin:1.2rem 0;position:relative}.note-shell .article-prose .code-block>pre{margin:0;padding-top:3.25rem}.note-shell .article-prose pre::selection{-webkit-text-fill-color:#fff;background:#58a6ff75;color:#fff!important}.note-shell .article-prose pre ::selection{-webkit-text-fill-color:#fff;background:#58a6ff75;color:#fff!important}.note-shell .article-prose pre::-moz-selection{background:#58a6ff75;color:#fff!important}.note-shell .article-prose pre ::-moz-selection{background:#58a6ff75;color:#fff!important}.code-copy-button{z-index:2;color:#e6edf3b8;min-height:1.85rem;font-family:var(--font-mono);letter-spacing:.01em;background:#161b22f0;border:1px solid #ffffff29;border-radius:4px;align-items:center;gap:.4rem;padding:.28rem .55rem;font-size:.7rem;line-height:1;transition:border-color .16s,color .16s,background-color .16s,transform .12s;display:inline-flex;position:absolute;top:.65rem;right:.65rem}.code-copy-button:hover{color:#f0f3f6;background:#21262d;border-color:#ffffff47}.code-copy-button:active{transform:scale(.97)}.code-copy-button:focus-visible{outline-offset:2px;outline:2px solid #e6edf3c2}.code-copy-button svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.4px;width:.85rem;height:.85rem}.code-copy-button [data-check-icon]{display:none}.code-copy-button[data-state=copied]{color:#b7e3c2;border-color:#a8ddb557}.code-copy-button[data-state=copied] [data-copy-icon]{display:none}.code-copy-button[data-state=copied] [data-check-icon]{display:block}.code-copy-button[data-state=error]{color:#f4bcbc;border-color:#f7b0b057}.note-shell .article-prose code:not(pre code){color:var(--note-ink);background:#f3efe6;border:1px solid #d8cfbfbf;border-radius:3px;padding:.08rem .34rem;font-size:.92em}.note-shell .article-prose mjx-container[jax=CHTML]{font-size:1em}.note-shell .article-prose mjx-container[display]{margin:1.35rem 0;padding:.15rem 0 .35rem;overflow:auto hidden}.note-shell .article-prose mjx-container[display]>mjx-math{max-width:100%}.note-shell .article-prose .latex-svg{text-align:center;margin:1.35rem 0;padding:.15rem 0 .35rem;overflow:auto hidden}.note-shell .article-prose .latex-svg svg{width:auto;max-width:100%;height:auto;margin:0 auto;display:block}.note-shell .article-prose img{border:1px solid var(--note-rule);object-fit:contain;background:#fff;max-height:72vh;margin:1.45rem auto;padding:.35rem}.note-shell .article-prose figure{margin:1.6rem auto}.note-shell .article-prose figcaption{color:var(--note-faint);font-family:var(--font-note-body);text-align:center;margin-top:.55rem;font-size:.92rem;line-height:1.55}.note-shell .article-prose table{border-collapse:collapse;font-family:var(--font-note-body);margin:1.25rem 0}.note-shell .article-prose th,.note-shell .article-prose td{border-color:var(--note-rule);color:var(--note-ink);padding:.65rem .75rem}.note-shell .article-prose th{background:#f3efe6;font-weight:600}.note-shell .article-prose :is(.definition,.theorem,.lemma,.proposition,.corollary,.remark,.example,.proof){border-left:3px solid var(--note-rule-strong);background:var(--note-page);margin:1.25rem 0}@supports (color:color-mix(in lab,red,red)){.note-shell .article-prose :is(.definition,.theorem,.lemma,.proposition,.corollary,.remark,.example,.proof){background:color-mix(in srgb,var(--note-page) 62%,white)}}.note-shell .article-prose :is(.definition,.theorem,.lemma,.proposition,.corollary,.remark,.example,.proof){padding:.8rem 1rem}.note-shell .note-pager{grid-template-columns:minmax(0,820px) minmax(13rem,16rem);justify-content:center;gap:clamp(1.75rem,4vw,3.5rem);margin:2rem auto 0;display:grid}.note-shell .note-pager__links{grid-column:1;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;column-gap:2rem;padding-inline:1rem;display:grid}.note-shell .note-pager__link{width:fit-content;max-width:100%;color:var(--note-muted);font-family:var(--font-sans);text-wrap:balance;align-items:baseline;gap:.65rem;padding:.35rem 0;font-size:.95rem;line-height:1.5;text-decoration:none;display:inline-flex}.note-shell .note-pager__link:hover{color:var(--note-ink)}.note-shell .note-pager__link--previous{text-align:left;grid-column:1;justify-self:start}.note-shell .note-pager__link--next{text-align:right;grid-column:2;justify-self:end}.note-shell .note-pager__symbol{color:var(--note-faint);font-family:var(--font-mono);flex:none}.tool-landing{--tool-bg:#f2f1ed;--tool-surface:#ebe7df;--tool-surface-soft:#f7f4ee;--tool-surface-elevated:#ffffff94;--tool-ink:#26251e;--tool-muted:#26251e9e;--tool-border:#26251e1a;--tool-border-strong:#26251e2e;--tool-shadow:#0000000a 0 12px 30px;color:var(--tool-ink);gap:clamp(3rem,6vw,4.75rem);display:grid}.tool-landing:before{background:radial-gradient(circle at top center,#ffffffd6,transparent 42%),linear-gradient(180deg,#ffffff80,#ffffff14),var(--tool-bg);border-top:1px solid #26251e0f;border-bottom:1px solid #26251e0f;inset:-.5rem calc(50% - 50vw) -2rem}.tool-topbar{z-index:40;border:1px solid var(--tool-border);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#f6f3edd6;border-radius:18px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:1rem;padding:.75rem 1rem;display:grid;position:sticky;top:.75rem;box-shadow:0 10px 30px #00000005}.tool-topbar__brand{align-items:center;gap:.75rem;min-width:0;display:inline-flex}.tool-topbar__file{color:var(--tool-ink);font-family:var(--font-sans);letter-spacing:-.05em;font-size:1.1rem;font-weight:500;text-decoration:none}.tool-topbar__file:hover{color:#26251ebd}.tool-topbar__badge{border:1px solid var(--tool-border);color:#26251ec2;min-height:2rem;font-family:var(--font-mono);background:#ffffff8f;border-radius:9999px;align-items:center;padding:.18rem .72rem .22rem;font-size:.78rem;display:inline-flex}.tool-topbar__nav{scrollbar-width:none;overflow-x:auto}.tool-topbar__nav::-webkit-scrollbar{display:none}.tool-topbar__list{justify-content:center;gap:.25rem;min-width:max-content;margin:0;padding:0;list-style:none;display:flex}.tool-topbar__list a{color:#26251ead;min-height:2.45rem;font-family:var(--font-sans);letter-spacing:-.02em;border-radius:9999px;align-items:center;padding:.35rem .9rem;font-size:.96rem;text-decoration:none;transition:color .15s,background-color .15s;display:inline-flex}.tool-topbar__list a:hover{color:var(--tool-ink);background:#ffffff6b}.tool-topbar__cta{justify-self:end}.tool-hero{text-align:center;justify-items:center;gap:1.5rem;padding:clamp(4.5rem,8vw,7rem) 0 clamp(3.5rem,7vw,6rem);display:grid}.tool-hero--centered{max-width:72rem;margin:0 auto}.tool-kicker{letter-spacing:.14em;font-size:.78rem}.tool-hero__title{letter-spacing:-.09em;max-width:16ch;font-size:clamp(3.8rem,10vw,7.4rem);line-height:.94}.tool-hero__title span{display:block}.tool-hero__lead{text-align:center;max-width:48rem;font-size:clamp(1.12rem,1.9vw,1.55rem);line-height:1.58}.tool-tag-row,.tool-actions{justify-content:center}.tool-pill--tag{background:#ffffff85}.tool-button{border-color:var(--tool-border);background:var(--tool-surface-soft);min-height:3.2rem;box-shadow:none;border-radius:14px;padding:.9rem 1.35rem;font-size:1.02rem}.tool-button:hover{color:var(--tool-ink);box-shadow:var(--tool-shadow);transform:translateY(-1px)}.tool-button--surface{background:#ffffff8f}.tool-button--dark{background:var(--tool-ink);color:var(--tool-bg);border-color:#26251e1f;box-shadow:0 12px 28px #26251e29}.tool-button--dark:hover{color:#fff;box-shadow:0 18px 36px #26251e3d}.tool-button--ghost{color:#26251ec7;background:#ffffff8f}.tool-body{align-items:start;gap:1.5rem}.tool-body__side{top:6rem}.tool-outline{box-shadow:none;background:#ffffff6b;border-radius:18px}.tool-outline__title{letter-spacing:.12em;font-size:.76rem}.tool-outline__list{border-color:#26251e14}.tool-outline__list a{color:#26251ea8;font-size:.96rem}.tool-outline__list a:hover{color:var(--tool-ink)}.tool-prose{border-color:var(--tool-border);background:var(--tool-surface-elevated);box-shadow:none;border-radius:28px;padding:clamp(1.6rem,3vw,2.6rem)}.tool-prose h2,.tool-prose h3,.tool-prose h4,#project-overview{scroll-margin-top:7rem}.tool-prose h2{letter-spacing:-.08em;border-top-color:#26251e14;margin-top:3.2rem;padding-top:1.65rem;font-size:clamp(2.1rem,3.3vw,3rem)}.tool-prose h3{letter-spacing:-.05em;font-size:1.55rem}.tool-prose p,.tool-prose li,.tool-prose blockquote{font-size:1.08rem;line-height:1.8}.tool-prose blockquote{background:#ffffff80;border-color:#26251e1f;padding:1.15rem 1.2rem}.tool-prose pre{border-radius:18px}.tool-landing .pager__item{border-color:var(--tool-border);background:#ffffff6b;border-radius:22px}}@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{inset:calc(var(--spacing) * 0)}.inset-x-0{inset-inline:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.top-4{top:calc(var(--spacing) * 4)}.left-4{left:calc(var(--spacing) * 4)}.isolate{isolation:isolate}.z-10{z-index:10}.z-50{z-index:50}.z-\[60\]{z-index:60}.col-span-2{grid-column:span 2/span 2}.col-start-2{grid-column-start:2}.row-start-1{grid-row-start:1}.row-start-2{grid-row-start:2}.mx-auto{margin-inline:auto}.my-12{margin-block:calc(var(--spacing) * 12)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.aspect-square{aspect-ratio:1}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-11{width:calc(var(--spacing) * 11);height:calc(var(--spacing) * 11)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-full{height:100%}.h-px{height:1px}.min-h-\[calc\(100vh-13rem\)\]{min-height:calc(100vh - 13rem)}.min-h-screen{min-height:100vh}.w-\[min\(82vw\,22rem\)\]{width:min(82vw,22rem)}.w-fit{width:fit-content}.w-full{width:100%}.w-max{width:max-content}.w-px{width:1px}.max-w-2xl{max-width:var(--container-2xl)}.max-w-4xl{max-width:var(--container-4xl)}.min-w-0{min-width:calc(var(--spacing) * 0)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.grid-cols-\[1fr_auto\]{grid-template-columns:1fr auto}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-start{justify-content:flex-start}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-10{gap:calc(var(--spacing) * 10)}.gap-12{gap:calc(var(--spacing) * 12)}.gap-16{gap:calc(var(--spacing) * 16)}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-12>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 12) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 12) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-x-5{column-gap:calc(var(--spacing) * 5)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.justify-self-center{justify-self:center}.justify-self-end{justify-self:flex-end}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.rounded-\[0\.65rem\]{border-radius:.65rem}.rounded-\[var\(--box-radius\)\]{border-radius:var(--box-radius)}.rounded-full{border-radius:3.40282e38px}.rounded-md{border-radius:calc(var(--radius) * .8)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-border,.border-border\/70{border-color:var(--border)}@supports (color:color-mix(in lab,red,red)){.border-border\/70{border-color:color-mix(in oklab,var(--border) 70%,transparent)}}.border-border\/80{border-color:var(--border)}@supports (color:color-mix(in lab,red,red)){.border-border\/80{border-color:color-mix(in oklab,var(--border) 80%,transparent)}}.border-transparent{border-color:#0000}.bg-background,.bg-background\/95{background-color:var(--background)}@supports (color:color-mix(in lab,red,red)){.bg-background\/95{background-color:color-mix(in oklab,var(--background) 95%,transparent)}}.bg-border,.bg-border\/70{background-color:var(--border)}@supports (color:color-mix(in lab,red,red)){.bg-border\/70{background-color:color-mix(in oklab,var(--border) 70%,transparent)}}.bg-card,.bg-card\/92{background-color:var(--card)}@supports (color:color-mix(in lab,red,red)){.bg-card\/92{background-color:color-mix(in oklab,var(--card) 92%,transparent)}}.bg-destructive{background-color:var(--destructive)}.bg-muted\/50{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/50{background-color:color-mix(in oklab,var(--muted) 50%,transparent)}}.bg-primary{background-color:var(--primary)}.bg-secondary{background-color:var(--secondary)}.object-cover{object-fit:cover}.p-1{padding:calc(var(--spacing) * 1)}.p-3{padding:calc(var(--spacing) * 3)}.p-6{padding:calc(var(--spacing) * 6)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-5{padding-block:calc(var(--spacing) * 5)}.pt-0{padding-top:calc(var(--spacing) * 0)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pt-40{padding-top:calc(var(--spacing) * 40)}.pb-1{padding-bottom:calc(var(--spacing) * 1)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-6{padding-bottom:calc(var(--spacing) * 6)}.pb-10{padding-bottom:calc(var(--spacing) * 10)}.pb-20{padding-bottom:calc(var(--spacing) * 20)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-7{--tw-leading:calc(var(--spacing) * 7);line-height:calc(var(--spacing) * 7)}.leading-8{--tw-leading:calc(var(--spacing) * 8);line-height:calc(var(--spacing) * 8)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[-0\.03em\]{--tw-tracking:-.03em;letter-spacing:-.03em}.tracking-\[-0\.05em\]{--tw-tracking:-.05em;letter-spacing:-.05em}.tracking-\[-0\.06em\]{--tw-tracking:-.06em;letter-spacing:-.06em}.tracking-\[-0\.09em\]{--tw-tracking:-.09em;letter-spacing:-.09em}.whitespace-nowrap{white-space:nowrap}.text-card-foreground{color:var(--card-foreground)}.text-destructive-foreground{color:var(--destructive-foreground)}.text-foreground{color:var(--foreground)}.text-muted-foreground{color:var(--muted-foreground)}.text-primary-foreground{color:var(--primary-foreground)}.text-secondary-foreground{color:var(--secondary-foreground)}.underline{text-decoration-line:underline}.decoration-border{-webkit-text-decoration-color:var(--border);text-decoration-color:var(--border)}.underline-offset-4{text-underline-offset:4px}.shadow-\[0_24px_70px_rgba\(0\,0\,0\,0\.04\)\]{--tw-shadow:0 24px 70px var(--tw-shadow-color,#0000000a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.outline-none{--tw-outline-style:none;outline-style:none}@media(hover:hover){.hover\:bg-accent:hover{background-color:var(--accent)}.hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--destructive) 90%,transparent)}}.hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary) 90%,transparent)}}.hover\:bg-secondary\/80:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab,var(--secondary) 80%,transparent)}}.hover\:text-accent-foreground:hover{color:var(--accent-foreground)}.hover\:text-foreground:hover{color:var(--foreground)}.hover\:underline:hover{text-decoration-line:underline}.hover\:decoration-foreground:hover{-webkit-text-decoration-color:var(--foreground);text-decoration-color:var(--foreground)}}.focus\:not-sr-only:focus{clip-path:none;white-space:normal;width:auto;height:auto;margin:0;padding:0;position:static;overflow:visible}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab, var(--ring) 50%, transparent)}}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:opacity-50:disabled{opacity:.5}@media(min-width:40rem){.sm\:text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.sm\:text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.sm\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.sm\:text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}}@media(min-width:48rem){.md\:col-span-1{grid-column:span 1/span 1}.md\:col-start-2{grid-column-start:2}.md\:col-start-3{grid-column-start:3}.md\:row-start-1{grid-row-start:1}.md\:block{display:block}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-\[1fr_auto_1fr\]{grid-template-columns:1fr auto 1fr}.md\:flex-row{flex-direction:row}.md\:items-end{align-items:flex-end}.md\:justify-between{justify-content:space-between}.md\:justify-self-center{justify-self:center}.md\:pt-32{padding-top:calc(var(--spacing) * 32)}.md\:text-\[1\.05rem\]{font-size:1.05rem}}@media(min-width:64rem){.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-\[minmax\(0\,1\.1fr\)_minmax\(280px\,360px\)\]{grid-template-columns:minmax(0,1.1fr) minmax(280px,360px)}.lg\:justify-self-end{justify-self:flex-end}.lg\:pt-36{padding-top:calc(var(--spacing) * 36)}.lg\:text-\[4\.5rem\]{font-size:4.5rem}}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}@font-face{font-family:LXGW Neo ZhiSong CJK;src:url(/_astro/LXGWNeoZhiSong.CQ4gG8UM.woff2)format("woff2");font-style:normal;font-weight:400;font-display:swap;unicode-range:U+2E80-2FDF,U+3000-303F,U+31C0-31EF,U+3400-4DBF,U+4E00-9FFF,U+F900-FAFF,U+FE1?,U+FE30-FE4F,U+FF00-FFEF,U+20000-2FA1F}@font-face{font-family:Dream Han Serif CN;src:url(/_astro/dream-han-serif-cn-400.Co5XAaDR.woff2)format("woff2");font-style:normal;font-weight:400;font-display:swap}@font-face{font-family:Dream Han Serif CN;src:url(/_astro/dream-han-serif-cn-500.DS3CP9Ji.woff2)format("woff2");font-style:normal;font-weight:500;font-display:swap}@font-face{font-family:Dream Han Serif CN;src:url(/_astro/dream-han-serif-cn-600.BvYtwGHu.woff2)format("woff2");font-style:normal;font-weight:600;font-display:swap}@font-face{font-family:Dream Han Serif CN;src:url(/_astro/dream-han-serif-cn-700.BWftiMEw.woff2)format("woff2");font-style:normal;font-weight:700;font-display:swap}:root{--radius:1.5rem;--box-radius:1rem;--background:oklch(98.8% 0 0);--foreground:oklch(18% 0 0);--card:oklch(99.8% 0 0);--card-foreground:oklch(18% 0 0);--popover:oklch(99.8% 0 0);--popover-foreground:oklch(18% 0 0);--primary:oklch(18% 0 0);--primary-foreground:oklch(98.8% 0 0);--secondary:oklch(96.8% 0 0);--secondary-foreground:oklch(18% 0 0);--muted:oklch(97.2% 0 0);--muted-foreground:oklch(47% 0 0);--accent:oklch(96.8% 0 0);--accent-foreground:oklch(18% 0 0);--destructive:oklch(57% .22 27.4);--destructive-foreground:oklch(98.8% 0 0);--border:oklch(91% 0 0);--input:oklch(91% 0 0);--ring:oklch(72% 0 0);--chart-1:oklch(32% 0 0);--chart-2:oklch(44% 0 0);--chart-3:oklch(56% 0 0);--chart-4:oklch(68% 0 0);--chart-5:oklch(80% 0 0);--sidebar:oklch(98.5% 0 0);--sidebar-foreground:oklch(18% 0 0);--sidebar-primary:oklch(18% 0 0);--sidebar-primary-foreground:oklch(98.8% 0 0);--sidebar-accent:oklch(96.8% 0 0);--sidebar-accent-foreground:oklch(18% 0 0);--sidebar-border:oklch(91% 0 0);--sidebar-ring:oklch(72% 0 0)}@media(max-width:1023px){.note-shell{width:min(100%,58rem)}.note-shell .article-layout,.note-shell .note-pager{grid-template-columns:minmax(0,820px)}.note-shell .article-sidebar{order:-1;position:static}.note-shell .toc{border-left:0;border-top:1px solid var(--note-rule);border-bottom:1px solid var(--note-rule);max-width:820px;margin:0 auto;padding:1rem 0}}@media(max-width:639px){.note-shell .note-pager__links{grid-template-columns:minmax(0,1fr);row-gap:.65rem}.note-shell .note-pager__link--next{grid-column:1}}@media(max-width:767px){.note-shell{padding:8rem .85rem 4rem}.note-shell .page-intro{margin-bottom:1.75rem;padding-bottom:1.35rem}.note-shell .page-intro__title{max-width:18ch}.note-shell .article-prose{padding:1.45rem 1rem 1.8rem;font-size:1rem}.note-shell .article-prose p,.note-shell .article-prose li{font-size:1rem;line-height:1.8}.note-shell .article-prose p{text-align:start}.note-shell .article-prose h1{font-size:1.55rem}.note-shell .article-prose h2{font-size:1.22rem}.tool-landing:before{inset:-1rem calc(50% - 50vw) -2rem}.tool-hero__title{max-width:none}}@media(max-width:1023px){.tool-topbar{grid-template-columns:minmax(0,1fr) auto}.tool-topbar__nav{order:3;grid-column:1/-1}.tool-topbar__list{justify-content:flex-start}.tool-body{grid-template-columns:1fr}.tool-body__side{display:none}}@media(max-width:767px){.tool-topbar{border-radius:16px;padding:.7rem .8rem}.tool-topbar__brand{gap:.55rem}.tool-topbar__file{font-size:1rem}.tool-topbar__badge{padding-inline:.6rem;font-size:.72rem}.tool-topbar__cta{min-height:2.85rem;padding-inline:1rem}.tool-hero{padding-top:3.75rem;padding-bottom:3.2rem}.tool-hero__title{letter-spacing:-.08em;max-width:12ch;font-size:clamp(3rem,16vw,4.9rem)}.tool-hero__lead{font-size:1.02rem}.tool-actions{flex-direction:column;width:100%}.tool-actions .tool-button{width:100%}.tool-prose{border-radius:22px}}::view-transition-group(nav-active-pill){animation-duration:.24s;animation-timing-function:cubic-bezier(.76,0,.24,1)}::view-transition-group(nav-active-icon){animation-duration:.24s;animation-timing-function:cubic-bezier(.76,0,.24,1)}::view-transition-old(nav-active-pill){mix-blend-mode:normal}::view-transition-new(nav-active-pill){mix-blend-mode:normal}::view-transition-old(nav-active-icon){mix-blend-mode:normal}::view-transition-new(nav-active-icon){mix-blend-mode:normal}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}
