.license[data-astro-cid-zghd3z2v]{margin:2.5em 0 0;padding:1.35em 1.5em 1.25em;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-subtle)}.license-badge[data-astro-cid-zghd3z2v]{display:inline-flex;align-items:stretch;font-size:.7rem;font-weight:700;letter-spacing:.05em;border-radius:var(--radius-sm);overflow:hidden;text-decoration:none;line-height:1.6}.license-badge[data-astro-cid-zghd3z2v] span[data-astro-cid-zghd3z2v]{padding:.25em .65em}.license-badge[data-astro-cid-zghd3z2v] span[data-astro-cid-zghd3z2v]:first-child{background:var(--text);color:var(--bg)}.license-badge[data-astro-cid-zghd3z2v] span[data-astro-cid-zghd3z2v]:last-child{background:var(--accent);color:#fff}.license-badge[data-astro-cid-zghd3z2v]:hover{opacity:.85}.statement[data-astro-cid-zghd3z2v]{margin:.85em 0 0!important;font-size:.88rem;line-height:1.75;color:var(--text-muted)}.meta[data-astro-cid-zghd3z2v]{margin:.9em 0 0!important;padding-top:.85em;border-top:1px solid var(--border);font-size:.8rem;color:var(--text-faint);line-height:1.6}.meta[data-astro-cid-zghd3z2v] a[data-astro-cid-zghd3z2v]{color:var(--text-faint);text-decoration:none;word-break:break-all}.meta[data-astro-cid-zghd3z2v] a[data-astro-cid-zghd3z2v]:hover{color:var(--accent)}.sep[data-astro-cid-zghd3z2v]{margin:0 .55em;opacity:.55}@media(max-width:540px){.license[data-astro-cid-zghd3z2v]{padding:1.2em 1.25em 1em}.meta[data-astro-cid-zghd3z2v]{display:flex;flex-direction:column;gap:.15em}.sep[data-astro-cid-zghd3z2v]{display:none}}.prose{color:var(--text);font-size:1.0625rem;line-height:1.75}.prose>:first-child{margin-top:0}.prose>:last-child{margin-bottom:0}.prose p{margin:1.25em 0}.prose h2,.prose h3,.prose h4{color:var(--text);line-height:1.3;scroll-margin-top:5rem}.prose h2{margin-top:1.7em;margin-bottom:.7em;font-size:1.45em;font-weight:680;letter-spacing:-.014em;padding-bottom:.3em;border-bottom:1px solid var(--border)}.prose h3{margin-top:1.6em;margin-bottom:.55em;font-size:1.2em;font-weight:680}.prose h4{margin-top:1.5em;margin-bottom:.5em;font-size:1.05em;font-weight:680}.prose :is(h2,h3,h4)+*{margin-top:0}.prose .heading-anchor{margin-left:.35em;color:var(--text-faint);font-weight:400;text-decoration:none;opacity:0;transition:opacity .15s ease}.prose .heading-anchor:after{content:none}.prose :is(h2,h3,h4):hover .heading-anchor,.prose .heading-anchor:focus-visible{opacity:1}.prose a{color:var(--accent);text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--accent) 32%,transparent);text-underline-offset:2px;transition:text-decoration-color .15s ease}.prose a:hover{text-decoration-color:var(--accent)}.prose a[target=_blank]:not(:has(img)):after{content:"↗";margin-left:.12em;font-size:.82em;color:var(--text-faint);text-decoration:none}.prose ul,.prose ol{margin:1.25em 0;padding-left:1.5em}.prose ul{list-style:disc}.prose ul ul{list-style:circle}.prose ul ul ul{list-style:square}.prose ol{list-style:decimal}.prose li{margin:.4em 0;padding-left:.3em}.prose li::marker{color:var(--text-faint)}.prose ol>li::marker{color:var(--text-muted);font-variant-numeric:tabular-nums}.prose li>ul,.prose li>ol{margin:.4em 0}.prose li>p{margin:.5em 0}.prose blockquote{margin:1.7em 0;padding:.9em 1.2em;border-left:3px solid var(--accent);border-radius:0 var(--radius) var(--radius) 0;background:var(--bg-subtle);color:var(--text-muted)}.prose blockquote>:first-child{margin-top:0}.prose blockquote>:last-child{margin-bottom:0}.prose .table-scroll{margin:1.7em 0;overflow-x:auto}.prose table{width:100%;margin:1.7em 0;border-collapse:collapse;font-size:.9em;line-height:1.5}.prose .table-scroll table{margin:0}.prose th,.prose td{border:0;padding:.6em .9em;text-align:left;vertical-align:top}.prose thead{border-bottom:2px solid var(--border-strong)}.prose th{font-weight:680;color:var(--text);white-space:nowrap;background:transparent}.prose td{border-bottom:1px solid var(--border)}.prose tbody tr:last-child td{border-bottom:0}.prose pre{margin:1.5em 0}.prose :not(pre)>code{word-break:break-word}.prose img{display:block;margin:1.7em auto;border:1px solid var(--border);border-radius:var(--radius)}.prose figure{margin:1.7em 0}.prose figure img{margin:0 auto}.prose figcaption{margin-top:.6em;text-align:center;font-size:.85em;color:var(--text-faint)}.prose .mermaid{margin:1.7em 0;text-align:center}.prose strong{font-weight:680;color:var(--text)}.prose em{font-style:italic}.prose mark{background:var(--accent-soft);color:inherit;padding:0 .2em;border-radius:3px}.prose del{color:var(--text-faint)}.prose abbr{text-decoration:underline dotted;cursor:help}.prose kbd{font-family:var(--font-mono);font-size:.8em;padding:.15em .45em;border:1px solid var(--border-strong);border-bottom-width:2px;border-radius:var(--radius-sm);background:var(--bg-subtle);color:var(--text)}.prose dt{font-weight:680;margin-top:1em}.prose dd{margin:.3em 0 0 1.5em;color:var(--text-muted)}.prose hr{margin:2.75em 0;border:0;border-top:1px solid var(--border)}@media(max-width:560px){.prose{font-size:1rem}.prose h2{font-size:1.3em;margin-top:1.6em}.prose h3{font-size:1.15em}.prose .heading-anchor{opacity:.4}}.post[data-astro-cid-bvzihdzo]{padding-block:2.75rem 1rem}.hero[data-astro-cid-bvzihdzo]{margin-bottom:2.25rem}.hero[data-astro-cid-bvzihdzo] img{display:block;width:100%;border-radius:var(--radius-lg);border:1px solid var(--border);box-shadow:var(--shadow)}.post-header[data-astro-cid-bvzihdzo]{margin-bottom:2rem}.post-header[data-astro-cid-bvzihdzo] h1[data-astro-cid-bvzihdzo]{margin:0 0 .7rem;line-height:1.2}.post-meta[data-astro-cid-bvzihdzo]{display:flex;align-items:center;gap:.6rem;color:var(--text-faint);font-family:var(--font-mono);font-size:.82rem;font-variant-numeric:tabular-nums}.post-meta[data-astro-cid-bvzihdzo] .updated[data-astro-cid-bvzihdzo]{color:var(--text-faint)}.comments[data-astro-cid-bvzihdzo]{margin-top:3em;padding-top:3em;border-top:1px solid var(--border)}.code-block-wrapper{position:relative}.copy-button{position:absolute;top:.6rem;right:.6rem;padding:.2rem .6rem;background:var(--bg);border:1px solid var(--border-strong);border-radius:var(--radius-sm);font-size:.72rem;font-family:var(--font-sans);cursor:pointer;transition:all .15s ease;color:var(--text-muted);opacity:0;pointer-events:none}.code-block-wrapper:hover .copy-button{opacity:1;pointer-events:auto}.copy-button:hover{background:var(--accent);color:#fff;border-color:var(--accent)}.copy-button.copied{background:#10b981;color:#fff;border-color:#10b981}
