:root{--color-header-bg:#aaaaaa;--color-header-text:#000000;--color-bg:#ffffff;--color-bg-accent:#f8f8f8;--color-text:#000000;--color-text-soft:#404040;--color-text-soft-extra:#808080;--color-link:#0093aa;--color-highlight:#625EB1;--color-ctrl-bg:#ebebfa;--color-ctrl-bg-accent:#dfdcf8;--color-ctrl-bg-bright:#ccc8ff;--border-radius:0.3125rem;--box-shadow:0px 0px 15px -10px rgba(0,0,0,0.70);--icon-admonition-note:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"><path d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"></path></svg>');--icon-admonition-tip:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"><path d="M8 1.5c-2.363 0-4 1.69-4 3.75 0 .984.424 1.625.984 2.304l.214.253c.223.264.47.556.673.848.284.411.537.896.621 1.49a.75.75 0 0 1-1.484.211c-.04-.282-.163-.547-.37-.847a8.456 8.456 0 0 0-.542-.68c-.084-.1-.173-.205-.268-.32C3.201 7.75 2.5 6.766 2.5 5.25 2.5 2.31 4.863 0 8 0s5.5 2.31 5.5 5.25c0 1.516-.701 2.5-1.328 3.259-.095.115-.184.22-.268.319-.207.245-.383.453-.541.681-.208.3-.33.565-.37.847a.751.751 0 0 1-1.485-.212c.084-.593.337-1.078.621-1.489.203-.292.45-.584.673-.848.075-.088.147-.173.213-.253.561-.679.985-1.32.985-2.304 0-2.06-1.637-3.75-4-3.75ZM5.75 12h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM6 15.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 0 1.5h-2.5a.75.75 0 0 1-.75-.75Z"></path></svg>');--icon-diff-unfold-down:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"><path d="m8.177 14.323 2.896-2.896a.25.25 0 0 0-.177-.427H8.75V7.764a.75.75 0 1 0-1.5 0V11H5.104a.25.25 0 0 0-.177.427l2.896 2.896a.25.25 0 0 0 .354 0ZM2.25 5a.75.75 0 0 0 0-1.5h-.5a.75.75 0 0 0 0 1.5h.5ZM6 4.25a.75.75 0 0 1-.75.75h-.5a.75.75 0 0 1 0-1.5h.5a.75.75 0 0 1 .75.75ZM8.25 5a.75.75 0 0 0 0-1.5h-.5a.75.75 0 0 0 0 1.5h.5ZM12 4.25a.75.75 0 0 1-.75.75h-.5a.75.75 0 0 1 0-1.5h.5a.75.75 0 0 1 .75.75Zm2.25.75a.75.75 0 0 0 0-1.5h-.5a.75.75 0 0 0 0 1.5h.5Z"></path></svg>');--icon-diff-unfold-up:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"><path d="M7.823 1.677 4.927 4.573A.25.25 0 0 0 5.104 5H7.25v3.236a.75.75 0 1 0 1.5 0V5h2.146a.25.25 0 0 0 .177-.427L8.177 1.677a.25.25 0 0 0-.354 0ZM13.75 11a.75.75 0 0 0 0 1.5h.5a.75.75 0 0 0 0-1.5h-.5Zm-3.75.75a.75.75 0 0 1 .75-.75h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1-.75-.75ZM7.75 11a.75.75 0 0 0 0 1.5h.5a.75.75 0 0 0 0-1.5h-.5ZM4 11.75a.75.75 0 0 1 .75-.75h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1-.75-.75ZM1.75 11a.75.75 0 0 0 0 1.5h.5a.75.75 0 0 0 0-1.5h-.5Z"></path></svg>');--icon-diff-unfold:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"><path d="m8.177.677 2.896 2.896a.25.25 0 0 1-.177.427H8.75v1.25a.75.75 0 0 1-1.5 0V4H5.104a.25.25 0 0 1-.177-.427L7.823.677a.25.25 0 0 1 .354 0ZM7.25 10.75a.75.75 0 0 1 1.5 0V12h2.146a.25.25 0 0 1 .177.427l-2.896 2.896a.25.25 0 0 1-.354 0l-2.896-2.896A.25.25 0 0 1 5.104 12H7.25v-1.25Zm-5-2a.75.75 0 0 0 0-1.5h-.5a.75.75 0 0 0 0 1.5h.5ZM6 8a.75.75 0 0 1-.75.75h-.5a.75.75 0 0 1 0-1.5h.5A.75.75 0 0 1 6 8Zm2.25.75a.75.75 0 0 0 0-1.5h-.5a.75.75 0 0 0 0 1.5h.5ZM12 8a.75.75 0 0 1-.75.75h-.5a.75.75 0 0 1 0-1.5h.5A.75.75 0 0 1 12 8Zm2.25.75a.75.75 0 0 0 0-1.5h-.5a.75.75 0 0 0 0 1.5h.5Z"></path></svg>');--icon-link:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg>');--icon-ext-link:url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" width="16" height="16"><path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path></svg>')}*,:before,:after{box-sizing:border-box}h1,h2,h3,h4,h5,h6{margin-top:2rem;margin-bottom:1rem}p,ol,ul,table{margin-top:1rem;margin-bottom:1rem}html{max-height:100%;min-height:100vh;margin:0;scroll-behavior:smooth}body{margin:0;max-height:100%;background:var(--color-bg);color:var(--color-text);font-family:-apple-system,BlinkMacSystemFont,segoe ui,Helvetica,Arial,sans-serif,apple color emoji,segoe ui emoji;line-height:1.4}a,a:link,a:visited{color:var(--color-link);text-decoration:none}a:hover,a:focus{text-decoration:underline}.site-header{display:flex;justify-content:space-between;align-items:baseline;background-image:linear-gradient(-225deg,#22e1ff 0%,#1d8fe1 48%,#746fd2 100%);color:var(--color-header-text);box-shadow:0 5px 15px #dcdcdc;padding:.4rem 1.5rem;margin-bottom:2rem;h1 { color: var(--color-header-text); font-weight: normal; font-size: 1rem; margin: 0; } .subtitle { font-size: 0.9rem; } a, a:link, a:visited { color: inherit; }}main{overflow-x:scroll;max-width:55em;margin:0 auto;padding:0 1.5rem 2.875rem;h1 { font-size: 2.25rem; } h2 { font-size: 1.4rem; } h3 { font-size: 1.124rem; } h4, h5, h6 { font-size: 1rem; } h2, h3, h4, h5, h6 { .anchor-link { display: inline-block; width: .8em; height: .8em; margin-left: .4em; background: var(--color-text-soft-extra); -webkit-mask-image: var(--icon-link); -webkit-mask-repeat: no-repeat; -webkit-mask-position: center bottom; mask-image: var(--icon-link); mask-repeat: no-repeat; mask-position: center bottom; visibility: hidden; } } h2:hover, h3:hover, h4:hover, h5:hover, h6:hover { .anchor-link { visibility: visible; } } p, ul, ol { font-size: 1rem; } pre { overflow-x: auto; background: var(--color-bg-accent); width: 100%; padding: 0.626rem 1rem; outline: 1px solid var(--color-highlight); border-radius: var(--border-radius); font-family: monospace; box-shadow: 0px 0px 15px -10px rgba(0,0,0,0.70); } .header { text-align: center; margin: 1rem 0 1rem 0; h1 { margin: 0 auto; } .date { display: block; } } .content { img { max-width: 100%; } p > code { color: var(--color-highlight); font-size: 0.9em; } a[href]:not(:where( [href^="#"], [href^="javascript:" i], [href^="/"]:not([href^="//"]), [href*="//flo.znkr.io"], [href*="//znkr.io"], [href*="//github.com/znkr/"], )) { display: inline-block; padding-right: .9em; } a[href]:not(:where( [href^="#"], [href^="javascript:" i], [href^="/"]:not([href^="//"]), [href*="//flo.znkr.io"], [href*="//znkr.io"], [href*="//github.com/znkr/"], ))::after { display: inline-block; content: ''; width: 0.8em; height: 0.8em; margin-right: -.9em; margin-left: .1em; vertical-align: middle; background-color: var(--color-link); -webkit-mask-image: var(--icon-ext-link); -webkit-mask-repeat: no-repeat; -webkit-mask-position: center center; -webkit-mask-size: cover; mask-image: var(--icon-ext-link); mask-repeat: no-repeat; mask-position: center center; mask-size: cover; } sup { line-height: 0; position: relative; vertical-align: baseline; top: -0.5em; font-size: 0.75em; } } .toc { ul { list-style: none; padding-left: 0; margin: 0; } li li a { padding-left: 1em; } li li li a { padding-left: 2em; } }}@media screen and (min-width:90rem){main{overflow-x:visible;max-width:unset;display:grid;grid-template-columns:1fr auto 1fr;grid-template-rows:auto;grid-template-areas:". header ." ". inline-toc . " ". content sidebar-toc";column-gap:3em;.header { grid-area: header; } .content { grid-area: content; max-width: 55rem; } .toc { grid-area: sidebar-toc; align-self: start; position: sticky; top: 0; a { color: var(--color-text); display: inline-block; padding: .4em .5em; border-left: 1px solid var(--color-link); transition-property: color, border; transition-timing-function: cubic-bezier(.4,0,.2,1); transition: .2s; } a.active { color: var(--color-link); border-left: 2px solid var(--color-link); } a:hover, a:focus { color: var(--color-link); text-decoration: none; } }}}.sub-content{margin:1.875rem 0;padding:0;p { margin: 0.5rem 0; }}.sub-content-header{display:flex;align-items:baseline;margin:.5rem 0 .125rem;h3 { margin: 0 0.5rem 0 0; } span { color: var(--color-text-soft); }}.code-snippet{display:block;overflow-x:auto;width:100%;font-family:monospace;border-collapse:collapse;border-spacing:0;border:0;outline:1px solid var(--color-highlight);background:var(--color-bg-accent);border-radius:var(--border-radius);margin-top:0;box-shadow:var(--box-shadow);-webkit-text-size-adjust:none;text-size-adjust:none;caption { caption-side: top; text-align: left; background: var(--color-highlight); border-radius: var(--border-radius) var(--border-radius) 0 0; padding: 0.4em 1.0em; margin-bottom: 0; font-size: 1em !important; a { font-weight: normal; color: var(--color-bg); } } tr { height: 1.4em; } tr.src { td.line-no, td.op { text-align: right; color: var(--color-text-soft-extra); user-select: none; -webkit-user-select: none; padding: 0 0.5rem; width: auto; } td.code { white-space: pre; padding: 0 0.5em 0 0.625em; width: 100%; -moz-tab-size: 4; -o-tab-size: 4; tab-size: 4; } } tr.src:first-child td { padding-top: 0.5em; } tr.src:last-child td { padding-bottom: 0.3em; } tr.src td:first-child { padding-left: 0.4em } tr.delete { background: #faefef; .line-no { background: #fadede; } } tr.insert { background: #effaef; .line-no { background: #defade; } } tr.ctrl { background: var(--color-ctrl-bg); color: var(--color-text-soft-extra); vertical-align: middle; .fold-ctrl { background: var(--color-ctrl-bg-accent); text-align: center; height: 1.8em; } .fold-ctrl:hover { background: var(--color-ctrl-bg-bright); } .fold-button { display: block; -webkit-appearance: none; appearance: none; border: none; cursor: pointer; width: 100%; height: 1.8em; margin: auto; padding: 0; background: var(--color-text); } .fold-button.unfold-down { -webkit-mask-image: var(--icon-diff-unfold-down); -webkit-mask-repeat: no-repeat; -webkit-mask-position: center center; mask-image: var(--icon-diff-unfold-down); mask-repeat: no-repeat; mask-position: center center; } .fold-button.unfold-up { -webkit-mask-image: var(--icon-diff-unfold-up); -webkit-mask-repeat: no-repeat; -webkit-mask-position: center center; mask-image: var(--icon-diff-unfold-up); mask-repeat: no-repeat; mask-position: center center; } .fold-button.unfold { -webkit-mask-image: var(--icon-diff-unfold); -webkit-mask-repeat: no-repeat; -webkit-mask-position: center center; mask-image: var(--icon-diff-unfold); mask-repeat: no-repeat; mask-position: center center; } }}table:not(.code-snippet){display:table;border-collapse:collapse;border-spacing:0;width:100%;outline:1px solid var(--color-highlight);border-radius:var(--border-radius);background:var(--color-bg);th { background: var(--color-bg); color: var(--color-text); padding: 0.4em 1.0em; text-align: left; font-weight: bold; font-size: 1em; border-right: 1px solid var(--color-highlight); border-bottom: 1px solid var(--color-highlight); } td { background: var(--color-bg); padding: 0.4em 1.0em; font-size: 1em; border-right: 1px solid var(--color-highlight); border-bottom: 1px solid var(--color-highlight); } th:last-child, td:last-child { border-right: none; } tr:last-child td { border-bottom: none; }}.admonition{border:1px solid;border-radius:var(--border-radius);box-shadow:var(--box-shadow);margin:1em 0;padding:0 1em;page-break-inside:avoid;.admonition-title { border-top-right-radius: var(--border-radius); margin: 0 -1em -.4em -1em; padding: .4em 1em .4em 2.5em; position: relative; } .admonition-title::before { content: ""; height: 1em; width: 1em; position: absolute; left: 1em; top: .6em; }}.admonition.note{border-color:#448aff;.admonition-title { background: #448aff1a; } .admonition-title::before { background-color: #448aff; -webkit-mask-image: var(--icon-admonition-note); mask-image: var(--icon-admonition-note); }}.admonition.tip{border-color:#f0d033;.admonition-title { background: #f0d0331a; } .admonition-title::before { background-color: #f0d033; -webkit-mask-image: var(--icon-admonition-tip); mask-image: var(--icon-admonition-tip); }}.hl-b{font-weight:700}.hl-bl{font-weight:700}.hl-i{font-style:italic}.hl-ii{font-style:italic;color:var(--color-text-soft)}.footnotes{hr { border: 0; border-top: 1px solid var(--color-bg-accent); } p, ul, ol { margin: .1em; font-size: 0.85rem; }}