@font-face{font-family:JuliaMono;src:url(https://cdn.jsdelivr.net/gh/cormullion/juliamono@master/webfonts/JuliaMono-Regular.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:JuliaMono;src:url(https://cdn.jsdelivr.net/gh/cormullion/juliamono@master/webfonts/JuliaMono-Bold.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap}article.paper{max-width:760px;margin:0 auto;padding:3rem 1.5rem 6rem;font-family:Charter,Georgia,Times New Roman,serif;line-height:1.6}article.paper h1{font-weight:400;font-size:1.9rem}#paper-body>*{content-visibility:auto;contain-intrinsic-size:auto 3rem}article.paper .paper-byline{color:#8c1515;font-size:.85rem;margin-bottom:2rem}article.paper .paper-byline a{color:inherit}article.paper a{color:#820000;text-decoration:none;border-bottom:1px dotted #C58A8A}article.paper a:hover{border-bottom-style:solid}article.paper .katex a{border-bottom:none;color:inherit}article.paper .abstract{border-left:3px solid #E0DAD0;padding:.2rem 1.1rem;margin:1.5rem 0 2rem;font-size:.95rem}article.paper .abstract h2{font-size:1rem;margin:.4rem 0}.formal-block{border-left:3px solid #B1040E;background:#fdfcfa;padding:.65rem 1rem;margin:1.2rem 0;position:relative;transition:background .15s,outline-color .15s;outline:2px solid transparent}.formal-block[data-objid]{cursor:pointer}.formal-block[data-objid]:hover{background:#f1eee7}.katex-display{overflow-x:auto;overflow-y:hidden;padding:.15rem 0}article.paper .math.display{display:block;overflow-x:auto}.formal-block[data-objid]:focus-visible,.formal-block.drawer-open{outline-color:var(--lean)}.formal-block.flash{outline-color:var(--lean);background:var(--lean-wash)}.formal-block .env-label{font-style:italic;font-weight:600;margin-right:.4rem}.formal-block p{display:inline}.formal-block .lean-hint{position:absolute;top:.45rem;right:.6rem;font-family:var(--code-font);font-size:.68rem;color:#8c1515;opacity:.75}.kind-assumption,.kind-definition{border-left-color:#888;background:#f6f6f4}.kind-assumption:hover,.kind-definition:hover{background:#ededea}.kind-lemma{border-left-color:#b3a89e}.kind-algorithm{border:1px solid #888;border-left-width:3px;background:#f6f6f4}.kind-algorithm:hover{background:#ededea}.kind-algorithm ol{display:block;margin:.5rem 0 .2rem;padding-left:1.6rem}.kind-algorithm ol li{display:list-item;margin:.25rem 0}.proof{margin:1rem 0 1.6rem;font-size:.95rem}.proof .env-label{font-style:italic}.proof .qed{float:right}.references{font-size:.9rem}.references ul{list-style:none;padding-left:0}.references li{margin-bottom:.5rem}.drawer-scrim{position:fixed;inset:0;background:#3e341e2e;opacity:0;pointer-events:none;transition:opacity .2s;z-index:40}.drawer{position:fixed;top:0;right:0;bottom:0;width:min(560px,92vw);background:#fdfcfa;color:#36342f;border-left:1px solid #E0DAD0;box-shadow:-10px 0 30px #50411e29;transform:translate(102%);visibility:hidden;transition:transform .22s ease,visibility 0s linear .22s;z-index:50;display:flex;flex-direction:column}body.drawer-visible .drawer{transform:translate(0);visibility:visible;transition:transform .22s ease}body.drawer-visible .drawer-scrim{opacity:1;pointer-events:auto}.drawer-head{padding:.95rem 1.2rem;border-bottom:1px solid #E6E0D6;background:#fdfcfa;font-size:.8rem;color:#8c1515;font-family:var(--code-font)}.drawer-head .drawer-title{color:#2e2d29;font-size:1.02rem;display:block;margin-bottom:.25rem;font-family:Charter,Georgia,Times New Roman,serif}.drawer-head .drawer-kind{font-family:var(--code-font);font-size:var(--fs-2xs);color:#fff;background:var(--accent);border-radius:var(--r-badge);padding:.05rem .4rem;text-transform:uppercase;letter-spacing:.04em;vertical-align:.1em}.drawer-head .close{float:right;background:none;border:none;color:#8c1515;font-size:1.1rem;cursor:pointer}.drawer-head .close:hover{color:#2e2d29}.drawer-body{padding:1.1rem 1.2rem;overflow-y:auto;flex:1}.drawer-body pre{white-space:pre-wrap;word-break:break-word;font-family:var(--code-font);font-size:.8rem;line-height:1.55;margin:.5rem 0 1rem;background:var(--parchment);border:1px solid var(--rule-soft);border-radius:var(--r-card);padding:.85rem 1rem;color:#36342f}.drawer .badge-ok,.drawer .badge-warn{font-size:var(--fs-2xs);font-weight:600;padding:.08rem .45rem;border-radius:var(--r-badge);white-space:nowrap}.drawer .badge-ok{background:var(--verified-wash);color:var(--verified)}.drawer .badge-warn{background:var(--sorry-wash);color:var(--sorry)}.drawer .kw{color:#a12d22}.drawer .sorry-kw{color:#b91c1c;font-weight:700;background:#fde8e8;border-radius:3px;padding:0 .15rem}.drawer pre a.lib-link{color:var(--lean);text-decoration:none;border-bottom:1px dotted var(--lean-line)}.drawer pre a.lib-link:hover{border-bottom-style:solid}.drawer .ident{color:var(--lean);font-weight:700}.drawer .comment{color:#6b6661;font-style:italic}.drawer-meta{font-size:.75rem;color:#4d4f53;margin-bottom:.6rem;font-family:var(--code-font)}.drawer-meta a{color:#8c1515}.drawer-uses{font-size:.78rem;margin-top:.4rem;font-family:var(--code-font)}.drawer-uses a{color:#8c1515;text-decoration:none;cursor:pointer;border-bottom:1px dotted #C58A8A}.drawer-uses a:hover{border-bottom-style:solid}.drawer-fallback{font-size:.92rem;color:#36342f;font-family:Charter,Georgia,Times New Roman,serif}details.lean-fold{margin:.5rem 0}details.lean-fold>summary{cursor:pointer;font-family:var(--code-font);font-size:.82rem;color:var(--ink-soft, #5C5853);padding:.35rem .5rem;background:var(--parchment-deep, #F4F1EA);border:1px solid var(--rule, #DBD4C9);border-radius:4px;user-select:none;list-style:none}details.lean-fold>summary::-webkit-details-marker{display:none}details.lean-fold>summary:before{content:"▸ ";color:var(--accent)}details.lean-fold[open]>summary:before{content:"▾ "}details.lean-fold>summary:hover{color:var(--ink, #2E2D29)}details.lean-fold[open]>summary{border-bottom-left-radius:0;border-bottom-right-radius:0}details.lean-fold>pre{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.fold-count{opacity:.65;font-size:.76rem}.paper-toc{position:fixed;top:2.5rem;left:1.2rem;width:230px;max-height:calc(100vh - 5rem);overflow-y:auto;font-size:.82rem;line-height:1.45}.paper-toc .toc-head{font-variant:small-caps;letter-spacing:.06em;color:var(--ink-soft, #5C5853);margin-bottom:.4rem}.paper-toc ul{list-style:none;margin:0;padding:0}.paper-toc li.toc-l2{padding-left:.9rem}.paper-toc a{display:block;padding:.12rem .4rem;color:var(--ink-soft, #5C5853);text-decoration:none;border-left:2px solid transparent;border-radius:0 3px 3px 0}.paper-toc a:hover{color:var(--ink, #2E2D29)}.paper-toc a.active{color:var(--ink, #2E2D29);border-left-color:var(--accent, #8C1515);background:var(--parchment-deep, #F4F1EA)}@media(max-width:1280px){.paper-toc{display:none}}.paper-toc{scrollbar-width:none}.paper-toc:hover{scrollbar-width:thin;scrollbar-color:var(--rule, #DBD4C9) transparent}.paper-toc::-webkit-scrollbar{width:0}.paper-toc:hover::-webkit-scrollbar{width:5px}.paper-toc::-webkit-scrollbar-thumb{background:var(--rule, #DBD4C9);border-radius:3px}.paper-toc::-webkit-scrollbar-track{background:transparent}.env-label .obj-tag{font-family:var(--code-font);font-size:.78em;color:var(--ink-soft, #5C5853);font-weight:400}.leanref{cursor:pointer;border-bottom:1px dashed var(--lean)}.leanref:hover{border-bottom-style:solid;background:var(--lean-wash)}.leanref.drawer-open{background:var(--lean-wash);outline:none}.formal-layer{margin-top:var(--sp-12);border-top:1px solid var(--rule);padding-top:var(--sp-4);font-size:var(--fs-sm)}.formal-layer>details>summary{font-weight:600;font-size:1.05rem;cursor:pointer}.fl-note{color:var(--ink-soft);margin:.4rem 0 .8rem}.fl-group{margin:.4rem 0}.fl-group>summary{cursor:pointer;color:var(--ink-faint);font-weight:600;font-variant:small-caps;letter-spacing:.03em}.fl-group ul{list-style:none;padding-left:.5rem;margin:.3rem 0}.fl-row{display:flex;align-items:baseline;gap:.5rem;padding:.28rem .4rem;border-radius:var(--r-badge);flex-wrap:wrap;border-bottom:1px solid var(--rule-soft)}.fl-row:last-child{border-bottom:none}.fl-row.fl-open{cursor:pointer}.fl-row.fl-open:hover{background:var(--lean-wash)}.fl-label{font-weight:600;white-space:nowrap}.fl-decl{font-family:var(--code-font);color:var(--lean);background:var(--parchment);padding:0 .3rem;border-radius:var(--r-badge)}.fl-nl{color:var(--ink-soft);flex:1 1 16rem;min-width:0;overflow-x:auto;overflow-y:hidden}.fl-nl .katex{font-size:1em}.fl-badge{font-size:var(--fs-2xs);padding:.05rem .45rem;border-radius:var(--r-pill);white-space:nowrap}.fl-matched,.fl-derived{background:var(--verified-wash);color:var(--verified)}.fl-drift{background:var(--sorry-wash);color:var(--sorry)}.fl-unreviewed{background:var(--parchment-deep);color:var(--ink-faint)}.fl-gh{font-size:var(--fs-sm);white-space:nowrap}@media print{.paper-side,.drawer,.drawer-scrim,#cs-comments,.cs-rail{display:none!important}article{max-width:none}}@font-face{font-family:JuliaMono;src:url(https://cdn.jsdelivr.net/gh/cormullion/juliamono@master/webfonts/JuliaMono-Regular.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:JuliaMono;src:url(https://cdn.jsdelivr.net/gh/cormullion/juliamono@master/webfonts/JuliaMono-Bold.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap}article.paper{position:relative}.cs-comments[hidden]{display:none}.cs-comments{--cs-problem: var(--axiom);--cs-problem-wash: var(--axiom-wash);--cs-card: #ffffff;font-family:Charter,Georgia,Times New Roman,serif}.cs-sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.cs-s{border-radius:2px;transition:background .15s ease}.cs-hl-none{--cs-wash: var(--lean-wash);--cs-line: var(--lean-line);background:var(--lean-wash);box-shadow:inset 0 -2px 0 var(--lean-line);cursor:pointer}.cs-hl-verified{--cs-wash: var(--verified-wash);--cs-line: var(--verified);background:var(--verified-wash);box-shadow:inset 0 -2px 0 var(--verified);cursor:pointer}.cs-hl-problem{--cs-wash: var(--axiom-wash);--cs-line: var(--axiom);background:var(--axiom-wash);box-shadow:inset 0 -2px 0 var(--axiom);cursor:pointer}.cs-hl-drift{--cs-wash: transparent;--cs-line: var(--ink-ghost);background:transparent;box-shadow:none;border-bottom:2px dashed var(--ink-ghost)}.cs-hl-drift.cs-hl-verified{--cs-wash: #f0f5f1;--cs-line: var(--verified);background:#f0f5f1;border-bottom-color:var(--verified)}.cs-hl-drift.cs-hl-none{--cs-line: var(--lean-line);border-bottom-color:var(--lean-line)}.cs-hl-drift.cs-hl-problem{--cs-line: var(--axiom);border-bottom-color:var(--axiom)}.cs-s.cs-pending{outline:2px solid var(--accent-bright);outline-offset:1px;background:var(--accent-wash)}.cs-s.cs-linked{outline:2px solid var(--lean);outline-offset:1px}.cs-s>.katex,.cs-s>.katex-display,.cs-s>.math{border-radius:2px;transition:background .15s ease}.cs-s[class*=cs-hl-]>.katex,.cs-s[class*=cs-hl-]>.katex-display,.cs-s[class*=cs-hl-]>.math{background:var(--cs-wash)}.cs-s.cs-hl-drift>.katex,.cs-s.cs-hl-drift>.math:not(.display){border-bottom:2px dashed var(--cs-line)}.cs-s.cs-pending>.katex,.cs-s.cs-pending>.katex-display,.cs-s.cs-pending>.math{outline:2px solid var(--accent-bright);outline-offset:1px;background:var(--accent-wash)}.cs-s.cs-linked>.katex,.cs-s.cs-linked>.katex-display,.cs-s.cs-linked>.math{outline:2px solid var(--lean);outline-offset:1px}.cs-rail{position:relative;margin-top:var(--sp-8);font-size:var(--fs-sm)}.cs-rail-head{font-family:var(--code-font);font-size:var(--fs-2xs);letter-spacing:.12em;text-transform:uppercase;color:var(--accent);border-bottom:2px solid var(--ink);padding-bottom:var(--sp-1);margin-bottom:var(--sp-3)}.cs-rail-count{color:var(--ink-faint);text-transform:none;letter-spacing:.03em}.cs-rail-thread{float:right;color:var(--accent);text-transform:none;letter-spacing:.03em;text-decoration:none;border-bottom:none}.cs-rail-thread[hidden]{display:none}.cs-rail-empty{font-size:var(--fs-sm);color:var(--ink-ghost);font-style:italic}.cs-rail-empty[hidden]{display:none}.cs-group-head{font-family:var(--code-font);font-size:var(--fs-2xs);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint);margin:var(--sp-4) 0 var(--sp-2)}.cs-card{background:var(--cs-card);border:1px solid var(--rule);border-radius:var(--r-card);padding:.6rem .8rem .65rem;font-size:var(--fs-sm);margin-bottom:var(--sp-3);cursor:pointer;transition:box-shadow .15s ease}.cs-card:hover,.cs-card.cs-linked{box-shadow:0 0 0 2px var(--lean)}.cs-byline{display:flex;align-items:center;gap:.45rem;flex-wrap:wrap;margin-bottom:var(--sp-1)}.cs-name{font-weight:700;font-size:var(--fs-xs)}.cs-when,.cs-vlbl{font-family:var(--code-font);font-size:var(--fs-2xs);color:var(--ink-ghost)}.cs-av{width:18px;height:18px;border-radius:50%;background:var(--accent-muted);color:#fff;font-family:var(--code-font);font-size:.58rem;display:inline-flex;align-items:center;justify-content:center;flex:none;object-fit:cover}.cs-del-wrap{margin-left:auto;display:inline-flex;align-items:center;gap:.3rem}.cs-del-wrap button{font-family:var(--code-font);font-size:var(--fs-2xs);background:none;border:none;padding:0 .15rem;cursor:pointer;color:var(--ink-ghost)}.cs-del-wrap button:hover:not(:disabled){color:var(--sorry);text-decoration:underline}.cs-del-wrap button:disabled{opacity:.5;cursor:default}.cs-del-ask{font-family:var(--code-font);font-size:var(--fs-2xs);color:var(--ink-faint)}.cs-del-wrap .cs-del-yes{color:var(--sorry);font-weight:700}.cs-tagb{font-family:var(--code-font);font-size:.6rem;letter-spacing:.08em;text-transform:uppercase;font-weight:700;border-radius:var(--r-badge);padding:.1rem .42rem}.cs-tagb.cs-t-verified{background:var(--verified-wash);color:var(--verified)}.cs-tagb.cs-t-problem{background:var(--axiom-wash);color:var(--axiom)}.cs-body{color:var(--ink);line-height:1.5;white-space:pre-line;overflow-wrap:anywhere}.cs-quote{display:block;font-size:var(--fs-2xs);color:var(--ink-faint);border-left:2px solid var(--rule);padding-left:var(--sp-2);margin:.35rem 0 .1rem;font-style:italic}.cs-drift-note{margin-top:.45rem;font-size:.7rem;line-height:1.4;border-radius:4px;padding:.3rem .5rem;background:var(--parchment);color:var(--ink-soft);border:1px dashed var(--rule)}.cs-drift-note.cs-strong{background:var(--axiom-wash);border-color:var(--axiom);color:#7c3a06}.cs-footer{margin-top:.45rem;display:flex;align-items:center;gap:var(--sp-2)}.cs-reply-toggle{font-family:var(--code-font);font-size:var(--fs-2xs);background:none;border:none;padding:0;cursor:pointer;color:var(--lean)}.cs-reply-toggle:hover{text-decoration:underline}.cs-reply-toggle.cs-ghost{color:var(--ink-ghost)}.cs-reply-toggle.cs-ghost:hover{color:var(--lean)}.cs-reply-toggle[aria-expanded=true]:before{content:"▾ "}.cs-reply-toggle[aria-expanded=false]:before{content:"▸ "}.cs-thread:not(:empty){margin-top:.5rem;padding-left:.6rem;border-left:2px solid var(--rule)}.cs-reply{padding:.35rem 0 .4rem;border-bottom:1px solid var(--rule-soft)}.cs-reply:last-of-type{border-bottom:none}.cs-reply-byline{margin-bottom:.15rem}.cs-av-sm{width:15px;height:15px;font-size:.52rem}.cs-reply-body{font-size:var(--fs-xs);color:var(--ink-soft)}.cs-reply-box{padding-top:.4rem}.cs-reply-note{font-size:var(--fs-2xs);color:var(--ink-faint);margin-bottom:.3rem}.cs-reply-text{width:100%;resize:vertical;font-family:inherit;font-size:var(--fs-xs);color:var(--ink);background:var(--paper);border:1px solid var(--rule);border-radius:4px;padding:.35rem .5rem}.cs-reply-actions{display:flex;justify-content:flex-end;gap:var(--sp-2);margin-top:.3rem}.cs-reply-actions button,.cs-reply-box .cs-signin{font-family:inherit;font-size:var(--fs-2xs);border-radius:4px;padding:.2rem .6rem;cursor:pointer}.cs-archived{margin-top:var(--sp-8);border:1px solid var(--rule);border-radius:var(--r-card);background:var(--parchment);font-size:var(--fs-sm)}.cs-archived[hidden]{display:none}.cs-archived>summary{cursor:pointer;padding:.6rem 1rem;color:var(--ink-soft);font-weight:700}.cs-abody{padding:0 1rem .8rem}.cs-acard{background:var(--cs-card);border:1px solid var(--rule-soft);border-radius:var(--r-card);padding:.6rem .8rem;margin-bottom:var(--sp-2)}.cs-oq{font-size:var(--fs-xs);color:var(--ink-faint);font-style:italic;border-left:2px solid var(--rule);padding-left:var(--sp-2);margin:.3rem 0}.cs-anote{font-size:.72rem;color:var(--ink-soft);margin-top:.3rem}.cs-selbtn{position:absolute;z-index:30;font-family:inherit;font-size:var(--fs-sm);font-weight:700;background:var(--ink);color:var(--paper);border:none;border-radius:var(--r-pill);padding:.32rem .9rem;cursor:pointer;box-shadow:0 2px 8px #00000040}.cs-selbtn[hidden]{display:none}.cs-selbtn:after{content:"";position:absolute;left:14px;top:100%;border:5px solid transparent;border-top-color:var(--ink)}.cs-composer{position:absolute;z-index:35;width:23rem;max-width:calc(100vw - 2rem);background:var(--cs-card);border:1px solid var(--rule);border-radius:var(--r-frame);box-shadow:0 8px 28px #1a1a1a2e;padding:.9rem 1rem 1rem;font-size:var(--fs-sm)}.cs-composer[hidden]{display:none}.cs-anchor-line{font-size:var(--fs-xs);color:var(--ink-faint);margin:0 0 var(--sp-2);line-height:1.45}.cs-anchor-line em{color:var(--ink-soft)}.cs-snap{color:var(--ink-ghost);font-style:normal}.cs-seg{display:flex;border:1px solid var(--rule);border-radius:5px;overflow:hidden;margin-bottom:var(--sp-2)}.cs-seg button{flex:1;font-family:inherit;font-size:var(--fs-xs);padding:.35rem .2rem;border:none;border-right:1px solid var(--rule);background:var(--paper);color:var(--ink-soft);cursor:pointer;white-space:nowrap}.cs-seg button:last-child{border-right:none}.cs-seg button.is-on.cs-t-none{background:var(--lean-wash);color:var(--lean);font-weight:700}.cs-seg button.is-on.cs-t-verified{background:var(--verified-wash);color:var(--verified);font-weight:700}.cs-seg button.is-on.cs-t-problem{background:var(--axiom-wash);color:var(--axiom);font-weight:700}.cs-tagnote{font-size:.72rem;color:var(--ink-faint);margin:-.1rem 0 .55rem;min-height:1em}.cs-composer textarea{width:100%;min-height:4.2rem;resize:vertical;font-family:inherit;font-size:var(--fs-body-s);color:var(--ink);background:var(--paper);border:1px solid var(--rule);border-radius:4px;padding:.5rem .65rem}.cs-counter,.cs-status{font-size:.72rem;color:var(--ink-faint);margin:.3rem 0 0;min-height:.9em}.cs-status:not(:empty){color:var(--accent)}.cs-signin-note{font-size:.72rem;line-height:1.45;color:var(--ink-faint);margin:.45rem 0 0}.cs-signin-note[hidden]{display:none}.cs-foot{display:flex;align-items:center;gap:var(--sp-2);margin-top:var(--sp-2);flex-wrap:wrap}.cs-grow{flex:1}.cs-idchip{display:inline-flex;align-items:center;gap:.35rem;font-size:var(--fs-2xs);color:var(--ink-soft);border:1px solid var(--rule-soft);border-radius:var(--r-pill);background:var(--parchment);padding:.15rem .6rem .15rem .2rem}.cs-idchip[hidden]{display:none}.cs-foot button{font-family:inherit;font-size:var(--fs-sm);border-radius:4px;padding:.35rem .9rem;cursor:pointer}.cs-signin{background:var(--lean-wash);border:1px solid var(--lean-line);color:var(--lean);font-weight:700}.cs-signin[hidden]{display:none}.cs-cancel{background:none;border:1px solid var(--rule);color:var(--ink-soft)}.cs-post{background:var(--accent);border:1px solid var(--accent);color:var(--paper);font-weight:700}.cs-post:hover:not(:disabled){background:var(--accent-deep)}.cs-post:disabled{opacity:.5;cursor:default}@media(min-width:1300px){.cs-rail{position:absolute;top:var(--sp-12);left:100%;margin-top:0;margin-left:var(--sp-4);width:min(19rem,calc(50vw - 380px - 2.5rem))}.cs-rail-cards .cs-card{position:absolute;width:100%;margin-bottom:0}.cs-quote{display:none}}:root{--ink: #1a1a1a;--ink-soft: #5c5853;--ink-faint: #6b655d;--ink-ghost: #9a938c;--paper: #fdfcfa;--parchment: #f7f5f0;--parchment-deep: #f1eee7;--rule: #e0dad0;--rule-soft: #e8e2d8;--accent: #8c1515;--accent-deep: #820000;--accent-bright: #b1040e;--accent-muted: #c58a8a;--accent-wash: #f6e9e8;--verified: #2f6b46;--verified-wash: #e4efe6;--axiom: #b45309;--axiom-wash: #fbe3c4;--sorry: #a33333;--sorry-wash: #f6d6d6;--warning: #c99806;--lean: #35507a;--lean-wash: #edf1f6;--lean-line: #a9b9ce;--fs-2xs: .72rem;--fs-xs: .78rem;--fs-sm: .85rem;--fs-body-s: .95rem;--fs-body: 1rem;--fs-md: 1.15rem;--fs-lg: 1.35rem;--fs-xl: 2rem;--fs-hero: 2.4rem;--sp-1: .25rem;--sp-2: .5rem;--sp-3: .75rem;--sp-4: 1rem;--sp-6: 1.5rem;--sp-8: 2rem;--sp-12: 3rem;--sp-16: 4rem;--r-badge: 3px;--r-card: 6px;--r-frame: 8px;--r-pill: 999px}:where(a,button,summary,input,[tabindex]):focus-visible{outline:2px solid var(--lean);outline-offset:2px;border-radius:2px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition-duration:.001ms!important;animation-duration:.001ms!important}}@font-face{font-family:JuliaMono;src:url(https://cdn.jsdelivr.net/gh/cormullion/juliamono@master/webfonts/JuliaMono-Regular.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:JuliaMono;src:url(https://cdn.jsdelivr.net/gh/cormullion/juliamono@master/webfonts/JuliaMono-Bold.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap}:root{--code-font: "JuliaMono", ui-monospace, "SF Mono", Menlo, Consolas, monospace}.paper-side{font-family:Charter,Georgia,Times New Roman,serif}@media(min-width:1281px){.paper-side{position:fixed;top:2.5rem;left:1.2rem;width:clamp(230px,calc((100vw - 760px)/2 - 2.2rem),340px);max-height:calc(100vh - 4rem);display:flex;flex-direction:column;gap:var(--sp-3);z-index:5}.paper-side>.paper-toc{position:static;width:auto;max-height:none;flex:0 2 auto;min-height:3rem;overflow-y:auto}.paper-side>.pm-panel{flex:1 1 auto;display:flex;flex-direction:column;min-height:0;border-top:1px solid var(--rule);padding-top:var(--sp-3)}}.pm-panel{margin:0}.pm-head{display:flex;align-items:baseline;gap:var(--sp-2);margin:0 0 var(--sp-2);font-size:inherit;font-weight:400;flex-wrap:wrap}.pm-toggle{font-family:inherit;background:none;border:0;padding:0;cursor:pointer;text-align:left;display:flex;align-items:baseline;gap:.45em;flex-wrap:wrap}.pm-kicker{font-variant:small-caps;letter-spacing:.06em;color:var(--ink-soft);font-size:.82rem}.pm-sub{font-size:var(--fs-2xs);color:var(--ink-ghost)}.pm-toggle:before{content:""}.pm-coverage{display:flex;align-items:center;gap:var(--sp-1);font-size:var(--fs-2xs);color:var(--ink-soft)}.pm-coverage[hidden]{display:none}.pm-meter{width:42px;height:4px;border-radius:var(--r-pill);background:var(--parchment-deep);overflow:hidden}.pm-meter>span{display:block;height:100%;width:0;background:var(--verified);border-radius:var(--r-pill)}.pm-body{display:flex;flex-direction:column;min-height:0;flex:1 1 auto}.pm-body[hidden]{display:none}.pm-graph-scroll{overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;min-height:0;scrollbar-width:thin;scrollbar-color:var(--rule) transparent}svg.pm-map{display:block;margin:0 auto;max-width:100%;height:auto}.pm-edge{fill:none;stroke:#cfc8bc;stroke-width:1;transition:stroke .15s ease,opacity .15s ease}.pm-edge.is-cites{stroke:var(--lean);stroke-width:1.6}.pm-edge.is-citedby{stroke:var(--accent-bright);stroke-width:1.6}.pm-edge.is-dim{opacity:.15}a.pm-node{cursor:pointer;text-decoration:none}a.pm-node rect.pm-pill{fill:#fff;stroke:var(--ink-ghost);stroke-width:1;transition:stroke .15s ease}a.pm-node text.pm-lbl{font-family:Charter,Georgia,Times New Roman,serif;fill:var(--ink)}a.pm-node.pm-top rect.pm-pill{stroke:var(--accent);stroke-width:1.4}a.pm-node.pm-top text.pm-lbl{font-weight:700;fill:var(--accent-deep)}a.pm-node circle.pm-dot{fill:var(--verified);opacity:0}a.pm-node.is-attested rect.pm-pill{fill:var(--verified-wash)}a.pm-node.is-attested circle.pm-dot{opacity:1}a.pm-node.is-selected rect.pm-pill{stroke:var(--lean);stroke-width:2}a.pm-node.is-dim{opacity:.32}a.pm-node:hover rect.pm-pill{stroke:var(--lean);stroke-width:1.6}a.pm-node:focus-visible{outline:2px solid var(--lean);outline-offset:1px}.pm-legend{display:flex;gap:var(--sp-2);flex-wrap:wrap;margin:var(--sp-2) 0 0;font-size:var(--fs-2xs);color:var(--ink-ghost)}.pm-key{display:inline-flex;align-items:center;gap:.35em}.pm-swatch{display:inline-block;width:10px;height:10px;border-radius:3px;background:#fff;border:1.2px solid var(--ink-ghost)}.pm-swatch.pm-sw-top{border-color:var(--accent)}.pm-line{display:inline-block;width:14px;height:0;border-top:1.6px solid var(--lean)}.pm-line.pm-line-user{border-color:var(--accent-bright)}#paper-body .formal-block{scroll-margin-top:5rem}.pm-preview{border-top:1px solid var(--rule-soft);margin-top:var(--sp-3);padding-top:var(--sp-3);flex:0 1 auto;min-height:0;max-height:38vh;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--rule) transparent}.pm-preview[hidden]{display:none}.pm-card-head{display:flex;align-items:baseline;gap:var(--sp-2)}.pm-card-kicker{font-size:var(--fs-2xs);letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin:0;flex:1 1 auto}.pm-card-close{font-family:inherit;font-size:var(--fs-sm);line-height:1;color:var(--ink-faint);background:none;border:0;padding:.15rem .25rem;cursor:pointer}.pm-card-close:hover{color:var(--ink)}.pm-card-title{font-size:var(--fs-sm);font-weight:600;margin:0 0 var(--sp-2);line-height:1.3;text-wrap:balance}.pm-stmt{font-size:var(--fs-2xs);color:var(--ink-soft);background:var(--parchment);border:1px solid var(--rule-soft);border-radius:var(--r-card);padding:var(--sp-2) var(--sp-3);margin:0 0 var(--sp-2);max-height:11em;overflow:auto}.pm-stmt .pm-stmt-block{border:0;background:none;padding:0;margin:0;cursor:default}.pm-stmt .env-label{font-style:italic;font-weight:600;margin-right:.4rem}.pm-stmt p{display:inline;margin:0}.pm-stmt .katex-display{overflow-x:auto}.pm-stmt-note{margin:0 0 var(--sp-3)}.pm-goto{font-family:inherit;font-size:var(--fs-2xs);color:var(--lean);background:none;border:0;border-bottom:1px dotted var(--lean-line);padding:0;cursor:pointer}.pm-goto:hover{border-bottom-style:solid}.pm-rel{margin:0 0 var(--sp-3)}.pm-rel-label{font-size:var(--fs-2xs);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-faint);margin:0 0 var(--sp-1)}.pm-chips{display:flex;gap:var(--sp-1);flex-wrap:wrap}.pm-chips button{font-family:inherit;font-size:var(--fs-2xs);cursor:pointer;color:var(--lean);background:var(--lean-wash);border:1px solid var(--lean-line);border-radius:var(--r-pill);padding:.1rem .6rem}.pm-chips button:hover{background:#e2e9f2}.pm-chips .pm-none{font-size:var(--fs-xs);color:var(--ink-ghost);font-style:italic}.pm-attest{border-top:1px solid var(--rule);padding-top:var(--sp-3)}.pm-attest[hidden]{display:none}.pm-readers{display:flex;align-items:center;gap:.4rem;margin:0 0 var(--sp-3);min-height:24px;flex-wrap:wrap}.pm-av{width:22px;height:22px;border-radius:50%;background:var(--verified);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:.62rem;font-weight:700;border:1.5px solid var(--paper);object-fit:cover}.pm-av.pm-you{background:var(--accent)}.pm-readers .pm-count{font-size:var(--fs-xs);color:var(--ink-soft)}.pm-verify{width:100%;font-family:inherit;font-size:var(--fs-xs);cursor:pointer;background:var(--verified);color:#fff;border:1px solid var(--verified);border-radius:var(--r-card);padding:.4rem .8rem}.pm-verify:hover{background:#265939}.pm-verify.is-mine{background:var(--verified-wash);color:var(--verified)}.pm-verify.needs-login{background:var(--accent);border-color:var(--accent)}.pm-verify.needs-login:hover{background:var(--accent-deep)}.pm-verify[disabled]{opacity:.6;cursor:default}.pm-status{font-size:var(--fs-2xs);color:var(--ink-soft);margin:var(--sp-2) 0 0;min-height:1em}.pm-micro{font-size:var(--fs-2xs);color:var(--ink-ghost);margin:var(--sp-2) 0 0;line-height:1.4}@media(max-width:1280px){.paper-side{max-width:760px;margin:0 auto;padding:1.25rem 1.5rem 0}.pm-panel{border:1px solid var(--rule);border-radius:var(--r-frame);background:var(--paper);padding:var(--sp-3) var(--sp-4)}.pm-toggle:before{content:"▾";display:inline-block;color:var(--accent-muted);font-size:.7em}.pm-panel.is-collapsed .pm-toggle:before{content:"▸"}.pm-graph-scroll{max-height:60vh;overflow-x:auto}.pm-preview{max-height:50vh}}.pm-rate{border-top:1px solid var(--rule);padding-top:var(--sp-3);margin-top:var(--sp-3)}.pm-rate[hidden]{display:none}.pm-rate .pm-stars{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem}.pm-rate .rate-star{font-size:1.05rem}.pm-rate .rate-caption{flex-basis:100%;margin:var(--sp-1) 0 0}
