@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(*),[data-astro-transition-scope]{animation:none!important}}.astro-route-announcer{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;top:0;left:0;overflow:hidden}.site-footer[data-astro-cid-jo6i4kqk]{margin-top:var(--footer-gap);border-top:1px solid var(--border);font-size:var(--fs-caption);color:var(--muted)}.footer-inner[data-astro-cid-jo6i4kqk]{gap:var(--space-4);padding-top:var(--space-8);padding-bottom:calc(var(--space-8) + var(--safe-bottom));display:grid}.footer-primary[data-astro-cid-jo6i4kqk],.footer-secondary[data-astro-cid-jo6i4kqk]{justify-content:space-between;align-items:baseline;gap:var(--space-2) var(--space-8);flex-wrap:wrap;display:flex}.footer-inner[data-astro-cid-jo6i4kqk] p[data-astro-cid-jo6i4kqk]{margin:0}.footer-copyright[data-astro-cid-jo6i4kqk]{color:var(--text);font-weight:500}.footer-secondary[data-astro-cid-jo6i4kqk]{font-size:var(--fs-meta)}.footer-links[data-astro-cid-jo6i4kqk]{gap:var(--space-5);flex-wrap:wrap;display:flex}.site-footer[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]{color:var(--muted)}.site-footer[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]:hover{color:var(--text)}.footer-secondary[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]{text-decoration:underline;text-decoration-color:var(--border);text-underline-offset:.25em}.footer-secondary[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]:hover{text-decoration-color:currentColor}.footer-secondary[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk][rel~=license]{white-space:nowrap}@media (width<=640px){.footer-primary[data-astro-cid-jo6i4kqk],.footer-secondary[data-astro-cid-jo6i4kqk]{flex-direction:column;align-items:flex-start}.footer-primary[data-astro-cid-jo6i4kqk]{gap:var(--space-4)}}@media (any-pointer:coarse){.footer-links[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]{min-height:var(--control-size);align-items:center;display:inline-flex}.footer-links[data-astro-cid-jo6i4kqk]{gap:var(--space-1) var(--space-5)}}button[data-astro-cid-vy5be4ad]{right:var(--page-inset-right);bottom:max(var(--gutter), var(--safe-bottom));z-index:5;border:1px solid var(--border);background:var(--bg);position:fixed}button[data-astro-cid-vy5be4ad][hidden]{display:none}button[data-astro-cid-vy5be4ad]:hover{background:var(--bg-soft);color:var(--accent)}@media (prefers-reduced-motion:no-preference){button[data-astro-cid-vy5be4ad]{transition:opacity var(--motion-enter) var(--ease-enter), transform var(--motion-enter) var(--ease-enter), background-color var(--motion-fast) var(--ease-ui), color var(--motion-fast) var(--ease-ui), display var(--motion-enter) allow-discrete}button[data-astro-cid-vy5be4ad][hidden]{opacity:0;transform:translateY(var(--motion-distance)) scale(.95)}@starting-style{button[data-astro-cid-vy5be4ad]:not([hidden]){opacity:0;transform:translateY(var(--motion-distance)) scale(.95)}}button[data-astro-cid-vy5be4ad] svg{transition:transform var(--motion-fast) var(--ease-ui)}@media (hover:hover){button[data-astro-cid-vy5be4ad]:hover svg{transform:translateY(calc(-1 * var(--motion-nudge)))}}button[data-astro-cid-vy5be4ad]:active{transform:scale(.95)}}:root{--serif:"Noto Serif SC", "Source Han Serif SC", "Songti SC", serif;--sans:system-ui, -apple-system, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;--mono:ui-monospace, "SF Mono", Menlo, Consolas, monospace;--fs-title:clamp(2rem, 1.4rem + 2.4vw, 2.75rem);--fs-entry:clamp(1.3rem, 1.15rem + .6vw, 1.5rem);--fs-h2:1.5rem;--fs-h3:1.2rem;--fs-group:1.75rem;--fs-caption:.875rem;--fs-label:.75rem;--fs-body:1.0625rem;--fs-small:.9375rem;--fs-meta:.8125rem;--measure:40rem;--wrap:68rem;--bp-mini:480px;--bp-compact:640px;--bp-menu:960px;--bp-measure:1024px;--bp-toc:1279px;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--space-10:2.5rem;--space-12:3rem;--space-16:4rem;--gutter:var(--space-6);--page-start:var(--space-16);--page-head-padding:var(--space-6);--page-head-gap:var(--space-8);--section-gap:var(--space-12);--footer-gap:var(--space-16);--leading-body:1.85;--leading-ui:1.6;--leading-title:1.3;--radius-sm:3px;--radius-md:6px;--radius-lg:8px;--control-size:2.75rem;--focus-width:2px;--focus-offset:4px;--scroll-trigger:320px;--entry-padding:var(--space-8);--entry-gap:var(--space-3);--post-row-padding:var(--space-3);--safe-top:env(safe-area-inset-top,0px);--safe-right:env(safe-area-inset-right,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--safe-left:env(safe-area-inset-left,0px);--page-inset-left:max(var(--gutter), var(--safe-left));--page-inset-right:max(var(--gutter), var(--safe-right));--header-bar-height:4rem;--header-height:calc(var(--header-bar-height) + var(--safe-top) + 1px);--motion-fast:.18s;--motion-enter:.25s;--motion-page:.32s;--motion-exit:.22s;--motion-fade:.12s;--motion-delay:60ms;--motion-sweep:.5s;--motion-handoff:.1s;--motion-handoff-late:80ms;--motion-progress-delay:.2s;--motion-progress-step:.26s;--motion-progress-ramp:90ms;--motion-distance:8px;--motion-page-distance:32px;--motion-nudge:2px;--motion-arrow:3px;--ease-ui:ease;--ease-enter:cubic-bezier(.2, .7, .2, 1);--ease-exit:ease-in;--ease-progress:cubic-bezier(.22, 1, .36, 1)}@media (width>=1024px){:root{--measure:48rem}}:root{--pagefind-ui-scale:.92;--pagefind-ui-primary:var(--accent);--pagefind-ui-text:var(--text);--pagefind-ui-background:var(--bg);--pagefind-ui-border:var(--border);--pagefind-ui-tag:var(--bg-soft);--pagefind-ui-border-width:1px;--pagefind-ui-border-radius:var(--radius-md);--pagefind-ui-font:var(--sans)}@media (width<=640px){:root{--gutter:var(--space-4);--page-start:var(--space-10);--section-gap:var(--space-10);--footer-gap:var(--space-12);--entry-padding:var(--space-6);--fs-body:1rem;--fs-h2:1.3rem;--fs-group:1.5rem}}@media (width<=960px) and (height<=500px){:root{--header-bar-height:3.5rem;--page-start:var(--space-6)}}:root{--card-padding:var(--space-5);--card-gap:var(--space-3);--card-grid-gap:var(--space-4);--card-radius:var(--radius-md);--card-title-size:var(--fs-body);--card-description-size:var(--fs-small)}@media (width<=480px){:root{--card-padding:var(--space-4);--card-grid-gap:var(--space-3)}}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:calc(var(--header-height) + var(--space-4));scrollbar-gutter:stable;-webkit-text-size-adjust:100%;text-size-adjust:100%}body{background:var(--bg);min-height:100dvh;color:var(--text);font-family:var(--sans);font-size:var(--fs-body);line-height:var(--leading-body);transition:background-color var(--motion-enter) var(--ease-ui), color var(--motion-enter) var(--ease-ui);flex-direction:column;margin:0;display:flex}body>main{flex:1;min-width:0}button,input,textarea,select{font:inherit}a{color:var(--accent);text-decoration:none}a:hover{text-underline-offset:.25em;text-decoration:underline}.wrap{max-width:var(--wrap);padding:0 var(--page-inset-right) 0 var(--page-inset-left);margin:0 auto}.content{max-width:calc(var(--measure) + var(--page-inset-left) + var(--page-inset-right));padding:0 var(--page-inset-right) var(--space-4) var(--page-inset-left);margin:0 auto}.meta{align-items:center;gap:var(--space-2) var(--space-4);font-size:var(--fs-meta);letter-spacing:.06em;color:var(--muted);flex-wrap:wrap;line-height:1.6;display:flex}.sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.skip-link{top:var(--space-2);z-index:30;padding:var(--space-2) var(--space-4);background:var(--bg);border:1px solid var(--accent);border-radius:var(--radius-md);font-size:var(--fs-meta);transform:translate(-50%, calc(-100% - var(--space-4)));position:fixed;left:50%}.skip-link:focus-visible{transform:translate(-50%)}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}body{transition:none}}:where(a,button,summary,input,textarea,select,[tabindex]):focus-visible{outline:var(--focus-width) solid var(--accent);outline-offset:var(--focus-offset)}.ui-icon-button{width:var(--control-size);height:var(--control-size);border-radius:var(--radius-md);color:var(--muted);cursor:pointer;touch-action:manipulation;background:0 0;border:0;flex:none;place-items:center;padding:0;display:inline-grid}.ui-icon-button:hover{color:var(--text);background:var(--bg-soft)}.ui-button{justify-content:center;align-items:center;gap:var(--space-2);min-height:var(--control-size);padding:var(--space-2) var(--space-3);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg);color:var(--accent);font-size:var(--fs-small);line-height:var(--leading-ui);cursor:pointer;touch-action:manipulation;display:inline-flex}.ui-button:hover{border-color:var(--accent);background:var(--bg-soft);text-decoration:none}.ui-button--primary{padding-inline:var(--space-6);border-color:var(--accent);background:var(--accent);color:var(--bg);font-weight:600}.ui-button--primary:hover{border-color:var(--text);background:var(--text)}.ui-icon-button[hidden],.ui-button[hidden]{display:none}@media (prefers-reduced-motion:no-preference){.ui-icon-button,.ui-button{transition:color var(--motion-fast) var(--ease-ui), background-color var(--motion-fast) var(--ease-ui), border-color var(--motion-fast) var(--ease-ui)}}.pin,.draft{font-size:var(--fs-label);color:var(--accent);border-radius:var(--radius-sm);letter-spacing:.1em;border:1px solid;padding:.04em .35em .11em .45em;line-height:1.35}.draft{color:var(--muted);font-family:var(--sans);white-space:nowrap;vertical-align:middle;font-weight:400;display:inline-block}.arr{width:1.05em;height:1.05em;transition:transform var(--motion-fast) var(--ease-ui);flex:none}.arr path{stroke-width:1.75px}a:hover .arr[data-icon$=right]{transform:translateX(var(--motion-arrow))}a:hover .arr[data-icon$=left]{transform:translateX(calc(-1 * var(--motion-arrow)))}a:hover .arr[data-icon$=up-right]{transform:translate(var(--motion-nudge), calc(-1 * var(--motion-nudge)))}@media (prefers-reduced-motion:reduce){.arr,a:hover .arr[data-icon]{transition:none;transform:none}}.intro,.page-head,.post-header,.prose>h1:first-child{padding-block:var(--page-start) var(--page-head-padding);border-bottom:2px solid var(--rule)}.intro h1,.page-head h1,.post-header h1,.prose>h1:first-child{font-family:var(--serif);font-size:var(--fs-title);font-weight:700;line-height:var(--leading-title);overflow-wrap:anywhere;text-wrap:pretty;margin:0}.intro p,.page-head p{margin:var(--space-2) 0 0;color:var(--muted);font-size:var(--fs-small)}.post-header,.prose>h1:first-child{margin-bottom:var(--page-head-gap)}.post-header h1{margin-block:var(--space-3) var(--space-5)}.site-header{z-index:10;padding-top:var(--safe-top);background:var(--bg);border-bottom:1px solid var(--border);position:sticky;top:0}@supports (backdrop-filter:blur(10px)){.site-header{background:color-mix(in srgb, var(--bg) 82%, transparent);backdrop-filter:blur(10px)}}.header-inner{align-items:center;gap:var(--space-8);min-height:var(--header-bar-height);flex-wrap:wrap;display:flex}.brand{align-items:center;gap:var(--space-3);font-family:var(--serif);font-weight:700;font-size:var(--fs-h3);color:var(--text);white-space:nowrap;display:inline-flex}.brand:hover{text-decoration:none}.brand img{border-radius:50%;width:28px;height:28px}.nav{gap:var(--space-6);font-size:var(--fs-small);margin-left:auto;display:flex}.nav a{color:var(--muted);padding:var(--space-2) 0;white-space:nowrap;background:linear-gradient(currentColor,currentColor) 0 100%/0 1px no-repeat}.nav a:hover{color:var(--text);background-size:100% 1px;text-decoration:none}.nav a[aria-current=page]{color:var(--text);background-size:100% 1px}.header-actions{gap:var(--space-1);margin-right:calc(-10px + min(10px, var(--safe-right)));flex:none;display:flex}#theme-btn svg,#nav-btn,#toc-btn{display:none}#nav-btn{margin-left:calc(-10px + min(10px, var(--safe-left)))}#toc-btn[aria-expanded=true]{color:var(--accent);background:var(--accent-weak)}@media (width<=1279px){#toc-btn{display:inline-grid}}.site-header[data-nav-open] #nav-btn .i-menu,#nav-btn .i-close{display:none}.site-header[data-nav-open] #nav-btn .i-close,html[data-mode=auto] #theme-btn .i-auto,html[data-mode=light] #theme-btn .i-light,html[data-mode=dark] #theme-btn .i-dark{display:block}.nav .ext{align-items:center;gap:.3em;display:inline-flex}@keyframes icon-in{0%{opacity:0;transform:rotate(-90deg)scale(.6)}}@media (prefers-reduced-motion:no-preference){.nav a{transition:color var(--motion-fast) var(--ease-ui), background-size var(--motion-fast) var(--ease-ui)}#theme-btn.switched svg{animation:icon-in var(--motion-enter) var(--ease-enter)}.header-actions button:active svg{transform:scale(.88)}@media (width<=960px){.nav{transition:opacity var(--motion-enter) var(--ease-enter), transform var(--motion-enter) var(--ease-enter), display var(--motion-enter) allow-discrete}.site-header:not([data-nav-open]) .nav{opacity:0;transform:translateY(calc(-1 * var(--motion-distance)))}@starting-style{.site-header[data-nav-open] .nav{opacity:0;transform:translateY(calc(-1 * var(--motion-distance)))}}}}@media (width<=960px){.brand{min-width:0;font-size:clamp(1rem,4.5vw,1.2rem)}.brand-title{text-overflow:ellipsis;overflow:hidden}.brand img{display:none}.header-inner{gap:var(--space-1);flex-wrap:nowrap}#nav-btn{margin-right:var(--space-2);display:inline-grid}.header-actions{margin-left:auto}.nav{max-height:calc(100dvh - var(--header-height));overscroll-behavior:contain;scroll-padding-bottom:max(var(--space-4), var(--safe-bottom));padding:var(--space-2) var(--page-inset-right) max(var(--space-4), var(--safe-bottom)) var(--page-inset-left);background:var(--bg);border-bottom:1px solid var(--border);font-size:var(--fs-body);flex-direction:column;gap:0;margin:0;display:none;position:absolute;top:100%;left:0;right:0;overflow-y:auto}.site-header[data-nav-open] .nav{display:flex}html:not([data-theme]) .site-header{position:static}html:not([data-theme]) .header-inner{flex-wrap:wrap}html:not([data-theme]) #nav-btn,html:not([data-theme]) .header-actions{display:none}html:not([data-theme]) .site-header .nav{max-height:none;padding:var(--space-1) 0 var(--space-2);opacity:1;border-bottom:none;flex-flow:wrap;flex-basis:100%;gap:0;display:flex;position:static;transform:none}.nav a{min-height:var(--control-size);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);background:0 0;align-items:center;display:flex}.nav a:hover{background:var(--bg-soft)}.nav a[aria-current=page]{background:var(--accent-weak)}}@media (any-pointer:coarse){.nav a{min-height:var(--control-size);align-items:center;display:inline-flex}}#search-dialog{--search-viewport-height:100dvh;--search-viewport-top:0px;--search-gap:clamp(var(--space-2), calc(var(--search-viewport-height) * .06), var(--space-16));--search-top-gap:max(var(--search-gap), var(--safe-top));--search-bottom-gap:max(var(--search-gap), var(--safe-bottom));inset-inline:var(--page-inset-left) var(--page-inset-right);width:auto;max-width:40rem;margin-inline:auto;margin-top:calc(var(--search-viewport-top) + var(--search-top-gap));border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg);color:var(--text);max-height:calc(var(--search-viewport-height) - var(--search-top-gap) - var(--search-bottom-gap));padding:0;overflow:hidden}#search-dialog[open]{flex-direction:column;display:flex}#search-dialog::backdrop{background:#00000059}#search-dialog mark{background:var(--accent-weak);color:var(--text)}@media (prefers-reduced-motion:no-preference){#search-dialog,#search-dialog::backdrop{transition:opacity var(--motion-enter) var(--ease-enter), transform var(--motion-enter) var(--ease-enter), overlay var(--motion-enter) allow-discrete, display var(--motion-enter) allow-discrete}#search-dialog:not([open]){opacity:0;transform:translateY(calc(-1 * var(--motion-distance))) scale(.98)}#search-dialog:not([open])::backdrop{opacity:0}@starting-style{#search-dialog[open]{opacity:0;transform:translateY(calc(-1 * var(--motion-distance))) scale(.98)}#search-dialog[open]::backdrop{opacity:0}}}.search-heading{justify-content:space-between;align-items:center;gap:var(--space-4);padding:var(--space-2) var(--space-3) var(--space-2) var(--space-5);border-bottom:1px solid var(--border);flex:none;display:flex}.search-heading h2{font-size:var(--fs-body);margin:0;font-weight:600}.search-body{min-height:0;padding:var(--space-5);overscroll-behavior:contain;flex:auto;overflow-y:auto}@media (width<=640px){#search-dialog{--pagefind-ui-scale:.85}.search-body{padding:var(--space-4)}}#search-status{color:var(--muted);font-size:var(--fs-small);margin:0}body:has(#search-dialog[open]){overflow:hidden}.intro .stats{margin-top:var(--space-1);font-size:var(--fs-meta);letter-spacing:.04em}.post-list .draft{margin-left:var(--space-2)}.post-list{margin:0;padding:0;list-style:none}.post-list li{gap:var(--space-4);padding:var(--post-row-padding) 0;border-bottom:1px solid var(--border);grid-template-columns:4.5rem minmax(0,1fr) auto;align-items:baseline;display:grid}.post-list.full-date li{grid-template-columns:8rem minmax(0,1fr) auto}.post-list time{font-size:var(--fs-meta);letter-spacing:.06em;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}.post-list .title{color:var(--text)}.post-list .title:hover{color:var(--accent)}.post-list .cat{font-size:var(--fs-meta);white-space:nowrap}@media (prefers-reduced-motion:no-preference){.post-list .title{transition:color var(--motion-fast) var(--ease-ui), background-color var(--motion-fast) var(--ease-ui), border-color var(--motion-fast) var(--ease-ui)}}@media (width<=640px){.post-list li,.post-list.full-date li{grid-template-columns:4rem minmax(0,1fr)}.post-list.full-date li{grid-template-columns:7.25rem minmax(0,1fr)}.post-list .cat{display:none}}@media (width<=480px){.post-list.full-date li{gap:var(--space-1);grid-template-columns:minmax(0,1fr)}}@media (any-pointer:coarse){.post-list .title{min-height:var(--control-size);display:block}}.years,.cloud{gap:var(--space-2) var(--space-6);margin-top:var(--space-4);flex-wrap:wrap;display:flex}.years a{color:var(--muted);font-size:var(--fs-small)}.years a[aria-current=page]{color:var(--text);font-weight:600}.cloud a{font-size:var(--fs-body)}.cloud sup{font-size:var(--fs-label);color:var(--muted);margin-left:.15rem}.group-head{align-items:baseline;gap:var(--space-3);font-family:var(--serif);font-size:var(--fs-group);margin:var(--section-gap) 0 var(--space-2);font-weight:700;line-height:1.4;display:flex}.group-head span{font-family:var(--sans);font-size:var(--fs-meta);letter-spacing:.06em;color:var(--muted);font-weight:400}@media (any-pointer:coarse){.cloud a,.years a{min-height:var(--control-size);align-items:center;display:inline-flex}.cloud,.years{gap:var(--space-1) var(--space-4)}.cloud a,.years a{padding-inline:var(--space-1)}}.post-pn .draft{margin-left:var(--space-2)}.post-pn .dir{align-items:center;gap:.3em;display:inline-flex}.post-layout{max-width:calc(var(--measure) + 35rem);grid-template-columns:minmax(0, 1fr) minmax(0, var(--measure)) minmax(0, 1fr);column-gap:var(--space-6);display:grid}.post-header,.post-main{grid-column:2;min-width:0}.post-side{grid-area:2/3;min-width:0}.byline{align-items:center;gap:var(--space-2) var(--space-4);font-size:var(--fs-caption);color:var(--muted);flex-wrap:wrap;display:flex}.byline img{border-radius:50%;width:24px;height:24px}.byline b{color:var(--text);font-weight:600}.hero-image{border-radius:var(--radius-md);width:100%;height:auto;margin-bottom:var(--space-10);display:block}.post-pn{margin-top:var(--section-gap);border-top:2px solid var(--rule);border-bottom:1px solid var(--border);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.post-pn>*{padding:var(--space-6) var(--space-6) var(--space-6) 0}.post-pn>:last-child{padding:var(--space-6) 0 var(--space-6) var(--space-6);border-left:1px solid var(--border);text-align:right}.post-pn a{color:var(--text)}.post-pn a:hover{text-decoration:none}.post-pn a:hover b{color:var(--accent)}.post-pn .dir{font-size:var(--fs-meta);letter-spacing:.06em;color:var(--muted);margin-bottom:.35rem}.post-pn b{font-family:var(--serif);font-size:var(--fs-h3);line-height:1.5;display:block}.post-pn .none{color:var(--muted);font-size:var(--fs-small);display:block}@media (prefers-reduced-motion:no-preference){.post-pn b{transition:color var(--motion-fast) var(--ease-ui), background-color var(--motion-fast) var(--ease-ui), border-color var(--motion-fast) var(--ease-ui)}}@media (width<=1279px){.post-layout{grid-template-columns:minmax(0, var(--measure));justify-content:center}.post-header,.post-main{grid-column:1}.post-side{display:none}}@media (width<=640px){.post-pn{grid-template-columns:minmax(0,1fr)}.post-pn>*,.post-pn>:last-child{padding:var(--space-5) 0;text-align:left;border-left:0}.post-pn>:last-child{border-top:1px solid var(--border)}}.toc{top:calc(var(--header-height) + 2rem);max-height:calc(100dvh - var(--header-height) - 4rem);border-left:1px solid var(--border);font-size:var(--fs-caption);line-height:1.6;position:sticky;overflow-y:auto}.toc-title{margin:0 0 var(--space-3);padding-left:var(--space-4);font-size:var(--fs-label);letter-spacing:.12em;color:var(--muted)}.toc ol{margin:0;padding:0;list-style:none}.toc a{padding:.3rem 0 .3rem var(--space-4);color:var(--muted);border-left:2px solid #0000;margin-left:-1px;display:block}.toc ol ol a{padding-left:var(--space-8)}.toc a:hover{color:var(--text);text-decoration:none}.toc a.active{color:var(--text);border-left-color:var(--accent);background:var(--accent-weak)}.toc-panel{max-height:calc(100dvh - var(--header-height));overscroll-behavior:contain;padding:var(--space-4) var(--page-inset-right) max(var(--space-4), var(--safe-bottom)) var(--page-inset-left);background:var(--bg);border-bottom:1px solid var(--border);font-size:var(--fs-small);display:none;position:absolute;top:100%;left:0;right:0;overflow-y:auto}.toc-panel-title{max-width:var(--measure);margin:0 auto var(--space-3);font-size:var(--fs-caption);letter-spacing:.06em;color:var(--muted)}.toc-panel ol{max-width:var(--measure);margin:0 auto;padding:0;line-height:1.7;list-style:none}.toc-panel ol ol{padding-left:var(--space-4);border-left:1px solid var(--border);margin:0}.toc-panel a{min-height:var(--control-size);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);color:var(--text);overflow-wrap:anywhere;align-items:center;display:flex}.toc-panel a:hover{background:var(--bg-soft);text-decoration:none}.toc-panel a.active{color:var(--accent);background:var(--accent-weak);font-weight:600}@media (prefers-reduced-motion:no-preference){.toc a{transition:color var(--motion-fast) var(--ease-ui), background-color var(--motion-fast) var(--ease-ui), border-color var(--motion-fast) var(--ease-ui)}.toc-panel a{transition:color var(--motion-fast) var(--ease-ui), background-color var(--motion-fast) var(--ease-ui)}.toc-panel:not([hidden]){animation:vt-rise-in var(--motion-enter) var(--ease-enter) both}}@media (width<=1279px){.toc-panel:not([hidden]){display:block}}.giscus-wrap{margin-top:var(--section-gap)}.giscus-wrap h2{font-family:var(--serif);font-size:var(--fs-h3);margin:0 0 var(--space-4)}@media (any-pointer:coarse){.comments-help a{min-height:var(--control-size);align-items:center;display:inline-flex}}giscus-comments{display:block}.comments-status,.comments-help{color:var(--muted);font-size:var(--fs-small)}.comments-help{align-items:center;gap:var(--space-2) var(--space-4);flex-wrap:wrap;display:flex}.comments-help a{align-items:center;gap:var(--space-1);display:inline-flex}.prose{font-size:var(--fs-body);line-height:var(--leading-body);overflow-wrap:break-word}.prose p{margin:0 0 1.1em}.prose h2,.prose h3,.prose h4{font-family:var(--serif);font-weight:700;line-height:1.4}.prose h2{font-size:var(--fs-h2);margin:var(--space-12) 0 var(--space-4)}.prose h3{font-size:var(--fs-h3);margin:var(--space-8) 0 var(--space-3)}.prose h4{font-size:var(--fs-body);margin:var(--space-6) 0 var(--space-2)}.prose a{text-decoration:underline 1px;text-decoration-color:var(--border);text-underline-offset:.25em}.prose a:hover{text-decoration-color:var(--accent)}.prose img{max-width:100%;height:auto;margin:var(--space-6) auto;border-radius:var(--radius-md);display:block}.prose code{font-family:var(--mono);background:var(--bg-soft);border-radius:var(--radius-sm);padding:.12em .35em;font-size:.875em}.prose pre code{font-size:inherit;background:0 0;padding:0}html[data-theme] .prose .expressive-code{--ec-codeBg:var(--bg-soft);--ec-frm-edBg:var(--bg-soft);--ec-frm-trmBg:var(--bg-soft);--ec-frm-trmTtbBg:var(--bg-soft);--ec-frm-edActTabBg:var(--bg-soft);--ec-frm-edTabBarBg:var(--bg-soft);--ec-brdCol:var(--border);--ec-frm-trmTtbBrdBtmCol:var(--border);--ec-frm-edTabBarBrdBtmCol:var(--border);--ec-brdRad:var(--radius-md);--ec-frm-frameBoxShdCssVal:none;--ec-codeFontFml:var(--mono);margin:var(--space-5) 0 var(--space-6)}.prose blockquote{margin:var(--space-6) 0;padding:.1rem 0 .1rem var(--space-5);border-left:2px solid var(--rule);color:var(--muted)}.prose blockquote p{margin:.4em 0}.prose blockquote>p:first-child>strong:first-child:is(:only-child,:has(+br)){font-size:var(--fs-meta);letter-spacing:.1em;color:var(--accent);display:block}.prose blockquote>p:first-child>strong:first-child+br{display:none}.prose blockquote ul,.prose blockquote ol{margin:var(--space-1) 0;padding-left:var(--space-5)}.prose table{width:100%;margin:var(--space-6) 0;border-collapse:collapse;font-size:var(--fs-small);display:block;overflow-x:auto}.prose th,.prose td{padding:.6rem var(--space-4) .6rem 0;border-bottom:1px solid var(--border);text-align:left;vertical-align:top}.prose th{font-size:var(--fs-meta);letter-spacing:.06em;color:var(--muted);border-bottom-color:var(--rule);font-weight:600}.prose hr{width:4rem;height:0;margin:var(--space-12) auto var(--space-8);border:0;border-top:1px solid var(--muted)}.prose hr+h2{margin-top:0}.prose sup a{font-size:var(--fs-label);text-decoration:none}.prose .footnotes{margin-top:var(--space-8);padding-top:var(--space-4);border-top:1px solid var(--border);font-size:var(--fs-caption);color:var(--muted);line-height:1.7}.prose input[type=checkbox]{accent-color:var(--accent)}@media (prefers-reduced-motion:no-preference){.prose a{transition:text-decoration-color var(--motion-fast) var(--ease-ui)}}@media (prefers-reduced-motion:reduce){.glightbox-container,.glightbox-container *{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}html[data-astro-transition]{scroll-behavior:auto}.nav-progress{z-index:20;background:var(--accent);transform-origin:0;opacity:0;pointer-events:none;will-change:transform, opacity;height:2px;position:fixed;inset:0 0 auto;overflow:hidden;transform:scaleX(0)}.nav-progress:after{content:"";opacity:0;background:linear-gradient(90deg,#0000,#ffffffe6,#0000);position:absolute;inset:0;transform:translate(-100%)}.nav-progress.is-done{box-shadow:0 0 6px var(--accent)}.nav-progress.is-done:after{animation:nav-progress-sweep var(--motion-sweep) var(--ease-progress) forwards}@keyframes nav-progress-sweep{0%{opacity:0;transform:translate(-100%)}30%{opacity:1}to{opacity:0;transform:translate(100%)}}@media (prefers-reduced-motion:reduce){.nav-progress.is-done:after{animation:none}}html[data-astro-transition]::view-transition-old(root),html[data-astro-transition]::view-transition-old(*):only-child{animation:vt-fade-out var(--motion-fade) var(--ease-exit) both}html[data-astro-transition=forward]::view-transition-new(root),html[data-astro-transition=forward]::view-transition-new(*):only-child{animation:vt-rise-in var(--motion-enter) var(--ease-enter) var(--motion-delay) both}html[data-astro-transition=back]::view-transition-new(root),html[data-astro-transition=back]::view-transition-new(*):only-child{animation:vt-sink-in var(--motion-enter) var(--ease-enter) var(--motion-delay) both}html[data-astro-transition^=page-] [data-post-title=list]{view-transition-name:none}html[data-astro-transition=page-next]::view-transition-old(root){animation:vt-out-left var(--motion-exit) var(--ease-exit) both}html[data-astro-transition=page-next]::view-transition-new(root){animation:vt-in-right var(--motion-page) var(--ease-enter) both}html[data-astro-transition=page-prev]::view-transition-old(root){animation:vt-out-right var(--motion-exit) var(--ease-exit) both}html[data-astro-transition=page-prev]::view-transition-new(root){animation:vt-in-left var(--motion-page) var(--ease-enter) both}html[data-theme-switching] [data-astro-transition-scope]{view-transition-name:none}html[data-theme-switching] *{transition:none!important}html[data-theme-switching]::view-transition-old(root),html[data-theme-switching]::view-transition-new(root){animation-duration:var(--motion-enter);animation-timing-function:var(--ease-ui)}@media (prefers-reduced-motion:reduce){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}}@keyframes vt-fade-out{to{opacity:0}}@keyframes vt-rise-in{0%{opacity:0;transform:translateY(var(--motion-distance))}}@keyframes vt-sink-in{0%{opacity:0;transform:translateY(calc(-1 * var(--motion-distance)))}}@keyframes vt-out-left{to{opacity:0;transform:translateX(calc(-1 * var(--motion-page-distance)))}}@keyframes vt-out-right{to{opacity:0;transform:translateX(var(--motion-page-distance))}}@keyframes vt-in-right{0%{opacity:0;transform:translateX(var(--motion-page-distance))}}@keyframes vt-in-left{0%{opacity:0;transform:translateX(calc(-1 * var(--motion-page-distance)))}}[data-post-title=list],[data-post-title=post]{view-transition-class:title}::view-transition-group(*.title){animation-duration:var(--motion-page);animation-timing-function:var(--ease-enter)}::view-transition-old(*.title),::view-transition-new(*.title){transform-origin:0 0;inline-size:auto}@keyframes vt-title-grow-old{to{transform:translateY(var(--vt-title-dy,0px)) scale(var(--vt-title-scale,1))}}@keyframes vt-title-grow-new{0%{transform:translateY(calc(var(--vt-title-dy,0px) / var(--vt-title-scale,1) * -1)) scale(calc(1 / var(--vt-title-scale,1)))}}@keyframes vt-title-fade-out{to{opacity:0}}@keyframes vt-title-fade-in{0%{opacity:0}}.content-cards,.github-repo-cards,.friend-grid{grid-template-columns:repeat(var(--card-columns,2), minmax(0, 1fr));gap:var(--card-grid-gap);margin:var(--space-6) 0;padding:0;list-style:none;display:grid}.content-cards[data-columns="1"]{grid-template-columns:minmax(0,1fr)}.content-cards[data-columns="3"]{grid-template-columns:repeat(3,minmax(0,1fr))}.friend-grid{margin-top:0}.friend-grid>li{min-width:0}.custom-card,.prose .custom-card{min-width:0;height:100%;padding:var(--card-padding);border:1px solid var(--border);border-radius:var(--card-radius);background:var(--bg);color:var(--text);font-family:var(--sans);font-size:var(--card-description-size);overflow-wrap:anywhere;line-height:1.6;text-decoration:none}a.custom-card:hover{border-color:var(--accent);color:var(--text);text-decoration:none}@media (prefers-reduced-motion:no-preference){a.custom-card{transition:border-color var(--motion-fast) var(--ease-ui)}}@media (width<=640px){.content-cards[data-columns],.github-repo-cards,.friend-grid{grid-template-columns:minmax(0,1fr)}}.github-repo-cards>.github-repo-card{min-width:0;margin:0}.github-repo-cards .github-repo-card__link{grid-template-rows:auto 1fr auto;min-width:0;height:100%}.github-repo-cards .github-repo-card__description{align-self:start}.github-repo-card{margin:var(--space-6) 0;color:var(--text);font-family:var(--sans);font-size:var(--fs-small);line-height:1.6;display:block}.github-repo-card__link{gap:var(--card-gap);display:grid}.github-repo-card__header{align-items:flex-start;gap:var(--space-3);display:flex}.github-repo-card svg{width:1rem;height:1rem;color:var(--muted);flex:none;display:block}.github-repo-card__header>svg{width:1.25rem;height:1.25rem;margin-top:.125rem}.github-repo-card__name{font-size:var(--card-title-size);overflow-wrap:anywhere;min-width:0;color:var(--muted);flex:1;line-height:1.4}.github-repo-card__name strong{color:var(--text);font-weight:600}.github-repo-card__arrow{padding-top:var(--space-1)}.github-repo-card__description{overflow-wrap:anywhere;-webkit-line-clamp:2;min-height:3.2em;color:var(--muted);font-size:var(--card-description-size);-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.github-repo-card__meta{align-items:center;gap:var(--space-2) var(--space-4);min-height:1.6em;color:var(--muted);font-size:var(--fs-meta);font-variant-numeric:tabular-nums;flex-wrap:wrap;display:flex}.github-repo-card__metric{align-items:center;gap:.375rem;display:inline-flex}.github-repo-card__dot{background:var(--accent);border-radius:50%;width:.5rem;height:.5rem}.github-repo-card__source{margin-left:auto}.github-repo-card [hidden]{display:none}.content-card{gap:var(--card-gap);flex-direction:column;display:flex}.content-card__header{align-items:flex-start;gap:var(--space-2);color:var(--muted);font-size:var(--card-description-size);display:flex}.content-card__icon{flex:none;width:1.25rem;height:1.25rem;margin-top:.125rem}.content-card__description{min-width:0}.content-card__title{font-size:var(--card-title-size);font-weight:600;line-height:1.4}
