.mast[data-astro-cid-v3lsk6py]{border-bottom:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:19px;padding:10px 0;display:flex}.mast__wm[data-astro-cid-v3lsk6py]{font-family:var(--font-departure), ui-monospace, monospace;color:var(--ink);align-items:center;gap:11px;font-size:20px;line-height:1;text-decoration:none;display:inline-flex}.mast__word[data-astro-cid-v3lsk6py]>span[data-astro-cid-v3lsk6py]{color:var(--mut)}.mast__mark[data-astro-cid-v3lsk6py]{flex:none}.mast__nav[data-astro-cid-v3lsk6py]{font-family:var(--font-departure), ui-monospace, monospace;font-size:var(--mono-small);line-height:18px}.mast__nav[data-astro-cid-v3lsk6py] a[data-astro-cid-v3lsk6py]{margin-left:.75rem}.mast__nav[data-astro-cid-v3lsk6py] a[data-astro-cid-v3lsk6py][aria-current=page]{color:var(--ink)}:root{color-scheme:dark;--bg:#0f0b16;--panel:#17111f;--code:#130e1c;--ink:#ddd4ea;--mut:#9a90b0;--acc:#b48cff;--acc-deep:#3b2f6b;--line:#ffffff17;--diff-add:#8fd9a8;--diff-remove:#f88;--mono-small:11px;--measure:669.5px;--gap:1rem;--radius:4px}@font-face{font-family:Noto Emoji;src:url(/_astro/noto-emoji.nCdpfTXd.woff2)format("woff2");font-display:swap;unicode-range:U+1F000-1FAFF,U+2600-27BF,U+2B??,U+FE0F,U+200D,U+1F1E6-1F1FF,U+E0020-E007F}*,:before,:after{box-sizing:border-box}html{background:var(--bg);color:var(--ink)}body{background:var(--bg);min-height:100%;color:var(--ink);font-family:var(--font-literata), "Noto Emoji", Georgia, serif;font-variation-settings:"opsz" 14;-webkit-text-size-adjust:100%;overflow-wrap:break-word;margin:0;font-size:17px;line-height:1.65}.shell{max-width:62rem;margin:0 auto 0 max(0px,round(down,50% - 31rem,2px));padding:16px 18px 40px}.foot{border-top:1px solid var(--line);font-size:var(--mono-small);margin-top:2.5rem;padding-top:1rem}h1,h2,h3{font-family:var(--font-departure), "Noto Emoji", ui-monospace, monospace;margin:0 0 .5rem;font-weight:400;line-height:1.1}h1{font-size:40px}h2{color:var(--ink);margin-top:2rem;font-size:20px}h3{color:var(--acc);margin-top:1.5rem;font-size:20px}h4,h5,h6{font-family:var(--font-literata), "Noto Emoji", Georgia, serif;margin:1.25rem 0 .4rem;font-size:17px;font-weight:600}@media (width<=40rem){h1{font-size:30px}}a{color:var(--acc);text-underline-offset:2px;text-decoration:underline}a:focus-visible,button:focus-visible,input:focus-visible{outline:2px solid var(--acc);outline-offset:2px}code,kbd,samp{font-family:var(--font-jetbrains), "Noto Emoji", ui-monospace, monospace;font-feature-settings:"calt" 1, "liga" 1;font-size:.87em}:not(pre)>code{background:var(--code);border:1px solid var(--line);border-radius:3px;padding:.05em .3em}pre{background:var(--code);border:1px solid var(--line);border-left:2px solid var(--acc);border-radius:var(--radius);padding:.8rem 1rem;overflow-x:auto}:is(pre,.frame__scroll,.katex-display){--sb:transparent}:is(pre,.frame__scroll,.katex-display):is(:hover,:focus-visible,:has(:focus-visible)){--sb:color-mix(in srgb, var(--mut) 55%, transparent)}@media (hover:none){:is(pre,.frame__scroll,.katex-display){--sb:color-mix(in srgb, var(--mut) 35%, transparent)}}:is(pre,.frame__scroll,.katex-display)::-webkit-scrollbar{background:0 0;width:6px;height:6px}:is(pre,.frame__scroll,.katex-display)::-webkit-scrollbar-button{display:none}:is(pre,.frame__scroll,.katex-display)::-webkit-scrollbar-thumb{background:var(--sb);border-radius:3px}pre .t-cm{color:#5f5573;font-style:italic}pre .t-kw{color:#c9a5ff}pre .t-st{color:#8fd9a8}pre .t-nu{color:#7fd4e8}pre .t-fn{color:#e6b98a}pre .t-pu{color:#877c9c}pre .t-er{color:#f88}pre code{background:0 0;border:0;padding:0;font-size:13px}pre{user-select:all}html.has-copy pre{user-select:auto}.codewrap{position:relative}.codewrap .copy{font-family:var(--font-departure), ui-monospace, monospace;font-size:var(--mono-small);color:var(--mut);background:var(--panel);border:1px solid var(--line);cursor:pointer;opacity:0;border-radius:3px;padding:4px 7px;line-height:1;transition:opacity .12s;position:absolute;bottom:6px;right:6px}.codewrap:hover .copy,.codewrap .copy:focus-visible{opacity:1}.codewrap .copy:hover{color:var(--ink);border-color:var(--acc)}@media (hover:none){.codewrap .copy{display:none}}blockquote{color:var(--mut);border-left:2px solid #b48cff73;margin:1rem 0;padding-left:.9rem;font-style:italic}.contains-task-list{list-style:none}.task-list-item{position:relative}.task-list-item input[type=checkbox]{-webkit-appearance:none;appearance:none;font-size:inherit;--cb-size:.8em;width:var(--cb-size);height:var(--cb-size);left:calc(-1 * var(--cb-size) - 6px);border:1px solid var(--line);background:var(--code);opacity:1;border-radius:2px;margin:0;position:absolute;top:.3em}.task-list-item input[type=checkbox]:checked{background:var(--acc-deep);border-color:var(--acc)}.task-list-item input[type=checkbox]:checked:after{content:"";border:solid var(--ink);border-width:0 2px 2px 0;width:42%;height:76%;position:absolute;top:47%;left:50%;transform:translate(-50%,-60%)rotate(45deg)}img{max-width:100%;height:auto}hr{border:0;border-top:1px solid var(--line)}.mono{font-family:var(--font-departure), "Noto Emoji", ui-monospace, monospace}.mut{color:var(--mut)}.measure{max-width:var(--measure)}.skip-link{position:absolute;left:-9999px}.skip-link:focus{background:var(--panel);padding:.4rem .7rem;top:.5rem;left:.5rem}.vh{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@view-transition{navigation:auto}::view-transition{background-color:var(--bg)}::view-transition-old(root),::view-transition-new(root){mix-blend-mode:normal;animation-duration:.14s}@media (prefers-reduced-motion:reduce){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}}.codefig{margin:1rem 0}.runbar,.runfoot{display:none}@media (scripting:enabled){.runbar,.runfoot{display:flex}:is(.runbar+pre,.runbar+.codewrap>pre){border-radius:0;margin-top:0;margin-bottom:0}.runbar+.codewrap{margin:0}.codefig>.runbar{border-radius:0;margin:0}.codefig>.runfoot{margin:0}}.runbar{background:var(--panel);border:1px solid var(--line);border-bottom:0;border-left:2px solid var(--acc);border-radius:var(--radius) var(--radius) 0 0;font-family:var(--font-departure), ui-monospace, monospace;font-size:var(--mono-small);color:var(--mut);flex-wrap:wrap;align-items:center;gap:.4rem .8rem;margin:1rem 0 0;padding:.45rem .8rem}.runbar__call{font-family:var(--font-jetbrains), ui-monospace, monospace;color:var(--mut);align-items:center;gap:2px;font-size:13px;display:inline-flex}.runbar__fn{color:#e6b98a}.runbar__reg{color:#7fd4e8}.runbar__arg{box-sizing:border-box;height:24px;font:inherit;text-align:center;color:#7fd4e8;background:var(--code);border:1px solid var(--line);border-radius:3px;padding:0 4px;line-height:22px}.runbar__arg:focus-visible{border-color:var(--acc)}.runbar__arg[aria-invalid=true]{border-color:#d9677a}.runbar__ctl{gap:4px;display:inline-flex}.runbar__btn{width:28px;height:24px;color:var(--ink);background:var(--code);border:1px solid var(--line);cursor:pointer;border-radius:3px;place-items:center;padding:0;display:inline-grid}.runbar__btn:before{content:"";width:16px;height:14px;mask:var(--runbar-icon) 0 0 / 100% 100% no-repeat;background-color:currentColor}.runbar__btn--reset:before{--runbar-icon:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%208%207'%20shape-rendering='crispEdges'%3e%3cpath%20d='M0%200h1v1H0zM0%201h1v1H0zM3%201h1v1H3zM0%202h1v1H0zM2%202h2v1H2zM0%203h4v1H0zM0%204h1v1H0zM2%204h2v1H2zM0%205h1v1H0zM3%205h1v1H3zM0%206h1v1H0z'/%3e%3c/svg%3e")}.runbar__btn--back:before{--runbar-icon:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%208%207'%20shape-rendering='crispEdges'%3e%3cpath%20d='M4%200h1v1H4zM3%201h2v1H3zM2%202h3v1H2zM1%203h4v1H1zM2%204h3v1H2zM3%205h2v1H3zM4%206h1v1H4z'/%3e%3c/svg%3e")}.runbar__btn--step:before{--runbar-icon:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%208%207'%20shape-rendering='crispEdges'%3e%3cpath%20d='M2%200h1v1H2zM2%201h2v1H2zM2%202h3v1H2zM2%203h4v1H2zM2%204h3v1H2zM2%205h2v1H2zM2%206h1v1H2z'/%3e%3c/svg%3e")}.runbar__btn--run:before{--runbar-icon:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%208%207'%20shape-rendering='crispEdges'%3e%3cpath%20d='M7%200h1v1H7zM0%201h1v1H0zM3%201h1v1H3zM7%201h1v1H7zM0%202h2v1H0zM3%202h2v1H3zM7%202h1v1H7zM0%203h6v1H0zM7%203h1v1H7zM0%204h2v1H0zM3%204h2v1H3zM7%204h1v1H7zM0%205h1v1H0zM3%205h1v1H3zM7%205h1v1H7zM7%206h1v1H7z'/%3e%3c/svg%3e")}.runbar__btn--step{color:var(--acc);border-color:color-mix(in srgb, var(--acc) 55%, transparent)}.runbar__btn:hover:not(:disabled),.runbar__btn:focus-visible{color:var(--acc);border-color:var(--acc)}.runbar__btn:disabled{opacity:.4;cursor:default}.runfoot{white-space:nowrap;background:var(--panel);border:1px solid var(--line);border-top:0;border-left:2px solid var(--acc);border-radius:0 0 var(--radius) var(--radius);height:calc(1.5em + .8rem);font-family:var(--font-jetbrains), ui-monospace, monospace;color:var(--mut);gap:1rem;margin:0 0 1rem;padding:.4rem .8rem;font-size:13px;line-height:1.5}.runfoot__text{text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.runfoot__count{text-align:right;min-width:9ch;font-family:var(--font-departure), ui-monospace, monospace;font-size:var(--mono-small);line-height:inherit;flex:none}.runfoot b{color:var(--ink);font-weight:400}.runfoot b.is-ret{color:#1da5ae}.runfoot.is-error{color:#d9677a}pre.is-runnable{padding-bottom:18px}pre.is-runnable code{width:max-content;min-width:100%}pre.is-runnable code .line{min-width:100%;display:inline-block}pre.is-runnable code .line.is-current{background:color-mix(in srgb, var(--acc) 14%, transparent)}pre.is-runnable.has-line-numbers code .line.is-current{background-image:linear-gradient(var(--acc), var(--acc));background-size:2px 100%;background-position:calc(var(--ln-gutter) + .8ch) 0;background-repeat:no-repeat}pre.is-runnable code .runval{color:var(--mut);margin-left:3ch;font-style:italic}pre.is-runnable code .runval b{color:var(--ink);font-style:normal;font-weight:400}pre.is-runnable code .runval b.is-fresh{color:var(--acc)}pre.is-runnable code .runval b.is-ret{color:#1da5ae}.codefig:has(>.codehead) pre{box-shadow:inset 0 1px 0 var(--line);border-top:0;border-top-left-radius:0;border-top-right-radius:0;margin:0}.panel__title,.codehead,.frame__bar{font-family:var(--font-departure), ui-monospace, monospace;font-size:var(--mono-small);letter-spacing:.13em;text-transform:uppercase;color:var(--acc);box-shadow:inset 1px 0 0 var(--line), inset -1px 0 0 var(--line), inset 0 1px 0 var(--line);border-radius:var(--radius) var(--radius) 0 0;background:linear-gradient(90deg,#b48cff26,#0000);border:0;flex-wrap:wrap;justify-content:space-between;gap:2px 1rem;padding:5px 11px 4px;line-height:18px;display:flex}.panel{border:1px solid var(--line);background:var(--panel);border-radius:var(--radius);margin-bottom:var(--gap)}.panel__body{padding:.7rem .85rem}.panel__title{border:0;border-bottom:1px solid var(--line);box-shadow:none;border-radius:0;padding:4px 10px}.panel__meta,.codehead__dir,.frame__meta{color:var(--mut);overflow-wrap:anywhere;min-width:0;margin-left:auto}.frame{min-width:0;margin:1.4rem 0}.frame__bar{align-items:baseline}.frame__src{color:inherit;text-decoration:none}.frame__src:hover,.frame__src:focus-visible{color:var(--acc);text-decoration:underline}.frame__label{text-overflow:ellipsis;white-space:nowrap;max-width:75%;overflow:hidden}.frame__meta{flex:0 auto}.frame__body{border:1px solid var(--line);border-radius:var(--radius);background:var(--code);background-clip:padding-box;overflow:hidden}.frame__bar+.frame__body{border-top-left-radius:0;border-top-right-radius:0}.frame__bar+.frame__body,.codehead+*{margin-top:-1px;position:relative}.frame>figcaption,.codefoot{color:var(--mut);margin-top:.4rem;font-size:14px;font-style:italic}pre.has-line-numbers{padding-left:1rem}pre.has-line-numbers code{counter-reset:line;--ln-gutter:calc(var(--ln-digits,2) * 1ch);background-image:linear-gradient(var(--line), var(--line));background-size:1px 100%;background-position:calc(var(--ln-gutter) + .9ch) 0;background-repeat:no-repeat;display:block}pre.has-line-numbers code .line{counter-increment:line}pre.has-line-numbers code .line:before{content:counter(line);width:var(--ln-gutter);text-align:right;color:var(--mut);user-select:none;margin-right:1.8ch;display:inline-block}pre:has(.line.diff,.line.highlighted) code{width:max-content;min-width:100%}pre:has(.line.diff,.line.highlighted) code .line{min-width:100%;display:inline-block;position:relative}pre code .line.highlighted{background:color-mix(in srgb, var(--acc) 11%, transparent)}pre.has-line-numbers code .line.highlighted:before{color:var(--acc)}pre code .line.highlighted:after{content:"";background:var(--acc);width:2px;position:absolute;top:0;bottom:0;left:-1rem}pre code .line.add{background:color-mix(in srgb, var(--diff-add) 11%, transparent)}pre code .line.remove{background:color-mix(in srgb, var(--diff-remove) 10%, transparent)}pre code .line.remove>span{opacity:.55}pre.has-line-numbers code .line.remove{counter-increment:none}pre.has-line-numbers code .line.remove:before{content:""}pre code :is(.line.add,.line.remove):after{user-select:none;font-weight:600;position:absolute;top:0;left:-.85rem}pre code .line.add:after{content:"+";content:"+" / "added";color:var(--diff-add)}pre code .line.remove:after{content:"−";content:"−" / "removed";color:var(--diff-remove)}.callout{--c:var(--acc);--callout-icon:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%209%209'%20shape-rendering='crispEdges'%3e%3cpath%20d='M1%200h7v1H1zM0%201h4v1H0zM5%201h4v1H5zM0%202h9v1H0zM0%203h3v1H0zM5%203h4v1H5zM0%204h4v1H0zM5%204h4v1H5zM0%205h4v1H0zM5%205h4v1H5zM0%206h4v1H0zM5%206h4v1H5zM0%207h3v1H0zM6%207h3v1H6zM1%208h7v1H1z'/%3e%3c/svg%3e")}.callout--tip{--c:var(--diff-add);--callout-icon:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%209%209'%20shape-rendering='crispEdges'%3e%3cpath%20d='M2%200h5v1H2zM1%201h7v1H1zM0%202h9v1H0zM0%203h9v1H0zM1%204h7v1H1zM2%205h5v1H2zM3%206h3v1H3zM3%208h3v1H3z'/%3e%3c/svg%3e")}.callout--warning{--c:#e6b98a;--callout-icon:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%209%209'%20shape-rendering='crispEdges'%3e%3cpath%20d='M4%201h1v1H4zM3%202h3v1H3zM3%203h1v1H3zM5%203h1v1H5zM2%204h2v1H2zM5%204h2v1H5zM2%205h2v1H2zM5%205h2v1H5zM1%206h7v1H1zM1%207h3v1H1zM5%207h3v1H5zM0%208h9v1H0z'/%3e%3c/svg%3e")}.callout--caution{--c:var(--diff-remove);--callout-icon:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%209%209'%20shape-rendering='crispEdges'%3e%3cpath%20d='M2%200h5v1H2zM1%201h7v1H1zM0%202h4v1H0zM5%202h4v1H5zM0%203h4v1H0zM5%203h4v1H5zM0%204h4v1H0zM5%204h4v1H5zM0%205h9v1H0zM0%206h4v1H0zM5%206h4v1H5zM1%207h7v1H1zM2%208h5v1H2z'/%3e%3c/svg%3e")}.callout .callout__bar{color:var(--c);background:linear-gradient(90deg, color-mix(in srgb, var(--c) 15%, transparent), transparent);justify-content:flex-start;align-items:center;gap:8px}.callout__icon{width:18px;height:18px;mask:var(--callout-icon) 0 0 / 100% 100% no-repeat;background-color:currentColor;flex:none}.callout .callout__body{border-left:2px solid var(--c);border-top-left-radius:0;padding:.7rem 1rem}.callout__body>:first-child{margin-top:0}.callout__body>:last-child{margin-bottom:0}.hero-wrap{border:1px solid var(--line);border-radius:var(--radius);margin:0 0 1.4rem;position:relative;overflow:hidden}.ph{display:block;position:relative;overflow:hidden}.ph__b{z-index:0;position:absolute;inset:0}.ph--glow{overflow:visible}.ph--glow .ph__b{filter:blur(30px);opacity:.55;inset:-18px}@media (prefers-reduced-motion:reduce){.ph--glow .ph__b{opacity:.4}}.ph>img,.hero-wrap>img{display:block}.ph>img,.hero-wrap>img,.frame__body>img{z-index:1;color:#0000;position:relative}.hero-blur{z-index:0;position:absolute;inset:0}.hero-wrap .post__hero{width:100%;height:auto;margin:0}.frame__scroll{border-radius:inherit;overflow-x:auto}.frame table{border-collapse:collapse;table-layout:auto;width:100%;font-size:15px}.frame th,.frame td{border-bottom:1px solid var(--line);text-align:start;vertical-align:baseline;font-variant-numeric:tabular-nums lining-nums;padding:.45rem .8rem}.frame td code{white-space:nowrap}.frame thead th{font-family:var(--font-departure), ui-monospace, monospace;font-size:var(--mono-small);letter-spacing:.1em;text-transform:uppercase;color:var(--acc);white-space:nowrap;border-bottom:1px solid var(--line);background:#b48cff0d}.frame tbody tr:last-child td{border-bottom:0}.frame tbody tr:nth-child(2n){background:#ffffff05}.frame__scroll:focus-visible{outline:2px solid var(--acc);outline-offset:-2px}.frame__body>img{width:100%;height:auto;display:block}.chart .frame__body{padding:.6rem}.chart svg{width:100%;height:auto;display:block}.chart svg text{font-family:var(--font-jetbrains), ui-monospace, monospace}.flowchart-figure svg{margin-inline:auto}.flowchart .fc-node :is(.fc-win,polygon,circle),.flowchart .fc-node>rect{fill:var(--panel);stroke:#ffffff29;stroke-width:1px}.flowchart .fc-rule{stroke:var(--line);stroke-width:1px}.flowchart .fc-stop{stop-color:var(--acc);stop-opacity:.32}.flowchart .fc-stop.is-em{stop-opacity:.7}.flowchart .fc-stop.is-end{stop-opacity:0}.flowchart .fc-node.is-em :is(.fc-win,polygon,circle),.flowchart .fc-node.is-em>rect{stroke:#b48cff8c}.flowchart .fc-node.is-em :is(polygon,circle),.flowchart .fc-node.is-em>rect:not(.fc-win){fill:#3b2f6b73}.flowchart .fc-label{font-family:var(--font-jetbrains), ui-monospace, monospace;fill:var(--ink);font-size:13px}.flowchart .is-em .fc-label{fill:var(--acc)}.flowchart .fc-text .fc-label{fill:var(--mut)}.flowchart .fc-detail,.flowchart .fc-elabel{font-family:var(--font-departure), ui-monospace, monospace;font-size:var(--mono-small);fill:var(--mut)}.flowchart .fc-chip{fill:var(--code)}.flowchart .fc-edge{fill:var(--mut);fill-opacity:.65}.flowchart .fc-edge.is-em{fill:var(--acc);fill-opacity:1}.frame--embed .frame__body>:not(script):not(template):not(style){width:100%;margin:0;display:block}.frame--embed lite-youtube,.frame--embed lite-vimeo{width:100%;max-width:none}.ph--video{line-height:0}.ph--video>lite-youtube,.ph--video>lite-vimeo{z-index:1;background-color:#0000;position:relative}.social{padding:1rem}.social__head{align-items:center;gap:.6rem;margin-bottom:.7rem;display:flex}.social__avatar{border:1px solid var(--line);border-radius:50%;flex:none;width:40px;height:40px}.social__who{flex-direction:column;gap:1px;min-width:0;display:flex}.social__name{font-family:var(--font-literata), "Noto Emoji", Georgia, serif;color:var(--ink);font-size:15px;font-weight:600;line-height:1.3}.social__handle,.social__foot,.social__card-provider{font-family:var(--font-departure), ui-monospace, monospace;font-size:var(--mono-small);letter-spacing:.1em;color:var(--mut)}.social__body{font-family:var(--font-literata), "Noto Emoji", Georgia, serif;color:var(--ink);font-size:16px;line-height:1.6}.social__body :first-child{margin-top:0}.social__body :last-child{margin-bottom:0}.social__body .invisible{display:none}.social__media{gap:4px;margin-top:.7rem;display:grid}.social__media[data-count="2"],.social__media[data-count="4"]{grid-template-columns:1fr 1fr}.social__media[data-count="3"]{grid-template-columns:1fr 1fr 1fr}.social__figure{min-width:0;margin:0}.social__figure .frame__bar{color:var(--mut)}.social__figure img{border:1px solid var(--line);border-radius:0 0 var(--radius) var(--radius);border-top:0;width:100%;height:auto;display:block}.social__card{border:1px solid var(--line);border-radius:var(--radius);flex-direction:column;margin-top:.7rem;text-decoration:none;display:flex;overflow:hidden}.social__card-img{width:100%;display:block}.social__card-text{flex-direction:column;gap:2px;padding:.6rem .7rem;display:flex}.social__card-title{color:var(--ink);font-size:15px}.social__card-desc{color:var(--mut);font-size:14px}.social__card:hover{border-color:var(--acc)}.social__card--standalone{border:0;border-radius:0;margin-top:0}.social__card--standalone .social__card-img{aspect-ratio:1200/630;object-fit:cover;width:100%}.social__card--standalone .social__card-text{padding:.7rem 1rem .9rem}.social__foot{margin-top:.7rem}.social__foot a{color:inherit;text-decoration:none}.social__foot a:hover{text-underline-offset:2px;text-decoration:underline}.gist-source{font-family:var(--font-departure), ui-monospace, monospace;font-size:var(--mono-small);letter-spacing:.1em;color:var(--mut);margin-top:.6rem;text-decoration:none;display:block}.gist-source:hover{text-underline-offset:2px;text-decoration:underline}.katex-mathml{user-select:none}.katex{font-size:1.05em}.katex-html{white-space:nowrap}.math-punct{font-family:var(--font-literata), "Noto Emoji", Georgia, serif;font-size:.952381em;font-style:normal}.math-punct-sr{user-select:none}.katex-display{margin:1.4rem 0;padding:.35rem 0;overflow:auto hidden}.katex-display>.katex{text-align:initial}.footnotes{border-top:1px solid var(--line);color:var(--mut);margin-top:2.4rem;padding-top:.9rem;font-size:.92em}.footnotes #footnote-label{font-family:var(--font-departure), ui-monospace, monospace;font-size:var(--mono-small);letter-spacing:.13em;text-transform:uppercase;color:var(--acc);margin:0 0 .6rem}.footnotes ol{margin:0;padding-left:1.4rem}.footnotes li{margin:.35rem 0}.footnotes li p{margin:.2rem 0}.footnotes li:target{color:var(--ink)}.footnotes li:target::marker{color:var(--acc)}sup:has(>a[data-footnote-ref]){line-height:0}a[data-footnote-ref]{padding:0 .15em;scroll-margin-top:40vh;text-decoration:none;position:relative}a[data-footnote-ref].is-returned:after{content:"";border:1px solid var(--acc);box-shadow:2px 2px 0 0 var(--acc-deep);pointer-events:none;opacity:0;animation:2s ease-in-out footnote-back;position:absolute;inset:-3px -2px -2px}@keyframes footnote-back{0%,45%{opacity:1}to{opacity:0}}@media (prefers-reduced-motion:reduce){a[data-footnote-ref].is-returned:after{animation-timing-function:step-end}}a[data-footnote-backref]{align-items:flex-start;margin-left:.4rem;font-size:0;text-decoration:none;display:inline-flex}a[data-footnote-backref]:before{content:"";background-color:currentColor;width:14px;height:10px;mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%207%205'%20shape-rendering='crispEdges'%3e%3cpath%20d='M2%200h4v1H2zM6%201h1v1H6zM1%202h1v1H1zM6%202h1v1H6zM0%203h6v1H0zM1%204h1v1H1z'/%3e%3c/svg%3e") 0 0/100% no-repeat}a[data-footnote-backref] sup{font-family:var(--font-departure), ui-monospace, monospace;font-size:var(--mono-small);margin-left:1px;line-height:1;position:relative;top:-6px}.codehead a{color:inherit;text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:.25em}.codehead a:hover,.codehead a:focus-visible{color:var(--acc);text-decoration-color:currentColor}@media print{:root{color-scheme:light;--bg:#fff;--panel:#fff;--code:#f4f4f4;--ink:#000;--mut:#444;--acc:#000;--line:#bbb;--diff-add:#1a7f37;--diff-remove:#cf222e}body{color:#000;background:#fff}.skip-link,.heading-anchor,.mast__nav,.wall,.runbar,.runfoot,.codewrap .copy,.foot,.hero-blur{display:none!important}a{color:inherit;text-decoration:underline}.post a[href^=http]:not(.tag):after{content:" <" attr(href) ">";overflow-wrap:anywhere;font-size:.85em}.post a[href^=\/]:not(.tag):after{content:" <https://duplexsystem.org" attr(href) ">";overflow-wrap:anywhere;font-size:.85em}pre,pre span{color:#000!important;background:0 0!important}pre{white-space:pre-wrap;border:1px solid var(--line)}pre,figure,img,table,.frame{break-inside:avoid}h1,h2,h3,h4{break-after:avoid}}.runin{margin:2rem 0 1em}.runin>h2{line-height:inherit;margin:0 9px 0 0;display:inline}.runin>p{margin:0;display:inline}.runin--tight>h2{margin-right:0}.runin .heading-anchor{width:0;margin:0;display:inline-block;position:relative;left:-.9em}.heading-anchor{color:var(--mut);opacity:0;margin-left:.4em;text-decoration:none}.heading-anchor:before{content:"#";font-family:var(--font-departure), ui-monospace, monospace}h2:hover .heading-anchor,h3:hover .heading-anchor,h4:hover .heading-anchor,.heading-anchor:focus-visible{opacity:1}.heading-anchor:hover{color:var(--acc)}@media (hover:none){.heading-anchor{opacity:.6}}:target{scroll-margin-top:1rem}.toc{margin:0;padding:2px 0;font-size:.9rem;line-height:20px;position:relative}.toc__label{width:fit-content;font-family:var(--font-departure), ui-monospace, monospace;font-size:var(--mono-small);letter-spacing:.13em;text-transform:uppercase;color:var(--acc);cursor:pointer;align-items:center;gap:8px;list-style:none;display:flex}.toc__label::-webkit-details-marker{display:none}.toc__btn{width:18px;height:16px;color:var(--acc);background:var(--code);border:1px solid color-mix(in srgb, var(--acc) 55%, transparent);border-radius:3px;place-items:center;display:inline-grid}.toc__btn:before{content:"";background-color:currentColor;width:6px;height:10px;mask:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%203%205'%20shape-rendering='crispEdges'%3e%3cpath%20d='M0%200h1v1H0zM0%201h2v1H0zM0%202h3v1H0zM0%203h2v1H0zM0%204h1v1H0z'/%3e%3c/svg%3e") 0 0/100% 100% no-repeat}.toc[open] .toc__btn:before{width:10px;height:6px;mask-image:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%205%203'%20shape-rendering='crispEdges'%3e%3cpath%20d='M0%200h5v1H0zM1%201h3v1H1zM2%202h1v1H2z'/%3e%3c/svg%3e")}.toc__label:hover .toc__btn{border-color:var(--acc)}.toc__window{z-index:20;top:-2px;left:calc(-1 * var(--win-out,17px) + 4px);right:calc(-1 * var(--win-out,17px) - 4px);background:var(--panel);border:1px solid color-mix(in srgb, var(--acc) 22%, var(--line));border-radius:var(--radius);box-shadow:0 0 0 1px #0009, 6px 6px 0 0 var(--acc-deep), 6px 6px 0 1px #0009;position:absolute;overflow:hidden}.toc::details-content{transition:content-visibility .14s allow-discrete}.toc__window{opacity:0;transition:opacity .14s ease-out}.toc[open] .toc__window{opacity:1;animation:.14s ease-out toc-in}@keyframes toc-in{0%{opacity:0}}.toc__winbar{border-bottom:1px solid var(--line);background:linear-gradient(90deg,#b48cff26,#0000);height:26px}.toc[open]>.toc__label{z-index:21;position:relative}.toc .toc__window>ol{padding:12px 14px 6px 42px}@media (prefers-reduced-motion:reduce){.toc::details-content,.toc__window,.toc[open] .toc__window{transition:none;animation:none}}.toc__count{color:var(--mut)}.toc__label:hover .toc__count{color:var(--acc)}.toc__label:focus-visible{outline:none}.toc__label:focus-visible .toc__btn{border-color:var(--acc);outline:2px solid var(--acc);outline-offset:1px}.toc ol{margin:0;padding-left:28px}.toc__window>ol{column-gap:2.5rem}@media (width>=40rem){.toc__window>ol{columns:2}}.toc ol ol{padding-left:1rem}.toc li{break-inside:avoid;margin:0 0 6px}.toc li::marker{font-family:var(--font-departure), ui-monospace, monospace;font-size:var(--mono-small);color:var(--mut)}.toc a{color:var(--mut);text-decoration:none}.toc a:hover,.toc a:focus-visible{color:var(--acc);text-decoration:underline}.progress{top:0;bottom:0;left:var(--progress-x,0);z-index:10;opacity:0;pointer-events:none;width:4px;transition:opacity .2s ease-out;position:fixed}.progress.is-on{opacity:1}.progress__rail{width:4px;position:absolute;top:24px;left:0}.progress__canvas{image-rendering:pixelated;display:block}.progress__labels{width:var(--progress-label-w,140px);text-align:right;font-family:var(--font-departure), ui-monospace, monospace;font-size:var(--mono-small);will-change:transform;flex-direction:column;align-items:flex-end;gap:6px;line-height:14px;display:flex;position:absolute;top:0;right:14px}.progress--bare .progress__labels,.progress--flat .progress__labels{display:none}.progress--flat{background:var(--bg);width:100%;height:4px;bottom:auto;left:0}.progress--flat .progress__rail{top:0}.progress__prev,.progress__next{color:var(--mut);pointer-events:auto;overflow-wrap:anywhere;text-decoration:none}.progress__prev:hover,.progress__next:hover,.progress__prev:focus-visible,.progress__next:focus-visible{color:var(--acc);text-decoration:underline}.progress__here{letter-spacing:.13em;text-transform:uppercase;justify-items:end;display:grid}.progress__pos,.progress__title{grid-area:1/1;transition:opacity .22s ease-out}.progress__pos{color:var(--acc);white-space:nowrap}.progress__title{color:var(--ink);letter-spacing:0;text-transform:none;opacity:0;overflow-wrap:anywhere}.progress__here.is-title .progress__pos{opacity:0}.progress__here.is-title .progress__title{opacity:1}.progress__here.is-up .progress__title{animation:.24s cubic-bezier(.2,.8,.3,1) progress-snap-up}.progress__here.is-down .progress__title{animation:.24s cubic-bezier(.2,.8,.3,1) progress-snap-down}.progress__prev.is-new,.progress__next.is-new{animation:.24s ease-out progress-in}@keyframes progress-snap-up{0%{opacity:.4;transform:translateY(20px)}}@keyframes progress-snap-down{0%{opacity:.4;transform:translateY(-20px)}}@keyframes progress-in{0%{opacity:0}}@media (prefers-reduced-motion:reduce){.progress__prev.is-new,.progress__next.is-new{animation:none}}@media print{.progress{display:none}}.postlist[data-astro-cid-oxezsu4a]{margin:0;padding:0;list-style:none}.postlist__item[data-astro-cid-oxezsu4a]{border-bottom:1px dotted var(--line);padding:.45rem 0}.postlist__item[data-astro-cid-oxezsu4a]:last-child{border-bottom:0}.postlist__meta[data-astro-cid-oxezsu4a]{font-size:var(--mono-small)}.postlist__desc[data-astro-cid-oxezsu4a]{margin:.25rem 0 0;font-size:15px}.post[data-astro-cid-ssdmjifj]{isolation:isolate}.post__window[data-astro-cid-ssdmjifj]{--win-out:clamp(0px, round(down, calc(max(0px, (100vw - 62rem) / 2) + 18px - 8px), 1px), 17px);margin:0 0 8px;position:relative}.post__window[data-astro-cid-ssdmjifj]:before,.post__window[data-astro-cid-ssdmjifj]:after{content:"";top:0;left:calc(-1 * var(--win-out));width:round(down, calc(100% + 2 * var(--win-out)), 2px);z-index:-1;position:absolute;bottom:-160px}.post__window[data-astro-cid-ssdmjifj]:before{background:var(--panel);mask:linear-gradient(#000 0 0) top/100% calc(100% - 128px) no-repeat,url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%204%2064'%20shape-rendering='crispEdges'%3e%3cpath%20d='M0%200h4v1H0zM0%201h4v1H0zM0%202h4v1H0zM0%203h4v1H0zM0%204h4v1H0zM0%205h4v1H0zM0%206h4v1H0zM1%207h3v1H1zM0%208h4v1H0zM0%209h2v1H0zM3%209h1v1H3zM0%2010h4v1H0zM1%2011h3v1H1zM0%2012h4v1H0zM0%2013h2v1H0zM3%2013h1v1H3zM0%2014h4v1H0zM1%2015h1v1H1zM3%2015h1v1H3zM0%2016h4v1H0zM1%2017h1v1H1zM3%2017h1v1H3zM0%2018h4v1H0zM1%2019h1v1H1zM3%2019h1v1H3zM0%2020h4v1H0zM1%2021h1v1H1zM3%2021h1v1H3zM0%2022h1v1H0zM2%2022h2v1H2zM1%2023h1v1H1zM3%2023h1v1H3zM0%2024h3v1H0zM1%2025h1v1H1zM3%2025h1v1H3zM0%2026h1v1H0zM2%2026h2v1H2zM1%2027h1v1H1zM3%2027h1v1H3zM0%2028h3v1H0zM1%2029h1v1H1zM3%2029h1v1H3zM0%2030h1v1H0zM2%2030h1v1H2zM1%2031h1v1H1zM3%2031h1v1H3zM0%2032h1v1H0zM2%2032h1v1H2zM1%2033h1v1H1zM3%2033h1v1H3zM0%2034h1v1H0zM2%2034h1v1H2zM1%2035h1v1H1zM3%2035h1v1H3zM0%2036h1v1H0zM2%2036h1v1H2zM1%2037h1v1H1zM3%2037h1v1H3zM0%2038h1v1H0zM2%2038h1v1H2zM3%2039h1v1H3zM0%2040h1v1H0zM2%2040h1v1H2zM1%2041h1v1H1zM0%2042h1v1H0zM2%2042h1v1H2zM3%2043h1v1H3zM0%2044h1v1H0zM2%2044h1v1H2zM1%2045h1v1H1zM0%2046h1v1H0zM2%2046h1v1H2zM0%2048h1v1H0zM2%2048h1v1H2zM0%2050h1v1H0zM2%2050h1v1H2zM0%2052h1v1H0zM2%2052h1v1H2zM2%2054h1v1H2zM0%2056h1v1H0zM2%2058h1v1H2zM0%2060h1v1H0z'/%3e%3c/svg%3e") bottom/8px 128px repeat-x}.post__window[data-astro-cid-ssdmjifj]:after{border-radius:var(--radius) var(--radius) 0 0;border:1px solid #ffffff24;border-bottom:0;mask:linear-gradient(#000 0 0) top/100% calc(100% - 128px) no-repeat,url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201%2064'%20shape-rendering='crispEdges'%3e%3cpath%20d='M0%200h1v1H0zM0%201h1v1H0zM0%202h1v1H0zM0%203h1v1H0zM0%204h1v1H0zM0%205h1v1H0zM0%206h1v1H0zM0%208h1v1H0zM0%209h1v1H0zM0%2010h1v1H0zM0%2012h1v1H0zM0%2013h1v1H0zM0%2014h1v1H0zM0%2016h1v1H0zM0%2018h1v1H0zM0%2020h1v1H0zM0%2022h1v1H0zM0%2024h1v1H0zM0%2026h1v1H0zM0%2028h1v1H0zM0%2030h1v1H0zM0%2032h1v1H0zM0%2034h1v1H0zM0%2036h1v1H0zM0%2038h1v1H0zM0%2040h1v1H0zM0%2042h1v1H0zM0%2044h1v1H0zM0%2046h1v1H0zM0%2048h1v1H0zM0%2050h1v1H0zM0%2052h1v1H0zM0%2056h1v1H0zM0%2060h1v1H0z'/%3e%3c/svg%3e") 0 100%/2px 128px no-repeat,url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%201%2064'%20shape-rendering='crispEdges'%3e%3cpath%20d='M0%200h1v1H0zM0%201h1v1H0zM0%202h1v1H0zM0%203h1v1H0zM0%204h1v1H0zM0%205h1v1H0zM0%206h1v1H0zM0%208h1v1H0zM0%209h1v1H0zM0%2010h1v1H0zM0%2012h1v1H0zM0%2013h1v1H0zM0%2014h1v1H0zM0%2016h1v1H0zM0%2018h1v1H0zM0%2020h1v1H0zM0%2022h1v1H0zM0%2024h1v1H0zM0%2026h1v1H0zM0%2028h1v1H0zM0%2030h1v1H0zM0%2032h1v1H0zM0%2034h1v1H0zM0%2036h1v1H0zM0%2038h1v1H0zM0%2040h1v1H0zM0%2042h1v1H0zM0%2044h1v1H0zM0%2046h1v1H0zM0%2048h1v1H0zM0%2050h1v1H0zM0%2052h1v1H0zM0%2056h1v1H0zM0%2060h1v1H0z'/%3e%3c/svg%3e") 100% 100%/2px 128px no-repeat}.post__byline[data-astro-cid-ssdmjifj]{box-sizing:border-box;width:round(down, calc(100% + 2 * var(--win-out)), 2px);margin:0 0 0 calc(-1 * var(--win-out));padding:5px var(--win-out);font-size:var(--mono-small);letter-spacing:.13em;color:var(--acc);box-shadow:inset 1px 0 0 #ffffff24, inset -1px 0 0 #ffffff24, inset 0 1px 0 #ffffff24, inset 0 -1px 0 var(--line);border-radius:var(--radius) var(--radius) 0 0;background:linear-gradient(90deg,#b48cff26,#0000);border:0;line-height:18px}.post__winbody[data-astro-cid-ssdmjifj]{flex-direction:column;gap:12px;padding:20px 0 8px;display:flex}.post__winbody[data-astro-cid-ssdmjifj] h1[data-astro-cid-ssdmjifj]{margin:0 0 4px}.post__tags[data-astro-cid-ssdmjifj]{flex-wrap:wrap;gap:6px;display:flex}.tag[data-astro-cid-ssdmjifj]{font-family:var(--font-departure), ui-monospace, monospace;font-size:var(--mono-small);color:var(--acc);background:var(--code);border-radius:var(--radius);border:1px solid #ffffff24;padding:1px 8px;line-height:18px;text-decoration:none}.tag[data-astro-cid-ssdmjifj]:hover,.tag[data-astro-cid-ssdmjifj]:focus-visible{border-color:var(--acc)}.wall[data-astro-cid-hpe3uzi5]{flex-wrap:wrap;gap:3px;display:flex}.wall[data-astro-cid-hpe3uzi5] a[data-astro-cid-hpe3uzi5]{text-decoration:none;display:block}.wall[data-astro-cid-hpe3uzi5] .tile[data-astro-cid-hpe3uzi5]{box-sizing:border-box;border:1px solid var(--acc);background:var(--panel);width:88px;height:31px;color:var(--acc);font-family:var(--font-departure), ui-monospace, monospace;justify-content:center;align-items:center;font-size:22px;line-height:1;display:flex}.wall[data-astro-cid-hpe3uzi5] .tile--own-look[data-astro-cid-hpe3uzi5]{background:var(--tile-bg);color:var(--tile-fg);border-color:var(--tile-border);font:var(--tile-font,inherit);text-decoration:var(--tile-deco)}.wall[data-astro-cid-hpe3uzi5] a[data-astro-cid-hpe3uzi5].tile:not(.tile--own-look):hover,.wall[data-astro-cid-hpe3uzi5] a[data-astro-cid-hpe3uzi5].tile:not(.tile--own-look):focus-visible{background:var(--acc);color:var(--bg)}.wall[data-astro-cid-hpe3uzi5] picture[data-astro-cid-hpe3uzi5],.wall[data-astro-cid-hpe3uzi5] img[data-astro-cid-hpe3uzi5]{image-rendering:pixelated;display:block}.snippet[data-astro-cid-zscbdfoh] pre{max-width:100%}.snippet[data-astro-cid-zscbdfoh] code{white-space:pre-wrap;word-break:break-all}.nojs-only[data-astro-cid-6bfsojfh]{display:none}.preface[data-astro-cid-6bfsojfh]{text-align:center;margin:.4rem 0 .9rem}.addr-line[data-astro-cid-6bfsojfh]{text-align:center;margin:0}.addr[data-astro-cid-6bfsojfh]{font-family:var(--font-jetbrains), ui-monospace, monospace;letter-spacing:.01em;color:var(--mut);overflow-wrap:anywhere;font-size:clamp(15px,4.6vw,26px);transition:color .45s}.addr[data-astro-cid-6bfsojfh].is-cracked{color:var(--acc)}.addr-wrap[data-astro-cid-6bfsojfh]{display:inline-block;position:relative}.addr-mail[data-astro-cid-6bfsojfh]{white-space:nowrap;font-family:var(--font-departure), ui-monospace, monospace;font-size:var(--mono-small);opacity:0;margin-left:.9rem;transition:opacity .5s;position:absolute;bottom:.5em;left:100%}.addr-mail[data-astro-cid-6bfsojfh].is-in{opacity:1}@media (width<=38rem){.addr-wrap[data-astro-cid-6bfsojfh]{display:block}.addr-mail[data-astro-cid-6bfsojfh]{margin:.55rem 0 0;display:block;position:static}}.addr-status[data-astro-cid-6bfsojfh]{text-align:center;font-size:var(--mono-small);min-height:1em;color:var(--acc);margin:.35rem 0 1.3rem;transition:color .6s}.addr-status[data-astro-cid-6bfsojfh].is-done{color:var(--mut)}@media (prefers-reduced-motion:reduce){.addr[data-astro-cid-6bfsojfh],.addr-status[data-astro-cid-6bfsojfh],.addr-mail[data-astro-cid-6bfsojfh]{transition:none}}.lost[data-astro-cid-tndqnzcv]{flex-wrap:wrap;align-items:center;gap:1.4rem;display:flex}.lost__art[data-astro-cid-tndqnzcv]{flex:none;width:110px;height:auto}@media (width<=30rem){.lost__art[data-astro-cid-tndqnzcv]{width:72px}}.table-scroll[data-astro-cid-y5rzs33a]{margin:1rem 0;overflow-x:auto}table[data-astro-cid-y5rzs33a]{border-collapse:collapse;width:100%;font-size:15px}table[data-astro-cid-y5rzs33a] [data-astro-cid-y5rzs33a]:is(td,th){border:1px solid var(--line);text-align:left;padding:.3rem .6rem}.projects[data-astro-cid-3rkrlumz]{margin:0;padding:0;list-style:none}.projects[data-astro-cid-3rkrlumz] li[data-astro-cid-3rkrlumz]{border-bottom:1px dotted var(--line);padding:.4rem 0}.projects[data-astro-cid-3rkrlumz] li[data-astro-cid-3rkrlumz]:last-child{border-bottom:0}.pfwrap{--pf-background:var(--panel);--pf-text:var(--ink);--pf-text-secondary:var(--mut);--pf-text-muted:var(--mut);--pf-border:var(--line);--pf-border-focus:var(--acc);--pf-border-radius:var(--radius);--pf-outline-focus:var(--acc);--pf-hover:#b48cff1f;--pf-mark:var(--acc);--pf-font:var(--font-literata), "Noto Emoji", Georgia, serif;--pf-modal-backdrop:#0f0b16b8}.pfwrap pagefind-input{--pf-font:var(--font-departure), ui-monospace, monospace;--pf-input-font-size:22px;--pf-input-height:40px;--pf-icon-search:url("data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%208%208'%20shape-rendering='crispEdges'%3e%3cpath%20d='M1%200h4v1H1zM0%201h1v1H0zM5%201h1v1H5zM0%202h1v1H0zM5%202h1v1H5zM0%203h1v1H0zM5%203h1v1H5zM0%204h1v1H0zM5%204h1v1H5zM1%205h4v1H1zM6%206h1v1H6zM7%207h1v1H7z'/%3e%3c/svg%3e")}.pfwrap .pf-input{transition:border-color .12s;background:var(--panel)!important;border:1px solid var(--line)!important;border-radius:var(--radius)!important;padding-inline:37px 52px!important}.pfwrap .pf-input:focus-visible{border-color:var(--acc)!important;box-shadow:none!important}.pfwrap .pf-input-wrapper:has(.pf-input-clear:not([data-pf-suppressed])) .pf-input{padding-inline-end:72px!important}.pfwrap .pf-input-wrapper:before{background-color:var(--acc)!important;top:12px!important;width:16px!important;height:16px!important;inset-inline-start:14px!important}@media (scripting:enabled){.pfwrap pagefind-input:not(:defined){box-sizing:border-box;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);height:40px;display:block;position:relative}.pfwrap pagefind-input:not(:defined):before{content:"";background-color:var(--acc);width:16px;height:16px;mask:var(--pf-icon-search) 0 0 / 100% no-repeat;top:11px;position:absolute;inset-inline-start:13px}.pfwrap pagefind-input:not(:defined):after{content:attr(placeholder);font-family:var(--font-departure), ui-monospace, monospace;color:var(--mut);font-size:22px;line-height:38px;position:absolute;inset:0 0 0 37px}.pfbox:has(pagefind-input:not(:defined)) .pfkey{display:block}}.pfbox{position:relative}.pfkey{font-family:var(--font-departure), ui-monospace, monospace;font-size:var(--mono-small);color:var(--mut);background:var(--bg);border:1px solid var(--line);pointer-events:none;border-radius:3px;padding:4px 7px;line-height:1;display:none;position:absolute;top:9px;right:10px}.pfbox:has(.pf-input:placeholder-shown):not(:focus-within) .pfkey{display:block}.pfwrap .pf-input-clear{font-family:var(--font-departure), ui-monospace, monospace!important;font-size:var(--mono-small)!important;letter-spacing:.13em!important;text-transform:uppercase!important}.pfresults{margin-top:var(--gap)}@media (prefers-reduced-motion:no-preference){.pfresults{transition:opacity .18s ease-out,translate .18s ease-out}.pfresults[data-closing]{opacity:0;transition-timing-function:ease-in;translate:0 -4px}@starting-style{.pfresults{opacity:0;translate:0 -4px}}}.pfresults:not(:has(.pf-summary:not(:empty))){display:none}.pfresults:not(:has(.pf-result:not([aria-hidden=true]),.pf-skeleton)) .panel__title{border-bottom:0}.pfresults:not(:has(.pf-result:not([aria-hidden=true]),.pf-skeleton)) .panel__body{display:none}.pfresults .panel__body{position:relative}.pfwrap .pf-results:not(.pf-held):is([aria-busy=true],:has(.pf-skeleton)),.pfresults[data-holding] .pf-results:not(.pf-held){inset:0 0 auto;visibility:hidden!important;position:absolute!important}.pfresults{view-transition-name:pf-results}::view-transition-group(pf-results){animation-duration:.18s;animation-timing-function:ease-out;overflow:clip}::view-transition-old(pf-results),::view-transition-new(pf-results){animation-duration:.18s}@supports ((-moz-appearance:none)){::view-transition-old(pf-results){display:none}::view-transition-group(pf-results),::view-transition-new(pf-results){animation:none}}.pfresults pagefind-summary,.pfresults pagefind-results{font:inherit!important;font-variation-settings:inherit!important;letter-spacing:inherit!important;text-transform:inherit!important;color:inherit!important;display:block!important}.pfresults .pf-summary{font:inherit!important;color:inherit!important}.pfresults .pf-q{color:var(--mut)!important}.pfwrap .pf-results{gap:0!important}.pfwrap .pf-result{border-bottom:1px dotted var(--line)!important;gap:0!important;padding:.6rem 0!important}.pfwrap .pf-result:last-child{border-bottom:0!important}.pfwrap .pf-result-card{box-shadow:none!important;background:0 0!important;border:0!important;border-radius:0!important;padding:0!important}.pfwrap .pf-result-title{font-size:19px!important;font-weight:600!important;line-height:1.4!important}.pfwrap .pf-result-link{color:var(--ink)!important;text-decoration:none!important}.pfwrap .pf-result-link:before{font-family:var(--font-departure), ui-monospace, monospace;font-size:var(--mono-small);letter-spacing:.08em;color:var(--acc);content:attr(href);content:attr(href) / "";font-weight:400;line-height:1.65;display:block}.pfwrap .pf-result-link:hover{color:var(--acc)!important}.pfwrap .pf-result-link:focus-visible{outline-offset:2px;outline:2px solid var(--acc)!important}.pfwrap .pf-result-excerpt{color:var(--mut)!important;white-space:normal!important;-webkit-line-clamp:2!important;line-clamp:2!important;-webkit-box-orient:vertical!important;margin:.2rem 0 0!important;font-size:15px!important;line-height:24px!important;display:-webkit-box!important}.pfwrap .pf-heading-chips{gap:.5rem!important;margin:.65rem 0 .1rem!important;padding:0!important}.pfwrap .pf-heading-chip{border:0!important;border-left:1px solid var(--line)!important;box-shadow:none!important;font-size:inherit!important;background:0 0!important;border-radius:0!important;gap:0!important;padding:0 0 0 12px!important}.pfwrap .pf-heading-link{color:var(--ink)!important;font-weight:inherit!important;line-height:inherit!important;font-size:15px!important;text-decoration:none!important}.pfwrap .pf-heading-link:hover{color:var(--acc)!important}.pfwrap .pf-heading-link:focus-visible{outline-offset:2px;outline:2px solid var(--acc)!important}.pfwrap .pf-heading-link:before{font-family:var(--font-departure), ui-monospace, monospace;font-size:var(--mono-small);color:var(--acc)!important;margin-inline-end:.6em!important}.pfwrap .pf-heading-excerpt{color:var(--mut)!important;font-size:14px!important;line-height:22px!important}.pfwrap mark{color:var(--ink)!important;background:0 0!important;font-weight:600!important}.pfwrap mark.pf-emoji{border-radius:2px;padding:0 .12em;background:#b48cff38!important}.more[data-astro-cid-pi35dme4]{font-size:var(--mono-small);margin:.6rem 0 0}.taglist[data-astro-cid-wybof3wm]{flex-wrap:wrap;gap:.9rem;margin:0;padding:0;list-style:none;display:flex}.taglist[data-astro-cid-wybof3wm] span[data-astro-cid-wybof3wm]{font-size:var(--mono-small)}.cols[data-astro-cid-lcdefpme]{gap:var(--gap);grid-template-columns:minmax(0,1fr) fit-content(26rem);display:grid}@media (width<=46rem){.cols[data-astro-cid-lcdefpme]{grid-template-columns:1fr}}.rail[data-astro-cid-lcdefpme]{margin:0;padding:0;list-style:none}.rail[data-astro-cid-lcdefpme] li[data-astro-cid-lcdefpme]{padding:.15rem 0}.more[data-astro-cid-lcdefpme]{margin:.6rem 0 0;font-size:15px}@font-face{font-family:Literata-c6603a82936983b4;src:url(/_astro/fonts/b03360a3c1418164.woff2)format("woff2");font-display:swap;unicode-range:U+20-7E,U+EB,U+2019,U+201C-201D,U+2026,U+2192;font-weight:400;font-style:normal}@font-face{font-family:Literata-c6603a82936983b4;src:url(/_astro/fonts/6a45eccadde3350d.woff2)format("woff2");font-display:swap;unicode-range:U+A0-EA,U+EC-17F,U+2000-2018,U+201A-201B,U+201E-2025,U+2027-20BF,U+2122,U+2190-2191,U+2193,U+2212,U+2500-257F,U+25A0-25FF;font-weight:400;font-style:normal}@font-face{font-family:Literata-c6603a82936983b4;src:url(/_astro/fonts/9fdb6d8ef902e5bd.woff2)format("woff2");font-display:swap;unicode-range:U+20,U+27-29,U+2C-2F,U+31-33,U+35,U+39-3A,U+42-43,U+47-49,U+4C-4D,U+4F-50,U+53-54,U+56,U+61-69,U+6B-70,U+72-79;font-weight:400;font-style:italic}@font-face{font-family:Literata-c6603a82936983b4;src:url(/_astro/fonts/4aafdaae3a6b9b11.woff2)format("woff2");font-display:swap;unicode-range:U+21-26,U+2A-2B,U+30,U+34,U+36-38,U+3B-41,U+44-46,U+4A-4B,U+4E,U+51-52,U+55,U+57-60,U+6A,U+71,U+7A-7E,U+A0-17F,U+2000-20BF,U+2122,U+2190-2193,U+2212,U+2500-257F,U+25A0-25FF;font-weight:400;font-style:italic}@font-face{font-family:Literata-c6603a82936983b4;src:url(/_astro/fonts/bcc042c49cb4f2fd.woff2)format("woff2");font-display:swap;unicode-range:U+20-7E,U+EB,U+2019,U+201C-201D,U+2026,U+2192;font-weight:600;font-style:normal}@font-face{font-family:Literata-c6603a82936983b4;src:url(/_astro/fonts/62a93b0827ee8fdd.woff2)format("woff2");font-display:swap;unicode-range:U+A0-EA,U+EC-17F,U+2000-2018,U+201A-201B,U+201E-2025,U+2027-20BF,U+2122,U+2190-2191,U+2193,U+2212,U+2500-257F,U+25A0-25FF;font-weight:600;font-style:normal}@font-face{font-family:Literata-c6603a82936983b4;src:url(/_astro/fonts/5c6909dcb9eab866.woff2)format("woff2");font-display:swap;unicode-range:U+20-7E;font-weight:600;font-style:italic}@font-face{font-family:Literata-c6603a82936983b4;src:url(/_astro/fonts/6d17a733b6b9835f.woff2)format("woff2");font-display:swap;unicode-range:U+A0-17F,U+2000-20BF,U+2122,U+2190-2193,U+2212,U+2500-257F,U+25A0-25FF;font-weight:600;font-style:italic}@font-face{font-family:Literata-c6603a82936983b4;src:url(/_astro/fonts/fe271973a171b294.woff2)format("woff2");font-display:swap;unicode-range:U+2E,U+30-39,U+41,U+46,U+4C,U+53,U+63,U+65,U+69,U+6C,U+6E-6F,U+72-75;font-weight:700;font-style:normal}@font-face{font-family:Literata-c6603a82936983b4;src:url(/_astro/fonts/9fb2118d178d685c.woff2)format("woff2");font-display:swap;unicode-range:U+20-2D,U+2F,U+3A-40,U+42-45,U+47-4B,U+4D-52,U+54-62,U+64,U+66-68,U+6A-6B,U+6D,U+70-71,U+76-7E,U+A0-17F,U+2000-20BF,U+2122,U+2190-2193,U+2212,U+2500-257F,U+25A0-25FF;font-weight:700;font-style:normal}@font-face{font-family:Literata-c6603a82936983b4;src:url(/_astro/fonts/640e0a15f12d1566.woff2)format("woff2");font-display:swap;unicode-range:U+20-7E;font-weight:700;font-style:italic}@font-face{font-family:Literata-c6603a82936983b4;src:url(/_astro/fonts/1d0566009865ede8.woff2)format("woff2");font-display:swap;unicode-range:U+A0-17F,U+2000-20BF,U+2122,U+2190-2193,U+2212,U+2500-257F,U+25A0-25FF;font-weight:700;font-style:italic}@font-face{font-family:Literata-c6603a82936983b4 fallback\: Times New Roman;src:local(Times New Roman);font-display:swap;font-weight:400;font-style:normal;size-adjust:118.154%;ascent-override:99.6159%;descent-override:26.0677%;line-gap-override:0%}@font-face{font-family:Literata-c6603a82936983b4 fallback\: Times New Roman;src:local(Times New Roman);font-display:swap;font-weight:400;font-style:italic;size-adjust:118.154%;ascent-override:99.6159%;descent-override:26.0677%;line-gap-override:0%}@font-face{font-family:Literata-c6603a82936983b4 fallback\: Times New Roman;src:local(Times New Roman);font-display:swap;font-weight:600;font-style:normal;size-adjust:118.154%;ascent-override:99.6159%;descent-override:26.0677%;line-gap-override:0%}@font-face{font-family:Literata-c6603a82936983b4 fallback\: Times New Roman;src:local(Times New Roman);font-display:swap;font-weight:600;font-style:italic;size-adjust:118.154%;ascent-override:99.6159%;descent-override:26.0677%;line-gap-override:0%}@font-face{font-family:Literata-c6603a82936983b4 fallback\: Times New Roman Bold;src:local(Times New Roman Bold);font-display:swap;font-weight:700;font-style:normal;size-adjust:110.953%;ascent-override:106.081%;descent-override:27.7596%;line-gap-override:0%}@font-face{font-family:Literata-c6603a82936983b4 fallback\: Times New Roman Bold;src:local(Times New Roman Bold);font-display:swap;font-weight:700;font-style:italic;size-adjust:110.953%;ascent-override:106.081%;descent-override:27.7596%;line-gap-override:0%}:root{--font-literata:Literata-c6603a82936983b4,"Literata-c6603a82936983b4 fallback: Times New Roman","Literata-c6603a82936983b4 fallback: Times New Roman Bold",Georgia,serif}@font-face{font-family:Departure Mono-de2b40c042fd8012;src:url(/_astro/fonts/9c0eca0134765c9b.woff2)format("woff2");font-display:swap;unicode-range:U+20-7E,U+B7,U+EB,U+2019,U+201C-201D,U+2026,U+2192;font-weight:400;font-style:normal}@font-face{font-family:Departure Mono-de2b40c042fd8012;src:url(/_astro/fonts/8778199c5ba996e9.woff2)format("woff2");font-display:swap;unicode-range:U+A0-B6,U+B8-EA,U+EC-17F,U+2000-2018,U+201A-201B,U+201E-2025,U+2027-20BF,U+2122,U+2190-2191,U+2193,U+2212,U+2500-257F,U+25A0-25FF;font-weight:400;font-style:normal}@font-face{font-family:Departure Mono-de2b40c042fd8012 fallback\: Courier New;src:local(Courier New);font-display:swap;font-weight:400;font-style:normal;size-adjust:106.043%;ascent-override:94.3011%;descent-override:25.7185%}:root{--font-departure:"Departure Mono-de2b40c042fd8012","Departure Mono-de2b40c042fd8012 fallback: Courier New",ui-monospace,monospace}@font-face{font-family:JetBrains Mono-af6d85656ba843ca;src:url(/_astro/fonts/2ac1379358819541.woff2)format("woff2");font-display:swap;unicode-range:U+20-7E,U+A0,U+D7,U+2026;font-weight:400;font-style:normal}@font-face{font-family:JetBrains Mono-af6d85656ba843ca;src:url(/_astro/fonts/6c57b79fe89b17ad.woff2)format("woff2");font-display:swap;unicode-range:U+A1-D6,U+D8-17F,U+2000-2025,U+2027-20BF,U+2122,U+2190-2193,U+2212,U+2500-257F,U+25A0-25FF;font-weight:400;font-style:normal}@font-face{font-family:JetBrains Mono-af6d85656ba843ca;src:url(/_astro/fonts/c6cad812e127e44f.woff2)format("woff2");font-display:swap;unicode-range:U+20-7E;font-weight:400;font-style:italic}@font-face{font-family:JetBrains Mono-af6d85656ba843ca;src:url(/_astro/fonts/84967e69e26b194b.woff2)format("woff2");font-display:swap;unicode-range:U+A0-17F,U+2000-20BF,U+2122,U+2190-2193,U+2212,U+2500-257F,U+25A0-25FF;font-weight:400;font-style:italic}@font-face{font-family:JetBrains Mono-af6d85656ba843ca;src:url(/_astro/fonts/c56392456d0859df.woff2)format("woff2");font-display:swap;unicode-range:U+20-7E;font-weight:700;font-style:normal}@font-face{font-family:JetBrains Mono-af6d85656ba843ca;src:url(/_astro/fonts/d61a39bb10c3e063.woff2)format("woff2");font-display:swap;unicode-range:U+A0-17F,U+2000-20BF,U+2122,U+2190-2193,U+2212,U+2500-257F,U+25A0-25FF;font-weight:700;font-style:normal}@font-face{font-family:JetBrains Mono-af6d85656ba843ca fallback\: Courier New;src:local(Courier New);font-display:swap;font-weight:400;font-style:normal;size-adjust:99.9837%;ascent-override:102.017%;descent-override:30.0049%}@font-face{font-family:JetBrains Mono-af6d85656ba843ca fallback\: Courier New;src:local(Courier New);font-display:swap;font-weight:400;font-style:italic;size-adjust:99.9837%;ascent-override:102.017%;descent-override:30.0049%}@font-face{font-family:JetBrains Mono-af6d85656ba843ca fallback\: Courier New;src:local(Courier New);font-display:swap;font-weight:700;font-style:normal;size-adjust:99.9837%;ascent-override:102.017%;descent-override:30.0049%}:root{--font-jetbrains:"JetBrains Mono-af6d85656ba843ca","JetBrains Mono-af6d85656ba843ca fallback: Courier New",ui-monospace,monospace}