@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:400;src:url(./barlow-condensed-vietnamese-400-normal-Dq9fsqrz.woff2) format("woff2"),url(./barlow-condensed-vietnamese-400-normal-BHpO_q_4.woff) format("woff");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:Barlow Condensed;font-style:normal;font-display:swap;font-weight:400;src:url(./barlow-condensed-latin-ext-400-normal-DPMBkgfB.woff2) format("woff2"),url(./barlow-condensed-latin-ext-400-normal-DN7qpd_C.woff) format("woff");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:Barlow Condensed;font-style:normal;font-display:swap;font-weight:400;src:url(./barlow-condensed-latin-400-normal-Dc2u_eUW.woff2) format("woff2"),url(./barlow-condensed-latin-400-normal-BXL2z6Kg.woff) format("woff");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:Barlow Condensed;font-style:normal;font-display:swap;font-weight:500;src:url(./barlow-condensed-vietnamese-500-normal-DjeaNLFD.woff2) format("woff2"),url(./barlow-condensed-vietnamese-500-normal-CsrJDWc5.woff) format("woff");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:Barlow Condensed;font-style:normal;font-display:swap;font-weight:500;src:url(./barlow-condensed-latin-ext-500-normal-yA5ONLQ9.woff2) format("woff2"),url(./barlow-condensed-latin-ext-500-normal-B1RE8WP7.woff) format("woff");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:Barlow Condensed;font-style:normal;font-display:swap;font-weight:500;src:url(./barlow-condensed-latin-500-normal-BgYH2mbd.woff2) format("woff2"),url(./barlow-condensed-latin-500-normal-HIEiP5Ov.woff) format("woff");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:Barlow Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(./barlow-condensed-vietnamese-600-normal-A5AYRdjN.woff2) format("woff2"),url(./barlow-condensed-vietnamese-600-normal-CNlPk46_.woff) format("woff");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:Barlow Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(./barlow-condensed-latin-ext-600-normal-18ESti3H.woff2) format("woff2"),url(./barlow-condensed-latin-ext-600-normal-Clv9cIcR.woff) format("woff");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:Barlow Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(./barlow-condensed-latin-600-normal-DepVgxBB.woff2) format("woff2"),url(./barlow-condensed-latin-600-normal-BFJEwTuo.woff) format("woff");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:Courier Prime;font-style:normal;font-display:swap;font-weight:400;src:url(./courier-prime-latin-ext-400-normal-B-EsvyE4.woff2) format("woff2"),url(./courier-prime-latin-ext-400-normal-CKOCNFvK.woff) format("woff");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:Courier Prime;font-style:normal;font-display:swap;font-weight:400;src:url(./courier-prime-latin-400-normal-BbyBr73r.woff2) format("woff2"),url(./courier-prime-latin-400-normal-BAlbUm6l.woff) format("woff");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:Courier Prime;font-style:normal;font-display:swap;font-weight:700;src:url(./courier-prime-latin-ext-700-normal-ByMJlNdM.woff2) format("woff2"),url(./courier-prime-latin-ext-700-normal-BIFoAzHx.woff) format("woff");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:Courier Prime;font-style:normal;font-display:swap;font-weight:700;src:url(./courier-prime-latin-700-normal-D1YCjmaD.woff2) format("woff2"),url(./courier-prime-latin-700-normal-CVvp4Sof.woff) format("woff");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}:root{--amber: #ffb648;--amber-deep: #c9781c;--amber-ink: #2a1a06;--forward: #ff9a2e;--backward: #5fd6ff;--stage: #14100d;--panel-bg: #ece6da;--panel-raised: #f7f3ea;--panel-ink: #221c16;--panel-muted: #6d6358;--panel-line: #cfc5b4;--panel-key: #1f1a15;--panel-key-ink: #f2ede2;--plugged: #a35a12;--tape: #efe8d8;--tape-ink: #2a241d;--font-ui: "Barlow Condensed", "Arial Narrow", Arial, sans-serif;--font-type: "Courier Prime", "Courier New", monospace;--radius-s: 6px;--radius-m: 10px;--panel-w: 340px}@media(prefers-color-scheme:dark){:root{--panel-bg: #1d1915;--panel-raised: #26211c;--panel-ink: #ece4d4;--panel-muted: #a3978a;--panel-line: #3a332b;--panel-key: #0f0d0b;--panel-key-ink: #efe7d2;--plugged: #ffb648}}*{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--stage);color:var(--panel-ink);font-family:var(--font-ui);font-size:17px;-webkit-text-size-adjust:100%;overscroll-behavior:none}button{font:inherit;color:inherit;cursor:pointer}button:focus-visible,input:focus-visible+span,select:focus-visible{outline:2px solid var(--amber);outline-offset:2px}#app{display:grid;grid-template-columns:1fr var(--panel-w);height:100dvh;overflow:hidden}#stage-col{display:flex;flex-direction:column;min-width:0;min-height:0;background:var(--stage)}#viewport{position:relative;flex:1 1 auto;min-height:0;overflow:hidden}#viewport canvas{display:block;cursor:grab}#viewport canvas.pointer{cursor:pointer}.hud{position:absolute;inset:0 0 auto;display:flex;align-items:center;gap:16px;padding:max(12px,env(safe-area-inset-top)) 16px 12px;pointer-events:none;color:#efe7d6;background:linear-gradient(to bottom,#14100dd9,#14100d00)}.hud>*{pointer-events:auto}.hud h1{margin:0;font-weight:600;font-size:22px;letter-spacing:.02em;white-space:nowrap}.hud h1 span{font-weight:400;color:#b7a993}.windows{display:flex;gap:6px;margin-left:auto;padding:4px 6px;background:#0c0a08;border-radius:var(--radius-s);box-shadow:inset 0 1px 3px #000c,0 0 0 1px #3b3128}.windows span{display:grid;place-items:center;width:28px;height:32px;font-family:var(--font-ui);font-weight:600;font-size:22px;color:#1b1712;background:linear-gradient(#cfc7b6,#ebe4d4 40%,#c4bba8);border-radius:3px}.windows span.tick{animation:tick .35s ease-out}@keyframes tick{0%{transform:translateY(40%);opacity:.4}}.hud-actions{display:flex;gap:8px}.chip{border:1px solid #4a4036;background:#1e1914cc;color:#e8dfcf;padding:5px 12px;border-radius:999px;font-size:16px}.chip[aria-pressed=true],.chip[aria-expanded=true]{border-color:var(--amber-deep);color:var(--amber)}.views{position:absolute;left:16px;bottom:12px;display:flex;gap:2px;background:#100d0abf;border:1px solid #3a3129;border-radius:999px;padding:3px}.views button{border:0;background:transparent;color:#cfc4b1;padding:4px 12px;border-radius:999px;font-size:16px}.views button:hover{color:#fff}.views button.active{background:#3a2e22;color:var(--amber)}#explain{position:absolute;right:16px;bottom:12px;width:min(360px,calc(100% - 32px));max-height:45%;overflow:auto;padding:12px 14px;color:#ebe2d1;background:#120f0cdb;border:1px solid #3a3129;border-radius:var(--radius-m);font-size:16px;line-height:1.35;backdrop-filter:blur(6px)}#explain[hidden]{display:none}#explain p{margin:0 0 6px}#explain .summary{display:none}#explain .explain-empty{color:#bdb09b;margin:0}#explain h4{margin:0 0 6px;font-weight:600;font-size:18px}#explain h4 .lamp{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--amber);color:var(--amber-ink);box-shadow:0 0 12px var(--amber);margin-left:4px}#explain ol{margin:0;padding-left:20px}#explain li{margin:2px 0}#explain li.pawl-on{color:var(--amber)}#explain .flow{margin-top:8px;font-family:var(--font-type);font-size:13px;color:#c9bca6;word-spacing:-2px}#explain .flow b{color:var(--forward);font-weight:700}#explain .flow i{color:var(--backward);font-style:normal;font-weight:700}#loading{position:absolute;inset:0;display:grid;place-content:center;justify-items:center;gap:12px;color:#cbbfab;z-index:3;background:var(--stage);transition:opacity .5s}#loading.done{opacity:0;pointer-events:none}.spinner{width:28px;height:28px;border-radius:50%;border:3px solid #3a3027;border-top-color:var(--amber);animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}#tape{display:flex;align-items:stretch;gap:10px;padding:10px 16px;background:#1b1612;border-top:1px solid #2f2720}.tape-paper{flex:1;min-width:0;padding:6px 12px;background:var(--tape);color:var(--tape-ink);border-radius:2px;box-shadow:0 1px #ffffff26 inset,0 2px 6px #00000080;background-image:repeating-linear-gradient(to bottom,transparent 0 27px,rgba(80,60,30,.08) 27px 28px)}.tape-row{display:flex;align-items:baseline;gap:10px;min-height:26px}.tape-label{flex:none;width:26px;font-family:var(--font-ui);color:#8c7f6c;font-size:14px}.tape-text{flex:1;min-width:0;font-family:var(--font-type);font-size:19px;letter-spacing:.06em;white-space:nowrap;overflow-x:auto;scrollbar-width:none;direction:rtl;text-align:left}.tape-text::-webkit-scrollbar{display:none}.tape-text>span{direction:ltr;unicode-bidi:isolate}.tape-row.out .tape-text{font-weight:700}.tape-text:empty:before{content:"—";color:#b3a58e}.tape-text .fresh{color:#b05a00}.tape-actions{display:flex;flex-direction:column;gap:6px;justify-content:center}.tape-actions button{border:1px solid #4a4036;background:#26201a;color:#e3d9c6;border-radius:var(--radius-s);padding:4px 12px;font-size:15px}#softkeys{display:none;padding:8px 6px max(10px,env(safe-area-inset-bottom));background:#16120f;border-top:1px solid #2f2720}#softkeys.on{display:block}.softrow{display:flex;justify-content:center;gap:5px;margin:5px 0}.softrow button{flex:0 1 36px;aspect-ratio:1;max-width:40px;min-width:0;border-radius:50%;border:2px solid #8d8678;background:radial-gradient(circle at 50% 35%,#2a2622,#0f0d0b 70%);color:#f2ede2;font-family:var(--font-ui);font-weight:600;font-size:18px;padding:0;touch-action:manipulation}.softrow button:active,.softrow button.down{transform:translateY(2px);border-color:var(--amber-deep)}#panel{background:var(--panel-bg);color:var(--panel-ink);overflow-y:auto;padding:16px 18px 28px;border-left:1px solid var(--panel-line)}.panel-head{display:flex;align-items:center;justify-content:space-between}#panel h2{margin:0 0 4px;font-size:24px;font-weight:600}.group{padding:14px 0;border-bottom:1px solid var(--panel-line)}.group:last-of-type{border-bottom:0}.group h3{margin:0 0 10px;font-size:19px;font-weight:600;display:flex;justify-content:space-between;align-items:baseline}.group h3 small{font-weight:400;font-size:15px;color:var(--panel-muted)}.hint{margin:10px 0 0;font-size:15px;line-height:1.3;color:var(--panel-muted)}.wheels{display:grid;grid-template-columns:auto repeat(3,1fr);gap:6px 8px;align-items:center}.wheels .rowlabel{font-size:15px;color:var(--panel-muted)}.wheels .colhead{text-align:center;font-size:15px;color:var(--panel-muted)}.wheels select{width:100%;font:inherit;font-size:17px;font-weight:600;text-align:center;padding:5px 2px;border-radius:var(--radius-s);border:1px solid var(--panel-line);background:var(--panel-raised);color:var(--panel-ink)}.stepper{display:grid;grid-template-columns:26px 1fr 26px;align-items:center;border:1px solid var(--panel-line);border-radius:var(--radius-s);background:var(--panel-raised);overflow:hidden}.stepper button{border:0;background:transparent;padding:6px 0;color:var(--panel-muted);font-size:16px;line-height:1}.stepper button:hover{color:var(--panel-ink)}.stepper output{text-align:center;font-weight:600;font-size:18px}.stepper output small{display:block;font-weight:400;font-size:12px;color:var(--panel-muted);margin-top:-3px}.segmented{display:flex;border:1px solid var(--panel-line);border-radius:var(--radius-s);overflow:hidden}.segmented button{flex:1;border:0;background:var(--panel-raised);padding:7px 0;font-size:16px}.segmented button+button{border-left:1px solid var(--panel-line)}.segmented button[aria-checked=true]{background:var(--panel-key);color:var(--amber)}.plugboard{display:grid;gap:6px}.plugrow{display:flex;justify-content:center;gap:4px}.plugrow button{position:relative;width:30px;height:38px;padding:0;border:1px solid var(--panel-line);border-radius:var(--radius-s);background:var(--panel-raised);font-weight:600;font-size:16px;line-height:1}.plugrow button .mate{display:block;font-size:12px;font-weight:500;color:var(--plugged);min-height:12px;margin-top:2px}.plugrow button.plugged{border-color:var(--plugged);box-shadow:inset 0 -3px 0 var(--plugged)}.plugrow button.pending{background:var(--panel-key);color:var(--amber);border-color:var(--amber)}.plug-actions{display:flex;align-items:center;justify-content:space-between;gap:10px}.plug-actions .hint{margin:8px 0 0}.plug-actions button,.icon{border:1px solid var(--panel-line);background:var(--panel-raised);border-radius:var(--radius-s);padding:4px 10px;font-size:15px;white-space:nowrap;margin-top:8px}.icon{margin:0;font-size:22px;line-height:1;padding:2px 10px 4px}.toggle{display:flex;align-items:center;gap:10px;padding:6px 0;font-size:17px;cursor:pointer}.toggle input{appearance:none;flex:none;width:38px;height:22px;border-radius:999px;background:var(--panel-line);position:relative;margin:0;cursor:pointer;transition:background .2s}.toggle input:after{content:"";position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:var(--panel-raised);transition:transform .2s}.toggle input:checked{background:var(--amber-deep)}.toggle input:checked:after{transform:translate(16px)}.toggle input:focus-visible{outline:2px solid var(--amber);outline-offset:2px}.sources{margin-top:16px;font-size:13px;color:var(--panel-muted);line-height:1.4}.only-narrow{display:none}@media(max-width:860px){#app{grid-template-columns:1fr}.only-narrow{display:inline-block}#panel{position:fixed;inset:auto 0 0;max-height:82dvh;z-index:10;border-left:0;border-top:1px solid var(--panel-line);border-radius:14px 14px 0 0;box-shadow:0 -12px 40px #0000008c;transform:translateY(105%);transition:transform .28s cubic-bezier(.2,.8,.2,1);padding-bottom:max(24px,env(safe-area-inset-bottom))}#panel.open{transform:none}.hud{gap:10px;padding-left:12px;padding-right:12px}.hud h1{font-size:19px}.hud h1 span{display:none}.windows span{width:24px;height:28px;font-size:19px}.views{left:50%;transform:translate(-50%);bottom:8px}.views button{padding:4px 9px;font-size:15px}#explain{top:64px;bottom:auto;right:12px;width:calc(100% - 24px);max-height:34%;font-size:15px;padding:8px 12px}#explain .flow,#explain ol,#explain p:not(.summary):not(.explain-empty){display:none}#explain .summary{display:block;margin:0}#explain h4{margin-bottom:2px}#tape{padding:8px 10px}.tape-text{font-size:17px}}@media(max-height:720px)and (min-width:861px){#explain .flow,#explain ol,#explain p:not(.summary):not(.explain-empty){display:none}#explain .summary{display:block;margin:0}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
