:root{--font-sans:var(--font-jetbrains), monospace;--font-display:var(--font-jetbrains), monospace;--font-mono:var(--font-jetbrains), monospace;color-scheme:dark;--bg:#0a0a0b;--surface:#141416;--surface-2:#1a1a1d;--border:#27272b;--ink:#f4f4f5;--ink-2:#c9c9cf;--ink-3:#9b9ba3;--faint:#6b6b73;--accent:#10b981;--accent-deep:#34d399;--accent-soft:#10b98166;--gh-empty:#1c2026;--gh-num:#4ade80}html[data-theme=light]{color-scheme:light;--bg:#f6f6f4;--surface:#fff;--surface-2:#fafafa;--border:#e6e6e3;--ink:#18181b;--ink-2:#3f3f46;--ink-3:#6b7280;--faint:#9ca3af;--accent:#10b981;--accent-deep:#047857;--accent-soft:#10b98154;--gh-empty:#ebedf0;--gh-num:#216e39}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;transition:background .25s}::selection{background:#10b98133}@keyframes ovfade{0%{opacity:0}to{opacity:1}}.topbar[data-astro-cid-h4oeibis]{justify-content:space-between;align-items:center;margin-bottom:30px;display:flex}.path[data-astro-cid-h4oeibis]{font-family:var(--font-mono);font-size:12px;& a{color:var(--ink);text-decoration:none}& .subpath{color:var(--faint)}}.controls[data-astro-cid-h4oeibis]{align-items:center;gap:9px;display:flex}.clock[data-astro-cid-h4oeibis]{font-family:var(--font-mono);color:var(--ink-3);border:1px solid var(--border);background:var(--surface);letter-spacing:.01em;white-space:nowrap;border-radius:7px;padding:4px 8px;font-size:11px}.theme-toggle[data-astro-cid-h4oeibis]{border:1px solid var(--border);background:var(--surface);width:30px;height:30px;color:var(--ink-3);cursor:pointer;border-radius:7px;justify-content:center;align-items:center;padding:0;transition:all .15s;display:flex}.theme-toggle[data-astro-cid-h4oeibis]:hover{border-color:var(--accent);color:var(--accent-deep)}.icon-when-light[data-astro-cid-h4oeibis],html[data-theme=light] .icon-when-dark[data-astro-cid-h4oeibis]{display:none}html[data-theme=light] .icon-when-light[data-astro-cid-h4oeibis]{display:inline-flex}@media (width<=520px){.subpath[data-astro-cid-h4oeibis]{display:none}}.article-header[data-astro-cid-cgl6nrfz]{border-bottom:1px dashed var(--border);margin-bottom:28px;padding-bottom:20px}.article-meta-line[data-astro-cid-cgl6nrfz]{font-family:var(--font-mono);letter-spacing:.02em;text-transform:uppercase;color:var(--ink-3);flex-wrap:wrap;align-items:center;gap:12px;font-size:12px;display:flex}.article-category[data-astro-cid-cgl6nrfz]{background:color-mix(in srgb, var(--accent) 12%, transparent);color:var(--accent);letter-spacing:.07em;border-radius:6px;align-items:center;padding:4px 8px;font-weight:600;display:inline-flex}.sep[data-astro-cid-cgl6nrfz],.article-updated[data-astro-cid-cgl6nrfz]{color:var(--faint)}.article-header[data-astro-cid-cgl6nrfz] h1[data-astro-cid-cgl6nrfz]{font-family:var(--font-display);letter-spacing:-.02em;color:var(--ink);margin:14px 0 10px;font-size:30px;font-weight:700;line-height:1.15}.article-description[data-astro-cid-cgl6nrfz]{max-width:65ch;color:var(--ink-3);margin:0;font-size:16px;line-height:1.7}.article-tags[data-astro-cid-cgl6nrfz]{flex-wrap:wrap;gap:8px;margin:16px 0 0;padding:0;list-style:none;display:flex}.article-tags[data-astro-cid-cgl6nrfz] li[data-astro-cid-cgl6nrfz]{border:1px solid var(--border);background:var(--surface);color:var(--ink-2);font-family:var(--font-mono);border-radius:8px;align-items:center;gap:6px;padding:5px 10px;font-size:12px;display:inline-flex}.tag-icon[data-astro-cid-cgl6nrfz]{color:var(--accent);justify-content:center;align-items:center;display:inline-flex}@media (width<=520px){.article-header[data-astro-cid-cgl6nrfz] h1[data-astro-cid-cgl6nrfz]{font-size:26px}.article-meta-line[data-astro-cid-cgl6nrfz]{gap:8px;font-size:11px}}.blog-content[data-astro-cid-gdrxirwk]{position:relative}.blog-content[data-astro-cid-gdrxirwk] p{color:var(--ink-3);margin:0 0 16px;font-size:15px;line-height:1.75}.blog-content[data-astro-cid-gdrxirwk] p:first-child{margin-top:0}.blog-content[data-astro-cid-gdrxirwk]>p:first-of-type,.blog-content[data-astro-cid-gdrxirwk] p.lead{color:var(--ink-2);font-size:16px;line-height:1.7}.blog-content[data-astro-cid-gdrxirwk] a{color:var(--accent-deep);text-decoration:underline;text-decoration-color:var(--accent-soft);text-underline-offset:3px;transition:color .15s}.blog-content[data-astro-cid-gdrxirwk] a:hover{color:var(--accent)}.blog-content[data-astro-cid-gdrxirwk] strong{color:var(--ink);font-weight:700}.blog-content[data-astro-cid-gdrxirwk] em{color:var(--ink-2)}.blog-content[data-astro-cid-gdrxirwk] h2,.blog-content[data-astro-cid-gdrxirwk] h3,.blog-content[data-astro-cid-gdrxirwk] h4{color:var(--ink);scroll-margin-top:72px;font-weight:600;line-height:1.4}.blog-content[data-astro-cid-gdrxirwk] h2{margin:32px 0 12px;font-size:18px}.blog-content[data-astro-cid-gdrxirwk] h3{margin:26px 0 10px;font-size:16px}.blog-content[data-astro-cid-gdrxirwk] h4{margin:22px 0 8px;font-size:15px}.blog-content[data-astro-cid-gdrxirwk] h2:before{content:"#" / "";color:var(--accent);margin-right:8px;font-weight:600}.blog-content[data-astro-cid-gdrxirwk] h3:before{content:"##" / "";color:var(--accent);margin-right:8px;font-weight:600}.blog-content[data-astro-cid-gdrxirwk] h4:before{content:"###" / "";color:var(--accent);margin-right:8px;font-weight:600}.blog-content[data-astro-cid-gdrxirwk] ul,.blog-content[data-astro-cid-gdrxirwk] ol{color:var(--ink-3);margin:0 0 16px;padding-left:22px;font-size:15px;line-height:1.75}.blog-content[data-astro-cid-gdrxirwk] ul{list-style:square}.blog-content[data-astro-cid-gdrxirwk] li{margin:5px 0}.blog-content[data-astro-cid-gdrxirwk] li::marker{color:var(--accent)}.blog-content[data-astro-cid-gdrxirwk] blockquote{border-left:2px dashed var(--accent-soft);color:var(--ink-3);margin:20px 0;padding:12px 16px}.blog-content[data-astro-cid-gdrxirwk] blockquote p:last-child{margin-bottom:0}.blog-content[data-astro-cid-gdrxirwk] hr{border:0;border-top:1px dashed var(--border);margin:28px 0}.blog-content[data-astro-cid-gdrxirwk] img{border:1px solid var(--border);border-radius:9px;max-width:100%;height:auto;margin:20px auto;display:block}.blog-content[data-astro-cid-gdrxirwk] figcaption{color:var(--faint);font-family:var(--font-mono);text-align:center;margin-top:8px;font-size:11px}.blog-content[data-astro-cid-gdrxirwk] table{border-collapse:collapse;border:1px solid var(--border);border-radius:8px;width:100%;margin:20px 0;font-size:13px;display:block;overflow-x:auto}.blog-content[data-astro-cid-gdrxirwk] th,.blog-content[data-astro-cid-gdrxirwk] td{border-bottom:1px solid var(--border);text-align:left;padding:10px 12px}.blog-content[data-astro-cid-gdrxirwk] th{background:var(--surface);color:var(--ink);font-weight:600}.blog-content[data-astro-cid-gdrxirwk] tr:last-child td{border-bottom:0}.blog-content[data-astro-cid-gdrxirwk] :not(pre)>code{border:1px solid var(--border);background:var(--surface);color:var(--accent-deep);font-family:var(--font-mono);border-radius:4px;padding:2px 5px;font-size:12px}.blog-content[data-astro-cid-gdrxirwk] kbd{border:1px solid var(--border);background:var(--surface);color:var(--ink-2);font-family:var(--font-mono);border-bottom-width:2px;border-radius:5px;padding:2px 6px;font-size:11px}.blog-content[data-astro-cid-gdrxirwk] .code-block{border:1px solid var(--border);background:var(--bg);border-radius:10px;margin:20px 0;overflow:hidden}.blog-content[data-astro-cid-gdrxirwk] .code-header{border-bottom:1px dashed var(--border);background:var(--surface);font-family:var(--font-mono);justify-content:space-between;align-items:center;gap:12px;padding:8px 12px;display:flex}.blog-content[data-astro-cid-gdrxirwk] .code-identity{align-items:center;gap:8px;min-width:0;display:inline-flex}.blog-content[data-astro-cid-gdrxirwk] .code-identity img{border:0;border-radius:4px;width:16px;height:16px;margin:0}.blog-content[data-astro-cid-gdrxirwk] .code-glyph{color:var(--accent);font-size:12px;line-height:1}.blog-content[data-astro-cid-gdrxirwk] .code-label{color:var(--ink-2);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.blog-content[data-astro-cid-gdrxirwk] .code-copy{color:var(--ink-3);font-family:var(--font-mono);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;flex-shrink:0;align-items:center;gap:6px;padding:4px 8px;font-size:11px;line-height:1;transition:color .15s,background .15s,border-color .15s;display:inline-flex}.blog-content[data-astro-cid-gdrxirwk] .code-copy:hover{border-color:var(--border);background:color-mix(in srgb, var(--accent) 8%, transparent);color:var(--accent)}.blog-content[data-astro-cid-gdrxirwk] .code-copy:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.blog-content[data-astro-cid-gdrxirwk] .code-copy.is-copied{color:var(--accent)}.blog-content[data-astro-cid-gdrxirwk] .code-block pre{color:var(--ink-2);tab-size:2;border:0;border-radius:0;margin:0;padding:16px 18px;font-size:13px;line-height:1.65;overflow-x:auto;background:0 0!important}.blog-content[data-astro-cid-gdrxirwk] .code-block code{counter-reset:code-line;font-family:var(--font-mono);font-size:inherit;background:0 0;border:0;flex-direction:column;padding:0;display:flex}.blog-content[data-astro-cid-gdrxirwk] .code-block .line{min-height:1.65em;display:block}.blog-content[data-astro-cid-gdrxirwk] .code-block .line:before{counter-increment:code-line;content:counter(code-line);width:2ch;color:var(--faint);text-align:right;user-select:none;margin-right:16px;display:inline-block}.blog-content[data-astro-cid-gdrxirwk] .code-block.no-line-numbers .line:before{content:none}.blog-content[data-astro-cid-gdrxirwk] .astro-code,.blog-content[data-astro-cid-gdrxirwk] .astro-code span{color:var(--shiki-light)}html[data-theme=dark] .blog-content .astro-code,html[data-theme=dark] .blog-content .astro-code span{color:var(--shiki-dark)}.blog-content[data-astro-cid-gdrxirwk] .callout{--callout-color:var(--accent);border:1px solid color-mix(in srgb, var(--callout-color) 35%, var(--border));border-left:3px solid var(--callout-color);background:color-mix(in srgb, var(--callout-color) 6%, transparent);border-radius:8px;margin:20px 0;padding:14px 16px}.blog-content[data-astro-cid-gdrxirwk] .callout-tip{--callout-color:#22d3ee}.blog-content[data-astro-cid-gdrxirwk] .callout-important{--callout-color:#a78bfa}.blog-content[data-astro-cid-gdrxirwk] .callout-warning{--callout-color:#f59e0b}.blog-content[data-astro-cid-gdrxirwk] .callout-caution{--callout-color:#f87171}.blog-content[data-astro-cid-gdrxirwk] .callout-title{color:var(--callout-color);font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;align-items:center;gap:8px;margin:0;font-size:12px;font-weight:600;display:flex}.blog-content[data-astro-cid-gdrxirwk] .callout-title:before{content:"!";border:1px solid;border-radius:50%;justify-content:center;align-items:center;width:16px;height:16px;font-size:10px;line-height:1;display:inline-flex}.blog-content[data-astro-cid-gdrxirwk] .callout>p{color:var(--ink-3);margin:10px 0 0;font-size:14px;line-height:1.65}.blog-content[data-astro-cid-gdrxirwk] .callout>p:last-child{margin-bottom:0}@media (width<=520px){.blog-content[data-astro-cid-gdrxirwk] p,.blog-content[data-astro-cid-gdrxirwk] ul,.blog-content[data-astro-cid-gdrxirwk] ol{font-size:14.5px}.blog-content[data-astro-cid-gdrxirwk] .code-block{border-left:0;border-right:0;border-radius:0;margin-left:-18px;margin-right:-18px}}@media (prefers-reduced-motion:reduce){.blog-content[data-astro-cid-gdrxirwk] *{scroll-behavior:auto!important;transition:none!important}}.blog-sidebar[data-astro-cid-lmha4phn]{border-left:1px dashed var(--border);font-family:var(--font-mono);color:var(--ink-3);padding-left:24px;font-size:12px;position:sticky;top:24px}.sidebar-section[data-astro-cid-lmha4phn]{border-top:1px dashed var(--border);padding:18px 0}.sidebar-section[data-astro-cid-lmha4phn]:first-child{border-top:0;padding-top:0}.sidebar-title[data-astro-cid-lmha4phn]{font-family:var(--font-mono);color:var(--accent);align-items:center;gap:8px;margin:0 0 12px;font-size:12px;font-weight:600;display:flex}.sidebar-icon[data-astro-cid-lmha4phn]{justify-content:center;align-items:center;display:inline-flex}.toc-list[data-astro-cid-lmha4phn]{gap:2px;margin:0;padding:0;list-style:none;display:grid}.toc-list[data-astro-cid-lmha4phn] a[data-astro-cid-lmha4phn]{color:var(--ink-3);border-left:2px solid #0000;border-radius:0 4px 4px 0;padding:5px 8px;line-height:1.5;text-decoration:none;transition:color .15s,background .15s,border-color .15s;display:block}.toc-list[data-astro-cid-lmha4phn] a[data-astro-cid-lmha4phn]:hover{color:var(--ink)}.toc-list[data-astro-cid-lmha4phn] a[data-astro-cid-lmha4phn].is-active{color:var(--accent);border-left-color:var(--accent);background:color-mix(in srgb, var(--accent) 7%, transparent)}.toc-list[data-astro-cid-lmha4phn] a[data-astro-cid-lmha4phn].toc-title{color:var(--ink);font-weight:600}.toc-list[data-astro-cid-lmha4phn] a[data-astro-cid-lmha4phn].toc-title:hover{color:var(--accent)}.toc-list[data-astro-cid-lmha4phn] a[data-astro-cid-lmha4phn].toc-depth-3{padding-left:20px;font-size:11.5px}.toc-empty[data-astro-cid-lmha4phn]{color:var(--faint);margin:0}.meta-row[data-astro-cid-lmha4phn]{color:var(--ink-3);align-items:center;gap:8px;margin:8px 0;display:flex}.meta-row[data-astro-cid-lmha4phn] svg{color:var(--faint);flex-shrink:0}.share-actions[data-astro-cid-lmha4phn]{gap:8px;display:flex}.share-actions[data-astro-cid-lmha4phn] button[data-astro-cid-lmha4phn],.share-actions[data-astro-cid-lmha4phn] a[data-astro-cid-lmha4phn]{border:1px solid var(--border);background:var(--surface);width:36px;height:36px;color:var(--ink-3);cursor:pointer;border-radius:9px;justify-content:center;align-items:center;padding:0;transition:all .15s;display:inline-flex}.share-actions[data-astro-cid-lmha4phn] button[data-astro-cid-lmha4phn]:hover,.share-actions[data-astro-cid-lmha4phn] a[data-astro-cid-lmha4phn]:hover{border-color:var(--accent);color:var(--accent-deep);transform:translateY(-1px)}.share-actions[data-astro-cid-lmha4phn] button[data-astro-cid-lmha4phn]:focus-visible,.share-actions[data-astro-cid-lmha4phn] a[data-astro-cid-lmha4phn]:focus-visible,.toc-list[data-astro-cid-lmha4phn] a[data-astro-cid-lmha4phn]:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.copy-feedback[data-astro-cid-lmha4phn]{min-height:1em;color:var(--accent);margin:8px 0 0;font-size:11px}@media (width<=900px){.blog-sidebar[data-astro-cid-lmha4phn]{border-top:1px dashed var(--border);border-left:0;padding:24px 0 0;position:static}.toc-section[data-astro-cid-lmha4phn]{display:none}}.reading-footer[data-astro-cid-piz7qyyh]{border:1px solid var(--border);background:var(--surface);border-radius:14px;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:40px;margin-top:48px;padding:28px 32px;display:grid}.footer-intro[data-astro-cid-piz7qyyh]{flex-direction:column;justify-content:center;display:flex}.footer-path[data-astro-cid-piz7qyyh]{color:var(--accent);font-family:var(--font-mono);letter-spacing:.04em;margin:0;font-size:12px;font-weight:500}.footer-intro[data-astro-cid-piz7qyyh] h2[data-astro-cid-piz7qyyh]{color:var(--ink);font-family:var(--font-display);letter-spacing:-.01em;margin:10px 0;font-size:22px;font-weight:700;line-height:1.25}.footer-copy[data-astro-cid-piz7qyyh]{max-width:48ch;color:var(--ink-3);font-family:var(--font-mono);margin:0;font-size:14px;line-height:1.7}.footer-links[data-astro-cid-piz7qyyh]{border-left:1px dashed var(--border);flex-direction:column;justify-content:center;gap:2px;padding-left:32px;display:flex}.footer-links[data-astro-cid-piz7qyyh] a[data-astro-cid-piz7qyyh]{color:var(--ink-3);font-family:var(--font-mono);border-radius:7px;grid-template-columns:18px auto auto minmax(0,1fr) auto;align-items:center;gap:8px;margin:0 -8px;padding:10px 8px;font-size:13px;text-decoration:none;transition:color .15s,background .15s;display:grid}.footer-links[data-astro-cid-piz7qyyh] a[data-astro-cid-piz7qyyh]:hover{background:color-mix(in srgb, var(--accent) 6%, transparent)}.footer-links[data-astro-cid-piz7qyyh] a[data-astro-cid-piz7qyyh]:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.link-icon[data-astro-cid-piz7qyyh]{color:var(--ink-3);justify-content:center;align-items:center;transition:color .15s;display:inline-flex}.link-label[data-astro-cid-piz7qyyh]{color:var(--ink);white-space:nowrap;font-weight:500}.link-sep[data-astro-cid-piz7qyyh]{color:var(--faint)}.link-value[data-astro-cid-piz7qyyh]{color:var(--ink-3);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.link-arrow[data-astro-cid-piz7qyyh]{color:var(--faint);justify-content:center;align-items:center;transition:color .15s,transform .15s;display:inline-flex}.footer-links[data-astro-cid-piz7qyyh] a[data-astro-cid-piz7qyyh]:hover .link-icon[data-astro-cid-piz7qyyh],.footer-links[data-astro-cid-piz7qyyh] a[data-astro-cid-piz7qyyh]:hover .link-arrow[data-astro-cid-piz7qyyh]{color:var(--accent)}.footer-links[data-astro-cid-piz7qyyh] a[data-astro-cid-piz7qyyh]:hover .link-value[data-astro-cid-piz7qyyh]{color:var(--ink-2)}.footer-links[data-astro-cid-piz7qyyh] a[data-astro-cid-piz7qyyh]:hover .link-arrow[data-astro-cid-piz7qyyh]{transform:translate(1px,-1px)}@media (width<=900px){.reading-footer[data-astro-cid-piz7qyyh]{grid-template-columns:minmax(0,1fr);gap:24px}.footer-links[data-astro-cid-piz7qyyh]{border-top:1px dashed var(--border);border-left:0;padding-top:20px;padding-left:0}}@media (width<=520px){.reading-footer[data-astro-cid-piz7qyyh]{border-radius:12px;margin-top:32px;padding:22px 20px}.footer-intro[data-astro-cid-piz7qyyh] h2[data-astro-cid-piz7qyyh]{font-size:20px}.footer-copy[data-astro-cid-piz7qyyh]{font-size:13px}}.blog-page[data-astro-cid-kt6wuhv6]{z-index:1;border-left:1px dashed var(--border);border-right:1px dashed var(--border);max-width:1120px;min-height:100vh;margin:0 auto;padding:30px 36px 56px;position:relative}.blog-layout[data-astro-cid-kt6wuhv6]{grid-template-columns:minmax(0,760px) 220px;align-items:start;gap:32px;display:grid}.blog-main[data-astro-cid-kt6wuhv6]{min-width:0}.cover-image[data-astro-cid-kt6wuhv6]{aspect-ratio:16/9;object-fit:cover;border-radius:11px;width:100%;height:auto;margin:32px 0}@media (width<=900px){.blog-layout[data-astro-cid-kt6wuhv6]{grid-template-columns:minmax(0,1fr);gap:36px}}@media (width<=520px){.blog-page[data-astro-cid-kt6wuhv6]{padding:24px 18px 48px}}
