@font-face{font-display:block;font-family:rubik;font-style:normal;font-weight:400;src:url(/fonts/rubik/rubik-v28-latin-regular.woff2)format('woff2')}@font-face{font-display:block;font-family:rubik;font-style:italic;font-weight:400;src:url(/fonts/rubik/rubik-v28-latin-italic.woff2)format('woff2')}@font-face{font-display:block;font-family:rubik;font-style:normal;font-weight:500;src:url(/fonts/rubik/rubik-v28-latin-500.woff2)format('woff2')}@font-face{font-display:block;font-family:rubik;font-style:normal;font-weight:700;src:url(/fonts/rubik/rubik-v28-latin-700.woff2)format('woff2')}:root{--space-3xs:clamp(0.3125rem, 0.3125rem + 0vw, 0.3125rem);--space-2xs:clamp(0.5625rem, 0.5408rem + 0.1087vw, 0.625rem);--space-xs:clamp(0.875rem, 0.8533rem + 0.1087vw, 0.9375rem);--space-s:clamp(1.125rem, 1.0815rem + 0.2174vw, 1.25rem);--space-m:clamp(1.6875rem, 1.6223rem + 0.3261vw, 1.875rem);--space-l:clamp(2.25rem, 2.163rem + 0.4348vw, 2.5rem);--space-xl:clamp(3.375rem, 3.2446rem + 0.6522vw, 3.75rem);--space-2xl:clamp(4.5rem, 4.3261rem + 0.8696vw, 5rem);--space-3xl:clamp(6.75rem, 6.4891rem + 1.3043vw, 7.5rem);--space-3xs-2xs:clamp(0.3125rem, 0.2038rem + 0.5435vw, 0.625rem);--space-2xs-xs:clamp(0.5625rem, 0.4321rem + 0.6522vw, 0.9375rem);--space-xs-s:clamp(0.875rem, 0.7446rem + 0.6522vw, 1.25rem);--space-s-m:clamp(1.125rem, 0.8641rem + 1.3043vw, 1.875rem);--space-m-l:clamp(1.6875rem, 1.4049rem + 1.413vw, 2.5rem);--space-l-xl:clamp(2.25rem, 1.7283rem + 2.6087vw, 3.75rem);--space-xl-2xl:clamp(3.375rem, 2.8098rem + 2.8261vw, 5rem);--space-2xl-3xl:clamp(4.5rem, 3.4565rem + 5.2174vw, 7.5rem)}:root{--sans:"Rubik", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--serif:ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;--mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--step--2:clamp(0.7813rem, 0.7747rem + 0.0326vw, 0.8rem);--step--1:clamp(0.9375rem, 0.9158rem + 0.1087vw, 1rem);--step-0:clamp(1.125rem, 1.0815rem + 0.2174vw, 1.25rem);--step-1:clamp(1.35rem, 1.2761rem + 0.3696vw, 1.5625rem);--step-2:clamp(1.62rem, 1.5041rem + 0.5793vw, 1.9531rem);--step-3:clamp(1.9438rem, 1.7707rem + 0.8652vw, 2.4413rem);--step-4:clamp(2.3325rem, 2.0823rem + 1.2511vw, 3.0519rem);--step-5:clamp(2.7994rem, 2.4461rem + 1.7663vw, 3.815rem)}:root{--gray-0:#f8f9fa;--gray-1:#f1f3f5;--gray-2:#e9ecef;--gray-3:#dee2e6;--gray-4:#ced4da;--gray-5:#adb5bd;--gray-6:#868e96;--gray-7:#495057;--gray-8:#343a40;--gray-9:#212529;--gray-10:#16191d;--gray-11:#0d0f12;--gray-12:#030507;--purple-3:#e599f7;--purple-5:#cc5de8;--bsky-blue:#208bfe;--bsky-blue-light:#4ca2fe}html{--surface-1:white;--text-1:var(--gray-9);--text-2:var(--gray-7);--text-3:var(--gray-6);color-scheme:light}html.dark{--surface-1:black;--text-1:var(--gray-0);--text-2:var(--gray-5);--text-3:var(--gray-6);color-scheme:dark}html,body{margin:0;padding:0}a{color:var(--text-1);text-decoration-color:var(--text-3)}a:hover{text-decoration-color:initial}:where(a:visited){color:var(--purple-5)}.dark :where(a:visited){color:var(--purple-3)}h1,h2,h3,h4,h5,h6{color:var(--text-1);font-variant:lining-nums}h1{font-family:var(--serif);font-size:var(--step-5)}h2{font-size:var(--step-4)}h3{font-size:var(--step-3)}h4{font-size:var(--step-2)}h5{font-size:var(--step-1)}hr{width:50%;margin-block:var(--space-xl);border-width:0;border-top-width:1px;border-color:var(--text-3)}.flow>*+*{margin-block-start:var(--flow-space,1em)}.row>*+*{margin-inline-start:var(--flow-space,1em)}.flex{display:flex;gap:var(--flow-space,1em)}.flex-col{display:flex;flex-direction:column;gap:var(--flow-space,1em)}.wrap{max-width:760px;margin-inline:auto;padding-inline:var(--space-xs-s);overflow-wrap:break-word}@keyframes jello{from,11.1%,to{transform:translate3d(0,0,0)}22.2%{transform:skewX(-12.5deg)skewY(-12.5deg)}33.3%{transform:skewX(6.25deg)skewY(6.25deg)}44.4%{transform:skewX(-3.125deg)skewY(-3.125deg)}55.5%{transform:skewX(1.5625deg)skewY(1.5625deg)}66.6%{transform:skewX(-.78125deg)skewY(-.78125deg)}77.7%{transform:skewX(.390625deg)skewY(.390625deg)}88.8%{transform:skewX(-.1953125deg)skewY(-.1953125deg)}}.icon{mask:var(--icon)no-repeat;mask-size:100% 100%;background-color:currentColor;color:inherit;display:inline-block;height:1.2em;width:1.2em;vertical-align:text-bottom}.icon__sun{--icon:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"><g stroke="currentColor" stroke-linecap="round" stroke-width="2"><path d="M12 7C14.76 7 17 9.24 17 12C17 14.76 14.76 17 12 17C9.24 17 7 14.76 7 12C7 9.24 9.24 7 12 7" fill="none" stroke-dasharray="34" stroke-dashoffset="34"><animate attributeName="stroke-dashoffset" values="34;0" dur="0.4s" fill="freeze" /></path><g fill="none" stroke-dasharray="2" stroke-dashoffset="2"><path d="M0 0"><animate attributeName="d" values="M12 19v1M19 12h1M12 5v-1M5 12h-1;M12 21v1M21 12h1M12 3v-1M3 12h-1" begin="0.5s" dur="0.2s" fill="freeze" /><animate attributeName="stroke-dashoffset" values="2;0" begin="0.5s" dur="0.2s" fill="freeze" /></path><path d="M0 0"><animate attributeName="d" values="M17 17l0.5 0.5M17 7l0.5 -0.5M7 7l-0.5 -0.5M7 17l-0.5 0.5;M18.5 18.5l0.5 0.5M18.5 5.5l0.5 -0.5M5.5 5.5l-0.5 -0.5M5.5 18.5l-0.5 0.5" begin="0.7s" dur="0.2s" fill="freeze" /><animate attributeName="stroke-dashoffset" values="2;0" begin="0.7s" dur="0.2s" fill="freeze" /></path><animateTransform attributeName="transform" type="rotate" values="0 12 12;360 12 12" dur="30s" repeatCount="indefinite" /></g></g></svg>')}.icon__moon{--icon:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" preserveAspectRatio="xMidYMid meet" viewBox="0 0 24 24"><g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="4" stroke-dashoffset="4"><path d="M13 4h1.5M13 4h-1.5M13 4v1.5M13 4v-1.5"><animate id="loop" attributeName="stroke-dashoffset" values="4;0" begin="0.7s;loop.begin+6s" dur="0.4s" fill="freeze" /><animate attributeName="stroke-dashoffset" values="4;0" begin="loop.begin+2s;loop.begin+4s" dur="0.4s" fill="freeze" /><animate attributeName="stroke-dashoffset" values="0;4" begin="loop.begin+1.2s;loop.begin+3.2s;loop.begin+5.2s" dur="0.4s" fill="freeze" /><set attributeName="d" to="M12 5h1.5M12 5h-1.5M12 5v1.5M12 5v-1.5" begin="loop.begin+1.8s" /><set attributeName="d" to="M12 4h1.5M12 4h-1.5M12 4v1.5M12 4v-1.5" begin="loop.begin+3.8s" /><set attributeName="d" to="M13 4h1.5M13 4h-1.5M13 4v1.5M13 4v-1.5" begin="loop.begin+5.8s" /></path><path d="M19 11h1.5M19 11h-1.5M19 11v1.5M19 11v-1.5"><animate id="loop2" attributeName="stroke-dashoffset" values="4;0" begin="1.1s;loop2.begin+6s" dur="0.4s" fill="freeze" /><animate attributeName="stroke-dashoffset" values="4;0" begin="loop2.begin+2s;loop2.begin+4s" dur="0.4s" fill="freeze" /><animate attributeName="stroke-dashoffset" values="0;4" begin="loop2.begin+1.2s;loop2.begin+3.2s;loop2.begin+5.2s" dur="0.4s" fill="freeze" /><set attributeName="d" to="M17 11h1.5M17 11h-1.5M17 11v1.5M17 11v-1.5" begin="loop2.begin+1.8s" /><set attributeName="d" to="M18 12h1.5M18 12h-1.5M18 12v1.5M18 12v-1.5" begin="loop2.begin+3.8s" /><set attributeName="d" to="M19 11h1.5M19 11h-1.5M19 11v1.5M19 11v-1.5" begin="loop2.begin+5.8s" /></path><path d="M19 4h1.5M19 4h-1.5M19 4v1.5M19 4v-1.5"><animate id="loop3" attributeName="stroke-dashoffset" values="4;0" begin="2.9s;loop3.begin+6s" dur="0.4s" fill="freeze" /><animate attributeName="stroke-dashoffset" values="4;0" begin="loop3.begin+2s" dur="0.4s" fill="freeze" /><animate attributeName="stroke-dashoffset" values="0;4" begin="loop3.begin+1.2s;loop3.begin+3.2s" dur="0.4s" fill="freeze" /><set attributeName="d" to="M20 5h1.5M20 5h-1.5M20 5v1.5M20 5v-1.5" begin="loop3.begin+1.8s" /><set attributeName="d" to="M19 4h1.5M19 4h-1.5M19 4v1.5M19 4v-1.5" begin="loop3.begin+5.8s" /></path></g><g fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"><path d="M7 6 C7 12.08 11.92 17 18 17 C18.53 17 19.05 16.96 19.56 16.89 C17.95 19.36 15.17 21 12 21 C7.03 21 3 16.97 3 12 C3 8.83 4.64 6.05 7.11 4.44 C7.04 4.95 7 5.47 7 6 Z" stroke-dashoffset="56" stroke-dasharray="56"><animate attributeName="stroke-dashoffset" values="56;0" dur="0.6s" fill="freeze" /></path></g></svg>')}body{background:var(--surface-1);color:var(--text-2);font-size:var(--step-0);font-family:var(--sans);line-height:1.75}.header-face{display:inline-block;vertical-align:text-bottom;width:1.2em;height:1.2em}.header-face:hover{animation:jello 1s linear 1;transform-origin:center}nav>a{display:inline-flex;flex-direction:column;text-decoration-line:none;color:var(--text-1) !important}nav>a.active{font-weight:500;text-decoration-line:underline}nav>a:visited,.dark nav>a:visited{color:inherit}nav>a::after{content:attr(title);height:0;font-weight:500;visibility:hidden;overflow:hidden}#theme-toggle{background:0 0;border:none;cursor:pointer;vertical-align:middle;color:var(--text-1);padding:0}.light #theme-toggle>.moon{display:none}.dark #theme-toggle>.sun{display:none}footer{color:var(--text-3);font-size:var(--step--1);text-align:center;margin-block:var(--space-2xl-3xl)}.article-update{position:relative;margin-block:var(--space-m);margin-inline:var(--space-s-m);border:2px solid var(--bsky-blue);border-radius:4px;padding:var(--space-2xs);padding-top:var(--space-xs)}.article-update>.badge{font-family:var(--mono);font-size:var(--step--1);background:var(--bsky-blue);color:#fff;position:absolute;top:calc(-.5 * var(--space-m) - 1px);left:calc(-.5 * var(--space-s-m));padding-inline:var(--space-2xs);border-radius:4px}.highlight{background-color:#0d1117;margin-block-start:var(--space-2xs);font-size:var(--step--1);border:1px solid var(--gray-9);border-radius:8px;overflow:auto}.highlight td:first-child span{color:#8b949e !important}code:not(.highlight code){background:var(--gray-9);color:var(--gray-0);padding-inline:.25em;border:1px solid var(--gray-7);border-radius:4px}blockquote{font-style:italic;padding-left:1em;border-left:4px solid}[data-tooltip]{position:relative}[data-tooltip]::after{content:attr(data-tooltip);position:absolute;bottom:50%;left:50%;background-color:var(--text-1);color:var(--surface-1);padding:var(--space-3xs)var(--space-2xs);border-radius:4px;overflow:hidden;pointer-events:none;white-space:nowrap;transform:translate(-50%,0%);opacity:0;transition:.1s}[data-tooltip]:hover::after{opacity:1;bottom:110%}.bsky-reply-btn{background:var(--bsky-blue);padding:.5em 1em;border-radius:99999px;text-decoration:none;color:#fff}.bsky-reply-btn:hover,.bsky-reply-btn:focus{background:var(--bsky-blue-light)}.bsky-reply-stats-btn{color:var(--text-2);font-size:var(--step--2);text-decoration:none;padding:.25em .5em;border-radius:4px}.bsky-reply-stats-btn:hover,.bsky-reply-stats-btn:focus{background:var(--bsky-blue);color:#fff}