#themeToggle[data-astro-cid-oemx5le4]{border:0}.sun[data-astro-cid-oemx5le4]{fill:#8e8e8e}.moon[data-astro-cid-oemx5le4],[data-theme=dark] .sun[data-astro-cid-oemx5le4]{fill:#0000}[data-theme=dark] .moon[data-astro-cid-oemx5le4]{fill:#bebebe}header[data-astro-cid-3ef6ksr2]{-webkit-user-select:none;user-select:none}.logo[data-astro-cid-3ef6ksr2]{transition:all .2s}nav[data-astro-cid-3ef6ksr2].desktop{align-items:center;line-height:1;display:none}@media (min-width:768px){nav[data-astro-cid-3ef6ksr2].desktop{gap:.375rem;display:flex}}nav[data-astro-cid-3ef6ksr2].mobile{justify-content:flex-end}nav[data-astro-cid-3ef6ksr2].mobile input[data-astro-cid-3ef6ksr2]{display:none}nav[data-astro-cid-3ef6ksr2].mobile label[data-astro-cid-3ef6ksr2]{cursor:pointer;align-items:center;padding:.5rem;display:flex}nav[data-astro-cid-3ef6ksr2].mobile #menu[data-astro-cid-3ef6ksr2]{width:100%;display:none}nav[data-astro-cid-3ef6ksr2].mobile input[data-astro-cid-3ef6ksr2]:checked~#menu[data-astro-cid-3ef6ksr2]{flex-direction:column;width:100%;margin-top:.5rem;padding-top:.5rem;display:flex}nav[data-astro-cid-3ef6ksr2].mobile #menu[data-astro-cid-3ef6ksr2] a[data-astro-cid-3ef6ksr2],nav[data-astro-cid-3ef6ksr2].mobile #menu[data-astro-cid-3ef6ksr2] button[data-astro-cid-3ef6ksr2]{text-align:right;width:100%;padding:.25rem;display:block}footer[data-astro-cid-sz7xmlte]{border-color:var(--border)}.footer-surface[data-astro-cid-sz7xmlte]{background:var(--surface-2)}.gradient-line[data-astro-cid-sz7xmlte]{opacity:.18}[data-theme=dark] .gradient-line[data-astro-cid-sz7xmlte]{opacity:.4}a[data-astro-cid-sz7xmlte]{opacity:.8}a[data-astro-cid-sz7xmlte]:hover{opacity:1}.cmdk[data-astro-cid-qk3db3zz]{z-index:70;position:fixed;inset:0}.cmdk[data-astro-cid-qk3db3zz][hidden]{display:none}.cmdk__backdrop[data-astro-cid-qk3db3zz]{background:#00000059;position:absolute;inset:0}.cmdk__dialog[data-astro-cid-qk3db3zz]{background:var(--surface-2);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:12px;width:min(720px,92%);margin:10vh auto 0;padding:.75rem;position:relative}#cmdk-input[data-astro-cid-qk3db3zz]{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:8px;width:100%;padding:.6rem .75rem;font-size:.95rem}.cmdk__results[data-astro-cid-qk3db3zz]{max-height:50vh;margin:.5rem 0 0;padding:0;list-style:none;overflow:auto}.cmdk__results[data-astro-cid-qk3db3zz] li[data-astro-cid-qk3db3zz] a[data-astro-cid-qk3db3zz]{color:var(--text);border-radius:8px;padding:.6rem .75rem;text-decoration:none;display:block}.cmdk__results[data-astro-cid-qk3db3zz] li[data-astro-cid-qk3db3zz] a[data-astro-cid-qk3db3zz]:hover,.cmdk__results[data-astro-cid-qk3db3zz] li[data-astro-cid-qk3db3zz] a[data-astro-cid-qk3db3zz]:focus{background:color-mix(in srgb,var(--border) 30%,var(--surface));outline:0}.cmdk__hint[data-astro-cid-qk3db3zz]{color:var(--muted);text-align:right;padding:.25rem .2rem 0;font-size:.8rem}.cmdk__close[data-astro-cid-qk3db3zz]{background:var(--surface-2);color:var(--text);border:1px solid var(--border);border-radius:999px;width:28px;height:28px;position:absolute;top:calc(10vh - 1.75rem);right:calc(4% + .25rem)}@font-face{font-family:InterVariable;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_astro/InterVariable.CWi-zmRD.woff2)format("woff2")}@font-face{font-family:InterVariable;font-style:italic;font-weight:100 900;font-display:swap;src:url(/_astro/InterVariable-Italic.d6KXgdvN.woff2)format("woff2")}:root{font-feature-settings:"liga"1,"calt"1;--bg:#fff;--text:#0b0b0c;--muted:#596173;--surface:#f7f7fb;--surface-2:#fff;--border:#d7dae6;--accent:#6b4fff;--accent-2:#d946ef;--shadow:0 1px 2px #0206170a;--shadow-lg:0 10px 24px #02061714,0 2px 6px #0206170a;--accent-grad:linear-gradient(90deg,var(--accent),var(--accent-2));--highlight-bg:color-mix(in srgb,var(--accent) 12%,var(--surface-2));--highlight-fg:var(--text);--article-toc-min-width:280px;--article-toc-max-width:15vw;--article-content-min:720px;--article-grid-gap:2rem}[data-theme=dark]{--bg:#0b0b0f;--text:#e8e9ef;--muted:#aab0bd;--surface:#0f1116;--surface-2:#151823;--border:#23283a;--accent:#8b7bff;--accent-2:#f472b6;--shadow:0 1px 2px #00000040;--shadow-lg:0 10px 24px #00000073,0 2px 6px #00000047;--highlight-bg:color-mix(in srgb,var(--accent) 18%,var(--surface));--highlight-fg:var(--text)}@supports (font-variation-settings:normal){html{font-family:InterVariable,"system-ui"}}html{background:var(--bg);color:var(--text);width:100%}body{-webkit-font-smoothing:antialiased;flex-direction:column;width:100%;min-height:100vh;display:flex}[data-theme=dark] body,[data-theme=light] body{--grid-size:22px;--grid-blue:#1f97ff;background-color:var(--bg)}.glass{background-color:color-mix(in srgb,var(--surface-2) 70%,transparent);-webkit-backdrop-filter:saturate(150%) blur(10px);border-bottom:1px solid var(--border)}[data-theme=dark] .glass:after{content:"";background-image:var(--accent-grad);opacity:.16;height:2px;position:absolute;bottom:0;left:0;right:0}.card-surface{background:var(--surface-2);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:12px}.card-surface:hover{border-color:color-mix(in srgb,var(--accent) 18%,var(--border))}.lift{transition:background-color .18s,box-shadow .18s,border-color .18s}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:color-mix(in srgb,var(--surface) 70%,transparent)}::-webkit-scrollbar-thumb{cursor:pointer;background:color-mix(in srgb,var(--accent) 30%,var(--border))}.prose{--tw-prose-body:#141414}html.dark .prose{--tw-prose-body:#dadada}.prose h1,.prose h2{letter-spacing:-.01em;font-family:inherit}main{flex-direction:column;flex:1;width:100%;display:flex;container-type:inline-size}main a{text-underline-offset:2px;color:color-mix(in srgb,var(--accent) 70%,var(--text));text-decoration:underline;text-decoration-thickness:1.25px;transition:color .18s}main a:hover{color:color-mix(in srgb,var(--accent) 80%,var(--text))}main a.raw{color:inherit;text-decoration:none}main .toc__list a{color:var(--muted);text-decoration:none}main .toc__list a:hover{color:var(--text);text-underline-offset:3px;text-decoration:underline;-webkit-text-decoration-color:var(--border);text-decoration-color:var(--border)}main .toc__list a.active{color:var(--text)}[data-theme=light] main a{color:color-mix(in srgb,var(--accent) 65%,var(--text))}[data-theme=light] main a:hover{color:color-mix(in srgb,var(--accent) 82%,var(--text))}input,textarea{outline-offset:2px;border-radius:.25rem;outline:2px solid #0000;padding:.5rem .75rem}input:focus,textarea:focus{--tw-ring-offset-shadow:var(--tw-ring-inset)0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset)0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}input,textarea{background:color-mix(in srgb,var(--surface) 70%,transparent);color:var(--text);border:1px solid var(--border)}mark{text-wrap:pretty;background:var(--highlight-bg);color:var(--highlight-fg);border-radius:4px;padding:0 .2em;line-height:1.35;transition:background-color .18s,color .18s;display:inline}mark.red{background:color-mix(in srgb,#ef4444 12%,var(--surface-2))}[data-theme=dark] mark.red{background:color-mix(in srgb,#ef4444 18%,var(--surface))}ins{background:color-mix(in srgb,#22c55e 12%,var(--surface-2));color:var(--text);border-radius:4px;padding:0 .2em;text-decoration:none;display:inline}[data-theme=dark] ins{background:color-mix(in srgb,#22c55e 18%,var(--surface))}del{text-decoration:line-through;-webkit-text-decoration-color:color-mix(in srgb,var(--text) 70%,var(--bg));text-decoration-color:color-mix(in srgb,var(--text) 70%,var(--bg));-webkit-text-decoration-skip:ink;-webkit-text-decoration-skip-ink:auto;text-decoration-skip-ink:auto;text-decoration-thickness:1.4px;display:inline}[data-theme=dark] del{-webkit-text-decoration-color:color-mix(in srgb,var(--text) 90%,var(--bg));text-decoration-color:color-mix(in srgb,var(--text) 90%,var(--bg));text-decoration-thickness:1.8px}code{color:color-mix(in srgb,var(--accent) 70%,var(--text))}p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word;text-wrap:pretty}h1,h2,h3,h4,h5,h6{scroll-margin-top:88px}main .prose hr{border:0;border-top:1px solid var(--border)}#post-nav{border-color:var(--border)}.card{background:var(--surface-2);border:1px solid var(--border);border-radius:.25rem;padding:1rem}main .expressive-code pre>code{padding-top:1em;padding-bottom:1em}main .expressive-code .ec-line div.code{padding-inline-start:.5em}main .expressive-code{border:1px solid var(--border);background:var(--surface-2);box-shadow:none;border-radius:8px;overflow:hidden}main .expressive-code pre{box-shadow:none;border:0;border-radius:0}[data-theme=dark] main .expressive-code{box-shadow:0 0 0 1px color-mix(in srgb,var(--accent) 28%,var(--border))}.prose img{border-radius:6px;max-width:100%;height:auto;display:block}.prose.focus-mode{--focus-band:95%;--focus-min-height:280px;--focus-top-safe:72px;--focus-bottom-safe:0px;--focus-ease:cubic-bezier(.22,1,.36,1);--focus-dim-floor:.95;--focus-dim-range:calc(1 - var(--focus-dim-floor));--focus-bright-floor:.7;--focus-bright-range:.5;--focus-sat-floor:.8;--focus-sat-range:.2;--focus-heading-tint-pct:6%;--focus-border-tint-pct:70%}.prose.focus-mode :where(p,ul,ol,pre,blockquote,figure,table,h2,h3,h4,h5,h6){--focus:0;opacity:calc(var(--focus-dim-floor) + var(--focus)*var(--focus-dim-range));filter:brightness(calc(var(--focus-bright-floor) + var(--focus)*var(--focus-bright-range))) saturate(calc(var(--focus-sat-floor) + var(--focus)*var(--focus-sat-range)));transition:opacity .22s ease,filter .32s var(--focus-ease);will-change:opacity,filter}.prose.focus-mode :where(h2,h3,h4,h5,h6){color:color-mix(in srgb,var(--text) calc(100% - var(--focus)*var(--focus-heading-tint-pct)),var(--accent) calc(var(--focus)*var(--focus-heading-tint-pct)));transition:color .26s var(--focus-ease);will-change:color}.prose.focus-mode blockquote{border-left-color:color-mix(in srgb,var(--border) calc(100% - var(--focus)*var(--focus-border-tint-pct)),var(--accent) calc(var(--focus)*var(--focus-border-tint-pct)));transition:border-left-color .26s var(--focus-ease)}.prose a img{border:0}rabbit,.prose rabbit{background:color-mix(in srgb,var(--accent) 8%,var(--surface));border:1px dashed color-mix(in srgb,var(--accent) 20%,var(--border));border-radius:.375rem;margin-top:1rem;margin-bottom:1rem;padding:.5rem;font-size:.8rem;display:block;position:relative}rabbit p,.prose rabbit p{margin:0}rabbit:before,.prose rabbit:before{content:"🐰";text-align:center;border:1px solid var(--border);background:var(--surface-2);border-radius:9999px;width:24px;height:24px;display:block;position:absolute;top:4px;left:-30px}rabbit.red,.prose rabbit.red{--tw-text-opacity:1;color:hsl(346 80.6% 33.98%/var(--tw-text-opacity))}rabbit.red:where([data-theme=dark],[data-theme=dark] *),.prose rabbit.red:where([data-theme=dark],[data-theme=dark] *){--tw-text-opacity:1;color:hsl(346 80.6% 77.74%/var(--tw-text-opacity))}rabbit.red,.prose rabbit.red{background:color-mix(in srgb,#ef4444 10%,var(--surface));border-color:color-mix(in srgb,#ef4444 35%,var(--border))}rabbit.red:before,.prose rabbit.red:before{--tw-border-opacity:1;border-color:hsl(346 80.6% 42.45%/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:hsl(346 80.6% 52.77%/var(--tw-bg-opacity))}rabbit.red:where([data-theme=dark],[data-theme=dark] *):before,.prose rabbit.red:where([data-theme=dark],[data-theme=dark] *):before{--tw-border-opacity:1;border-color:hsl(346 80.6% 71.22%/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:hsl(346 80.6% 33.98%/var(--tw-bg-opacity))}rabbit.green,.prose rabbit.green{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity))}rabbit.green:where([data-theme=dark],[data-theme=dark] *),.prose rabbit.green:where([data-theme=dark],[data-theme=dark] *){--tw-text-opacity:1;color:rgb(134 239 172/var(--tw-text-opacity))}rabbit.green,.prose rabbit.green{background:color-mix(in srgb,#22c55e 10%,var(--surface));border-color:color-mix(in srgb,#22c55e 35%,var(--border))}rabbit.green:before,.prose rabbit.green:before{--tw-border-opacity:1;border-color:rgb(22 163 74/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity))}rabbit.green:where([data-theme=dark],[data-theme=dark] *):before,.prose rabbit.green:where([data-theme=dark],[data-theme=dark] *):before{--tw-border-opacity:1;border-color:rgb(74 222 128/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity))}rabbit.blue,.prose rabbit.blue{--tw-text-opacity:1;color:hsl(214 100% 33.25%/var(--tw-text-opacity))}rabbit.blue:where([data-theme=dark],[data-theme=dark] *),.prose rabbit.blue:where([data-theme=dark],[data-theme=dark] *){--tw-text-opacity:1;color:hsl(214 100% 83.21%/var(--tw-text-opacity))}rabbit.blue,.prose rabbit.blue{background:color-mix(in srgb,#3b82f6 10%,var(--surface));border-color:color-mix(in srgb,#3b82f6 35%,var(--border))}rabbit.blue:before,.prose rabbit.blue:before{--tw-border-opacity:1;border-color:hsl(214 100% 41.85%/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:hsl(214 100% 51%/var(--tw-bg-opacity))}rabbit.blue:where([data-theme=dark],[data-theme=dark] *):before,.prose rabbit.blue:where([data-theme=dark],[data-theme=dark] *):before{--tw-border-opacity:1;border-color:hsl(214 100% 67.54%/var(--tw-border-opacity));--tw-bg-opacity:1;background-color:hsl(214 100% 33.25%/var(--tw-bg-opacity))}.underline-soft{text-underline-offset:4px;text-decoration:underline;text-decoration-thickness:2px}#reading-progress{z-index:60;background-image:linear-gradient(90deg,var(--accent),var(--accent-2));box-shadow:none;width:0;height:3px;position:fixed;top:0;left:0}.article-grid{grid-template-columns:minmax(0,1fr)}.article-grid .prose{margin-left:auto;margin-right:auto}@media (min-width:1536px){.article-grid .prose{margin-left:0;margin-right:0}}.article-title{font-size:clamp(1.75rem,1.2rem + 3cqi,3rem)}.article-grid .prose>:first-child{margin-top:1.5rem}@media (min-width:1536px){.article-grid{grid-template-columns:minmax(0,1fr) minmax(var(--article-toc-min-width),var(--article-toc-max-width))}}.btn{border:1px solid var(--border);background:var(--surface-2);color:var(--text);border-radius:10px;justify-content:center;align-items:center;gap:.5rem;padding:.55rem .9rem;font-weight:500;text-decoration:none;transition:background-color .18s,color .18s,border-color .18s,box-shadow .18s;display:inline-flex}.btn:hover{border-color:color-mix(in srgb,var(--accent) 20%,var(--border))}.btn:focus-visible{outline:3px solid color-mix(in srgb,var(--accent) 45%,transparent);outline-offset:2px}.btn:disabled,.btn[aria-busy=true]{opacity:.7;cursor:not-allowed}.btn-primary{background:color-mix(in srgb,var(--accent) 12%,var(--surface-2));border-color:color-mix(in srgb,var(--accent) 28%,var(--border));color:var(--text);box-shadow:none}.btn-primary:hover{background:color-mix(in srgb,var(--accent) 16%,var(--surface-2));border-color:color-mix(in srgb,var(--accent) 34%,var(--border))}.btn-primary:active{background:color-mix(in srgb,var(--accent) 20%,var(--surface-2))}.btn-outline{color:color-mix(in srgb,var(--accent) 80%,var(--text));border-color:color-mix(in srgb,var(--accent) 40%,var(--border));background:0 0}.btn-outline:hover{background:color-mix(in srgb,var(--accent) 8%,transparent)}.btn-ghost{color:color-mix(in srgb,var(--accent) 80%,var(--text));background:0 0;border-color:#0000}.btn-ghost:hover{background:color-mix(in srgb,var(--accent) 8%,transparent)}.btn-sm{border-radius:8px;padding:.4rem .7rem;font-size:.9rem}.btn-lg{border-radius:12px;padding:.7rem 1.1rem;font-size:1.05rem}.date-chip{background:color-mix(in srgb,var(--text) 10%,var(--surface-2));color:color-mix(in srgb,var(--text) 70%,var(--bg));border-radius:9999px;align-items:center;gap:.35rem;padding:.25rem .6rem;line-height:1;display:inline-flex}.date-chip .dot{background:color-mix(in srgb,var(--text) 50%,var(--bg));border-radius:9999px;width:.375rem;height:.375rem}main .post-card{color:inherit;text-decoration:none}main .post-card.card-surface:hover,main .post-card:hover,main .post-card:focus-visible{border-color:color-mix(in srgb,var(--text) 14%,var(--border));background:color-mix(in srgb,var(--text) 5%,var(--surface-2));box-shadow:var(--shadow-lg)}main .post-card:focus-visible{outline:3px solid color-mix(in srgb,var(--text) 35%,transparent);outline-offset:2px}main .post-card h2,main .post-card h3{color:var(--text);text-decoration:none}main .post-card:hover h2,main .post-card:hover h3{text-underline-offset:4px;text-decoration:underline;-webkit-text-decoration-color:color-mix(in srgb,var(--text) 40%,var(--bg));text-decoration-color:color-mix(in srgb,var(--text) 40%,var(--bg))}