.toc[data-astro-cid-6otm4htv]{font-family:var(--font-display)}.toc-label[data-astro-cid-6otm4htv]{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-faint);margin:0 0 10px}.toc-list[data-astro-cid-6otm4htv]{list-style:none;margin:0;padding:0}.toc-link[data-astro-cid-6otm4htv]{color:var(--text-dim);text-decoration:none;font-size:13px;display:block;padding:2px 0}.toc-link[data-astro-cid-6otm4htv]:hover{color:var(--accent)}.toc-link[data-astro-cid-6otm4htv][aria-current=location]{color:var(--accent);font-weight:500}.toc--rail[data-astro-cid-6otm4htv] .toc-link[data-astro-cid-6otm4htv]{border-left:1px solid transparent;margin-left:-1px;padding-left:10px}.toc--rail[data-astro-cid-6otm4htv] .toc-link[data-astro-cid-6otm4htv][aria-current=location]{border-left-color:var(--accent)}.toc--rail[data-astro-cid-6otm4htv]{position:relative;max-height:calc(100vh - 120px);overflow-y:auto;flex-shrink:0}.toc--box[data-astro-cid-6otm4htv]{border:1px solid color-mix(in srgb,var(--text) 15%,transparent);border-radius:8px;padding:14px 18px;margin:0 0 28px}.toc--box[data-astro-cid-6otm4htv] summary[data-astro-cid-6otm4htv]{cursor:pointer;list-style:none}.toc--box[data-astro-cid-6otm4htv] summary[data-astro-cid-6otm4htv]::-webkit-details-marker{display:none}.toc--box[data-astro-cid-6otm4htv] .toc-marker[data-astro-cid-6otm4htv]:before{content:"+ ";color:var(--accent)}.toc--box[data-astro-cid-6otm4htv][open] .toc-marker[data-astro-cid-6otm4htv]:before{content:"− "}.toc--box[data-astro-cid-6otm4htv] ul[data-astro-cid-6otm4htv]{margin-top:12px}@media(max-width:800px){.toc--rail[data-astro-cid-6otm4htv]{display:none}}@media not all and (max-width:800px){.toc--box[data-astro-cid-6otm4htv]{display:none}}.fb-follow[data-astro-cid-54lafdpv]{margin-top:40px;padding:20px 24px;border:1px solid var(--border);border-radius:var(--radius-cell);background:var(--accent-soft);font-family:var(--font-display)}.fb-title[data-astro-cid-54lafdpv]{font-size:12px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--text);margin:0 0 6px}.fb-body[data-astro-cid-54lafdpv]{font-size:13px;line-height:1.6;color:var(--text-faint);margin:0 0 14px}.fb-actions[data-astro-cid-54lafdpv]{display:flex;align-items:center;flex-wrap:wrap;gap:10px 16px}.fb-link[data-astro-cid-54lafdpv]{font-size:13px;color:var(--accent);text-decoration:none}.fb-link[data-astro-cid-54lafdpv]:hover{text-decoration:underline}.fb-copy[data-astro-cid-54lafdpv]{font-family:var(--font-display);font-size:12.5px;color:var(--text-faint);background:transparent;border:1px solid var(--border-strong);border-radius:var(--radius-btn);padding:4px 12px;cursor:pointer}.fb-copy[data-astro-cid-54lafdpv]:hover:not(:disabled){color:var(--accent);border-color:var(--accent-dim)}.fb-copy[data-astro-cid-54lafdpv]:disabled{color:var(--accent);cursor:default}.fb-status[data-astro-cid-54lafdpv]{font-size:12px;color:var(--accent)}@media(max-width:800px){.fb-follow[data-astro-cid-54lafdpv]{margin-top:32px;padding:16px 18px}}.reading-progress{position:fixed;top:58px;left:0;right:0;height:3px;background:var(--accent);transform:scaleX(0);transform-origin:left;z-index:40;pointer-events:none}.reading-top{position:fixed;right:24px;bottom:24px;width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:var(--accent);color:var(--bg-deep);border:1px solid var(--border-strong);border-radius:var(--radius-btn);font-family:var(--font-display);font-size:18px;line-height:1;cursor:pointer;opacity:0;transform:translateY(8px);pointer-events:none;visibility:hidden;transition:opacity .2s ease,transform .2s ease,visibility 0s linear .2s;z-index:40}.reading-top.is-visible{opacity:1;transform:none;pointer-events:auto;visibility:visible;transition:opacity .2s ease,transform .2s ease,visibility 0s}.reading-top:hover{background:color-mix(in srgb,var(--accent) 85%,white)}@media(prefers-reduced-motion:reduce){.reading-top{transition:none}}.bd-shell[data-astro-cid-vmk4gzdo]{display:grid;grid-template-columns:220px minmax(0,1fr);gap:48px;max-width:1080px;margin:0 auto;padding:64px 32px 128px}.bd-sidebar[data-astro-cid-vmk4gzdo]{position:sticky;top:96px;align-self:start;display:flex;max-height:calc(100vh - 128px);overflow-y:auto;scrollbar-width:thin;flex-direction:column;gap:24px;order:-1}.bd-eyebrow[data-astro-cid-vmk4gzdo]{font-family:var(--font-display);font-size:11px;letter-spacing:.08em;color:var(--text-faint)}.bd-eyebrow[data-astro-cid-vmk4gzdo]:before{content:"$ ";color:var(--accent)}.bd-sidebar[data-astro-cid-vmk4gzdo] ul[data-astro-cid-vmk4gzdo]{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px;border-left:1px solid var(--border)}.bd-sidebar[data-astro-cid-vmk4gzdo] a[data-astro-cid-vmk4gzdo]{display:flex;align-items:baseline;gap:10px;padding:6px 12px;font-family:var(--font-display);font-size:12.5px;color:var(--text-dim);text-decoration:none;border-left:1px solid transparent;margin-left:-1px}.bd-sidebar[data-astro-cid-vmk4gzdo] a[data-astro-cid-vmk4gzdo]:hover{color:var(--text)}.bd-sidebar[data-astro-cid-vmk4gzdo] a[data-astro-cid-vmk4gzdo][aria-current=page]{color:var(--accent);border-left-color:var(--accent)}.bd-sidebar[data-astro-cid-vmk4gzdo] .bd-idx[data-astro-cid-vmk4gzdo]{font-size:10px;color:var(--text-faint)}.bd-sidebar[data-astro-cid-vmk4gzdo] a[data-astro-cid-vmk4gzdo][aria-current=page] .bd-idx[data-astro-cid-vmk4gzdo]{color:var(--accent-dim)}.bd-sidebar[data-astro-cid-vmk4gzdo] .bd-all[data-astro-cid-vmk4gzdo]{display:inline-block;margin:10px 0 0 13px;font-size:11.5px;color:var(--text-faint);text-decoration:none}.bd-sidebar[data-astro-cid-vmk4gzdo] .bd-all[data-astro-cid-vmk4gzdo]:hover{color:var(--accent)}.bd-lang[data-astro-cid-vmk4gzdo]{font-family:var(--font-display);font-size:11px}.bd-article[data-astro-cid-vmk4gzdo]{min-width:0}.bd-crumb[data-astro-cid-vmk4gzdo]{font-family:var(--font-display);font-size:12px;color:var(--text-faint);margin-bottom:20px}.bd-crumb[data-astro-cid-vmk4gzdo]:before{content:"$ cat ";color:var(--accent)}.bd-crumb[data-astro-cid-vmk4gzdo] a[data-astro-cid-vmk4gzdo]{color:var(--text-faint)}.bd-crumb[data-astro-cid-vmk4gzdo] a[data-astro-cid-vmk4gzdo]:hover{color:var(--accent)}.bd-meta[data-astro-cid-vmk4gzdo]{display:flex;flex-wrap:wrap;gap:12px;align-items:baseline;font-family:var(--font-display);font-size:12px;color:var(--text-faint);margin-bottom:16px}.bd-cat[data-astro-cid-vmk4gzdo]{color:var(--accent);text-decoration:none}.bd-cat[data-astro-cid-vmk4gzdo]:hover{color:var(--text)}.bd-tag[data-astro-cid-vmk4gzdo]{color:var(--accent-dim)}.bd-hero[data-astro-cid-vmk4gzdo]{display:block;width:100%;height:auto;border:1px solid var(--border);border-radius:var(--radius-cell);margin:0 0 28px}.bd-related[data-astro-cid-vmk4gzdo]{margin-top:40px;padding-top:24px;border-top:1px solid var(--border)}.bd-related-title[data-astro-cid-vmk4gzdo]{font-family:var(--font-display);font-size:16px;letter-spacing:-.01em;color:var(--text);margin:0 0 14px}.bd-related[data-astro-cid-vmk4gzdo] ul[data-astro-cid-vmk4gzdo]{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.bd-related[data-astro-cid-vmk4gzdo] a[data-astro-cid-vmk4gzdo]{display:flex;align-items:baseline;gap:12px;text-decoration:none}.bd-related-post[data-astro-cid-vmk4gzdo]{font-family:var(--font-display);font-size:13.5px;color:var(--text);min-width:0}.bd-related[data-astro-cid-vmk4gzdo] a[data-astro-cid-vmk4gzdo]:hover .bd-related-post[data-astro-cid-vmk4gzdo]{color:var(--accent)}.bd-related[data-astro-cid-vmk4gzdo] time[data-astro-cid-vmk4gzdo]{font-family:var(--font-display);font-size:11px;color:var(--text-faint);flex-shrink:0}h1[data-astro-cid-vmk4gzdo]{font-family:var(--font-display);font-size:clamp(26px,3.5vw,36px);line-height:1.25;letter-spacing:-.02em;color:var(--text);margin-bottom:28px}.bd-article[data-astro-cid-vmk4gzdo] .prose{font-family:var(--font-sans);max-width:68ch;font-size:16px;line-height:1.75;color:var(--text-dim)}.bd-article[data-astro-cid-vmk4gzdo] .prose h2{font-family:var(--font-display);font-size:23px;font-weight:500;line-height:1.3;color:var(--text);letter-spacing:-.01em;margin:44px 0 14px}.bd-article[data-astro-cid-vmk4gzdo] .prose h3{font-family:var(--font-display);font-size:18px;font-weight:500;line-height:1.35;color:var(--text);margin:30px 0 10px}.bd-article[data-astro-cid-vmk4gzdo] .prose strong{font-weight:500}.bd-article[data-astro-cid-vmk4gzdo] .prose p{margin:0 0 16px}.bd-article[data-astro-cid-vmk4gzdo] .prose a{color:var(--accent);text-decoration:none}.bd-article[data-astro-cid-vmk4gzdo] .prose a:hover{text-decoration:underline}.bd-article[data-astro-cid-vmk4gzdo] .prose ul,.bd-article[data-astro-cid-vmk4gzdo] .prose ol{margin:0 0 16px;padding-left:22px}.bd-article[data-astro-cid-vmk4gzdo] .prose li{margin-bottom:7px}.bd-article[data-astro-cid-vmk4gzdo] .prose code{font-family:var(--font-display);font-size:13.5px;background:var(--bg-raised);border:1px solid var(--border);border-radius:4px;padding:1px 6px;color:var(--text)}.bd-article[data-astro-cid-vmk4gzdo] .prose pre{background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px;overflow-x:auto;margin:0 0 18px}.bd-article[data-astro-cid-vmk4gzdo] .prose pre code{background:none;border:none;padding:0;font-size:13px;line-height:1.65}.bd-article[data-astro-cid-vmk4gzdo] .prose img{max-width:100%;border:1px solid var(--border);border-radius:var(--radius-cell)}.bd-article[data-astro-cid-vmk4gzdo] .prose blockquote{border-left:2px solid var(--accent);background:var(--accent-soft);border-radius:0 var(--radius) var(--radius) 0;margin:0 0 18px;padding:10px 16px;color:var(--text-dim)}.bd-article[data-astro-cid-vmk4gzdo] .prose blockquote p{margin:0 0 6px}.bd-article[data-astro-cid-vmk4gzdo] .prose blockquote p:last-child{margin-bottom:0}.bd-article[data-astro-cid-vmk4gzdo] .prose table{width:100%;border-collapse:collapse;margin:0 0 18px;font-size:14px}.bd-article[data-astro-cid-vmk4gzdo] .prose th{font-family:var(--font-display);font-size:11.5px;font-weight:500;text-align:left;color:var(--text);border-bottom:1px solid var(--border-strong);padding:8px 12px}.bd-article[data-astro-cid-vmk4gzdo] .prose td{border-bottom:1px solid var(--border);padding:8px 12px}.bd-article[data-astro-cid-vmk4gzdo] .prose hr{border:none;border-top:1px solid var(--border);margin:32px 0}.bd-after[data-astro-cid-vmk4gzdo]{margin-top:48px;padding-top:24px;border-top:1px solid var(--border);font-family:var(--font-display)}.bd-after[data-astro-cid-vmk4gzdo] p[data-astro-cid-vmk4gzdo]{font-size:13px;color:var(--text-faint);margin:0 0 12px}.bd-cta[data-astro-cid-vmk4gzdo]{display:inline-block;background:var(--accent);color:var(--bg-deep);border-radius:var(--radius-btn);padding:8px 16px;text-decoration:none;font-size:14px;margin-right:16px}.bd-back[data-astro-cid-vmk4gzdo]{color:var(--text-faint);font-size:13px;text-decoration:none}.bd-back[data-astro-cid-vmk4gzdo]:hover{color:var(--accent)}.bd-pager[data-astro-cid-vmk4gzdo]{display:flex;justify-content:space-between;gap:16px;margin-top:64px;padding-top:24px;border-top:1px solid var(--border)}.bd-pager-cell[data-astro-cid-vmk4gzdo]{min-width:0}.bd-pager-right[data-astro-cid-vmk4gzdo]{text-align:right}.bd-pager-link[data-astro-cid-vmk4gzdo]{display:inline-flex;flex-direction:column;align-items:flex-start;gap:4px;font-family:var(--font-display);font-size:13px;color:var(--text);text-decoration:none}.bd-pager-right[data-astro-cid-vmk4gzdo] .bd-pager-link[data-astro-cid-vmk4gzdo]{align-items:flex-end}.bd-pager-link[data-astro-cid-vmk4gzdo]:hover{color:var(--accent)}.bd-pager-dir[data-astro-cid-vmk4gzdo]{font-size:11px;color:var(--accent-dim)}.bd-pager-title[data-astro-cid-vmk4gzdo]{display:block;max-width:32ch}.bd-pager-right[data-astro-cid-vmk4gzdo] .bd-pager-title[data-astro-cid-vmk4gzdo]{margin-left:auto}.bd-pager-meta[data-astro-cid-vmk4gzdo]{font-size:11px;color:var(--text-faint)}@media(max-width:800px){.bd-shell[data-astro-cid-vmk4gzdo]{grid-template-columns:1fr;gap:32px;padding:48px 20px 96px}.bd-sidebar[data-astro-cid-vmk4gzdo]{position:static;order:0;max-height:none;overflow:visible}.bd-article[data-astro-cid-vmk4gzdo] .prose table{display:block;width:max-content;max-width:100%;overflow-x:auto}}.bd-article[data-astro-cid-vmk4gzdo] .reveal-in{animation:bdreveal .45s ease both}@keyframes bdreveal{0%{opacity:0;transform:translate3d(0,10px,0)}to{opacity:1;transform:none}}.bd-article[data-astro-cid-vmk4gzdo] .code-shell{position:relative}.bd-article[data-astro-cid-vmk4gzdo] .prose pre[data-language]:before{content:attr(data-language);display:block;margin:0 0 10px;font-family:var(--font-display);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-faint)}.bd-article[data-astro-cid-vmk4gzdo] .code-copy{position:absolute;top:8px;right:8px;font-family:var(--font-display);font-size:11px;color:var(--text-faint);background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-btn);padding:3px 8px;cursor:pointer}.bd-article[data-astro-cid-vmk4gzdo] .code-copy:hover{color:var(--accent);border-color:var(--accent-dim)}.bd-article[data-astro-cid-vmk4gzdo] .code-copy:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.bd-article[data-astro-cid-vmk4gzdo] .prose .heading-anchor{margin-left:8px;font-size:.75em;color:var(--accent-dim);text-decoration:none;opacity:.45}.bd-article[data-astro-cid-vmk4gzdo] .prose h2:hover .heading-anchor,.bd-article[data-astro-cid-vmk4gzdo] .prose h3:hover .heading-anchor,.bd-article[data-astro-cid-vmk4gzdo] .prose h2:focus-within .heading-anchor,.bd-article[data-astro-cid-vmk4gzdo] .prose h3:focus-within .heading-anchor{opacity:1;color:var(--accent)}.bd-article[data-astro-cid-vmk4gzdo] .heading-anchor:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
