@layer reset;@layer tokens{:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--paper:#f8f5f1;--sheet:#fcfbf8;--inset:#f0ede7;--ink:#201e1a;--ink-2:#504c47;--ink-3:#67625c;--rule:#dcd9d2;--rule-strong:#8a857e;--grid:#e1ded7;--signal:#2a7257;--signal-hi:#135b42;--wash:#d6efe3;--ochre:#8a5a12;--rust:#ae4024;--code-fn:#305686;--code-str:#81520a;--code-num:#a7391e;--focus:var(--signal);--fig-a:var(--ink-2);--fig-b:var(--ochre);--fig-miss:var(--rust);--fig-band:var(--wash);--fig-current:var(--signal);--shadow-pop:0 1px 0 #201e1a0a, 0 8px 24px -10px #201e1a38;--theme-color:#f8f5f1}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--paper:#141310;--sheet:#1b1916;--inset:#0e0d0a;--ink:#eae7e2;--ink-2:#bab7b0;--ink-3:#9c9890;--rule:#32302c;--rule-strong:#7c7972;--grid:#282623;--signal:#7fc9ad;--signal-hi:#9de2c7;--wash:#18342a;--ochre:#e7b369;--rust:#ea856b;--code-fn:#a0c0eb;--code-str:#e7b369;--code-num:#f18b71;--shadow-pop:0 0 0 1px #32302c, 0 10px 28px -12px #000000b3;--theme-color:#141310}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--paper:#141310;--sheet:#1b1916;--inset:#0e0d0a;--ink:#eae7e2;--ink-2:#bab7b0;--ink-3:#9c9890;--rule:#32302c;--rule-strong:#7c7972;--grid:#282623;--signal:#7fc9ad;--signal-hi:#9de2c7;--wash:#18342a;--ochre:#e7b369;--rust:#ea856b;--code-fn:#a0c0eb;--code-str:#e7b369;--code-num:#f18b71;--shadow-pop:0 0 0 1px #32302c, 0 10px 28px -12px #000000b3;--theme-color:#141310}}:root[data-theme=dark]{--glyph-stroke:1.15px}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--glyph-stroke:1.15px}}:root{--f-text:"Literata", "Literata Fallback Georgia", "Literata Fallback Times", "Literata Fallback Noto", Georgia, serif;--f-ui:"Recursive", "Recursive Fallback Arial", "Recursive Fallback Roboto", "Recursive Fallback Noto", ui-sans-serif, system-ui, sans-serif;--f-mono:"Recursive", "Recursive Mono Fallback Courier", "Recursive Mono Fallback Noto", ui-monospace, monospace;--fs-micro:.75rem;--lh-micro:1rem;--fw-micro:400;--tr-micro:0;--fs-meta:.8125rem;--lh-meta:1.25rem;--fw-meta:400;--tr-meta:0;--fs-ui:.875rem;--lh-ui:1.25rem;--fw-ui:500;--tr-ui:0;--fs-body:1.0625rem;--lh-body:1.75rem;--fw-body:400;--tr-body:0;--fs-row:1.0625rem;--lh-row:1.75rem;--fw-row:500;--tr-row:0;--fs-row-dek:1rem;--lh-row-dek:1.625rem;--fw-row-dek:400;--tr-row-dek:0;--fs-lead:1.25rem;--lh-lead:1.875rem;--fw-lead:400;--tr-lead:-.005em;--fs-h3:1.0625rem;--lh-h3:1.75rem;--fw-h3:600;--tr-h3:0;--fs-h2:1.375rem;--lh-h2:1.75rem;--fw-h2:600;--tr-h2:-.005em;--fs-statement:1.75rem;--lh-statement:2.25rem;--fw-statement:400;--tr-statement:-.012em;--fs-page:2.125rem;--lh-page:2.5rem;--fw-page:500;--tr-page:-.015em;--fs-h1:2.5rem;--lh-h1:2.875rem;--fw-h1:550;--tr-h1:-.02em;--fs-name:2.75rem;--lh-name:3rem;--fw-name:600;--tr-name:-.022em;--fs-code:.875rem;--lh-code:1.375rem;--fw-code:400;--tr-code:0;--fs-code-inline:.88em;--fw-code-keyword:650}@media (width<=47.49rem){:root{--fs-lead:1.1875rem;--lh-lead:1.75rem;--fs-h2:1.25rem;--lh-h2:1.75rem;--fs-statement:1.4375rem;--lh-statement:1.9375rem;--fs-page:1.75rem;--lh-page:2.125rem;--fs-h1:1.875rem;--lh-h1:2.25rem;--fs-name:2.125rem;--lh-name:2.5rem;--fs-code:.8125rem;--lh-code:1.3125rem}}:root{--side:1.25rem;--gutter-w:9rem;--gap-1:2rem;--measure:35rem;--gap-2:2.5rem;--margin-w:14rem;--breakout:calc(var(--gap-2) + var(--margin-w));--page-cols:[full-start] minmax(var(--side), 1fr) [gutter-start] var(--gutter-w) [gutter-end] var(--gap-1) [main-start] minmax(0, var(--measure)) [main-end] var(--gap-2) [margin-start] var(--margin-w) [margin-end] minmax(var(--side), 1fr) [full-end];--s-1:.25rem;--s-2:.5rem;--s-3:.75rem;--s-4:1rem;--s-5:1.5rem;--s-6:2rem;--s-7:3rem;--s-8:4rem;--s-9:6rem;--s-10:8rem;--r-0:0;--r-1:2px;--r-2:4px;--r-dot:50%;--z-base:0;--z-sticky:10;--z-popover:20;--z-construct:50;--z-skip:100;--glyph-stroke:1.25px}@media (width<=69.99rem){:root{--gutter-w:0rem;--gap-1:0rem;--gap-2:0rem;--margin-w:0rem}}:root{--ease-out:cubic-bezier(.2, .8, .2, 1);--ease-in-out:cubic-bezier(.65, 0, .35, 1);--ease-expo:cubic-bezier(.16, 1, .3, 1);--ease-exit:cubic-bezier(.4, 0, 1, 1);--spring-settle:linear(0, .0056 1.3%, .0251 2.8%, .0944 5.8%, .5035 18%, .6844 24.5%, .8104 30.8%, .9024 37.8%, .9367 41.8%, .9636 46.3%, .9826 51.2%, .9946 56.8%, 1.0035 70%, 1);--spring-settle-dur:.449s;--spring-detent:linear(0, .0078 1.3%, .0293 2.5%, .1124 5.3%, .5917 16%, .7846 21.3%, .918 26.5%, .9654 29.3%, 1.002 32.3%, 1.0355 37.3%, 1.0453 43%, 1.0028 70.5%, 1);--spring-detent-dur:.451s;--spring-soft:linear(0, .0073 1.3%, .0273 2.5%, .1051 5.3%, .5788 16.5%, .7697 22%, .902 27.5%, .9839 33.3%, 1.0219 38.8%, 1.0353 45.5%, 1.0032 74%, 1);--spring-soft-dur:.762s;--dur-press:90ms;--dur-hover:.16s;--dur-ui:.24s;--dur-figure:.4s;--dur-vt-root:.2s;--dur-vt-morph:.34s}html{background:var(--paper);color:var(--ink)}::selection{background:var(--wash);color:var(--ink)}@media (prefers-contrast:more){:root:root{--ink-2:var(--ink);--ink-3:var(--ink);--rule:var(--rule-strong)}}}@layer base{:root{--icon-arrow-up-right:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4.5 11.5l7-7M6 4.5h5.5V10'/%3E%3C/svg%3E");--icon-return:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12.5 3.5V8a1 1 0 0 1-1 1H4M6.5 6.5 4 9l2.5 2.5'/%3E%3C/svg%3E")}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;font-kerning:normal;text-rendering:optimizelegibility;font-synthesis-weight:none;scrollbar-gutter:stable;scrollbar-color:var(--rule-strong) transparent;-webkit-tap-highlight-color:transparent}@media (prefers-reduced-motion:no-preference){html[data-smooth]{scroll-behavior:smooth}}:root[data-theme=dark]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}}body{min-height:100vh;font:var(--fw-body) var(--fs-body)/var(--lh-body) var(--f-text);color:var(--ink);background:var(--paper);overflow-wrap:break-word;margin:0;position:relative}h1,h2,h3,h4,p,ul,ol,dl,dd,figure,blockquote,pre,table{margin:0}h1,h2,h3,h4{font-size:inherit;font-weight:600;line-height:inherit}ul,ol{padding:0}img,video,canvas{max-width:100%;height:auto;display:block}svg{flex:none}table{border-collapse:collapse}fieldset{min-width:0}button,input,select,textarea{font:inherit;font-weight:inherit;color:inherit;letter-spacing:inherit}button{cursor:pointer}hr{border:0;border-top:1px solid var(--rule);margin:0}b,strong{font-weight:600}em,i{font-style:italic}small{font-size:var(--fs-meta)}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sup{top:-.5em}sub{top:.25em}time{font-variant-numeric:inherit}summary{cursor:pointer}[hidden]{display:none!important}h1,h2,.t-statement,.t-lead,.caption{text-wrap:balance}p,li,dd{text-wrap:pretty}.hang{text-indent:-.42em}@supports (hanging-punctuation:first){.hang{text-indent:0}}.sep-list{--sep:1.25em;clip-path:inset(-.5rem -.5rem -.5rem calc(var(--sep) - 4px));flex-wrap:wrap;margin-inline-start:calc(-1 * var(--sep));display:flex}.sep-list>*{white-space:nowrap}.sep-list>:first-child{margin-inline-start:var(--sep)}.sep-list>*+:before{content:"·";content:"·" / "";width:var(--sep);text-align:center;color:var(--ink-3);display:inline-block}.mono{font-family:var(--f-mono);font-variation-settings:"MONO" 1;font-weight:400}.ui{font-family:var(--f-ui);font-variation-settings:"MONO" 0;font-weight:450}:where(span.mono,span.ui,time.mono,:not(pre)>code,kbd){line-height:1}.t-name,.t-statement,.t-h1,.t-page,.t-lead,.t-body{font-family:var(--f-text);font-variation-settings:normal}.t-name{font-size:var(--fs-name);line-height:var(--lh-name);font-weight:var(--fw-name);letter-spacing:var(--tr-name)}.t-statement{font-size:var(--fs-statement);line-height:var(--lh-statement);font-weight:var(--fw-statement);letter-spacing:var(--tr-statement)}.t-h1{font-size:var(--fs-h1);line-height:var(--lh-h1);font-weight:var(--fw-h1);letter-spacing:var(--tr-h1)}.t-page{font-size:var(--fs-page);line-height:var(--lh-page);font-weight:var(--fw-page);letter-spacing:var(--tr-page)}.t-lead{font-size:var(--fs-lead);line-height:var(--lh-lead);font-weight:var(--fw-lead);letter-spacing:var(--tr-lead);color:var(--ink-2)}.t-body{font-size:var(--fs-body);line-height:var(--lh-body);font-weight:var(--fw-body)}a{color:inherit;text-decoration-line:underline;-webkit-text-decoration-color:var(--signal);text-decoration-color:var(--signal);text-underline-offset:.22em;-webkit-text-decoration-skip-ink:auto;text-decoration-skip-ink:auto;transition:color var(--dur-hover) var(--ease-out);text-decoration-thickness:1px}@media (prefers-reduced-motion:no-preference){a{transition:color var(--dur-hover) var(--ease-out), text-underline-offset var(--dur-hover) var(--ease-out)}}@media (hover:hover){a:hover{color:var(--signal-hi);text-underline-offset:.16em;text-decoration-thickness:2px}}a:active{color:var(--signal-hi)}a[href^=http]:not([href^="https://sammyjoyce.com"]):not(.stretch):not(:has(.icon)):after{content:"";vertical-align:-.02em;background:var(--ink-3);width:.7em;height:.7em;-webkit-mask:var(--icon-arrow-up-right) center / contain no-repeat;-webkit-mask:var(--icon-arrow-up-right) center / contain no-repeat;mask:var(--icon-arrow-up-right) center / contain no-repeat;margin-inline-start:.12em;display:inline-block}.icon{vertical-align:-.125em;display:inline-block}:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:var(--r-1)}main[tabindex="-1"]:focus,:is(h1,h2,h3,h4)[tabindex="-1"]:focus{outline:none}.vh{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;position:absolute!important}.skip{top:max(var(--s-2), env(safe-area-inset-top));left:max(var(--s-2), env(safe-area-inset-left));z-index:var(--z-skip);padding:var(--s-2) var(--s-3);font:500 var(--fs-ui)/var(--lh-ui) var(--f-ui);font-variation-settings:"MONO" 0;color:var(--ink);background:var(--sheet);border-radius:var(--r-2);outline:2px solid var(--focus);outline-offset:0;text-decoration:none;position:fixed}.skip:not(:focus){clip-path:inset(50%);white-space:nowrap;outline:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}html:not([data-js]) [data-needs-js]{display:none!important}@media (forced-colors:active){:focus-visible{outline-color:highlight}a[href^=http]:not([href^="https://sammyjoyce.com"]):not(.stretch):not(:has(.icon)):after{forced-color-adjust:none;background:linktext}}}@layer layout{.page{grid-template-columns:var(--page-cols);align-content:start;padding-top:5.5rem;display:grid}.page>*{grid-column:main;min-width:0}.page>.span-wide{grid-column:main-start/margin-end}.page>.span-frame{grid-column:gutter-start/margin-end}@media (width>=70rem){.subgrid{grid-template-columns:subgrid;display:grid}}.rh{grid-template-columns:var(--page-cols);view-transition-name:site-header;display:grid}.rh-bar{grid-column:gutter-start/margin-end;grid-template-columns:subgrid;align-items:center;padding:1.75rem 0 .75rem;display:grid}.rh-name,.rh-nav a{font:600 var(--fs-ui)/var(--lh-ui) var(--f-ui);font-variation-settings:"MONO" 0;text-underline-offset:6px;padding-block:.75rem;text-decoration-line:none}.rh-name{color:var(--ink);grid-column:gutter;justify-self:end}.rh-nav{grid-column:main;justify-self:start;gap:1.5rem;display:flex}.rh-nav a{color:var(--ink-2);font-weight:500}@media (hover:hover){.rh-name:hover,.rh-nav a:hover{color:var(--ink);text-underline-offset:6px;text-decoration-line:underline;text-decoration-thickness:1px}}html[data-section=writing] .rh-nav a[data-section=writing],html[data-section=lab] .rh-nav a[data-section=lab],html[data-section=projects] .rh-nav a[data-section=projects]{color:var(--ink);text-underline-offset:6px;text-decoration-line:underline;text-decoration-thickness:2px}@media (pointer:coarse){.rh-nav a{text-align:center;min-inline-size:2.75rem}}html[data-section=home] .rh-name{display:none}.rh-tools{justify-self:end;align-items:center;gap:var(--s-2);grid-column:margin;display:flex}.rh-ruler{border-top:1px solid var(--rule);grid-column:gutter-start/margin-end;height:6px;position:relative}.rh-ruler:after{content:"";background:repeating-linear-gradient(90deg, var(--rule-strong) 0 1px, transparent 1px 8px);opacity:.3;height:5px;position:absolute;inset:0 0 auto;-webkit-mask:linear-gradient(90deg,#0000,#000 10% 90%,#0000);mask:linear-gradient(90deg,#0000,#000 10% 90%,#0000)}@media (width<=69.99rem){.rh-bar{flex-wrap:wrap;align-items:center;column-gap:1.5rem;display:flex}.rh-tools{margin-inline-start:auto}}@media (width<=47.49rem){.rh-bar{column-gap:1.125rem;padding:1rem 0 .625rem}.rh-name{order:0}.rh-tools{order:1}.rh-nav{flex-basis:100%;order:2;gap:1.125rem}html[data-section=home] .rh-bar{flex-wrap:wrap-reverse}html[data-section=home] .rh-nav{flex-basis:auto;order:0}html[data-section=home] .rh-tools{min-height:2.75rem}}.ft{grid-template-columns:var(--page-cols);margin-top:var(--s-10);display:grid}.ft-in{grid-column:gutter-start/margin-end;grid-template-columns:subgrid;border-top:1px solid var(--rule);padding:var(--s-5) 0 var(--s-7);font:450 var(--fs-meta)/var(--lh-meta) var(--f-ui);font-variation-settings:"MONO" 0;color:var(--ink-3);align-items:start;display:grid}.ft p,.ft ul{margin:0}.ft a{color:var(--ink-2)}.ft a .icon{vertical-align:-.0625rem;color:var(--ink-3);margin-inline-start:.125rem}.ft-main{gap:var(--s-3);grid-column:main;grid-template-columns:minmax(0,1fr);display:grid}.ft-group{grid-template-columns:minmax(0,1fr);display:grid}.ft .ft-links{--sep:1.25em;margin-inline-start:calc(-1 * var(--sep));list-style:none}.ft-side{justify-items:end;gap:var(--s-3);text-align:end;grid-column:margin;display:grid}.ft-build{white-space:nowrap}@media (width<=69.99rem){.ft-in{gap:var(--s-5);flex-direction:column;display:flex}.ft-main{gap:var(--s-5)}.ft-side{text-align:start;justify-items:start}}@media (width<=47.49rem){.page{padding-top:var(--s-7)}.ft{margin-top:var(--s-9)}}}@layer components{.sheet{background:var(--sheet);border:1px solid var(--rule);border-radius:var(--r-0);margin:0;position:relative}.sheet:not([data-marks=off]):before,.sheet:not([data-marks=off]):after{content:"";pointer-events:none;background:linear-gradient(var(--rule-strong), var(--rule-strong)) center / 1px 100% no-repeat, linear-gradient(var(--rule-strong), var(--rule-strong)) center / 100% 1px no-repeat;width:11px;height:11px;position:absolute}.sheet:before{top:-6px;left:-6px}.sheet:after{bottom:-6px;right:-6px}.sheet-head{align-items:center;gap:var(--s-1) var(--s-4);min-height:3rem;padding:var(--s-2) var(--s-2) var(--s-2) var(--s-4);border-bottom:1px solid var(--rule);flex-wrap:wrap;display:flex}.sheet-label{font-size:var(--fs-meta);line-height:var(--lh-meta);color:var(--ink-3);flex:auto;margin:0}.sheet-n{color:var(--ink);font-weight:600}.sheet-params{font-size:var(--fs-meta);line-height:var(--lh-meta);color:var(--ink-2);text-align:end;white-space:nowrap;flex-grow:1}.sheet-head:not(:has(.sheet-tools)){padding-inline-end:var(--s-4)}.sheet-tools{align-items:center;gap:var(--s-1);flex-wrap:wrap;margin-inline-start:auto;display:flex}.sheet-stage{position:relative}.sheet-grid{background:radial-gradient(var(--grid) 1px, transparent 1.2px) 0 0 / 16px 16px}.sheet-foot{padding:var(--s-3) var(--s-4);border-top:1px solid var(--rule);font:450 var(--fs-meta)/var(--lh-meta) var(--f-ui);font-variation-settings:"MONO" 0;color:var(--ink-3)}.sheet :focus-visible{outline-offset:1px}.sheet:target{background-color:var(--wash)}@media (prefers-reduced-motion:no-preference){.sheet:target{background-color:var(--sheet);animation:sheet-target 1.2s var(--ease-out)}}@keyframes sheet-target{0%{background-color:var(--wash)}}@media (width<=47.49rem){.sheet{margin-inline:calc(-1 * var(--side));border-inline:0}[data-island]>.sheet{margin-inline:0}.sheet:before,.sheet:after{display:none}.sheet-head{padding-inline:var(--side) calc(var(--side) - var(--s-2))}.sheet-head:not(:has(.sheet-tools)){padding-inline-end:var(--side)}.sheet-foot{padding-inline:var(--side)}}@media (forced-colors:active){.sheet{border-color:canvastext}.sheet-grid{background:0 0}.sheet:before,.sheet:after{display:none}}.theme-toggle,[data-construct-toggle]{min-height:1.75rem;font:500 var(--fs-meta)/1.25rem var(--f-ui);font-variation-settings:"MONO" 0;color:var(--ink);border:1px solid var(--rule-strong);border-radius:var(--r-2);white-space:nowrap;transition:background-color var(--dur-hover) var(--ease-out), border-color var(--dur-hover) var(--ease-out), color var(--dur-hover) var(--ease-out);background:0 0;align-items:center;gap:.375rem;padding:0 .5rem;display:inline-flex}@media (hover:hover){.theme-toggle:hover,[data-construct-toggle]:hover{background:var(--inset)}}@media (prefers-reduced-motion:no-preference){.theme-toggle,[data-construct-toggle]{transition:background-color var(--dur-hover) var(--ease-out), border-color var(--dur-hover) var(--ease-out), color var(--dur-hover) var(--ease-out), transform var(--dur-press) var(--ease-out)}.theme-toggle:active,[data-construct-toggle]:active{transform:translateY(1px)}}@media (pointer:coarse){.theme-toggle,[data-construct-toggle]{min-height:2.75rem;padding-inline:.75rem}}.theme-toggle{padding-inline-start:.4375rem}.theme-toggle .icon{color:var(--ink-2)}.tt-labels{font-family:var(--f-mono);font-variation-settings:"MONO" 1;justify-items:center;font-weight:500;display:inline-grid}.tt-labels>span{visibility:hidden;grid-area:1/1}html:not([data-theme-pref]) .tt-labels>[data-label=system],html[data-theme-pref=system] .tt-labels>[data-label=system],html[data-theme-pref=light] .tt-labels>[data-label=light],html[data-theme-pref=dark] .tt-labels>[data-label=dark]{visibility:visible}[data-construct-toggle][aria-pressed=true]{color:var(--signal-hi);background:var(--wash);border-color:var(--signal)}.inline-toggle{vertical-align:baseline;margin-inline:.125rem}html:not([data-construct]) .rh-tools [data-construct-toggle]:not(:focus-visible){display:none}@media (forced-colors:active){.theme-toggle,[data-construct-toggle]{border-color:buttontext}[data-construct-toggle][aria-pressed=true]{border-width:2px;border-color:highlight}}.row{isolation:isolate;padding:var(--s-4) .75rem;border-radius:var(--r-2);margin-inline:-.75rem;position:relative}.row:before{content:"";z-index:-1;border-radius:inherit;transition:background-color var(--dur-hover) var(--ease-out);position:absolute;inset:0}.row+.row:after{content:"";border-top:1px solid var(--rule);position:absolute;top:0;left:.75rem;right:.75rem}@media (hover:hover){.row:hover:before{background:var(--inset)}.row:hover .row-title a{text-decoration-line:underline}}.row:has(.stretch:focus-visible){outline:2px solid var(--focus);outline-offset:0}.row:has(.stretch:focus-visible):before{background:var(--inset)}@supports selector(:has(*)){.row .stretch:focus-visible{outline:none}}.row p{margin:0}.row-no,.row-meta{font-size:var(--fs-meta);line-height:var(--lh-meta);color:var(--ink-3)}.row-no>span:first-child{display:inline-block}.row-label{font-size:var(--fs-meta);line-height:var(--lh-meta);color:var(--ink-2);display:block}.row-title{font:var(--fw-row) var(--fs-row)/var(--lh-row) var(--f-text);margin:0}.row-title a{color:var(--ink);text-decoration-line:none}.stretch:after{content:"";position:absolute;inset:0}.row-dek{font:var(--fw-row-dek) var(--fs-row-dek)/var(--lh-row-dek) var(--f-text);color:var(--ink-2)}@media (width>=70rem){.row{grid-template-columns:subgrid;align-items:baseline;display:grid}.row+.row:after{grid-column:main-start/margin-end;left:0;right:0}.row-no{text-align:end;grid-column:gutter}.row-main{grid-column:main}.row-meta{clip-path:none;text-align:end;grid-column:margin;margin-inline-start:0;display:block}.row-meta>*{margin-inline-start:0;display:block}.row-meta>:before{content:none}}@media (width<=69.99rem){.row{grid-template-columns:auto minmax(0,1fr);align-items:baseline;padding-block:.875rem;display:grid}.row-no{white-space:nowrap;grid-area:1/1;display:flex}.row-no:before{content:"·";content:"·" / "";order:1;padding-inline:1ch}.row-label{order:-1}.row-label:after{content:"·";content:"·" / "";color:var(--ink-3);padding-inline:.5em}.row .row-meta{--sep:3ch;grid-area:1/2;margin-inline-start:calc(-1 * var(--sep))}.row-figs{display:none}.row-main{grid-area:2/1/3/-1;margin-top:.125rem}}.entry{min-width:0}.entry-meta{font-size:var(--fs-meta);line-height:var(--lh-meta);color:var(--ink-3);margin:0}.em-no{color:var(--ink-2)}.em-js{margin-top:var(--s-2);line-height:var(--lh-meta);color:var(--ink-3)}.em-js>span{display:block}.em-js .icon{vertical-align:-.0625rem;color:var(--ink-2);margin-inline-end:.375rem}.em-js-none .icon{color:var(--ink-3)}.em-legend{margin-top:var(--s-1)}.em-legend a{color:var(--ink-2)}.entry-head{margin-bottom:var(--s-7)}.entry-head .t-h1{margin:0}.entry-dek{margin:var(--s-4) 0 0}.entry-hair{width:4rem;height:1px;margin-top:var(--s-5);background:var(--signal)}.entry-main{min-width:0}.entry-main>.prose+*{margin-top:var(--s-7)}.entry-end{row-gap:var(--s-7);margin-top:var(--s-8);display:grid}.entry-end>.entry-pub{font:450 var(--fs-meta)/var(--lh-meta) var(--f-ui);font-variation-settings:"MONO" 0;color:var(--ink-3);margin:0}.entry-pub .ui{color:var(--ink-2)}.entry-related .repo-mention{padding-block:var(--s-4)}.entry-related .repo-mention+.repo-mention{border-top:1px solid var(--rule)}@media (width>=70rem){.entry{grid-column:gutter-start/margin-end;grid-template-columns:subgrid;display:grid}.entry>*{grid-column:main}.entry-aside{top:var(--s-6);text-align:end;grid-area:1/gutter;align-self:baseline;position:sticky}.entry-meta{clip-path:none;margin-inline-start:0;display:block}.entry-meta>span{white-space:normal;margin-inline-start:0;display:block}.entry-meta>span:before{content:none}.entry-main{grid-area:1/main;align-self:baseline}.entry-end{grid-column:gutter-start/margin-end;grid-template-columns:subgrid}.entry-end>*{grid-column:main}.entry-end>.ledger{grid-column:gutter-start/margin-end}}@media (width<=69.99rem){.entry-aside{margin-bottom:var(--s-3)}.entry-meta{--sep:3ch;margin-inline-start:calc(-1 * var(--sep))}.entry-meta>.em-js{display:none}.entry-head{margin-bottom:var(--s-6)}.entry-end{row-gap:var(--s-6);margin-top:var(--s-7)}}.ledger{min-width:0}.ledger-head{align-items:center;gap:var(--s-3);display:flex}.ledger-head:after{content:"";border-top:1px solid var(--rule);flex:1}.ledger-label{font:450 var(--fs-meta)/var(--lh-meta) var(--f-ui);font-variation-settings:"MONO" 0;color:var(--ink-3);margin:0}.ledger-more{padding-top:var(--s-4);font:500 var(--fs-ui)/var(--lh-ui) var(--f-ui);font-variation-settings:"MONO" 0;margin:0}.ledger-more a{color:var(--ink)}.ledger-more .icon{vertical-align:-.0625rem;color:var(--ink-2);margin-inline-start:.375rem}@media (width>=70rem){.ledger{grid-column:gutter-start/margin-end;grid-template-columns:subgrid;align-content:start;display:grid}.ledger>*{grid-column:main}.ledger>:is(.ledger-head,.row){grid-column:gutter-start/margin-end}.ledger-head{grid-template-columns:subgrid;gap:0;display:grid}.ledger-label{text-align:end;grid-column:gutter}.ledger-head:after{grid-column:main-start/margin-end}}.poster{aspect-ratio:3/2;color:var(--ink-2);background:var(--sheet) radial-gradient(var(--grid) 1px, transparent 1.2px) 0 0 / 16px 16px;place-items:center;display:grid;position:relative;overflow:hidden}.poster>svg{width:100%;height:100%}.poster .p-accent{transition:stroke var(--dur-hover) var(--ease-out), fill var(--dur-hover) var(--ease-out), color var(--dur-hover) var(--ease-out)}:is(:hover,:focus-within)>.poster .p-accent,.card:is(:hover,:focus-within) .poster .p-accent{color:var(--signal);stroke:var(--signal)}@media (forced-colors:active){.poster{background:canvas}}.repo-mention>p{margin:0}.rm-head{font-size:var(--fs-meta);line-height:var(--lh-meta);color:var(--ink-3);flex-wrap:wrap;align-items:baseline;gap:.25rem .625rem;display:flex}.rm-head>.ui:first-child{margin-inline-end:-.375rem}.rm-name{font-size:var(--fs-ui);color:var(--ink);font-weight:500}.rm-lang{font-size:var(--fs-micro);color:var(--ink-3)}.rm-link{color:var(--ink-2);margin-inline-start:auto;font-weight:500}.rm-link .icon{vertical-align:-.0625rem;color:var(--ink-3);margin-inline-start:.125rem}.rm-sum{font:400 var(--fs-row-dek)/var(--lh-row-dek) var(--f-text);color:var(--ink-2);margin-top:.375rem!important}.rm-sketch{font:400 var(--fs-row-dek)/var(--lh-row-dek) var(--f-text);color:var(--ink-2);margin-top:.5rem!important}.rm-sketch .mono{font-size:.92em}.rail{margin-top:var(--s-6);position:relative}.rail-head{margin:0 1rem var(--s-2) 0;font-size:var(--fs-meta);line-height:var(--lh-meta);color:var(--ink-3)}.rail ol{margin:0;padding:0;list-style:none}.rail a{font:450 var(--fs-meta)/var(--lh-meta) var(--f-ui);font-variation-settings:"MONO" 0;color:var(--ink-2);text-wrap:balance;justify-content:flex-end;align-items:flex-start;gap:.625rem;padding-block:.125rem;text-decoration:none;display:flex}.rail-text{min-width:0}@media (hover:hover){.rail a:hover{color:var(--ink)}.rail a:hover .rail-text{text-decoration-line:underline;-webkit-text-decoration-color:var(--signal);text-decoration-color:var(--signal);text-underline-offset:.22em;text-decoration-thickness:1px}}.tick{z-index:1;background:var(--paper);border:1px solid var(--rule-strong);flex:none;width:6px;height:6px;margin-top:7px;position:relative}.rail-line{right:2.5px;top:calc(var(--lh-meta) + var(--s-2) + .125rem + 10px);background:var(--rule);width:1px;position:absolute;bottom:calc(.125rem + 10px)}.rail-line:after{content:"";background:var(--ink-3);transform-origin:top;position:absolute;inset:0;transform:scaleY(0)}@supports (animation-timeline:view()){@media (prefers-reduced-motion:no-preference){.rail-line:after{animation:linear both rail-fill;animation-timeline:scroll(root)}.rail a[data-s]{animation:linear both rail-lit;animation-range:cover}.rail a[data-s] .tick{animation:linear both rail-tick;animation-range:cover}}}@supports not (animation-timeline:view()){.rail-line:after{display:none}}@keyframes rail-fill{0%{transform:scaleY(0)}to{transform:scaleY(1)}}@keyframes rail-lit{0%,to{color:var(--ink-2)}1%,99%{color:var(--ink)}}@keyframes rail-tick{0%,to{background:var(--paper);border-color:var(--rule-strong)}1%,99%{background:var(--ink);border-color:var(--ink)}}@media (prefers-reduced-motion:reduce){.rail-line:after{display:none}}.toc{margin-top:var(--s-5);border-block:1px solid var(--rule);display:none}.toc summary{min-height:2.75rem;font:500 var(--fs-ui)/var(--lh-ui) var(--f-ui);font-variation-settings:"MONO" 0;color:var(--ink);align-items:center;gap:.5rem;list-style:none;display:flex}.toc summary::-webkit-details-marker{display:none}.toc summary .icon{color:var(--ink-2);rotate:-90deg}.toc[open] summary .icon{rotate:0deg}.toc ol{padding:0 0 var(--s-3);margin:0;list-style:none}.toc a{font:450 var(--fs-ui)/var(--lh-ui) var(--f-ui);font-variation-settings:"MONO" 0;color:var(--ink-2);padding-block:.375rem;text-decoration:none;display:block}@media (pointer:coarse){.toc a{padding-block:.75rem}}@media (width<=69.99rem){.rail{display:none}.toc{display:block}}@media (forced-colors:active){.tick{forced-color-adjust:none;background:canvas;border-color:canvastext}}.spec{margin:0}.spec-row{align-items:baseline;column-gap:var(--s-4);border-top:1px solid var(--rule);grid-template-columns:7rem minmax(0,1fr);padding-block:.625rem;display:grid}.ledger-head+:is(.spec,.spec-group) .spec-row:first-child{border-top:0}.spec dt{font-size:var(--fs-meta);line-height:var(--lh-meta);color:var(--ink-3)}.spec dd{font:400 1rem/1.5rem var(--f-text);color:var(--ink);margin:0}@media (width<=47.49rem){.spec-row{grid-template-columns:minmax(0,1fr);row-gap:.125rem}}.pw summary{color:var(--ink-3);align-items:baseline;gap:.375rem;list-style:none;display:flex}.pw summary::-webkit-details-marker{display:none}.pw summary .icon{color:var(--ink-3);align-self:flex-start;margin-top:.25rem;rotate:-90deg}.pw[open] summary .icon{rotate:0deg}@media (hover:hover){.pw summary:hover{color:var(--ink-2)}}[data-w-total],[data-w-js]{font-family:var(--f-mono);font-variation-settings:"MONO" 1;color:var(--ink-2);font-weight:400;display:inline-block}[data-w-total]{min-width:9ch}.pw-nb{white-space:nowrap}.ft:has(.ft-decl:not([data-islands="0"])) [data-w-js]{min-width:7ch}@media (width>=70rem){.pw summary{white-space:nowrap}}.pw-body{padding:var(--s-3) 0 0 1.125rem}.pw-table{table-layout:fixed;width:100%;font:400 var(--fs-micro)/var(--lh-micro) var(--f-mono);font-variation-settings:"MONO" 1}.pw-table th:nth-child(2){width:5.75rem}.pw-table th:last-child{width:4.25rem}.pw-table th{padding:0 var(--s-3) .375rem 0;font:500 var(--fs-micro)/var(--lh-micro) var(--f-ui);font-variation-settings:"MONO" 0;color:var(--ink-3);text-align:start;border-bottom:1px solid var(--rule)}.pw-table td{padding:.3125rem var(--s-3) .3125rem 0;color:var(--ink-2);border-bottom:1px solid var(--rule);vertical-align:baseline}.pw-table td:first-child{overflow-wrap:break-word}.pw-table :is(th,td):last-child{text-align:end;white-space:nowrap;padding-inline-end:0}.pw-table td:nth-child(2){white-space:nowrap;color:var(--ink-3)}.pw-note{margin:var(--s-2) 0 0;max-width:32rem;color:var(--ink-3)}.fig .fig-stage{min-height:var(--stage-d,auto);overflow-anchor:none}@media (width<=47.49rem){.fig .fig-stage{min-height:var(--stage-m,var(--stage-d,auto))}}.fig-row{align-items:flex-end;gap:var(--s-3) var(--s-5);padding:var(--s-3) var(--s-4);border-top:1px solid var(--rule);flex-wrap:wrap;display:flex}.fig-transport{align-items:center}.fig-readout{padding-block:.625rem}.describe{border-top:1px solid var(--rule)}.describe summary{min-height:2.5rem;padding:0 var(--s-4);font:500 var(--fs-meta)/var(--lh-meta) var(--f-ui);font-variation-settings:"MONO" 0;color:var(--ink-2);align-items:center;gap:.375rem;list-style:none;display:flex}.describe summary::-webkit-details-marker{display:none}.describe summary .icon{color:var(--ink-3);rotate:-90deg}.describe[open] summary .icon{rotate:0deg}@media (hover:hover){.describe summary:hover{color:var(--ink)}}.describe-body{padding:0 var(--s-4) var(--s-4) 2.125rem;font:400 var(--fs-row-dek)/var(--lh-row-dek) var(--f-text);color:var(--ink-2)}.describe-body>*+*{margin-top:.5rem}.fig-tools{display:contents}html:not([data-js]) .sheet-head:has(>.sheet-tools>.fig-tools:only-child){padding-inline-end:var(--s-4)}@media (width<=47.49rem){html:not([data-js]) .sheet-head:has(>.sheet-tools>.fig-tools:only-child){padding-inline-end:var(--side)}}.sheet-tools .btn[data-kind=quiet]{min-height:2rem}@media (width<=47.49rem){.fig-row,.describe summary,.describe-body{padding-inline:var(--side)}}.btn{min-height:2rem;font:500 var(--fs-ui)/var(--lh-ui) var(--f-ui);font-variation-settings:"MONO" 0;color:var(--ink);background:var(--sheet);border:1px solid var(--rule-strong);border-radius:var(--r-2);white-space:nowrap;-webkit-user-select:none;user-select:none;transition:background-color var(--dur-hover) var(--ease-out), border-color var(--dur-hover) var(--ease-out), color var(--dur-hover) var(--ease-out);justify-content:center;align-items:center;gap:.375rem;padding:0 .75rem;display:inline-flex;position:relative}.btn .icon{color:var(--ink-2);flex:none}.btn-icon{width:2rem;padding:0}@media (hover:hover){.btn:hover:not([aria-disabled=true]){background:var(--inset)}.btn:hover:not([aria-disabled=true]) .icon{color:var(--ink)}}.btn[aria-pressed=true]{color:var(--signal-hi);background:var(--wash);border-color:var(--signal)}.btn[aria-pressed=true] .icon{color:var(--signal-hi)}.btn[aria-disabled=true]{color:var(--ink-3);cursor:not-allowed;background:0 0;border-style:dotted}.btn[aria-disabled=true] .icon{color:var(--ink-3)}.btn[data-kind=quiet]{color:var(--ink-2);background:0 0;border-color:#0000;padding-inline:.5rem}.btn[data-kind=quiet].btn-icon{padding:0}.btn[data-kind=quiet][aria-pressed=true]{color:var(--signal-hi);background:var(--wash);border-color:var(--signal)}@media (hover:hover){.btn[data-kind=quiet]:hover:not([aria-disabled=true]){color:var(--ink)}}@media (prefers-reduced-motion:no-preference){.btn{transition:background-color var(--dur-hover) var(--ease-out), border-color var(--dur-hover) var(--ease-out), color var(--dur-hover) var(--ease-out), transform var(--dur-press) var(--ease-out)}.btn:active:not([aria-disabled=true]){transform:translateY(1px)}}.seg{border:0;margin:0;padding:0}.seg-track{--i:0;isolation:isolate;background:var(--sheet);border:1px solid var(--rule-strong);border-radius:var(--r-2);grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;display:inline-grid;position:relative}.seg-track:before{content:"";z-index:-1;width:calc(100% / var(--n,2));background:var(--wash);border-radius:calc(var(--r-2) - 1px);box-shadow:0 0 0 1px var(--signal);transform:translateX(calc(var(--i) * 100%));position:absolute;inset:0 auto 0 0}.seg-track:not(:has(input:checked)):before{display:none}.seg-track:has(>:nth-child(2)>input:checked){--i:1}.seg-track:has(>:nth-child(3)>input:checked){--i:2}.seg-track:has(>:nth-child(4)>input:checked){--i:3}.seg-track:has(>:nth-child(5)>input:checked){--i:4}.seg-track:has(>:nth-child(6)>input:checked){--i:5}.seg-track:has(>:nth-child(7)>input:checked){--i:6}.seg-track:has(>:nth-child(8)>input:checked){--i:7}@media (prefers-reduced-motion:no-preference){.seg-track:before{transition:transform var(--spring-detent-dur) var(--spring-detent)}}.seg-opt{min-height:1.875rem;font:500 var(--fs-ui)/var(--lh-ui) var(--f-ui);font-variation-settings:"MONO" 0;color:var(--ink-2);white-space:nowrap;cursor:pointer;border-radius:calc(var(--r-2) - 1px);transition:color var(--dur-hover) var(--ease-out);justify-content:center;align-items:center;padding:0 .75rem;display:flex;position:relative}.seg-opt input{z-index:1;opacity:0;width:100%;height:100%;cursor:inherit;margin:0;position:absolute;inset:0}.seg-opt:has(input:checked){color:var(--signal-hi)}@media (hover:hover){.seg-opt:hover:not(:has(input:checked,input:disabled)){color:var(--ink);background:var(--inset)}}.seg-opt:has(input:focus-visible){outline:2px solid var(--focus);outline-offset:1px}@supports not selector(:has(*)){.seg-track:before{display:none}.seg-opt{gap:.375rem}.seg-opt input{opacity:1;width:auto;height:auto;position:static}}.seg:disabled .seg-track{border-style:dotted}.seg:disabled .seg-opt{color:var(--ink-3);cursor:not-allowed}.seg:disabled .seg-track:before{background:var(--inset);box-shadow:0 0 0 1px var(--rule-strong)}.slider{align-items:baseline;column-gap:var(--s-3);flex:11rem;grid-template-columns:minmax(0,1fr) auto;row-gap:.25rem;min-width:9rem;max-width:18rem;display:grid}.slider label{font:450 var(--fs-meta)/var(--lh-meta) var(--f-ui);font-variation-settings:"MONO" 0;color:var(--ink-2)}.slider output{font-size:var(--fs-meta);line-height:var(--lh-meta);color:var(--ink);font-weight:500}.slider input[type=range]{appearance:none;cursor:pointer;background:0 0;grid-column:1/-1;width:calc(100% + .75rem);height:2.75rem;margin:-.375rem;padding-inline:.375rem}.slider-ticks input[type=range]{background:repeating-linear-gradient(90deg, var(--rule-strong) 0 1px, transparent 1px calc((100% - 1px) / var(--ticks))) 8px calc(50% + 6px) / calc(100% - 15px) 4px no-repeat}.slider input[type=range]::-webkit-slider-runnable-track{background:var(--rule-strong);border-radius:0;height:2px}.slider input[type=range]::-moz-range-track{background:var(--rule-strong);border-radius:0;height:2px}.slider input[type=range]::-webkit-slider-thumb{appearance:none;background:var(--sheet);border:2px solid var(--ink);border-radius:var(--r-dot);width:16px;height:16px;transition:border-color var(--dur-hover) var(--ease-out);margin-top:-7px}.slider input[type=range]::-moz-range-thumb{box-sizing:border-box;background:var(--sheet);border:2px solid var(--ink);border-radius:var(--r-dot);width:16px;height:16px}.slider input[type=range]:active::-webkit-slider-thumb{border-color:var(--signal);background:var(--wash)}.slider input[type=range]:active::-moz-range-thumb{border-color:var(--signal);background:var(--wash)}.slider input[type=range]:focus-visible{outline-offset:-.25rem;border-radius:var(--r-2)}.slider input[type=range]:focus-visible::-webkit-slider-thumb{border-color:var(--signal)}.slider input[type=range]:focus-visible::-moz-range-thumb{border-color:var(--signal)}.nf{gap:.25rem;display:grid}.nf label{font:450 var(--fs-meta)/var(--lh-meta) var(--f-ui);font-variation-settings:"MONO" 0;color:var(--ink-2)}.nf input{width:8ch;min-width:5rem;min-height:2rem;font-size:var(--fs-meta);line-height:var(--lh-meta);color:var(--ink);background:var(--inset);border:1px solid var(--rule-strong);border-radius:var(--r-2);font-variant-numeric:tabular-nums;padding:0 .5rem}.nf input:focus-visible{outline-offset:1px;border-color:var(--signal)}.transport{align-items:center;gap:var(--s-2);flex-wrap:wrap;display:flex}.transport-speed .seg-opt{padding-inline:.5rem}.readout{gap:.25rem var(--s-5);flex-wrap:wrap;margin:0;display:flex}.ro-item{align-items:baseline;gap:.5rem;display:flex}.readout dt{font:450 var(--fs-meta)/var(--lh-meta) var(--f-ui);font-variation-settings:"MONO" 0;color:var(--ink-3)}.readout dd{font-size:var(--fs-meta);line-height:var(--lh-meta);color:var(--ink);white-space:nowrap;margin:0;font-weight:600}.readout dd .icon{vertical-align:-.0625rem;margin-inline-end:.25rem}.ro-item[data-tone=a] dd{color:var(--fig-a)}.ro-item[data-tone=b] dd{color:var(--fig-b)}.ro-item[data-tone=miss] dd{color:var(--fig-miss)}.ro-item[data-tone=current] dd{color:var(--fig-current)}@media (pointer:coarse){.btn,.nf input{min-height:2.75rem}.btn{min-width:2.75rem}.slider input[type=range]{margin-block:0}.btn-icon{width:2.75rem}.seg-opt,.sheet-tools .btn[data-kind=quiet],.describe summary{min-height:2.75rem}.nf input{font-size:max(1rem, var(--fs-meta))}.slider input[type=range]::-webkit-slider-thumb{width:28px;height:28px;box-shadow:inset 0 0 0 2px var(--ink);background-clip:padding-box;border:6px solid #0000;margin-top:-13px}.slider input[type=range]:active::-webkit-slider-thumb{box-shadow:inset 0 0 0 2px var(--signal);border-color:#0000}.slider input[type=range]:focus-visible::-webkit-slider-thumb{box-shadow:inset 0 0 0 2px var(--signal);border-color:#0000}}@media (forced-colors:active){.btn,.seg-track,.nf input{border-color:buttontext}.btn[aria-pressed=true]{border-width:2px;border-color:highlight}.seg-track:before{forced-color-adjust:none;box-shadow:none;background:highlight}.seg-opt:has(input:checked){forced-color-adjust:none;color:highlighttext}.slider input[type=range]::-webkit-slider-runnable-track{background:canvastext}.slider-ticks{position:relative}.slider-ticks:after{content:"";pointer-events:none;forced-color-adjust:none;background:repeating-linear-gradient(90deg, CanvasText 0 1px, transparent 1px calc((100% - 1px) / var(--ticks)));height:4px;position:absolute;inset:auto 7px 6px 8px}.readout dd .icon{forced-color-adjust:auto}}}@layer prose{.prose{counter-reset:fig}.prose :is(p,li,blockquote):not(:where(.sheet,[data-island]) *){hanging-punctuation:first allow-end last}.prose :where(p,ul,ol,dl,blockquote,table,hr,details,figure,div[class*=language-],.sidenote,.wide):not(:where(.sheet,[data-island]) *){margin-block:1rem 0}.prose>div:first-child>:first-child,.prose .wide>:first-child{margin-top:0}.prose :is(h2,h3):not(:where(.sheet,[data-island]) *){font-family:var(--f-text);scroll-margin-top:var(--s-6);position:relative}.prose h2:not(:where(.sheet,[data-island]) *){font-size:var(--fs-h2);line-height:var(--lh-h2);font-weight:var(--fw-h2);letter-spacing:var(--tr-h2);margin:3.5rem 0 0}.prose h3:not(:where(.sheet,[data-island]) *){font-size:var(--fs-h3);line-height:var(--lh-h3);font-weight:var(--fw-h3);margin:2rem 0 0}.prose h2:not(:where(.sheet,[data-island]) *)+*,.prose h2+.sidenote+*{margin-top:.75rem}.prose h3:not(:where(.sheet,[data-island]) *)+*,.prose h3+.sidenote+*{margin-top:.5rem}.prose .header-anchor{color:#0000;opacity:0;transition:opacity var(--dur-hover) var(--ease-out);padding-inline-end:.625rem;text-decoration:none;position:absolute;top:0;right:100%}.prose .header-anchor:after{content:"§";color:var(--ink-3);font-size:.875rem;font-weight:400}@media (hover:hover) and (width>=70rem){.prose :is(h2,h3):hover .header-anchor{opacity:1}.prose .header-anchor:hover:after{color:var(--signal-hi)}}@media (width<=69.99rem){.prose .header-anchor{display:none}}.prose :is(ul,ol):not(:where(.sheet,[data-island]) *){padding:0;list-style:none}.prose li:not(:where(.sheet,[data-island]) *)+li{margin-top:.25rem}.prose li:not(:where(.sheet,[data-island]) *)>:first-child{margin-top:0}.prose li:not(:where(.sheet,[data-island]) *)>p:first-child{display:inline}.prose li:not(:where(.sheet,[data-island]) *)>:is(ul,ol){margin-top:.25rem;padding-inline-start:1.25rem}.prose ul:not(:where(.sheet,[data-island]) *)>li:before{content:"–";content:"–" / "";width:1.125rem;color:var(--ink-3);margin-inline-start:-1.125rem;display:inline-block}.prose ol:not(:where(.sheet,[data-island]) *){counter-reset:li}.prose ol:not(:where(.sheet,[data-island]) *)>li{counter-increment:li}.prose ol:not(:where(.sheet,[data-island]) *)>li:before{content:counter(li, decimal-leading-zero);width:2rem;font:400 var(--fs-meta)/1 var(--f-mono);font-variation-settings:"MONO" 1;color:var(--ink-3);margin-inline-start:-2rem;display:inline-block}@media (width<=47.49rem){.prose ul:not(:where(.sheet,[data-island]) *){padding-inline-start:1.125rem}.prose ol:not(:where(.sheet,[data-island]) *){padding-inline-start:2rem}}.prose blockquote:not(:where(.sheet,[data-island]) *){border-inline-start:2px solid var(--rule-strong);padding-inline-start:1em;font-style:italic}.prose blockquote:not(:where(.sheet,[data-island]) *)>*+*{margin-top:1rem}.prose hr:not(:where(.sheet,[data-island]) *){border-top-color:var(--rule);margin-block:2.5rem}.prose table:not(:where(.sheet,[data-island]) *){font-variant-numeric:tabular-nums;width:100%;margin-top:1.5rem;font-size:1rem;line-height:1.5rem}.prose table:not(:where(.sheet,[data-island]) *)+*{margin-top:1.5rem}.prose th:not(:where(.sheet,[data-island]) *){font:500 var(--fs-meta)/var(--lh-meta) var(--f-ui);font-variation-settings:"MONO" 0;color:var(--ink-3);text-align:start;white-space:nowrap;border-bottom:1px solid var(--rule-strong);padding:0 1rem .375rem 0}.prose td:not(:where(.sheet,[data-island]) *){vertical-align:baseline;border-bottom:1px solid var(--rule);padding:.375rem 1rem .375rem 0}.prose :is(th,td):not(:where(.sheet,[data-island]) *):last-child{padding-inline-end:0}@media (width<=47.49rem){.prose table:not(:where(.sheet,[data-island]) *){display:block;overflow-x:auto}.prose :is(th,td):not(:where(.sheet,[data-island]) *):last-child{width:100%}}:not(pre)>code{font-family:var(--f-mono);font-variation-settings:"MONO" 1;font-weight:400;font-size:max(var(--fs-code-inline), var(--fs-micro));background:var(--inset);border-radius:var(--r-1);overflow-wrap:anywhere;padding:.0625rem .25rem}.sidenote{font:450 var(--fs-meta)/1.1875rem var(--f-ui);font-variation-settings:"MONO" 0;color:var(--ink-2);border-inline-start:2px solid var(--rule-strong);padding-inline-start:.75rem}.sidenote-label{color:var(--ink);margin:0;font-weight:600}.sidenote-body>*+*{margin-top:.5rem}.sidenote p{margin:0}@media (width>=70rem){.sidenote{float:right;clear:right;width:var(--margin-w);margin:.3rem calc(-1 * var(--breakout)) .75rem 1rem;border-inline-start-width:1px;padding-inline-start:.625rem}.prose .sidenote{--sn-flow:1rem;margin-top:calc(var(--sn-flow) + .4375rem)}.prose h2+.sidenote{--sn-flow:.75rem}.prose h3+.sidenote{--sn-flow:.5rem}.prose>div:first-child>.sidenote:first-child{--sn-flow:0rem}.prose>div[data-island],.prose .wide{clear:both;margin-right:calc(-1 * var(--breakout))}}@media (width<=69.99rem){.sidenote{margin-block:1rem}}.prose>div[data-island]{margin-block:2.5rem .5rem}.prose>div[data-island]+div>:first-child:not(.caption,h2,h3){margin-top:2rem}.prose>div[data-island]:first-child{margin-top:0}.caption{font:450 var(--fs-meta)/1.1875rem var(--f-ui);font-variation-settings:"MONO" 0;color:var(--ink-3)}.prose .caption{counter-increment:fig;margin-top:.5rem}.prose .caption:before{content:"Fig. " counter(fig) ". ";content:"Fig. " counter(fig) ". " / "";color:var(--ink-2);font-weight:600}.prose .caption+*{margin-top:2rem}@media (width<=47.49rem){.prose>div[data-island]{margin-inline:calc(-1 * var(--side));margin-top:2rem}.prose .caption+*{margin-top:1.5rem}.prose h2{margin-top:3rem}}.prose kbd{font:500 .82em/1 var(--f-mono);font-variation-settings:"MONO" 1;background:var(--sheet);border:1px solid var(--rule-strong);border-radius:var(--r-1);white-space:nowrap;padding:.0625rem .3125rem}.prose hr.footnotes-sep{display:none}.prose .footnotes{border-top:1px solid var(--rule);font:450 var(--fs-meta)/var(--lh-meta) var(--f-ui);font-variation-settings:"MONO" 0;color:var(--ink-2);margin-top:3rem;padding-top:1rem}.prose .footnote-ref a{font:400 .75em/1 var(--f-mono);font-variation-settings:"MONO" 1;text-decoration:none}.prose .footnote-backref{text-decoration:none}.prose .footnote-backref:after{content:"";vertical-align:-.125rem;background:var(--ink-3);width:.875rem;height:.875rem;-webkit-mask:var(--icon-return) center / contain no-repeat;-webkit-mask:var(--icon-return) center / contain no-repeat;mask:var(--icon-return) center / contain no-repeat;margin-inline-start:.25rem;display:inline-block}.term:before{content:"";vertical-align:.02em;width:.6em;height:.6em;margin-inline-end:.25em;display:inline-block}.term[data-term=a]:before{background:var(--fig-a);border-radius:var(--r-dot)}.term[data-term=b]:before{background:var(--fig-b);clip-path:polygon(50% 0,100% 100%,0 100%)}.term[data-term=miss]:before{background:linear-gradient(45deg, transparent 41%, var(--fig-miss) 41% 59%, transparent 59%), linear-gradient(-45deg, transparent 41%, var(--fig-miss) 41% 59%, transparent 59%)}.term[data-term=band]:before{background:var(--fig-band);box-shadow:inset 0 0 0 1px var(--ink-3)}.term[data-term=current]:before{background:var(--fig-current);clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%)}.term{border-radius:var(--r-1);transition:background-color var(--dur-hover) var(--ease-out)}:is(.entry:has([data-part~=a]:hover) .term[data-term=a],.entry:has([data-part~=b]:hover) .term[data-term=b],.entry:has([data-part~=miss]:hover) .term[data-term=miss],.entry:has([data-part~=band]:hover) .term[data-term=band],.entry:has([data-part~=current]:hover) .term[data-term=current]){background:var(--wash)}.num,.num-out{font-family:var(--f-mono);font-variation-settings:"MONO" 1;font-size:.92em;font-weight:400;line-height:1}.num[data-live]{color:var(--ink);text-decoration-line:underline;text-decoration-style:dashed;-webkit-text-decoration-color:var(--signal);text-decoration-color:var(--signal);text-underline-offset:.28em;cursor:col-resize;-webkit-user-select:none;user-select:none;border-radius:var(--r-1);transition:color var(--dur-hover) var(--ease-out);text-decoration-thickness:1px;position:relative}.num[data-live][data-dragging]{cursor:ew-resize;color:var(--signal-hi)}.num[data-live]:focus-visible{outline-offset:1px}@media (hover:hover){.num[data-live]:hover{color:var(--signal-hi)}}@media (pointer:coarse){.num[data-live]:after{content:"";width:max(100%,2.75rem);height:2.75rem;position:absolute;top:50%;left:50%;translate:-50% -50%}}@media (forced-colors:active){.term:before{forced-color-adjust:none;background:canvastext}.num[data-live]{text-decoration-color:linktext}.prose .footnote-backref:after{forced-color-adjust:none;background:linktext}}.prose div[class*=language-]{background:var(--inset);border:1px solid var(--rule);margin-block:1.5rem 0;position:relative}.prose div[class*=language-]+:not(h2,h3){margin-top:1.5rem}.prose pre{font:var(--fw-code) var(--fs-code)/var(--lh-code) var(--f-mono);font-variation-settings:"MONO" 1;tab-size:2;scrollbar-width:thin;margin:0;padding:2.25rem 1.25rem 1rem;overflow-x:auto}.prose pre:focus-visible{outline-offset:-2px;border-radius:0}.prose pre code{min-width:max-content;font:inherit;display:grid}.prose pre .line{min-height:var(--lh-code)}.prose pre .line:last-child:empty{display:none}.prose pre .line.highlighted{background:var(--wash);margin-inline:-1.25rem;padding-inline:1.25rem}.shiki span[style*=font-weight\:bold]{font-weight:var(--fw-code-keyword)}.prose div[class*=language-]>.lang{font:400 var(--fs-micro)/var(--lh-micro) var(--f-mono);font-variation-settings:"MONO" 1;color:var(--ink-3);pointer-events:none;position:absolute;top:.625rem;left:1.25rem}.prose div[class*=language-]>.copy{z-index:1;min-height:1.5rem;font:500 var(--fs-meta)/1.375rem var(--f-ui);font-variation-settings:"MONO" 0;color:var(--ink-2);background:var(--sheet);border:1px solid var(--rule-strong);border-radius:var(--r-2);opacity:0;transition:opacity var(--dur-hover) var(--ease-out), background-color var(--dur-hover) var(--ease-out);padding:0 .5rem;position:absolute;top:.375rem;right:.375rem}.prose div[class*=language-]>.copy:before{content:"Copy";content:"Copy" / "Copy code"}.prose div[class*=language-]>.copy.copied:before{content:"Copied";content:"Copied" / "Copied"}.prose div[class*=language-]>.copy.copied{color:var(--signal-hi);border-color:var(--signal);background:var(--wash)}.prose div[class*=language-]:is(:hover,:focus-within)>.copy{opacity:1}.prose div[class*=language-]>.copy:focus-visible{transition:none}@media (hover:hover){.prose div[class*=language-]>.copy:hover{color:var(--ink);background:var(--inset)}}@media (pointer:coarse){.prose div[class*=language-]>.copy{opacity:1;min-height:2.75rem;padding:0 .875rem;top:0;right:0}.prose pre{padding-top:3rem}.prose div[class*=language-]>.lang{top:1rem}}html:not([data-js]) .prose div[class*=language-]>.copy{display:none}@media (width<=47.49rem){.prose div[class*=language-]{margin-inline:calc(-1 * var(--side));border-inline:0}.prose pre,.prose div[class*=language-]>.lang{padding-inline:var(--side)}.prose div[class*=language-]>.lang{left:0}.prose pre .line.highlighted{margin-inline:calc(-1 * var(--side));padding-inline:var(--side)}}.prose pre.shiki{background-color:#0000!important}@media screen{:root[data-theme=dark] .shiki,:root[data-theme=dark] .shiki span{color:var(--shiki-dark)!important}}@media screen and (prefers-color-scheme:dark){:root:not([data-theme=light]) .shiki,:root:not([data-theme=light]) .shiki span{color:var(--shiki-dark)!important}}@media (forced-colors:active){.prose div[class*=language-]{border-color:canvastext}}}@layer figures{:is(.entry:has(.term[data-term=a]:hover) [data-part~=a],.entry:has(.term[data-term=b]:hover) [data-part~=b],.entry:has(.term[data-term=miss]:hover) [data-part~=miss],.entry:has(.term[data-term=band]:hover) [data-part~=band],.entry:has(.term[data-term=current]:hover) [data-part~=current]){stroke-width:2.5px}.em{flex:none;width:.625rem;height:.625rem;display:block;overflow:visible}.e-stage{min-height:var(--stage-d);padding:var(--s-4) var(--s-5) var(--s-3);font:450 var(--fs-micro)/var(--lh-micro) var(--f-ui);font-variation-settings:"MONO" 0;color:var(--ink-3);flex-direction:column;display:flex}.e-stage .mono{line-height:inherit}.e-row{justify-content:space-between;align-items:baseline;gap:var(--s-1) var(--s-4);flex-wrap:wrap;display:flex}.e-key{gap:var(--s-1) var(--s-3);flex-wrap:wrap;display:flex}.e-key>span{white-space:nowrap;align-items:center;gap:.3125rem;display:inline-flex}.e-key .em{width:.5rem;height:.5rem}.e-a{color:var(--fig-a)}.e-b{color:var(--fig-b)}.e-miss{color:var(--fig-miss)}.e-cur{color:var(--fig-current)}.e-btns{gap:var(--s-2);flex-wrap:wrap;display:flex}.e-nw,.e-ro dt{white-space:nowrap}.e-axis{border-top:1px solid var(--rule-strong);height:1.125rem;color:var(--ink-3);position:relative}.e-axis>span{font-size:var(--fs-micro);white-space:nowrap;line-height:1;position:absolute;top:.3125rem;translate:-50%}.e-axis>span:before{content:"";border-left:1px solid var(--rule-strong);height:.1875rem;position:absolute;top:-.3125rem;left:50%}@media (width<=47.49rem){.e-stage{min-height:var(--stage-m);padding-inline:var(--side)}}.er{container:er/inline-size}.er-strip{row-gap:var(--s-1);margin-top:var(--s-2);grid-template-columns:repeat(25,minmax(0,1fr));display:grid}@container er (width>=36rem){.er-strip{grid-template-columns:repeat(50,minmax(0,1fr))}}.er-cell{grid-template-rows:.75rem .5rem auto;place-items:center;display:grid}.er-q{color:var(--fig-a)}.er-cell[data-flip] .er-q{outline:1px solid var(--fig-b);outline-offset:1px;border-radius:var(--r-dot)}.er-f{width:.375rem;height:.375rem;color:var(--fig-b);grid-row:2}.er-p{background:var(--rule);grid-row:3;align-items:flex-end;width:.25rem;height:.875rem;margin-top:.125rem;display:flex}.er-p>span{background:var(--ink-3);width:100%;display:block}.er-formula{margin:var(--s-2) 0 0;font-size:var(--fs-micro);line-height:var(--lh-micro);color:var(--ink-2)}.er-hist-head{margin-top:var(--s-3)}.er-hist{flex:1;min-height:7.5rem;position:relative}.er-cols{grid-template-columns:repeat(31,minmax(0,1fr));display:grid;position:absolute;inset:1rem 0 0;container-type:size}.er-col{flex-direction:column-reverse;align-items:center;gap:1px;min-width:0;display:flex}.er-col .em{width:min(.6875rem, 80%, calc(100cqh / var(--stack) - 1px));aspect-ratio:1;height:auto}.er-run{color:var(--fig-a)}.er-col .er-cur{color:var(--fig-current);width:min(.8125rem, 100%, calc(100cqh / var(--stack) + 1px))}.er-mean{border-left:1px dashed var(--ink-3);position:absolute;top:.125rem;bottom:0}.er-mean>span{white-space:nowrap;color:var(--ink-2);position:absolute;top:-.125rem;left:.3125rem}.er .e-axis{margin-top:1px}.ei-swatch{background:var(--fig-band);width:.75rem;height:.5rem;box-shadow:inset 0 0 0 1px var(--ink-3);display:inline-block}.ei-band{width:100%;height:2.5rem;margin-top:var(--s-2);display:block;overflow:visible}.ei-wil{fill:var(--fig-band);stroke:var(--ink-3);stroke-width:1px;shape-rendering:crispedges}.ei-end{font:400 var(--fs-micro) var(--f-mono);font-variation-settings:"MONO" 1;fill:var(--ink-2)}.ei-p{stroke:var(--fig-current);stroke-width:1px}.ei-dia{fill:var(--fig-current);stroke:var(--sheet);stroke-width:1.5px}.ei-norm line{stroke:var(--ink-2);stroke-width:1px;stroke-dasharray:3 2}.ei-over{stroke:var(--fig-miss);stroke-width:1.5px;stroke-linecap:round}.ei-stack{width:100%;min-height:6rem;margin-top:var(--s-2);flex:1;display:block;overflow:visible}.ei-truth{stroke:var(--fig-current);stroke-width:1px;stroke-dasharray:2 3}.ei-row line,.ei-row use{stroke:var(--fig-a);stroke-width:1px;stroke-linecap:round}.ei-row circle{fill:var(--fig-a)}.ei-row-miss line,.ei-row-miss use{stroke:var(--fig-miss);stroke-width:1.25px}.ei-row-miss circle{fill:var(--fig-miss)}.ep-dash{width:.875rem}.ep-body{margin-top:var(--s-3);flex:1;grid-template-rows:minmax(0,1fr) auto;grid-template-columns:2.25rem minmax(0,1fr);min-height:0;display:grid}.ep-y{color:var(--ink-3);grid-row:1;margin-top:.375rem;position:relative}.ep-y>span{font-size:var(--fs-micro);line-height:1;position:absolute;right:.5rem;translate:0 -50%}.ep-plot{cursor:ew-resize;touch-action:pan-y;grid-area:1/2;margin-top:.375rem;position:relative}.ep-svg{width:100%;height:100%;position:absolute;inset:0;overflow:visible}.ep-grid{stroke:var(--rule);stroke-width:1px;shape-rendering:crispedges}.ep-k{stroke:var(--fig-current);stroke-width:1px}.ep-line{fill:none;stroke:currentColor;stroke-linejoin:round}.ep-naive{fill:none;stroke:currentColor;stroke-dasharray:3 3}.ep-m{fill:currentColor;stroke:currentColor}.ep-handle{fill:var(--fig-current);stroke:var(--sheet);stroke-width:1.5px}.ep-tag{--tx:.5rem;--ty:-50%;translate:var(--tx) var(--ty);font-size:var(--fs-micro);white-space:nowrap;background:var(--sheet);border-radius:var(--r-1);pointer-events:none;padding:0 .25rem;font-weight:600;line-height:1rem;position:absolute}.ep-tag[data-side=l]{--tx:calc(-100% - .5rem)}.ep-tag[data-v=above]{--ty:calc(-100% - var(--off,.375rem))}.ep-tag[data-v=below]{--ty:var(--off,.375rem)}.ep-x{grid-column:2;margin-top:0}.ep-xl{padding-inline-start:.75rem;translate:0!important}.ep-xl:before{content:none!important}.ep-step{grid-template-columns:auto 2.5rem auto;align-items:center;row-gap:.25rem;display:grid}.ep-step-l{font:450 var(--fs-meta)/var(--lh-meta) var(--f-ui);font-variation-settings:"MONO" 0;color:var(--ink-2);grid-column:1/-1}.ep-step-l i{font-family:var(--f-text);font-size:1.0625em}.ep-step-v{text-align:center;font-size:var(--fs-ui);line-height:var(--lh-ui);color:var(--ink);font-weight:600}.eq{container:eq/inline-size}.eq-k{width:.75rem;height:.75rem}.eq-body{gap:var(--s-4);margin-top:var(--s-3);display:grid}.eq-grid{aspect-ratio:4/3;width:min(100%,20rem);height:auto;display:block;overflow:visible}.eq-h{fill:none;stroke:var(--rule-strong);stroke-width:.75px}.eq-both .eq-h{fill:var(--rule);stroke:none}.eq-none .eq-h{stroke:var(--rule)}.eq-ao .eq-h.eq-on{fill:var(--fig-a);stroke:none}.eq-bo .eq-h.eq-on{fill:var(--fig-b);stroke:none}.eq-ao .eq-h:not(.eq-on),.eq-bo .eq-h:not(.eq-on){stroke:var(--ink-3)}.eq-ring{fill:none;stroke-width:1px}.eq-ao .eq-ring{stroke:var(--fig-a)}.eq-bo .eq-ring{stroke:var(--fig-b)}.eq-tri{fill:var(--fig-b)}.eq-side{align-content:start;gap:var(--s-3);min-width:0;display:grid}.eq-title{color:var(--ink-3);margin:0}.eq-ivs{gap:var(--s-2);display:grid}.eq-note{min-width:0;color:var(--ink-3)}.eq-iv{align-items:baseline;column-gap:var(--s-2);grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"lab note val""track track track";display:grid}.eq-iv>.eq-lab{grid-area:lab}.eq-iv>.eq-note{grid-area:note}.eq-iv>.eq-val{grid-area:val}.eq-iv>.eq-track{grid-area:track;margin-top:.125rem}.eq-hrow{align-items:center;column-gap:var(--s-3);grid-template-columns:4.75rem minmax(0,1fr) 2.25rem;display:grid}.eq-lab{color:var(--ink-2);white-space:nowrap}.eq-val{text-align:end;color:var(--ink);font-weight:600}.eq-track{height:1rem;position:relative}.eq-zero{border-left:1px dashed var(--ink-3);position:absolute;top:0;bottom:0}.eq-bar{border-top:1px solid var(--ink-2);height:0;position:absolute;top:50%}.eq-bar:before,.eq-bar:after{content:"";border-left:1px solid var(--ink-2);height:.5rem;position:absolute;top:-.25rem}.eq-bar:before{left:0}.eq-bar:after{right:0}.eq-pa .eq-bar{border-top-width:2px;border-color:var(--ink);top:calc(50% - .5px)}.eq-pa .eq-bar:before,.eq-pa .eq-bar:after{border-color:var(--ink);border-left-width:2px}.eq-pt{border-radius:var(--r-dot);background:var(--ink);width:.4375rem;height:.4375rem;box-shadow:0 0 0 1.5px var(--sheet);position:absolute;top:50%;translate:-50% -50%}.eq-axis{margin-top:.125rem}.eq-trick{margin-top:var(--s-2);gap:.25rem;display:grid}.eq-hbar{background:var(--rule-strong);height:.5rem;margin-top:.25rem;display:block}.eq-hbar.e-a{background:var(--fig-a)}.eq-hbar.e-b{background:var(--fig-b)}.eq-mc{margin:var(--s-1) 0 0;color:var(--ink-2);font-size:var(--fs-micro)}.eq-ro .em{vertical-align:-.0625rem;margin-inline-end:.25rem;display:inline-block}@container eq (width>=34rem){.eq-body{gap:var(--s-6);grid-template-columns:auto minmax(0,1fr);align-items:start}.eq-grid{width:22.5rem}}@media (forced-colors:active){.eq-pt,.eq-hbar,.er-p>span,.ei-swatch{forced-color-adjust:none;box-shadow:none;background:canvastext}.er-p{forced-color-adjust:none;background:graytext}}:root{--iv-cr:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M13 8H3.5M7 4.5 3.5 8 7 11.5M13 4.5v7'/%3E%3C/svg%3E")}:is(.fm,.sr,.zd,.rs){container:iv/inline-size}.iv-to{color:var(--ink-3);vertical-align:-.0625rem;margin-inline:.25rem}.iv-ok{vertical-align:-.0625rem;color:var(--ink);margin-inline-end:.25rem}.iv-note{font:450 var(--fs-meta)/var(--lh-meta) var(--f-ui);font-variation-settings:"MONO" 0;color:var(--ink-3);flex-basis:100%;margin:0}.iv-btns{gap:var(--s-2);display:inline-flex}.fm-stage{gap:var(--s-5);padding:var(--s-5) var(--s-5) var(--s-4);align-items:start;display:grid}@container iv (width>=44rem){.fm-stage{column-gap:var(--s-6);grid-template-columns:minmax(0,27rem) minmax(0,1fr)}}.fm-key{gap:var(--s-1) var(--s-4);margin:0 0 var(--s-3);font:450 var(--fs-meta)/var(--lh-meta) var(--f-ui);font-variation-settings:"MONO" 0;color:var(--ink-2);flex-wrap:wrap;display:flex}.fm-k{align-items:center;gap:.375rem;display:inline-flex}.fm-k[data-k=front] .icon{color:var(--ink)}.fm-k[data-k=back] .icon{color:var(--fig-b)}html:not([data-js]) .fm-k[data-k=front] .icon{display:none}.fm-box{--fm-rows:8;min-height:calc(var(--fm-rows) * 1.75rem);display:grid;position:relative}@container iv (width<=43.99rem){.fm-box{--fm-rows:7}}@container iv (width<=32rem){.fm-box{--fm-rows:9}}@container iv (width<=25rem){.fm-box{--fm-rows:10}}@container iv (width<=23rem){.fm-box{--fm-rows:11}}@container iv (width<=21rem){.fm-box{--fm-rows:12}}.fm-p{font-variation-settings:normal;letter-spacing:0;text-wrap:wrap;-webkit-hyphens:manual;hyphens:manual;grid-area:1/1;align-self:start;margin:0;font-size:1.0625rem;font-weight:400;line-height:1.75rem}.fm-web{font-family:var(--f-text)}.fm-fb{font-family:serif}.fm-box[data-front=web] .fm-web,.fm-box[data-front=fb] .fm-fb{z-index:1;color:var(--ink)}.fm-box[data-front=web] .fm-fb,.fm-box[data-front=fb] .fm-web{color:var(--fig-b);opacity:.7}.fm-box:not([data-ready]) .fm-fb{visibility:hidden}.fm-lines{z-index:2;pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.fm-lines rect{fill:none;stroke-width:1px;shape-rendering:crispedges}.fm-l-front{stroke:var(--ink-3)}.fm-l-back{stroke:var(--fig-b);stroke-dasharray:3 2}.fm-css{background:var(--inset);border:1px solid var(--rule);min-width:0;position:relative}.fm-css:before{content:"css";content:"css" / "";font:400 var(--fs-micro)/var(--lh-micro) var(--f-mono);font-variation-settings:"MONO" 1;color:var(--ink-3);position:absolute;top:.5rem;left:.75rem}.fm-css pre{--fm-pre:9;min-height:calc(var(--fm-pre) * 1.125rem + 2.75rem);font-size:var(--fs-micro);color:var(--ink);white-space:pre-wrap;overflow-wrap:anywhere;margin:0;padding:2rem .75rem .75rem;line-height:1.125rem}@container iv (width<=43.99rem){.fm-css pre{--fm-pre:8}}@container iv (width<=24.25rem){.fm-css pre{--fm-pre:9}}@container iv (width<=20.5rem){.fm-css pre{--fm-pre:12}}@container iv (width<=18.75rem){.fm-css pre{--fm-pre:14}}@container iv (width<=18.25rem){.fm-css pre{--fm-pre:15}}.fm-css pre>span{text-indent:-4ch;padding-inline-start:4ch;display:block}.fm-css [data-off]{color:var(--ink-3)}.fm-copy.btn{min-height:1.75rem;position:absolute;top:.125rem;right:.125rem}@media (pointer:coarse){.fm-copy.btn{min-height:2.75rem}}html:not([data-js]) .fm-copy{display:none}.fm-ro .ro-item:first-child dd{min-width:16ch}.fm-ro .ro-item:nth-child(2) dd{min-width:7.5ch}.fm-ro .ro-item:nth-child(3) dd{min-width:7ch}.fm-ro .ro-item:nth-child(4) dd{min-width:9ch}.fm-ro .ro-item:nth-child(5) dd{min-width:17ch}.sr-stage{padding:var(--s-4) var(--s-5)}.sr-head{justify-content:space-between;gap:0 var(--s-4);margin:0 0 var(--s-2);font:450 var(--fs-meta)/1rem var(--f-ui);font-variation-settings:"MONO" 0;color:var(--ink-2);flex-wrap:wrap;display:flex}.sr-by{font-size:var(--fs-micro);color:var(--ink-3);line-height:1rem}.sr-by[data-naive]{color:var(--fig-miss)}.sr-head-r{gap:var(--s-3);margin-inline-start:auto;display:inline-flex}.sr-more{font-size:var(--fs-micro);color:var(--ink-2);align-items:center;gap:.125rem;line-height:1rem;display:inline-flex}.sr-more:not([data-on]){visibility:hidden}@media (width>=70rem){.sr-more[data-on=auto]{visibility:hidden}}.sr-scroll{margin-inline:calc(-1 * var(--s-5));padding-inline:var(--s-5);scrollbar-width:thin;overflow-x:auto}.sr-scroll:focus-visible{outline-offset:-2px}.sr-sheet{--cw:1rem;--ch:1rem;--gut:3rem;width:calc(var(--gut) + var(--cols) * var(--cw));background:radial-gradient(var(--grid) 1px, transparent 1.2px) calc(var(--gut) - .5rem) -.5rem / 1rem 1rem}.sr-lab{gap:var(--s-2);height:1rem;margin:0 0 0 var(--gut);font:450 var(--fs-meta)/1rem var(--f-ui);font-variation-settings:"MONO" 0;color:var(--ink-2);white-space:nowrap;display:flex}.sr-lab .mono{font-size:var(--fs-micro);color:var(--ink-3);line-height:1rem}.sr-ruler{height:1rem;margin-left:var(--gut);background:repeating-linear-gradient(90deg, var(--rule-strong) 0 1px, transparent 1px var(--cw)) 0 0 / 100% 3px no-repeat, repeating-linear-gradient(90deg, var(--rule-strong) 0 1px, transparent 1px var(--cw)) 0 100% / 100% 3px no-repeat;position:relative}.sr-ruler span{top:0;left:calc(var(--c) * var(--cw));width:var(--cw);font:400 var(--fs-micro)/1rem var(--f-mono);font-variation-settings:"MONO" 1;color:var(--ink-3);text-align:center;position:absolute}.sr-grid{position:relative}.sr-row{height:var(--ch);display:flex}.sr-ln{z-index:2;width:var(--gut);background:var(--sheet);font:400 var(--fs-micro)/var(--ch) var(--f-mono);font-variation-settings:"MONO" 1;color:var(--ink-3);text-align:right;flex:none;padding-right:.5rem;position:sticky;left:0}.sr-b{width:var(--cw);height:var(--ch);font:400 var(--fs-micro)/1 var(--f-mono);font-variation-settings:"MONO" 1;color:var(--ink);flex:none;place-items:center;display:grid;position:relative}.sr-b[data-w="2"]{width:calc(2 * var(--cw));background-image:linear-gradient(var(--rule-strong), var(--rule-strong));background-position:50% 100%;background-repeat:no-repeat;background-size:1px 3px}.sr-b[data-w="3"]{width:calc(3 * var(--cw))}.sr-b[data-w="4"]{width:calc(4 * var(--cw))}.sr-b[data-c]{background-color:var(--wash);color:var(--ink-2)}.sr-b[data-k=sp]{color:var(--ink-3)}.sr-b:is([data-k=nl],[data-k=cr]):before{content:"";background:var(--ink-3);width:.625rem;height:.625rem;-webkit-mask:var(--icon-return) center / contain no-repeat;-webkit-mask:var(--icon-return) center / contain no-repeat;mask:var(--icon-return) center / contain no-repeat}.sr-b[data-k=cr]:before{-webkit-mask-image:var(--iv-cr);-webkit-mask-image:var(--iv-cr);mask-image:var(--iv-cr)}.sr-b[data-x]{color:var(--fig-miss);background:repeating-linear-gradient(-45deg, color-mix(in oklab, var(--fig-miss) 22%, transparent) 0 1.5px, transparent 1.5px 4px), var(--wash)}.sr-b[data-cut]:after{content:"";background:var(--fig-miss);width:2px;position:absolute;top:1px;bottom:1px;left:-1px}.sr-pin{top:calc(var(--l) * var(--ch));left:calc(var(--gut) + var(--c) * var(--cw));z-index:1;width:var(--cw);height:var(--ch);box-shadow:0 0 0 1.5px var(--ink);pointer-events:none;position:absolute}.sr-pin[data-s=bad]{box-shadow:0 0 0 1.5px var(--fig-miss)}.sr-ln[data-pin]>span{height:.875rem;color:var(--sheet);background:var(--ink);border-radius:var(--r-1);align-items:center;gap:.125rem;padding:0 .1875rem;line-height:.875rem;display:inline-flex}.sr-ln[data-pin=bad]>span{background:var(--fig-miss)}.sr-end{width:0}@media (width<=47.49rem){.sr-stage{padding-inline:var(--side)}.sr-scroll{margin-inline:calc(-1 * var(--side));padding-inline:var(--side)}}@container iv (width<=34rem){.sr-cases .seg-track{grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-flow:row;display:grid}.sr-cases .seg-track:before{display:none}.sr-cases .seg-opt:has(input:checked){background:var(--wash);box-shadow:0 0 0 1px var(--signal)}}.zd-stage{gap:var(--s-5);padding:var(--s-5) var(--s-5) var(--s-4);align-items:start;display:grid}@container iv (width>=38rem){.zd-stage{column-gap:var(--s-6);grid-template-columns:19.5rem minmax(0,1fr)}}.zd-view{aspect-ratio:1;background:var(--sheet);border:1px solid var(--rule-strong);width:100%;max-width:19.5rem;position:relative;overflow:hidden}.zd-svg{width:100%;height:100%;display:block;overflow:hidden}.zd-paper{fill:var(--sheet)}.zd-g,.zd-ring,.zd-box{fill:none;vector-effect:non-scaling-stroke;stroke-width:1px}.zd-g128{stroke:var(--rule-strong)}.zd-g32{stroke:var(--rule)}.zd-g8,.zd-g2{stroke:var(--grid)}.zd-ring{stroke:var(--rule);stroke-dasharray:2 3}.zd-g32,.zd-g8,.zd-g2{opacity:0;transition:opacity .16s var(--ease-out)}.zd-stage:not([data-level="0"]) .zd-g32,.zd-stage:is([data-level="2"],[data-level="3"]) .zd-g8,.zd-stage[data-level="3"] .zd-g2{opacity:1}.zd-mark{fill:none;stroke-width:1.75px;stroke-linecap:round;stroke-linejoin:round}.zd-cur{fill:var(--fig-current);stroke:var(--sheet);stroke-width:1.5px}.zd-miss{stroke:var(--fig-miss)}.zd-mini .zd-mark{vector-effect:non-scaling-stroke}.zd-box{stroke:var(--ink-3);stroke-dasharray:3 2}.zd-box[data-cur]{stroke:var(--ink);stroke-dasharray:none}@media (prefers-reduced-motion:no-preference){.zd-img,.zd-svg>.zd-mark{transition:transform var(--dur-figure) var(--ease-in-out)}}.zd-ticks{pointer-events:none;position:absolute;inset:0}.zd-tx,.zd-ty{font-size:var(--fs-micro);color:var(--ink-3);background:var(--sheet);padding:0 .1875rem;line-height:1rem;position:absolute}.zd-tx{top:.125rem;translate:-50%}.zd-ty{left:.125rem;translate:0 -50%}.zd-side{gap:var(--s-4) var(--s-5);flex-wrap:wrap;align-content:start;align-items:flex-start;display:flex}.zd-next{fill:none;stroke:var(--ink-3);stroke-width:1px;stroke-dasharray:3 3;vector-effect:non-scaling-stroke}.zd-table{border-collapse:collapse;font:450 var(--fs-meta)/var(--lh-meta) var(--f-ui);font-variation-settings:"MONO" 0;flex:15rem}.zd-table th{color:var(--ink-3);text-align:right;border-bottom:1px solid var(--rule-strong);white-space:nowrap;padding:0 .75rem .25rem 0;font-weight:450}.zd-table td{font-family:var(--f-mono);font-variation-settings:"MONO" 1;color:var(--ink-2);text-align:right;border-bottom:1px solid var(--rule);white-space:nowrap;padding:.25rem .75rem .25rem 0;font-weight:400}.zd-table :is(th,td):first-child{text-align:left}.zd-table :is(th,td):last-child{padding-right:0}.zd-table tr[data-cur] td{color:var(--ink);font-weight:600}.zd-table tr[data-ahead] td{color:var(--ink-3)}.zd-mini{width:8.5rem}.zd-mini svg{aspect-ratio:1;border:1px solid var(--rule-strong);width:100%;height:auto;display:block}.zd-mini .zd-cur{stroke-width:1px}.zd-mini-l{font:450 var(--fs-meta)/var(--lh-meta) var(--f-ui);font-variation-settings:"MONO" 0;color:var(--ink-3);margin:.375rem 0 0}.zd-mats{gap:var(--s-3) var(--s-4);flex-basis:100%;grid-template-columns:repeat(auto-fill,minmax(9.5rem,1fr));display:grid}.zd-mat{align-content:start;justify-items:start;gap:.25rem;display:grid}.zd-mat-l{font:450 var(--fs-meta)/var(--lh-meta) var(--f-ui);font-variation-settings:"MONO" 0;color:var(--ink-3)}.zd-mat-v{font-size:var(--fs-micro);color:var(--ink);text-align:right;border-inline:1px solid var(--ink-3);background:linear-gradient(var(--ink-3), var(--ink-3)) 0 0 / .25rem 1px no-repeat, linear-gradient(var(--ink-3), var(--ink-3)) 0 100% / .25rem 1px no-repeat, linear-gradient(var(--ink-3), var(--ink-3)) 100% 0 / .25rem 1px no-repeat, linear-gradient(var(--ink-3), var(--ink-3)) 100% 100% / .25rem 1px no-repeat;grid-template-columns:repeat(3,auto);justify-content:start;gap:0 .75rem;padding:.125rem .5rem;line-height:1.125rem;display:grid}.zd-mat:last-child .zd-mat-l{color:var(--ink-2);font-weight:600}@container iv (width<=37.99rem){.zd-view{max-width:none}.zd-stage{position:relative}.zd-side{display:contents}.zd-mini{top:calc(var(--s-5) + 100cqw - 2 * var(--side) - 6.5rem);right:calc(var(--side) + .5rem);background:var(--sheet);border:1px solid var(--rule);width:6rem;padding:.25rem;position:absolute}.zd-mini svg{border-color:var(--rule)}.zd-mini-l,.zd-table{display:none}}@media (width<=47.49rem){.zd-stage{padding-inline:var(--side)}}.rs-stage{min-height:var(--stage-d);padding:var(--s-8) var(--s-5) var(--s-6);align-content:start;justify-items:center;display:grid;position:relative}.rs-card{--pad:var(--s-4);--sum:2.75rem;--panel:5.25rem;width:min(100%,22rem);padding:0 var(--pad) var(--pad);background:var(--paper);border:1px solid var(--rule-strong);border-radius:var(--r-2);-webkit-user-select:none;user-select:none;position:relative}.rs-sum{height:var(--sum);font:500 var(--fs-ui)/var(--lh-ui) var(--f-ui);font-variation-settings:"MONO" 0;color:var(--ink);align-items:center;gap:.375rem;display:flex}.rs-sum .icon{color:var(--ink-2);rotate:-90deg}.rs-card[data-open] .rs-sum .icon{rotate:0deg}.rs-slot{height:0;position:relative;overflow:hidden}.rs-card[data-s=push][data-open] .rs-slot,.rs-card[data-s=reserve] .rs-slot{height:var(--panel)}.rs-panel{height:var(--panel);font:450 var(--fs-meta)/var(--lh-meta) var(--f-ui);font-variation-settings:"MONO" 0;color:var(--ink-2);border-top:1px solid var(--rule);visibility:hidden;opacity:0;padding:.5rem 0 .75rem;overflow:hidden}.rs-card[data-open] .rs-panel{visibility:visible;opacity:1}.rs-card[data-s=overlay] .rs-slot{z-index:2;overflow:visible}.rs-card[data-s=overlay] .rs-panel{inset:0 calc(-1 * var(--pad) - 1px) auto;padding:.5rem var(--pad) .75rem;background:var(--paper);border:1px solid var(--rule-strong);border-radius:0 0 var(--r-2) var(--r-2);box-shadow:var(--shadow-pop);position:absolute}.rs-act{padding-top:var(--s-2)}.rs-del{height:2.25rem;font:500 var(--fs-ui)/var(--lh-ui) var(--f-ui);font-variation-settings:"MONO" 0;color:var(--ink);background:var(--sheet);border:1px solid var(--rule-strong);border-radius:var(--r-2);align-items:center;padding:0 1rem;display:inline-flex}.rs-ptr{top:calc(var(--sum) + var(--s-2) + 1.125rem);left:calc(var(--pad) + 2.25rem);z-index:3;pointer-events:none;width:0;height:0;position:absolute}.rs-card[data-s=reserve] .rs-ptr{top:calc(var(--sum) + var(--panel) + var(--s-2) + 1.125rem)}.rs-ptr svg{display:block;overflow:visible;translate:-1px -1px}.rs-ptr path{fill:var(--ink);stroke:var(--paper);stroke-width:1.25px;stroke-linejoin:round}@media (prefers-reduced-motion:no-preference){.rs-card[data-moving] .rs-slot{transition:height var(--dur-ui) var(--ease-out)}.rs-panel{transition:opacity var(--dur-hover) var(--ease-out), visibility var(--dur-hover)}.rs-sum .icon{transition:rotate var(--dur-ui) var(--ease-out)}}.rs-rect{z-index:4;pointer-events:none;border:1px dashed var(--ink-3);border-radius:var(--r-2);position:absolute}.rs-rect[data-r=after]{border:1.5px solid var(--fig-miss)}.rs-rect:is([data-same],[data-r=rest]){border:1px solid var(--ink)}.rs-tag{z-index:4;font-size:var(--fs-micro);color:var(--ink-3);white-space:nowrap;pointer-events:none;line-height:1rem;position:absolute;translate:0 -50%}.rs-tag[data-r=after]{color:var(--fig-miss)}.rs-key{z-index:4;font-size:var(--fs-micro);color:var(--ink-3);white-space:nowrap;pointer-events:none;align-items:center;gap:.375rem;line-height:1rem;display:flex;position:absolute}.rs-sw{border:1px dashed var(--ink-3);border-radius:var(--r-1);width:1rem;height:.625rem}.rs-sw[data-r=after]{border:1.5px solid var(--fig-miss);margin-inline-start:.5rem}.rs-sw[data-same]{border:1px solid var(--ink)}@media (width<=47.49rem){.rs-stage{min-height:var(--stage-m);padding-inline:var(--side)}}@media (forced-colors:active){.fm-k .icon,.zd-mark{forced-color-adjust:auto}.fm-box{forced-color-adjust:none}.fm-box .fm-p{color:canvastext}.fm-box[data-front=web] .fm-fb,.fm-box[data-front=fb] .fm-web{color:graytext;opacity:1}.fm-k[data-k=back] .icon{forced-color-adjust:none;color:graytext}.fm-l-front{stroke:canvastext}.fm-l-back{stroke:graytext}.sr-ln[data-pin]>span{forced-color-adjust:none;color:canvas;background:canvastext}.sr-b[data-c]{forced-color-adjust:none;color:highlighttext;background:highlight}.sr-b[data-x]{forced-color-adjust:none;color:canvas;background:canvastext}.sr-b:is([data-k=nl],[data-k=cr]):before,.sr-b[data-cut]:after{forced-color-adjust:none;background:canvastext}.sr-pin,.sr-pin[data-s=bad]{box-shadow:none;outline:2px solid canvastext}.sr-ruler{forced-color-adjust:none;background:repeating-linear-gradient(90deg, CanvasText 0 1px, transparent 1px var(--cw)) 0 0 / 100% 3px no-repeat, repeating-linear-gradient(90deg, CanvasText 0 1px, transparent 1px var(--cw)) 0 100% / 100% 3px no-repeat}.sr-ruler span{color:canvastext}.rs-card,.rs-del{border-color:canvastext}}#fan-out{container-type:inline-size}@container (width<=21.99rem){.fo-sep{display:none}.fo-p2{display:block}}#fan-out>.fig-stage{display:grid}.fo{min-width:0;padding:var(--s-4) var(--s-4) var(--s-3);flex-direction:column;display:flex}.fo-legend{gap:var(--s-1) var(--s-4);font-size:var(--fs-micro);line-height:var(--lh-micro);color:var(--ink-2);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.fo-legend li{align-items:center;gap:.375rem;display:flex}.fo-legend li:before{content:"";box-sizing:border-box;flex:none}.fo-legend [data-k=task]:before{background:var(--fig-a);width:14px;height:7px}.fo-legend [data-k=dup]:before{background:var(--fig-b);width:14px;height:5px}.fo-legend [data-k=cut]:before{border:1px dashed var(--ink-3);width:14px;height:7px}.fo-legend [data-k=done]:before{background:var(--fig-current);width:2px;height:12px}.fo-legend [data-k=p99]:before{border-left:1px dashed var(--ink-3);width:1px;height:12px}.fo-legend [data-k=p95]:before{border-left:2px dotted var(--fig-b);width:2px;height:12px}.fo-plot{flex-direction:column;flex:1;margin:1.75rem .25rem 0 0;display:flex}.fo-lanes{grid-template-rows:repeat(var(--n), minmax(0, 1fr));border-left:1px solid var(--rule-strong);border-bottom:1px solid var(--rule-strong);flex:1 0 13rem;display:grid;position:relative}.fo[data-trick] .fo-lanes{flex-basis:7.5rem}.fo-lane{min-height:0;position:relative}.fo-bar,.fo-cut{height:clamp(3px,46%,10px);position:absolute;top:50%;translate:0 -50%}.fo-bar{background:var(--fig-a)}.fo-cut{box-sizing:border-box;border:1px dashed var(--ink-3);border-left:0}.fo-lane[data-dup]>:not(.fo-dup,.fo-out){height:clamp(2px,34%,7px);top:32%}.fo-dup{height:clamp(2px,24%,5px);top:74%}.fo-bar.fo-dup{background:var(--fig-b)}.fo-cut.fo-dup{border-color:var(--fig-b)}.fo-out{font-size:var(--fs-micro);color:var(--ink);background:var(--sheet);align-items:center;gap:.125rem;padding-left:.25rem;line-height:1;display:inline-flex;position:absolute;top:50%;right:0;translate:0 -50%}.fo-ref,.fo-done,.fo-head,.fo-q{width:0;position:absolute;top:0;bottom:0}.fo-ref{border-left:1px dashed var(--ink-3)}.fo-ref-h{border-left:2px dotted var(--fig-b);translate:-1px}.fo-head{border-left:1px solid var(--ink-3)}.fo-done{border-left:2px solid var(--fig-current);top:-1.5rem;bottom:-1px;translate:-1px}.fo-done .mono,.fo-q .mono{font-size:var(--fs-micro);line-height:var(--lh-micro);color:var(--ink);white-space:nowrap;background:var(--sheet);padding:0 .125rem;position:absolute;top:0;left:.25rem}.fo-q .mono{z-index:1}.fo-done[data-end] .mono,.fo-q[data-end] .mono{left:auto;right:.25rem}.fo-q[data-q=p99] .mono{top:1rem}.fo-hist{height:6.5rem;margin-top:var(--s-7);border-left:1px solid var(--rule-strong);flex:none;position:relative}.fo-hb{background:color-mix(in oklab, var(--fig-a) 42%, var(--sheet));width:calc(2.08333% - 1px);position:absolute;bottom:0}.fo-hist svg{width:100%;height:100%;position:absolute;inset:0;overflow:visible}.fo-hist path{fill:none;stroke:var(--ink);stroke-width:1.5px;vector-effect:non-scaling-stroke}.fo-q{border-left:1px solid var(--ink);top:-.25rem}.fo-legend [data-k=job]:before{background:color-mix(in oklab, var(--fig-a) 42%, var(--sheet));width:10px;height:8px}.fo-legend [data-k=one]:before{border-top:1.5px solid var(--ink);width:14px}.fo-axis{border-top:1px solid var(--rule-strong);height:1.5rem;position:relative}.fo[data-trick] .fo-axis{margin-left:0}.fo-axis span{white-space:nowrap;font-size:var(--fs-micro);line-height:var(--lh-micro);color:var(--ink-3);position:absolute;top:.375rem;translate:-50%}.fo-axis span:first-child{translate:0}.fo-axis span:last-child{translate:-100%}#fan-out>.fig-controls{grid-template-columns:minmax(0,1fr);display:grid}#fan-out>.fig-controls>.slider{min-width:0;max-width:none}.fo-strat .seg-track{width:100%;display:grid}.fo-l{display:none}@container (width>=30rem){#fan-out>.fig-controls{grid-template-columns:repeat(3,minmax(0,1fr))}#fan-out>.fig-controls>.fo-strat{grid-column:1/-1}.fo-strat .seg-track{width:auto;display:inline-grid}.fo-l{display:inline}.fo-s{display:none}}#fan-out>.fig-transport{align-items:flex-end}.fo-seed{align-items:flex-end;gap:var(--s-2);display:flex}.fo-key{font:500 var(--fs-micro)/1 var(--f-mono);font-variation-settings:"MONO" 1;color:var(--ink-3);border:1px solid var(--rule-strong);border-radius:var(--r-1);margin-inline-start:.125rem;padding:.0625rem .25rem}@media (pointer:coarse){.fo-key{display:none}}@media (forced-colors:active){.fo-bar,.fo-bar.fo-dup,.fo-hb,.fo-legend li:not([data-k=cut],[data-k=p99],[data-k=p95],[data-k=one]):before{forced-color-adjust:none;background:canvastext}.fo-done{border-color:highlight}}@media (prefers-reduced-motion:no-preference){.card:is(:hover,:focus-within) .p-fo .mv{animation:p-fo 2.8s var(--ease-in-out) infinite alternate}}@keyframes p-fo{0%,25%{translate:-116px}75%,to{translate:0}}#one-hue{container-type:inline-size}#one-hue>.fig-stage{display:grid}.oh{align-content:center;gap:var(--s-5);padding:var(--s-5) var(--s-4);display:grid}.oh-panel{padding:var(--s-3) var(--s-3) var(--s-4);color:var(--oh-ink);background:var(--oh-bg);border:1px solid var(--oh-rule)}.oh-ramp{row-gap:var(--s-4);grid-template-columns:repeat(4,minmax(0,1fr));margin:0;padding:0;list-style:none;display:grid}@container (width>=32rem){.oh-ramp{grid-template-columns:repeat(6,minmax(0,1fr))}}@container (width>=50rem){.oh-ramp{grid-template-columns:repeat(12,minmax(0,1fr))}}.oh-step{min-width:0;min-height:11rem;font-size:var(--fs-micro);line-height:var(--lh-micro);align-content:start;display:grid}.oh-swatch{display:grid}.oh-chip{height:2.75rem}.oh-step[data-clipped] .oh-chip{background-image:repeating-linear-gradient(135deg,#fff9 0 1px,#0000 1px 6px),repeating-linear-gradient(135deg,#0000 0 3px,#00000052 3px 4px,#0000 4px 6px)}.oh-aa{padding:var(--s-1) 0 var(--s-1) var(--s-1);font:600 1.25rem/1.75rem var(--f-text);font-variation-settings:normal}.oh-aa:before{content:"Aa";content:"Aa" / ""}.oh-n,.oh-hex,.oh-ratio,.oh-badges,.oh-clip{padding-inline:var(--s-1)}.oh-n{color:var(--oh-ink-3)}.oh-hex{color:var(--oh-ink);white-space:nowrap}.oh-ratio{font-size:var(--fs-meta);line-height:var(--lh-meta);color:var(--oh-ink);font-weight:600}.oh-badges{flex-wrap:wrap;gap:2px 4px;min-height:1.25rem;margin-top:2px;display:flex}.oh-badge{font-size:var(--fs-micro);color:var(--oh-ink);white-space:nowrap;border-radius:var(--r-1);border:1px solid;padding:0 3px;font-weight:500;line-height:1rem}.oh-badge-ui{color:var(--oh-ink-3);border-style:dashed}.oh-clip{color:var(--oh-ink-3)}.oh-site{margin-top:var(--s-4);padding-top:var(--s-3);border-top:1px solid var(--oh-rule)}.oh-site-h{margin:0 0 var(--s-2);font-size:var(--fs-micro);line-height:var(--lh-micro);color:var(--oh-ink-3)}.oh-tokens{gap:var(--s-3) var(--s-6);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.oh-token{column-gap:var(--s-2);font-size:var(--fs-micro);line-height:var(--lh-micro);grid-template-rows:auto auto;grid-template-columns:1.75rem auto;align-items:center;display:grid}.oh-tchip{width:1.75rem;height:1.75rem;box-shadow:inset 0 0 0 1px var(--oh-rule);grid-row:1/span 2}.oh-tname{color:var(--oh-ink);white-space:nowrap}.oh-tline{align-items:center;gap:var(--s-2);white-space:nowrap;display:flex}.oh-tmeta{color:var(--oh-ink-3)}.oh-token .oh-badges{min-height:0;margin:0;padding:0}.oh-matrix-box{overflow-x:auto}.oh-legend{gap:var(--s-1) var(--s-4);margin:0 0 var(--s-2);font-size:var(--fs-micro);line-height:var(--lh-micro);color:var(--ink-2);flex-wrap:wrap;padding:0;list-style:none;display:flex}.oh-legend li{align-items:center;gap:.375rem;display:flex}.oh-legend li:before{content:"";border-radius:var(--r-dot);width:8px;height:8px}.oh-legend [data-k=text]:before{background:var(--fig-a)}.oh-legend [data-k=ui]:before{box-shadow:inset 0 0 0 1.5px var(--fig-a)}.oh-matrix{border-collapse:collapse;font-size:var(--fs-micro);line-height:1}.oh-matrix th{color:var(--ink-3);text-align:center;white-space:nowrap;padding:0 6px 4px 0;font-weight:400}.oh-matrix tbody th{text-align:end;padding:0 6px 0 0}.oh-mchip{vertical-align:0;width:8px;height:8px;box-shadow:inset 0 0 0 1px var(--rule);margin-inline-end:3px;display:inline-block}.oh-matrix thead .oh-mchip{margin:0 auto 3px;display:block}.oh-matrix td{border:1px solid var(--rule);width:1.5rem;height:1.5rem;padding:0;position:relative}.oh-matrix td:before{content:"";border-radius:var(--r-dot);width:8px;height:8px;margin:auto;position:absolute;inset:0}.oh-matrix td[data-pass=text]:before{background:var(--fig-a)}.oh-matrix td[data-pass=ui]:before{box-shadow:inset 0 0 0 1.5px var(--fig-a)}.oh-code{margin:var(--s-1) 0 0;padding:var(--s-2) var(--s-3);font-size:var(--fs-micro);color:var(--ink-2);background:var(--inset);border:1px solid var(--rule);flex:100%;line-height:1.125rem;overflow-x:auto}@container (width>=40rem){.oh-code{column-count:2;column-gap:var(--s-6)}}.oh-list{margin:0;padding-inline-start:1.25rem}.oh-hue input[type=range]::-webkit-slider-runnable-track{background:linear-gradient(90deg,oklch(72% .12 0),oklch(72% .12 60),oklch(72% .12 120),oklch(72% .12 180),oklch(72% .12 240),oklch(72% .12 300),oklch(72% .12 360));border-radius:3px;height:6px}.oh-hue input[type=range]::-moz-range-track{background:linear-gradient(90deg,oklch(72% .12 0),oklch(72% .12 60),oklch(72% .12 120),oklch(72% .12 180),oklch(72% .12 240),oklch(72% .12 300),oklch(72% .12 360));border-radius:3px;height:6px}.oh-hue input[type=range]::-webkit-slider-thumb{margin-top:-5px}@media (pointer:coarse){.oh-hue input[type=range]::-webkit-slider-thumb{margin-top:-11px}}@media (width<=47.49rem){.oh{padding-inline:var(--side)}}@media (forced-colors:active){.oh-panel,.oh-chip,.oh-tchip,.oh-mchip,.oh-aa{forced-color-adjust:none}.oh-matrix td:before{forced-color-adjust:none;background:canvastext}.oh-hue input[type=range]::-webkit-slider-runnable-track{background:canvastext}.oh-hue input[type=range]::-moz-range-track{background:canvastext}}@media (prefers-reduced-motion:no-preference){.card:is(:hover,:focus-within) .p-oh .mv{animation:2.4s step-end infinite p-oh}}@keyframes p-oh{0%{transform:translate(0)}33%{transform:translate(16px)}66%{transform:translate(32px)}}#optical-centre>.fig-stage{display:grid;container-type:inline-size}.oc{place-content:center;gap:var(--s-5) clamp(.5rem, 4cqi, 2.5rem);padding:var(--s-6) var(--s-4);flex-wrap:wrap;display:flex}.oc-tile{justify-items:center;display:grid}.oc-pad{border-radius:var(--r-2);width:160px;height:160px;position:relative}.oc-pad svg{width:100%;height:100%;display:block;overflow:visible}.oc-grip{border-radius:var(--r-dot);cursor:grab;touch-action:none;width:45%;height:45%;position:absolute;translate:-50% -50%}.oc-grip:active{cursor:grabbing}.oc-pad:focus-visible{outline-offset:0}.oc-btn{fill:var(--inset);stroke:var(--rule-strong);stroke-width:1px;transition:stroke var(--dur-hover) var(--ease-out)}@media (hover:hover){.oc-pad:hover .oc-btn{stroke:var(--ink-3)}}.oc-label{font:500 15px var(--f-ui);font-variation-settings:"MONO" 0;fill:var(--ink)}.oc-glyph{fill:var(--ink)}.oc-glyph[data-faint]{fill-opacity:.28}.oc-halo{fill:none;stroke:var(--signal);stroke-width:3px;stroke-linejoin:round}.oc-ghost{fill:none;stroke:var(--ink-3);stroke-width:1px;stroke-dasharray:2 2}.oc-centre path{fill:none;stroke:var(--ink-3);stroke-width:.75px;stroke-dasharray:2 2}.oc-box{fill:none;stroke:var(--ink-3);stroke-width:.75px}.oc-dim{fill:none;stroke:var(--fig-b);stroke-width:1px}.oc-cen{fill:none;stroke:var(--fig-b);stroke-width:1.5px;stroke-linecap:round}.oc-cap{margin:var(--s-2) 0 0;font-size:var(--fs-meta);line-height:var(--lh-meta);color:var(--ink-2)}.oc-tile[data-current] .oc-cap{color:var(--ink)}.oc-sub{font-size:var(--fs-micro);line-height:var(--lh-micro);color:var(--ink-3);margin:0}.oc-nudge{align-items:center;gap:var(--s-2);flex-wrap:wrap;display:flex}.oc-nudge-b{gap:var(--s-2);display:flex}.oc-nudge-l{font-size:var(--fs-meta);line-height:var(--lh-meta);color:var(--ink-2);margin-inline-end:var(--s-1)}.oc-up{rotate:-90deg}.oc-down{rotate:90deg}@media (width<=47.49rem){.oc{padding-inline:var(--side)}}@container (width<=22rem){.oc{column-gap:.5rem;padding-inline:.75rem}.oc-pad{width:132px;height:132px}}@media (forced-colors:active){.oc-glyph,.oc-label{forced-color-adjust:none;fill:canvastext}.oc-halo{forced-color-adjust:none;stroke:highlight}}@media (prefers-reduced-motion:no-preference){.card:is(:hover,:focus-within) .p-oc .mv{animation:p-oc 2.4s var(--ease-in-out) infinite}}@keyframes p-oc{0%,15%,to{transform:translate(-7px)}45%,80%{transform:translate(0)}}#quorum{container-type:inline-size}#quorum>.fig-stage{display:grid}.qr{gap:var(--s-6) var(--s-7);padding:var(--s-5) var(--s-4) var(--s-4);display:grid}.qr-left,.qr-right{flex-direction:column;min-width:0;display:flex}@container (width>=40rem){.qr{grid-template-columns:minmax(0,26rem) minmax(0,1fr)}}.qr-h{margin-bottom:var(--s-3);font-size:var(--fs-meta);line-height:var(--lh-meta);color:var(--ink-2)}.qr-toks{flex-wrap:wrap;gap:.25rem;min-height:1.5rem;margin:0;padding:0;list-style:none;display:flex}.qr-tok{width:1.5rem;height:1.5rem;color:var(--sheet);vertical-align:middle;flex:none;place-items:center;display:inline-grid}.qr-tok[data-v=right]{background:var(--fig-a);border-radius:var(--r-dot)}.qr-tok[data-v=wrong]{background:var(--fig-miss);border-radius:1px;width:1.3125rem;height:1.3125rem;margin:.09375rem}.qr-tok[data-v=none]{border:1px dashed var(--rule-strong);border-radius:var(--r-dot)}.qr-draw{margin-top:var(--s-2);font-size:var(--fs-micro);line-height:var(--lh-micro);color:var(--ink-3)}.qr-draw[data-shared]{background:linear-gradient(var(--ink-3), var(--ink-3)) 0 0 / min(100%, calc(var(--n) * 1.75rem - .25rem)) 1px no-repeat;margin-top:.25rem;padding-top:.25rem}.qr-maj{min-height:var(--lh-row);margin:var(--s-3) 0 var(--s-6);font:500 var(--fs-row)/var(--lh-row) var(--f-text);align-items:center;gap:.5rem;display:flex}.qr-gap{flex:1}.qr-scale{height:2.5rem;margin-inline:.25rem;position:relative}.qr-scale:before{content:"";border-top:1px solid var(--rule-strong);position:absolute;inset:.75rem 0 auto}.qr-band{background:var(--fig-band);height:.875rem;box-shadow:inset 0 0 0 1px var(--ink-3);position:absolute;top:.3125rem}.qr-dot,.qr-dia{position:absolute;top:.78rem;translate:-50% -50%}.qr-dot{border-radius:var(--r-dot);background:var(--fig-a);width:8px;height:8px;box-shadow:0 0 0 1.5px var(--sheet)}.qr-hist{grid-template-columns:repeat(20,.625rem);gap:.25rem;min-height:1.5rem;margin:0 0 .25rem .25rem;padding:0;list-style:none;display:grid}.qr-hcap{min-height:var(--lh-micro);margin:0 0 var(--s-3) .25rem;font-size:var(--fs-micro);line-height:var(--lh-micro);color:var(--ink-3)}.qr-hist li{border-radius:var(--r-dot);background:var(--fig-a);width:.625rem;height:.625rem}.qr-hist [data-v=wrong]{background:var(--fig-miss);border-radius:0;width:.5625rem;height:.5625rem;margin:.5px}.qr-dia,.qr-col[data-on] .qr-pt{background:var(--fig-current);width:9px;height:9px;box-shadow:0 0 0 2px var(--sheet);rotate:45deg}.qr-tick,.qr-y,.qr-x,.qr-val,.qr-goal span,.qr-dist .mono{font-size:var(--fs-micro);line-height:var(--lh-micro);color:var(--ink-3);white-space:nowrap;position:absolute}.qr-tick{top:1.5rem;translate:-50%}.qr-tick:first-of-type{translate:0}.qr-tick:last-of-type{translate:-100%}.qr-counts{gap:var(--s-5);margin-top:var(--s-1);font-size:var(--fs-meta);line-height:var(--lh-meta);color:var(--ink-2);display:flex}.qr-counts>span{align-items:center;gap:.375rem;display:inline-flex}.qr-counts .qr-tok{width:1rem;height:1rem;margin:0}.qr-counts .mono{color:var(--ink);font-weight:600}.qr-plot{isolation:isolate;border-left:1px solid var(--rule-strong);border-bottom:1px solid var(--rule-strong);cursor:pointer;flex:1 0 12rem;margin:.5rem .25rem 1.75rem 2.25rem;position:relative}.qr-plot svg{width:100%;height:100%;position:absolute;inset:0;overflow:visible}.qr-plot path{fill:none;vector-effect:non-scaling-stroke}.qr-line{stroke:var(--fig-a);stroke-width:1.5px;stroke-linejoin:round}.qr-ind{stroke:var(--ink-3);stroke-dasharray:3 3}.qr-y{right:calc(100% + .5rem);translate:0 -50%}.qr-goal{border-top:1px dashed var(--rule-strong);position:absolute;left:0;right:0}.qr-goal span{bottom:.125rem;left:.375rem}.qr-col{width:1.75rem;position:absolute;top:0;bottom:0;translate:-50%}.qr-col:before{content:"";z-index:-1;border-radius:var(--r-2);position:absolute;inset:0}@media (hover:hover){.qr-col:hover:before{background:color-mix(in oklab, var(--inset) 65%, transparent)}}.qr-pt{border-radius:var(--r-dot);background:var(--fig-a);width:7px;height:7px;position:absolute;left:50%;translate:-50% -50%}.qr-col[data-on] .qr-pt{border-radius:0}.qr-x{top:calc(100% + .375rem);left:50%;translate:-50%}.qr-col[data-on] .qr-x{color:var(--ink);font-weight:600}.qr-val{color:var(--ink);background:var(--sheet);padding-inline:.125rem;translate:-50% .625rem}.qr-val[data-low]{translate:-50% calc(-100% - .625rem)}.qr-val[data-end]{translate:calc(-100% - .5rem) .625rem}.qr-val[data-end][data-low]{translate:calc(-100% - .5rem) calc(-100% - .625rem)}.qr-key-ind{font-size:var(--fs-micro);line-height:var(--lh-micro);color:var(--ink-3)}.qr-trick{margin-bottom:var(--s-6)}.qr-trick[data-off]{visibility:hidden}@container (width<=39.99rem){.qr-trick[data-off]{display:none}.qr-left{min-height:20.75rem}.qr[data-trick]>.qr-left{min-height:31.25rem}}.qr-dist{grid-template-columns:repeat(var(--k), minmax(0, 1fr));border-bottom:1px solid var(--rule-strong);align-items:end;gap:2px;height:4.5rem;margin:1.25rem .25rem 1.5rem;display:grid;position:relative}.qr-bar{background:var(--fig-a);min-height:1px}.qr-bar[data-last]{outline:1.5px solid var(--ink);outline-offset:2px}.qr-bar[data-v=wrong]{background:repeating-linear-gradient(-45deg, var(--fig-miss) 0 1.5px, transparent 1.5px 3.5px);box-shadow:inset 0 0 0 1px var(--fig-miss)}.qr-half{border-left:1px dashed var(--ink-2);position:absolute;top:-1.25rem;bottom:0}.qr-half span{font-size:var(--fs-micro);line-height:var(--lh-micro);color:var(--ink-2);position:absolute;top:-.125rem;left:.375rem}.qr-dist .mono{top:calc(100% + .25rem)}.qr-dn{right:0}#quorum>.fig-controls{grid-template-columns:minmax(0,1fr);display:grid}#quorum>.fig-controls>.slider{min-width:0;max-width:none}@container (width>=30rem){#quorum>.fig-controls{grid-template-columns:repeat(3,minmax(0,1fr))}}#quorum>.fig-transport{min-height:3.625rem}.qr-run{gap:var(--s-2);flex-wrap:wrap;display:flex}.qr-key{font:500 var(--fs-micro)/1 var(--f-mono);font-variation-settings:"MONO" 1;color:var(--ink-3);border:1px solid var(--rule-strong);border-radius:var(--r-1);margin-inline-start:.125rem;padding:.0625rem .25rem}@media (pointer:coarse){.qr-key{display:none}}@media (prefers-reduced-motion:no-preference){.qr-toks .qr-tok:not([data-v=none]){animation:qr-in var(--dur-ui) var(--ease-expo) both;animation-delay:calc(var(--i) * 24ms)}.qr-band,.qr-dot,.qr-dia{transition:left var(--dur-figure) var(--ease-expo), width var(--dur-figure) var(--ease-expo)}}@keyframes qr-in{0%{opacity:0;transform:translateY(-.375rem)}}@media (forced-colors:active){.qr-tok,.qr-dot,.qr-dia,.qr-pt,.qr-bar,.qr-hist li{forced-color-adjust:none;color:canvas;background:canvastext}.qr-band{forced-color-adjust:none;background:highlight}}@media (prefers-reduced-motion:no-preference){.card:is(:hover,:focus-within) .p-qr .mv{animation:p-qr 3.2s var(--ease-in-out) infinite alternate}}@keyframes p-qr{0%,15%{translate:-55px 14px}42%,58%{translate:0}85%,to{translate:82px -11px}}.rag-badge{font-size:var(--fs-meta);line-height:var(--lh-meta);color:var(--ink-2);align-items:center;gap:.375rem;margin:0;display:flex}.rag-badge .icon{color:var(--ink-3)}.rag-stage,.rag-controls{font:400 .875rem/1.375rem var(--f-text);font-variation-settings:normal;container-type:inline-size}.rag-stage{padding:var(--s-5) var(--s-4) var(--s-6)}.rag-cols{align-items:flex-start;gap:var(--s-6) var(--s-5);flex-direction:column;display:flex}@container (width>=calc(90ch + 3rem + 3px)){.rag:has(#rag-w30:checked) .rag-cols{flex-direction:row}}@container (width>=calc(135ch + 3rem + 3px)){.rag:has(#rag-w45:checked) .rag-cols{flex-direction:row}}@container (width>=calc(180ch + 3rem + 3px)){.rag:has(#rag-w60:checked) .rag-cols{flex-direction:row}}.rag:has(#rag-free:checked) .rag-cols{flex-flow:wrap}.rag-col{--rag-w:45ch;box-sizing:content-box;width:var(--rag-w);min-width:14ch;max-width:min(70ch,100%);padding-bottom:var(--s-1);border-right:1px dashed var(--rule-strong);font:400 .875rem/1.375rem var(--f-text);font-variation-settings:normal;color:var(--ink);overflow:hidden}.rag:has(#rag-w30:checked) .rag-col{width:30ch!important}.rag:has(#rag-w45:checked) .rag-col{width:45ch!important}.rag:has(#rag-w60:checked) .rag-col{width:60ch!important}.rag:has(#rag-free:checked) .rag-col{resize:horizontal}@container (width<=calc(60ch + 1px)){.rag:has(#rag-w60:checked) .rag-col{width:45ch!important}}@container (width<=calc(45ch + 1px)){.rag:has(:is(#rag-w45,#rag-w60):checked) .rag-col{width:30ch!important}}.rag-cap{align-items:baseline;gap:0 var(--s-3);margin:0 0 var(--s-2);flex-wrap:wrap;display:flex}.rag-cap code{font-size:var(--fs-meta);line-height:var(--lh-meta);color:var(--ink);background:0 0;padding:0}.rag-flag{font-size:var(--fs-micro);line-height:var(--lh-micro);color:var(--rust);display:none}@supports not (text-wrap:balance){.rag-col[data-mode=balance] .rag-flag{display:inline}}@supports not (text-wrap:pretty){.rag-col[data-mode=pretty] .rag-flag{display:inline}}.rag-ruler{height:1.5rem;margin-bottom:var(--s-2);background:linear-gradient(var(--rule-strong), var(--rule-strong)) 0 100% / 100% 1px no-repeat, repeating-linear-gradient(90deg, var(--rule-strong) 0 1px, transparent 1px 10ch) 0 100% / 100% .625rem no-repeat, repeating-linear-gradient(90deg, var(--rule) 0 1px, transparent 1px 1ch) 0 100% / 100% .3125rem no-repeat;position:relative}.rag-ruler>span{top:0;left:calc(var(--i) * 10ch);width:0;position:absolute}.rag-ruler>span>span{font:400 var(--fs-micro)/var(--lh-micro) var(--f-mono);font-variation-settings:"MONO" 1;color:var(--ink-3);position:absolute;left:0;translate:-50%}.rag-ruler>span:first-child>span{translate:0}:is(.rag:has(#rag-w30:checked) .rag-ruler>span:nth-child(4)>span,.rag:has(#rag-w60:checked) .rag-ruler>span:nth-child(7)>span){translate:-100%}.rag-h{font:600 1.0625rem/1.375rem var(--f-text);letter-spacing:-.005em;margin:0}.rag-text{margin:var(--s-2) 0 0}.prose .rag{margin-bottom:var(--s-6)}.rag-col[data-mode=wrap] :is(.rag-h,.rag-text){text-wrap:wrap}.rag-col[data-mode=balance] :is(.rag-h,.rag-text){text-wrap:balance}.rag-col[data-mode=pretty] :is(.rag-h,.rag-text){text-wrap:pretty}.rag-controls{align-items:center}@supports not selector(:has(*)){.rag-controls{display:none}}.rag-seg{align-items:center;gap:var(--s-3);display:flex}.rag-legend{float:left;font:450 var(--fs-meta)/var(--lh-meta) var(--f-ui);font-variation-settings:"MONO" 0;color:var(--ink-2);padding:0}.rag-seg .seg-opt{padding-inline:.625rem}.rag-seg .seg-track{--a:0;--b:0;--c:0;--n:calc(4 - var(--a) - var(--b) - var(--c))}.rag-seg .seg-track:has(#rag-free:checked){--i:calc(3 - var(--a) - var(--b))}.rag-hint,.rag-narrow{font-size:var(--fs-meta);line-height:var(--lh-meta);color:var(--ink-3);margin:0;display:none}.rag:has(#rag-free:checked) .rag-hint{display:block}@container (width<=calc(60ch + 9px)){.rag-seg .seg-track{--b:1}.rag-seg .seg-opt:has(#rag-w60){display:none}.rag-seg .seg-track:has(#rag-w60:checked):before{display:none}.rag-narrow[data-hide="60"]{display:block}}@container (width<=calc(45ch + 9px)){.rag-seg .seg-track{--a:1}.rag-seg .seg-opt:has(#rag-w45){display:none}.rag-seg .seg-track:has(#rag-w45:checked):before{display:none}.rag-narrow[data-hide="60"]{display:none}.rag-narrow[data-hide="45"]{display:block}}@media (pointer:coarse),(pointer:none){.rag-seg .seg-track{--c:1}.rag-hint{display:none}.rag-seg .seg-opt:has(#rag-free){display:none}}@media (width<=47.49rem){.rag-stage{padding-inline:var(--side)}}.p-rag .ln-last{transform-box:fill-box;transform-origin:0}@media (prefers-reduced-motion:no-preference){.card:is(:hover,:focus-within) .p-rag .ln-last{animation:p-rag 2.4s var(--ease-in-out) infinite}}@keyframes p-rag{0%,15%,to{transform:scaleX(1)}40%,60%{transform:scaleX(2.6)}80%{transform:scaleX(1.8)}}#scrub-number>.fig-stage{display:grid}.sn{align-content:center;gap:var(--s-5);padding:var(--s-5) var(--s-4);display:grid}.sn-row{align-items:center;gap:var(--s-2) var(--s-4);flex-wrap:wrap;display:flex}.sn-field{background:var(--inset);border:1px solid var(--rule-strong);border-radius:var(--r-2);align-items:stretch;height:2rem;display:inline-flex}.sn-field:has(input:focus-visible){border-color:var(--signal);outline:2px solid var(--focus);outline-offset:1px}@supports selector(:has(*)){.sn-field input:focus-visible{outline:none}}.sn-handle{width:2rem;font:600 var(--fs-meta)/1 var(--f-ui);font-variation-settings:"MONO" 0;color:var(--ink-2);border-right:1px solid var(--rule);border-radius:calc(var(--r-2) - 1px) 0 0 calc(var(--r-2) - 1px);cursor:ew-resize;touch-action:none;-webkit-user-select:none;user-select:none;transition:color var(--dur-hover) var(--ease-out), background-color var(--dur-hover) var(--ease-out);justify-content:center;align-items:center;display:flex}@media (hover:hover){.sn-handle:hover{color:var(--signal-hi);background:var(--wash)}}.sn[data-dragging] .sn-handle{color:var(--signal-hi);background:var(--wash)}.sn-field input{width:7ch;font-size:var(--fs-meta);line-height:var(--lh-meta);color:var(--ink);background:0 0;border:0;padding:0 .5rem}.sn-hint{font-size:var(--fs-micro);line-height:var(--lh-micro);color:var(--ink-3);margin:0}.sn-base{row-gap:.25rem;display:grid}.sn-base-l{font:450 var(--fs-meta)/var(--lh-meta) var(--f-ui);font-variation-settings:"MONO" 0;color:var(--ink-2)}@media (pointer:coarse){.sn-field{height:2.75rem}.sn-field input{font-size:max(1rem, var(--fs-meta));width:8ch}.sn-handle{width:2.75rem}}.sn-axis{margin:0 0 var(--s-2);font-size:var(--fs-micro);line-height:var(--lh-micro);color:var(--ink-3)}.sn-plot{border-left:1px solid var(--rule-strong);border-bottom:1px solid var(--rule-strong);height:160px;margin:0 .25rem 1.75rem 2rem;position:relative}.sn-plot svg{width:100%;height:100%;position:absolute;inset:0;overflow:visible}.sn-y,.sn-x,.sn-ref{font-size:var(--fs-micro);line-height:var(--lh-micro);color:var(--ink-3);white-space:nowrap;position:absolute}.sn-y{right:calc(100% + .5rem);translate:0 -50%}.sn-x{top:calc(100% + .375rem);translate:-50%}.sn-x-unit{top:calc(100% + 1.375rem);translate:-100%}.sn-ref{right:.25rem;translate:0 -125%}.sn-plot path,.sn-strip path{vector-effect:non-scaling-stroke;fill:none}.sn-lin{stroke:var(--ink-3);stroke-width:1px;stroke-opacity:.7}.sn-curve{stroke:var(--fig-a);stroke-width:1.5px;stroke-linejoin:round}.sn-rug{stroke:var(--ink-3);stroke-width:1px}.sn-cur{background:var(--fig-current);width:10px;height:10px;box-shadow:0 0 0 2px var(--sheet);pointer-events:none;position:absolute;translate:-50% -50%;rotate:45deg}.sn-stripbox{margin:0 .25rem 0 2rem}.sn-legend{gap:var(--s-1) var(--s-4);margin:0 0 var(--s-2);font-size:var(--fs-micro);line-height:var(--lh-micro);color:var(--ink-2);flex-wrap:wrap;padding:0;list-style:none;display:flex}.sn-legend li{align-items:center;gap:.375rem;display:flex}.sn-legend li:before{content:"";flex:none}.sn-legend [data-k=raw]:before{border-radius:var(--r-dot);background:var(--ink-3);width:4px;height:4px}.sn-legend [data-k=avg]:before{background:var(--fig-a);width:14px;height:1.5px}.sn-strip{border-bottom:1px solid var(--rule);width:100%;height:48px;display:block;overflow:visible}.sn-raw{stroke:var(--ink-3);stroke-width:3px;stroke-linecap:round}.sn-avg{stroke:var(--fig-a);stroke-width:1.5px;stroke-linejoin:round}@media (forced-colors:active){.sn-cur{forced-color-adjust:none;background:highlight}}@media (prefers-reduced-motion:no-preference){.card:is(:hover,:focus-within) .p-sn .mv{animation:2.4s linear infinite p-sn}}@keyframes p-sn{0%,10%,to{transform:translate(0)}30%{transform:translate(48px,-15.5px)}45%{transform:translate(96px,-35.7px)}60%,80%{transform:translate(144px,-59.5px)}}#spring-to-linear{container-type:inline-size}#spring-to-linear>.fig-stage{display:grid}.s2l{align-content:center;gap:var(--s-5);padding:var(--s-5) var(--s-4);display:grid}@container (width>=38rem){.s2l{align-items:center;column-gap:var(--s-6);grid-template-columns:minmax(0,1fr) 15rem}}.s2l-legend{gap:var(--s-1) var(--s-4);margin:0 0 var(--s-4);font-size:var(--fs-micro);line-height:var(--lh-micro);color:var(--ink-2);flex-wrap:wrap;padding:0;list-style:none;display:flex}@container (width<=21.99rem){.s2l-legend{min-height:2.25rem}}.s2l-legend li{align-items:center;gap:.375rem;display:flex}.s2l-legend li:before{content:"";flex:none}.s2l-legend [data-k=a]:before{border-radius:var(--r-dot);background:var(--fig-a);width:6px;height:6px;box-shadow:0 0 0 3px color-mix(in oklab, var(--fig-a) 32%, transparent)}.s2l-legend [data-k=cur]:before{background:conic-gradient(from 45deg, var(--fig-current) 25%, transparent 0 50%, var(--fig-current) 0 75%, transparent 0) center / 5px 5px no-repeat, linear-gradient(var(--fig-current), var(--fig-current)) center / 100% 1px no-repeat;width:14px;height:7px}.s2l-legend [data-k=band]:before{background:var(--fig-band);width:12px;height:8px;box-shadow:inset 0 0 0 1px var(--ink-3)}.s2l-legend [data-k=raw]:before{border-radius:var(--r-dot);background:var(--ink-3);width:3px;height:3px}.s2l-legend [data-k=miss]:before{background:var(--fig-miss);width:1px;height:10px}.s2l-plot{border-left:1px solid var(--rule-strong);border-bottom:1px solid var(--rule-strong);height:220px;margin:0 .25rem 1.75rem 1.5rem;position:relative}.s2l-plot svg{width:100%;height:100%;position:absolute;inset:0;overflow:visible}.s2l-g{border-top:1px dashed var(--rule-strong);position:absolute;left:0;right:0}.s2l-y,.s2l-x{font-size:var(--fs-micro);line-height:var(--lh-micro);color:var(--ink-3);white-space:nowrap;position:absolute}.s2l-y{right:calc(100% + .5rem);translate:0 -50%}.s2l-x{z-index:1;background:var(--sheet);padding-inline:.125rem;top:calc(100% + .375rem);translate:-50%}.s2l-x-end{color:var(--ink-2);translate:-100%}.s2l-plot path,.s2l-plot rect{vector-effect:non-scaling-stroke}.s2l-band{fill:var(--fig-band)}.s2l-curve{fill:none;stroke:var(--fig-a);stroke-opacity:.32;stroke-width:4px;stroke-linecap:round;stroke-linejoin:round}.s2l-lin{fill:none;stroke:var(--fig-current);stroke-width:1.25px;stroke-linejoin:round}.s2l-mk,.s2l-pt{pointer-events:none;position:absolute;translate:-50% -50%}.s2l-mk{border-radius:var(--r-dot);background:var(--fig-a);width:6px;height:6px}.s2l-pt{background:var(--fig-current);width:7px;height:7px;box-shadow:0 0 0 1.5px var(--sheet);rotate:45deg}.s2l-raw{fill:none;stroke:var(--ink-3);stroke-width:1.5px;stroke-linecap:round}.s2l-whisk{fill:none;stroke:var(--fig-miss);stroke-width:1px;stroke-opacity:.42}.s2l-head{fill:none;stroke:var(--ink-3);stroke-width:1px}.s2l-hdot{fill:none;stroke:var(--fig-current);stroke-width:8px;stroke-linecap:round}.s2l[data-trick] .s2l-curve{stroke-opacity:.16}.s2l-tracks{gap:var(--s-4);align-content:center;justify-items:start;display:grid}.s2l-tl{font-size:var(--fs-micro);line-height:var(--lh-micro);color:var(--ink-2);margin:0 0 .375rem}.s2l-rail{border-bottom:1px solid var(--rule-strong);width:240px;height:25px;position:relative}.s2l-rail:before{content:"";background:var(--rule-strong);width:1px;height:4px;position:absolute;bottom:-4px;left:0}.s2l-rest,.s2l-ghost,.s2l-sq{width:24px;height:24px;position:absolute;top:0}.s2l-rest{outline:1px dashed var(--rule-strong);outline-offset:-1px}.s2l-sq{will-change:transform;left:0}.s2l-track[data-kind=linear] .s2l-sq{background:var(--fig-current)}.s2l-track[data-kind=ease] .s2l-sq{background:var(--sheet);box-shadow:inset 0 0 0 1.5px var(--fig-a)}.s2l-track[data-kind=linear] .s2l-ghost{box-shadow:inset 0 0 0 1px var(--fig-current)}.s2l-track[data-kind=ease] .s2l-ghost{box-shadow:inset 0 0 0 1px var(--ink-3)}.s2l-note{font-size:var(--fs-micro);line-height:var(--lh-micro);color:var(--ink-3);margin:0}#spring-to-linear>.fig-controls{grid-template-columns:minmax(0,1fr);align-items:end;display:grid}#spring-to-linear>.fig-controls>.s2l-presets{grid-column:1/-1}#spring-to-linear>.fig-controls>.slider{min-width:0;max-width:none}@container (width>=24rem){#spring-to-linear>.fig-controls{grid-template-columns:repeat(2,minmax(0,1fr))}}@container (width>=38rem){#spring-to-linear>.fig-controls{grid-template-columns:repeat(4,minmax(0,1fr))}}.s2l-key{font:500 var(--fs-micro)/1 var(--f-mono);font-variation-settings:"MONO" 1;color:var(--ink-3);border:1px solid var(--rule-strong);border-radius:var(--r-1);margin-inline-start:.125rem;padding:.0625rem .25rem}@media (pointer:coarse){.s2l-key{display:none}}.s2l-code{margin:var(--s-1) 0 0;padding:var(--s-2) var(--s-3);font-size:var(--fs-micro);color:var(--ink-2);background:var(--inset);border:1px solid var(--rule);white-space:pre-wrap;overflow-wrap:anywhere;flex:100%;line-height:1.125rem}@media (forced-colors:active){.s2l-track[data-kind=linear] .s2l-sq{forced-color-adjust:none;background:highlight}.s2l-legend li:before{forced-color-adjust:none;background:canvastext}.s2l-mk,.s2l-pt{forced-color-adjust:none;box-shadow:none;background:canvastext}.s2l-pt{outline:1.5px solid canvas}.s2l-track[data-kind=ease] .s2l-sq,.s2l-ghost{box-shadow:none;border:1.5px solid canvastext}}@media (prefers-reduced-motion:no-preference){.card:is(:hover,:focus-within) .p-s2l .mv{animation:p-s2l 2.4s var(--spring-detent) infinite}}@keyframes p-s2l{0%,12%{transform:translate(0)}45%,70%{transform:translate(176px)}to{transform:translate(0)}}#wake-on-message{container-type:inline-size}#wake-on-message>.fig-stage{display:grid}.wom{gap:var(--s-6) var(--s-7);padding:var(--s-5) var(--s-4) var(--s-4);align-content:start;display:grid}@container (width>=40rem){.wom{grid-template-columns:22rem minmax(0,1fr)}}.wom-grid{aspect-ratio:1;contain:size layout style;grid-template:repeat(8,minmax(0,1fr))/repeat(8,minmax(0,1fr));gap:.25rem;width:100%;max-width:22rem;display:grid}.wom-c{min-width:0;color:var(--ink);border:1px dashed var(--rule-strong);border-radius:var(--r-1);cursor:pointer;background:0 0;padding:0;position:relative}@media (hover:hover){.wom-c:hover{border-color:var(--ink-2)}}.wom-c[data-s=w]{background:color-mix(in oklab, var(--fig-b) 10%, transparent)}.wom-c[data-s=w]:before{content:"";border-radius:inherit;background:conic-gradient(var(--fig-b) calc(var(--f) * 1turn), transparent 0);-webkit-mask-composite:xor;padding:2px;position:absolute;inset:-1px;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor,source-over;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0)}.wom-c[data-s=a]{color:var(--sheet);background:var(--fig-a);border:1px solid var(--fig-a)}.wom-c[data-s=a][data-f]:after{content:"";width:calc((100% - 6px) * var(--f));background:currentColor;height:2px;position:absolute;bottom:3px;left:3px}.wom-c[data-s=s]{border:1px solid var(--fig-a);background:repeating-linear-gradient(-45deg, var(--fig-a) 0 1.5px, transparent 1.5px 4px)}.wom-q{width:calc(var(--q) * 5px - 1px);background:radial-gradient(circle at 2px 2px,currentColor 1.5px,#0000 2px) 0 0/5px 4px;height:4px;position:absolute;top:3px;left:3px}.wom-v{font-size:var(--fs-micro);visibility:hidden;padding:0 .125rem;line-height:1rem;position:absolute;top:50%;left:50%;translate:-50% -50%}.wom-c:is(:hover,:focus-visible) .wom-v{visibility:visible}.wom-c[data-s=s] .wom-v{color:var(--ink);background:var(--sheet)}.wom-side{min-width:0}.wom-legend{gap:.25rem var(--s-4);margin:0 0 var(--s-5);font-size:var(--fs-micro);line-height:var(--lh-micro);color:var(--ink-2);flex-wrap:wrap;padding:0;list-style:none;display:flex}.wom-legend li{align-items:center;gap:.375rem;display:flex}.wom-legend li:before{content:"";box-sizing:border-box;border-radius:2px;flex:none;width:12px;height:12px}.wom-legend [data-s=d]:before{border:1px dashed var(--rule-strong)}.wom-legend [data-s=w]:before{border:2px solid var(--fig-b);border-left-color:#0000;border-radius:50%;rotate:45deg}.wom-legend [data-s=a]:before{background:var(--fig-a)}.wom-legend [data-s=s]:before{border:1px solid var(--fig-a);background:repeating-linear-gradient(-45deg, var(--fig-a) 0 1.5px, transparent 1.5px 4px)}.wom-legend [data-s=q]:before{background:radial-gradient(circle at 2px 2px, var(--ink) 1.5px, transparent 2px) 0 0 / 5px 4px;border-radius:0;width:14px;height:4px}.wom-h{margin:0 0 var(--s-2);font-size:var(--fs-meta);line-height:var(--lh-meta);color:var(--ink-2)}.wom-log{contain:size layout style;height:7.5rem;font-size:var(--fs-micro);color:var(--ink-2);margin:0;padding:0;line-height:1.25rem;list-style:none}.wom-log li{grid-template-columns:6ch 4ch 3ch 12px auto;align-items:center;gap:0 1ch;display:grid}.wom-log li:last-child{color:var(--ink);font-weight:600}.wom-log span:first-child{color:var(--ink-3);text-align:right;font-weight:400}.wom-log .icon{color:var(--ink-3)}.wom-gantt{margin-top:var(--s-5)}.wom-gw{grid-template-columns:auto minmax(0,1fr);gap:.5rem;display:grid}.wom-gw ol{font-size:var(--fs-micro);color:var(--ink-3);text-align:right;margin:0;padding:0;line-height:.875rem;list-style:none}.wom-gw svg{border-left:1px solid var(--rule-strong);width:100%;height:7rem;display:block}.wom-gw-w{fill:var(--fig-b)}.wom-gw-a{fill:var(--fig-a)}.wom-gw-t{stroke:var(--sheet);stroke-width:1px;vector-effect:non-scaling-stroke}.wom-ax{font-size:var(--fs-micro);line-height:var(--lh-micro);color:var(--ink-3);justify-content:space-between;margin:.25rem 0 0 2.25rem;display:flex}#wake-on-message>.fig-controls{grid-template-columns:minmax(0,1fr);display:grid}#wake-on-message>.fig-controls>.slider{min-width:0;max-width:none}@container (width>=24rem){#wake-on-message>.fig-controls{grid-template-columns:repeat(2,minmax(0,1fr))}}@container (width>=44rem){#wake-on-message>.fig-controls{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (forced-colors:active){.wom-c{border-color:buttontext}.wom-c[data-s=a]{forced-color-adjust:none;color:canvas;background:canvastext}.wom-c[data-s=w]:before{forced-color-adjust:none;background:conic-gradient(Highlight calc(var(--f) * 1turn), transparent 0)}.wom-c[data-s=s],.wom-legend [data-s=s]:before{forced-color-adjust:none;color:canvastext;background:repeating-linear-gradient(-45deg,canvastext 0 1.5px,#0000 1.5px 4px);border:1px solid canvastext}.wom-c[data-s=s] .wom-v{color:canvastext;background:canvas}.wom-q,.wom-legend li:before{forced-color-adjust:none}.wom-legend [data-s=d]:before{border-color:canvastext}.wom-legend [data-s=w]:before{border-color:highlight highlight highlight #0000}.wom-legend [data-s=a]:before{background:canvastext}.wom-legend [data-s=q]:before{background:radial-gradient(circle at 2px 2px,canvastext 1.5px,#0000 2px) 0 0/5px 4px}}@media (prefers-reduced-motion:no-preference){.card:is(:hover,:focus-within) .p-wom .mv{animation:p-wom 2.6s var(--ease-in-out) infinite}}@keyframes p-wom{0%,15%{stroke-dashoffset:56px;fill-opacity:0}55%{stroke-dashoffset:0;fill-opacity:0}70%,to{stroke-dashoffset:0;fill-opacity:1}}}@layer pages{.prose .wide:has(>.cf-fig){margin-top:2.5rem}.prose .wide:has(>.lg){margin-top:1.5rem}@media (width<=47.49rem){.prose .wide:has(>.cf-fig){margin-top:2rem}}.cf-table .cf-n{text-align:end;white-space:nowrap}.cf-table td.cf-n,.cf-path{font-family:var(--f-mono);font-variation-settings:"MONO" 1;font-weight:400;font-size:var(--fs-meta)}.cf-fonts :is(.cf-path,.cf-load){white-space:nowrap}.cf-weights .cf-path{min-width:10rem}.prose .wide:has(>.cf-table){margin-top:1.5rem;container-type:inline-size}.prose .wide:has(>.cf-table)+*{margin-top:1.5rem}.cf-axes{font:450 var(--fs-meta)/var(--lh-meta) var(--f-ui);font-variation-settings:"MONO" 0;color:var(--ink-2)}.cf-fonts :is(.cf-role,.cf-load){font-size:.9375rem}@container (width<=34rem){.prose .cf-table{display:block;overflow:visible}.cf-table thead{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.cf-table tbody{display:block}.cf-table tr{column-gap:var(--s-3);border-bottom:1px solid var(--rule);padding-block:.5rem;display:grid}.prose .cf-table td{text-align:start;border:0;width:auto;padding:0;display:block}.cf-fonts tr{grid-template-columns:minmax(0,1fr) auto}.cf-fonts .cf-path{grid-area:1/1}.prose .cf-fonts .cf-n{text-align:end;grid-area:1/2}.cf-fonts .cf-role{grid-area:2/1}.prose .cf-fonts .cf-load{text-align:end;color:var(--ink-2);grid-area:2/2}.cf-fonts .cf-axes{grid-area:3/1/4/3}.cf-weights tr{grid-template-columns:repeat(3,minmax(0,1fr));row-gap:.375rem}.cf-weights .cf-path{overflow-wrap:anywhere;white-space:normal;grid-column:1/-1}.cf-weights td[data-label]:before{content:attr(data-label);font:450 var(--fs-micro)/var(--lh-micro) var(--f-ui);font-variation-settings:"MONO" 0;color:var(--ink-3);display:block}}@media (width<=47.49rem){.prose .cf-table{display:block;overflow:visible}.cf-table thead{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.cf-table tbody{display:block}.cf-table tr{column-gap:var(--s-3);border-bottom:1px solid var(--rule);padding-block:.5rem;display:grid}.prose .cf-table td{text-align:start;border:0;width:auto;padding:0;display:block}.cf-fonts tr{grid-template-columns:minmax(0,1fr) auto}.cf-fonts .cf-path{grid-area:1/1}.prose .cf-fonts .cf-n{text-align:end;grid-area:1/2}.cf-fonts .cf-role{grid-area:2/1}.prose .cf-fonts .cf-load{text-align:end;color:var(--ink-2);grid-area:2/2}.cf-fonts .cf-axes{grid-area:3/1/4/3}.cf-weights tr{grid-template-columns:repeat(3,minmax(0,1fr));row-gap:.375rem}.cf-weights .cf-path{overflow-wrap:anywhere;white-space:normal;grid-column:1/-1}.cf-weights td[data-label]:before{content:attr(data-label);font:450 var(--fs-micro)/var(--lh-micro) var(--f-ui);font-variation-settings:"MONO" 0;color:var(--ink-3);display:block}}.cb .cb-prop{color:var(--code-fn)}.cb .cb-str{color:var(--code-str)}.cb .cb-num{color:var(--code-num)}.cf-v{font:400 var(--fs-meta)/1.5rem var(--f-mono);font-variation-settings:"MONO" 1}.cf-pipe-stage{padding:var(--s-5) var(--s-4);justify-content:center;display:flex}.cf-pipe{max-width:100%;height:auto;display:block}.cf-pipe-v{display:none}@media (width<=69.99rem){.cf-pipe-h{display:none}.cf-pipe-v{display:block}}.cf-box{fill:var(--sheet);stroke:var(--rule-strong);stroke-width:1px}.cf-arrow{fill:none;stroke:var(--ink-2);stroke-width:1.25px;stroke-linecap:round;stroke-linejoin:round}.cf-label{fill:var(--ink-3);font:450 12px/1 var(--f-ui);font-variation-settings:"MONO" 0}.cf-val{fill:var(--ink);font:400 12px/1 var(--f-mono);font-variation-settings:"MONO" 1}.ct-pair{gap:var(--s-6);padding:var(--s-4);display:grid}@media (width>=70rem){.ct-pair{gap:var(--s-5);grid-template-columns:repeat(2,minmax(0,1fr))}}.ct{border-collapse:collapse;table-layout:fixed;width:100%}.ct-cap{caption-side:top;padding-bottom:var(--s-2);text-align:start;font:600 var(--fs-meta)/var(--lh-meta) var(--f-ui);font-variation-settings:"MONO" 0;color:var(--ink)}.ct th,.ct td{vertical-align:top;padding:.375rem .5rem}.ct thead th{font:400 var(--fs-micro)/var(--lh-micro) var(--f-mono);font-variation-settings:"MONO" 1;text-align:end;padding-block:.5rem}.ct .ct-fg{text-align:start;border-top:1px solid var(--rule);background:0 0;width:6.75rem;padding-inline-start:0}.ct thead .ct-fg{border-top:0}.ct tbody td{border-top:1px solid var(--ct-rule);text-align:end}.ct-name{font:400 var(--fs-meta)/1rem var(--f-mono);font-variation-settings:"MONO" 1;color:var(--ink);white-space:nowrap;display:block}.ct-need{font:450 var(--fs-micro)/var(--lh-micro) var(--f-ui);font-variation-settings:"MONO" 0;color:var(--ink-3);display:block}.ct-ratio{font:500 var(--fs-meta)/1rem var(--f-mono);font-variation-settings:"MONO" 1;display:block}.ct-level{font:400 var(--fs-micro)/var(--lh-micro) var(--f-mono);font-variation-settings:"MONO" 1;display:block}.ct-line{vertical-align:.3em;width:.875rem;height:2px;margin-inline-end:.375rem;display:inline-block}@media (width<=29.99rem){.ct-pair{padding-inline:var(--s-3)}.ct .ct-fg{width:5.25rem}.ct-name{font-size:var(--fs-micro)}.ct th,.ct td{padding-inline:.25rem}.ct-ratio{font-size:var(--fs-micro);white-space:nowrap}.ct-line{margin:.25rem 0 .25rem auto;display:block}}.mc-grid{gap:var(--s-5) var(--s-4);padding:var(--s-5) var(--s-4);grid-template-columns:repeat(12,minmax(0,1fr));display:grid}.mc-tile{flex-direction:column;grid-column:span 3;align-items:center;min-width:0;margin:0;display:flex}.mc-tile[data-kind=spring]{grid-column:span 4}@media (width<=69.99rem){.mc-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.mc-tile,.mc-tile[data-kind=spring]{grid-column:auto}}.mc-plot{display:block;overflow:visible}.mc-guide{fill:none;stroke:var(--rule-strong);stroke-width:1px;stroke-dasharray:3 3}.mc-axis{fill:none;stroke:var(--rule-strong);stroke-width:1px}.mc-curve{fill:none;stroke:var(--ink-2);stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round}.mc-end{fill:var(--ink-2)}.mc-tile figcaption{margin-top:var(--s-2);text-align:center;justify-items:center;gap:.125rem;display:grid}.mc-name{font:400 var(--fs-meta)/var(--lh-meta) var(--f-mono);font-variation-settings:"MONO" 1;color:var(--ink)}.mc-detail{font:450 var(--fs-micro)/var(--lh-micro) var(--f-ui);font-variation-settings:"MONO" 0;color:var(--ink-3);text-wrap:balance}.lg{gap:var(--s-5);grid-template-columns:minmax(0,1fr);display:grid}@media (width>=47.5rem){.lg{grid-template-columns:repeat(2,minmax(0,1fr))}.lg>:last-child:nth-child(odd){grid-column:1/-1}}.lg-cell{flex-direction:column;display:flex}.lg-nos{font-size:var(--fs-meta);line-height:var(--lh-meta);color:var(--ink-2)}.lg-cell .sheet-title{color:var(--ink-2)}.lg-stage{min-height:7.5rem;padding:var(--s-4);justify-content:center;align-items:center;display:flex}.lg-cell .sheet-foot{color:var(--ink-2);flex:1}.lg-pic{align-items:center;gap:var(--s-3);flex-direction:column;display:flex}.lg-num-wrap{align-items:center;gap:var(--s-2);flex-direction:column;display:flex}.lg-num{font:400 1.375rem/1 var(--f-mono);font-variation-settings:"MONO" 1;color:var(--ink);text-decoration-line:underline;text-decoration-style:dashed;-webkit-text-decoration-color:var(--signal);text-decoration-color:var(--signal);text-underline-offset:.28em;text-decoration-thickness:1px}.lg-drag{color:var(--ink-3);gap:.125rem;display:flex}.lg-terms{justify-content:center;gap:.25rem var(--s-4);font:400 1rem/1.5rem var(--f-text);color:var(--ink);flex-wrap:wrap;margin:0;display:flex}.lg-mini{display:block;overflow:visible}.lg-axis{fill:none;stroke:var(--rule-strong);stroke-width:1px}.lg-mini [data-part~=a]{fill:var(--fig-a);stroke:var(--fig-a);stroke-width:0;transition:stroke-width var(--dur-hover) var(--ease-out)}.lg-mini [data-part~=b]{fill:var(--fig-b);stroke:var(--fig-b);stroke-width:0;stroke-linejoin:round;transition:stroke-width var(--dur-hover) var(--ease-out)}.lg-transport{justify-content:center;align-items:center;gap:var(--s-1);flex-wrap:wrap;display:flex}.lg-btn,.lg-seg{height:1.75rem;font:500 var(--fs-meta)/1 var(--f-ui);font-variation-settings:"MONO" 0;color:var(--ink-2);background:var(--sheet);border:1px solid var(--rule-strong);border-radius:var(--r-2);align-items:center;gap:.375rem;padding:0 .5rem;display:inline-flex}.lg-btn .icon{color:var(--ink-2)}.lg-icon{padding:0 .4375rem}.lg-seg{gap:0;padding:0;overflow:hidden}.lg-seg>span{height:100%;font-family:var(--f-mono);font-variation-settings:"MONO" 1;align-items:center;padding:0 .5rem;font-weight:400;display:flex}.lg-seg>.on{color:var(--signal-hi);background:var(--wash);box-shadow:inset 0 0 0 1px var(--signal);border-radius:calc(var(--r-2) - 1px)}.lg-guide{fill:color-mix(in oklab, var(--signal) 5%, transparent);stroke:color-mix(in oklab, var(--signal) 55%, transparent);stroke-width:1px;stroke-dasharray:3 2}.lg-lines{fill:none;stroke:var(--ink-3);stroke-width:1.5px;stroke-linecap:round}.lg-dim{fill:none;stroke:var(--signal);stroke-width:1px}.lg-foot-row{justify-content:space-between;align-items:center;gap:var(--s-3);flex-wrap:wrap;display:flex}.lg-foot-row>span{flex:14rem}@media (forced-colors:active){.cf-box{stroke:canvastext}.ct td,.ct thead th{forced-color-adjust:none}}.home-sec+.home-sec{margin-top:var(--s-9)}.home-statement{margin-top:.625rem}.home-build{font-size:.92em;font-weight:500}.home-lede{margin-top:var(--s-5);color:var(--ink-2)}.home-role{margin-top:var(--s-5)}.home-links{margin-top:var(--s-5);font:500 var(--fs-ui)/var(--lh-ui) var(--f-ui);font-variation-settings:"MONO" 0;flex-wrap:wrap;padding:0;list-style:none;display:flex}.home-links li+li:before{content:"·";content:"·" / "";color:var(--ink-3);padding-inline:.625rem}.home-links a{color:var(--ink);padding-block:.25rem}.home-links .icon,.home-about .icon{vertical-align:-.0625rem;color:var(--ink-3);margin-inline-start:.1875rem}@media (width>=70rem){.home-hero{grid-column:gutter-start/margin-end;grid-template-columns:subgrid;align-content:start;display:grid}.home-hero>*{grid-column:main}.home-hero>.home-role{grid-area:2/margin/span 3;align-self:start;width:auto;margin:1.625rem 0 0}}@media (width<=69.99rem){.home-fig-label{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}}@media (width>=70rem){.home-fig{grid-column:gutter-start/margin-end;grid-template-columns:subgrid;align-content:start;display:grid}.home-fig>*{grid-column:main}.home-fig>.xs{grid-area:1/main-start/auto/margin-end}.home-fig>.home-fig-label{grid-area:1/gutter;margin-top:.9375rem}}.xs{container-type:inline-size}.xs-grid{grid-template-columns:minmax(0,1fr);display:grid}.xs-row{display:contents}.xs-row+.xs-row>.xs-lname{border-top:1px dashed var(--rule)}.xs-row>:first-child{grid-column:1}.xs-lname{padding:.75rem var(--side) 0;margin:0}.xs-lt{font:600 var(--fs-meta)/var(--lh-meta) var(--f-ui);color:var(--ink)}.xs-lb{font:450 var(--fs-micro)/var(--lh-micro) var(--f-ui);color:var(--ink-3);margin-inline-start:.375rem}.xs-items{align-content:flex-start;align-items:flex-start;gap:var(--s-1) var(--s-2);padding:.25rem calc(var(--side) - .375rem) .5rem;flex-wrap:wrap;margin:0;list-style:none;display:flex}.xs-items>li{display:flex}.xs-item{border-radius:var(--r-2);min-height:1.75rem;color:var(--ink);transition:background-color var(--dur-hover) var(--ease-out), color var(--dur-hover) var(--ease-out);align-items:baseline;gap:.375rem;padding:.25rem .375rem;text-decoration:none;display:inline-flex}.xs-item .xs-ai{align-self:center}.xs-ai{color:var(--signal)}.xs-name{font:500 var(--fs-ui)/var(--lh-ui) var(--f-mono);font-variation-settings:"MONO" 1;text-underline-offset:.22em;transition:text-decoration-color var(--dur-hover) var(--ease-out);-webkit-text-decoration:underline #0000;text-decoration:underline #0000;text-decoration-thickness:1px}.xs-lang{font:400 var(--fs-micro)/var(--lh-micro) var(--f-mono);font-variation-settings:"MONO" 1;color:var(--ink-3)}@media (hover:hover){.xs-item:hover{color:var(--ink);background:var(--inset)}.xs-item:hover .xs-name{-webkit-text-decoration-color:var(--signal);text-decoration-color:var(--signal)}}.xs-item:focus-visible{color:var(--ink);background:var(--inset)}.xs-item:focus-visible .xs-name{-webkit-text-decoration-color:var(--signal);text-decoration-color:var(--signal)}.xs-item:active{color:var(--signal-hi)}.xs-agents{border-top:1px solid var(--rule);background:color-mix(in oklab, var(--wash) 40%, transparent)}@media (width>=47.5rem){.xs-grid{grid-template-columns:10rem minmax(0,1fr)}.xs-lname{padding:.75rem var(--s-4);background:var(--sheet)}.xs-lt,.xs-lb{display:block}.xs-lb{margin:0}.xs-row>.xs-lname,.xs-agents>.xs-lname{border-right:1px solid var(--rule)}.xs-items{padding:.5rem calc(var(--s-4) - .375rem)}.xs-row>.xs-items{grid-column:2}.xs-row+.xs-row>.xs-items{border-top:1px dashed var(--rule)}.xs-agents{grid-column:1/-1;grid-template-columns:subgrid;display:grid}.xs-agents>.xs-lname{background:0 0}}@media (width>=70rem){@container (width>=50rem){.xs-grid{grid-template-columns:10rem minmax(0, 1fr) calc(var(--margin-w) - 1px)}.xs-agents{border-top:0;border-left:1px solid var(--rule);grid-area:1/3/span 4;display:block}.xs-agents>.xs-lname{border-right:0}.xs-agents .xs-items{flex-direction:column;align-items:flex-start;padding-top:0}}}@supports not selector(:has(*)){.xs-toggle{display:none}}.xs-toggle{border-radius:var(--r-2);min-height:2rem;font:500 var(--fs-ui)/var(--lh-ui) var(--f-ui);font-variation-settings:"MONO" 0;color:var(--ink);cursor:pointer;transition:background-color var(--dur-hover) var(--ease-out), color var(--dur-hover) var(--ease-out);align-items:center;gap:.5rem;padding-inline:.5rem;display:inline-flex}.xs-toggle:has(:checked){color:var(--signal-hi)}@media (hover:hover){.xs-toggle:hover{background:var(--inset)}}.xs-check{width:1.125rem;height:1.125rem;accent-color:var(--signal);cursor:pointer;margin:0}.xs:has(#xs-ai:checked) .xs-item:not([data-ai]){color:var(--ink-3)}.xs:has(#xs-ai:checked) .xs-item[data-ai]{background:var(--wash);box-shadow:inset 0 0 0 1px var(--signal)}@media (hover:hover){.xs:has(#xs-ai:checked) .xs-item:not([data-ai]):hover{color:var(--ink)}}.xs:has(#xs-ai:checked) .xs-item:not([data-ai]):focus-visible{color:var(--ink)}@media (hover:hover){.xs-row>.xs-lname:hover,.xs-row>.xs-lname:hover~*{background-color:var(--inset)}}@media (pointer:coarse){.xs-item{align-items:center;min-height:2.75rem}.xs-toggle{min-height:2.75rem}.home-links a{padding-block:.75rem}}.xs-cap{margin-top:var(--s-2)}.xs-capn{color:var(--ink-2);font-weight:600}.xs-cap .xs-ai{vertical-align:-.0625rem}.xs-legend{white-space:nowrap}.xs-more{width:fit-content;margin-top:var(--s-4);font:500 var(--fs-ui)/var(--lh-ui) var(--f-ui);font-variation-settings:"MONO" 0;color:var(--ink);display:block}.xs-more .icon{vertical-align:-.0625rem;color:var(--ink-2);margin-inline-start:.375rem}.home-about{scroll-margin-top:var(--s-6)}.home-handle{font:400 .875em/1 var(--f-mono);font-variation-settings:"MONO" 1}.home-about dd a,.home-links a{white-space:nowrap}@media (width<=47.49rem){.home-sec+.home-sec{margin-top:var(--s-8)}}@media (prefers-reduced-transparency:reduce){.xs-agents{background:color-mix(in oklab, var(--wash) 40%, var(--sheet))}}@media (forced-colors:active){.xs:has(#xs-ai:checked) .xs-item[data-ai]{outline-offset:-2px;outline:2px solid highlight}.xs:has(#xs-ai:checked) .xs-item:not([data-ai]){color:graytext}.xs-ai{color:inherit}}@media print{.xs-toggle{display:none}}.lab-head{margin-bottom:var(--s-8)}.lab-head .t-page{margin:0}.lab-head .t-lead{margin-top:var(--s-4)}.lab-group+.lab-group{margin-top:var(--s-8)}.lab-grid{gap:var(--s-5);margin:var(--s-5) 0 0;grid-template-columns:minmax(0,1fr);padding:0;list-style:none;display:grid}.lab-grid>li{min-width:0;display:flex}@media (width>=47.5rem){.lab-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=70rem){.lab-group>.lab-grid{grid-column:main-start/margin-end;grid-template-columns:repeat(3,minmax(0,1fr))}}.pc{background:var(--sheet);border:1px solid var(--rule);border-radius:var(--r-0);min-width:0;transition:border-color var(--dur-hover) var(--ease-out);flex-direction:column;flex:1;display:flex;position:relative}.pc:before,.pc:after{content:"";pointer-events:none;background:linear-gradient(var(--rule-strong), var(--rule-strong)) center / 1px 100% no-repeat, linear-gradient(var(--rule-strong), var(--rule-strong)) center / 100% 1px no-repeat;width:11px;height:11px;position:absolute}.pc:before{top:-6px;left:-6px}.pc:after{bottom:-6px;right:-6px}.pc-poster{border-bottom:1px solid var(--rule)}.pc-ph{max-width:80%;font:450 var(--fs-meta)/var(--lh-meta) var(--f-ui);font-variation-settings:"MONO" 0;color:var(--ink-3);text-align:center}.pc-body{padding:var(--s-3) var(--s-4) var(--s-4);flex-direction:column;flex:1;display:flex}.pc-meta{--sep:3ch;margin:0 0 0 calc(-1 * var(--sep));font:400 var(--fs-meta)/var(--lh-meta) var(--f-mono);font-variation-settings:"MONO" 1;color:var(--ink-3)}.pc-title{margin:var(--s-1) 0 0;font:var(--fw-row) var(--fs-row)/var(--lh-row) var(--f-text);text-wrap:balance}.pc-title a{color:var(--ink);text-decoration-line:none}.pc-dek{margin:var(--s-1) 0 0;font:400 .9375rem/1.5rem var(--f-text);color:var(--ink-2);text-wrap:balance}.pc-js{padding-top:var(--s-3);font-size:var(--fs-meta);line-height:var(--lh-meta);color:var(--ink-3);align-items:center;gap:.375rem;margin:auto 0 0;display:flex}.pc-js .icon{color:var(--ink-2)}.pc-js-none .icon{color:var(--ink-3)}@media (hover:hover){.pc:hover{border-color:var(--rule-strong)}.pc:hover .pc-title a{text-decoration-line:underline}}.pc:focus-within{border-color:var(--rule-strong)}.pc:has(.stretch:focus-visible){outline:2px solid var(--focus);outline-offset:2px}@supports selector(:has(*)){.pc .stretch:focus-visible{outline:none}}@media (width<=47.49rem){.lab-head{margin-bottom:var(--s-7)}.lab-group+.lab-group{margin-top:var(--s-7)}.lab-grid{gap:var(--s-6)}}@media (forced-colors:active){.pc{border-color:canvastext}.pc:before,.pc:after{display:none}}@media (width>=47.5rem){.entry[data-kind=lab] .prose :is(th,td):first-child:not(:where(.sheet,[data-island]) *){white-space:nowrap;width:1%}}.nf-head{margin-bottom:var(--s-7)}.nf-head .t-page{margin:0}.nf-path{margin:var(--s-3) 0 0;font:400 1rem/1.5rem var(--f-mono);font-variation-settings:"MONO" 1;color:var(--ink-2);overflow-wrap:anywhere}.nf-head .t-lead{margin:var(--s-4) 0 0}.nf-close{margin:var(--s-5) 0 0;font:500 var(--fs-ui)/var(--lh-ui) var(--f-ui);font-variation-settings:"MONO" 0;color:var(--ink-2)}.nf-close a{min-width:1.5rem;font-family:var(--f-mono);font-variation-settings:"MONO" 1;color:var(--ink);overflow-wrap:anywhere;padding-block:.125rem;font-weight:400;display:inline-block}.rt{--rt-check:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3.5 8.5l3 3 6-7'/%3E%3C/svg%3E")}.rt-list{column-gap:var(--s-3);padding:var(--s-2) 0;grid-template-columns:auto auto auto auto 1fr auto;margin:0;list-style:none;display:grid}.rt-list>li{grid-column:1/-1;grid-template-columns:subgrid;display:grid}.rt-list>li+li{border-top:1px solid var(--rule)}.rt-row{grid-column:1/-1;grid-template-columns:subgrid;min-height:2rem;padding:.375rem var(--s-4);font:400 var(--fs-ui)/var(--lh-ui) var(--f-mono);font-variation-settings:"MONO" 1;color:var(--ink);transition:background-color var(--dur-hover) var(--ease-out);align-items:center;text-decoration:none;display:grid}.rt-m,.rt-h{font-size:var(--fs-meta);color:var(--ink-3)}.rt-m:before{content:"GET";content:"GET" / ""}.rt-p[data-path]{overflow-wrap:anywhere}.rt-to{color:var(--ink-3)}.rt-s{grid-column:6;justify-content:flex-end;min-width:.875rem;display:flex}a.rt-row:focus-visible{outline-offset:-2px;border-radius:var(--r-1)}@media (hover:hover){a.rt-row:hover{color:var(--ink);background:var(--inset)}a.rt-row:hover .rt-p{text-decoration-line:underline;-webkit-text-decoration-color:var(--signal);text-decoration-color:var(--signal);text-underline-offset:.22em;text-decoration-thickness:1px}}.rt-row[aria-current=true]{background:var(--wash)}.rt-row[aria-current=true] .rt-h{color:var(--signal-hi)}.rt-row[aria-current=true] .rt-s:before{content:"";background:var(--signal);width:.875rem;height:.875rem;-webkit-mask:var(--rt-check) center / contain no-repeat;-webkit-mask:var(--rt-check) center / contain no-repeat;mask:var(--rt-check) center / contain no-repeat}.rt-list>.rt-miss{border-top-style:dashed;border-top-color:var(--rule-strong)}.rt-miss .rt-s{color:var(--rust)}@media (width<=47.49rem){.nf-head{margin-bottom:var(--s-6)}.rt-list{column-gap:var(--s-2)}.rt-row{padding-inline:var(--side)}}@media (forced-colors:active){.rt-row[aria-current=true]{outline-offset:-2px;outline:2px solid highlight}.rt-row[aria-current=true] .rt-s:before{forced-color-adjust:none;background:highlight}}@media (width>=70rem){.projects{grid-column:gutter-start/margin-end;grid-template-columns:subgrid;align-content:start;display:grid}.projects>*{grid-column:main}.projects>:is(.pj-head,.ledger){grid-column:gutter-start/margin-end}.projects>.lf{grid-column:main-start/margin-end}}.pj-head{margin-bottom:var(--s-7)}.pj-head .t-page{margin:0}.pj-head .t-lead{margin:var(--s-4) 0 0}.pj-gh{margin:var(--s-3) 0 0;font:400 var(--fs-meta)/var(--lh-meta) var(--f-mono);font-variation-settings:"MONO" 1}.pj-gh a{color:var(--ink-2)}.pj-gh .icon{vertical-align:-.0625rem;color:var(--ink-3);margin-inline-start:.25rem}@media (width>=70rem){.pj-head{grid-template-columns:subgrid;display:grid}.pj-head>*{grid-column:main}.pj-head>.pj-gh{grid-area:2/margin;place-self:last baseline end;margin:0}}.lf{min-width:0;margin:0 0 var(--s-8);border:0;padding:0;position:relative}@supports not selector(:has(*)){.lf{display:none}}.lf-legend{margin-bottom:var(--s-2);font:450 var(--fs-meta)/var(--lh-meta) var(--f-ui);font-variation-settings:"MONO" 0;color:var(--ink-3);padding:0;display:block}.lf-opts{gap:var(--s-1);flex-wrap:wrap;margin-inline:-.625rem;display:flex}.lf-opt{border-radius:var(--r-2);font:500 var(--fs-ui)/var(--lh-ui) var(--f-ui);font-variation-settings:"MONO" 0;color:var(--ink-2);white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none;transition:color var(--dur-hover) var(--ease-out), background-color var(--dur-hover) var(--ease-out);padding:.375rem .625rem;display:inline-block}.lf-n{font:400 var(--fs-meta)/1 var(--f-mono);font-variation-settings:"MONO" 1;color:var(--ink-3);transition:color var(--dur-hover) var(--ease-out)}@media (hover:hover){.lf-opt:hover{color:var(--ink);background:var(--inset)}}.lf-input:checked+.lf-opt{color:var(--signal-hi);background:var(--wash);box-shadow:inset 0 0 0 1px var(--signal)}.lf-input:checked+.lf-opt .lf-n{color:var(--signal-hi)}.lf-input:focus-visible+.lf-opt{outline:2px solid var(--focus);outline-offset:2px}@media (pointer:coarse){.lf-opt{text-align:center;min-inline-size:2.75rem;padding-block:.75rem}}@media (width>=70rem){.lf-legend{top:.375rem;right:calc(100% + var(--gap-1));white-space:nowrap;margin:0;position:absolute}}.pj-group+.pj-group{margin-top:var(--s-7)}.pj-featured+.pj-group,.pj-also{margin-top:var(--s-8)}.ss-grid{gap:var(--s-5);margin-top:var(--s-5);grid-template-columns:minmax(0,1fr);display:grid}@media (width>=70rem){.pj-featured>.ss-grid{grid-column:main-start/margin-end;grid-template-columns:repeat(2,minmax(0,1fr))}}.ss{min-width:0;transition:border-color var(--dur-hover) var(--ease-out);flex-direction:column;display:flex}.ss>.sheet-head{flex-wrap:nowrap;padding-inline-end:var(--s-4)}.ss-name{min-width:0;font:500 1rem/1.5rem var(--f-mono);font-variation-settings:"MONO" 1;overflow-wrap:anywhere;flex:auto;margin:0}.ss-name a{color:var(--ink);text-decoration-line:none}.ss-lang,.repo-meta{font:400 var(--fs-meta)/var(--lh-meta) var(--f-mono);font-variation-settings:"MONO" 1;color:var(--ink-3);white-space:nowrap;margin:0}:is(.ss-lang,.repo-meta) .icon{vertical-align:-.0625rem;margin-inline-start:.375rem}.ss-stage{border-bottom:1px solid var(--rule);pointer-events:none;justify-content:center;align-items:center;height:10rem;display:flex;overflow:hidden}.ss-stage .glyph-l{width:20rem;max-width:100%;height:auto}.ss-body{padding:var(--s-4);flex-direction:column;flex:1;display:flex}.ss-sum{font:var(--fw-row-dek) var(--fs-row-dek)/var(--lh-row-dek) var(--f-text);color:var(--ink-2)}.ss-spec{padding-top:var(--s-4);margin-top:auto}.ss-spec .spec-row:last-child{padding-bottom:0}.ss-url{font:400 var(--fs-meta)/1.5rem var(--f-mono);font-variation-settings:"MONO" 1}.ss-url>span{white-space:nowrap}@media (width>=47.5rem){.ss-spec .spec-row{grid-template-columns:6rem minmax(0,1fr)}}@media (width<=47.49rem){.ss>.sheet-head{padding-inline-end:var(--side)}.ss-body{padding-inline:var(--side)}}@media (hover:hover){.ss:hover{border-color:var(--rule-strong)}.ss:hover .ss-name a{text-decoration-line:underline}}.ss:focus-within{border-color:var(--rule-strong)}.ss:has(.stretch:focus-visible){outline:2px solid var(--focus);outline-offset:2px}@supports selector(:has(*)){.ss .stretch:focus-visible{outline:none}}.repo{scroll-margin-top:var(--s-6)}.repo-glyph{align-items:center;height:1.5rem;display:flex}.repo-name{font:500 1rem/1.5rem var(--f-mono);font-variation-settings:"MONO" 1;overflow-wrap:anywhere;margin:0}.repo-name a{color:var(--ink);text-decoration-line:none}@media (hover:hover){.repo:hover .repo-name a{text-decoration-line:underline}}.repo-sum{margin-top:var(--s-1);font:var(--fw-row-dek) var(--fs-row-dek)/var(--lh-row-dek) var(--f-text);color:var(--ink-2)}.repo-more{gap:0 var(--s-4);margin-top:var(--s-2);font:450 var(--fs-meta)/var(--lh-meta) var(--f-ui);font-variation-settings:"MONO" 0;color:var(--ink-3);flex-wrap:wrap;display:flex}.repo-more a{z-index:1;color:var(--ink-2);position:relative}.repo-more .icon{vertical-align:-.0625rem;margin-inline-start:.25rem}.repo-also a{font-family:var(--f-mono);font-variation-settings:"MONO" 1;white-space:nowrap;font-weight:400}.repo-lang-short{display:none}.repo:target:before{box-shadow:inset 2px 0 0 var(--signal)}@media (prefers-reduced-motion:reduce){.repo:target:before{background:var(--wash)}}@media (prefers-reduced-motion:no-preference){.repo:target:before{animation:pj-target 1.2s var(--ease-out) .6s backwards}}@keyframes pj-target{0%,25%{background-color:var(--wash)}}@media (width>=70rem){.repo-glyph{grid-column:gutter;place-self:start end}.repo-main{grid-column:main}.repo-meta{text-align:end;grid-column:margin}}@media (width<=69.99rem){.repo{column-gap:var(--s-3);grid-template-columns:2.5rem minmax(0,1fr) auto;align-items:baseline;display:grid}.repo-glyph{grid-area:1/1;align-self:start}.repo-main{display:contents}.repo-name{grid-area:1/2}.repo-meta{grid-area:1/3}.repo-sum,.repo-more{grid-column:2/-1}}@media (width<=47.49rem){.repo{grid-template-columns:1.75rem minmax(0,1fr) auto}.repo-glyph .glyph-s{width:1.75rem;height:auto}.repo-lang-full{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.repo-lang-short{display:inline}}.pj-also-list{gap:var(--s-1) var(--s-5);padding:var(--s-4) 0 0;font:400 var(--fs-meta)/1.5rem var(--f-mono);font-variation-settings:"MONO" 1;flex-wrap:wrap;margin:0;list-style:none;display:flex}.pj-also-list a{color:var(--ink-2)}@media (width<=47.49rem){.pj-head{margin-bottom:var(--s-6)}.lf{margin-bottom:var(--s-7)}.pj-group+.pj-group{margin-top:var(--s-6)}.pj-featured+.pj-group,.pj-also{margin-top:var(--s-7)}.ss-grid{gap:var(--s-6)}}.glyph{fill:none;stroke:currentColor;stroke-width:var(--glyph-stroke);stroke-linecap:round;stroke-linejoin:round;color:var(--ink-2);display:block;overflow:visible}.glyph *{vector-effect:non-scaling-stroke}.glyph .f{fill:currentColor;stroke:none}.glyph .p{fill:var(--sheet)}.glyph .ds{stroke-dasharray:2 2.5}.glyph-l .ds{stroke-dasharray:4 4}.glyph .dt{stroke-dasharray:0 3;stroke-width:1.75px}.glyph-l .dt{stroke-dasharray:0 8;stroke-width:2.5px}.glyph .g{color:var(--rule-strong)}.glyph text{fill:currentColor;stroke:none;font:450 12px/1 var(--f-ui);font-variation-settings:"MONO" 0;color:var(--ink-3)}.glyph .mv{transform:var(--t0,none)}.glyph .fi{opacity:0}:is(.repo,.ss):is(:hover,:focus-within) .glyph .mv{transform:var(--t,none)}:is(.repo,.ss):is(:hover,:focus-within) .glyph .fi{opacity:1}:is(.repo,.ss):is(:hover,:focus-within) .glyph .fo{opacity:0}:is(.repo,.ss):is(:hover,:focus-within) .glyph .ac{color:var(--signal)}:is(.repo,.ss):is(:hover,:focus-within) .glyph .pulse{animation:pj-pulse .3s var(--ease-in-out)}@keyframes pj-pulse{50%{opacity:.2}}@media (hover:hover) and (prefers-reduced-motion:no-preference){.glyph *{transition:transform var(--dur-figure) var(--ease-expo), opacity var(--dur-hover) var(--ease-out), color var(--dur-hover) var(--ease-out)}:is(.repo,.ss):is(:hover,:focus-within) .glyph .s1{transition-delay:calc(var(--dur-figure) * .8)}:is(.repo,.ss):is(:hover,:focus-within) .glyph .s2{transition-delay:calc(var(--dur-figure) * 1.6)}}@media (forced-colors:active){.glyph .p{fill:canvas}.lf-input:checked+.lf-opt{forced-color-adjust:none;color:highlighttext;box-shadow:none;background:highlight}.lf-input:checked+.lf-opt .lf-n{color:highlighttext}.ss{border-color:canvastext}}.wi-head .t-page{margin:0}.wi-lead{margin:var(--s-4) 0 0}.wi-feed{margin:var(--s-3) 0 0;font-size:var(--fs-meta);line-height:var(--lh-meta)}.wi-feed a{color:var(--ink-2)}.wi-feed .icon{vertical-align:-.0625rem;color:var(--ink-3);margin-inline-start:.1875rem}@media (hover:hover){.wi-feed a:hover,.wi-feed a:hover .icon{color:var(--signal-hi)}}.wi-year{margin-top:var(--s-8)}.wi-year+.wi-year{margin-top:var(--s-7)}.wi-year .ledger-label{font-family:var(--f-mono);font-variation-settings:"MONO" 1;color:var(--ink-2);font-weight:400}@media (width>=70rem){.wi-head{grid-template-columns:subgrid;align-items:baseline;display:grid}.wi-head>*{grid-column:main}.wi-head .wi-lead{grid-row:2}.wi-head .wi-feed{text-align:end;grid-area:2/margin;margin:0}}@media (width<=47.49rem){.wi-year{margin-top:var(--s-7)}}}@layer construct{@media screen{.guides{display:none}@media (width>=70rem){:root[data-construct] .guides{z-index:var(--z-construct);grid-template-columns:var(--page-cols);pointer-events:none;display:grid;position:absolute;inset:0}}.g-track{outline:1px dashed color-mix(in oklab, var(--signal) 45%, transparent);outline-offset:-1px;position:relative}.g-gutter{grid-column:gutter}.g-gap-1{background:color-mix(in oklab, var(--signal) 5%, transparent);outline:0;grid-column:gutter-end/main-start}.g-main{grid-column:main}.g-gap-2{background:color-mix(in oklab, var(--signal) 5%, transparent);outline:0;grid-column:main-end/margin-start}.g-margin{grid-column:margin}.g-label{font:400 var(--fs-micro)/var(--lh-micro) var(--f-mono);font-variation-settings:"MONO" 1;color:var(--signal);background:var(--paper);white-space:nowrap;padding:0 .25rem;position:absolute;top:.375rem;left:.25rem}.g-gutter .g-label,.g-margin .g-label{left:auto;right:.25rem}.g-measure{border-inline:1px solid var(--signal);background:linear-gradient(var(--signal), var(--signal)) center / 100% 1px no-repeat;height:.5625rem;position:absolute;top:.5625rem;left:0;right:0}.g-measure .g-label{top:-.21875rem;left:50%;translate:-50%}:root[data-construct] main :is(section,article,figure,p,h1,h2,h3,ul,ol,pre,dl):not(:focus-visible){outline:1px dashed color-mix(in oklab, var(--signal) 30%, transparent)}:root[data-construct] :is(.row,.pc,.ss):has(.stretch:focus-visible){outline:2px solid var(--focus)}@media (width<=69.99rem){:root[data-construct] .ft :is(.ft-group,.ft-side){outline:1px dashed color-mix(in oklab, var(--signal) 45%, transparent);outline-offset:4px}:root[data-construct] .ft-side:after{content:"Column guides and type specs show on wider screens";content:"Column guides and type specs show on wider screens" / "";font:400 var(--fs-micro)/var(--lh-micro) var(--f-mono);font-variation-settings:"MONO" 1;color:var(--signal-hi)}}:root[data-construct] .sheet[data-delivery]>.sheet-head:before{z-index:var(--z-construct);font:400 var(--fs-micro)/var(--lh-micro) var(--f-mono);font-variation-settings:"MONO" 1;color:var(--signal);background:var(--paper);white-space:nowrap;padding:0 .25rem;position:absolute;bottom:calc(100% + .5rem);left:0}:root[data-construct] .sheet[data-delivery^=static]>.sheet-head:before{content:"static · 0 B JS";content:"static · 0 B JS" / ""}:root[data-construct] .sheet[data-delivery^=island]>.sheet-head:before{content:"island · hydrates when visible";content:"island · hydrates when visible" / ""}@media (width<=47.49rem){:root[data-construct] .sheet[data-delivery]>.sheet-head:before{left:var(--side)}}@media (width>=70rem){:root[data-construct] .prose>div>p.caption:first-of-type:after{content:"Recursive Sans 450 · 13/19";content:"Recursive Sans 450 · 13/19" / ""}:root[data-construct] .prose>div>p.sidenote:first-of-type:after{content:none}:root[data-construct] .ledger>.row:nth-child(2) .row-no{position:static}:root[data-construct] .ledger>.row:nth-child(2) .row-no:after{left:auto;right:.75rem;top:calc(var(--s-4) + 2 * var(--lh-meta) + var(--s-1))}:root[data-construct] .spec-row:first-child{position:relative}:root[data-construct] .spec-row:first-child>dt{position:static}:root[data-construct] .spec-row:first-child>dt:after{top:.625rem}}@media (prefers-reduced-transparency:reduce){.g-gap-1,.g-gap-2{background:0 0}}@media (forced-colors:active){:root[data-construct] .guides{display:none}:root[data-construct] main :is(section,article,figure,p,h1,h2,h3,ul,ol,pre,dl):not(:focus-visible){outline:0}:root[data-construct] .sheet[data-delivery]>.sheet-head:before{content:none}}:root[data-construct] :where(.t-name,.t-statement,.t-h1,.t-page,.t-lead,.prose h2,.prose h3,.prose>div>p:first-of-type,.rh nav,main section>:nth-child(-n+2)>.mono:nth-child(1 of .mono):not(.row-no,.spec dt),.ledger>.row:nth-child(2) .row-no,main section>:is(.spec,.spec-group>.spec)>.spec-row:first-child>dt,.prose div[class*=language-]){position:relative}:root[data-construct] :where(.t-name,.t-statement,.t-h1,.t-page,.t-lead,.prose h2,.prose h3,.prose>div>p:first-of-type,.rh nav,main section>:nth-child(-n+2)>.mono:nth-child(1 of .mono):not(.row-no,.spec dt),.ledger>.row:nth-child(2) .row-no,main section>:is(.spec,.spec-group>.spec)>.spec-row:first-child>dt,.prose div[class*=language-]):after{z-index:var(--z-construct);width:max-content;max-width:var(--margin-w);white-space:nowrap;pointer-events:none;font:400 var(--fs-micro)/var(--lh-micro) var(--f-mono);font-variation-settings:"MONO" 1;letter-spacing:0;text-transform:none;text-indent:0;color:var(--signal);background:color-mix(in oklab, var(--paper) 85%, transparent);padding:0 .25rem;position:absolute;top:0;left:calc(100% + 1rem)}:root[data-construct] .t-name:after{content:"Literata 600 · 44/48 · −0.022em";content:"Literata 600 · 44/48 · −0.022em" / ""}:root[data-construct] .t-statement:after{content:"Literata 400 · 28/36 · −0.012em";content:"Literata 400 · 28/36 · −0.012em" / ""}:root[data-construct] .t-h1:after{content:"Literata 550 · 40/46 · −0.02em";content:"Literata 550 · 40/46 · −0.02em" / ""}:root[data-construct] .t-page:after{content:"Literata 500 · 34/40 · −0.015em";content:"Literata 500 · 34/40 · −0.015em" / ""}:root[data-construct] .t-lead:after{content:"Literata 400 · 20/30 · −0.005em";content:"Literata 400 · 20/30 · −0.005em" / ""}:root[data-construct] .prose h2:after{content:"Literata 600 · 22/28 · −0.005em";content:"Literata 600 · 22/28 · −0.005em" / ""}:root[data-construct] .prose h3:after{content:"Literata 600 · 17/28";content:"Literata 600 · 17/28" / ""}:root[data-construct] .prose>div>p:first-of-type:after{content:"Literata 400 · 17/28";content:"Literata 400 · 17/28" / ""}:root[data-construct] .rh nav:after{content:"Recursive Sans 500 · 14/20";content:"Recursive Sans 500 · 14/20" / ""}:root[data-construct] main section>:nth-child(-n+2)>.mono:nth-child(1 of .mono):not(.row-no,.spec dt):after,:root[data-construct] .ledger>.row:nth-child(2) .row-no:after,:root[data-construct] main section>:is(.spec,.spec-group>.spec)>.spec-row:first-child>dt:after{content:"Recursive Mono 400 · 13/20";content:"Recursive Mono 400 · 13/20" / ""}:root[data-construct] .prose div[class*=language-]:after{content:"Recursive Mono 400 · 14/22";content:"Recursive Mono 400 · 14/22" / ""}@media (width<=69.99rem){:root[data-construct] :is(.t-name,.t-statement,.t-h1,.t-page,.t-lead,.prose h2,.prose h3,.prose>div>p:first-of-type,.rh nav,main section>:nth-child(-n+2)>.mono:nth-child(1 of .mono):not(.row-no,.spec dt),.ledger>.row:nth-child(2) .row-no,main section>:is(.spec,.spec-group>.spec)>.spec-row:first-child>dt,.prose div[class*=language-]):after{content:none}}@media (prefers-reduced-transparency:reduce){:root[data-construct] :is(.t-name,.t-statement,.t-h1,.t-page,.t-lead,.prose h2,.prose h3,.prose>div>p:first-of-type,.rh nav,main section>:nth-child(-n+2)>.mono:nth-child(1 of .mono):not(.row-no,.spec dt),.ledger>.row:nth-child(2) .row-no,main section>:is(.spec,.spec-group>.spec)>.spec-row:first-child>dt,.prose div[class*=language-]):after{background:var(--paper)}}@media (forced-colors:active){:root[data-construct] :is(.t-name,.t-statement,.t-h1,.t-page,.t-lead,.prose h2,.prose h3,.prose>div>p:first-of-type,.rh nav,main section>:nth-child(-n+2)>.mono:nth-child(1 of .mono):not(.row-no,.spec dt),.ledger>.row:nth-child(2) .row-no,main section>:is(.spec,.spec-group>.spec)>.spec-row:first-child>dt,.prose div[class*=language-]):after{content:none}}}}@layer print{@media print{:root,:root[data-theme=dark]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--paper:#fff;--sheet:#fff;--inset:#f0ede7;--ink:#201e1a;--ink-2:#504c47;--ink-3:#67625c;--rule:#dcd9d2;--rule-strong:#8a857e;--grid:#e1ded7;--signal:#2a7257;--signal-hi:#135b42;--wash:#d6efe3;--ochre:#8a5a12;--rust:#ae4024;--code-fn:#305686;--code-str:#81520a;--code-num:#a7391e}html,body{background:#fff}body{-webkit-font-smoothing:auto}.skip,.rh-tools,.rh-ruler,.guides,.ft-side,.pw,[data-needs-js],.rail,.toc,.sheet-tools,.fig-controls,.fig-transport,.describe,.prose div[class*=language-]>.copy{display:none!important}.page{padding-top:2rem}.ft{margin-top:3rem}.entry-aside{position:static}.sheet,.prose div[class*=language-],.prose table,.row,.repo-mention{break-inside:avoid}.prose :is(h2,h3){break-after:avoid}.prose pre{white-space:pre-wrap;overflow:visible}.prose pre code{min-width:0}a[href^=http]:not([href^="https://sammyjoyce.com"]):not(.stretch):not(:has(.icon)):after{content:" (" attr(href) ")";width:auto;height:auto;color:var(--ink-3);overflow-wrap:anywhere;background:0 0;margin:0;font-size:.8em;display:inline;-webkit-mask:none;mask:none}}}@font-face{font-family:Literata;font-style:normal;font-weight:400 700;font-display:swap;src:url(/assets/literata-roman-iBPEzcMk.woff2)format("woff2");unicode-range:U+20-7E,U+A0-FF,U+131,U+152-153,U+2009,U+2013-2014,U+2018-201A,U+201C-201E,U+2022,U+2026,U+2032-2033,U+2039-203A,U+2044,U+20AC,U+2122,U+2212}@font-face{font-family:Literata;font-style:italic;font-weight:400 600;font-display:swap;src:url(/assets/literata-italic-CRX1ftct.woff2)format("woff2");unicode-range:U+20-7E,U+A0-FF,U+131,U+152-153,U+2009,U+2013-2014,U+2018-201A,U+201C-201E,U+2022,U+2026,U+2032-2033,U+2039-203A,U+2044,U+20AC,U+2122,U+2212}@font-face{font-family:Recursive;font-style:normal;font-weight:400 700;font-display:swap;src:url(/assets/recursive-BAVZ9fzc.woff2)format("woff2");unicode-range:U+20-7E,U+A0-FF,U+131,U+152-153,U+2009,U+2013-2014,U+2018-201A,U+201C-201E,U+2022,U+2026,U+2032-2033,U+2039-203A,U+2044,U+20AC,U+2122,U+2212}@font-face{font-family:Literata Fallback Georgia;src:local(Georgia);ascent-override:109.314%;descent-override:28.6056%;line-gap-override:0%;size-adjust:107.671%}@font-face{font-family:Literata Fallback Times;src:local(Times New Roman),local(TimesNewRomanPSMT),local(Liberation Serif),local(LiberationSerif),local(Tinos);ascent-override:99.6159%;descent-override:26.0677%;line-gap-override:0%;size-adjust:118.154%}@font-face{font-family:Literata Fallback Noto;src:local(Noto Serif),local(Noto Serif Regular),local(NotoSerif-Regular);ascent-override:117.945%;descent-override:30.8642%;line-gap-override:0%;size-adjust:99.7921%}@font-face{font-family:Recursive Fallback Arial;src:local(Arial),local(ArialMT),local(Helvetica),local(Liberation Sans),local(LiberationSans),local(Arimo);ascent-override:83.0413%;descent-override:21.853%;line-gap-override:0%;size-adjust:114.401%}@font-face{font-family:Recursive Fallback Roboto;src:local(Roboto),local(Roboto Regular),local(Roboto-Regular);ascent-override:82.8594%;descent-override:21.8051%;line-gap-override:0%;size-adjust:114.652%}@font-face{font-family:Recursive Fallback Noto;src:local(Noto Sans),local(Noto Sans Regular),local(NotoSans-Regular);ascent-override:88.2941%;descent-override:23.2353%;line-gap-override:0%;size-adjust:107.595%}@font-face{font-family:Recursive Mono Fallback Courier;src:local(Courier New),local(CourierNewPSMT),local(Liberation Mono),local(LiberationMono),local(Cousine);ascent-override:95.0155%;descent-override:25.0041%;line-gap-override:0%;size-adjust:99.9837%}@font-face{font-family:Recursive Mono Fallback Noto;src:local(Noto Sans Mono),local(Noto Sans Mono Regular),local(NotoSansMono-Regular);ascent-override:95%;descent-override:25%;line-gap-override:0%;size-adjust:100%}@view-transition{navigation:auto}::view-transition-group(*){animation-duration:var(--dur-vt-morph);animation-timing-function:var(--ease-in-out)}::view-transition-old(root){animation:var(--dur-vt-root) var(--ease-exit) both vt-out}::view-transition-new(root){animation:var(--dur-vt-root) var(--ease-out) both vt-in}::view-transition-old(site-header){animation-duration:var(--dur-vt-root)}::view-transition-new(site-header){animation-duration:var(--dur-vt-root)}@keyframes vt-out{to{opacity:0}}@keyframes vt-in{0%{opacity:0}}@media (prefers-reduced-motion:reduce){@view-transition{navigation:none}}
