@font-face{font-family:Instrument Serif;font-style:italic;font-weight:400;font-display:swap;src:url(../media/f7095de3000afb68-s.3zvkfbs08rnj_.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Instrument Serif;font-style:italic;font-weight:400;font-display:swap;src:url(../media/e63b65bb308a9351-s.p.3strvg7o-g5v2.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Instrument Serif;font-style:normal;font-weight:400;font-display:swap;src:url(../media/125b6750c58ce347-s.1wwzpfhzaj2r0.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Instrument Serif;font-style:normal;font-weight:400;font-display:swap;src:url(../media/d902bc2bfdd0a4cb-s.p.2rlzm4mj5kw8e.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Instrument Serif Fallback;src:local(Times New Roman);ascent-override:117.94%;descent-override:36.93%;line-gap-override:0.0%;size-adjust:83.94%}.AuOkkq_className{font-family:Instrument Serif,Instrument Serif Fallback;font-weight:400}.AuOkkq_variable{--font-serif:"Instrument Serif", "Instrument Serif Fallback"}
@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/4f6667dd39116621-s.00az9qtie3ho1.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/07935285219a259d-s.3j-a226dh71aj.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/f58031ded4338640-s.2gwoz23eiro2t.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/77814b00d5ca94a4-s.0i3h3th1vs4m7.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/605ce01b664af129-s.p.0zr6hhvz-h9nw.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Fallback;src:local(Arial);ascent-override:95.94%;descent-override:28.16%;line-gap-override:0.0%;size-adjust:104.76%}.BboVrW_className{font-family:Geist,Geist Fallback;font-style:normal}.BboVrW_variable{--font-sans:"Geist", "Geist Fallback"}
@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/b0c6b664fd57c2c6-s.27spqqad3wyeo.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/6e342921ee4dcd9d-s.3f4zuumv8svu0.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/2bb852295097cd96-s.34r5yzckw0h2s.woff2)format("woff2");unicode-range:U+2000-2001,U+2004-2008,U+200A,U+23B8-23BD,U+2500-259F}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/9eb5a876700c0028-s.2jyz_zw3a8jit.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/2a04751c893bf294-s.30bdpjkrtcces.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/07a39a8a4660cc7c-s.p.1v5bejj26fx9h.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Fallback;src:local(Arial);ascent-override:74.67%;descent-override:21.92%;line-gap-override:0.0%;size-adjust:134.59%}.nw7kYW_className{font-family:Geist Mono,Geist Mono Fallback;font-style:normal}.nw7kYW_variable{--font-mono:"Geist Mono", "Geist Mono Fallback"}
:root{--bg:#f3f2ed;--panel:#fbfaf7;--fg:#17202b;--muted:#5f6672;--line:#d6d4cc;--dot:#d9d7cf;--accent:#2b45c9;--accent-soft:#e3e7fb;--on-accent:#fff;--draft:#a3591f;--serif:var(--font-serif), Georgia, serif;--sans:var(--font-sans), system-ui, -apple-system, "Segoe UI", sans-serif;--mono:var(--font-mono), ui-monospace, Menlo, monospace;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{font-family:var(--sans);color:var(--fg);background-color:var(--bg);background-image:radial-gradient(var(--dot) 1px, transparent 1px);-webkit-font-smoothing:antialiased;background-size:22px 22px;margin:0;font-size:1rem;line-height:1.6}h1,h2,h3,h4{font-family:var(--serif);margin:0;font-weight:400;line-height:1.1}p{margin:0 0 1em}ul,ol{margin:0;padding:0}a{color:inherit;text-decoration-line:underline;-webkit-text-decoration-color:var(--line);text-decoration-color:var(--line);text-underline-offset:.2em;text-decoration-thickness:1px;transition:color .15s,text-decoration-color .15s}a:hover{color:var(--accent);-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent)}a:focus-visible{outline:2px solid var(--accent);outline-offset:3px}::selection{background:var(--accent-soft)}.wrap{max-width:72rem;margin:0 auto;padding:0 clamp(1rem,4vw,2.5rem)}.skip{position:absolute;left:-999px}.skip:focus{z-index:10;background:var(--fg);color:var(--bg);padding:.5rem .75rem;top:1rem;left:1rem}.mono{font-family:var(--mono);color:var(--muted);font-size:.78rem}.top{font-family:var(--mono);border-bottom:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;gap:.75rem 1.5rem;padding:1.5rem 0;font-size:.8rem;display:flex}.top nav{flex-wrap:wrap;gap:.4rem 1.1rem;display:flex}.top a{text-decoration:none}.top nav a{color:var(--muted)}.top nav a:hover{color:var(--accent)}.footer{border-top:1px solid var(--fg);gap:2rem;margin-top:2rem;padding:3rem 0 2.5rem;display:grid}.footer h2{margin-bottom:1rem;font-size:2.6rem}.footer ul{gap:.4rem;list-style:none;display:grid}.footer li{grid-template-columns:6rem minmax(0,1fr);font-size:1.05rem;display:grid}.footer li span{font-family:var(--mono);color:var(--muted);padding-top:.25rem;font-size:.78rem}.footer li a{overflow-wrap:anywhere}.build{font-family:var(--mono);color:var(--muted);margin:0;font-size:.75rem}.block{border-top:1px solid var(--line);padding:clamp(3rem,7vw,4.5rem) 0}.blockHead{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.5rem 2rem;margin-bottom:2.25rem;display:flex}.blockHead h1,.blockHead h2{font-size:clamp(2.2rem,5vw,3.2rem);line-height:1}.blockHead p{color:var(--muted);font-family:var(--mono);max-width:28rem;margin:0;font-size:.8rem}.pill{font-family:var(--mono);background:var(--accent-soft);color:var(--accent);vertical-align:middle;border-radius:999px;margin-left:.5rem;padding:.05rem .45rem;font-size:.68rem;line-height:1.6;display:inline-block}.pill--draft{color:var(--draft);background:0 0;border:1px solid}.tag{font-family:var(--mono);color:var(--accent);font-size:.72rem}.table{border-collapse:collapse;background:var(--panel);border:1px solid var(--line);width:100%;margin-top:1.5rem;font-size:.95rem}.table caption{text-align:left;font-family:var(--mono);color:var(--muted);padding-bottom:.5rem;font-size:.75rem}.table th{text-align:left;font-family:var(--mono);color:var(--muted);border-bottom:1px solid var(--line);padding:.6rem 1rem;font-size:.75rem;font-weight:400}.table td{border-bottom:1px solid var(--line);vertical-align:top;padding:.75rem 1rem}.table tr:last-child td{border-bottom:0}.table .num{font-family:var(--mono);white-space:nowrap;text-align:right;color:var(--muted);font-size:.8rem}.table .kind{font-family:var(--mono);color:var(--muted);width:6rem;font-size:.8rem}.table .summary{color:var(--muted);margin-top:.15rem;font-size:.88rem;display:block}@media (max-width:40rem){.entries tr,.entries td,.stack tr,.stack td{display:block}.entries td,.stack td{border-bottom:0;padding:.2rem 1rem}.entries td.num,.stack td.num{text-align:left}.entries tr,.stack tr{border-bottom:1px solid var(--line);padding:.6rem 0}.entries tr:last-child,.stack tr:last-child{border-bottom:0}.top{flex-wrap:nowrap;align-items:baseline;gap:1rem;padding:1rem 0}.top nav{white-space:nowrap;scrollbar-width:none;flex-wrap:nowrap;gap:.9rem;overflow-x:auto}.top nav::-webkit-scrollbar{display:none}.crumb{flex-shrink:0}}.empty{font-family:var(--mono);color:var(--muted);border:1px dashed var(--line);margin:0;padding:1.25rem;font-size:.85rem}.draft-note{font-family:var(--mono);color:var(--draft);border:1px dashed;margin:0 0 1.5rem;padding:.75rem 1rem;font-size:.78rem}.article-head{max-width:46rem;padding:clamp(3rem,8vw,5rem) 0 2.5rem}.article-head .back{font-family:var(--mono);color:var(--muted);margin-bottom:2rem;font-size:.8rem;text-decoration:none;display:inline-block}.meta-row{flex-wrap:wrap;align-items:center;gap:.25rem 1rem;display:flex}.article-head h1{margin:.9rem 0 1.25rem;font-size:clamp(2.6rem,6vw,4.2rem);line-height:1}.article-head .summary{color:var(--muted);margin:0;font-size:1.2rem;line-height:1.5}.chips{flex-wrap:wrap;gap:.35rem;list-style:none;display:flex}.chips li{font-family:var(--mono);border:1px solid var(--line);background:var(--bg);padding:.15rem .5rem;font-size:.74rem}.entry-links{font-family:var(--mono);flex-wrap:wrap;gap:1.25rem;margin-top:1.25rem;font-size:.85rem;display:flex}.prose{border-top:1px solid var(--line);max-width:42rem;padding:2.5rem 0 1rem;font-size:1.08rem;line-height:1.7}.prose h2{margin:2.5rem 0 .8rem;font-size:2rem}.prose h3{margin:2rem 0 .6rem;font-size:1.5rem}.prose p,.prose ul,.prose ol,.prose blockquote,.prose pre,.prose table{margin:0 0 1.25rem}.prose ul,.prose ol{padding-left:1.3rem}.prose li{margin-bottom:.35rem}.prose blockquote{border-left:2px solid var(--accent);color:var(--muted);padding:.25rem 0 .25rem 1.1rem}.prose code{font-family:var(--mono);background:var(--panel);border:1px solid var(--line);padding:.05em .3em;font-size:.85em}.prose pre{background:var(--panel);border:1px solid var(--line);padding:1rem 1.1rem;line-height:1.5;overflow-x:auto}.prose pre code{background:0 0;border:0;padding:0;font-size:.82em}.prose img{max-width:100%;height:auto}.prose table{border-collapse:collapse;width:100%;font-size:.92rem;display:block;overflow-x:auto}.prose th,.prose td{text-align:left;border-bottom:1px solid var(--line);padding:.45rem .75rem .45rem 0}.prose hr{border:0;border-top:1px solid var(--line);margin:2.5rem 0}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.typed{display:inline-block;position:relative}.typed__ghost{visibility:hidden}.typed__live{position:absolute;inset:0}.typed__caret{vertical-align:-.2em;background:var(--accent);width:.55em;height:1.1em;margin-left:1px;animation:.9s step-end infinite caret-blink;display:inline-block}@keyframes caret-blink{50%{opacity:0}}.top{z-index:5;background:color-mix(in srgb, var(--bg) 88%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:0 0 0 100vmax color-mix(in srgb, var(--bg) 88%, transparent);clip-path:inset(0 -100vmax);position:sticky;top:0}.top:after{content:"";background:var(--accent);transform-origin:0;height:2px;position:absolute;bottom:-1px;left:-100vmax;right:-100vmax;transform:scaleX(0)}@supports (animation-timeline:scroll()){.top:after{animation:linear both read-progress;animation-timeline:scroll(root);left:calc(-50vw + 50%);right:calc(-50vw + 50%)}}@keyframes read-progress{to{transform:scaleX(1)}}.reveal-ready [data-reveal]{opacity:0;transition:opacity .6s,transform .6s cubic-bezier(.2,.7,.2,1);transform:translateY(18px)}.reveal-ready [data-reveal].is-visible{opacity:1;transform:none}@media (prefers-reduced-motion:reduce){.top:after{animation:none}}html{scroll-behavior:smooth}[id]{scroll-margin-top:5rem}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}.pg-grid{gap:3rem 2rem;display:grid}@media (min-width:60rem){.pg-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.pg-item--music{grid-column:1/-1}}.pg-item h3{margin:.4rem 0 1rem;font-size:2rem}.pg-panel{background:var(--panel);border:1px solid var(--line);box-shadow:6px 6px 0 var(--accent-soft);font-size:.9rem}.pg-bar{border-bottom:1px solid var(--line);font-family:var(--mono);justify-content:space-between;align-items:center;padding:.6rem 1rem;font-size:.78rem;display:flex}.pg-bar:before{content:"";background:radial-gradient(circle, var(--line) .26rem, transparent .28rem) 0 0 / .75rem .55rem repeat-x;width:2.1rem;height:.55rem;margin-right:.75rem}.pg-title{flex:1}.pg-dialect{color:var(--accent)}.pg-tabs{border-bottom:1px solid var(--line);font-family:var(--mono);font-size:.75rem;display:flex}.pg-tabs button{border:0;border-right:1px solid var(--line);color:var(--muted);cursor:pointer;font:inherit;background:0 0;padding:.45rem .9rem}.pg-tabs button.is-active{background:var(--bg);color:var(--fg);box-shadow:inset 0 -2px 0 var(--accent)}.pg-code{font-family:var(--mono);background:var(--bg);margin:0;padding:1rem;font-size:.82rem;line-height:1.6;overflow-x:auto}.tk-kw{color:var(--accent);font-weight:500}.tk-str{color:#a3591f}.tk-num{color:#8a3fa0}.tk-com{color:var(--muted);font-style:italic}.tk-fn{color:#1f7a5c}.tk-key{color:var(--fg);font-weight:500}.tk-op{color:var(--muted)}.pg-actions{border-top:1px solid var(--line);align-items:center;gap:.6rem;padding:.75rem 1rem;display:flex}.pg-actions--split{justify-content:space-between}.pg-run,.pg-ghost{font-family:var(--mono);border:1px solid var(--accent);cursor:pointer;padding:.4rem .9rem;font-size:.78rem}.pg-run{background:var(--accent);color:var(--on-accent)}.pg-run:hover:not(:disabled){background:var(--fg);border-color:var(--fg)}.pg-run:disabled{opacity:.6;cursor:progress}.pg-ghost{color:var(--accent);border-color:var(--line);background:0 0}.pg-ghost:hover{border-color:var(--accent)}.pg-inline{margin-left:auto;padding:.15rem .6rem}.pg-output{border-top:1px solid var(--line);min-height:4.5rem;padding:.75rem 1rem 1rem}.pg-hint{font-family:var(--mono);color:var(--muted);margin:0;font-size:.75rem}.pg-pulse{animation:1s ease-in-out infinite pg-pulse}@keyframes pg-pulse{50%{opacity:.35}}.pg-status{font-family:var(--mono);color:#1f7a5c;flex-wrap:wrap;align-items:center;gap:.25rem .5rem;margin:0 0 .75rem;font-size:.75rem;display:flex}.pg-scroll{overflow-x:auto}.pg-table{border-collapse:collapse;width:100%;font-size:.88rem}.pg-table th{text-align:left;font-family:var(--mono);color:var(--muted);border-bottom:1px solid var(--fg);padding:.4rem .75rem .4rem 0;font-size:.72rem;font-weight:400}.pg-table td{border-bottom:1px solid var(--line);vertical-align:top;padding:.5rem .75rem .5rem 0}.pg-table tbody tr{animation:.35s both pg-row}@keyframes pg-row{0%{opacity:0;transform:translateY(4px)}}.nb-cell{border-bottom:1px solid var(--line)}.nb-in{font-family:var(--mono);color:var(--muted);align-items:center;gap:.6rem;padding:.6rem 1rem 0;font-size:.72rem;display:flex}.nb-play{border:1px solid var(--accent);background:var(--panel);width:1.6rem;height:1.6rem;color:var(--accent);cursor:pointer;border-radius:50%;font-size:.6rem;transition:background .15s,color .15s}.nb-play:hover:not(:disabled){background:var(--accent);color:var(--on-accent)}.nb-code{border:1px solid var(--line);margin:.5rem 1rem .75rem}.nb-out{padding:0 1rem 1rem}.nb-cell+.pg-actions{border-top:0}.api-req{align-items:center;gap:.6rem;padding:.75rem 1rem;display:flex}.api-method{font-family:var(--mono);color:#1f7a5c;border:1px solid;padding:.2rem .45rem;font-size:.75rem;font-weight:600}.api-url{min-width:0;font-family:var(--mono);background:var(--bg);border:1px solid var(--line);white-space:nowrap;flex:1;padding:.35rem .6rem;font-size:.82rem;overflow-x:auto}.api-ok{color:#fff;background:#1f7a5c;padding:.05rem .4rem}.api-json{border:1px solid var(--line)}@media (prefers-reduced-motion:reduce){.pg-table tbody tr,.pg-pulse{animation:none}}
