@layer tokens{:root{--blog-font-body:system-ui, "PingFang SC", "Microsoft YaHei", sans-serif;--blog-font-heading:var(--blog-font-body);--blog-font-ui:system-ui, "PingFang SC", sans-serif;--blog-font-code:"Cascadia Code", Consolas, monospace;--blog-font-quote:inherit;--blog-font-caption:var(--blog-font-ui);--blog-reading-measure:52rem;--blog-toc-width:clamp(10rem, 16vw, 13rem);--blog-article-gap:clamp(1.5rem, 3vw, 2.5rem);--blog-line-height-body:1.95;--blog-radius-card:10px;--blog-radius-control:6px;--blog-nav-height:4rem;--blog-shadow-popup:0 8px 24px #0002}}@layer base{*,:before,:after{box-sizing:border-box}html{scrollbar-gutter:stable;scroll-padding-top:calc(var(--blog-nav-height) + 2rem);font-size:16px}body{background:var(--blog-color-page);color:var(--blog-color-text);font-family:var(--blog-font-ui);margin:0;line-height:1.6}a{color:inherit;text-decoration:none}a:hover{color:var(--blog-color-link)}button,input,select{font:inherit}button,select{cursor:pointer}button{color:inherit;border:1px solid var(--blog-color-border);border-radius:var(--blog-radius-control);background:0 0;padding:.55rem .8rem}button:hover:not(:disabled){border-color:var(--blog-color-link);background-color:var(--blog-color-tint)}button:disabled{cursor:not-allowed;opacity:.55}input{accent-color:var(--blog-color-link)}input,select{color:var(--blog-color-text);background:var(--blog-color-surface);border:1px solid var(--blog-color-border);border-radius:var(--blog-radius-control);padding:.6rem}:focus-visible{outline:2px solid var(--blog-color-focus);outline-offset:4px}h1,h2,h3,p{margin-top:0}h1,h2,h3{font-family:var(--blog-font-heading);text-wrap:pretty;font-weight:650;line-height:1.45}img,svg{max-width:100%}::selection{background:var(--blog-color-tint);color:var(--blog-color-text)}[tabindex="-1"]:focus{outline:none}}@layer content{.prose div[class*=language-]{border:1px solid var(--blog-color-border);border-radius:var(--blog-radius-card);background:var(--blog-color-code);grid-template-columns:auto minmax(0,1fr) auto;margin:1.8rem 0;display:grid}.prose pre{grid-area:2/1/auto/-1;min-width:0;margin:0;padding:1.6rem 1.1rem;font-size:.95rem;line-height:1.8;overflow-x:auto}.prose pre code{font-size:inherit;background:0 0;width:fit-content;min-width:100%;padding:0;display:block}.prose .lang{font:.7rem var(--blog-font-ui);color:var(--blog-color-muted);grid-area:1/1/auto/3;align-self:center;margin-inline-start:1.1rem}.prose button.copy{background:var(--blog-color-surface);grid-area:1/3;min-width:44px;min-height:44px;margin:.35rem}.prose button.copy:before{content:"⧉";font-size:1.2rem}.prose button.copy[data-copy-state=copied]:before{content:"✓"}.prose div[class*=language-]:hover .copy,.prose .copy:focus-visible{opacity:1}.prose .line-numbers-mode pre{grid-column:2/-1;padding-inline-start:.8rem}.prose .line-numbers-wrapper{border-inline-end:1px solid var(--blog-color-border);font:.95rem/1.8 var(--blog-reader-font-code,var(--blog-font-code));font-variant-ligatures:none;text-align:end;color:var(--blog-color-muted);-webkit-user-select:none;user-select:none;grid-area:2/1;padding:1.6rem .8rem}.prose .line-number{display:inline-block}.prose .shiki .line{width:100%;display:inline-block}.prose .shiki .highlighted{background:color-mix(in srgb, var(--blog-color-link) 12%, transparent)}.prose .shiki .highlighted.warning{background:color-mix(in srgb, var(--blog-color-highlight) 18%, transparent)}.prose .shiki .highlighted.error,.prose .shiki .diff.remove{background:color-mix(in srgb, var(--blog-color-signal) 20%, transparent)}.prose .shiki .diff.add{background:color-mix(in srgb, var(--blog-color-link) 18%, transparent)}.prose .shiki.has-diff code{padding-inline-start:1ch}.prose .shiki .diff:before{width:1ch;color:var(--blog-color-text);margin-inline-start:-1ch;display:inline-block}.prose .shiki .diff.add:before{content:"+"}.prose .shiki .diff.remove:before{content:"−"}.prose .shiki.has-focused-lines .line:not(.has-focus){opacity:.45}.prose .shiki.has-focused-lines:hover .line,.prose .shiki.has-focused-lines:focus-within .line{opacity:1}.prose .code-group{grid-template-columns:repeat(var(--code-panels), minmax(0, 1fr));border:1px solid var(--blog-color-border);border-radius:var(--blog-radius-card);background:var(--blog-color-code);min-width:0;margin:1.8rem 0;padding:0;display:grid}.prose .code-group>label{min-width:0;font:.85rem/1.6 var(--blog-font-ui);overflow-wrap:anywhere;cursor:pointer;border-bottom:2px solid #0000;grid-row:1;padding:.8rem 1rem}.prose .code-choice:checked+label{border-bottom-color:var(--blog-color-link);color:var(--blog-color-link)}.prose .code-choice:focus-visible+label{outline:2px solid var(--blog-color-focus);outline-offset:-4px}.prose .code-panel{grid-area:2/1/auto/-1;min-width:0;display:none}.prose .code-choice:checked+label+.code-panel{display:block}.prose .code-panel>div[class*=language-]{border-radius:0 0 var(--blog-radius-card) var(--blog-radius-card);border:0;margin:0}@media print{.prose .code-group,.prose .code-group>label,.prose .code-panel{display:block}.prose button.copy{display:none}.prose .shiki.has-focused-lines .line{opacity:1}}.prose{font-family:var(--blog-reader-font-body,var(--blog-font-body));font-size:var(--blog-reader-font-size,1.125rem);line-height:var(--blog-reader-line-height,var(--blog-line-height-body));overflow-wrap:break-word;min-width:0}.prose h1{font-size:2.3rem}.prose h2{margin:2.6rem 0 1rem;scroll-margin-top:2rem;font-size:1.65rem}.prose h3{margin:2rem 0 1rem;font-size:1.3rem}.prose p{margin-bottom:1.4rem}.prose a{color:var(--blog-color-link);text-underline-offset:4px;overflow-wrap:anywhere;text-decoration:underline}.prose .header-anchor{font:1rem var(--blog-font-ui);opacity:0;margin-inline-start:.5rem}.prose h2:hover .header-anchor,.prose .header-anchor:focus{opacity:1}.prose blockquote{font-family:var(--blog-font-quote);border-inline-start:2px solid var(--blog-color-link);color:var(--blog-color-muted);margin:2rem 0;padding:.4rem 1.5rem}.prose blockquote p:last-child{margin:0}.prose ul,.prose ol{padding-inline-start:1.6rem}.prose li{margin:.5rem 0}.prose code{font-family:var(--blog-reader-font-code,var(--blog-font-code));font-variant-ligatures:none;background:var(--blog-color-code);border-radius:4px;padding:.15em .3em;font-size:.84em}.prose table{border-collapse:collapse;font-family:var(--blog-font-ui);max-width:100%;margin:1.5rem 0;font-size:.9rem;line-height:1.7;display:block;overflow-x:auto}.prose th,.prose td{border:1px solid var(--blog-color-border);min-width:100px;padding:.7rem 1rem}.prose th{background:var(--blog-color-tint);text-align:start}.prose hr{border:0;border-top:1px solid var(--blog-color-border);margin:2.5rem 0}.prose .custom-block{border-radius:var(--blog-radius-control);border-inline-start:3px solid var(--blog-color-link);background:var(--blog-color-tint);font:.95rem/1.8 var(--blog-font-ui);margin:1.5rem 0;padding:1.2rem 1.4rem}.custom-block-title{font-weight:600}.prose .custom-block p:last-child{margin:0}.prose .custom-block.warning{border-color:var(--blog-color-highlight)}.prose .custom-block.danger{border-color:var(--blog-color-signal)}.prose details.custom-block>summary{cursor:pointer;font-weight:600}.prose .footnotes{color:var(--blog-color-muted);font-size:.85em}.prose .footnote-ref{scroll-margin-top:2rem}.math-inline{vertical-align:middle;max-width:100%;display:inline-block;overflow-x:auto}.math-inline[data-overflow=false]{vertical-align:baseline;overflow:visible}.math-visual{max-width:100%;display:inline-block}.math-visual svg{max-width:none}.math-visual a{fill:var(--blog-color-link);stroke:var(--blog-color-link)}.math-block{text-align:center;max-width:100%;margin:1.5rem 0;padding:1.1rem .5rem;position:relative;overflow-x:auto}.math-block .math-visual{width:100%;display:block}.math-copy{float:inline-end;font:.8rem var(--blog-font-ui);min-width:44px;min-height:44px;margin-inline-start:1rem;display:block}.math-copy:before{content:"TeX ⧉"}.math-copy[data-copy-state=copied]:before{content:"✓"}.math-reference{font:.8em var(--blog-font-ui);margin-inline:.3em}.sr-only,.math-reference:not(:focus){clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;position:absolute!important}.prose figure{margin:2rem 0}.prose figure img{height:auto;margin:auto;display:block}.prose figcaption{font:.85rem/1.7 var(--blog-font-caption);color:var(--blog-color-muted);text-align:center;margin-top:1rem}.shiki,.shiki span{color:var(--shiki-light)}:root[data-theme=dark] .shiki,:root[data-theme=dark] .shiki span{color:var(--shiki-dark)!important}@media (prefers-color-scheme:dark){:root:not([data-theme]):not([data-mode=light]) .shiki,:root:not([data-theme]):not([data-mode=light]) .shiki span{color:var(--shiki-dark)!important}}@media (hover:none){.prose button.copy{opacity:1}}@media print{:root .prose .shiki,:root .prose .shiki span{color:var(--shiki-light)!important}}}@layer components{.language-links[data-v-ebb7f985]{margin:0;padding:0;font-size:.875rem;list-style:none}.language-links a[data-v-ebb7f985]{border-radius:var(--blog-radius-control);justify-content:space-between;align-items:center;gap:.7rem;min-block-size:2.75rem;padding:.5rem .75rem;display:flex}.language-links a[aria-current=true][data-v-ebb7f985]{color:var(--blog-color-muted)}.language-links a[data-v-ebb7f985]:hover{color:var(--blog-color-link);background:var(--blog-color-tint)}.language-links a[data-v-ebb7f985]:focus-visible{outline-offset:-2px}.language-label[data-v-ebb7f985]{overflow-wrap:anywhere;min-inline-size:0}.translation-hint[data-v-ebb7f985]{color:var(--blog-color-muted);margin-block-start:.25rem;font-size:.7rem;display:block}.language-check[data-v-ebb7f985]{stroke:currentColor;stroke-width:1.5px;flex-shrink:0;block-size:.875rem;inline-size:.875rem}.language-icon[data-v-9fed614b]{stroke:currentColor;stroke-width:1.7px;flex-shrink:0;block-size:18px;inline-size:18px}.language-switch[data-v-a3e6677f]{block-size:2.75rem;inline-size:3rem;font:.875rem/1.4 var(--blog-font-ui);flex-shrink:0}.language-trigger[data-v-a3e6677f]{cursor:pointer;justify-content:center;align-items:center;gap:.3rem;block-size:2.75rem;list-style:none;display:flex}.language-trigger[data-v-a3e6677f]::-webkit-details-marker{display:none}.language-trigger[data-v-a3e6677f]:hover,.language-switch[open]>.language-trigger[data-v-a3e6677f]{color:var(--blog-color-link)}.language-chevron[data-v-a3e6677f]{stroke:currentColor;stroke-width:1.5px;flex-shrink:0;block-size:12px;inline-size:12px}.language-switch[open] .language-chevron[data-v-a3e6677f]{transform:rotate(180deg)}.language-panel[data-v-a3e6677f]{z-index:1;border:1px solid var(--blog-color-border);border-radius:var(--blog-radius-card);background:var(--blog-color-surface);max-block-size:min(24rem,100dvh - 6rem);inline-size:13rem;color:var(--blog-color-text);box-shadow:var(--blog-shadow-popup);margin-block-start:.25rem;margin-inline-start:calc(100% - 13rem);padding:.5rem;position:relative;overflow-y:auto}.language-inline[data-v-a3e6677f]{block-size:auto;inline-size:auto}.language-inline>.language-trigger[data-v-a3e6677f]{justify-content:flex-start;gap:.5rem}.language-inline>.language-panel[data-v-a3e6677f]{inline-size:auto;box-shadow:none;background:0 0;border:0;border-radius:0;max-block-size:none;margin:0;padding:0 0 0 .75rem;overflow:visible}.color-mode-switch[data-v-61031c41]{background:0 0;border:0;flex-shrink:0;place-items:center;block-size:2.75rem;inline-size:3rem;padding:0;display:grid}.mode-track[data-v-61031c41]{border:1px solid var(--blog-color-border);background:var(--blog-color-tint);border-radius:11px;align-items:center;block-size:22px;inline-size:40px;padding:1px;display:flex}.color-mode-switch:hover .mode-track[data-v-61031c41]{border-color:var(--blog-color-muted)}.mode-thumb[data-v-61031c41]{background:var(--blog-color-surface);block-size:18px;inline-size:18px;color:var(--blog-color-text);transform:translateX(var(--mode-offset,0px));border-radius:50%;place-items:center;transition:transform .2s;display:grid;box-shadow:0 1px 2px #0002}.mode-thumb svg[data-v-61031c41]{stroke:currentColor;stroke-width:1.8px;block-size:12px;inline-size:12px}.mode-sun[data-v-61031c41]{display:var(--mode-sun-display,block)}.mode-moon[data-v-61031c41]{display:var(--mode-moon-display,none)}:root[data-theme=dark]{--mode-offset:18px;--mode-sun-display:none;--mode-moon-display:block}@media (prefers-color-scheme:dark){:root:not([data-theme]):not([data-mode=light]){--mode-offset:18px;--mode-sun-display:none;--mode-moon-display:block}}@media (prefers-reduced-motion:reduce){.mode-thumb[data-v-61031c41]{transition:none}}.select-field[data-v-cd984ebe]{min-inline-size:0;font:.8rem/1.4 var(--blog-font-ui);grid-template:2.75rem/minmax(0,1fr);display:grid}.select-trigger[data-v-cd984ebe],.select-popup[data-v-cd984ebe]{border:1px solid var(--blog-color-border);background:var(--blog-color-surface);color:var(--blog-color-text);grid-area:1/1}.select-trigger[data-v-cd984ebe]{border-radius:var(--blog-radius-control);align-items:center;gap:.6rem;min-inline-size:0;padding:.5rem .7rem;display:flex}.select-value[data-v-cd984ebe]{text-align:start;white-space:nowrap;text-overflow:ellipsis;flex:1;min-inline-size:0;overflow:hidden}.select-trigger[data-v-cd984ebe]:hover,[data-open=true] .select-trigger[data-v-cd984ebe]{border-color:var(--blog-color-link);background:var(--blog-color-tint)}.select-chevron[data-v-cd984ebe],.select-check[data-v-cd984ebe]{stroke:currentColor;stroke-width:1.5px;flex-shrink:0;block-size:1rem;inline-size:1rem}[data-open=true] .select-chevron[data-v-cd984ebe]{transform:rotate(180deg)}.select-popup[data-v-cd984ebe]{border-radius:var(--blog-radius-card);inline-size:100%;max-inline-size:calc(100vw - 2.2rem);box-shadow:var(--blog-shadow-popup);z-index:30;flex-direction:column;place-self:start end;margin-block-start:3.25rem;padding:.4rem;display:flex;overflow:hidden}[data-placement=above] .select-popup[data-v-cd984ebe]{align-self:end;margin-block:0 3.25rem}.select-caption[data-v-cd984ebe]{color:var(--blog-color-muted);border-block-end:1px solid var(--blog-color-border);flex-shrink:0;margin:0;padding:.55rem .65rem;font-size:.7rem}ul[data-v-cd984ebe]{overscroll-behavior:contain;min-block-size:0;margin:.3rem 0 0;padding:0;list-style:none;overflow-y:auto}li[data-v-cd984ebe]{border-radius:var(--blog-radius-control);cursor:pointer;border:1px solid #0000;align-items:center;gap:.7rem;min-block-size:2.75rem;padding:.6rem .65rem;display:flex}li>span[data-v-cd984ebe]{overflow-wrap:anywhere;flex:1;min-inline-size:0}li[aria-selected=true][data-v-cd984ebe]{color:var(--blog-color-link);background:var(--blog-color-tint)}li[data-active=true][data-v-cd984ebe],li[data-v-cd984ebe]:hover{border-color:var(--blog-color-link)}.select-check[data-v-cd984ebe]{visibility:hidden}li[aria-selected=true] .select-check[data-v-cd984ebe]{visibility:visible}@media (forced-colors:active){li[aria-selected=true][data-v-cd984ebe]{border-color:highlight}.select-popup[data-v-cd984ebe]{border:2px solid buttontext}}.research-plate[data-v-009d26e7]{background:var(--blog-color-panel);min-inline-size:0;color:var(--blog-color-panel-ink);border-radius:var(--blog-radius-card);grid-template-rows:auto minmax(0,1fr) auto auto;align-self:stretch;display:grid;overflow:hidden}.plate-header[data-v-009d26e7],.plate-footer[data-v-009d26e7]{font:.7rem/1.4 var(--blog-font-code);letter-spacing:.12em;justify-content:space-between;align-items:center;margin-inline:1.5rem;padding-block:1rem;display:flex}.plate-header[data-v-009d26e7]{border-block-end:1px solid var(--blog-color-panel-line)}.plate-index[data-v-009d26e7]{color:var(--blog-color-panel-ink);font-size:1.1rem}.plate-drawing[data-v-009d26e7]{align-self:center;inline-size:100%;display:block}.plate-grid[data-v-009d26e7]{stroke:var(--blog-color-panel-line);opacity:.15}.plate-axis[data-v-009d26e7]{stroke:var(--blog-color-panel-line);stroke-width:.8px}.plate-orbits[data-v-009d26e7]{stroke:var(--blog-color-panel-ink);stroke-width:1.2px}.plate-nodes[data-v-009d26e7]{fill:var(--blog-color-accent)}.plate-labels[data-v-009d26e7]{fill:var(--blog-color-panel-muted);font:8px var(--blog-font-code);letter-spacing:1px}.plate-footer[data-v-009d26e7]{border-block-start:1px solid var(--blog-color-panel-line);color:var(--blog-color-panel-muted)}.plate-spectrum[data-v-009d26e7]{grid-template-columns:repeat(3,1fr);block-size:3px;display:grid}.plate-spectrum span[data-v-009d26e7]:first-child{background:var(--blog-color-link)}.plate-spectrum span[data-v-009d26e7]:nth-child(2){background:var(--blog-color-accent)}.plate-spectrum span[data-v-009d26e7]:nth-child(3){background:var(--blog-color-signal)}@media (width<=42rem){.research-plate[data-v-009d26e7]{display:none}}.site-shell{max-width:1280px;margin:auto;padding:0 clamp(1.1rem,3.5vw,3rem)}main{min-height:65vh}.skip-link{z-index:100;background:var(--blog-color-surface);padding:1rem;position:fixed;inset-block-start:-100px}.skip-link:focus{inset-block-start:0}.section-number{block-size:1.65rem;inline-size:1.65rem;color:var(--blog-color-highlight);border:1px solid var(--blog-color-border);font:.65rem var(--blog-font-code);letter-spacing:0;border-radius:3px;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.eyebrow{color:var(--blog-color-muted);font:500 .7rem/1.5 var(--blog-font-code);letter-spacing:.07em;align-items:center;gap:.6rem;margin-bottom:1.5rem;display:flex}.eyebrow-divider{color:var(--blog-color-border)}.text-link{border-bottom:1px solid var(--blog-color-link);align-items:center;gap:2rem;padding-bottom:.4rem;font-size:.9rem;display:inline-flex}.section-heading{border-top:1px solid var(--blog-color-border);justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1.5rem;padding-top:1.5rem;display:flex}.section-heading h2{align-items:center;gap:.7rem;margin:0;font-size:1.2rem;display:flex}.section-heading h2 small{font:.65rem var(--blog-font-code);color:var(--blog-color-muted);letter-spacing:.09em}.section-heading>span{color:var(--blog-color-muted);font-size:.8rem}.site-footer{border-top:1px solid var(--blog-color-border);color:var(--blog-color-muted);justify-content:space-between;align-items:flex-start;gap:1.5rem;margin-top:2rem;padding:2.4rem 0 3rem;font-size:.8rem;display:flex}.footer-brand{font:1rem var(--blog-font-code);color:var(--blog-color-text)}.site-footer p{margin:.6rem 0 0}.footer-tools{align-items:flex-start;gap:2rem;display:flex}.footer-tools>a{padding:.3rem 0}.page-heading{padding:4rem 0 2rem}.page-heading h1{margin-bottom:1rem;font-size:clamp(2.3rem,4vw,3.4rem)}.page-heading>p:not(.eyebrow){color:var(--blog-color-muted);max-width:40rem}.standalone{max-width:var(--blog-reading-measure);margin:4rem auto}.not-found{padding:7rem 0}.not-found h1{font-size:clamp(2rem,5vw,4rem)}.not-found p{color:var(--blog-color-muted)}@media (width<=56rem){.section-heading>span{display:none}.site-footer{flex-wrap:wrap}.footer-tools{gap:1.5rem}.page-heading{padding-top:2.5rem}.standalone{margin-block:2.5rem}}@media (width<=42rem){.footer-tools{flex-wrap:wrap}.section-heading h2 small{display:none}}.site-header{z-index:50;block-size:var(--blog-nav-height);background:var(--blog-color-page);border-block-end:1px solid var(--blog-color-border);display:flex;position:sticky;inset-block-start:0}.header-bar{align-items:center;gap:2rem;block-size:100%;inline-size:100%;max-inline-size:1440px;margin-inline:auto;padding-inline:2rem;display:flex}.wordmark{white-space:nowrap;flex-shrink:0;align-items:center;gap:.4rem;display:flex}.wordmark strong{font:700 1rem/1 var(--blog-font-heading);letter-spacing:-.04em}.brand-symbol{block-size:24px;inline-size:24px;stroke:var(--blog-color-link);stroke-width:2px}.brand-signal,.wordmark-dot{color:var(--blog-color-highlight);stroke:var(--blog-color-highlight)}.search-trigger{border-radius:var(--blog-radius-control);background:var(--blog-color-tint);min-block-size:40px;color:var(--blog-color-muted);border:1px solid #0000;flex-shrink:0;align-items:center;gap:.5rem;padding:0 .75rem;font-size:.8125rem;display:flex}.search-trigger:hover{border-color:var(--blog-color-link)}.search-trigger svg{stroke:currentColor;stroke-width:1.6px;block-size:16px;inline-size:16px}.search-trigger kbd{border:1px solid var(--blog-color-border);font:.75rem/1.6 var(--blog-font-ui);border-radius:4px;padding:0 .3rem}.desktop-navigation{align-items:center;gap:1rem;min-inline-size:0;margin-inline-start:auto;display:flex}.main-nav{gap:1.5rem;font-size:.875rem;font-weight:500;display:flex}.main-nav a{white-space:nowrap;align-items:center;min-block-size:2.75rem;display:flex}.main-nav a[aria-current=page]{color:var(--blog-color-link)}.header-tools{align-items:center;gap:.75rem;display:flex}.header-divider{background:var(--blog-color-border);block-size:24px;inline-size:1px}.more-menu,.mobile-menu{flex-shrink:0;block-size:2.75rem;inline-size:2.75rem;display:none}.more-trigger,.menu-trigger{cursor:pointer;justify-content:center;align-items:center;block-size:2.75rem;inline-size:2.75rem;list-style:none;display:flex}.more-trigger::-webkit-details-marker{display:none}.menu-trigger::-webkit-details-marker{display:none}.more-trigger:hover,.menu-trigger:hover{color:var(--blog-color-link)}.more-trigger svg,.menu-trigger svg{block-size:20px;inline-size:20px}.more-trigger svg{fill:currentColor}.menu-trigger svg{stroke:currentColor;stroke-width:1.7px}.menu-close,.mobile-menu[open] .menu-bars{display:none}.mobile-menu[open] .menu-close{display:block}.more-panel{background:var(--blog-color-surface);border:1px solid var(--blog-color-border);border-radius:var(--blog-radius-card);max-block-size:calc(100dvh - 6rem);inline-size:14rem;box-shadow:var(--blog-shadow-popup);margin-block-start:.25rem;margin-inline-start:calc(100% - 14rem);padding:.5rem;position:relative;overflow-y:auto}.header-appearance{color:var(--blog-color-muted);justify-content:space-between;align-items:center;gap:1rem;padding-inline:.75rem;font-size:.8125rem;display:flex}.more-panel .header-appearance{border-block-start:1px solid var(--blog-color-border);margin-block-start:.5rem;padding-block-start:.5rem}@media (width>=768px) and (width<=959px){.header-bar{gap:1.5rem}.header-tools{display:none}.more-menu{display:block}.main-nav{gap:1.25rem}}@media (width<=767px){.header-bar{gap:1rem;padding-inline:1.5rem}.desktop-navigation{display:none}.mobile-menu{margin-inline-start:auto;display:block}.search-trigger{background:0 0;border:0;justify-content:center;block-size:2.75rem;min-block-size:0;inline-size:2.75rem;padding:0}.search-trigger svg{block-size:20px;inline-size:20px}.search-trigger span,.search-trigger kbd{display:none}.mobile-screen{inset-block:var(--blog-nav-height) 0;overscroll-behavior:contain;background:var(--blog-color-page);position:fixed;inset-inline:0;overflow-y:auto}.mobile-content{max-inline-size:24rem;margin-inline:auto;padding:1.5rem 2.5rem 3rem}.mobile-content .main-nav{flex-direction:column;gap:0}.mobile-content .main-nav a{border-block-end:1px solid var(--blog-color-border);min-block-size:3rem}.mobile-content .header-options{margin-block-start:1rem}.mobile-content .header-appearance{border-radius:var(--blog-radius-control);background:var(--blog-color-tint);margin-block-start:1rem}body:has(.mobile-menu[open]){overflow:hidden}}@media print{.site-header{display:none}}.hero{grid-template-columns:minmax(0,1fr) minmax(280px,.7fr);align-items:center;gap:clamp(2rem,5vw,5rem);padding:3rem 0;display:grid}.hero-copy{min-inline-size:0;padding-block:.5rem}.hero h1{letter-spacing:-.055em;margin-bottom:1.4rem;font-size:clamp(2.3rem,4.3vw,4rem);font-weight:750;line-height:1.25}.hero h1 em{color:var(--blog-color-heading-accent);font-style:normal}.hero-intro{color:var(--blog-color-muted);max-width:29rem;margin-bottom:1.8rem;font-size:.95rem;line-height:1.95}.hero-action{border:1px solid var(--blog-color-link);border-radius:var(--blog-radius-control);background:var(--blog-color-link);min-block-size:2.9rem;color:var(--blog-color-page);justify-content:space-between;align-items:center;gap:2.5rem;padding:.75rem 1rem;font-size:.85rem;font-weight:600;display:inline-flex}.hero-action:hover{background:var(--blog-color-text);border-color:var(--blog-color-text);color:var(--blog-color-page)}.hero-index{border-block-start:1px solid var(--blog-color-border);color:var(--blog-color-muted);flex-wrap:wrap;gap:1.8rem;margin-block-start:1.8rem;padding-block-start:1.4rem;font-size:.7rem;display:flex}.hero-index>span{align-items:baseline;gap:.7rem;display:flex}.hero-index strong{font:1.35rem/1 var(--blog-font-code);color:var(--blog-color-text)}.topic-section{padding:2.5rem 0}.topic-section h2{font-size:1.1rem}.topic-list{flex-wrap:wrap;gap:1rem;display:flex}.topic-list a{border:1px solid var(--blog-color-border);border-radius:var(--blog-radius-control);background:var(--blog-color-surface);justify-content:space-between;gap:1rem;min-width:8rem;padding:.7rem .9rem;font-size:.9rem;display:flex}@media (width<=1000px){.hero{grid-template-columns:minmax(0,1fr) minmax(260px,.7fr);gap:2rem}}@media (width<=56rem){.hero{gap:1.5rem;padding:2rem 0}.hero h1{font-size:clamp(2rem,4.5vw,2.8rem)}}@media (width<=42rem){.hero{grid-template-columns:minmax(0,1fr)}.hero h1{font-size:clamp(2.2rem,8vw,3rem)}.hero-index{gap:1.4rem}}.article-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.25rem;display:grid}.article-card{border:1px solid var(--blog-color-border);border-radius:var(--blog-radius-card);background:var(--blog-color-surface);flex-direction:column;min-width:0;padding:1.5rem;display:flex}.article-card.featured{background:var(--blog-color-tint);border-color:var(--blog-color-link)}.article-card:hover{border-color:var(--blog-color-link)}.card-topline{border-block-end:1px solid var(--blog-color-border);justify-content:space-between;align-items:center;gap:1rem;margin-block-end:1rem;padding-block-end:.9rem;display:flex}.card-kind{font:.65rem var(--blog-font-ui);letter-spacing:.08em;color:var(--blog-color-muted);align-items:center;gap:.5rem;display:flex}.card-kind:before{content:"";background:var(--blog-color-border);block-size:5px;inline-size:5px}.featured .card-kind:before{background:var(--blog-color-highlight)}.card-language{font:.65rem var(--blog-font-code);color:var(--blog-color-muted)}.article-meta{font-family:var(--blog-font-code);color:var(--blog-color-muted);flex-wrap:wrap;gap:.55rem;font-size:.78rem;display:flex}.article-card h3{margin:.75rem 0 .8rem;font-size:1.35rem}.article-card h3 a{justify-content:space-between;gap:1rem;display:flex}.card-arrow{font-family:var(--blog-font-ui);color:var(--blog-color-highlight);font-size:1.15rem}.article-card p{color:var(--blog-color-muted);margin-bottom:1.4rem;font-size:.9rem;line-height:1.9}.card-bottom{justify-content:space-between;align-items:center;gap:1rem;margin-block-start:auto;display:flex}.card-mark{color:var(--blog-color-border);font:1rem var(--blog-font-code)}.tag-links{font-family:var(--blog-font-ui);flex-wrap:wrap;gap:.5rem;font-size:.78rem;display:flex}.tag-links a{color:var(--blog-color-link);border:1px solid var(--blog-color-border);border-radius:3px;padding:.2rem .5rem;font-size:.7rem}.listing{padding-bottom:2rem}.pagination{justify-content:center;align-items:center;gap:2rem;margin-top:3rem;display:flex}.pagination a{border-bottom:1px solid var(--blog-color-border);padding:.6rem}.article-heading{max-width:calc(100% - var(--blog-toc-width) - var(--blog-article-gap));padding:3rem 0 2.5rem}.article-heading h1{margin-bottom:1.25rem;font-size:clamp(1.9rem,3.5vw,2.8rem)}.article-description{color:var(--blog-color-muted);line-height:1.9}.article-heading .tag-links{margin-top:1.2rem}.article-body{grid-template-columns:minmax(0, 1fr) var(--blog-toc-width);gap:var(--blog-article-gap);display:grid}.article-body>aside{min-width:0}.article-outline{max-block-size:calc(100dvh - var(--blog-nav-height) - 4rem);border-block-start:2px solid var(--blog-color-highlight);padding-block-start:.8rem;font-size:.85rem;position:sticky;inset-block-start:calc(var(--blog-nav-height) + 2rem);overflow-y:auto}.article-outline summary{cursor:pointer;letter-spacing:.05em;font-size:.75rem;font-weight:600}.article-outline nav{border-inline-start:1px solid var(--blog-color-border);padding-inline-start:.8rem}.article-outline ol{padding:0;list-style:none}.article-outline li{margin:.7rem 0}.article-outline li ol{color:var(--blog-color-muted);padding-inline-start:.8rem;font-size:.8rem}.article-outline a{overflow-wrap:anywhere}.article-end{max-width:calc(100% - var(--blog-toc-width) - var(--blog-article-gap));border-top:1px solid var(--blog-color-border);color:var(--blog-color-muted);margin-top:3rem;padding:1.5rem 0;font-size:.85rem}.related-section{margin-top:2rem}.archive-year{border-top:1px solid var(--blog-color-border);grid-template-columns:100px 1fr;gap:2rem;padding:1.6rem 0;display:grid}.archive-year h2{font-size:1.5rem}.archive-year ul{margin:0;padding:0;list-style:none}.archive-year li{justify-content:space-between;gap:1rem;padding:.8rem 0;display:flex}.archive-year time{color:var(--blog-color-muted);white-space:nowrap;font-size:.8rem}@media (width<=56rem){.article-grid{grid-template-columns:1fr}.article-card{padding:1.4rem}.article-body{flex-direction:column;display:flex}.article-body>aside{order:-1}.article-outline{max-block-size:none;position:static}.article-heading,.article-end{max-width:none}.article-heading{padding:2.5rem 0 1.5rem}.article-outline nav{max-height:12rem;overflow:auto}.archive-year{grid-template-columns:1fr;gap:0}.archive-year li{flex-wrap:wrap}}.preferences summary{cursor:pointer;padding:.3rem 0}.preferences-panel{background:var(--blog-color-surface);border:1px solid var(--blog-color-border);border-radius:var(--blog-radius-card);min-width:230px;margin-block-start:.75rem;padding:1rem}.preference-row{gap:.4rem;margin-bottom:.8rem;display:grid}@media (width<=42rem){.preferences-panel{min-width:0;inline-size:min(15rem,100vw - 2.2rem)}}:root[data-theme-transition=snapshot]::view-transition-group(root){animation-duration:var(--blog-theme-duration);animation-timing-function:ease-in-out}:root[data-theme-transition=snapshot]::view-transition-old(root){animation-duration:var(--blog-theme-duration);animation-timing-function:ease-in-out}:root[data-theme-transition=snapshot]::view-transition-new(root){animation-duration:var(--blog-theme-duration);animation-timing-function:ease-in-out}:root[data-theme-transition=snapshot]::view-transition{pointer-events:none}:root[data-theme-transition=colors],:root[data-theme-transition=colors] *,:root[data-theme-transition=colors] :before,:root[data-theme-transition=colors] :after{transition-property:color,background-color,border-color,outline-color,fill,stroke,box-shadow;transition-duration:var(--blog-theme-duration);transition-timing-function:ease-in-out}@media (prefers-reduced-motion:reduce){:root::view-transition-group(root){animation:none!important}:root::view-transition-old(root){animation:none!important}:root::view-transition-new(root){animation:none!important}}.search-dialog{border:1px solid var(--blog-color-border);border-radius:var(--blog-radius-card);background:var(--blog-color-page);width:min(640px,100vw - 2rem);max-height:80dvh;color:var(--blog-color-text);margin-block-start:0;padding:1.5rem;inset-block-start:10vh}.search-dialog::backdrop{background:var(--blog-color-backdrop);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.search-heading{justify-content:space-between;align-items:center;margin-bottom:1rem;display:flex}.search-heading button{border:0}.search-dialog input{width:100%;padding:.85rem;font-size:1.1rem}.search-status{color:var(--blog-color-muted);margin-top:1rem;font-size:.9rem}.search-results{margin:0;padding:0;list-style:none}.search-results li{border-top:1px solid var(--blog-color-border)}.search-results a{padding:1rem .3rem;display:block}.search-results p{color:var(--blog-color-muted);margin:.4rem 0 0;font-size:.85rem}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}@media print{.site-header,.site-footer,.article-outline,.related-section,.article-end,.copy,.math-copy{display:none!important}.site-shell{padding:0}.article-body{display:block}.article-heading{padding-top:0}:root{--blog-color-page:white!important;--blog-color-text:black!important;--blog-color-muted:#444!important;--blog-color-link:black!important;--blog-color-code:#f5f5f5!important;--lightningcss-light:initial!important;--lightningcss-dark: !important;color-scheme:light!important}.prose{max-width:none}}.figure-images{display:grid}.figure-images img{grid-area:1/1;min-inline-size:0}.figure-dark,:root[data-theme=dark] .figure-light{opacity:0;visibility:hidden}:root[data-theme=dark] .figure-dark{opacity:1;visibility:visible}@media (prefers-color-scheme:dark){:root:not([data-theme]):not([data-mode=light]) .figure-light{opacity:0;visibility:hidden}:root:not([data-theme]):not([data-mode=light]) .figure-dark{opacity:1;visibility:visible}}:root[data-theme-transition=colors] .figure-images img{transition:opacity var(--blog-theme-duration) ease-in-out, visibility var(--blog-theme-duration)}@media (prefers-reduced-motion:reduce){.figure-images img{transition:none!important}}@media print{:root .typst-figure .figure-light{opacity:1;visibility:visible}:root .typst-figure .figure-dark{display:none}}.range-field[data-v-7d3f965a]{min-inline-size:0;font:.875rem/1.5 var(--blog-font-ui);gap:.4rem;display:grid}.range-heading[data-v-7d3f965a]{justify-content:space-between;align-items:baseline;gap:1rem;display:flex}output[data-v-7d3f965a]{color:var(--blog-color-muted);font-variant-numeric:tabular-nums}input[data-v-7d3f965a]{block-size:2.75rem;inline-size:100%;min-inline-size:0;accent-color:var(--blog-color-link);cursor:pointer;background:0 0;border:0;margin:0;padding:0}input[data-v-7d3f965a]:disabled{cursor:not-allowed;opacity:.55}.reading-preview[data-v-11ff57f8]{border:1px solid var(--blog-color-border);border-radius:var(--blog-radius-card);background:var(--blog-color-surface);min-inline-size:0;padding:clamp(1.25rem,4vw,2rem)}.preview-label[data-v-11ff57f8]{color:var(--blog-color-muted);font:.8rem/1.5 var(--blog-font-ui);margin:0 0 1.5rem}.preview-alphabet[data-v-11ff57f8]{color:var(--blog-color-muted);font-size:.85em}.reading-specimen pre[data-v-11ff57f8]{background:var(--blog-color-code);border-radius:var(--blog-radius-control);margin:0;padding:1rem}.settings-page[data-v-9f9d5b7d]{padding-block-end:2rem}.settings-layout[data-v-9f9d5b7d]{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:2rem;display:grid}.settings-controls[data-v-9f9d5b7d]{min-inline-size:0}.settings-section[data-v-9f9d5b7d]{border:1px solid var(--blog-color-border);border-radius:var(--blog-radius-card);background:var(--blog-color-surface);margin-block-end:1.5rem;padding:clamp(1.1rem,3vw,1.5rem)}.settings-section h2[data-v-9f9d5b7d]{margin:0 0 1.25rem;font-size:1rem}.settings-fields[data-v-9f9d5b7d]{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.25rem;display:grid}.settings-fields .preference-row[data-v-9f9d5b7d]{margin:0;font-size:.875rem}.settings-note[data-v-9f9d5b7d]{color:var(--blog-color-muted);margin:1.25rem 0 0;font-size:.8rem}.reset-preferences[data-v-9f9d5b7d]{min-block-size:2.75rem}@media (width<=959px){.settings-layout[data-v-9f9d5b7d]{grid-template-columns:minmax(0,1fr)}}@media (width<=479px){.settings-fields[data-v-9f9d5b7d]{grid-template-columns:minmax(0,1fr)}}}@layer skin{:root[data-skin=mono]{--blog-font-heading:var(--blog-font-ui);--blog-color-link:var(--blog-color-text)}[data-skin=mono] .article-grid{grid-template-columns:1fr}[data-skin=mono] .article-card{background:var(--blog-color-surface)}[data-skin=mono] .hero h1 em{font-style:normal}}.mode-icon[data-v-fa48f6dc]{stroke:currentColor;stroke-width:1.3px;flex-shrink:0;block-size:1.1rem;inline-size:1.1rem}@layer base.mathjax{mjx-container[overflow=scroll][display]{overflow:auto clip;min-width:initial!important}mjx-container[overflow=truncate][display]{overflow:hidden clip;min-width:initial!important}mjx-container[display]{text-align:center;justify-content:center;margin:.7em 0;padding:.3em 2px;display:block}mjx-container[display][width=full]{display:flex}mjx-container[justify=left]{text-align:left;justify-content:left}mjx-container[justify=right]{text-align:right;justify-content:right}mjx-container[jax=SVG]{white-space:nowrap;direction:ltr}mjx-container[jax=SVG]>svg{min-width:1px;min-height:1px;overflow:visible}mjx-container[jax=SVG]>svg a{fill:#00f;stroke:#00f}rect[data-sre-highlighter-bbox].mjx-selected{stroke:#000;stroke-width:80px}rect[data-sre-highlighter-added]:has(+.mjx-selected){stroke:#000;stroke-width:80px}@media (prefers-color-scheme:dark){rect[data-sre-highlighter-bbox].mjx-selected{stroke:#c8c8c8}rect[data-sre-highlighter-added]:has(+.mjx-selected){stroke:#c8c8c8}}mjx-container[jax=SVG] mjx-break{white-space:normal;clip-path:rect(0 0 0 0);line-height:0;font-family:MJX-ZERO!important}mjx-break[size="0"]{letter-spacing:-.999em}mjx-break[size="1"]{letter-spacing:-.889em}mjx-break[size="2"]{letter-spacing:-.833em}mjx-break[size="3"]{letter-spacing:-.778em}mjx-break[size="4"]{letter-spacing:-.722em}mjx-break[size="5"]{letter-spacing:-.667em}mjx-container[jax=SVG] mjx-break[newline]:before{white-space:pre;content:"\a "}mjx-break[newline]+svg[width="0.054ex"]{margin-right:-1px}mjx-break[prebreak]{letter-spacing:-.999em}@font-face{font-family:MJX-ZERO;src:url(data:application/x-font-woff;charset=utf-8;base64,T1RUTwAJAIAAAwAQQ0ZGIGnFMZkAAARQAAAAlE9TLzJpUWOBAAABAAAAAGBjbWFwAAwAUwAABAQAAAAsaGVhZCFRvpAAAACcAAAANmhoZWEC8AD9AAAA1AAAACRobXR4A+gAAAAABOQAAAAIbWF4cAACUAAAAAD4AAAABm5hbWVNb8+2AAABYAAAAqNwb3N0AAMAAAAABDAAAAAgAAEAAAABAABVWOu4Xw889QADA+gAAAAA3ym+2AAAAADfKb7YAAAAAAPoAAAAAAADAAIAAAAAAAAAAQAAAu79EgAAA+gAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAIAAFAAAAIAAAADA+gB9AAFAAACigK7AAAAjAKKArsAAAHfADEBAgAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAABYWFhYAEAAIAAgAu79EgAAAu4C7gAAAAEAAAAAAXcAAAAgACAAAAAAACIBngABAAAAAAAAAAEAQQABAAAAAAABAAsAAAABAAAAAAACAAcAIQABAAAAAAADABUAxgABAAAAAAAEABMANgABAAAAAAAFAAsApQABAAAAAAAGABIAbwABAAAAAAAHAAEAQQABAAAAAAAIAAEAQQABAAAAAAAJAAEAQQABAAAAAAAKAAEAQQABAAAAAAALAAEAQQABAAAAAAAMAAEAQQABAAAAAAANAAEAQQABAAAAAAAOAAEAQQABAAAAAAAQAAsAAAABAAAAAAARAAcAIQADAAEECQAAAAIAXwADAAEECQABABYACwADAAEECQACAA4AKAADAAEECQADACoA2wADAAEECQAEACYASQADAAEECQAFABYAsAADAAEECQAGACQAgQADAAEECQAHAAIAXwADAAEECQAIAAIAXwADAAEECQAJAAIAXwADAAEECQAKAAIAXwADAAEECQALAAIAXwADAAEECQAMAAIAXwADAAEECQANAAIAXwADAAEECQAOAAIAXwADAAEECQAQABYACwADAAEECQARAA4AKG1qeC1sbS16ZXJvAG0AagB4AC0AbABtAC0AegBlAHIAb1JlZ3VsYXIAUgBlAGcAdQBsAGEAcm1qeC1sbS16ZXJvIFJlZ3VsYXIAbQBqAHgALQBsAG0ALQB6AGUAcgBvACAAUgBlAGcAdQBsAGEAcm1qeC1sbS16ZXJvUmVndWxhcgBtAGoAeAAtAGwAbQAtAHoAZQByAG8AUgBlAGcAdQBsAGEAclZlcnNpb24gMC4xAFYAZQByAHMAaQBvAG4AIAAwAC4AMSA6bWp4LWxtLXplcm8gUmVndWxhcgAgADoAbQBqAHgALQBsAG0ALQB6AGUAcgBvACAAUgBlAGcAdQBsAGEAcgAAAAABAAMAAQAAAAwABAAgAAAABAAEAAEAAAAg//8AAAAg////4QABAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAEAQABAQETbWp4LWxtLXplcm9SZWd1bGFyAAEBASf4GwD4HAL4HQP4HgSLi/mC+nwFHQAAAIYPHQAAAIkRix0AAACUEgAFAQEMHyoxNlZlcnNpb24gMC4xbWp4LWxtLXplcm8gUmVndWxhcm1qeC1sbS16ZXJvUmVndWxhcnNwYWNlAAAAAYsAAgEBAwaLDvp8DgAAAAAD6AAA)format("woff")}g[data-mml-node=merror]>g{fill:red;stroke:red}g[data-mml-node=merror]>rect[data-background]{fill:#ff0;stroke:none}g[data-mml-node=mtable]>line[data-line],svg[data-table]>g>line[data-line],g[data-mml-node=mtable]>rect[data-frame],svg[data-table]>g>rect[data-frame]{stroke-width:70px;fill:none}g[data-mml-node=mtable]>.mjx-dashed,svg[data-table]>g>.mjx-dashed{stroke-dasharray:140}g[data-mml-node=mtable]>.mjx-dotted,svg[data-table]>g>.mjx-dotted{stroke-linecap:round;stroke-dasharray:0 140}g[data-mml-node=mtable]>g>svg{overflow:visible}[jax=SVG] mjx-tool{width:0;height:0;display:inline-block;position:relative}[jax=SVG] mjx-tool>mjx-tip{position:absolute;top:0;left:0}mjx-tool>mjx-tip{color:#000;background-color:#f8f8f8;border:1px solid #888;padding:.2em;line-height:0;display:inline-block;box-shadow:2px 2px 5px #aaa}g[data-mml-node=maction][data-toggle]{cursor:pointer}mjx-status{color:#000;background-color:#f8f8f8;border:1px solid #888;min-width:25%;padding:.2em .4em;font-size:90%;display:block;position:fixed;bottom:1em;left:1em}g[data-mjx-collapsed]{fill:#55f}@media (prefers-color-scheme:dark){mjx-tool>mjx-tip{color:#e0e0e0;background-color:#303030;box-shadow:2px 2px 5px #000}mjx-status{color:#e0e0e0;background-color:#303030}g[data-mjx-collapsed]{fill:#88f}}foreignObject[data-mjx-xml]{font-family:initial;line-height:normal;overflow:visible}foreignObject[data-mjx-html]{overflow:visible}mjx-measure-xml{white-space:normal;line-height:normal;display:inline-block;position:absolute;top:0;left:0}mjx-html{text-align:initial;white-space:initial;line-height:normal;display:inline-block}mjx-html-holder{display:block;position:absolute;inset:0}mjx-container[jax=SVG] path[data-c],mjx-container[jax=SVG] use[data-c]{stroke-width:3px}}
/*$vite$:1*/