:root{--bg:#f5f6f7;--surface:#fff;--ink:#12171c;--ink-2:#47515b;--muted:#77818b;--rule:#dde1e5;--old:#2a78d6;--new:#eb6834;--warn:#d03b3b;--steel:#8a929b;--particle:#091c1680;--air-0:#e4f5ee;--air-1:#a5dfc7;--air-2:#4ac398;--air-3:#168f68;--air-4:#0a563f;--air-word:#12805c;--display:"Archivo", "Helvetica Neue", Arial, sans-serif;--body:"IBM Plex Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--mono:"IBM Plex Mono", ui-monospace, "SF Mono", Menlo, monospace}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0f1316;--surface:#161b20;--ink:#f1f3f5;--ink-2:#b4bcc5;--muted:#8a939c;--rule:#2a3239;--old:#4a94ec;--new:#f07a45;--warn:#ec6a6a;--steel:#7d8791;--particle:#ffffff8c;--air-0:#14261f;--air-1:#1a4a39;--air-2:#1f7a5b;--air-3:#2bb487;--air-4:#93f0ce;--air-word:#45c79b;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--bg:#0f1316;--surface:#161b20;--ink:#f1f3f5;--ink-2:#b4bcc5;--muted:#8a939c;--rule:#2a3239;--old:#4a94ec;--new:#f07a45;--warn:#ec6a6a;--steel:#7d8791;--particle:#ffffff8c;--air-0:#14261f;--air-1:#1a4a39;--air-2:#1f7a5b;--air-3:#2bb487;--air-4:#93f0ce;--air-word:#45c79b;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}body{background:var(--bg);color:var(--ink);font-family:var(--body);font-size:1.0625rem;line-height:1.62}.article{grid-template-columns:minmax(1rem,1fr) minmax(0,6.5rem) min(42rem,100% - 2rem) minmax(0,6.5rem) minmax(1rem,1fr);padding-block:3.5rem 5rem;display:grid}.article>*{grid-column:3;min-width:0}.article>.fig,.article>.wide{grid-column:2/5}h1,h2{font-family:var(--display);text-wrap:balance;letter-spacing:-.01em;font-weight:650;font-stretch:112%}h1{margin:0 0 1.1rem;font-size:clamp(2.1rem,6vw,3.4rem);line-height:1.04}h2{margin:3.4rem 0 .7rem;font-size:clamp(1.35rem,3.4vw,1.75rem);line-height:1.15}.kicker{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:0 0 .9rem;font-size:.8rem}.lede{color:var(--ink-2);margin:0 0 1rem;font-size:1.2rem;line-height:1.5}p{margin:0 0 1.05rem}ul{margin:0 0 1.05rem;padding-left:1.2rem}li{margin-bottom:.35rem}a{color:inherit;text-underline-offset:.18em}.k-old,.k-new,.k-air{white-space:nowrap;font-weight:600}.k-old{color:var(--old)}.k-new{color:var(--new)}.k-air{color:var(--air-word)}.num{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:.94em}.aside{border-left:3px solid var(--rule);color:var(--ink-2);padding-left:1rem}.foot{border-top:1px solid var(--rule);color:var(--ink-2);margin-top:3.5rem;padding-top:1.2rem;font-size:.92rem}.fig{margin:1.9rem 0 2.2rem}.stage{background:var(--surface);border:1px solid var(--rule);border-radius:6px;padding:.6rem}.stage canvas{width:100%;display:block}#view3d{cursor:grab;touch-action:pan-y;outline-offset:4px}#view3d:active{cursor:grabbing}.split{grid-template-columns:minmax(0,23rem) minmax(0,1fr);align-items:center;gap:1.4rem;display:grid}.split>*{min-width:0}.pair{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;max-width:40rem;margin-inline:auto;display:grid}.pair h3{font:600 .95rem var(--body);margin:.2rem 0 .1rem .3rem}.pair p{color:var(--ink-2);margin:0 0 .3rem .3rem;font-size:.9rem}.solo{max-width:23rem;margin-inline:auto}@media (width<=640px){.split{grid-template-columns:1fr}.split>canvas{max-width:21rem;margin-inline:auto}}figcaption{color:var(--ink-2);margin-top:.7rem;max-width:42rem;margin-inline:auto;font-size:.9rem;line-height:1.5}.panel{flex-direction:column;gap:.9rem;padding:.4rem .6rem .4rem 0;display:flex}.readout{flex-direction:column;gap:.1rem;display:flex}.readout .lbl{font-family:var(--mono);letter-spacing:.07em;text-transform:uppercase;color:var(--muted);font-size:.72rem}.readout .big{font-family:var(--display);font-variant-numeric:tabular-nums;font-size:2rem;font-weight:650;font-stretch:112%;line-height:1.1}.readout .sub{color:var(--ink-2);font-size:.92rem}.readouts{flex-wrap:wrap;gap:.6rem 1.8rem;display:flex}.readouts .big{font-size:1.35rem}.controls{grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));align-items:end;gap:.75rem 1.6rem;margin-top:.9rem;display:grid}.ctl{flex-direction:column;gap:.3rem;min-width:0;display:flex}.ctl label,.ctl .lab{color:var(--ink-2);justify-content:space-between;gap:.6rem;font-size:.92rem;display:flex}.ctl output{font-family:var(--mono);color:var(--ink);font-variant-numeric:tabular-nums;font-size:.88rem}input[type=range]{appearance:none;background:0 0;width:100%;height:1.6rem;margin:0}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;background:var(--ink);border:3px solid var(--surface);width:1.3rem;height:1.3rem;box-shadow:0 0 0 1px var(--ink);cursor:pointer;border-radius:50%;margin-top:calc(2px - .65rem)}input[type=range]::-moz-range-thumb{background:var(--ink);border:3px solid var(--surface);width:1rem;height:1rem;box-shadow:0 0 0 1px var(--ink);cursor:pointer;border-radius:50%}input[type=range]:focus-visible{outline:2px solid var(--old);outline-offset:3px;border-radius:4px}.seg{border:1px solid var(--rule);background:var(--surface);border-radius:999px;flex-wrap:wrap;align-self:flex-start;padding:2px;display:inline-flex}.seg label{cursor:pointer;color:var(--ink-2);border-radius:999px;padding:.28rem .85rem;font-size:.9rem;position:relative}.seg input{opacity:0;cursor:pointer;margin:0;position:absolute;inset:0}.seg label:has(input:checked){background:var(--ink);color:var(--bg)}.seg label:has(input:focus-visible){outline:2px solid var(--old);outline-offset:2px}.check{color:var(--ink-2);align-items:center;gap:.5rem;font-size:.92rem;display:flex}button.plain{font:inherit;color:var(--ink-2);border:1px solid var(--rule);cursor:pointer;background:0 0;border-radius:999px;justify-self:start;padding:.28rem .85rem;font-size:.88rem}button:focus-visible{outline:2px solid var(--old);outline-offset:2px}.gridwrap{font-family:var(--mono);color:var(--muted);grid-template-columns:auto 1fr;align-items:center;gap:.3rem .5rem;max-width:19rem;font-size:.72rem;display:grid}.gridwrap .ylab{writing-mode:vertical-rl;text-align:center;letter-spacing:.05em;transform:rotate(180deg)}.gridwrap .xlab{text-align:center;letter-spacing:.05em;grid-column:2}#r1-grid{grid-template-columns:repeat(4,1fr);gap:3px;display:grid}.cell{font:500 .8rem var(--mono);font-variant-numeric:tabular-nums;cursor:pointer;color:var(--ink);background:color-mix(in srgb, var(--ink) calc(var(--w) * 34%), var(--surface));box-shadow:inset 0 0 0 1px var(--rule);border:0;border-radius:3px;padding:.55rem 0}.cell[aria-pressed=true]{box-shadow:inset 0 0 0 2.5px var(--new)}.bars{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.bars li{margin:0}.bars button{text-align:left;width:100%;font:inherit;cursor:pointer;color:var(--ink-2);background:0 0;border:0;border-radius:4px;grid-template-columns:1fr;gap:.15rem;padding:.3rem .4rem;display:grid}.bars .nm{font-size:.88rem}.bars .val{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:.8rem}.bars .bar{background:0 0;height:6px;display:block}.bars .bar i{background:var(--rule);border-radius:0 3px 3px 0;height:100%;display:block}.bars li.on button{color:var(--ink);background:color-mix(in srgb, var(--ink) 5%, transparent)}.bars li.on .bar i{background:var(--air-3)}.bars li.on .nm{font-weight:600}.result{grid-template-columns:auto 1fr;align-items:center;gap:.5rem 1rem;margin:.4rem 0 1.6rem;display:grid}.legend{margin-top:1.4rem}.result .cyl{white-space:nowrap;font-size:.95rem;font-weight:600}.result .rows{flex-direction:column;gap:3px;min-width:0;display:flex}.result .row{align-items:center;gap:.5rem;display:flex}.result .row i{border-radius:0 3px 3px 0;height:.8rem;display:block}.result .row .o{background:var(--old)}.result .row .n{background:var(--new)}.result .row span{font-family:var(--mono);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:.82rem}.legend{color:var(--ink-2);flex-wrap:wrap;gap:1.2rem;margin-bottom:.4rem;font-size:.88rem;display:flex}.legend i{vertical-align:-.08em;border-radius:2px;width:.8rem;height:.8rem;margin-right:.4rem;display:inline-block}.speed{font-family:var(--mono);color:var(--muted);align-items:center;gap:.5rem;font-size:.72rem;display:flex}.speed i{background:linear-gradient(90deg, var(--air-0), var(--air-1), var(--air-2), var(--air-3), var(--air-4));border-radius:3px;flex:1;max-width:9rem;height:6px}.site-nav{max-width:55rem;font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;gap:1rem;margin-inline:auto;padding:1.1rem 1rem 0;font-size:.8rem;display:flex}.site-nav a{color:var(--muted);text-decoration:none}.site-nav a:hover{color:var(--ink)}.site-nav .account{color:var(--muted);margin-left:auto}.site-nav+.article{padding-top:2.2rem}.article h3{font:600 1.1rem var(--body);margin:2rem 0 .5rem}.article blockquote{border-left:3px solid var(--rule);color:var(--ink-2);margin:0 0 1.05rem;padding-left:1rem}.article blockquote>:last-child{margin-bottom:0}.article code{font-family:var(--mono);font-size:.9em}.article pre{background:var(--surface);border:1px solid var(--rule);border-radius:6px;margin:0 0 1.05rem;padding:.8rem 1rem;font-size:.88rem;line-height:1.5;overflow-x:auto}.article hr{border:0;border-top:1px solid var(--rule);margin:2.4rem 0}.article img{border-radius:6px;height:auto}.article table{border-collapse:collapse;margin:0 0 1.05rem;font-size:.95rem;display:block;overflow-x:auto}.article th,.article td{text-align:left;border-bottom:1px solid var(--rule);padding:.4rem .9rem .4rem 0}.article th{color:var(--ink-2);font-weight:600}.posts{margin:1.6rem 0 0;padding:0;list-style:none}.posts li{border-top:1px solid var(--rule);margin:0;padding:1.4rem 0}.posts time,.posts .tag{font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-size:.78rem}.posts .tag{color:var(--warn);margin-left:.6rem}.posts h2{margin:.3rem 0 .4rem}.posts h2 a{text-decoration:none}.posts h2 a:hover{text-decoration:underline}.posts p{color:var(--ink-2);margin:0}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .astro-code,:root:not([data-theme=light]) .astro-code span{color:var(--shiki-dark)!important;background-color:var(--shiki-dark-bg)!important}}:root[data-theme=dark] .astro-code,:root[data-theme=dark] .astro-code span{color:var(--shiki-dark)!important;background-color:var(--shiki-dark-bg)!important}:root{--bw:2px;--bg:#fff}.article>.kicker,.article>h1,.article>.lede{border:var(--bw) solid var(--ink);grid-column:2/5;margin:0}.article>.kicker{color:var(--ink);border-bottom:0;padding:.5rem .9rem}.article>.kicker:has(>span){flex-wrap:wrap;margin-left:0;padding:0;display:flex}.article>.kicker>span{border-left:var(--bw) solid var(--ink);margin-left:calc(-1 * var(--bw));flex:0 auto;padding:.5rem .9rem}.article>.kicker>span:first-child{flex:auto;font-weight:500}.article>h1{text-transform:uppercase;padding:1.1rem .9rem 1rem}.article>h1:has(+.lede){border-bottom:0}.article>.lede{padding:.75rem max(.9rem,22%) .85rem .9rem;font-size:1.08rem}.article>:is(h1,.lede)+:not(.lede){margin-top:2.2rem}.article{counter-reset:sec fig}.article>h2{counter-increment:sec;border-top:var(--bw) solid var(--ink);padding-top:.6rem}.article>h2:before{content:counter(sec, decimal-leading-zero);font:500 .8rem var(--mono);letter-spacing:.08em;color:var(--muted);margin-bottom:.35rem;font-stretch:100%;display:block}.article figure{counter-increment:fig;border:var(--bw) solid var(--ink);background:var(--surface)}.article>figure:not(.fig){margin:1.9rem 0 2.2rem}.article figure img{border-radius:0;width:100%;display:block}.article figure .stage{border:0;border-radius:0}.article figure>.legend{margin:0;padding:.8rem .9rem 0}.article figure>:is(.controls,.pair,.solo){border-top:var(--bw) solid var(--ink);max-width:none;margin:0;padding:.9rem}.article figure>figcaption{border-top:var(--bw) solid var(--ink);max-width:none;font-family:var(--mono);margin:0;padding:.55rem .9rem .6rem;font-size:.78rem;line-height:1.55}.article figure>figcaption:before{content:"Fig. " counter(fig) " ";text-transform:uppercase;letter-spacing:.06em;color:var(--ink);margin-right:.5rem;font-weight:500}.seg{border:var(--bw) solid var(--ink);border-radius:0;padding:0}.seg label{font-family:var(--mono);border-radius:0;font-size:.8rem}button.plain{border:var(--bw) solid var(--ink);color:var(--ink);font-family:var(--mono);text-transform:uppercase;letter-spacing:.06em;border-radius:0;font-size:.78rem}input[type=range]::-webkit-slider-runnable-track{background:var(--ink);border-radius:0;height:2px}input[type=range]::-moz-range-track{background:var(--ink);border-radius:0;height:2px}input[type=range]::-webkit-slider-thumb{width:.8rem;height:1.3rem;box-shadow:none;border:0;border-radius:0;margin-top:calc(1px - .65rem)}input[type=range]::-moz-range-thumb{width:.8rem;height:1.3rem;box-shadow:none;border:0;border-radius:0}.ctl label,.ctl .lab,.check{font-family:var(--mono);font-size:.8rem}.cell,.bars button,.bars .bar i,.result .row i,.legend i,.speed i{border-radius:0}.article ul:not(.posts,.bars){list-style:square}.article pre,.article img{border-radius:0}.article pre{border:var(--bw) solid var(--ink)}.article blockquote,.aside{border-left:var(--bw) solid var(--ink)}.article hr{border:0;border-top:6px double var(--ink)}.article table{border:var(--bw) solid var(--ink);width:100%;font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:.84rem;display:table}.article th,.article td{border:1px solid var(--ink);padding:.4rem .7rem}.article th{letter-spacing:.07em;text-transform:uppercase;color:var(--ink);border-bottom-width:var(--bw);font-size:.74rem;font-weight:500}.article details{border:var(--bw) solid var(--ink);margin:0 0 1.05rem;padding:.6rem .9rem}.article summary{font-family:var(--mono);cursor:pointer;font-size:.84rem}.article details[open]>summary{margin-bottom:.6rem}.article details>:last-child{margin-bottom:0}.foot{border-top:var(--bw) solid var(--ink)}.posts{border-bottom:var(--bw) solid var(--ink);margin-top:0}.posts li{border-top:var(--bw) solid var(--ink);grid-template-columns:9.5rem minmax(0,1fr);column-gap:1rem;padding:1.1rem 0 1.2rem;display:grid}.posts li:first-child{border-top:0}.posts li:has(>.no){grid-template-columns:3rem minmax(0,1fr)}.posts li>*{grid-column:2}.posts li>:is(time,.no){font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);grid-area:1/1;padding-top:.45rem;font-size:.78rem}.posts li>.tag{grid-area:2/1;margin:0}.posts h2{grid-row:1;margin:0 0 .3rem}.posts p{grid-row:2}@media (width<=560px){.posts li{grid-template-columns:1fr}.posts li>*{grid-area:auto/1}.article>.lede{padding-right:.9rem}}html{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}body{margin:0}img{max-width:100%}[hidden],html:not([data-auth=in]) [data-auth-only],html:not([data-auth=out]) [data-auth-out]{display:none!important}
