.crumbs:where(.astro-k3wbizsj){display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;list-style:none;font-size:14px;color:var(--text-muted)}li:where(.astro-k3wbizsj){display:inline-flex;align-items:center;gap:.5rem}a:where(.astro-k3wbizsj){color:var(--text);-webkit-text-decoration:underline;text-decoration:underline;text-underline-offset:3px}a:where(.astro-k3wbizsj):hover{color:var(--accent)}a:where(.astro-k3wbizsj):focus-visible{outline:3px solid var(--accent);outline-offset:3px;border-radius:8px}svg:where(.astro-k3wbizsj){fill:var(--text-muted);flex:none}.toc:where(.astro-4yygjzhe){display:flex;flex-direction:column;gap:1rem}.toc-title:where(.astro-4yygjzhe){font-size:24px;font-weight:600;line-height:1.24;letter-spacing:-.01em;color:var(--text)}ul:where(.astro-4yygjzhe){display:flex;flex-direction:column;gap:.75rem;list-style:none}a:where(.astro-4yygjzhe){display:inline-block;font-size:14px;line-height:1.3;color:var(--text);-webkit-text-decoration:none;text-decoration:none}a:where(.astro-4yygjzhe):hover,a:where(.astro-4yygjzhe)[aria-current=true]{color:var(--accent)}a:where(.astro-4yygjzhe)[aria-current=true]{font-weight:600}a:where(.astro-4yygjzhe):focus-visible{outline:3px solid var(--accent);outline-offset:3px;border-radius:8px}.nested:where(.astro-4yygjzhe){margin-left:2px;padding-left:1rem;border-left:1px solid var(--card-border)}.nested:where(.astro-4yygjzhe) a:where(.astro-4yygjzhe){font-size:13px;font-weight:300;color:var(--text-muted)}.nested:where(.astro-4yygjzhe) a:where(.astro-4yygjzhe)[aria-current=true]{color:var(--accent);font-weight:600}.featured:where(.astro-u54yqnda){display:flex;flex-direction:column;gap:1rem;padding:1rem;color:var(--text);-webkit-text-decoration:none;text-decoration:none;background:var(--card-bg);border:2px solid var(--card-border);border-radius:16px;transition:border-color .15s}.featured:where(.astro-u54yqnda):hover{border-color:var(--card-border-hover)}.featured:where(.astro-u54yqnda):focus-visible{outline:3px solid var(--accent);outline-offset:4px}.body:where(.astro-u54yqnda){display:flex;flex-direction:column;justify-content:center;gap:1rem;min-width:0}h3:where(.astro-u54yqnda){font-size:24px;font-weight:600;line-height:1.2;letter-spacing:-.02em;color:var(--text)}.desc:where(.astro-u54yqnda){font-size:16px;font-weight:300;line-height:1.35;color:var(--text)}.date:where(.astro-u54yqnda){color:var(--text-muted)}.tags:where(.astro-u54yqnda){display:flex;flex-wrap:wrap;gap:.5rem}.cover:where(.astro-u54yqnda){min-height:160px}@media(min-width:768px){.featured:where(.astro-u54yqnda){flex-direction:row;gap:2rem;padding:1.5rem}.body:where(.astro-u54yqnda),.cover:where(.astro-u54yqnda){flex:1 1 0}.cover:where(.astro-u54yqnda){min-height:220px}h3:where(.astro-u54yqnda){font-size:32px}}.tile:where(.astro-g2swp5xe){display:flex;flex-direction:column;gap:1rem;min-width:0;color:var(--text);-webkit-text-decoration:none;text-decoration:none}.cover:where(.astro-g2swp5xe){aspect-ratio:16 / 10}.body:where(.astro-g2swp5xe){display:flex;flex-direction:column;gap:.75rem}h3:where(.astro-g2swp5xe){color:var(--text)}.tile:where(.astro-g2swp5xe):hover h3:where(.astro-g2swp5xe){-webkit-text-decoration:underline;text-decoration:underline;text-underline-offset:4px;text-decoration-color:var(--accent)}.desc:where(.astro-g2swp5xe){font-size:14px;font-weight:300;line-height:1.25;color:var(--text)}.date:where(.astro-g2swp5xe){color:var(--text-muted)}.tags:where(.astro-g2swp5xe){display:flex;flex-wrap:wrap;gap:.5rem}.tile:where(.astro-g2swp5xe):focus-visible{outline:3px solid var(--accent);outline-offset:4px;border-radius:16px}.similar:where(.astro-qakzihop){display:flex;flex-direction:column;gap:2rem;padding-top:2.5rem;padding-bottom:2.5rem;border-top:1px solid var(--card-border)}.similar:where(.astro-qakzihop)>*{box-sizing:border-box;width:100%;max-width:1124px;margin-left:auto;margin-right:auto}h2:where(.astro-qakzihop){font-size:24px;font-weight:600;line-height:1.2;letter-spacing:-.02em;color:var(--text)}ul:where(.astro-qakzihop){display:grid;grid-template-columns:repeat(auto-fit,minmax(min(260px,100%),1fr));grid-gap:2rem 1.5rem;gap:2rem 1.5rem;list-style:none}@media(min-width:768px){.similar:where(.astro-qakzihop){padding-top:4rem;padding-bottom:4rem}h2:where(.astro-qakzihop){font-size:32px}}.band:where(.astro-6jnmu7kz){display:flex;flex-direction:column;gap:1.5rem;padding-top:3rem;padding-bottom:2.5rem;color:#fbfbfb;background:radial-gradient(80% 70% at 50% 110%,#1b7a82,#0b2f3f 50%,#092730 85%)}html:not(.dark) .band:where(.astro-6jnmu7kz){color:#f5f5f5;background:radial-gradient(80% 70% at 50% 110%,#66a2b9,#3a2d55 55%,#271939)}.band:where(.astro-6jnmu7kz)>:where(.astro-6jnmu7kz){box-sizing:border-box;width:100%;max-width:1124px;margin-left:auto;margin-right:auto}h2:where(.astro-6jnmu7kz){font-size:24px;font-weight:600;line-height:1.2;letter-spacing:-.02em;color:inherit}.row:where(.astro-6jnmu7kz){display:flex;flex-wrap:wrap;align-items:center;gap:2rem 3rem}p:where(.astro-6jnmu7kz){flex:999 18rem;max-width:80ch;font-size:18px;line-height:1.5;color:inherit}@media(min-width:768px){.band:where(.astro-6jnmu7kz){padding-top:6rem;padding-bottom:4rem}h2:where(.astro-6jnmu7kz){font-size:32px}p:where(.astro-6jnmu7kz){font-size:24px}}.prose{--article-font: Mosk, Open Sans, sans-serif;display:flex;flex-direction:column;gap:1.5rem;font-family:Mosk,Open Sans,sans-serif;font-family:var(--article-font);font-size:16px;font-weight:400;line-height:1.65;color:var(--text);word-wrap:anywhere}.prose>:not(pre):not(.code-block):not(table){max-width:68ch}.prose h1,.prose h2#toc,.prose h2#toc+ul,.prose h2#toc+ol,.prose h2#table-of-content,.prose h2#table-of-content+ul,.prose h2#table-of-content+ol{display:none}.prose h2,.prose h3,.prose h4,.prose h5{font-family:Open Sans,sans-serif;color:var(--text);scroll-margin-top:1.5rem}.prose h2{margin-top:1rem;font-size:24px;font-weight:600;line-height:1.24;letter-spacing:-.01em}.prose h3{margin-top:.5rem;font-size:20px;font-weight:400;line-height:1.26;letter-spacing:-.01em}.prose h4{font-size:16px;font-weight:600}.prose h5{font-size:14px;font-weight:600}.prose p{color:var(--text)}.prose ul,.prose ol{display:flex;flex-direction:column;gap:.5rem;padding-left:1.5rem}.prose ul{list-style:disc}.prose ol{list-style:decimal}.prose li>ul,.prose li>ol{margin-top:.5rem}.prose a:not(.bookmark){color:var(--accent);-webkit-text-decoration:underline;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}.prose a:not(.bookmark):hover{text-decoration-thickness:2px}.prose a:not(.bookmark):focus-visible{outline:3px solid var(--accent);outline-offset:3px;border-radius:8px}.prose a[href^=http]:not(.bookmark):after{content:"";display:inline-block;width:.7em;height:.7em;margin-left:.2em;background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 256 256'%3E%3Cpath d='M200,64V168a8,8,0,0,1-16,0V83.31L69.66,197.66a8,8,0,0,1-11.32-11.32L172.69,72H88a8,8,0,0,1,0-16H192A8,8,0,0,1,200,64Z'/%3E%3C/svg%3E") center / contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 256 256'%3E%3Cpath d='M200,64V168a8,8,0,0,1-16,0V83.31L69.66,197.66a8,8,0,0,1-11.32-11.32L172.69,72H88a8,8,0,0,1,0-16H192A8,8,0,0,1,200,64Z'/%3E%3C/svg%3E") center / contain no-repeat}.prose blockquote{position:relative;max-width:56ch;margin-top:.5rem;margin-bottom:.5rem;padding-top:3.25rem;font-family:Open Sans,sans-serif;font-size:20px;font-weight:400;line-height:1.45;letter-spacing:-.01em;color:var(--text);border-top:1px solid var(--card-border)}.prose blockquote:before{content:"“";position:absolute;top:.6rem;left:-.05em;font-family:Open Sans,sans-serif;font-size:72px;font-weight:600;line-height:1;color:var(--accent)}.prose blockquote>*{max-width:none;font:inherit;letter-spacing:inherit}.prose blockquote>*+*{margin-top:.75rem}.prose blockquote footer,.prose blockquote cite{display:block;font-family:Mosk,Open Sans,sans-serif;font-size:14px;font-style:normal;font-weight:300;letter-spacing:.02em;color:var(--text-muted)}.prose blockquote footer:before,.prose blockquote>cite:before{content:"— "}.prose aside{--callout-fg: var(--note-fg);--callout-bg: var(--note-bg);padding:1rem 1.25rem;color:var(--text);background:var(--callout-bg);border:1px solid color-mix(in srgb,var(--callout-fg) 35%,transparent);border-radius:16px}.prose aside[data-type=tip]{--callout-fg: var(--tip-fg);--callout-bg: var(--tip-bg)}.prose aside[data-type=warning]{--callout-fg: var(--warning-fg);--callout-bg: var(--warning-bg)}.prose aside[data-type=caution]{--callout-fg: var(--caution-fg);--callout-bg: var(--caution-bg)}.prose aside>*+*{margin-top:.75rem}.prose aside p{max-width:none;font-size:15px;line-height:1.55}.prose aside .callout-title{display:flex;align-items:center;gap:.5rem;font-family:Open Sans,sans-serif;font-size:15px;font-weight:600;line-height:1.3;color:var(--callout-fg)}.prose aside .callout-title svg{flex:none;width:20px;height:20px}.prose :not(pre)>code{padding:.1em .35em;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.9em;background:var(--card-bg);border-radius:6px}.prose img{max-width:100%;height:auto;border-radius:16px}.prose hr{border:0;border-top:1px solid var(--card-border)}.prose table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse}.prose th,.prose td{padding:.5rem .75rem;text-align:left;border:1px solid var(--card-border)}.code-block{position:relative}.prose pre{padding:1.25rem 6.5rem 1.25rem 1.25rem;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:14px;line-height:1.6;border-radius:16px}.prose pre code{font-family:inherit}.prose pre:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.copy-code{position:absolute;top:.75rem;right:.75rem;z-index:1;display:inline-flex;align-items:center;gap:.4rem;min-height:36px;padding:0 .75rem 0 .6rem;font-family:Mosk,Open Sans,sans-serif;font-size:13px;font-weight:400;line-height:1;letter-spacing:.02em;color:#c9c9bd;cursor:pointer;background:#f8f8f20f;border:1px solid rgba(248,248,242,.16);border-radius:8px;transition:background-color .12s ease,border-color .12s ease,color .12s ease}.copy-code:hover{color:#f8f8f2;background:#f8f8f21f;border-color:#6db6ff80}.copy-code:focus-visible{outline:2px solid #6DB6FF;outline-offset:2px}html.dark .copy-code:hover{border-color:#75dfdb80}html.dark .copy-code:focus-visible{outline-color:#75dfdb}.copy-code svg{flex:none}.copy-code .icon-check,.copy-code[data-state=copied] .icon-copy,.copy-code[data-state=failed] .icon-check{display:none}.copy-code[data-state=copied] .icon-check{display:block}.copy-code[data-state=copied],.copy-code[data-state=copied]:hover{color:#6db6ff;background:#2391ff24;border-color:#6db6ff8c}html.dark .copy-code[data-state=copied],html.dark .copy-code[data-state=copied]:hover{color:#2cd8a8;background:#2cd8a81a;border-color:#2cd8a873}.copy-code[data-state=failed],.copy-code[data-state=failed]:hover{color:#f0898a;border-color:#f0898a73}@media(max-width:479px){.copy-code [data-copy-label]{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.copy-code{min-width:36px;justify-content:center;padding:0}.prose pre{padding-right:3.5rem}}@media(prefers-reduced-motion:no-preference){main,html{scroll-behavior:smooth}}@media(min-width:768px){.prose pre{padding:1.5rem 7rem 1.5rem 1.5rem}}.post-grid:where(.astro-mdep4fvf){display:flex;flex-direction:column;align-items:flex-start;gap:2rem;padding-top:1.5rem;padding-bottom:2rem}.post:where(.astro-mdep4fvf){display:flex;flex-direction:column;gap:1.5rem;width:100%;min-width:0;max-width:760px}.post-head:where(.astro-mdep4fvf){display:flex;flex-direction:column;gap:1.25rem}h1:where(.astro-mdep4fvf){font-family:Open Sans,sans-serif;font-size:32px;font-weight:600;line-height:1.15;letter-spacing:-.02em;color:var(--text)}.subtitle:where(.astro-mdep4fvf){font-family:Open Sans,sans-serif;font-size:18px;line-height:1.35;letter-spacing:-.01em;color:var(--text-muted)}.meta:where(.astro-mdep4fvf){display:flex;flex-wrap:wrap;align-items:center;gap:.75rem 1rem;font-size:14px;font-weight:300;letter-spacing:.02em;color:var(--text-muted)}.tags:where(.astro-mdep4fvf){display:flex;flex-wrap:wrap;gap:.5rem}.author:where(.astro-mdep4fvf){display:flex;align-items:center;gap:1rem}.author:where(.astro-mdep4fvf) img{width:56px;height:56px;-o-object-fit:cover;object-fit:cover;border-radius:50%}.author-name:where(.astro-mdep4fvf){font-size:16px;font-weight:600;line-height:1.25;color:var(--text)}.author-links:where(.astro-mdep4fvf){display:flex;gap:.75rem;margin-top:.375rem;font-size:13px;font-weight:300}.author-links:where(.astro-mdep4fvf) a:where(.astro-mdep4fvf){color:var(--text);-webkit-text-decoration:underline;text-decoration:underline;text-underline-offset:3px}.author-links:where(.astro-mdep4fvf) a:where(.astro-mdep4fvf):hover{color:var(--accent)}.toc-collapsible:where(.astro-mdep4fvf){padding:.25rem 1rem;border:1px solid var(--card-border);border-radius:16px}.toc-collapsible:where(.astro-mdep4fvf) summary:where(.astro-mdep4fvf){display:flex;align-items:center;min-height:44px;font-family:Open Sans,sans-serif;font-size:18px;font-weight:600;color:var(--text);cursor:pointer}.toc-collapsible:where(.astro-mdep4fvf) .toc{padding-bottom:.75rem}.toc-aside:where(.astro-mdep4fvf){display:none}.post-body:where(.astro-mdep4fvf){position:relative}.rail:where(.astro-mdep4fvf){display:none}.rail-item:where(.astro-mdep4fvf){display:flex;flex-direction:column;align-items:center;gap:.25rem;min-width:3.5rem;min-height:3.25rem;padding:.5rem .25rem;font-family:Mosk,Open Sans,sans-serif;font-size:11px;font-weight:400;line-height:1.2;letter-spacing:.02em;color:var(--text-muted);-webkit-text-decoration:none;text-decoration:none;cursor:pointer;background:none;border:0;border-radius:8px;transition:color .12s,background-color .12s}.rail-item:where(.astro-mdep4fvf):hover{color:var(--accent);background:var(--card-bg)}.rail-item:where(.astro-mdep4fvf):focus-visible{outline:3px solid var(--accent);outline-offset:2px}@media(min-width:768px){.post-grid:where(.astro-mdep4fvf){gap:4rem;padding-top:2.5rem;padding-bottom:4rem}.post:where(.astro-mdep4fvf){gap:2rem}.post-head:where(.astro-mdep4fvf){gap:1.5rem}h1:where(.astro-mdep4fvf){font-size:48px}.subtitle:where(.astro-mdep4fvf){font-size:20px}}@media(min-width:976px){.post-grid:where(.astro-mdep4fvf){flex-direction:row;justify-content:center;width:100%;max-width:calc(1060px + 4rem + 2*max(1rem,min(10vw,12rem)));margin-left:auto;margin-right:auto;box-sizing:border-box}.post:where(.astro-mdep4fvf){flex:1 1 0}.toc-collapsible:where(.astro-mdep4fvf){display:none}.rail:where(.astro-mdep4fvf){display:block;position:absolute;top:0;bottom:0;left:-4.75rem;width:3.5rem}.rail-inner:where(.astro-mdep4fvf){position:sticky;top:1.5rem;display:flex;flex-direction:column;align-items:center;gap:.75rem}.toc-aside:where(.astro-mdep4fvf){display:block;position:sticky;top:1.5rem;flex:none;width:300px;max-height:calc(100dvh - 10rem);overflow-y:auto}}
