:root{--bg:#191b1e;--chrome:#131518;--grid-1:#1e2125;--grid-2:#262a2f;--block:#23272c;--strip:#2b3036;--line:#3c424a;--line-2:#555c65;--ink:#eceae3;--dim:#aab0b7;--faint:#8d949c;--num:#a9c8ec;--t:#3cc46e;--f:#f0524f;--j:#4c8dff;--sel:#f3ede0;--sel-ink:#16171a;--display:"Red Hat Display", system-ui, sans-serif;--mono:"Red Hat Mono", ui-monospace, monospace;--pad:32px;--hd:56px;--sb:28px;--wrap:1440px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0}html{scroll-padding-top:calc(var(--hd) + 16px);-moz-text-size-adjust:100%;text-size-adjust:100%}body{background:var(--bg);color:var(--ink);font-family:var(--display);-webkit-font-smoothing:antialiased;text-rendering:geometricprecision;min-height:100vh;padding-bottom:var(--sb);-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}code,.mono{font-family:var(--mono)}img{max-width:100%;display:block}h1,h2,h3,p{margin:0}button{font:inherit;color:inherit}::selection{background:var(--sel);color:var(--sel-ink)}:focus-visible{outline:2px solid var(--j);outline-offset:2px}.sr{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;position:absolute!important}.skip{z-index:100;background:var(--sel);color:var(--sel-ink);font:700 14px/1 var(--display);padding:10px 14px;position:fixed;top:-60px;left:12px}.skip:focus{top:12px}.nowrap{white-space:nowrap}.tnum{font-variant-numeric:tabular-nums}.canvas{background:linear-gradient(var(--grid-2) 1px, transparent 1px) 0 0 / 96px 96px, linear-gradient(90deg, var(--grid-2) 1px, transparent 1px) 0 0 / 96px 96px, linear-gradient(var(--grid-1) 1px, transparent 1px) 0 0 / 24px 24px, linear-gradient(90deg, var(--grid-1) 1px, transparent 1px) 0 0 / 24px 24px, var(--bg);position:relative}.graph{position:relative}.graph.over>.edges{z-index:4}.edges{z-index:1;pointer-events:none;position:absolute;top:0;left:0;overflow:visible}.edges path.e{fill:none;stroke-linejoin:round;stroke-linecap:butt}.edges path.e.x{stroke-dasharray:6 5}.elabs{z-index:3;pointer-events:none;width:0;height:0;position:absolute;top:0;left:0}.elab{white-space:nowrap;pointer-events:none;font:500 12px/1 var(--mono);color:var(--ink);background:var(--bg);border:1px solid var(--line);padding:4px 7px;position:absolute;transform:translate(-50%,-50%)}.elab.t{border-color:#2f6f47}.elab.f{border-color:#7a3433}.elab.j{border-color:#33558f}.elab.b{color:var(--sel-ink);background:var(--sel);border-color:var(--sel);font-weight:600}.node{z-index:2;position:relative}@media (prefers-reduced-motion:no-preference){.graph .edges path.e.enter{stroke-dasharray:var(--len) var(--len);stroke-dashoffset:var(--len)}.graph .edges path.e.x.enter{stroke-dasharray:6 5;stroke-dashoffset:0}.graph .edges path.ah.enter,.graph .elab.enter{opacity:0}.graph.g-on .edges path.e.enter{animation:g-draw .55s cubic-bezier(.3, .7, .2, 1) var(--d,0s) forwards}.graph.g-on .edges path.e.x.enter{animation:none}.graph.g-on .edges path.ah.enter,.graph.g-on .elab.enter{animation:g-show .2s ease-out calc(var(--d,0s) + .45s) forwards}}@keyframes g-draw{to{stroke-dashoffset:0}}@keyframes g-show{to{opacity:1}}.top{z-index:40;height:var(--hd);background:var(--chrome);border-bottom:1px solid #2a2e33;align-items:center;gap:28px;padding:0 20px 0 24px;display:flex;position:sticky;top:0}.lock{flex:none;align-items:center;height:32px;display:flex}.lock svg{width:auto;height:32px;display:block}.tabs{align-self:stretch;align-items:flex-end;gap:2px;display:flex}.tab{height:40px;font:600 15px/1 var(--display);color:var(--dim);border:1px solid #0000;border-bottom:0;align-items:center;margin-bottom:-1px;padding:0 18px;display:flex}.tab:hover{color:var(--ink)}.tab.on{color:var(--ink);background:var(--bg);box-shadow:inset 0 2px 0 var(--sel);border-color:#30353b}.right{align-items:center;gap:10px;margin-left:auto;display:flex}.ca{height:36px;font:500 12.5px/1 var(--mono);white-space:nowrap;background:#17191c;border:1px solid #343a40;align-items:center;gap:10px;padding:0 12px;display:flex}.ca b{color:var(--ink);font-weight:600}.ca>span{color:var(--dim);align-items:center;gap:7px;display:flex}.ca>span:before{content:"";border:1.5px solid var(--dim);width:7px;height:7px}.ca.live>span:before{background:var(--t);border-color:var(--t)}.ca button{cursor:pointer;font:inherit;color:var(--ink);background:0 0;border:0;padding:0}.ca button:hover{text-underline-offset:3px;text-decoration:underline}.btn{height:36px;font:700 14px/1 var(--display);color:var(--ink);white-space:nowrap;cursor:pointer;background:#1c1f22;border:1px solid #4b525a;border-radius:2px;justify-content:center;align-items:center;gap:8px;padding:0 15px;transition:background-color .12s,border-color .12s,transform 80ms;display:inline-flex}.btn:hover{border-color:var(--line-2);background:#23272b}.btn:active{transform:translateY(1px)}.btn.pri{background:var(--sel);border-color:var(--sel);color:var(--sel-ink);box-shadow:inset 0 -2px #00000024}.btn.pri:hover{background:#fff9ec}.btn.sq{width:36px;padding:0}.btn.ghost{border-color:var(--sel);color:var(--sel);background:0 0}.btn.ghost:hover{background:#f3ede014}.btn.lg{height:44px;padding:0 20px;font-size:16px}.btn[disabled],.btn[aria-disabled=true]{cursor:default;opacity:.55;transform:none}.btn .k{font:500 12px/1 var(--mono);opacity:.75}.buy .buy-m{display:none}.blk{background:var(--block);border:1px solid var(--line);box-shadow:0 12px 26px -16px #000}.bh{background:var(--strip);border-bottom:1px solid var(--line);min-height:26px;font:600 12px/1 var(--mono);color:var(--ink);white-space:nowrap;justify-content:space-between;align-items:center;gap:10px;padding:0 10px;display:flex;overflow:hidden}.bh>span{text-overflow:ellipsis;align-items:baseline;gap:10px;min-width:0;display:flex;overflow:hidden}.bh em,.bh small{color:var(--dim);font-size:12px;font-style:normal;font-weight:400}.bh small{margin-left:2px}.bh .cells2{display:flex}.bh .cells2>span{border-left:1px solid var(--line);padding:0 10px}.bh .cells2>span:first-child{border-left:0;padding-left:0}.bh .cells2>span:last-child{padding-right:0}.blk.sel{border:2px solid var(--sel)}.blk.sel>.bh{background:var(--sel);color:var(--sel-ink);border-bottom-color:var(--sel)}.blk.sel>.bh em,.blk.sel>.bh small{color:#43454a}.code{font:400 12px/17px var(--mono);scrollbar-width:thin;padding:8px 0 10px;overflow-x:auto}.node{min-width:0}.code .ln,.code .ant,.code .xref,.code .fold{white-space:pre}.code .ln{padding:0 12px;display:flex}.code .ln>i{width:var(--aw,7.4ch);color:var(--faint);flex:none;font-style:normal}.code .ln>u{width:var(--mw,11.5ch);color:var(--ink);flex:none;text-decoration:none}.code .ln>u.c{color:#fff;font-weight:600}.code .ln>b{width:var(--opw,12ch);color:var(--num);flex:none;font-weight:400;overflow:hidden}.code .ln>b.call{color:#fff;font-weight:600}.code .ln>b.call,.code .ln>b.w{width:auto;margin-right:1.5ch;overflow:visible}.code .ln>s{color:var(--dim);min-width:0;text-decoration:none}.code .ln>s strong{color:var(--ink);font-weight:500}.code .ln.sel{background:var(--sel)}.code .ln.sel>i,.code .ln.sel>u,.code .ln.sel>b,.code .ln.sel>s,.code .ln.sel>s strong{color:var(--sel-ink)}.code .ln.sel>s{font-weight:500}.code .ant{color:var(--t);padding:0 12px 6px;font-weight:500}.code .xref{color:var(--faint);padding:0 12px 2px}.code .fold{color:var(--faint);padding:0 12px 0 calc(12px + 8ch)}.code.big{padding:10px 0 12px;font-size:15.5px;line-height:24px}.code.big .ln{padding:0 16px}.code.big .ant{padding:0 16px 8px}.code.big .xref{padding:0 16px 2px}.code.js .ln>i{width:var(--aw,13ch)}.code.js .ln>s.src{color:var(--ink);white-space:pre}.code.js .ln>s.src b{color:var(--num);font-weight:600}.code.js .ln>s.src b.call{color:#fff}.code.js .ln.sel>s.src,.code.js .ln.sel>s.src b{color:var(--sel-ink)}.bin{align-items:center;gap:12px;padding:10px 12px;display:flex}.bin .cover{object-fit:contain;background:#0e0f11;flex:none;width:40px;height:54px}.bin>div{min-width:0}.bin strong{font:800 16px/19px var(--display);letter-spacing:-.01em;white-space:nowrap;text-overflow:ellipsis;display:block;overflow:hidden}.bin .sub{font:500 12.5px/17px var(--display);color:var(--dim);white-space:nowrap;text-overflow:ellipsis;display:block;overflow:hidden}.bin code{font:500 12px/17px var(--mono);color:var(--ink);white-space:nowrap;text-overflow:ellipsis;display:block;overflow:hidden}.bin code em{color:var(--dim);font-style:normal}.shot{aspect-ratio:16/9;background:#000;position:relative;overflow:hidden}.shot>img{object-fit:cover;width:100%;height:100%}.shot.pair{background:#0e0f11;grid-template-columns:1fr auto 1fr;align-items:center;gap:4%;padding:5% 9%;display:grid}.shot.pair .pw,.shot.pair .ph{justify-content:center;height:100%;min-height:0;display:flex}.shot.pair .cover{object-fit:contain;width:auto;max-width:100%;height:100%}.shot.pair .pp{font:800 clamp(20px, 3vw, 40px) / 1 var(--display);color:var(--dim)}.ch{background:var(--sel);min-height:32px;color:var(--sel-ink);justify-content:space-between;align-items:center;gap:12px;padding:0 12px;display:flex}.ch>span{align-items:center;gap:12px;min-width:0;display:flex}.ch code{font:700 13px/1 var(--mono);white-space:nowrap}.ch strong{font:800 16px/1.15 var(--display);letter-spacing:-.01em;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.ch em{font:500 12px/1 var(--mono);color:#4a4c50;white-space:nowrap;font-style:normal}.cf{background:#1f2226;border-top:1px solid #353b41;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 12px;min-height:46px;padding:8px 12px 8px 14px;display:flex}.memo{align-items:baseline;gap:10px;min-width:0;display:flex}.memo em{font:500 12px/1 var(--mono);color:var(--dim);font-style:normal}.memo code{font:600 15px/1 var(--mono);color:var(--ink);white-space:nowrap}.state{font:500 12.5px/1 var(--mono);color:var(--dim);white-space:nowrap;align-items:center;gap:8px;display:inline-flex}.state:before{content:"";border:1.5px solid;flex:none;width:8px;height:8px}.state.on{color:var(--ink)}.state.on:before{background:var(--t);border-color:var(--t)}.state a{color:var(--ink);text-decoration:underline;-webkit-text-decoration-color:var(--line-2);text-decoration-color:var(--line-2);text-underline-offset:3px}.lede{font:500 16.5px/24px var(--display);color:var(--dim);max-width:460px}.cta{flex-wrap:wrap;gap:10px;margin-top:4px;display:flex}.cover-none{background:#0e0f11;display:block}.sec{padding:88px var(--pad) 96px}.sec-in{max-width:var(--wrap);margin:0 auto}.sec-h{z-index:2;justify-content:space-between;align-items:flex-end;gap:40px;margin-bottom:40px;display:flex;position:relative}.sec-h h1,.sec-h h2{font:850 48px/1 var(--display);letter-spacing:-.035em}.sec-h p{font:500 16px/24px var(--display);color:var(--dim);max-width:560px}.sec-h .side{text-align:right;flex-direction:column;align-items:flex-end;gap:10px;display:flex}.note{font:500 13px/18px var(--display);color:var(--dim)}.pill{border:1px dashed var(--line-2);height:26px;font:500 12px/1 var(--mono);color:var(--dim);white-space:nowrap;align-items:center;gap:8px;padding:0 10px;display:inline-flex}.pill b{color:var(--ink);font-weight:600}.light{--bg:#ece7dc;--grid-1:#e2dccf;--grid-2:#d6cfc0;--block:#fdfcf8;--strip:#23272c;--line:#23272c;--line-2:#6f6a60;--ink:#16171a;--dim:#4b4e54;--faint:#66696f;--num:#2a5bb8;--t:#146f37;--f:#b8282a;--j:#2257c4;color:var(--ink);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}.light .bh{color:#f3ede0;border-bottom-color:#23272c}.light .bh em,.light .bh small{color:#b9bec5}.light .blk{box-shadow:4px 4px #23272c26}.light .blk.sel{border-color:#16171a}.light .blk.sel>.bh{background:var(--t);color:#fff;border-bottom-color:var(--t)}.light .blk.sel>.bh em{color:#e4f5ea}.light .elab{background:var(--bg);color:var(--ink)}.light .elab.t{border-color:var(--t);color:var(--t)}.light .elab.f{border-color:var(--f);color:var(--f)}.light .elab.j{border-color:var(--j);color:var(--j)}.light .btn{color:var(--ink);background:#fdfcf8;border-color:#23272c}.light .btn:hover{background:#fff}.light .btn.pri{color:#f3ede0;background:#16171a;border-color:#16171a}.light .btn.pri:hover{background:#2a2c31}.light .ca{background:#fdfcf8;border-color:#23272c}.light .ca>span:before{border-color:var(--dim)}.light .code .ln>u.c,.light .code .ln>b.call{color:var(--ink)}.light :focus-visible{outline-color:var(--j)}.foot{background:var(--chrome);padding:28px var(--pad) 28px;border-top:1px solid #2a2e33;align-items:center;gap:32px;display:flex}.foot .lock svg{height:32px}.foot nav{font:600 14px/1 var(--display);color:var(--dim);gap:22px;display:flex}.foot nav a:hover{color:var(--ink)}.foot .r{font:500 12.5px/1 var(--mono);color:var(--dim);align-items:center;gap:16px;min-width:0;margin-left:auto;display:flex}.foot .r>span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.status{z-index:40;height:var(--sb);background:var(--chrome);font:500 12px/1 var(--mono);color:var(--dim);border-top:1px solid #2a2e33;justify-content:space-between;align-items:center;padding:0 16px 0 0;display:flex;position:fixed;bottom:0;left:0;right:0;overflow:hidden}.cells{min-width:0;height:100%;display:flex;overflow:hidden}.cells>span,.cells>a{white-space:nowrap;border-right:1px solid #2a2e33;align-items:center;gap:7px;padding:0 14px;display:flex}.cells>a:hover{color:var(--ink)}.cells code,.cells b{color:var(--ink);font-weight:500}.cells .stale{color:var(--f)}.legend{flex:none;gap:16px;padding-left:14px;display:flex}.legend span{align-items:center;gap:7px;display:flex}.legend i{width:16px;height:3px}.legend .t{background:var(--t)}.legend .f{background:var(--f)}.legend .j{background:var(--j)}.legend .b{background:var(--sel)}.legend .x{background:repeating-linear-gradient(90deg, var(--dim) 0 5px, transparent 5px 9px)}.pnav{display:none}@media (max-width:1180px) and (min-width:768px){.top{gap:14px;padding:0 14px 0 16px}.tab{padding:0 11px}.ca{display:none}}@media (max-width:1100px){.legend{display:none}}@media (max-width:1023px){.sec-h{flex-direction:column;align-items:flex-start;gap:12px}.sec-h .side{text-align:left;align-items:flex-start}}@media (max-width:1180px){.cells .c-memo{display:none}}@media (max-width:767px){:root{--pad:16px}body{padding-bottom:calc(64px + env(safe-area-inset-bottom,0px))}.top{height:var(--hd);gap:8px;padding:0 12px 0 14px}.lock svg{height:26px}.tabs,.top .ca,.top .con{display:none}.right{gap:8px}.btn{height:36px;padding:0 12px;font-size:14px}.btn.sq{width:36px}.btn.lg{height:44px;padding:0 12px;font-size:15px}.buy .buy-d{display:none}.buy .buy-m{display:inline}.bh{padding:0 9px;font-size:11.5px}.bh small,.bh .cells2{display:none}.ch{min-height:30px;padding:0 10px}.ch strong{font-size:14px}.ch em{display:none}.cf{min-height:42px;padding:8px 10px}.memo code{font-size:13px}.memo em{display:none}.lede{font-size:15.5px;line-height:22px}.code .ln{flex-wrap:wrap}.code .ln>s{padding-left:var(--aw,7.4ch);white-space:pre-wrap;flex-basis:100%}.code.big{font-size:12.5px;line-height:19px}.code.big .ln,.code.big .ant,.code.big .xref{padding-left:10px;padding-right:10px}.code .ant,.code .xref,.code .fold{white-space:pre-wrap}.code .fold{padding-left:12px}.code.js .ln{flex-wrap:nowrap}.code.js .ln>s.src{white-space:pre-wrap;flex:1;padding-left:0}.sec{padding:56px 16px 64px}.sec-h{flex-direction:column;align-items:flex-start;gap:12px;margin-bottom:24px}.sec-h h1,.sec-h h2{font-size:36px}.sec-h p{font-size:15px;line-height:22px}.sec-h .side{text-align:left;align-items:flex-start}.foot{flex-direction:column;align-items:flex-start;gap:18px;padding:28px 16px}.foot nav{flex-wrap:wrap;gap:16px 20px}.foot .r{max-width:100%;margin-left:0}.status{display:none}.pnav{z-index:40;height:calc(64px + env(safe-area-inset-bottom,0px));padding-bottom:env(safe-area-inset-bottom,0px);background:var(--chrome);border-top:1px solid #2a2e33;display:flex;position:fixed;bottom:0;left:0;right:0}.pnav a{font:600 12.5px/1 var(--display);color:var(--dim);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:7px;min-width:0;display:flex}.pnav a i{border:1.5px solid;width:15px;height:10px}.pnav a.on{color:var(--ink);box-shadow:inset 0 2px 0 var(--sel)}.pnav a.on i{background:var(--sel);border-color:var(--sel)}}html[data-game] .graph .edges path,html[data-game] .elab{animation:none!important}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}
