/**
 * Copyright (c) 2014 The xterm.js authors. All rights reserved.
 * Copyright (c) 2012-2013, Christopher Jeffrey (MIT License)
 * https://github.com/chjj/term.js
 * @license MIT
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 *
 * Originally forked from (with the author's permission):
 *   Fabrice Bellard's javascript vt100 for jslinux:
 *   http://bellard.org/jslinux/
 *   Copyright (c) 2011 Fabrice Bellard
 *   The original design remains. The terminal itself
 *   has been extended to include xterm CSI codes, among
 *   other features.
 */.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;right:0;left:0;top:0;bottom:0}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;left:0;top:0}.xterm .xterm-scroll-area{visibility:hidden}.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;left:0;top:0;bottom:0;right:0;z-index:10;color:transparent;pointer-events:none}.xterm .xterm-accessibility-tree:not(.debug) *::selection{color:transparent}.xterm .xterm-accessibility-tree{-webkit-user-select:text;user-select:text;white-space:pre}.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}:root{--bg: #FFFFFF;--bg-soft: #F8FAFC;--bg-soft-2: #F1F5F9;--border: #E2E8F0;--border-2: #CBD5E1;--ink: #0F172A;--ink-2: #334155;--muted: #64748B;--faint: #94A3B8;--brand: #2563EB;--brand-soft: #EFF5FF;--easy: #15803D;--medium: #C2410C;--hard: #B91C1C;--green: #16A34A;--green-soft: #F0FDF4;--red: #DC2626;--red-soft: #FEF2F2;--note: #EFF6FF;--note-line: #BFDBFE;--warn: #FFFBEB;--warn-line: #FDE68A;--ext: #7C3AED;--ext-soft: #F5F1FE;--code-bg: #0F172A;--code-ink: #E2E8F0;--inv-bg: #0F172A;--inv-ink: #FFFFFF;--on-brand: #FFFFFF;--on-green: #FFFFFF;--strip-bg: #1E293B;--strip-ink: #CBD5E1;--strip-strong: #FFFFFF;--r: 10px;--r-sm: 7px;--sh: 0 1px 2px rgba(15,23,42,.05);--sh-2: 0 4px 14px -4px rgba(15,23,42,.1), 0 1px 2px rgba(15,23,42,.05);--sans: Inter, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--mono: ui-monospace, "JetBrains Mono", "SFMono-Regular", Menlo, Consolas, "Liberation Mono", monospace}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--bg: #0D1117;--bg-soft: #131A22;--bg-soft-2: #182029;--border: #253040;--border-2: #33415A;--ink: #E6EDF3;--ink-2: #C3CEDA;--muted: #8B98A9;--faint: #6E7B8C;--brand: #6BA6FF;--brand-soft: #16233A;--easy: #4ADE80;--medium: #FB923C;--hard: #F87171;--green: #4ADE80;--green-soft: #10241A;--red: #F87171;--red-soft: #2A1517;--note: #14243D;--note-line: #24456F;--warn: #2A2110;--warn-line: #55411A;--ext: #A78BFA;--ext-soft: #1E1733;--code-bg: #010409;--code-ink: #D7E1EC;--inv-bg: #E6EDF3;--inv-ink: #0D1117;--on-brand: #0B1220;--on-green: #06210F;--strip-bg: #1B2430;--strip-ink: #9FB0C4;--strip-strong: #E6EDF3;--sh: 0 1px 2px rgba(0,0,0,.4);--sh-2: 0 4px 14px -4px rgba(0,0,0,.6)}}:root[data-theme=dark]{--bg: #0D1117;--bg-soft: #131A22;--bg-soft-2: #182029;--border: #253040;--border-2: #33415A;--ink: #E6EDF3;--ink-2: #C3CEDA;--muted: #8B98A9;--faint: #6E7B8C;--brand: #6BA6FF;--brand-soft: #16233A;--easy: #4ADE80;--medium: #FB923C;--hard: #F87171;--green: #4ADE80;--green-soft: #10241A;--red: #F87171;--red-soft: #2A1517;--note: #14243D;--note-line: #24456F;--warn: #2A2110;--warn-line: #55411A;--ext: #A78BFA;--ext-soft: #1E1733;--code-bg: #010409;--code-ink: #D7E1EC;--inv-bg: #E6EDF3;--inv-ink: #0D1117;--on-brand: #0B1220;--on-green: #06210F;--strip-bg: #1B2430;--strip-ink: #9FB0C4;--strip-strong: #E6EDF3;--sh: 0 1px 2px rgba(0,0,0,.4);--sh-2: 0 4px 14px -4px rgba(0,0,0,.6)}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:15.5px;line-height:1.7;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--brand);outline-offset:2px;border-radius:4px}h1,h2,h3,h4,h5{margin:0;letter-spacing:-.02em;text-wrap:balance}p{margin:0}.wrap{max-width:1180px;margin:0 auto;padding:0 32px}.tnum{font-variant-numeric:tabular-nums}.sep{color:var(--faint)}.top{position:sticky;top:0;z-index:60;background:var(--bg);border-bottom:1px solid var(--border)}.top-in{display:flex;align-items:center;gap:28px;height:60px}.logo{display:flex;align-items:center;gap:9px;font-weight:650;font-size:16.5px;letter-spacing:-.02em}.logo svg{width:25px;height:25px;flex:none}.logo:hover svg{color:var(--brand)}.nav{display:flex;gap:4px}.nav a{padding:7px 12px;border-radius:var(--r-sm);font-size:14.5px;color:var(--ink-2)}.nav a:hover{background:var(--bg-soft-2)}.nav a.on{color:var(--ink);font-weight:600;box-shadow:inset 0 -2px 0 var(--ink);border-radius:0}.top-end{margin-left:auto;display:flex;align-items:center;gap:8px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:38px;padding:0 16px;border-radius:var(--r-sm);cursor:pointer;border:1px solid var(--border-2);background:var(--bg);color:var(--ink);font-size:14.5px;font-weight:500;transition:background .13s,opacity .13s}.btn:hover{background:var(--bg-soft-2)}.btn-brand{background:var(--brand);border-color:var(--brand);color:var(--on-brand);font-weight:600}.btn-brand:hover{background:var(--brand);opacity:.9}.btn-green{background:var(--green);border-color:var(--green);color:var(--on-green);font-weight:600}.btn-green:hover{background:var(--green);opacity:.9}.btn-ghost{border-color:transparent;background:transparent;color:var(--muted)}.btn-ghost:hover{background:var(--bg-soft-2);color:var(--ink)}.btn-sm{height:32px;padding:0 12px;font-size:13.5px}.btn-lg{height:46px;font-size:15.5px;width:100%}.btn[disabled]{opacity:.55;cursor:not-allowed}.tag{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--muted);background:var(--bg-soft-2);border:1px solid var(--border);border-radius:999px;padding:2px 10px;white-space:nowrap}.tag-green{color:var(--green);background:var(--green-soft);border-color:transparent}.dif{font-weight:600}.dif.easy{color:var(--easy)}.dif.medium{color:var(--medium)}.dif.hard{color:var(--hard)}.depth{font-size:11.5px;letter-spacing:.04em;text-transform:uppercase;font-weight:600;color:var(--muted);border:1px solid var(--border-2);border-radius:4px;padding:1px 6px}.depth.d1{color:var(--easy);border-color:color-mix(in srgb,var(--easy) 45%,transparent)}.depth.d2{color:var(--brand);border-color:color-mix(in srgb,var(--brand) 45%,transparent)}.depth.d3{color:var(--hard);border-color:color-mix(in srgb,var(--hard) 45%,transparent)}.head{padding:40px 0 22px}.head h1{font-size:34px;margin:10px 0}.head p{color:var(--muted);font-size:16.5px;max-width:68ch}.prog{display:flex;align-items:center;gap:14px;max-width:460px;margin-top:18px;font-size:14px;color:var(--muted)}.prog .barw{flex:1;height:8px;border-radius:99px;background:var(--bg-soft-2);border:1px solid var(--border);overflow:hidden}.prog .barw i{display:block;height:100%;background:var(--green)}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:20px;padding-bottom:70px}.card{display:flex;flex-direction:column;background:var(--bg);border:1px solid var(--border);border-radius:var(--r);overflow:hidden;cursor:pointer;box-shadow:var(--sh);transition:box-shadow .16s,transform .16s}.card:hover{box-shadow:var(--sh-2);transform:translateY(-2px)}.card-top{background:var(--strip-bg);color:var(--strip-ink);padding:9px 16px;font-size:13px;display:flex;align-items:center;gap:8px}.card-top b{color:var(--strip-strong);font-weight:600}.card-top .r{margin-left:auto;font-size:12px;opacity:.85}.card-b{padding:18px 20px 6px;display:flex;flex-direction:column;gap:10px;flex:1}.card-b h3{font-size:19px;line-height:1.35}.card-b p{color:var(--muted);font-size:14.5px;flex:1}.card-f{margin:14px 20px 18px;background:var(--bg-soft);border:1px solid var(--border);border-radius:var(--r-sm);padding:10px 13px;display:flex;align-items:center;gap:9px;font-size:13.5px;color:var(--ink-2);flex-wrap:wrap}.rmlist{display:grid;grid-template-columns:repeat(auto-fill,minmax(430px,1fr));gap:20px;padding-bottom:60px}.rmcard{border:1px solid var(--border);border-radius:var(--r);background:var(--bg);box-shadow:var(--sh);overflow:hidden;cursor:pointer;transition:box-shadow .16s,transform .16s;display:flex;flex-direction:column}.rmcard:hover{box-shadow:var(--sh-2);transform:translateY(-2px)}.rmcard.draft{opacity:.82}.rmcard-h{padding:18px 22px 14px}.rmcard-h h3{font-size:22px;margin-bottom:6px}.rmcard-h p{color:var(--muted);font-size:14.5px}.rmstages{border-top:1px solid var(--border);background:var(--bg-soft);padding:14px 22px;display:flex;flex-direction:column;gap:7px;flex:1}.rmstage{display:flex;align-items:center;gap:10px;font-size:13.5px;color:var(--ink-2)}.rmstage .n{width:20px;height:20px;border-radius:50%;border:1px solid var(--border-2);font-size:11px;display:grid;place-items:center;color:var(--muted);flex:none;background:var(--bg)}.rmstage .dm{margin-left:auto;font-size:12px;color:var(--faint)}.rmcard-f{border-top:1px solid var(--border);padding:12px 22px 16px}.stage{margin-bottom:40px;scroll-margin-top:80px}.stage-h{display:flex;align-items:center;gap:12px;margin-bottom:8px;flex-wrap:wrap}.stage-n{width:30px;height:30px;border-radius:50%;border:1.5px solid var(--border-2);display:grid;place-items:center;font-size:13.5px;font-weight:600;color:var(--muted);flex:none}.stage-n.done{background:var(--green);border-color:var(--green);color:var(--on-green)}.stage-h h3{font-size:20px}.stage-note{color:var(--muted);font-size:14.5px;margin:0 0 16px;max-width:74ch}.stage-body{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:12px}.node{background:var(--bg);border:1px solid var(--border);border-radius:var(--r-sm);padding:13px 15px;cursor:pointer;display:flex;flex-direction:column;gap:6px;box-shadow:var(--sh);transition:border-color .14s,transform .14s}.node:hover{border-color:var(--brand);transform:translateY(-1px)}.node b{font-size:15px;font-weight:600;line-height:1.35}.node .m{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--faint);flex-wrap:wrap}.node.done{background:var(--green-soft);border-color:color-mix(in srgb,var(--green) 45%,var(--border))}.node.doc{background:var(--bg-soft);border-style:dashed}.node.ext:hover{border-color:var(--ext)}.node .prov{color:var(--ext);font-weight:600}.node .out{margin-left:auto;color:var(--faint);font-size:11.5px}.node .mark{margin-top:4px;align-self:flex-start;display:inline-flex;align-items:center;gap:6px;border:1px solid var(--border);background:var(--bg);border-radius:999px;padding:2px 10px;font-size:12px;color:var(--muted);cursor:pointer}.node .mark:hover{border-color:var(--ext);color:var(--ext)}.node.done .mark{border-color:color-mix(in srgb,var(--green) 45%,transparent);color:var(--green)}.source{display:grid;grid-template-columns:1fr auto;gap:18px;align-items:center;border:1px solid color-mix(in srgb,var(--ext) 32%,var(--border));background:var(--ext-soft);border-radius:var(--r);padding:16px 18px;margin:0 0 16px}.source .k{font-size:11.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--ext);font-weight:600}.source b{display:block;font-size:16.5px;margin:3px 0}.source p{font-size:14px;color:var(--ink-2);max-width:74ch}.catwrap{display:grid;grid-template-columns:258px minmax(0,1fr);gap:34px;align-items:start;padding-bottom:20px}.fcard{position:sticky;top:76px;border:1px solid var(--border);border-radius:var(--r);background:var(--bg);box-shadow:var(--sh);max-height:calc(100vh - 100px);overflow:auto}.fcard-h{display:flex;align-items:center;justify-content:space-between;padding:13px 16px;border-bottom:1px solid var(--border);position:sticky;top:0;background:var(--bg)}.fcard-h b{font-size:15px}.fcard-h button{border:0;background:none;color:var(--brand);font-size:13px;cursor:pointer}.fcard-h button[disabled]{color:var(--faint);cursor:default}.fgroup{padding:13px 12px 14px;border-bottom:1px solid var(--border)}.fgroup:last-child{border-bottom:0}.fgroup h5{font-size:11.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--faint);font-weight:600;margin:0 0 6px 4px}.fopt{display:flex;align-items:center;gap:10px;width:100%;text-align:left;padding:6px 8px;border:0;background:none;border-radius:var(--r-sm);font-size:14.5px;color:var(--ink-2);cursor:pointer;transition:background .12s}.fopt:hover:not([disabled]){background:var(--bg-soft-2)}.fopt .box{width:16px;height:16px;border-radius:5px;border:1.5px solid var(--border-2);flex:none;display:grid;place-items:center;transition:background .12s,border-color .12s}.fopt .box.radio{border-radius:50%}.fopt.on{color:var(--ink);font-weight:600}.fopt.on .box{background:var(--inv-bg);border-color:var(--inv-bg)}.fopt.on .box:after{content:"✓";font-size:9.5px;color:var(--inv-ink);font-weight:700;line-height:1}.fopt.on .box.radio{background:var(--brand);border-color:var(--brand)}.fopt.on .box.radio:after{content:"";width:6px;height:6px;border-radius:50%;background:var(--on-brand)}.fopt .n{margin-left:auto;font-size:12px;color:var(--faint);font-variant-numeric:tabular-nums}.fopt[disabled]{opacity:.38;cursor:default}.srch{flex:1;min-width:220px;display:flex;align-items:center;gap:10px;height:40px;padding:0 13px;border:1px solid var(--border);border-radius:var(--r);background:var(--bg);transition:border-color .14s,box-shadow .14s}.srch:focus-within{border-color:var(--brand);box-shadow:0 0 0 3px color-mix(in srgb,var(--brand) 14%,transparent)}.srch input{flex:1;border:0;background:none;outline:none;font:inherit;font-size:14.5px;color:var(--ink)}.srch input::placeholder{color:var(--faint)}.topline{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px}.seg{display:inline-flex;border:1px solid var(--border);border-radius:var(--r);overflow:hidden;flex:none}.seg button{border:0;background:var(--bg);padding:0 11px;height:34px;font-size:13px;color:var(--muted);cursor:pointer;display:flex;align-items:center;gap:6px}.seg button+button{border-left:1px solid var(--border)}.seg button:hover{background:var(--bg-soft-2);color:var(--ink)}.seg button.on{background:var(--bg-soft-2);color:var(--ink);font-weight:600}.grouphead{display:flex;align-items:center;gap:12px;margin:26px 0 4px}.grouphead h3{font-size:13px;text-transform:uppercase;letter-spacing:.09em;color:var(--muted)}.grouphead .line{flex:1;height:1px;background:var(--border)}.grouphead .meta{font-size:12.5px;color:var(--faint);white-space:nowrap}.rows{border-top:1px solid var(--border)}.row{display:grid;grid-template-columns:20px minmax(0,1fr) auto;gap:14px;align-items:center;padding:10px 8px;border-bottom:1px solid var(--border);cursor:pointer;transition:background .12s}.row:hover{background:var(--bg-soft)}.row .st{font-size:13px;color:var(--faint);text-align:center;line-height:1}.row .st.done{color:var(--green)}.row h4{font-size:15.5px;font-weight:600;line-height:1.35}.row p{font-size:13.5px;color:var(--muted);line-height:1.45;margin-top:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row .meta{display:flex;align-items:center;gap:9px;font-size:13px;color:var(--muted);white-space:nowrap}.empty{padding:50px 0 90px;color:var(--muted);text-align:center}.empty b{display:block;font-size:17px;color:var(--ink);margin-bottom:6px}.empty code{font-family:var(--mono);font-size:.85em;background:var(--bg-soft-2);border:1px solid var(--border);border-radius:5px;padding:1.5px 6px}.crumbs{display:flex;align-items:center;gap:9px;font-size:13.5px;color:var(--muted);padding:22px 0 0;flex-wrap:wrap}.crumbs a:hover{color:var(--brand)}.lab{display:grid;grid-template-columns:1fr 340px;gap:48px;padding:18px 0 80px;align-items:start}.lab h1{font-size:34px;line-height:1.2;margin:12px 0 14px}.lab .lede{font-size:17.5px;color:var(--muted);max-width:58ch}.metarow{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:18px;font-size:14px;color:var(--muted)}.prose{max-width:70ch}.prose h2{font-size:24px;margin:40px 0 14px}.prose h3{font-size:19px;margin:28px 0 10px}.prose p{color:var(--ink-2);margin-bottom:16px}.prose ul,.prose ol{margin:0 0 16px;padding-left:24px;color:var(--ink-2)}.prose li{margin-bottom:9px}.prose a{color:var(--brand);text-decoration:underline;text-underline-offset:2px}.prose code{font-family:var(--mono);font-size:.84em;background:var(--bg-soft-2);border:1px solid var(--border);border-radius:5px;padding:1.5px 5px}.prose pre{background:var(--code-bg);color:var(--code-ink);font-family:var(--mono);font-size:13px;line-height:1.75;padding:14px 16px;overflow-x:auto;border-radius:var(--r);margin:8px 0 22px}.prose pre code{background:none;border:0;padding:0;font-size:inherit;color:inherit}.callout{border-radius:var(--r);padding:14px 18px;margin:24px 0;font-size:15px;color:var(--ink-2)}.callout b{display:block;font-size:12.5px;text-transform:uppercase;letter-spacing:.07em;margin-bottom:5px}.callout.note{background:var(--note);border:1px solid var(--note-line)}.callout.note b{color:var(--brand)}.callout.warn{background:var(--warn);border:1px solid var(--warn-line)}.callout.warn b{color:var(--medium)}.rig{position:sticky;top:76px;border:1px solid var(--border);border-radius:var(--r);overflow:hidden;box-shadow:var(--sh-2)}.rig-h{background:var(--strip-bg);color:var(--strip-strong);padding:12px 18px;font-size:14px;font-weight:600;display:flex;align-items:center;gap:8px}.rig-s{padding:14px 18px 4px}.rig-s div{display:flex;justify-content:space-between;font-size:14px;padding:5px 0;color:var(--muted)}.rig-s b{color:var(--ink-2);font-weight:500}.rig-a{padding:16px 18px 18px}.rig-note{font-size:12.5px;color:var(--faint);text-align:center;margin-top:10px;line-height:1.55}.boot{font-family:var(--mono);font-size:11.5px;line-height:1.8;background:var(--code-bg);color:var(--code-ink);padding:12px 15px;max-height:176px;overflow:auto}.boot .ok{color:#4ade80}.run{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;background:var(--bg);z-index:100}.run-top{display:flex;align-items:center;gap:14px;height:54px;padding:0 16px;border-bottom:1px solid var(--border);flex:none}.run-top h3{font-size:16px}.run-top .end{margin-left:auto;display:flex;align-items:center;gap:10px}.sess{display:flex;align-items:center;gap:8px;font-size:13.5px;color:var(--ink-2);background:var(--green-soft);border:1px solid color-mix(in srgb,var(--green) 40%,transparent);border-radius:999px;padding:4px 13px}.sess i{width:7px;height:7px;border-radius:50%;background:var(--green);animation:pl 2.4s ease-in-out infinite}@keyframes pl{50%{opacity:.25}}@media (prefers-reduced-motion: reduce){.sess i{animation:none}}.run-body{flex:1;display:grid;grid-template-columns:minmax(380px,42%) 1fr;min-height:0}.tasks{display:flex;flex-direction:column;min-height:0;border-right:1px solid var(--border)}.tasks-h{padding:14px 22px;border-bottom:1px solid var(--border);flex:none;background:var(--bg-soft)}.tabs{display:flex;gap:8px;margin-top:10px}.tabs button{flex:1;padding:8px 6px;border-radius:var(--r-sm);border:1px solid var(--border);background:var(--bg);font-size:13px;color:var(--muted);cursor:pointer;font-weight:500}.tabs button.on{background:var(--inv-bg);border-color:var(--inv-bg);color:var(--inv-ink)}.tasks-b{flex:1;overflow:auto;padding:24px 22px 30px}.tasks-f{flex:none;border-top:1px solid var(--border);background:var(--bg-soft);padding:14px 22px 18px}.vrow{display:flex;align-items:center;gap:12px}.vrow .sc{margin-left:auto;font-size:13px;color:var(--muted)}.vl{list-style:none;margin:14px 0 0;padding:0;display:flex;flex-direction:column;gap:8px}.vl li{display:grid;grid-template-columns:18px 1fr;gap:10px;font-size:14px;color:var(--ink-2);background:var(--bg);border:1px solid var(--border);border-radius:var(--r-sm);padding:9px 12px}.vl .i{font-size:13px;color:var(--faint);text-align:center}.vl li.pass{background:var(--green-soft);border-color:color-mix(in srgb,var(--green) 35%,transparent)}.vl li.pass .i{color:var(--green)}.vl li.fail{background:var(--red-soft);border-color:color-mix(in srgb,var(--red) 35%,transparent)}.vl li.fail .i{color:var(--red)}.vl small{display:block;font-family:var(--mono);font-size:11.5px;color:var(--faint)}.verdict{margin-top:14px;border-radius:var(--r-sm);padding:12px 14px;font-size:14.5px;background:var(--green-soft);border:1px solid color-mix(in srgb,var(--green) 35%,transparent);color:var(--ink-2)}.verdict.bad{background:var(--red-soft);border-color:color-mix(in srgb,var(--red) 35%,transparent)}.locked{margin-top:22px;border:1px dashed var(--border-2);border-radius:var(--r);padding:13px 16px;font-size:14px;color:var(--faint);display:flex;align-items:center;gap:10px}.sol{margin-top:22px;border:1px solid var(--border);border-radius:var(--r);overflow:hidden}.sol summary{padding:12px 16px;background:var(--bg-soft);font-weight:600;font-size:14.5px;cursor:pointer}.sol .in{padding:18px 18px 2px}.term-c{display:flex;flex-direction:column;min-height:0;background:var(--code-bg)}.term-h{display:flex;align-items:center;gap:12px;padding:0 14px;height:40px;background:#060b12;color:#7c8b9e;font-family:var(--mono);font-size:12px;flex:none}.term-tab{background:var(--code-bg);color:#d7e1ec;border-radius:7px 7px 0 0;padding:7px 14px}.term-x{flex:1;min-height:0;padding:10px 6px 10px 12px}.term-x .xterm{height:100%}@font-face{font-family:Virgil;src:url(/fonts/Virgil.woff2) format("woff2");font-display:swap}.xd{stroke:var(--ink);stroke-width:1.4;fill:none}.xd-blue{stroke:var(--brand);stroke-width:1.6;fill:none}.xd-hatch{stroke:var(--border-2);stroke-width:.9;fill:none}.xd-t{fill:var(--ink);font-family:Virgil,Segoe Print,Comic Sans MS,cursive;font-size:17px}.xd-m{fill:var(--muted);font-family:Virgil,Segoe Print,Comic Sans MS,cursive;font-size:13.5px}.xd-bm{fill:var(--brand);font-family:Virgil,Segoe Print,Comic Sans MS,cursive;font-size:13.5px}.xd-bt{fill:var(--brand);font-family:Virgil,Segoe Print,Comic Sans MS,cursive;font-size:17px}.xd-red{stroke:var(--red);stroke-width:1.6;fill:none}.xd-rm{fill:var(--red);font-family:Virgil,Segoe Print,Comic Sans MS,cursive;font-size:13.5px}.xd-green{stroke:var(--green);stroke-width:1.6;fill:none}.xd-gm{fill:var(--green);font-family:Virgil,Segoe Print,Comic Sans MS,cursive;font-size:13.5px}.xd-hatch-blue{stroke:var(--brand);stroke-width:.8;fill:none;opacity:.55}.xd-hatch-red{stroke:var(--red);stroke-width:.8;fill:none;opacity:.5}.quiz{margin-top:56px;padding-top:30px;border-top:1px solid var(--border)}.quiz h2{font-size:24px;margin-bottom:8px}.quiz-lede{color:var(--muted);font-size:15px;margin-bottom:24px;max-width:66ch}.quiz-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:26px}.quiz-q{border:1px solid var(--border);border-radius:var(--r);padding:18px 20px 16px;background:var(--bg)}.quiz-ask{display:flex;gap:12px;font-size:15.5px;color:var(--ink);line-height:1.55}.quiz-ask code{font-family:var(--mono);font-size:.84em;background:var(--bg-soft-2);border:1px solid var(--border);border-radius:5px;padding:1.5px 5px}.quiz-n{flex:none;width:24px;height:24px;border-radius:50%;border:1px solid var(--border-2);display:grid;place-items:center;font-size:12.5px;color:var(--muted);font-variant-numeric:tabular-nums}.quiz-out{background:var(--code-bg);color:var(--code-ink);font-family:var(--mono);font-size:12.5px;line-height:1.65;padding:12px 14px;border-radius:var(--r-sm);overflow-x:auto;margin:14px 0 4px 36px;white-space:pre}.quiz-opts{display:flex;flex-direction:column;gap:8px;margin:14px 0 0 36px}.quiz-opt{display:grid;grid-template-columns:18px 1fr;gap:10px;align-items:start;text-align:left;border:1px solid var(--border);background:var(--bg);border-radius:var(--r-sm);padding:10px 13px;font-size:14.5px;color:var(--ink-2);cursor:pointer;transition:border-color .12s,background .12s}.quiz-opt:hover:not(:disabled){border-color:var(--brand);background:var(--bg-soft)}.quiz-opt:disabled{cursor:default}.quiz-opt .mark{font-size:13px;line-height:1.5}.quiz-opt em{display:block;margin-top:6px;font-style:normal;font-size:13.5px;color:var(--muted);line-height:1.55}.quiz-opt code{font-family:var(--mono);font-size:.85em}.quiz-opt.right{background:var(--green-soft);border-color:color-mix(in srgb,var(--green) 45%,transparent)}.quiz-opt.right .mark{color:var(--green)}.quiz-opt.wrong{background:var(--red-soft);border-color:color-mix(in srgb,var(--red) 40%,transparent)}.quiz-opt.wrong .mark{color:var(--red)}.quiz-opt.dim{opacity:.55}@media (max-width: 700px){.quiz-opts,.quiz-out{margin-left:0}}.langtog{margin-left:auto;display:inline-flex;border:1px solid var(--border);border-radius:999px;overflow:hidden}.langtog button{border:0;background:var(--bg);padding:4px 13px;font-size:12.5px;color:var(--muted);cursor:pointer}.langtog button+button{border-left:1px solid var(--border)}.langtog button:hover{background:var(--bg-soft-2);color:var(--ink)}.langtog button.on{background:var(--inv-bg);color:var(--inv-ink);font-weight:600}.prose .takeaway{border:1px solid var(--border-2);border-radius:var(--r);padding:6px 22px 18px;margin:32px 0 8px;background:var(--bg-soft)}.prose .takeaway h3{font-size:13px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:20px 0 10px}.prose .takeaway ul{margin-bottom:6px}.prose .takeaway li{margin-bottom:7px}.prose .takeaway table{width:100%;border-collapse:collapse;font-size:14.5px;margin:4px 0 6px}.prose .takeaway th{text-align:left;font-size:12.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--faint);font-weight:600;padding:6px 10px 6px 0;border-bottom:1px solid var(--border)}.prose .takeaway td{padding:8px 10px 8px 0;border-bottom:1px solid var(--border);color:var(--ink-2);vertical-align:top}.prose .takeaway tr:last-child td{border-bottom:0}.prose .takeaway code{background:var(--bg)}.prose details.dig{border:1px solid var(--border);border-radius:var(--r);margin:22px 0;background:var(--bg-soft)}.prose details.dig>summary{padding:12px 16px;cursor:pointer;font-size:14.5px;font-weight:600;color:var(--ink-2);list-style:none;display:flex;align-items:center;gap:9px}.prose details.dig>summary::-webkit-details-marker{display:none}.prose details.dig>summary:before{content:"▸";color:var(--muted);font-size:12px}.prose details.dig[open]>summary:before{content:"▾"}.prose details.dig>summary:hover{color:var(--brand)}.prose details.dig .in{padding:4px 18px 2px;background:var(--bg);border-top:1px solid var(--border);border-radius:0 0 var(--r) var(--r)}.prose details.dig .in>*:first-child{margin-top:16px}.prose .further{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:18px 0 8px}.prose .further a{display:block;border:1px solid var(--border);border-radius:var(--r-sm);padding:12px 15px;background:var(--bg);text-decoration:none;transition:border-color .14s}.prose .further a:hover{border-color:var(--ext)}.prose .further .k{display:block;font-size:11.5px;text-transform:uppercase;letter-spacing:.07em;color:var(--ext);font-weight:600}.prose .further b{display:block;font-size:15px;margin:3px 0 2px;line-height:1.35;color:var(--ink)}.prose .further span{font-size:12.5px;color:var(--muted)}@media (max-width: 700px){.prose .further{grid-template-columns:1fr}}.prose figure{margin:32px 0}.prose figure .fw{background:var(--bg-soft);border:1px solid var(--border);border-radius:var(--r);padding:24px 22px}.prose figure svg{display:block;width:100%;height:auto}.prose figcaption{font-size:13.5px;color:var(--faint);margin-top:10px;text-align:center}.dg-b{fill:var(--bg);stroke:var(--border-2);stroke-width:1.5}.dg-b-blue{fill:var(--brand-soft);stroke:var(--brand);stroke-width:1.5}.dg-b-red{fill:var(--red-soft);stroke:var(--red);stroke-width:1.5}.dg-b-green{fill:var(--green-soft);stroke:var(--green);stroke-width:1.5}.dg-b-soft{fill:var(--bg-soft-2);stroke:var(--border-2);stroke-width:1.5}.dg-t{fill:var(--ink);font-family:var(--mono);font-size:14px;font-weight:500}.dg-s{fill:var(--muted);font-family:var(--mono);font-size:12px}.dg-l{stroke:var(--border-2);stroke-width:1.6;fill:none}.dg-hd{fill:var(--border-2)}.dg-l-blue{stroke:var(--brand);stroke-width:1.8;fill:none}.dg-hd-blue{fill:var(--brand)}.node.soon{opacity:.55;cursor:default}.node.soon:hover{border-color:var(--border);transform:none}.soon-chip{font-size:10.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--faint);border:1px solid var(--border);border-radius:4px;padding:0 5px}.card.soon,.row.soon{opacity:.55;cursor:default}.card.soon:hover{box-shadow:var(--sh);transform:none}.row.soon:hover{background:none}.dnav a.soon{color:var(--faint);cursor:default}.dnav a.soon:hover{background:none}.dsec li.soon{color:var(--faint)}.login{min-height:100vh;display:grid;place-items:center;padding:20px}.login-card{width:100%;max-width:340px;display:flex;flex-direction:column;gap:14px;border:1px solid var(--border);border-radius:var(--r);background:var(--bg);box-shadow:var(--sh-2);padding:30px 28px 26px}.login-card input{height:44px;padding:0 14px;border:1px solid var(--border-2);border-radius:var(--r-sm);background:var(--bg);color:var(--ink);font:inherit;font-size:15px;outline:none}.login-card input:focus{border-color:var(--brand);box-shadow:0 0 0 3px color-mix(in srgb,var(--brand) 14%,transparent)}.login-err{color:var(--red);font-size:13.5px;text-align:center}.subbar{position:sticky;top:60px;z-index:45;background:var(--bg-soft);border-bottom:1px solid var(--border)}.subbar-in{display:flex;align-items:center;gap:4px;height:46px;overflow-x:auto}.subbar a{display:flex;align-items:center;gap:8px;padding:6px 12px;border-radius:999px;font-size:14px;color:var(--muted);white-space:nowrap;cursor:pointer}.subbar a:hover{background:var(--bg-soft-2);color:var(--ink)}.subbar a.on{background:var(--inv-bg);color:var(--inv-ink);font-weight:600}.dhome{padding:34px 0 80px}.dsections{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:18px;margin-top:26px}.dsec{border:1px solid var(--border);border-radius:var(--r);padding:20px 22px;background:var(--bg);box-shadow:var(--sh);cursor:pointer;transition:box-shadow .16s,transform .16s,border-color .16s}.dsec:hover{box-shadow:var(--sh-2);transform:translateY(-2px);border-color:var(--border-2)}.dsec h3{font-size:19px;margin-bottom:4px}.dsec .b{color:var(--muted);font-size:14px;margin-bottom:14px}.dsec ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.dsec li{font-size:14px;color:var(--ink-2)}.dsec .n{margin-top:14px;font-size:12.5px;color:var(--faint)}.docs{display:grid;grid-template-columns:234px minmax(0,1fr);gap:44px;padding:24px 0 90px;align-items:start}.docs-col{max-width:740px}.docs .prose{max-width:none}.dnav{position:sticky;top:118px;max-height:calc(100vh - 140px);overflow:auto}.dnav .sect{font-size:15px;font-weight:650;letter-spacing:-.01em;margin-bottom:3px}.dnav .gp{font-size:12.5px;color:var(--faint);margin:0 0 14px;line-height:1.5}.dnav a{display:flex;align-items:center;gap:8px;font-size:14.5px;color:var(--ink-2);padding:7px 11px;border-radius:var(--r-sm);line-height:1.35;cursor:pointer}.dnav a:hover{background:var(--bg-soft-2)}.dnav a.on{background:var(--brand-soft);color:var(--brand);font-weight:600}.art h1{font-size:36px;line-height:1.18;margin:12px 0 16px}.art .lede{font-size:18.5px;color:var(--muted)}.art .by{display:flex;align-items:center;gap:12px;margin:20px 0 28px;padding-bottom:18px;border-bottom:1px solid var(--border);font-size:13.5px;color:var(--faint);flex-wrap:wrap}@media (max-width: 880px){.wrap{padding:0 18px}.lab{grid-template-columns:1fr;gap:28px}.rig{position:static}.cards,.rmlist{grid-template-columns:1fr}.catwrap{grid-template-columns:1fr;gap:20px}.fcard{position:static;max-height:none}.docs{grid-template-columns:1fr}.dnav{position:static;max-height:none}.run-body{grid-template-columns:1fr;grid-template-rows:46% 54%}.tasks{border-right:0;border-bottom:1px solid var(--border)}.head h1,.art h1{font-size:28px}}.who{font-size:13.5px;color:var(--muted);max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin{display:grid;grid-template-columns:minmax(440px,1fr) minmax(0,1.2fr);gap:40px;align-items:start;padding-bottom:80px}.admin h2{font-size:20px;margin-bottom:12px}.admin .s{font-size:14px;color:var(--muted);margin-bottom:12px}.newuser{display:grid;grid-template-columns:1fr 1.4fr 1.2fr auto auto;gap:8px;margin-bottom:14px}.newuser input{height:38px;padding:0 12px;border:1px solid var(--border-2);border-radius:var(--r-sm);background:var(--bg);color:var(--ink);font:inherit;font-size:14px;outline:none;min-width:0}.newuser input:focus{border-color:var(--brand)}.row.static{cursor:default;grid-template-columns:20px minmax(0,1fr) auto}.row.static h4,.row.static p{white-space:normal}.row.static:hover{background:transparent}.row.static input[type=password]{height:32px;padding:0 10px;border:1px solid var(--border-2);border-radius:var(--r-sm);background:var(--bg);color:var(--ink);font:inherit;font-size:13px;outline:none}.dim{opacity:.55}.access-scroll{overflow-x:auto;border:1px solid var(--border);border-radius:var(--r)}.access{width:100%;border-collapse:collapse;font-size:14px}.access th{text-align:left;font-size:12px;text-transform:uppercase;letter-spacing:.07em;color:var(--faint);font-weight:600;padding:10px 12px;border-bottom:1px solid var(--border);background:var(--bg-soft);white-space:nowrap}.access td{padding:8px 12px;border-bottom:1px solid var(--border);vertical-align:middle}.access tr:last-child td{border-bottom:0}.access .who-col{text-align:center;width:1%}.access select.sel{height:32px;font-size:13px}@media (max-width: 1000px){.admin{grid-template-columns:1fr}.newuser{grid-template-columns:1fr 1fr}}.live{display:inline-flex;align-items:center;gap:7px;font-size:13px;color:var(--muted);white-space:nowrap}.live i{width:7px;height:7px;border-radius:50%;background:var(--green);flex:none}.scenario{border:1px solid var(--border);border-radius:var(--r);margin-bottom:22px;background:var(--bg-soft)}.scenario>summary{padding:10px 14px;cursor:pointer;font-weight:600;font-size:14px;color:var(--ink-2)}.scenario>summary::marker{color:var(--faint)}.scenario .in{padding:0 16px 6px}.scenario .in p{font-size:14.5px}.tasks-h .tabs button{font-size:13px;padding:7px 10px;text-align:left;line-height:1.3}
