.toc.svelte-kga8f0{margin:0 0 32px}.toc-details.svelte-kga8f0{border-top:1px solid var(--hairline);border-bottom:1px solid var(--hairline);padding:12px 0}.toc-summary.svelte-kga8f0{cursor:pointer;font-family:var(--mono);letter-spacing:.02em;color:var(--muted);font-size:12.5px;list-style-position:inside}.toc-summary.svelte-kga8f0:focus-visible{outline:2px solid var(--link);outline-offset:3px;border-radius:2px}.toc-list.svelte-kga8f0{gap:6px;margin:10px 0 0;padding:0;list-style:none;display:grid}.toc-link.svelte-kga8f0{color:var(--muted);background-image:none;border-left:2px solid #0000;padding:2px 0 2px 12px;font-size:14.5px;line-height:1.4;text-decoration:none;display:block}.toc-link.svelte-kga8f0:hover{color:var(--ink);text-decoration:underline}.toc-link.svelte-kga8f0:focus-visible{outline:2px solid var(--link);outline-offset:2px;border-radius:2px}.toc-link[aria-current=location].svelte-kga8f0{color:var(--ink);border-left-color:var(--link);font-weight:600}@media (width>=1080px){.toc.svelte-kga8f0{max-height:calc(100vh - 120px);margin:0;position:sticky;top:96px;overflow-y:auto}.toc-details.svelte-kga8f0{border:0;padding:0}.toc-summary.svelte-kga8f0{display:none}.toc-list.svelte-kga8f0{margin-top:0}}.article-sidebar.svelte-sx9xlz{font-family:var(--mono);color:var(--muted);margin:0 0 32px;font-size:12.5px}.sidebar-facts.svelte-sx9xlz{gap:10px;margin:0 0 20px;display:grid}.sidebar-facts.svelte-sx9xlz>div:where(.svelte-sx9xlz){gap:2px;display:grid}.sidebar-facts.svelte-sx9xlz dt:where(.svelte-sx9xlz){text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-size:11px}.sidebar-facts.svelte-sx9xlz dd:where(.svelte-sx9xlz){color:var(--ink);overflow-wrap:anywhere;margin:0}@media (width>=1080px){.article-sidebar.svelte-sx9xlz{max-height:calc(100vh - 120px);margin:0;position:sticky;top:96px;overflow-y:auto}}.blog-post-shell.svelte-oboyf9{max-width:720px;padding-top:72px;padding-bottom:72px}.blog-article.svelte-oboyf9{min-width:0}.english-note.svelte-oboyf9{border:1px solid var(--hairline);border-left:4px solid var(--link);background:var(--bg-elevated);font-family:var(--mono);color:var(--ink);border-radius:8px;margin-bottom:24px;padding:12px 16px;font-size:13.5px}.back-top.svelte-oboyf9{margin-bottom:40px}@media (width>=1080px){.blog-post-shell.svelte-oboyf9{max-width:1000px}.blog-article.svelte-oboyf9{grid-template-columns:minmax(0,1fr) 220px;align-items:start;column-gap:56px;display:grid}.blog-article.svelte-oboyf9>:where(.svelte-oboyf9){grid-column:1}.english-note.svelte-oboyf9{grid-row:1}.back-top.svelte-oboyf9{grid-row:2}.blog-header.svelte-oboyf9{grid-row:3}.blog-prose.svelte-oboyf9{grid-row:4}.blog-footer.svelte-oboyf9{grid-row:5}.blog-article.svelte-oboyf9>.article-sidebar{grid-area:1/2/-1}}.blog-prose.svelte-oboyf9 figure img{cursor:zoom-in}.img-zoom.svelte-oboyf9{border:1px solid var(--hairline);background:var(--bg-elevated);width:min(96vw,1400px);max-width:none;max-height:92vh;color:var(--ink);border-radius:10px;padding:0;overflow:hidden}.img-zoom.svelte-oboyf9::backdrop{background:#0e1626b8}.zoom-bar.svelte-oboyf9{border-bottom:1px solid var(--hairline);justify-content:flex-end;gap:6px;padding:8px;display:flex}.zoom-bar.svelte-oboyf9 button:where(.svelte-oboyf9){border:1px solid var(--hairline);background:var(--bg);min-width:44px;min-height:44px;color:var(--ink);font-family:var(--mono);cursor:pointer;border-radius:6px;padding:0 12px;font-size:14px}.zoom-bar.svelte-oboyf9 button:where(.svelte-oboyf9):disabled{opacity:.4;cursor:default}.zoom-bar.svelte-oboyf9 button:where(.svelte-oboyf9):focus-visible{outline:2px solid var(--link);outline-offset:2px}.zoom-stage.svelte-oboyf9{max-height:calc(92vh - 62px);overflow:auto}.zoom-stage.svelte-oboyf9 img:where(.svelte-oboyf9){max-width:none;height:auto;margin:0 auto;display:block}.blog-cat.svelte-oboyf9{color:var(--ink);font-weight:600}.project-line.svelte-oboyf9{font-family:var(--mono);overflow-wrap:anywhere;margin-bottom:20px;font-size:13px}.project-label.svelte-oboyf9{color:var(--muted);margin-right:10px}.blog-header.svelte-oboyf9{margin-bottom:28px;padding-bottom:24px}.blog-meta-row.svelte-oboyf9{font-family:var(--mono);color:var(--muted);flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:12px;font-size:12.5px;display:flex}.blog-header.svelte-oboyf9 h1:where(.svelte-oboyf9){font-family:var(--display);letter-spacing:-.02em;color:var(--ink);font-size:clamp(32px,5.5vw,54px);font-weight:700;line-height:1.08}.blog-lead.svelte-oboyf9{color:var(--ink);margin-top:16px;font-size:20px;line-height:1.55}.tag-list.svelte-oboyf9{flex-wrap:wrap;gap:8px;margin-top:16px;list-style:none;display:flex}.tag.svelte-oboyf9{font-family:var(--mono);color:var(--muted);border:1px solid var(--hairline);background:var(--bg-elevated);border-radius:999px;padding:2px 10px;font-size:12px}.blog-prose.svelte-oboyf9 h2{font-family:var(--display);color:var(--ink);margin-top:36px;margin-bottom:14px;scroll-margin-top:84px;font-size:clamp(22px,3vw,28px);font-weight:700;line-height:1.2}.blog-prose.svelte-oboyf9 h3{font-family:var(--display);color:var(--ink);margin-top:28px;margin-bottom:10px;scroll-margin-top:84px;font-size:20px;font-weight:600;line-height:1.25}.blog-prose.svelte-oboyf9 .heading-anchor{font-family:var(--mono);color:var(--muted);opacity:0;background-image:none;margin-left:8px;font-size:.8em;transition:opacity .15s}.blog-prose.svelte-oboyf9 .heading-anchor:after{content:"#"}.blog-prose.svelte-oboyf9 h2:hover .heading-anchor,.blog-prose.svelte-oboyf9 h3:hover .heading-anchor,.blog-prose.svelte-oboyf9 .heading-anchor:focus-visible{opacity:1;color:var(--link)}.blog-prose.svelte-oboyf9 p{color:var(--ink);margin:14px 0}.blog-prose.svelte-oboyf9 ul,.blog-prose.svelte-oboyf9 ol{margin:14px 0;padding-left:22px}.blog-prose.svelte-oboyf9 li{color:var(--ink);margin:6px 0}.blog-prose.svelte-oboyf9 p code,.blog-prose.svelte-oboyf9 li code{font-family:var(--mono);color:var(--ink);background:var(--bg-elevated);border:1px solid var(--hairline);overflow-wrap:anywhere;border-radius:4px;padding:1px 6px;font-size:13.5px}.blog-prose.svelte-oboyf9 .code-block{border:1px solid var(--hairline);background:var(--bg-elevated);border-radius:8px;margin:18px 0;overflow:hidden}.blog-prose.svelte-oboyf9 .code-block-header{border-bottom:1px solid var(--hairline);background:var(--bg);justify-content:space-between;align-items:center;padding:8px 14px;display:flex}.blog-prose.svelte-oboyf9 .code-lang{font-family:var(--mono);color:var(--muted);text-transform:lowercase;font-size:12px}.blog-prose.svelte-oboyf9 .copy-btn{font-family:var(--mono);color:var(--ink);border:1px solid var(--hairline);cursor:pointer;background:0 0;border-radius:6px;padding:3px 10px;font-size:12px}.blog-prose.svelte-oboyf9 .copy-btn:hover{border-color:var(--link);color:var(--link)}.blog-prose.svelte-oboyf9 pre.shiki{font-family:var(--mono);margin:0;padding:16px;font-size:13.5px;line-height:1.65;overflow-x:auto}[data-theme=dark] .blog-prose.svelte-oboyf9 .shiki,[data-theme=dark] .blog-prose.svelte-oboyf9 .shiki span{color:var(--shiki-dark)!important;background-color:var(--shiki-dark-bg)!important}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .blog-prose.svelte-oboyf9 .shiki,:root:not([data-theme=light]) .blog-prose.svelte-oboyf9 .shiki span{color:var(--shiki-dark)!important;background-color:var(--shiki-dark-bg)!important}}.blog-footer.svelte-oboyf9{border-top:1px solid var(--hairline);margin-top:48px;padding-top:24px}.back-link.svelte-oboyf9{font-family:var(--mono);color:var(--link);background-image:none;font-size:13px;display:inline-block}.back-link.svelte-oboyf9:hover{text-decoration:underline}.blog-prose.svelte-oboyf9 figure{margin:28px 0}.blog-prose.svelte-oboyf9 figure img{border:1px solid var(--rule);border-radius:8px;width:100%;height:auto;display:block}.blog-prose.svelte-oboyf9 figcaption{color:var(--muted);margin-top:10px;font-size:14px}.blog-prose.svelte-oboyf9 a.blog-cta{background:var(--btn);color:var(--btn-fg);border-radius:999px;margin:8px 0;padding:12px 22px;font-weight:600;text-decoration:none;display:inline-block}.blog-prose.svelte-oboyf9 a.blog-cta:hover{filter:brightness(.92)}.blog-prose.svelte-oboyf9 a.blog-cta:focus-visible{outline:2px solid var(--btn);outline-offset:3px}
