@layer shell{*,:before,:after{box-sizing:border-box;min-width:0}a{color:inherit;touch-action:manipulation;text-decoration:none}:focus-visible{outline:1.5px solid var(--ink);outline-offset:3px}a:active{opacity:.6}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}:root{scrollbar-gutter:stable;text-wrap:pretty;overflow-wrap:break-word;font-synthesis:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;background:var(--paper);scroll-padding-block-start:calc(var(--bar) + 24px)}body{background:var(--paper);min-height:100svh;color:var(--ink);font-family:var(--serif);font-size:var(--t-body);font-optical-sizing:auto;margin:0;line-height:1.6}h1,h2,h3,h4{text-wrap:balance;margin:0;font-weight:400}img,svg,video{max-width:100%;height:auto;display:block}#main:focus-visible{outline-color:#0000}.ph{color:var(--mute)}.wrap{max-width:var(--col);padding-inline:var(--gutter);margin-inline:auto}.date,code,pre,kbd,figcaption{font-family:var(--mono);font-variant-numeric:tabular-nums}.date{font-size:var(--t-date);color:var(--mute);margin:6px 0 0;line-height:1.45}.date .w,.date .k{font-family:var(--serif);font-size:.9375rem;font-style:italic}.links .ext{vertical-align:.05em;margin-inline-start:.15em;display:inline-block}:is(.links,.prose) a{text-decoration:underline;text-decoration-color:var(--hair);text-underline-offset:4px}@media (hover:hover) and (pointer:fine){:is(.links,.prose) a:hover{text-decoration-color:var(--ink)}}.dek{max-width:34ch;font-size:var(--t-dek);margin:0;line-height:1.35}.phead{padding-block:var(--s2) var(--s3);position:relative}.phead .date{margin:0 0 var(--s2)}.phead h1{max-width:18ch;font-size:var(--t-title);letter-spacing:-.01em;margin-block-end:var(--s2);line-height:1.05}.phead h1.long{max-width:24ch;font-size:var(--t-title-long);line-height:1.1}.phead .dek{margin-block-end:var(--s2)}.links{flex-wrap:wrap;gap:0 18px;margin:0;padding:0;list-style:none;display:flex}.links a{padding-block:11px;display:inline-block}.prose{max-width:62ch;font-size:var(--t-body);line-height:1.6}.prose>:first-child{margin-block-start:0}.prose :is(p,ul,ol,blockquote,table,pre,figure){margin:0 0 var(--s2)}.prose h2{margin:var(--s5) 0 var(--s2);font-size:var(--t-h2);letter-spacing:-.005em;line-height:1.2}.prose h3{margin:var(--s4) 0 var(--s1);font-size:var(--t-dek);font-weight:500;line-height:1.3}.prose :is(ul,ol){padding-inline-start:1.2em}.prose li{margin:0 0 var(--s1)}.prose li>:is(ul,ol){margin-block:var(--s1) 0}.prose :is(b,strong){font-weight:500}.prose blockquote{border-inline-start:1px solid var(--ink);color:var(--ink2);margin-inline:0;padding-inline-start:var(--s2);font-style:italic}.prose hr{width:40px;height:1px;margin:var(--s5) auto;background:var(--ink);opacity:.6;border:0}.prose code{font-size:.82em}.prose :not(pre)>code{background:var(--wash);padding:.1em .3em}.prose pre{background:var(--wash);padding:14px 16px;font-size:.78rem;line-height:1.55;overflow-x:auto}.prose pre code{font-size:inherit}@media screen and (prefers-color-scheme:dark){:root:not([data-theme=light]) .prose img{filter:brightness(.9)}}@media screen{:root[data-theme=dark] .prose img{filter:brightness(.9)}}.prose img{border:1px solid var(--hair);width:100%;max-width:520px;height:auto}.prose figure,.prose p:has(>img:only-child){margin-block:var(--s4)}figcaption{max-width:52ch;color:var(--mute);margin-block-start:var(--s1);font-size:.75rem;line-height:1.5}.prose table{border-collapse:collapse;width:100%;font-size:.9375rem;line-height:1.45}.prose th{text-align:start;border-block-end:1px solid var(--ink);font-weight:500}.prose :is(th,td){vertical-align:top;overflow-wrap:anywhere;padding:6px 12px 6px 0}.prose td{border-block-end:1px solid var(--hair);font-variant-numeric:tabular-nums}.prose sup{line-height:0}.prose [data-footnote-ref]{font-family:var(--mono);padding-inline:.1em;font-size:.75em;text-decoration:none}.prose .footnotes{color:var(--ink2);margin-block-start:var(--s5);padding-block-start:var(--s3);font-size:.9375rem}.prose .footnotes:before{content:"";width:40px;height:1px;background:var(--ink);opacity:.6;margin-block-end:var(--s3);display:block}.prose .footnotes p{margin:0}.prose [data-footnote-backref]{font-family:var(--mono);text-decoration:none}.essay>:nth-child(1 of p:not(:has(img))):first-letter{float:left;padding:.06em .08em 0 0;font-size:4.05em;font-weight:400;line-height:.8}@media (width>=1100px){.wrap{padding-inline-start:calc(var(--gutter) + var(--margin))}.phead,.entry{grid-template-columns:var(--margin) minmax(0, 1fr);margin-inline-start:calc(-1 * var(--margin));display:grid}:is(.phead,.entry)>*{grid-column:2}.phead>h1,.entry>:is(h2,h3){grid-row:1;align-self:baseline}:is(.phead,.entry)>.date{grid-area:1/1/span 3;align-self:baseline;margin:0;padding-inline-end:28px}.phead>.dek{grid-row:2}.phead>.links{grid-row:3}:is(.phead,.entry)>.date span{display:block}:is(.phead,.entry)>.date .sep{display:none}.prose img{max-width:640px}.prose figure,.prose p:has(>img:only-child){margin-block:var(--s5)}}@media print{:root,:root[data-theme]{color-scheme:light;--paper:white;--ink:black;--ink2:black;--mute:oklch(35% 0 none)}body{font-size:11pt}.wrap,.phead,.entry{max-width:none;margin:0;padding:0;display:block}.phead .date span,.phead .date .sep{display:inline}.phead h1{font-size:24pt}.prose{max-width:none;font-size:11pt}.prose a[href^=http]:after,.links a:after{content:" (" attr(href) ")";font-family:var(--mono);overflow-wrap:anywhere;font-size:.8em}.prose pre{white-space:pre-wrap}.prose :is(h2,h3){break-after:avoid}.prose :is(figure,pre,table,img,blockquote){break-inside:avoid}.prose p{orphans:3;widows:3}}}:root{scroll-padding-block-start:128px}:root[data-topbar=shown]{scroll-padding-block-start:calc(128px + var(--bar))}.notes{margin:var(--s3) 0 var(--s4)}.notes button{font:inherit;color:inherit;cursor:pointer;text-align:inherit;background:0 0;border:0;padding:0}.slider{z-index:2;background:var(--paper);border-block-end:1px solid var(--hair);padding:10px 0 8px;position:sticky;inset-block-start:0}.slider .nav{justify-content:space-between;align-items:center;margin:0 0 8px;display:flex}.slider .nav button{border:1px solid var(--hair);min-block-size:36px;min-inline-size:44px;font:1rem/1 var(--mono);text-align:center;padding:6px 10px}html[data-topbar=shown] .slider{inset-block-start:var(--bar)}@media (prefers-reduced-motion:no-preference){.slider{transition:inset-block-start .18s var(--ease-out)}}.notes:not([data-state=ready]) .slider .nav button{visibility:hidden}.pos{font:.8125rem/1.35 var(--mono);text-align:center;padding:0 8px}.bar{touch-action:pan-y;gap:5px;block-size:30px;margin-block-end:5px;display:flex}.notes[data-state=ready] .bar{cursor:pointer}.seg{flex:0 0 var(--basis);align-items:flex-end;gap:1px;display:flex;position:relative}.seg.on{flex:1 1 0;align-items:flex-start}.tick{background:var(--ink);opacity:.5;flex:1 1 0;block-size:100%;min-inline-size:1px;display:block}.seg:not(.on){gap:0}.seg:not(.on) .tick{opacity:.32;min-inline-size:0}.seg:not(.on) .tick:nth-child(2n){opacity:.2}.seg.on .tick{flex-grow:var(--w)}.seg.on .tick.d1{block-size:62%}.seg.on .tick.d2{block-size:36%}.bar .seg .tick.cur:nth-child(n){opacity:1}.stage{background:var(--ink);block-size:2px;position:absolute;inset-block-start:calc(100% + 3px)}.stage[hidden]{display:none}@media (prefers-reduced-motion:no-preference){.notes[data-state=ready] :is(.seg,.tick){transition:flex-basis .35s,flex-grow .35s}.notes[data-state=ready] .stage{transition:left .35s,width .35s}}.note{overflow-anchor:none;border-block-end:1px solid var(--hair);min-block-size:max(15rem,100svh - 7rem);padding:12px 0 10px}.note:focus-visible{outline-offset:6px}.note h3{margin:6px 0 2px;font-size:1.5rem;font-weight:500;line-height:1.2}.note .meta{font:.75rem/1.45 var(--mono);color:var(--mute);margin:0 0 14px}.nb{overflow-wrap:anywhere}.nb :is(p,li){font-size:1rem}.nb h4{font:500 1.125rem/1.3 var(--serif);margin:24px 0 6px}.nb :is(h5,h6){font:500 .875rem/1.4 var(--mono);margin:18px 0 4px}.nb :is(ul,ol){padding-inline-start:20px}.nb hr{width:40px;height:1px;margin:var(--s4) 0;background:var(--ink);opacity:.6;border:0}.nb pre{margin:0 0 var(--s2);background:var(--wash);font:.6875rem/1.35 var(--mono);font-variant-numeric:tabular-nums;padding:10px;overflow-x:auto}.nb pre code{font-size:inherit}.nb code{font-size:.8125rem}.nb .scroll{margin:0 0 var(--s2);overflow-x:auto}.nb .scroll table{margin:0;font-size:.875rem}.nb :is(td,th){overflow-wrap:normal;min-inline-size:7em;padding:4px 8px 4px 0}.nb blockquote{border-inline-start:2px solid var(--hair);color:var(--ink2);margin:0 0 12px;padding-inline-start:12px;font-style:normal}.nb .math{margin:0 0 var(--s2);padding:4px 0;overflow:auto hidden}.nb :is(p,li)>.katex{vertical-align:middle;max-inline-size:100%;display:inline-block;overflow:auto hidden}.nb .callout{border-inline-start:2px solid var(--ink);margin:0 0 14px;padding:2px 0 2px 12px}.nb .callout b{font:500 .75rem/1.45 var(--mono);margin-block-end:2px;display:block}.nb .wl{text-decoration:underline;text-decoration-color:var(--hair);text-underline-offset:3px}.notes[data-state=ready] .nb .wl:hover{text-decoration-color:var(--ink)}.nb input[type=checkbox]{accent-color:var(--ink);margin:0 .4em 0 0}.nb li:has(>input[type=checkbox]){margin-inline-start:-1.1em;list-style:none}.status{min-block-size:1.5em;max-inline-size:62ch;font:.78rem/1.5 var(--mono);color:var(--ink2)}.status a{color:inherit;text-underline-offset:3px;margin-inline-start:.5ch;text-decoration:underline}.fail{flex-wrap:wrap;align-items:center;gap:8px 20px;margin:6px 0 0;display:none}.notes:is([data-state=failed],[data-state=saving],[data-retrying]) .fail{display:flex}.fail button{color:var(--ink);background:var(--paper);font:.875rem/1.2 var(--serif);border:1px solid;padding:10px 16px}.notes:not([data-state=saving]) [data-load],.notes[data-state=saving] [data-heavy-retry]{display:none}.fail button[aria-disabled=true]{color:var(--ink2);cursor:progress}.fail button:active{background:var(--wash)}.nb .wait{font:.8125rem/1.5 var(--mono);color:var(--ink2)}.nb .wait button{text-underline-offset:3px;min-block-size:24px;margin-inline-start:.5ch;text-decoration:underline}
