.article{max-width:920px;margin:0 auto}.article-header{padding:48px 0 32px;display:flex;flex-direction:column;gap:18px}.article-meta{display:flex;flex-wrap:wrap;gap:10px 20px;align-items:center;font:13px var(--mono);color:var(--muted)}.toc{margin-top:6px;padding:12px 18px;display:flex;flex-direction:column;gap:8px}.toc ol{columns:2 240px;column-gap:32px;font-size:14px;line-height:1.6}.toc li{padding-bottom:4px;break-inside:avoid}.toc a{color:var(--body)}.toc a:hover{color:var(--accent)}.num{margin-right:8px;font:12px var(--mono);color:var(--accent)}.series{padding:18px 20px;display:flex;flex-direction:column;gap:14px}.series-head{display:flex;flex-wrap:wrap;gap:6px 16px;align-items:baseline;justify-content:space-between}.series-head>span{display:flex;flex-wrap:wrap;gap:6px 12px;align-items:baseline}.series-title{font-size:16px;font-weight:600;color:var(--heading)}.series-count{color:var(--accent)}.series-head a,.series-steps{font-size:13px;font-weight:500}.series ol{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:8px 24px;font-size:14px;line-height:1.4}.part{display:flex;gap:10px;align-items:center;min-height:32px;color:var(--body)}.part:hover{color:var(--accent)}.part-n{flex:0 0 26px;height:26px;border-radius:999px;border:1px solid var(--hover-line);display:flex;align-items:center;justify-content:center;font:12px var(--mono)}.part:hover .part-n{border-color:var(--accent)}.part[aria-current]{color:var(--heading);font-weight:500}.part[aria-current] .part-n{border-color:var(--accent);background:var(--accent);color:var(--bg)}.series-steps{display:flex;justify-content:space-between;gap:16px;padding-top:12px;border-top:1px solid var(--line-3)}.series-steps a:last-child{margin-left:auto}.prose{padding-top:8px;font-size:18px;line-height:1.75;color:var(--body);overflow-wrap:break-word}.prose>*{margin-block:0 22px}.prose>:last-child{margin-bottom:0}.prose a{text-decoration:underline;text-decoration-color:#3a4a44;text-underline-offset:4px}.prose a:hover{text-decoration-color:currentColor}.prose strong,.prose em{color:var(--text)}.prose h2{margin-top:46px;font-size:28px;line-height:1.25;font-weight:600;letter-spacing:-.025em}.prose h3{margin-top:36px;font-size:21px;line-height:1.3;font-weight:600;letter-spacing:-.015em}.prose h4{margin-top:28px;font-size:18px;color:var(--heading)}.prose h2 .num{margin-right:14px;font-size:15px;font-weight:500;letter-spacing:0;vertical-align:4px}.hash{margin-left:12px;color:var(--faint);text-decoration:none!important;opacity:0;transition:opacity .15s,color .15s}.prose :is(h2,h3):hover .hash,.hash:focus-visible{opacity:1}.hash:hover{color:var(--accent)}.prose ul,.prose ol{padding-left:1.4em}.prose ul{list-style:square}.prose ol{list-style:decimal-leading-zero;padding-left:2.1em}.prose li{padding-left:6px}.prose li+li,.prose li>ul,.prose li>ol{margin-top:8px}.prose li>p{margin:0}.prose li::marker{color:var(--accent)}.prose ol>li::marker{font-family:var(--mono);font-size:.8em}.prose ul ul{list-style:circle}.prose hr{border:0;border-top:1px solid var(--line-2);margin-block:40px}.prose blockquote{margin-inline:0;padding:20px 24px;color:var(--text)}.prose blockquote>:first-child{margin-top:0}.prose blockquote>:last-child{margin-bottom:0}.prose img{max-width:100%;height:auto;vertical-align:middle;border-radius:6px;background:#f4f5f2}.prose a:has(>img){position:relative;display:inline-block;max-width:100%;border-radius:8px;outline-offset:4px;cursor:zoom-in}.prose a:has(>img):hover img,.prose a:has(>img):focus-visible img{box-shadow:0 0 0 2px var(--accent)}.table-scroll{max-width:100%;overflow-x:auto}.equation{max-width:100%;overflow-x:auto;padding-block:12px;color:var(--text)}.equation mjx-container[display="true"]{width:max-content;margin:0;text-align:left;font-size:1.1em}.prose table{width:max-content;border-collapse:collapse;border-radius:12px;border:1px solid var(--line-2);background:var(--code-bg);font-size:14px;line-height:1.4}.prose th,.prose td{padding:10px 16px;text-align:left;border-bottom:1px solid var(--line-3)}.prose th{font:500 12px var(--mono);letter-spacing:.04em;color:var(--muted);background:var(--surface)}.prose tbody tr:last-child td{border-bottom:0}.prose tbody tr:hover{background:#161a1f}code{font-family:var(--mono)}:not(pre)>code{padding:2px 6px;border-radius:5px;background:#1a1e24;border:1px solid #252a31;font-size:.86em;color:var(--text)}.code{margin-block:6px 28px;border-radius:12px;background:var(--code-bg);border:1px solid var(--line-2);overflow:hidden}.code-bar{display:flex;justify-content:space-between;align-items:center;min-height:33px;padding:4px 8px 4px 16px;border-bottom:1px solid #1e2228;font:11px/1.4 var(--mono);color:var(--muted)}.code-lang{display:flex;align-items:center;gap:8px}.code-lang::before{content:"";width:8px;height:8px;border-radius:999px;background:var(--dot,var(--faint))}.copy{display:inline-flex;align-items:center;gap:5px;min-height:24px;padding:0 8px;border-radius:5px;background:transparent;border:1px solid transparent;color:var(--sub);font:inherit;cursor:pointer;transition:border-color .15s,color .15s}.copy:hover{border-color:var(--hover-line);color:var(--heading)}.copy[data-copied]{border-color:var(--accent);color:var(--accent)}.code pre,.prose pre{margin:0;padding:18px 20px;overflow-x:auto;font:14px/1.7 var(--mono);color:#d5dae0;tab-size:4}.prose>pre{border-radius:12px;background:var(--code-bg);border:1px solid var(--line-2)}.highlight .c1{color:#7d8590;font-style:italic}.highlight .k{color:#c3a6ff}.highlight .s{color:#f2c27a}.highlight .nc{color:#7cc4ff}.highlight .na{color:var(--accent)}.highlight .m{color:#f78c6c}.highlight .o{color:var(--muted)}.highlight .n{color:var(--text)}.more{margin-top:64px;padding-top:40px;border-top:1px solid var(--line-2);display:flex;flex-direction:column;gap:20px}.more .section-heading{border:0;padding:0}.more .section-heading a{font-size:14px;font-weight:500}.post-nav{margin-top:40px;padding:32px 0 80px;border-top:1px solid var(--line-2)}.post-nav .adj-title{font-size:17px}.post-nav .next{text-align:right}.lightbox{width:100%;max-width:none;height:100%;max-height:none;margin:0;padding:32px;border:0;background:rgba(8,9,11,.92);color:var(--body)}.lightbox[open]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px}.lightbox::backdrop{background:transparent}.lightbox-frame{max-width:min(1100px,100%);max-height:calc(100vh - 140px);padding:24px;border-radius:12px;background:#f4f5f2;display:flex;overflow:auto;cursor:zoom-out}.lightbox-frame img{display:block;max-width:100%;height:auto;margin:auto}.lightbox-foot{display:flex;flex-wrap:wrap;gap:12px 24px;align-items:center;justify-content:center;font-size:14px}.lightbox-foot .button{min-height:40px;background:var(--surface)}.updated{color:var(--sub)}.prose sup{line-height:0}.prose :target{scroll-margin-top:24px}@media(max-width:640px){.prose{font-size:17px}.prose h2{font-size:24px}.lightbox{padding:16px}}