@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/jetbrains-mono-latin-400-normal.V6pRDFza.woff2)format("woff2"),url(/_astro/jetbrains-mono-latin-400-normal.6-qcROiO.woff)format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/jetbrains-mono-latin-600-normal.C8RAYTDA.woff2)format("woff2"),url(/_astro/jetbrains-mono-latin-600-normal.BfsvjouI.woff)format("woff")}:root{--background:#fafafa;--foreground:#18181b;--muted:#71717a;--surface:#fff;--surface-strong:#f4f4f5;--border:#18181b1f;--blueprint:#18181b09;--accent:#1d9bf0;--amber:#f59e0b;--r-card:22px;--r-lg:28px;--r-md:16px;--r-sm:12px;--shadow-sm:0 1px 2px #0000000d;--shadow-hover:0 12px 30px #0000000f;--ease-out:cubic-bezier(.16, 1, .3, 1);--ease-spring:cubic-bezier(.34, 1.56, .64, 1);--font-ui:-apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI Variable", "Segoe UI", "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Noto Sans SC", "Source Han Sans SC", "Microsoft YaHei UI", "Microsoft YaHei", Roboto, Arial, sans-serif;--font-mono:"JetBrains Mono", "SFMono-Regular", Menlo, Monaco, Consolas, monospace}@media (prefers-color-scheme:dark){:root{--background:#000;--foreground:#f4f4f5;--muted:#a1a1aa;--surface:#0a0a0a;--surface-strong:#111113;--border:#ffffff21;--blueprint:#ffffff09}}html[data-theme=light]{--background:#fafafa;--foreground:#18181b;--muted:#71717a;--surface:#fff;--surface-strong:#f4f4f5;--border:#18181b1f;--blueprint:#18181b09}html[data-theme=dark]{--background:#000;--foreground:#f4f4f5;--muted:#a1a1aa;--surface:#0a0a0a;--surface-strong:#111113;--border:#ffffff21;--blueprint:#ffffff09}.type-brand{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.type-tech-label{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;font-size:.75rem;font-weight:400;line-height:1rem}.type-meta-label{font-family:var(--font-ui);letter-spacing:.02em;font-size:.75rem;font-weight:400;line-height:1rem}.type-numeric{font-family:var(--font-mono);font-variant-numeric:tabular-nums}*{box-sizing:border-box}html{background:var(--background);text-size-adjust:100%;min-height:100%}body{min-height:100vh;color:var(--foreground);background:linear-gradient(to right, var(--blueprint) 1px, transparent 1px), linear-gradient(to bottom, var(--blueprint) 1px, transparent 1px), var(--background);font-family:var(--font-ui);background-size:24px 24px;margin:0;line-height:1.7;overflow-x:clip}a{color:inherit;text-decoration:none}h1,h2,h3{text-wrap:balance;margin:0}p,ul,ol{margin:0}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none;padding:0}a[href],button:not(:disabled){transition-duration:.18s;transition-timing-function:var(--ease-out)}a[href]:active,button:not(:disabled):active{transform:scale(.985)}a:focus-visible,button:focus-visible{outline:1px solid var(--accent);outline-offset:2px}::selection{background:color-mix(in srgb, var(--accent) 24%, transparent)}.muted{color:var(--muted)}.site-page{min-height:100vh;padding:max(1rem, env(safe-area-inset-top)) max(1rem, env(safe-area-inset-right)) max(1rem, env(safe-area-inset-bottom)) max(1rem, env(safe-area-inset-left))}.page-grid{gap:1rem;width:100%;max-width:72rem;margin:0 auto;display:grid}@media (width>=640px){.site-page{padding:max(1.5rem, env(safe-area-inset-top)) max(1.5rem, env(safe-area-inset-right)) max(1.5rem, env(safe-area-inset-bottom)) max(1.5rem, env(safe-area-inset-left))}.page-grid{gap:1.5rem}}@media (width>=1024px){.site-page{padding-left:max(2rem, env(safe-area-inset-left));padding-right:max(2rem, env(safe-area-inset-right))}}@keyframes page-enter{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.page-enter{animation:page-enter .35s var(--ease-out) both}.card{border:1px solid var(--border);border-radius:var(--r-card);background:color-mix(in srgb, var(--surface) 95%, transparent);box-shadow:var(--shadow-sm)}@media (width>=640px){.card-lg{border-radius:var(--r-lg)}}.motion-surface:is(a[href],button:not(:disabled),section){transition:background-color .22s var(--ease-out), border-color .22s var(--ease-out), box-shadow .22s var(--ease-out), transform .22s var(--ease-out)}.motion-button:is(a[href],button:not(:disabled)){transition:background-color .18s var(--ease-out), border-color .18s var(--ease-out), color .18s var(--ease-out), transform .18s var(--ease-spring)}@media (hover:hover) and (pointer:fine){.motion-surface:is(a[href]):hover{box-shadow:var(--shadow-hover);transform:translateY(-2px)}.motion-button:is(a[href],button:not(:disabled)):hover{transform:translateY(-1px)}}:is(a[href],button:not(:disabled)) .motion-icon{transition:transform .22s var(--ease-spring)}:is(a[href],button:not(:disabled)):hover .motion-icon{transform:translate(1px,-1px)}.header-card{padding:1rem}@media (width>=640px){.header-card{padding:1.75rem}}.hero-grid{gap:1.5rem;display:grid}@media (width>=1280px){.hero-grid{grid-template-columns:minmax(0,1fr) 480px;align-items:end}}.hero-title{letter-spacing:-.01em;max-width:64rem;font-size:clamp(2.25rem,6vw,3.75rem);font-weight:600;line-height:1.15}.quick-links{grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem;display:grid}@media (width>=640px){.quick-links{grid-template-columns:repeat(4,minmax(0,1fr));gap:.75rem}}.nav-chip{border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface);min-width:0;height:3rem;box-shadow:var(--shadow-sm);justify-content:space-between;align-items:center;gap:.5rem;padding:0 .85rem;font-size:.875rem;display:flex}@media (width>=640px){.nav-chip{padding:0 1rem}}.nav-chip:hover{border-color:var(--accent);background:var(--surface-strong)}.nav-chip-label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.status-bar{flex-wrap:wrap;align-items:center;gap:.75rem 1.5rem;min-width:0;padding:.75rem;display:flex}.status-option{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.status-option>.type-meta-label{color:var(--muted);padding:0 .25rem}.status-metrics{color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums;flex-wrap:wrap;align-items:center;gap:.5rem 1rem;margin-left:auto;display:flex}.segment-group{border:1px solid var(--border);background:var(--surface);border-radius:999px;align-items:center;gap:.25rem;padding:.25rem;display:flex}.segment-animated{--segment-count:2;--segment-index:0;isolation:isolate;display:grid;position:relative;overflow:hidden}.segment-count-2{--segment-count:2;grid-template-columns:repeat(2,minmax(max-content,1fr))}.segment-count-3{--segment-count:3;grid-template-columns:repeat(3,minmax(max-content,1fr))}.segment-animated:before{content:"";z-index:0;width:calc((100% - .5rem - ((var(--segment-count) - 1) * .25rem)) / var(--segment-count));transform:translateX(calc(var(--segment-index) * (100% + .25rem)));transition:transform .3s var(--ease-spring);background:linear-gradient(#fff 0%,#f4f4f5 100%);border-radius:999px;position:absolute;top:.25rem;bottom:.25rem;left:.25rem;box-shadow:inset 0 0 0 1px #ffffffb8,0 2px 8px #0000001a}.segment-choice{z-index:1;min-width:3.25rem;height:2rem;color:var(--muted);border:1px solid #0000;border-radius:999px;justify-content:center;align-items:center;gap:.4rem;padding:0 .75rem;font-size:.78rem;transition-property:background-color,border-color,color,transform;display:inline-flex;position:relative}.segment-choice:hover{color:var(--foreground);background:var(--surface-strong)}.segment-choice.choice-active{color:#111113}.segment-choice.choice-active:hover{background:0 0}.segment-choice .type-brand{font-size:.78rem;font-weight:600;line-height:1}.page-url{max-width:100%;font-family:var(--font-mono);color:var(--muted);align-items:center;gap:.4rem;font-size:.75rem;display:flex}.page-url-text{text-overflow:ellipsis;white-space:nowrap;text-transform:lowercase;user-select:all;min-width:0;overflow:hidden}.page-url-text.page-url-upper{text-transform:uppercase;letter-spacing:.05em}.page-url-copy{color:var(--muted);flex-shrink:0;justify-content:center;align-items:center;transition-property:color,transform;display:inline-flex}.page-url-copy:hover{color:var(--foreground)}.page-url-copy .icon-copy,.page-url-copy .icon-check{align-items:center;display:inline-flex}.page-url-copy .icon-check{color:var(--accent);display:none}.page-url-copy[data-copied=true] .icon-check{display:inline-flex}.page-url-copy[data-copied=true] .icon-copy{display:none}.page-header{gap:.9rem;display:grid}.page-header h1{letter-spacing:.01em;font-size:clamp(1.9rem,4vw,3rem);font-weight:600;line-height:1.25}.page-header .page-desc{max-width:42rem;color:var(--muted);font-size:.9rem;line-height:1.8}.page-header-meta{color:var(--muted);flex-wrap:wrap;gap:.5rem 1.25rem;display:flex}.content-card{padding:.75rem}@media (width>=640px){.content-card{padding:1.5rem}}.content-toolbar{border-bottom:1px solid var(--border);align-items:center;gap:.75rem;margin-bottom:1rem;padding-bottom:.75rem;display:flex}.back-btn{border:1px solid var(--border);width:2.75rem;height:2.75rem;color:var(--muted);border-radius:999px;place-items:center;transition-property:border-color,background-color,color,transform;display:grid}.back-btn:hover{border-color:var(--accent);background:var(--surface-strong);color:var(--foreground)}.content-toolbar .toolbar-label{color:var(--muted)}.index-nav{padding:.75rem}@media (width>=640px){.index-nav{padding:1rem}}.index-nav-label{color:var(--muted);margin:0 0 .75rem;padding:0 .25rem}.index-nav-grid{gap:.5rem;display:grid}@media (width>=640px){.index-nav-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=1024px){.index-nav-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}.index-nav-item{border:1px solid var(--border);border-radius:var(--r-md);background:var(--background);justify-content:space-between;align-items:center;gap:1rem;padding:.75rem;display:flex}.index-nav-item:hover{border-color:var(--accent);background:var(--surface-strong)}.index-nav-item .index-left{align-items:center;gap:.75rem;min-width:0;display:flex}.index-nav-item .index-code{color:var(--muted)}.index-nav-item .index-title{white-space:nowrap;font-size:.875rem;font-weight:500}.index-nav-item .index-count{color:var(--muted);font-size:.75rem}.module{gap:.75rem;scroll-margin-top:1rem;display:grid}.module-label{color:var(--muted);align-items:baseline;gap:.75rem;padding:0 .25rem;display:flex}.module-label h2{font-size:.9rem;font-weight:500}.card-grid{gap:1rem;display:grid}@media (width>=640px){.card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.post-card{grid-template-rows:auto 1fr auto;min-height:0;padding:1rem;display:grid}@media (width>=640px){.post-card{min-height:11rem}}.post-card:hover{border-color:var(--accent);background:var(--surface-strong)}.post-card-top{justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.post-card-id{color:var(--muted);align-items:center;gap:.75rem;display:flex}.icon-tile{border:1px solid var(--border);border-radius:var(--r-md);background:var(--background);width:2.5rem;height:2.5rem;color:var(--foreground);place-items:center;display:grid}.status-pill{border:1px solid var(--border);color:var(--muted);white-space:nowrap;border-radius:999px;align-items:center;padding:.25rem .65rem;display:inline-flex}.post-card-body{padding:1rem 0}.post-card-title{font-size:1.1rem;font-weight:600;line-height:1.5}.post-card-desc{color:var(--muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-top:.5rem;font-size:.875rem;line-height:1.7;display:-webkit-box;overflow:hidden}.post-card-foot{border-top:1px solid var(--border);color:var(--muted);justify-content:space-between;align-items:center;gap:.75rem;padding-top:.75rem;display:flex}.post-card-foot-right{align-items:center;gap:.6rem;display:inline-flex}.post-card-date{font-size:.75rem}.tag{border:1px solid var(--border);background:var(--surface);font-family:var(--font-mono);letter-spacing:.05em;text-transform:uppercase;color:var(--muted);border-radius:999px;align-items:center;gap:.4rem;padding:.4rem .85rem;font-size:.75rem;transition-property:border-color,color,background-color,transform;display:inline-flex}a.tag:hover,button.tag:hover,.tag[aria-pressed=true]{color:var(--foreground);border-color:var(--accent);background:var(--surface-strong)}.tag .tag-count{color:var(--muted)}.tag-grid{flex-wrap:wrap;gap:.5rem;display:flex}.tag-filter{flex-wrap:wrap;gap:.5rem;margin-bottom:1rem;display:flex}.post-layout{gap:2rem;display:grid}@media (width>=1024px){.post-layout{grid-template-columns:minmax(0,1fr) 13rem;gap:2.5rem}}.post-title{font-size:clamp(1.8rem,4vw,2.6rem);font-weight:600;line-height:1.35}.toc{display:none}@media (width>=1024px){.toc{border-left:1px solid var(--border);align-self:start;padding:1rem 0 1rem 1.25rem;display:block;position:sticky;top:1.5rem}.toc-title{color:var(--muted);margin-bottom:.75rem}.toc ul{gap:.5rem;padding:0;list-style:none;display:grid}.toc a{color:var(--muted);font-size:.82rem;line-height:1.5;display:block}.toc a:hover{color:var(--accent)}}.post-nav{gap:.75rem;display:grid}@media (width>=640px){.post-nav{grid-template-columns:1fr 1fr}}.post-nav-card{gap:.4rem;padding:1rem 1.25rem;display:grid}.post-nav-card:hover{border-color:var(--accent);background:var(--surface-strong)}.post-nav-title{white-space:nowrap;text-overflow:ellipsis;font-size:.95rem;font-weight:600;overflow:hidden}.post-nav-next{text-align:right;justify-items:end}.prose{overflow-wrap:break-word;font-size:1rem;line-height:1.9}.prose>*+*{margin-top:1.15rem}.prose h2{border-top:1px solid var(--border);margin-top:3rem;padding-top:1.5rem;font-size:1.45rem;font-weight:600;line-height:1.45}.prose h3{margin-top:2.25rem;font-size:1.15rem;font-weight:600;line-height:1.45}.prose a{color:var(--accent);text-underline-offset:3px;text-decoration:underline;text-decoration-color:color-mix(in srgb, var(--accent) 45%, transparent)}.prose a:hover{text-decoration-color:var(--accent)}.prose strong{font-weight:600}.prose code{font-family:var(--font-mono);background:var(--surface-strong);border:1px solid var(--border);border-radius:6px;padding:.1em .35em;font-size:.85em}.prose pre{border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface-strong);padding:1rem 1.25rem;font-size:.85rem;line-height:1.7;overflow-x:auto}.prose pre code{font-size:inherit;background:0 0;border:0;padding:0}html[data-theme=dark] .astro-code,html[data-theme=dark] .astro-code span{color:var(--shiki-dark)!important;font-style:inherit!important;font-weight:inherit!important;background-color:#0000!important;text-decoration:none!important}.prose blockquote{border-left:2px solid var(--accent);color:var(--muted);margin:1.5rem 0;padding:.25rem 0 .25rem 1.1rem}.prose ul,.prose ol{gap:.35rem;padding-left:1.4rem;display:grid}.prose li::marker{color:var(--muted)}.prose hr{border:0;border-top:1px solid var(--border);margin:2.5rem 0}.prose table{border-collapse:collapse;border:1px solid var(--border);border-radius:var(--r-sm);width:100%;font-size:.88rem}.prose th{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;text-align:left;color:var(--muted);background:var(--surface-strong);border-bottom:1px solid var(--border);padding:.6rem .85rem;font-size:.72rem;font-weight:600}.prose td{border-bottom:1px solid var(--border);padding:.6rem .85rem}.prose tr:last-child td{border-bottom:0}.prose img{border:1px solid var(--border);border-radius:var(--r-sm);max-width:100%;height:auto}.fact-list{border:1px solid var(--border);border-radius:var(--r-md);display:grid;overflow:hidden}.fact-row{border-top:1px solid var(--border);background:var(--background);grid-template-columns:7rem minmax(0,1fr);gap:1rem;padding:.85rem 1rem;font-size:.9rem;display:grid}.fact-row:first-child{border-top:0}.fact-key{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);padding-top:.2rem;font-size:.72rem}.about-block{gap:1.25rem;display:grid}.about-text{color:var(--muted);gap:.75rem;font-size:.92rem;line-height:1.85;display:grid}.about-text strong{color:var(--foreground)}.about-label{color:var(--muted)}.footer-card{color:var(--muted);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem 1.5rem;padding:1rem 1.25rem;font-size:.875rem;display:flex}.footer-astro{color:var(--muted);transition-property:color}.footer-astro:hover{color:var(--accent)}@media (width<=639px){body{background-size:20px 20px}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important}}
