.progress{display:none}@supports (animation-timeline:scroll()){.progress{z-index:60;left:0;right:0;top:env(safe-area-inset-top,0px);background:var(--ink);opacity:.28;transform-origin:0;height:2px;animation:linear both grow scroll(root);display:block;position:fixed;transform:scaleX(0)}@keyframes grow{to{transform:scaleX(1)}}}.article{--pop:80px;--feat:clamp(1000px, max(1000px + (100vw - 1280px) / 4, 1040px + (100vw - 1440px) / 3), 1200px);--feat-side:calc((var(--feat) - var(--col)) / 2 - var(--pop));grid-template-columns:[full-start] minmax(var(--gutter), 1fr) [feature-start] minmax(0, var(--feat-side)) [popout-start] minmax(0, var(--pop)) [content-start] minmax(0, var(--col)) [content-end] minmax(0, var(--pop)) [popout-end] minmax(0, var(--feat-side)) [feature-end] minmax(var(--gutter), 1fr) [full-end];padding-block:clamp(1.5rem,5vh,3.5rem) 0;display:grid}@media (width<=67.49rem){.article{--pop:0px;--feat-side:0px}}.article>*,.article>.prose>*{grid-column:content;min-width:0}.article>.prose{display:contents}.article>.prose>:is(.code-block,.table-wrap){grid-column:popout}.article>.prose>.figure{grid-column:feature}.post-head{border-bottom:1px solid var(--rule);gap:1.1rem;margin-bottom:2.5rem;padding-bottom:2.25rem;display:grid}.post-title{flex-direction:column;gap:.3rem;width:fit-content;max-width:100%;margin:0;display:flex}.post-title .main{letter-spacing:-.034em;font-size:clamp(2.1rem,4.6vw,3.1rem);font-weight:640;line-height:1.04}.post-title .sub{letter-spacing:-.018em;color:var(--ink-2);font-size:clamp(1.4rem,2.6vw,1.85rem);font-weight:360;line-height:1.2}.post-title .sub .serif{color:var(--ink);font-size:1.07em}.dek{color:var(--ink-2);max-width:36rem;margin:0;font-size:1.1875rem;line-height:1.5}.meta-line{margin-top:.2rem}.post-head .tags{margin-top:-.1rem}.meta-line .by{color:var(--ink);font-weight:550}.toc{font-size:var(--meta);margin-bottom:2.25rem}.toc summary{cursor:pointer;color:var(--ink);font-variant-numeric:tabular-nums;padding-block:.3rem;font-weight:600;list-style:none}.toc summary .n{color:var(--muted);font-weight:400}.toc summary::-webkit-details-marker{display:none}.toc summary:after{content:" +"}.toc[open] summary:after{content:" −"}.toc ol{gap:.38rem;margin:.6rem 0 0;padding:0;list-style:none;display:grid}.toc li{color:var(--ink-2);grid-template-columns:1.75rem 1fr;line-height:1.38;display:grid}.toc li .i{color:var(--muted);font-variant-numeric:tabular-nums}.toc.plain li{grid-template-columns:1fr}.toc a{color:inherit}.toc a:hover,.toc li.here{color:var(--ink)}.toc li.here .i{color:var(--accent-ink)}.toc{border-block:1px solid var(--rule);padding-block:.55rem}.toc[open]{padding-bottom:1rem}@media (width>=86.25rem){.article .toc{z-index:20;top:calc(8rem + env(safe-area-inset-top,0px));left:calc(50% + var(--col) / 2 + var(--pop) + 32px);scrollbar-width:none;width:clamp(220px,50vw - 470px,240px);max-height:calc(100vh - 10rem);transition:opacity .2s var(--ease);border:0;margin:0;padding:0;position:fixed;overflow-y:auto}.article .toc.is-covered{opacity:0;pointer-events:none}.article .toc summary{pointer-events:none}.article .toc summary:after{content:""}}.prose>*{margin-block:0}.prose>*+*{margin-top:1.1em}.prose>h2:first-child{margin-top:0}.prose p{hyphens:manual}.prose strong{color:var(--ink);font-weight:620}.prose em{font-style:italic}.prose a{color:var(--ink);text-decoration-color:var(--rule-strong);text-underline-offset:.16em;transition:text-decoration-color var(--t-fast);text-decoration-thickness:1px}.prose a:hover{text-decoration-color:currentColor}.prose :is(ul,ol){padding-left:1.4em}.prose li+li{margin-top:.35em}.prose h2{letter-spacing:-.024em;align-items:baseline;gap:.75rem;margin-top:2.5em;scroll-margin-top:2rem;font-size:1.75rem;font-weight:620;line-height:1.14;display:flex}.prose h2 .num{color:var(--accent-ink);letter-spacing:0;font-variant-numeric:tabular-nums;flex:none;font-size:1.0625rem;font-weight:500}.prose h3{letter-spacing:-.014em;margin-top:2em;scroll-margin-top:2rem;font-size:1.25rem;font-weight:620;line-height:1.25}.prose h3+*{margin-top:.7em}.prose hr{background:var(--rule);border:0;justify-self:stretch;height:1px;margin-block:2.5rem 0;margin-inline:0}.prose blockquote{border-left:1px solid var(--rule-strong);color:var(--ink-2);margin-inline:0;padding:.1rem 0 .1rem 1.25rem}.prose blockquote p{margin:0}.prose blockquote p+p{margin-top:.8em}.prose blockquote:has(strong){border-left:2px solid var(--accent);padding-block:.2rem}.prose blockquote:has(strong) p{letter-spacing:-.018em;font-size:1.5rem;line-height:1.26}.prose blockquote:has(strong) strong{font-weight:560}math{font-family:var(--math);font-size:1.04em}.math-inline{white-space:nowrap}.math-block{scrollbar-width:thin;max-width:100%;padding-block:.6rem;overflow:auto hidden;margin-block:1.5rem 0!important}.math-block math{font-size:1.12em}.table-wrap{scrollbar-width:thin;overflow-x:auto;margin-block:1.75rem 0!important}.table-wrap table{border-collapse:collapse;width:100%;min-width:36rem;font-size:1rem;line-height:1.45}.table-wrap th{text-align:left;font-weight:550;font-size:var(--meta);color:var(--ink-2);border-bottom:1px solid var(--rule-strong);vertical-align:bottom;padding:0 .9rem .55rem 0;line-height:1.35}.table-wrap td{border-bottom:1px solid var(--rule);vertical-align:top;padding:.75rem .9rem .75rem 0}.table-wrap td:first-child{color:var(--ink);white-space:nowrap;font-weight:600}.table-wrap td math{font-size:1.02em}.figure{margin-inline:0;margin-block:2.25rem 0!important}.figure .fig-caption{max-width:var(--col);box-sizing:border-box;margin-inline:auto}.figure img{background:var(--fig-panel);width:100%;max-width:100%;height:auto;filter:var(--fig-filter);border:1px solid var(--rule);box-sizing:border-box;border-radius:6px;padding:clamp(.5rem,2vw,1rem);display:block}.fig-caption{color:var(--muted);margin-top:.75rem;font-size:1rem;line-height:1.5}.code-block{margin:2.75rem 0 0}.prose>.code-block+.code-block{margin-top:2.25rem}.code-frame{border:1px solid var(--rule);background:var(--code-bg);border-radius:8px;overflow:hidden}.code-head{box-sizing:border-box;border-bottom:1px solid var(--rule);min-height:2.6rem;font-size:var(--meta);color:var(--ink-2);justify-content:space-between;align-items:center;gap:1rem;padding:.3rem .45rem .3rem 1rem;line-height:1.3;display:flex}.code-lang{color:var(--muted)}.code-actions{gap:.15rem;display:flex}.code-btn{appearance:none;cursor:pointer;font:inherit;color:var(--ink-2);min-height:2rem;transition:color var(--t-fast), background-color var(--t-fast), transform var(--t-fast) var(--ease);background:0 0;border:0;border-radius:6px;align-items:center;gap:.4rem;padding:.25rem .6rem;display:inline-flex}.code-btn svg{flex:none;width:15px;height:15px}.code-btn:hover{color:var(--ink);background:color-mix(in oklch, var(--ink) 5%, transparent)}.code-btn:active{transform:scale(.95)}.code-btn[aria-pressed=true]{color:var(--ink);background:color-mix(in oklch, var(--ink) 7%, transparent)}.code-btn .i-check{display:none}.code-btn.done{color:var(--ink)}.code-btn.done .i-copy{display:none}.code-btn.done .i-check{display:block}.code-btn.done .i-check path{stroke-dasharray:14;stroke-dashoffset:14px;animation:tick .35s var(--ease) forwards}@keyframes tick{to{stroke-dashoffset:0}}.code-body{position:relative}.code-body:after{content:"";pointer-events:none;background:linear-gradient(to right, transparent, var(--code-bg));opacity:0;width:3.5rem;transition:opacity var(--t) var(--ease);position:absolute;top:0;bottom:0;right:0}.code-body.more:after{opacity:1}.code-block .shiki{max-width:100%;font-family:var(--mono);font-size:var(--code-size);scrollbar-width:thin;scrollbar-color:var(--rule-strong) transparent;font-variant-ligatures:none;font-feature-settings:"liga" 0, "calt" 0;tab-size:4;--pad:1rem;--gut:0px;--hang:4ch;border:0;border-radius:0;margin:0;padding:.85rem 0 .95rem;line-height:1.7;overflow-x:auto;background:0 0!important}.code-block .shiki code{box-sizing:border-box;min-width:100%;font-family:inherit;display:inline-grid}.code-block .shiki .line{min-height:1.7em;padding-inline:calc(var(--pad) + var(--gut)) var(--pad);display:block;position:relative}.numbered .shiki{--gut:3.5ch}.numbered .shiki code{counter-reset:ln}.numbered .shiki .line{counter-increment:ln}.numbered .shiki .line:before{content:counter(ln);left:calc(var(--pad) - .5ch);text-align:right;text-indent:0;width:2.5ch;color:var(--muted);opacity:.75;font-variant-numeric:tabular-nums;-webkit-user-select:none;user-select:none;position:absolute}.code-block .shiki .line.highlighted{background:color-mix(in oklch, var(--accent) 7%, transparent);box-shadow:inset 2px 0 0 var(--accent)}.numbered .shiki .line.highlighted:before{color:var(--accent-ink);opacity:1}.code-block .shiki .line.diff.add{background:oklch(62% .13 150/.1);box-shadow:inset 2px 0 oklch(62% .13 150)}.code-block .shiki .line.diff.remove{background:color-mix(in oklch, var(--accent) 6%, transparent);box-shadow:inset 2px 0 0 var(--rule-strong);opacity:.75}.is-wrapped .shiki{white-space:pre-wrap;overflow-wrap:anywhere}.is-wrapped .shiki code{min-width:0;display:grid}.is-wrapped .shiki .line{--h:calc((var(--ind,0) + 4) * 1ch);padding-left:calc(var(--pad) + var(--gut) + var(--h));text-indent:calc(-1 * var(--h))}.code-block .shiki::-webkit-scrollbar{height:6px}.code-block .shiki::-webkit-scrollbar-track{background:0 0}.code-block .shiki::-webkit-scrollbar-thumb{background:var(--rule-strong);border-radius:3px}:not(pre)>code{font-family:var(--mono);font-size:max(.9em, var(--meta));background:var(--code-bg);border-radius:4px;padding:.05em .3em}.shiki,.shiki span{color:var(--shiki-light)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .shiki,:root:not([data-theme=light]) .shiki span{color:var(--shiki-dark)}}:root[data-theme=dark] .shiki,:root[data-theme=dark] .shiki span{color:var(--shiki-dark)}.post-foot{border-top:1px solid var(--rule);gap:1.25rem;margin-top:3.5rem;padding-top:1.5rem;display:grid}.post-foot .sig{color:var(--ink-2);margin:0;font-size:1rem}.next{border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);justify-items:start;gap:.25rem;padding-block:1rem;display:grid}.next small{font-size:var(--meta);color:var(--ink-2);font-variant-numeric:tabular-nums}.next a{color:var(--ink);letter-spacing:-.018em;text-underline-offset:.16em;transition:text-decoration-color var(--t) var(--ease);font-size:1.3rem;font-weight:600;line-height:1.2;text-decoration:underline 1px #0000}.next a:hover,.next a:focus-visible{text-decoration-color:var(--rule-strong)}.next .arr{color:var(--muted);transition:transform var(--t) var(--ease);margin-left:.35rem;font-style:normal;display:inline-block}.next a:hover .arr{transform:translate(3px)}.dialogue>p:first-child{font-family:var(--serif);color:var(--ink-2);letter-spacing:-.003em;font-size:1.5rem;line-height:1.36}.dialogue>p:first-child em{font-style:italic}.dialogue>p:nth-child(2){color:var(--muted);font-size:1rem}.turn{isolation:isolate;padding-block:.9rem;position:relative;margin-top:.6rem!important}.turn>*{margin:0}.turn>*+*{margin-top:.9em}.turn>.who+*{margin-top:0}.turn[data-speaker=ai]:before{content:"";z-index:-1;background:var(--ai-band);border-radius:4px;position:absolute;inset:0 -1.25rem}.who{font-size:var(--meta);color:var(--ink);align-items:center;gap:.5rem;font-weight:600;line-height:1.2;display:flex;margin-bottom:.4rem!important}.who:before{content:"";background:var(--ink);border-radius:50%;flex:none;width:7px;height:7px}.turn[data-speaker=ai] .who{color:var(--accent-ink)}.turn[data-speaker=ai] .who:before{background:var(--accent)}.turn.cont{padding-top:.2rem;margin-top:0!important}.turn.cont .who{visibility:hidden;height:0;margin:0!important}.turn+.turn[data-speaker=human]{margin-top:1.1rem!important}.turn+h2,.turn+hr{margin-top:2.5rem}.prose>h2+*{margin-top:.95em}.prose>hr+*{margin-top:2.5rem}.prose>.math-block+*{margin-top:1.5rem}.prose>.table-wrap+*{margin-top:1.75rem}.prose>.figure+*{margin-top:2.25rem}.prose>:is(hr,.math-block,.table-wrap,.figure)+h2{margin-top:2.5em}@media (width>=60rem){.who{white-space:nowrap;flex-direction:row-reverse;position:absolute;top:1.35rem;right:calc(100% + 2rem);margin:0!important}.turn.cont .who{display:none}}@media (width<=59.99rem){.turn[data-speaker=ai]:before{left:calc(-1 * var(--gutter));right:calc(-1 * var(--gutter));border-radius:0}}@media (width<=44rem){.dek{font-size:1.0625rem}.prose h2{font-size:1.5rem}.prose blockquote:has(strong) p{font-size:1.3rem}.dialogue>p:first-child{font-size:1.35rem}.article>.prose>.code-block{grid-column:full}.code-frame{border-inline:0;border-radius:0}.code-head{padding-left:var(--gutter)}.code-block .shiki{--pad:var(--gutter)}}
