.reading-progress{position:fixed;inset:0 0 auto;z-index:40;height:2px;background:var(--ink,var(--fg));transform-origin:0 50%;transform:scaleX(0);pointer-events:none}@supports (animation-timeline:scroll()){.reading-progress{animation:reading-progress linear both;animation-timeline:scroll(root block)}}@keyframes reading-progress{to{transform:scaleX(1)}}.breadcrumbs{display:flex;flex-wrap:wrap;margin:0;padding:0;list-style:none;font-size:14px;color:var(--ink-3)}.breadcrumbs,.breadcrumbs li{align-items:center;gap:.35rem}.breadcrumbs li{display:inline-flex;min-width:0}.breadcrumbs li+li:before{content:"/";color:#d4d4d8}.breadcrumbs li[aria-current]{overflow:hidden;max-width:22ch;white-space:nowrap;text-overflow:ellipsis;color:var(--ink-3)}.breadcrumbs a{color:var(--ink-2);text-decoration:none;border-radius:6px;transition:color .15s ease}@media (hover:hover) and (pointer:fine){.breadcrumbs a:hover{color:var(--ink)}}.breadcrumbs a:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.article-main{position:relative}.toc{margin-top:1.5rem;padding:.7rem 1rem;border:1px solid var(--rule);border-radius:10px;background:var(--paper);font-size:14px;line-height:1.45}.toc-title{margin:0;display:flex;justify-content:space-between;align-items:center;min-height:32px;list-style:none;cursor:pointer;font-size:12px;font-weight:500;color:var(--ink-3)}.toc-title::-webkit-details-marker{display:none}.toc details[open]>summary{margin-bottom:.65rem}.toc details[open]>summary span{transform:rotate(180deg)}.toc-rail{position:sticky;top:12px;z-index:20}.toc ol{max-height:45vh;overflow-y:auto}.toc a{min-height:36px}html:not(.has-smooth-cursor) .article-page a[href],html:not(.has-smooth-cursor) .article-page a[href] *{cursor:pointer}.article-body :is(h2,h3,h4){scroll-margin-top:100px}.toc ol{display:grid;gap:.15rem;margin:0;padding:0;list-style:none}.toc li[data-depth="3"]{padding-left:.85rem}.toc a{position:relative;display:block;padding:.2rem 0 .2rem .75rem;color:var(--ink-2);text-decoration:none;text-wrap:pretty;transition:color .15s ease}.toc a:before{content:"";position:absolute;left:0;top:.35rem;bottom:.35rem;width:2px;border-radius:2px;background:var(--ink);transform:scaleY(0);opacity:0;transition-property:transform,opacity;transition-duration:.22s;transition-timing-function:var(--ease)}.toc a[data-active]{color:var(--ink)}.toc a[data-active]:before{transform:scaleY(1);opacity:1}@media (hover:hover) and (pointer:fine){.toc a:hover{color:var(--ink)}}@media (min-width:1440px){.toc-rail{position:absolute;top:0;bottom:0;left:calc(50% + var(--breakout) / 2 + 2rem);width:200px}.toc{position:sticky;top:2rem;margin-top:2rem;background:none;border:0;max-height:calc(100vh - 8rem);overflow:visible;margin-left:-6px;padding:0 0 0 6px}.toc ol{max-height:calc(100dvh - 10rem)}}.article-body h2,.article-body h3,.article-body h4{position:relative}.heading-anchor{display:inline-block;min-width:24px;padding:0 .3em;text-align:center;border-radius:6px;margin-left:.1rem;color:#d4d4d8;font-weight:400;text-decoration:none!important;opacity:0;transition-property:opacity,color;transition-duration:.15s}.article-body :is(h2,h3,h4):hover .heading-anchor,.heading-anchor:focus-visible{opacity:1}@media (hover:hover) and (pointer:fine){.heading-anchor:hover{color:var(--ink-2)}}@media (hover:none){.heading-anchor{opacity:.6}}.has-code-copy{position:relative}.code-copy{position:absolute;top:.5rem;right:.5rem;display:grid;place-items:center;width:30px;height:30px;border:0;border-radius:8px;background:rgb(255 255 255/.9);box-shadow:0 0 0 1px var(--rule);color:var(--ink-2);cursor:pointer;opacity:0;transition-property:opacity,scale,color;transition-duration:.15s,.16s,.15s;transition-timing-function:ease,var(--ease),ease}.code-copy:focus-visible,.code-copy[data-copied],.has-code-copy:hover .code-copy{opacity:1}@media (hover:none){.code-copy{opacity:1}}.code-copy:active{scale:.96}.code-copy svg{grid-area:1/1;width:15px;height:15px;transition-property:scale,opacity,filter;transition-duration:.22s;transition-timing-function:cubic-bezier(.2,0,0,1)}.code-copy .check-icon,.code-copy[data-copied] .copy-icon{scale:.25;opacity:0;filter:blur(4px)}.code-copy[data-copied] .check-icon{scale:1;opacity:1;filter:blur(0)}.code-copy[data-copied]{color:#16a34a}.article-body img[data-zoom],.article-cover img[data-zoom]{cursor:zoom-in}.article-body .table-wrap[tabindex]:focus-visible,.article-body img[data-zoom]:focus-visible,.article-body pre[tabindex]:focus-visible,.article-cover img[data-zoom]:focus-visible{outline:2px solid var(--focus);outline-offset:3px}.zoom-overlay:focus{outline:none}.zoom-overlay{position:fixed;inset:0;z-index:60;cursor:zoom-out}.zoom-image{position:fixed;margin:0;-o-object-fit:contain;object-fit:contain;transform-origin:0 0;will-change:transform;border-radius:6px;box-shadow:0 30px 80px -20px rgb(0 0 0/.25)}.author-card{display:grid;gap:1rem;margin-top:2.5rem;padding:1.25rem;border-radius:16px;background:var(--paper-sunk)}.author-card-row{display:grid;grid-template-columns:56px 1fr;gap:1rem;align-items:start}.author-card-photo{width:56px;height:56px;border-radius:999px;-o-object-fit:cover;object-fit:cover;outline:1px solid var(--img-outline);outline-offset:-1px}.author-card-initial{display:grid;place-items:center;background:var(--wash);font-weight:600;color:var(--ink-2)}.author-card-text>p{margin:0}.author-card-name{font-weight:600;color:var(--ink)}.author-card-name a{color:inherit;text-decoration:none}.author-card-bio{margin-top:.15rem!important;font-size:15px;line-height:1.5;color:var(--ink-2)}.author-card-bio a{color:inherit}.author-card-links{display:flex;flex-wrap:wrap;gap:.25rem .9rem;margin-top:.5rem!important;font-size:14px}.author-card-links a{color:var(--ink-2);text-decoration-line:underline;text-decoration-color:#d4d4d8;text-underline-offset:3px;transition:text-decoration-color .15s ease,color .15s ease}@media (hover:hover) and (pointer:fine){.author-card-links a:hover{color:var(--ink);text-decoration-color:currentColor}}.article-body .wikilink{text-decoration-style:solid}.article-body .wikilink-missing{color:var(--ink-2);-webkit-text-decoration:underline dotted #d4d4d8;text-decoration:underline dotted #d4d4d8;text-underline-offset:3px;cursor:help}.article-body .callout-title{font-weight:600;color:var(--ink)}.article-body details.callout-fold{display:block;padding:.85rem 1.15rem .85rem 1rem}.article-body details.callout-fold>summary{display:flex;align-items:center;gap:.75rem;font-weight:600}.article-body details.callout-fold>summary:before{order:3;margin-left:auto}.article-body details.callout-fold>.callout-body{margin:.6rem 0 0 2.35rem}.writing-index-meta{display:flex;gap:.5rem;margin:.25rem 0 0;font-size:14px;color:var(--ink-3)}.writing-index-meta a{color:var(--ink-2)}.writing-years{margin-top:3.5rem;display:grid;gap:2.5rem}.writing-year-title{margin:0 0 .25rem;font-family:Paper Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;font-weight:400;letter-spacing:0;color:var(--ink-3)}.writing-year ul{margin:0;padding:0;list-style:none}.writing-row-dek{display:block;margin-top:.15rem;font-size:14px;color:var(--ink-3)}.writing-row-note{cursor:default}.writing-row-note .article-more-name{color:var(--ink-2)}.writing-index .writing-years{animation:page-in .64s var(--ease-soft) .28s both}@media (prefers-reduced-motion:reduce){.code-copy svg,.toc a:before{transition-duration:0s}.writing-index .writing-years{animation:none}}.toc ol{scrollbar-width:thin;scrollbar-color:rgb(var(--tint)/.18) transparent;overscroll-behavior:contain;scroll-behavior:auto}.toc ol::-webkit-scrollbar{width:4px;height:4px}.toc ol::-webkit-scrollbar-thumb{background:rgb(var(--tint)/.18);border-radius:4px}.toc a{transition:color .12s ease,background-color .12s ease}.article-eyebrow time{cursor:text}.article{font-variant-ligatures:var(--article-ligatures,normal)}.heading-icon{display:inline-flex;align-items:center;vertical-align:-.12em;margin-inline-end:.3em;line-height:1}.article-body .heading-icon-image,.heading-icon-image{display:inline-block!important;width:1em!important;height:1em!important;-o-object-fit:contain;object-fit:contain;margin:0!important;border:0!important;border-radius:0!important;box-shadow:none!important}.toc-icon{display:inline-flex;width:1.1em;margin-inline-end:.4em;vertical-align:-.12em}.toc-icon img{width:1em;height:1em;-o-object-fit:contain;object-fit:contain}.has-smooth-cursor .article-eyebrow time{cursor:none!important}.article-body .heading-icon-image{background:transparent;outline:0}.article-eyebrow .updated-at{margin-inline-start:12px}.article-body :is(h2,h3,h4)[tabindex="-1"]:focus{outline:none}@media (scripting:enabled) and (max-width:1439px){.toc details:not([data-ready])>ol{display:none}}.page-outline{--po-ink:#18181b;--po-ink-2:#71717a;--po-line:#d4d4d8;--po-line-active:#3f3f46;--po-hover:rgb(24 24 27/0.05);--po-current:rgb(24 24 27/0.06);--po-dot:#2383e2;display:none}@media (min-width:1024px) and (hover:hover) and (pointer:fine){.page-outline{position:fixed;top:50%;right:0;z-index:40;display:block;transform:translateY(-50%)}}@media (scripting:enabled) and (min-width:1024px) and (hover:hover) and (pointer:fine){.toc-rail{display:none}}.page-outline-strip{position:relative;box-sizing:content-box;width:26px;padding:14px 16px 14px 44px;margin-left:-26px;border-radius:12px;cursor:pointer!important;transition:opacity .15s ease,background-color .15s ease;-webkit-user-select:none;-moz-user-select:none;user-select:none}.page-outline-line-btn{position:absolute;right:0;left:0;display:flex;align-items:center;justify-content:flex-end;padding:0 18px 0 0;background:transparent;border:0;cursor:pointer!important;outline:none;-webkit-tap-highlight-color:transparent;z-index:2;transition:opacity .14s ease}.page-outline-line-stroke{display:block;height:2px;border-radius:999px;background:var(--po-line);pointer-events:none;transition:width .24s cubic-bezier(.2,0,0,1),transform .24s cubic-bezier(.2,0,0,1),opacity .18s ease,background-color .18s ease;will-change:width,transform}.page-outline-line-btn.is-hovered .page-outline-line-stroke,.page-outline-line-btn:focus-visible .page-outline-line-stroke,.page-outline-line-btn:hover .page-outline-line-stroke{background:var(--po-line-active);opacity:1!important}.page-outline-line-btn:focus-visible{outline:2px solid var(--blue);outline-offset:-2px;border-radius:4px}.page-outline-line-active{position:absolute;top:0;right:18px;height:2px;border-radius:999px;background:var(--po-line-active);pointer-events:none;z-index:3;transition:transform .3s cubic-bezier(.25,1,.5,1),width .24s cubic-bezier(.2,0,0,1)}.page-outline-micro-pill{position:absolute;right:calc(100% + 10px);top:50%;transform:translateY(-50%);display:flex;align-items:center;gap:.4rem;padding:4px 10px;border-radius:9999px;background:var(--paper-float);border:1px solid var(--line);box-shadow:0 4px 14px -2px rgba(0,0,0,.14),0 0 0 1px rgba(var(--tint)/.05);backdrop-filter:blur(16px) saturate(180%);-webkit-backdrop-filter:blur(16px) saturate(180%);color:var(--fg);font-size:12px;font-weight:500;white-space:nowrap;pointer-events:none;animation:micro-pill-in .14s cubic-bezier(.2,0,0,1) backwards;z-index:60;max-width:260px;overflow:hidden}@keyframes micro-pill-in{0%{opacity:0;transform:translateY(-50%) translateX(6px) scale(.96)}to{opacity:1;transform:translateY(-50%) translateX(0) scale(1)}}.page-outline-micro-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}body:has(.article-banner,.editor-banner) .page-outline-strip{background:rgb(255 255 255/.82);backdrop-filter:blur(12px) saturate(160%);box-shadow:0 0 0 1px rgb(0 0 0/.05)}.page-outline[data-open] .page-outline-strip{opacity:1}.page-outline[data-dismissed]:focus-within .page-outline-strip{outline:2px solid #2563eb;outline-offset:-4px}.page-outline-card{position:absolute;top:50%;right:calc(100% + 10px);width:-moz-max-content;width:max-content;min-width:280px;max-width:min(440px,calc(100vw - 80px));padding:8px 10px;border-radius:14px;background:var(--paper-float);border:1px solid var(--line);box-shadow:0 4px 6px -1px rgb(0 0 0/.08),0 12px 28px -4px rgb(0 0 0/.16),0 0 0 1px rgb(var(--tint)/.06);font-size:13.5px;line-height:1.45;opacity:0;pointer-events:none;transform:translateY(-50%) scale(.96);transform-origin:right center;transition:opacity .16s ease,transform .2s cubic-bezier(.16,1,.3,1)}.page-outline-card:after{content:"";position:absolute;top:-12px;bottom:-12px;right:-16px;width:16px}.page-outline[data-open] .page-outline-card{opacity:1;pointer-events:auto;transform:translateY(-50%) scale(1)}.page-outline-header{display:flex;align-items:center;justify-content:space-between;padding:4px 8px 8px;margin-bottom:4px;border-bottom:1px solid var(--line)}.page-outline-title{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--po-ink-2)}.page-outline-count{font-size:11px;color:var(--po-ink-2);font-variant-numeric:tabular-nums;opacity:.8}.page-outline-scroll{position:relative;max-height:min(72vh,520px);overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:rgb(var(--tint)/.18) transparent;padding:2px}.page-outline ol{position:relative;display:grid;gap:2px;margin:0;padding:0;list-style:none}.page-outline-marker{position:absolute;top:0;left:0;right:0;display:block;border-radius:8px;background:var(--po-current);pointer-events:none;transition:transform .3s cubic-bezier(.25,1,.5,1),height .3s cubic-bezier(.25,1,.5,1)}@media (prefers-reduced-motion:reduce){.page-outline-line-active,.page-outline-marker{transition:none!important}}.page-outline-dot{position:absolute;top:12px;left:7px;width:6px;height:6px;border-radius:999px;background:var(--po-dot)}.page-outline-item{position:relative;display:flex;align-items:center}.page-outline-link{position:relative;display:flex;flex:1;align-items:flex-start;min-width:0;min-height:30px;padding:5px 8px 5px calc(20px + var(--po-indent, 0px));border:0;border-radius:8px;background:transparent;font:inherit;text-align:left;text-decoration:none;color:var(--po-ink-2);cursor:pointer;transition:color .13s ease,background-color .13s ease}.page-outline-item[data-depth="1"]{--po-indent:10px}.page-outline-item[data-depth="2"]{--po-indent:20px}.page-outline-item[data-depth="3"]{--po-indent:30px}.page-outline-link[data-active]{color:var(--po-dot,#2383e2);font-weight:500}[data-theme=dark] .page-outline-link[data-active]{color:#529cca}.page-outline-link:focus-visible{outline:2px solid #2563eb;outline-offset:-2px}@media (hover:hover) and (pointer:fine){.page-outline-link:hover{color:var(--po-ink);background:var(--po-hover)}}.page-outline-text{flex:1;min-width:0;white-space:normal!important;word-break:normal!important;overflow-wrap:break-word!important;text-wrap:pretty;line-height:1.45;font-size:.8125rem}.page-outline-icon{display:inline-flex;flex:none;justify-content:center;align-items:center;font-size:1.15em;width:1.3em;margin-inline-end:.55em;margin-top:1px;line-height:1}.page-outline-icon img{width:1em;height:1em;-o-object-fit:contain;object-fit:contain}.page-outline .outline-icon-edit{display:grid;flex:none;place-items:center;width:26px;height:26px;margin-left:2px;padding:0;border:0;border-radius:6px;background:transparent;color:var(--po-ink-2);cursor:pointer;opacity:0;transition:opacity .12s ease,background-color .12s ease}.page-outline .outline-icon-edit[data-popup-open],.page-outline-item:focus-within .outline-icon-edit,.page-outline-item:hover .outline-icon-edit{opacity:1}.page-outline .outline-icon-edit:hover,.page-outline .outline-icon-edit[data-popup-open]{background:var(--po-hover)}.page-outline .outline-icon-edit:focus-visible{outline:2px solid #2563eb;outline-offset:-2px}.toc-mobile-pill{position:fixed;bottom:calc(1rem + env(safe-area-inset-bottom, 0px));left:50%;transform:translateX(-50%);z-index:500;display:none;align-items:center;gap:.55rem;padding:.55rem .95rem;border-radius:9999px;background:var(--paper-float);border:1px solid var(--line);box-shadow:0 4px 12px -2px rgba(0,0,0,.12),0 12px 28px -4px rgba(0,0,0,.16),0 0 0 1px rgba(var(--tint)/.05);backdrop-filter:blur(16px) saturate(180%);-webkit-backdrop-filter:blur(16px) saturate(180%);color:var(--fg);font-size:.8125rem;font-weight:500;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:transform .16s cubic-bezier(.23,1,.32,1),box-shadow .16s ease}.toc-mobile-pill:active{transform:translateX(-50%) scale(.96)}.toc-mobile-pill:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.toc-ring{width:18px;height:18px;transform:rotate(-90deg);flex-shrink:0}.toc-ring-track{fill:none;stroke:var(--line-strong);stroke-width:2.2}.toc-ring-fill{fill:none;stroke:var(--po-dot,var(--blue));stroke-width:2.2;stroke-linecap:round;stroke-dasharray:1;transition:stroke-dashoffset .1s linear}.toc-pill-label{font-weight:500;color:var(--fg)}.toc-pill-count{font-size:.725rem;font-weight:600;padding:1px 6px;border-radius:999px;background:var(--wash-2);color:var(--fg-2);font-variant-numeric:tabular-nums}.toc-pill-chevron{width:14px;height:14px;color:var(--fg-3);transition:transform .24s cubic-bezier(.2,0,0,1)}.toc-pill-chevron.is-open{transform:rotate(180deg)}.toc-sheet-scrim{position:fixed;inset:0;z-index:998;background:rgba(0,0,0,.45);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);opacity:0;visibility:hidden;transition:opacity .28s cubic-bezier(.32,.72,0,1),visibility 0s linear .28s}.toc-sheet-scrim.is-open{opacity:1;visibility:visible;transition:opacity .32s cubic-bezier(.32,.72,0,1),visibility 0s linear}.toc-sheet-dialog{position:fixed;bottom:calc(.75rem + env(safe-area-inset-bottom, 0px));left:50%;transform:translate(-50%,calc(100% + 2rem));width:min(calc(100vw - 1.5rem),28rem);max-height:min(72vh,32rem);border-radius:22px;background:var(--paper-float);border:1px solid var(--line);box-shadow:0 20px 48px -8px rgba(0,0,0,.28),0 0 0 1px rgba(var(--tint)/.08);backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);z-index:999;display:flex;flex-direction:column;overflow:hidden;opacity:0;pointer-events:none;transition:transform .36s cubic-bezier(.32,.72,0,1),opacity .24s ease}.toc-sheet-dialog.is-open{transform:translate(-50%);opacity:1;pointer-events:auto}.toc-sheet-handle{width:36px;height:4px;border-radius:999px;background:var(--line-strong);margin:10px auto 4px;flex-shrink:0}.toc-sheet-header{display:flex;align-items:center;justify-content:space-between;padding:6px 14px 10px 16px;border-bottom:1px solid var(--line);flex-shrink:0}.toc-sheet-title-wrap{display:flex;align-items:center;gap:.5rem}.toc-sheet-title{font-size:.95rem;font-weight:600;color:var(--fg);margin:0}.toc-sheet-count{font-size:.75rem;font-weight:500;color:var(--fg-3);padding:1px 7px;border-radius:999px;background:var(--wash-2)}.toc-sheet-close{display:grid;place-items:center;width:32px;height:32px;border-radius:999px;border:0;background:var(--wash);color:var(--fg-2);cursor:pointer;transition:background-color .15s ease,color .15s ease}.toc-sheet-close:active{background:var(--wash-2)}.toc-sheet-close svg{width:14px;height:14px}.toc-sheet-scroll{overflow-y:auto;overscroll-behavior:contain;padding:8px 10px 16px;scrollbar-width:thin}.toc-sheet-list{display:grid;gap:2px;margin:0;padding:0;list-style:none}.toc-sheet-dialog.is-open .toc-sheet-item{animation:toc-item-rise .32s cubic-bezier(.32,.72,0,1) backwards;animation-delay:calc(60ms + min(var(--stagger-i, 0), 8) * 28ms)}@keyframes toc-item-rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.toc-sheet-link{position:relative;width:100%;display:flex;align-items:flex-start;gap:.5rem;min-height:40px;padding:8px 12px 8px calc(14px + var(--sheet-indent, 0px));border:0;border-radius:10px;background:transparent;color:var(--fg-2);font:inherit;font-size:.875rem;text-align:left;text-decoration:none;cursor:pointer;transition:background-color .14s ease,color .14s ease}.toc-sheet-item[data-depth="1"]{--sheet-indent:14px}.toc-sheet-item[data-depth="2"]{--sheet-indent:26px}.toc-sheet-item[data-depth="3"]{--sheet-indent:38px}.toc-sheet-link:active{background:var(--wash)}.toc-sheet-link.is-active{background:var(--wash);color:var(--po-dot,var(--blue));font-weight:500}.toc-sheet-dot{position:absolute;top:15px;left:5px;width:5px;height:5px;border-radius:999px;background:var(--po-dot,var(--blue))}.toc-sheet-text{flex:1;min-width:0;white-space:normal;overflow-wrap:break-word;word-break:normal;text-wrap:pretty;line-height:1.45}@media (hover:none),(max-width:1023px),(pointer:coarse){.page-outline{display:none!important}.toc-mobile-pill{display:flex}.toc-rail{display:none!important}}@media (min-width:1024px) and (hover:hover) and (pointer:fine){.toc-mobile-pill,.toc-sheet-dialog,.toc-sheet-scrim{display:none!important}}@media (scripting:none){.toc-mobile-pill{display:none!important}.toc-rail{display:block!important}}@keyframes outline-flash{0%{background-color:rgb(35 131 226/.16)}to{background-color:rgb(35 131 226/0)}}.outline-flash{border-radius:4px;animation:outline-flash 1.2s ease-out}@media (prefers-reduced-motion:reduce){.page-outline-card,.page-outline-line-btn,.page-outline-line-stroke,.page-outline-link,.page-outline-micro-pill,.page-outline-strip,.toc-mobile-pill,.toc-sheet-dialog,.toc-sheet-item,.toc-sheet-scrim{transition:none!important;animation:none!important}.page-outline-card{transform:translateY(-50%)}.toc-sheet-dialog{transform:translate(-50%)!important}}@media (prefers-reduced-transparency:reduce){body:has(.article-banner,.editor-banner) .page-outline-strip{background:#fff;backdrop-filter:none}}@media print{.page-outline{display:none!important}}[data-theme=dark] .breadcrumbs li+li:before,[data-theme=dark] .heading-anchor:not(:hover){color:rgb(255 255 255/.38)}[data-theme=dark] .article-body .wikilink-missing,[data-theme=dark] .author-card-links a{text-decoration-color:rgb(255 255 255/.45)}[data-theme=dark] .author-card{background:var(--paper-raised);box-shadow:inset 0 0 0 1px var(--line)}[data-theme=dark] .page-outline .outline-icon-edit:focus-visible,[data-theme=dark] .page-outline-link:focus-visible,[data-theme=dark] .page-outline[data-dismissed]:focus-within .page-outline-strip{outline-color:var(--blue)}@media (hover:hover) and (pointer:fine){[data-theme=dark] .author-card-links a:hover{text-decoration-color:currentColor}}[data-theme=dark] .code-copy{background:rgb(37 37 37/.9)}[data-theme=dark] .code-copy[data-copied]{color:var(--green)}[data-theme=dark] .zoom-image{box-shadow:0 30px 80px -20px rgb(0 0 0/.7)}[data-theme=dark] .page-outline{--po-ink:var(--fg);--po-ink-2:rgb(255 255 255/0.65);--po-line:rgb(255 255 255/0.32);--po-line-active:#ffffff;--po-hover:rgb(255 255 255/0.06);--po-current:rgb(96 165 250/0.12);--po-dot:#60a5fa}[data-theme=dark] .page-outline-line-btn.is-hovered .page-outline-line-stroke,[data-theme=dark] .page-outline-line-btn:focus-visible .page-outline-line-stroke,[data-theme=dark] .page-outline-line-btn:hover .page-outline-line-stroke{background:#ffffff;box-shadow:0 0 8px rgb(255 255 255/.45)}[data-theme=dark] .page-outline-line-active{background:#ffffff;box-shadow:0 0 10px rgb(96 165 250/.6),0 0 2px rgb(255 255 255/.8)}[data-theme=dark] body:has(.article-banner,.editor-banner) .page-outline-strip{background:rgb(20 20 24/.82);backdrop-filter:blur(16px) saturate(180%);box-shadow:0 0 0 1px rgb(255 255 255/.1)}[data-theme=dark] .page-outline-card{background:rgb(20 20 24/.94);backdrop-filter:blur(24px) saturate(190%);border:1px solid rgb(255 255 255/.1);box-shadow:0 0 0 1px rgb(255 255 255/.05),inset 0 1px 0 rgb(255 255 255/.08),0 20px 48px -8px rgb(0 0 0/.75),0 8px 20px -4px rgb(0 0 0/.5)}[data-theme=dark] .page-outline-micro-pill{background:rgb(22 22 26/.9);backdrop-filter:blur(20px) saturate(190%);border:1px solid rgb(255 255 255/.12);box-shadow:0 0 0 1px rgb(255 255 255/.04),inset 0 1px 0 rgb(255 255 255/.1),0 8px 24px -4px rgb(0 0 0/.75),0 2px 6px rgb(0 0 0/.4);color:#f4f4f5}[data-theme=dark] .page-outline-header{border-bottom-color:rgb(255 255 255/.08)}[data-theme=dark] .page-outline-title{color:rgb(255 255 255/.5)}[data-theme=dark] .page-outline-count{background:rgb(255 255 255/.08);color:rgb(255 255 255/.65);padding:1px 6px;border-radius:999px}[data-theme=dark] .page-outline-scroll{scrollbar-color:rgb(255 255 255/.18) transparent}[data-theme=dark] .page-outline-marker{background:rgb(96 165 250/.12)}[data-theme=dark] .page-outline-dot{background:#60a5fa;box-shadow:0 0 8px rgb(96 165 250/.6)}[data-theme=dark] .page-outline-link{color:rgb(255 255 255/.65)}@media (hover:hover) and (pointer:fine){[data-theme=dark] .page-outline-link:hover{color:#ffffff;background:rgb(255 255 255/.06)}}[data-theme=dark] .page-outline-link[data-active]{color:#60a5fa;font-weight:500}[data-theme=dark] .page-outline .outline-icon-edit{color:rgb(255 255 255/.5)}[data-theme=dark] .page-outline .outline-icon-edit:hover,[data-theme=dark] .page-outline .outline-icon-edit[data-popup-open]{background:rgb(255 255 255/.08);color:#ffffff}[data-theme=dark] .toc-mobile-pill{background:rgb(24 24 28/.9);backdrop-filter:blur(20px) saturate(180%);border:1px solid rgb(255 255 255/.13);box-shadow:0 0 0 1px rgb(255 255 255/.05),inset 0 1px 0 rgb(255 255 255/.1),0 12px 32px -4px rgb(0 0 0/.7);color:#f4f4f5}[data-theme=dark] .toc-mobile-pill:active{background:rgb(30 30 36/.95)}[data-theme=dark] .toc-pill-count{background:rgb(255 255 255/.1);color:rgb(255 255 255/.75)}[data-theme=dark] .toc-ring-track{stroke:rgb(255 255 255/.16)}[data-theme=dark] .toc-ring-fill{stroke:#60a5fa;filter:drop-shadow(0 0 3px rgb(96 165 250/.5))}[data-theme=dark] .toc-pill-chevron{color:rgb(255 255 255/.45)}[data-theme=dark] .toc-sheet-scrim{background:rgb(0 0 0/.7);backdrop-filter:blur(8px)}[data-theme=dark] .toc-sheet-dialog{background:rgb(20 20 24/.96);backdrop-filter:blur(24px) saturate(190%);border:1px solid rgb(255 255 255/.12);box-shadow:0 0 0 1px rgb(255 255 255/.06),inset 0 1px 0 rgb(255 255 255/.1),0 24px 64px -8px rgb(0 0 0/.85)}[data-theme=dark] .toc-sheet-handle{background:rgb(255 255 255/.22)}[data-theme=dark] .toc-sheet-header{border-bottom-color:rgb(255 255 255/.08)}[data-theme=dark] .toc-sheet-title{color:#f4f4f5}[data-theme=dark] .toc-sheet-count{background:rgb(255 255 255/.08);color:rgb(255 255 255/.65)}[data-theme=dark] .toc-sheet-close{background:rgb(255 255 255/.08);color:rgb(255 255 255/.75)}[data-theme=dark] .toc-sheet-close:active{background:rgb(255 255 255/.16);color:#ffffff}[data-theme=dark] .toc-sheet-scroll{scrollbar-color:rgb(255 255 255/.18) transparent}[data-theme=dark] .toc-sheet-link{color:rgb(255 255 255/.68)}[data-theme=dark] .toc-sheet-link:active{background:rgb(255 255 255/.07);color:#ffffff}[data-theme=dark] .toc-sheet-link.is-active{background:rgb(96 165 250/.12);color:#60a5fa}[data-theme=dark] .toc-sheet-dot{background:#60a5fa;box-shadow:0 0 6px rgb(96 165 250/.6)}@media (prefers-reduced-transparency:reduce){[data-theme=dark] body:has(.article-banner,.editor-banner) .page-outline-strip{background:var(--paper)}[data-theme=dark] .page-outline-card,[data-theme=dark] .page-outline-micro-pill,[data-theme=dark] .toc-mobile-pill,[data-theme=dark] .toc-sheet-dialog{background:var(--paper-float);backdrop-filter:none}}@media (pointer:coarse){.article-author-link,.breadcrumbs a,.writing-index-meta a{display:inline-block;padding-block:6px;margin-block:-6px}}.tag{--tag-bg:#f1f1ef;--tag-ink:#3f3f46;display:inline-flex;align-items:center;gap:.3rem;height:24px;padding:0 .55rem;border:0;border-radius:6px;background:var(--tag-bg);color:var(--tag-ink);font:inherit;font-size:13px;font-weight:500;line-height:1;letter-spacing:-.005em;text-decoration:none;white-space:nowrap;cursor:default;transition-property:filter,scale,box-shadow;transition-duration:.15s,.16s,.15s;transition-timing-function:ease,var(--ease),ease}a.tag,button.tag{cursor:pointer}@media (hover:hover) and (pointer:fine){a.tag:hover,button.tag:hover{filter:brightness(.96)}}a.tag:active,button.tag:active{scale:.96}.tag[data-tint=gray]{--tag-bg:#f1f1ef;--tag-ink:#3f3f46}.tag[data-tint=brown]{--tag-bg:#f4eeee;--tag-ink:#6b3f2a}.tag[data-tint=orange]{--tag-bg:#fbecdd;--tag-ink:#8a4414}.tag[data-tint=yellow]{--tag-bg:#fbf3db;--tag-ink:#7a5a0b}.tag[data-tint=green]{--tag-bg:#edf3ec;--tag-ink:#2b593f}.tag[data-tint=blue]{--tag-bg:#e7f3f8;--tag-ink:#1f4f73}.tag[data-tint=purple]{--tag-bg:#f6f3f9;--tag-ink:#5b3a82}.tag[data-tint=pink]{--tag-bg:#faf1f5;--tag-ink:#8a2b5a}.tag[data-tint=red]{--tag-bg:#fdebec;--tag-ink:#9b2c2c}.tag[aria-pressed=true]{box-shadow:inset 0 0 0 1.5px currentColor}.tag-count{font-family:Paper Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;font-weight:400;letter-spacing:0;opacity:.6}.tag-sm{height:20px;padding:0 .4rem;font-size:11.5px}.article-header-tags,.tag-cloud{display:flex;flex-wrap:wrap;gap:.35rem}.article-header-tags{margin-top:-.35rem}.article-tags li{padding:0;background:none}:where(.article-audio){margin:0}.article-audio{position:relative;display:grid;gap:.5rem;width:100%;padding:.75rem .875rem .75rem .75rem;border-radius:18px;background:#f6f6f7;box-shadow:inset 0 0 0 1px rgb(var(--tint)/.05)}.article-audio .voice-caption,.article-body .article-audio figcaption.voice-caption{margin:0;padding:.125rem .25rem 0;font-size:14px;font-weight:500;line-height:20px;text-align:left;color:var(--ink-2,#52525b);text-wrap:pretty}.voice{display:grid;grid-template-columns:40px minmax(0,1fr) auto auto;align-items:center;gap:.75rem;min-width:0}.voice-play{display:grid;place-items:center;width:40px;height:40px;border:0;border-radius:999px;background:var(--ink,var(--fg));color:var(--on-fg);cursor:pointer;transition:scale .16s var(--ease)}.voice-play:active{scale:.94}.voice-play:focus-visible,.voice-speed:focus-visible{outline:2px solid #2563eb;outline-offset:2px}.voice-play svg{width:16px;height:16px;fill:currentColor}.voice-play path{transform-origin:center;transition-property:opacity,scale,filter;transition-duration:.2s;transition-timing-function:cubic-bezier(.2,0,0,1)}.voice-icon-pause,.voice[data-playing] .voice-icon-play{opacity:0;scale:.25;filter:blur(2px)}.voice[data-playing] .voice-icon-pause{opacity:1;scale:1;filter:none}.voice-wave{position:relative;height:36px;min-width:0;cursor:pointer;touch-action:none;border-radius:6px;outline-offset:4px}.voice-wave:focus-visible{outline:2px solid #2563eb}.voice-bars{position:absolute;inset:0;display:flex;align-items:center;gap:2px;pointer-events:none}.voice-bar{flex:1 1 0;min-width:1px;min-height:3px;border-radius:2px;background:#d4d4d8;transition:height .32s var(--ease)}.voice-bars-hover .voice-bar{background:#a1a1aa}.voice-bars-on .voice-bar{background:var(--ink,var(--fg))}.voice-time{font-family:Paper Mono,ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;letter-spacing:0;white-space:nowrap;color:var(--ink,var(--fg));font-variant-numeric:tabular-nums}.voice-time-total{color:var(--ink-3,#a1a1aa)}.voice-speed{min-width:2.75rem;height:28px;padding:0 .5rem;border:0;border-radius:999px;background:var(--paper-float);box-shadow:0 0 0 1px var(--line-strong),0 1px 2px rgb(0 0 0/.04);font:inherit;font-size:12px;font-weight:600;font-variant-numeric:tabular-nums;color:var(--ink,var(--fg));cursor:pointer;transition:scale .16s var(--ease)}.voice-speed:active{scale:.94}@media (max-width:479px){.voice{gap:.5rem}.voice-time-total{display:none}}@media (prefers-reduced-motion:reduce){.voice-bar,.voice-speed{transition:none}}.article-body .article-video video,.article-video video{display:block;width:100%;height:auto;border-radius:14px;background:#0a0a0a;outline:1px solid var(--img-outline);outline-offset:-1px}.avatar-gen{display:inline-block;overflow:hidden;border-radius:999px;flex:none;line-height:0}.avatar-gen svg{width:100%;height:100%}@media print{.article-more,.article-share,.code-copy,.reading-progress,.smooth-cursor,.toc-rail{display:none!important}}.article-menu{position:fixed;z-index:70;display:grid;min-width:15rem;max-height:min(80vh,36rem);overflow-y:auto;transition-property:opacity,transform;transition-duration:.14s;transition-timing-function:var(--ease)}@starting-style{.article-menu{opacity:0;transform:scale(.96)}}.article-menu .menu-item{width:100%;border:0;background:transparent;font:inherit;text-align:left;color:inherit}.article-menu .menu-item:focus-visible,.article-menu .menu-item:hover{background-color:rgb(var(--tint)/.045);outline:none}.writing-button{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:.625rem 1rem;border-radius:10px;background:var(--surface-bg);box-shadow:var(--surface-ring),0 2px 4px rgb(0 0 0/.04);color:#3f3f46;font-size:14px;font-weight:500;line-height:20px;text-decoration:none;white-space:nowrap;transition:transform .14s var(--ease),color .12s ease}.writing-button:focus-visible{outline:2px solid #52525b;outline-offset:4px}.writing-button:active:not(:focus-visible){transform:scale(.96)}.writing-empty{display:flex;flex-direction:column;align-items:flex-start;gap:1.5rem;margin-top:2.5rem;padding:2rem;border:1px solid var(--line);border-radius:16px;background:var(--paper-sunk)}.writing-empty-icon{color:#71717a}.writing-empty h2{margin:0;color:#27272a;font-size:18px;font-weight:500;line-height:1.4;letter-spacing:-.02em}.writing-empty p{max-width:40ch;margin:.625rem 0 0;color:var(--fg-2);font-size:15px;line-height:1.6;text-wrap:pretty}.writing-index{--ink-3:#71717a}.writing-index [data-cursor=text]{cursor:text}.writing-index .article-header>*,.writing-index .article-nav,.writing-index .writing-empty,.writing-index .writing-years{animation:none}@media (hover:hover) and (pointer:fine){.writing-button:hover{color:#18181b;transform:translateY(-1px)}}@media (prefers-reduced-motion:no-preference){.writing-index .article-header,.writing-index .writing-empty,.writing-index .writing-years{animation:writing-arrive .28s var(--ease) both}.writing-index .writing-empty,.writing-index .writing-years{animation-delay:80ms}}@keyframes writing-arrive{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.writing-button{transition:none}.writing-button:active:not(:focus-visible),.writing-button:hover{transform:none}}@media (max-width:767px){.writing-empty{padding:1.5rem;margin-top:2rem}}.article-banner{position:relative;width:100%;height:clamp(180px,30vh,280px);margin:0;overflow:hidden;background:var(--wash)}.article-banner img{display:block;width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.article-banner:after{content:"";position:absolute;inset:0;pointer-events:none;box-shadow:inset 0 -1px 0 rgb(var(--tint)/.06)}.article-page[data-cover=banner]{padding-top:0}.article-banner-row{display:flex;align-items:flex-end;gap:1rem;min-width:0;padding-top:1.5rem;margin-bottom:1.75rem}.article-banner-row:has(.article-banner-icon){padding-top:0;margin-top:-39px}.article-banner-row .article-nav{min-width:0;margin:0 0 .35rem}.article-banner-icon{position:relative;flex-shrink:0;display:block;width:78px;height:78px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.article-page .article-banner-row{animation:page-in .64s var(--ease-soft) both}.article-banner{animation:article-fade .7s ease both}@media (max-width:639px){.article-banner-row{margin-bottom:2rem}.article-banner{height:clamp(140px,24vh,200px)}.article-banner-row:has(.article-banner-icon){margin-top:-32px}.article-banner-icon{width:64px;height:64px}}@media (prefers-reduced-motion:reduce){.article-banner,.article-page .article-banner-row{animation:article-fade .2s ease both!important}}[data-theme=dark] .tag,[data-theme=dark] .tag[data-tint=gray]{--tag-bg:var(--tone-gray-bg);--tag-ink:#e3e2e0}[data-theme=dark] .tag[data-tint=brown]{--tag-bg:var(--tone-brown-bg);--tag-ink:#ead9d0}[data-theme=dark] .tag[data-tint=orange]{--tag-bg:var(--tone-orange-bg);--tag-ink:#f2d9c4}[data-theme=dark] .tag[data-tint=yellow]{--tag-bg:var(--tone-yellow-bg);--tag-ink:#f0e0bd}[data-theme=dark] .tag[data-tint=green]{--tag-bg:var(--tone-green-bg);--tag-ink:#cde5d6}[data-theme=dark] .tag[data-tint=blue]{--tag-bg:var(--tone-blue-bg);--tag-ink:#c9e3f2}[data-theme=dark] .tag[data-tint=purple]{--tag-bg:var(--tone-purple-bg);--tag-ink:#e2d4f0}[data-theme=dark] .tag[data-tint=pink]{--tag-bg:var(--tone-pink-bg);--tag-ink:#f2d2e1}[data-theme=dark] .tag[data-tint=red]{--tag-bg:var(--tone-red-bg);--tag-ink:#f4d1cd}@media (hover:hover) and (pointer:fine){[data-theme=dark] a.tag:hover,[data-theme=dark] button.tag:hover{filter:brightness(1.18)}}[data-theme=dark] .article-audio{background:var(--paper-raised)}[data-theme=dark] .voice-bar{background:rgb(255 255 255/.36)}[data-theme=dark] .voice-bars-hover .voice-bar{background:rgb(255 255 255/.52)}[data-theme=dark] :is(.voice-play,.voice-speed,.voice-wave):focus-visible{outline-color:var(--blue)}[data-theme=dark] .writing-button{color:#d4d4d2}[data-theme=dark] .writing-button:focus-visible{outline-color:var(--fg-2)}@media (hover:hover) and (pointer:fine){[data-theme=dark] .writing-button:hover{color:var(--fg)}}[data-theme=dark] .writing-empty-icon{color:var(--fg-3)}[data-theme=dark] .writing-empty h2{color:var(--fg)}[data-theme=dark] .writing-index{--ink-3:var(--fg-3)}.project-article,.project-index{max-width:1040px;margin:auto;padding:64px 32px;color:#20232b}.project-article header,.project-index header{margin:48px 0}.project-article h1,.project-index h1{font-size:clamp(30px,5vw,48px);letter-spacing:-1.5px;line-height:1.15;margin:12px 0 20px;font-weight:600}.project-dek,.project-index p{color:#656b76;line-height:1.7}.project-dek{font-size:19px;max-width:720px}.project-cards{display:grid;grid-template-columns:1fr 1fr;gap:28px}.project-card{border:1px solid #e7e9ed;border-radius:12px;overflow:hidden;text-decoration:none;color:inherit}.project-card img{width:100%;aspect-ratio:16/10;-o-object-fit:cover;object-fit:cover}.project-card>div{padding:24px}.project-card h2{font-size:20px;font-weight:550;margin:0}.project-card p{font-size:14px}.project-card small,.project-facts{color:#717784;font-size:12px}.project-facts{display:flex;flex-wrap:wrap;gap:16px;margin:24px 0}.project-cover{max-width:100%;height:auto;border-radius:12px;margin-bottom:48px}.project-reading{display:grid;grid-template-columns:minmax(0,720px) minmax(160px,1fr);gap:40px}.project-reading aside{align-self:start;position:sticky;top:30px}.project-article section{margin-top:48px}.project-article section h2{font-size:22px}.project-article section li{margin:12px 0}.project-external{margin-right:18px}.project-article a,.project-index a{cursor:pointer}.project-title{border:0;padding:0;background:transparent;font:inherit;color:#3257a9;cursor:pointer;text-align:left}.project-parent{display:block;font-size:11px;color:#737987;margin-top:5px}@media(max-width:760px){.project-cards,.project-reading{grid-template-columns:1fr}.project-reading aside{grid-row:1;position:static}.project-article,.project-index{padding:32px 22px}}.analytics-privacy{display:block;margin:24px auto;padding:8px 12px;border:0;background:transparent;color:#697181;font:inherit;font-size:11px;cursor:pointer}.project-article,.project-index{padding-left:max(32px,env(safe-area-inset-left));padding-right:max(32px,env(safe-area-inset-right))}@media(max-width:760px){.project-article,.project-index{padding-left:max(22px,env(safe-area-inset-left));padding-right:max(22px,env(safe-area-inset-right))}}.project-article,.project-article h1,.project-index h1{overflow-wrap:break-word}@media (pointer:coarse){.project-article>nav a,.project-index>a{display:inline-block;padding-block:12px;margin-block:-12px}}