@font-face{font-family:Encode Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;font-stretch:75% 125%;src:url(/assets/encode-sans-vietnamese-wdth-normal-DTC1eJvH.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Encode Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;font-stretch:75% 125%;src:url(/assets/encode-sans-latin-ext-wdth-normal-DMhgseL7.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Encode Sans Variable;font-style:normal;font-display:swap;font-weight:100 900;font-stretch:75% 125%;src:url(/assets/encode-sans-latin-wdth-normal-B856gkUz.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Roboto Mono Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/assets/roboto-mono-cyrillic-ext-wght-normal-BUDPrIko.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Roboto Mono Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/assets/roboto-mono-cyrillic-wght-normal-HUlVHixE.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Roboto Mono Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/assets/roboto-mono-greek-wght-normal-BJJTbwTT.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Roboto Mono Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/assets/roboto-mono-vietnamese-wght-normal-DlC-zuDL.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Roboto Mono Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/assets/roboto-mono-latin-ext-wght-normal-QAYlOegK.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Roboto Mono Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/assets/roboto-mono-latin-wght-normal-CZtBPCCa.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}.xterm{cursor:text;position:relative;user-select:none;-ms-user-select:none;-webkit-user-select:none}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{position:absolute;top:0;z-index:5}.xterm .xterm-helper-textarea{padding:0;border:0;margin:0;position:absolute;opacity:0;left:-9999em;top:0;width:0;height:0;z-index:-5;white-space:nowrap;overflow:hidden;resize:none}.xterm .composition-view{background:#000;color:#fff;display:none;position:absolute;white-space:nowrap;z-index:1}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{background-color:#000;overflow-y:scroll;cursor:default;position:absolute;inset:0}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;left:0;top:0}.xterm-char-measure-element{display:inline-block;visibility:hidden;position:absolute;top:0;left:-9999em;line-height:normal}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{position:absolute;inset:0;z-index:10;color:transparent;pointer-events:none}.xterm .xterm-accessibility-tree:not(.debug) *::selection{color:transparent}.xterm .xterm-accessibility-tree{font-family:monospace;-webkit-user-select:text;user-select:text;white-space:pre}.xterm .xterm-accessibility-tree>div{transform-origin:left;width:fit-content}.xterm .live-region{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{text-decoration:double underline}.xterm-underline-3{text-decoration:wavy underline}.xterm-underline-4{text-decoration:dotted underline}.xterm-underline-5{text-decoration:dashed underline}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:overline underline}.xterm-overline.xterm-underline-2{text-decoration:overline double underline}.xterm-overline.xterm-underline-3{text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;position:absolute;top:0;right:0;pointer-events:none}.xterm-decoration-top{z-index:2;position:relative}.xterm .xterm-scrollable-element>.scrollbar{cursor:default}.xterm .xterm-scrollable-element>.scrollbar>.scra{cursor:pointer;font-size:11px!important}.xterm .xterm-scrollable-element>.visible{opacity:1;background:#0000;transition:opacity .1s linear;z-index:11}.xterm .xterm-scrollable-element>.invisible{opacity:0;pointer-events:none}.xterm .xterm-scrollable-element>.invisible.fade{transition:opacity .8s linear}.xterm .xterm-scrollable-element>.shadow{position:absolute;display:none}.xterm .xterm-scrollable-element>.shadow.top{display:block;top:0;left:3px;height:3px;width:100%;box-shadow:var(--vscode-scrollbar-shadow, #000) 0 6px 6px -6px inset}.xterm .xterm-scrollable-element>.shadow.left{display:block;top:3px;left:0;height:100%;width:3px;box-shadow:var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset}.xterm .xterm-scrollable-element>.shadow.top-left-corner{display:block;top:0;left:0;height:3px;width:3px}.xterm .xterm-scrollable-element>.shadow.top.left{box-shadow:var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset}:root{--paper: #fefefe;--ink: #16181f;--ink-2: #4a4e58;--rule: #cfd1d6;--rule-strong: #9a9ea7;--tint: #f0f0f1;--active: #e39410;--active-tint: #fcebc4;--pass: #1d7f49;--pass-tint: #e1f1e6;--fail: #bf3027;--fail-tint: #fbe5e2;--bench: #1c1e25;--bench-ink: #eef0f4;--bench-ink-2: #b9bfcc;--bench-selection: #3b4262;--font-ui: "Encode Sans Variable", system-ui, sans-serif;--font-mono: "Roboto Mono Variable", ui-monospace, monospace;--text-body: clamp(15px, 1.12vw, 20px);--text-small: clamp(14px, .98vw, 17.5px);--gutter: clamp(14px, 1.15vw, 22px);--ease-out: cubic-bezier(.16, 1, .3, 1);color-scheme:light;scrollbar-color:var(--rule-strong) transparent}*,*:before,*:after{box-sizing:border-box}html,body{height:100%}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font-ui);font-size:var(--text-body);line-height:1.45;font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased;caret-color:var(--ink)}::selection{background:var(--active-tint);color:var(--ink)}:focus-visible{outline:2px solid var(--ink);outline-offset:2px}a{color:inherit;text-underline-offset:.18em;text-decoration-thickness:1px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}code,pre{font-family:var(--font-mono);font-size:.86em}pre code{font-size:inherit;background:none;padding:0}.app{display:flex;flex-direction:column;min-height:100dvh}.topbar{display:flex;align-items:center;gap:clamp(12px,1.2vw,22px);padding:clamp(8px,.65vw,12px) var(--gutter);border-bottom:1px solid var(--rule)}.wordmark{font-size:clamp(22px,1.85vw,34px);font-weight:760;letter-spacing:-.02em;text-decoration:none;white-space:nowrap}.divider{align-self:stretch;width:1px;background:var(--rule);margin-block:2px}.lab-title{margin:0;font-size:clamp(18px,1.6vw,30px);font-weight:660;letter-spacing:-.01em;line-height:1.2}.saved{margin:0 0 0 auto;display:flex;align-items:center;gap:.4em;color:var(--ink-2);font-size:var(--text-small);white-space:nowrap}.saved .icon{width:1.15em;height:1.15em;color:var(--ink)}.button{font:inherit;font-size:var(--text-small);font-weight:650;line-height:1;padding:.78em 1.15em;border-radius:6px;border:1px solid var(--ink);cursor:pointer;white-space:nowrap;transition:background-color .16s var(--ease-out),color .16s var(--ease-out),border-color .16s var(--ease-out)}.button.primary{background:var(--ink);color:#fff}.button.primary:hover:not(:disabled){background:#2c2f3a}.button.secondary{background:transparent;color:var(--ink)}.button.secondary:hover:not(:disabled){background:var(--tint)}.button:disabled{cursor:not-allowed;border-color:var(--rule-strong)}.button.primary:disabled{background:var(--rule-strong);color:#fff}.button.secondary:disabled{color:var(--ink-2)}.button[aria-busy=true]{background:var(--ink-2);border-color:var(--ink-2);color:#fff}.text-button{font:inherit;font-size:var(--text-small);color:var(--ink-2);background:none;border:0;padding:.2em .1em;text-decoration:underline;text-underline-offset:.2em;text-decoration-thickness:1px;cursor:pointer}.text-button:hover{color:var(--ink)}.strip{display:flex;flex-wrap:wrap;align-items:baseline;gap:.35em 1.1em;padding:clamp(7px,.55vw,10px) var(--gutter);border-bottom:1px solid var(--rule);font-size:var(--text-small)}.session{margin:0}.session-note{flex-basis:100%;margin:0;max-width:92ch;color:var(--ink-2)}.alert{margin:0;padding:.6em var(--gutter);background:var(--fail-tint);color:var(--fail);border-bottom:1px solid var(--rule);font-size:var(--text-small)}.lab{flex:1;display:grid;min-height:0;grid-template-columns:minmax(170px,13.9%) minmax(380px,40.6%) 1fr;padding-top:clamp(16px,1.45vw,26px)}.rail,.step{border-top:1px solid var(--rule)}.rail,.step{border-right:1px solid var(--rule)}.rail-steps{list-style:none;margin:0;padding:0}.rail-step{width:100%;display:flex;align-items:center;justify-content:space-between;gap:.6em;min-height:clamp(52px,3.95vw,72px);padding:0 var(--gutter);background:none;border:0;border-bottom:1px solid var(--rule);font:inherit;font-size:clamp(15px,1.12vw,20px);font-weight:560;color:var(--ink);text-align:left;cursor:pointer}.rail-step:hover{background:var(--tint)}.rail-step[data-state=active]{background:var(--active-tint);font-weight:720}.rail-step[aria-current=step]:not([data-state=active]){background:var(--tint);font-weight:680}.rail-step .icon{flex:none;width:1.3em;height:1.3em}.icon{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round}.icon .stroke{stroke-width:2.4}.icon .ring{stroke:var(--ink-2);stroke-width:1.6}.icon .ring-strong{stroke:var(--active);stroke-width:3.2}.icon-passed .fill{fill:var(--pass);stroke:none}.icon-passed .knockout{stroke:#fff;stroke-width:2.6}.icon-failed{color:var(--fail)}.icon-paste{color:currentColor}.step{padding:clamp(14px,1.1vw,20px) clamp(18px,1.35vw,26px) 32px;overflow-y:auto;outline:none;min-width:0}.sheet-head{margin-top:.3em}.sheet-title{margin:0;font-size:clamp(22px,1.95vw,36px);font-weight:720;letter-spacing:-.015em;line-height:1.15;text-wrap:balance}.step-meta{display:flex;justify-content:space-between;gap:1em;margin:.3em 0 0;color:var(--ink-2);font-size:var(--text-small);font-weight:600}.sheet-body{max-width:68ch}.sheet-body p{margin:.75em 0}.sheet-body code,.expected code{background:var(--tint);padding:.08em .32em;border-radius:3px}.sheet-body details{margin:1em 0}.sheet-body summary{cursor:pointer;font-weight:650}.label{margin:1.3em 0 .4em;font-size:var(--text-body);font-weight:720}.hint pre{margin:0;padding:.7em .9em;background:var(--tint);border-radius:4px;overflow-x:auto;white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.5;font-size:.92em}.hint .paste{display:inline-flex;align-items:center;gap:.4em;margin-top:.45em}.hint .paste .icon{width:1.1em;height:1.1em}.expected p{margin:0}.observed{margin-top:clamp(18px,1.5vw,28px);padding-top:clamp(10px,.8vw,16px);border-top:1px solid var(--rule-strong)}.section-label{margin:0 0 .55em;font-size:clamp(18px,1.42vw,25px);font-weight:720;letter-spacing:-.01em}.empty{margin:0;color:var(--ink-2)}.attempts{list-style:none;margin:0;padding:0;display:grid;gap:.5em}.attempt{display:grid;grid-template-columns:auto auto 1fr;align-items:baseline;gap:.6em}.attempt .icon{width:1.05em;height:1.05em;align-self:center}.attempt-time{color:var(--ink-2)}.attempt-time:after{content:" ·"}.attempt[data-passed=true] .attempt-message{color:var(--pass);font-weight:650;background:var(--pass-tint);padding:.1em .4em;border-radius:3px;justify-self:start}.attempt[data-passed=false] .attempt-message{color:var(--ink)}.attempt.fresh .attempt-message{animation:observe .42s var(--ease-out) both}@keyframes observe{0%{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}.next{margin-top:clamp(12px,1vw,18px);padding-top:clamp(10px,.8vw,16px);border-top:1px solid var(--rule);display:flex;flex-wrap:wrap;align-items:center;gap:.6em 1em}.next:empty{display:none}.next-text{margin:0;color:var(--ink-2)}.intro-meta{color:var(--ink-2);font-size:var(--text-small)}.protocol{width:100%;border-collapse:collapse;table-layout:fixed;margin-top:1.1em;font-size:var(--text-small)}.protocol th:nth-child(1){width:3.6em}.protocol th:nth-child(2){width:24%}.protocol th:nth-child(3){width:28%}.protocol th:nth-child(5){width:4.8em}.protocol th,.protocol td{text-align:left;vertical-align:top;padding:.55em .6em;border:1px solid var(--rule);overflow-wrap:break-word}.protocol code{overflow-wrap:normal;word-break:normal}.protocol th{font-weight:720;background:var(--tint)}.protocol .number{white-space:nowrap}.protocol .observed-cell{color:var(--pass);font-weight:650}.protocol .observed-cell .icon{width:1em;height:1em;margin-right:.35em;vertical-align:-.12em}.protocol-caption{caption-side:bottom;text-align:left;padding-top:.6em;color:var(--ink-2)}@media(min-width:1181px){.lab.is-finish{grid-template-columns:76px minmax(0,1fr) 45.5%}.lab.is-finish .rail-step{padding:0 .9em;justify-content:center;gap:.35em}.lab.is-finish .rail-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}}.summary{color:var(--ink-2)}.bench{position:relative;padding:2px 0 0 clamp(8px,.7vw,14px);min-height:0;min-width:0;overflow:hidden;display:flex}.terminal{flex:1;min-height:0;min-width:0;overflow:hidden;background:var(--bench);padding:clamp(10px,.8vw,16px) 0 0 clamp(10px,.8vw,16px)}.terminal .xterm{height:100%}.terminal .xterm,.terminal .xterm-viewport{background-color:var(--bench)}.bench:focus-within .terminal{outline:2px solid var(--bench-ink-2);outline-offset:-2px}.terminal .xterm-viewport{scrollbar-color:#4a4f63 transparent}.bench-panel{position:absolute;inset:2px 0 0 clamp(8px,.7vw,14px);display:flex;flex-direction:column;justify-content:center;align-items:flex-start;padding:clamp(24px,3vw,56px);background:var(--bench);color:var(--bench-ink)}.bench-panel[hidden]{display:none}.bench-title{margin:0;font-size:clamp(22px,1.8vw,32px);font-weight:720;letter-spacing:-.015em}.bench-text{margin:.6em 0 1.3em;max-width:44ch;color:var(--bench-ink-2)}.bench-start.button.primary{background:var(--bench-ink);color:var(--bench);border-color:var(--bench-ink)}.bench-start.button.primary:hover{background:#fff}.bench-start[hidden]{display:none}.bench-status{margin:1em 0 0;min-height:1.45em;color:var(--bench-ink-2);font-size:var(--text-small)}.footer{display:flex;align-items:center;gap:.6em;padding:clamp(8px,.7vw,12px) var(--gutter);border-top:1px solid var(--rule);font-size:var(--text-small)}.footer p{margin:0}.footer-link{margin-left:auto;color:var(--ink-2)}.cube{width:1.6em;height:1.6em;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.dialog{border:1px solid var(--rule-strong);border-radius:8px;padding:clamp(20px,1.8vw,30px);max-width:min(92vw,34rem);color:var(--ink);background:var(--paper);box-shadow:0 18px 50px #16181f38}.dialog::backdrop{background:#16181f6b}.dialog h2{margin:0 0 .4em;font-size:clamp(20px,1.5vw,26px);font-weight:720}.dialog p{margin:0 0 1.2em;color:var(--ink-2)}.dialog-actions{display:flex;justify-content:flex-end;gap:.7em}@media(max-width:1180px){.lab{grid-template-columns:minmax(330px,46%) 1fr;grid-template-rows:auto 1fr}.rail{grid-column:1;grid-row:1;border-right:1px solid var(--rule)}.rail-steps{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.rail-step{min-height:48px;padding:0 .9em;border-right:1px solid var(--rule);font-size:var(--text-small)}.step{grid-column:1;grid-row:2;border-top:0}.bench{grid-column:2;grid-row:1 / span 2}}@media(max-width:820px){.topbar{flex-wrap:wrap}.topbar .divider{display:none}.lab-title{flex-basis:100%;order:3}.saved{order:4;margin-left:0;flex-basis:100%}#reset,#check{order:5;flex:1 1 0}.lab{display:flex;flex-direction:column;padding-top:12px}.rail-steps{grid-template-columns:repeat(2,minmax(0,1fr))}.step{border-right:0}.bench{min-height:62vh;padding:0}.bench-panel{inset:0}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
