@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}.theme-toggle.svelte-1kenrq5{border:1px solid var(--line);width:100%;color:var(--ink);font:inherit;cursor:pointer;background:0 0;align-items:center;gap:.55rem;padding:.65rem .75rem;display:inline-flex}.theme-toggle.svelte-1kenrq5:hover{background:var(--surface-strong)}:root{color-scheme:light;--paper:#f2f0ea;--surface:#e8e6df;--surface-strong:#d8d5cc;--ink:#1a1d1b;--muted:#5b605c;--line:#a6a49c;--accent:#963822;--accent-2:#155e63;--font-ui:"Noto Sans SC", "Microsoft YaHei UI", sans-serif;--font-body:"Noto Serif SC", "Songti SC", SimSun, serif;--font-mono:"Cascadia Mono", "SFMono-Regular", Consolas, monospace}:root[data-theme=dark]{color-scheme:dark;--paper:#121614;--surface:#1b211e;--surface-strong:#29302c;--ink:#eceae3;--muted:#afb2ac;--line:#515954;--accent:#ef8166;--accent-2:#78aeb0}*{box-sizing:border-box}html{background:var(--paper);scroll-behavior:smooth;min-width:20rem}body{color:var(--ink);background:var(--paper);font-family:var(--font-ui);margin:0;line-height:1.65}a{color:var(--accent-2)}a:focus-visible,button:focus-visible,input:focus-visible,summary:focus-visible{outline:3px solid var(--accent-2);outline-offset:3px}.skip-link{z-index:10;color:var(--paper);background:var(--ink);padding:.5rem .75rem;position:fixed;top:.5rem;left:.5rem;transform:translateY(-160%)}.skip-link:focus{transform:translateY(0)}.site-shell{grid-template-columns:minmax(15rem,20rem) minmax(0,1fr);min-height:100vh;display:grid}.sidebar{border-right:1px solid var(--line);background:var(--surface);flex-direction:column;gap:2rem;height:100vh;padding:1.5rem;display:flex;position:sticky;top:0}.brand{color:var(--ink);justify-items:start;gap:.45rem;text-decoration:none;display:grid}.brand strong{letter-spacing:.04em;font-size:1.4rem}.brand-mark{background:var(--accent);width:4.25rem;height:.36rem}.brand small,.sidebar-index{color:var(--muted);font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;font-size:.65rem}.sidebar-index{margin:0}.sidebar nav ul{gap:.4rem;margin:0;padding:0;list-style:none;display:grid}.sidebar nav a{color:var(--ink);border-left:3px solid #0000;grid-template-columns:2rem minmax(0,1fr);gap:.1rem;padding:.65rem .75rem;text-decoration:none;display:grid}.nav-index{color:var(--accent);font-family:var(--font-mono);font-size:.78rem;font-weight:800}.nav-label{gap:.1rem;display:grid}.sidebar nav a:hover,.sidebar nav a[aria-current=page]{border-left-color:var(--accent);background:var(--surface-strong)}.sidebar nav small{color:var(--muted);font-size:.72rem;line-height:1.35}.sidebar-actions{grid-template-columns:1fr 1fr;gap:.55rem;margin-top:auto;display:grid}.sidebar-actions .theme-toggle{grid-column:1/-1}.utility-link{border:1px solid var(--line);color:var(--ink);text-align:center;padding:.55rem;text-decoration:none}.utility-link:hover,.utility-link.active{background:var(--surface-strong)}main{width:min(100%,74rem);padding:clamp(1.5rem,4vw,4.5rem)}.eyebrow{color:var(--accent);font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;margin:0 0 .75rem;font-size:.78rem;font-weight:700}h1,h2,h3{line-height:1.2}h1{letter-spacing:-.055em;margin:0;font-size:clamp(2.4rem,8vw,6rem)}.lede{max-width:48rem;color:var(--muted);font-family:var(--font-body);font-size:clamp(1.05rem,2vw,1.35rem)}.empty-state{color:var(--muted)}.article-main{width:min(100%,90rem)}.article{font-family:var(--font-body);font-size:1.05rem;container-type:inline-size}.article-header,.article-visual,.article-body{min-width:0;max-width:48rem}.article-body :is(h2,h3){scroll-margin-top:6rem}.toc{border-top:2px solid var(--accent);background:var(--paper);max-width:48rem;font-family:var(--font-ui);margin:0 0 2rem;font-size:.85rem;display:block}.toc summary{cursor:pointer;align-items:center;gap:.75rem;min-height:3rem;padding:.5rem .65rem;list-style:none;display:flex}.toc summary::-webkit-details-marker{display:none}.toc summary:after{content:"+";margin-left:auto}.toc details[open]>summary:after{content:"−"}.toc [data-toc-current]{white-space:nowrap;text-overflow:ellipsis;color:var(--muted);overflow:hidden}.toc-panel{overscroll-behavior-y:contain;max-height:min(60svh,32rem);padding:.5rem;overflow-y:auto}.toc[data-enhanced]{z-index:3;border:1px solid var(--line);border-top:2px solid var(--accent);position:sticky;top:.75rem}.toc[data-enhanced]:not([data-wide]) .toc-panel{background:var(--paper);border:1px solid var(--line);position:absolute;top:100%;left:-1px;right:-1px}.toc-label{flex-shrink:0;font-weight:700}.toc ol{gap:.45rem;margin:0;padding:0;list-style:none;display:grid}.toc a{color:var(--ink);overflow-wrap:anywhere;border-left:2px solid #0000;padding:.5rem .6rem;text-decoration:none;display:block}.toc a:hover,.toc a[aria-current=location]{color:var(--accent);border-left-color:var(--accent);background:var(--surface)}.toc .toc-subitems{padding:0 0 0 1rem}@container (width>=66rem){.article-reading:has(.toc){grid-template-columns:minmax(0,48rem) minmax(0,14rem);align-items:start;gap:3rem;display:grid}.article-body{grid-area:1/1}.article-reading>.toc{border:0;border-top:2px solid var(--accent);grid-area:1/2;margin:0;position:sticky;top:1.5rem}.toc [data-toc-current]{display:none}.toc .toc-panel{max-height:calc(100dvh - 7rem)}}@media print{.toc{display:none}}.not-found{max-width:48rem;min-height:45vh;padding-top:clamp(2rem,8vh,7rem)}.not-found-actions{flex-wrap:wrap;gap:.75rem;margin-top:2rem;display:flex}.not-found-actions a{border:1px solid var(--line);color:var(--ink);padding:.6rem .85rem;text-decoration:none}.not-found-actions a:hover{border-color:var(--accent);background:var(--surface)}.article-header{margin-bottom:3rem}.article-visual{margin:0 0 3rem}.article-visual img{border:1px solid var(--line);width:100%;height:auto;display:block}.article-visual figcaption{border:1px solid var(--line);color:var(--muted);font-family:var(--font-ui);border-top:0;padding:.75rem 1rem;font-size:.85rem}.article-visual summary{color:var(--ink);cursor:pointer;font-weight:700}.article-visual dl{gap:.35rem;display:grid}.article-visual dl div{grid-template-columns:minmax(5.5rem,7rem) minmax(0,1fr);gap:1rem;display:grid}.article-visual dt{font-weight:700}.article-visual dd{overflow-wrap:anywhere;min-width:0;margin:0}.article-visual dd code{white-space:normal}.visual-downloads{flex-wrap:wrap;gap:1rem;display:flex}.article-meta{color:var(--muted);font-family:var(--font-mono);font-size:.8rem}code,pre{font-family:var(--font-mono)}pre{background:var(--surface);padding:1rem;overflow-x:auto}.site-footer{border-top:1px solid var(--line);color:var(--muted);font-family:var(--font-mono);flex-wrap:wrap;justify-content:space-between;gap:.75rem 1.5rem;margin-top:clamp(4rem,10vw,8rem);padding-top:1rem;font-size:.75rem;display:flex}.site-footer p{margin:0}.site-footer nav{flex-wrap:wrap;gap:.5rem 1rem;display:flex}.site-footer a{color:inherit;text-underline-offset:.2em}.site-footer .security-record{align-items:center;gap:.375rem;display:inline-flex}.security-record img{flex:none;width:18px;height:auto}.security-record span{overflow-wrap:anywhere}@media (width<=60rem){.site-shell{display:block}.sidebar{border-right:0;border-bottom:1px solid var(--line);height:auto;position:relative}.sidebar nav ul{grid-template-columns:repeat(2,minmax(0,1fr))}.sidebar nav small,.sidebar-index{display:none}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
