:root{color-scheme:dark;--bg: #181818;--ink: #f5f5f0;--selection: #ff80a5;--muted: #aaa9a0;--dim: #777770;--surface: #202020;--line: #393936;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:13px;line-height:1.5;font-weight:500;letter-spacing:.045em;color:var(--ink);background:var(--bg);font-synthesis:none;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:rgba(245,245,240,.1)}*{box-sizing:border-box}body{margin:0;min-width:320px}button,input,textarea{font:inherit;color:inherit;letter-spacing:inherit}button{cursor:pointer;border:0;background:none;padding:9px 0;line-height:1.5;text-align:left}button:hover{color:#fff;text-decoration:underline;text-underline-offset:5px}button:disabled{opacity:.38;cursor:default;text-decoration:none}button:focus-visible,a:focus-visible,summary:focus-visible,input:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--ink);outline-offset:5px}a{color:inherit}p{margin:0 0 18px}h1,h2,h3{font:inherit;margin:0 0 16px;font-weight:600}h1{font-size:17px;letter-spacing:.025em}h2{font-size:16px}pre{font:inherit;letter-spacing:0}::selection{background:var(--selection);color:var(--bg)}.eyebrow{font-size:11px;letter-spacing:.065em;color:var(--muted)}.muted{color:var(--muted)}.small{font-size:11px;line-height:1.7}.primary{background:var(--ink);color:var(--bg);padding:13px 20px;display:inline-flex;align-items:center;gap:25px;justify-content:space-between}.primary:hover{background:#fff;color:var(--bg);text-decoration:none}.text-button{display:flex;align-items:center;justify-content:space-between;gap:28px}.site-header{display:flex;justify-content:space-between;align-items:center;gap:36px;padding:25px 4vw;min-height:91px}.site-header nav{display:flex;align-items:center;gap:30px;font-size:11px}.site-header nav [aria-current=page]{text-decoration:underline;text-underline-offset:6px}.export-button{border-bottom:1px solid var(--ink)}#root{min-height:100vh;display:flex;flex-direction:column}.page{padding:38px 4vw 0;flex:1}.start-button{width:100%;font-size:12px;margin:6px 0 22px}.level-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(16px,4vw,72px);width:100%;max-width:1600px;margin:auto}.level-progress{font-size:10px;color:var(--muted);display:grid;grid-template-columns:1fr auto;align-items:center;gap:16px}progress{appearance:none;display:block;width:100%;height:2px;border:none;margin:13px 0;background:var(--line)}progress::-webkit-progress-bar{background:var(--line)}progress::-webkit-progress-value{background:var(--ink)}progress::-moz-progress-bar{background:var(--ink)}summary{cursor:pointer}.workspace{padding-top:23px;max-width:1700px;width:100%;margin:auto}.task-strip{display:flex;justify-content:space-between;gap:5px;margin:24px 0 40px}.task-strip button{width:35px;height:34px;text-align:center;font-size:11px;color:var(--muted)}.task-strip button[aria-current=step]{background:var(--ink);color:var(--bg)}.task-strip button.passed{color:var(--ink);border-bottom:1px solid var(--dim)}.task-strip button.passed[aria-current=step]{color:var(--bg)}.challenge-heading{display:grid;grid-template-columns:1fr 1fr;gap:7vw;margin-bottom:33px}.challenge-heading h1{margin:14px 0 0}.challenge-heading p{max-width:570px;margin:0;color:#d5d5cd;line-height:1.8}.challenge-columns{display:grid;grid-template-columns:1fr 1fr;gap:7vw}.left-column,.right-column,.visual-scene{min-width:0}.scene-header{font-size:10px}.objects{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:14px;min-height:250px;padding:38px 0 26px}.scene-object{flex:0 1 104px;text-align:center;min-width:72px;max-width:130px;overflow-wrap:anywhere}.object-glyph{width:100%;height:95px;margin:0 auto 12px;color:#d4d4c9;overflow:hidden;display:grid;place-content:center;text-align:left;white-space:pre;font-size:7px;line-height:.95;letter-spacing:0}.scene-object>span{font-size:11px;letter-spacing:.01em;line-height:1.4}.result-scene{padding:0 0 16px}.result-values{display:flex;flex-wrap:wrap;gap:10px;margin:22px 0}.result-values span{padding:8px 10px;background:#2b2b28;overflow-wrap:anywhere;max-width:100%;font-size:13px;animation:arrive .45s both}.operation-store .result-values{border:1px dashed var(--dim);padding:16px;min-height:64px}.operation-store .result-values span{animation-name:store}.operation-select .result-values span{animation-name:select-in}.operation-arrange .result-values span{animation-name:arrange}.operation-remove .scene-object{animation:arrive .4s both}.r-plot{display:block;width:100%;height:auto;margin-top:20px}.hint-panel{border-top:1px solid var(--line);padding-top:16px;margin-top:10px}.hint-panel p{font-size:11px;line-height:1.8;margin:13px 0}.editor-heading{display:flex;justify-content:space-between;font-size:10px;padding:13px 15px;background:#282827}.editor-heading span:last-child{color:var(--muted)}.fixture{background:var(--surface);padding:12px 15px;color:var(--muted);font-size:11px;border-bottom:1px solid var(--line)}.fixture pre{font-size:11px;line-height:1.7;white-space:pre-wrap;margin:12px 0 0;overflow-wrap:anywhere}.fixture-note{font-size:11px;color:var(--muted);background:var(--surface);padding:10px 15px;margin:0}.editor{font-size:14px;letter-spacing:0}.editor-actions{display:flex;gap:22px;align-items:center;margin-top:15px;font-size:10px}.editor-actions .primary{font-size:11px;padding:11px 18px}.shortcut{margin-left:auto;color:var(--muted);font-size:9px;white-space:nowrap}.engine-status{font-size:10px;color:var(--muted);margin:18px 0 28px}.engine-status>span{font-size:9px;padding-right:5px}.pulse{animation:pulse 1.2s infinite}.console{min-height:140px;background:#2c2848;padding:16px 18px 12px}.console-heading{display:flex;justify-content:space-between;color:var(--muted);font-size:10px;border-bottom:1px solid var(--line);padding-bottom:12px}.console-content{padding:16px 0 0;font-size:12px;line-height:1.8}.console-content pre{white-space:pre-wrap;overflow-wrap:anywhere;max-height:230px;overflow:auto;font-size:12px;margin:0 0 18px}.feedback{padding:14px 0;border-top:1px dashed var(--line)}.feedback strong{font-size:11px;letter-spacing:.07em}.challenge-navigation{display:flex;justify-content:space-between;align-items:center;gap:20px;margin:30px 0 24px}.completion{overflow-x:clip;display:grid;grid-template-columns:1fr 1fr;gap:8vw;align-items:center;max-width:1300px;width:100%;margin:30px auto 60px}.completion h1{margin-top:26px}.completion p{color:var(--muted)}.summary-level{display:flex;justify-content:space-between;gap:20px;margin:18px 0;padding:10px 0;border-bottom:1px solid var(--line)}.completion-actions{display:flex;flex-wrap:wrap;gap:25px;margin:35px 0 25px;font-size:11px}.banner{margin:0 4vw;padding:14px 0;border-top:1px solid var(--dim);border-bottom:1px solid var(--dim);display:flex;align-items:center;justify-content:space-between;gap:20px;font-size:12px}.banner button{flex-shrink:0;font-size:11px}.loading{padding:15vh 10vw}.skip-link{position:fixed;top:-100px;left:20px;z-index:50;background:var(--ink);color:var(--bg);padding:12px}.skip-link:focus{top:10px}.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}dialog{background:var(--bg);color:var(--ink);border:1px solid var(--dim);width:min(560px,90vw);padding:28px;font:inherit;box-shadow:0 0 100px #0008}dialog::backdrop{background:#000b;backdrop-filter:blur(3px)}.dialog-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:25px;font-size:12px}.dialog-header button{font-size:20px;padding:0 8px}.dialog-actions{display:flex;flex-wrap:wrap;gap:20px;align-items:center;margin-top:30px;font-size:11px}dialog p{line-height:1.8;font-size:12px}@keyframes arrive{0%{opacity:0;transform:translateY(9px)}to{opacity:1;transform:translateY(0)}}@keyframes store{0%{opacity:0;transform:translateY(-30px)}to{opacity:1;transform:translateY(0)}}@keyframes select-in{0%{opacity:0;transform:translateY(-18px)}to{opacity:1;transform:translateY(0)}}@keyframes arrange{0%{opacity:0;transform:translate(25px)}to{opacity:1;transform:translate(0)}}@keyframes pulse{50%{opacity:.35}}@media(max-width:1050px){.site-header nav{gap:16px;font-size:10px}.challenge-columns,.challenge-heading{gap:4vw}.shortcut{display:none}.level-grid{gap:4vw}.scene-object{flex-basis:90px}.object-glyph{height:80px}.objects{min-height:230px}}@media(max-width:760px){.site-header{flex-wrap:wrap;gap:18px;padding:22px 5vw}.site-header nav{width:100%;flex-wrap:wrap;gap:12px 22px}.site-header nav button{padding:4px 0}.page{padding-left:5vw;padding-right:5vw}.level-grid{grid-template-columns:1fr;gap:40px;max-width:500px}.task-strip{gap:3px;overflow:auto;margin:18px 0 28px;padding-bottom:8px}.task-strip button{min-width:29px}.challenge-heading{grid-template-columns:1fr;gap:19px}.challenge-heading h1{font-size:18px}.challenge-heading p{font-size:12px}.challenge-columns{grid-template-columns:1fr;gap:30px}.left-column{display:contents}.visual-scene{order:0}.right-column{order:1}.hint-panel{order:2}.objects{min-height:170px;padding:20px 0;gap:8px}.scene-object{flex-basis:78px}.object-glyph{height:70px;margin-bottom:7px}.scene-object>span{font-size:10px}.result-scene{padding-bottom:8px}.challenge-navigation{gap:10px;margin-bottom:20px}.completion{grid-template-columns:1fr;gap:25px;margin-top:0}.banner{font-size:11px;align-items:flex-start}.cm-content{min-height:180px}dialog{padding:20px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}.result-values>.result-object{background:none;padding:5px 7px;max-width:130px;min-width:70px;flex:0 1 90px;text-align:center}.result-object .object-glyph{height:55px;margin-bottom:8px}.result-object b{font-size:12px;font-weight:500}.result-values.tabular{display:block}.objects.tabular{display:block;padding:20px 0}.objects.tabular>.object-glyph{height:62px;width:75px;margin:0 auto 15px}.scene-table{width:100%;overflow:auto;font-size:10px;letter-spacing:0}.scene-table table{width:100%;border-collapse:collapse;text-align:left}.scene-table th,.scene-table td{padding:8px 5px;border-bottom:1px solid var(--line);white-space:nowrap}.scene-table th{color:var(--muted);font-weight:400}.seat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;max-width:290px}.seat-grid>span{background:none;padding:5px;text-align:center}.seat-grid .object-glyph{width:70px;margin:auto}.operation-store .result-object{animation-name:store}.site-header nav{width:100%;justify-content:space-between;gap:8px 18px}.levels{display:flex;padding-top:0;padding-bottom:max(30px,8vh)}.level-card{min-width:0;--ascii-shadow: #625744;--ascii-mid: #b39a6e;--ascii-bright: #e3c48f;--ascii-light: #ffecd0}.level-moon{--ascii-shadow: #52576c;--ascii-mid: #9299ba;--ascii-bright: #c2c9ec;--ascii-light: #edf0ff}.level-star{--ascii-shadow: #584664;--ascii-mid: #aa87b9;--ascii-bright: #d7a8e5;--ascii-light: #f9d5ff}.level-entry{display:block;width:100%;padding:0}.level-entry:hover{text-decoration:none}.level-name{display:flex;justify-content:space-between;align-items:center;font-size:clamp(20px,3vw,42px);margin-top:12px}.level-name>span{font-size:.6em}.level-entry:hover .level-name{color:var(--ascii-light)}.level-progress progress::-webkit-progress-value{background:var(--ascii-bright)}.level-progress progress::-moz-progress-bar{background:var(--ascii-bright)}.ascii-fluid{display:block;position:relative;width:100%;container-type:inline-size;overflow:hidden}.ascii-frame{display:block;pointer-events:none;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:2.58cqw;font-variant-ligatures:none;line-height:1;letter-spacing:0;margin:0;white-space:pre}.ansi-0{color:var(--ascii-shadow)}.ansi-1{color:var(--ascii-mid)}.ansi-2{color:var(--ascii-bright)}.ansi-3{color:var(--ascii-light)}.ascii-river{max-width:600px;margin:22px auto 20px;--ascii-shadow: #4c7396;--ascii-mid: #8bc3e4;--ascii-bright: #b1e3f4;--ascii-light: #e4f7ff}.ascii-river .ascii-frame{font-size:1.72cqw}.challenge-navigation button{padding:4px 0}.hint-trigger{display:inline-flex;gap:12px;align-items:center;color:#f5f5f0}@media(max-width:760px){.site-header nav{column-gap:12px;font-size:10px}.level-grid{gap:24px}.level-card{padding:0;border:0}.level-name{font-size:27px}}.ansi-4{color:#4c574d}.ansi-5{color:#83c783}.ansi-6{color:#f5f5f0}.ascii-bridge{position:absolute;inset:0;color:#ffd28c;text-shadow:1px 0 #181818,-1px 0 #181818,0 1px #181818;animation:bridge-build .75s steps(18) both}@keyframes bridge-build{0%{clip-path:inset(0 76% 0 0)}to{clip-path:inset(0)}}.bulb-scene{position:relative;display:grid;width:28ch;height:15em;margin:15px auto 20px;place-content:center;font-size:clamp(10px,2.15vw,16px);color:#9d9c97;transition:color .22s}.bulb-scene pre{position:absolute;inset:0;font-size:inherit;line-height:1;white-space:pre;margin:0}.bulb-scene .bulb-body{display:block;color:inherit;height:auto;padding-top:.7em}.ascii-light{position:absolute;top:-4%;left:-15%;width:130%;pointer-events:none;--ascii-shadow: #8d552a;--ascii-mid: #c78138;--ascii-bright: #ecad56;--ascii-light: #ffd58c;text-shadow:0 0 7px #ffa344a0}.lamp-on{color:#ffcf76;text-shadow:0 0 10px #ffad45b3}.ansi-7{color:#7c9db3}.ansi-8{color:#ffda93}.ansi-9{color:#68c3dd}.ansi-10{color:#9a8fb7}.ansi-11{color:#c0a8f1}.ansi-12{color:#a79772}.ansi-13{color:#c7ad67}.ansi-14{color:#5d8d6b}.ansi-15{color:#a4d589}.ansi-16{color:#ba9b74}.coffee-reward,.pizza-serving,.cat-token{animation:arrive .45s both}.coffee-reward{color:#f1d2ab}.coffee-reward .object-glyph{color:inherit}.pizza-share{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:end;max-width:420px;margin-inline:auto;gap:12px}.pizza-serving{min-width:0;text-align:center}.pizza-slices{display:flex;flex-wrap:wrap;align-items:end;justify-content:center;gap:3px}.pizza-slice .object-glyph{height:auto;margin:0;color:#efc88f;font-size:9px}.pizza-rim{margin:4px 0;font-size:10px;line-height:.9}.cat-yard .object-glyph{color:#ead6b3;margin:0;font-size:8px}.challenge-navigation button span{display:block;white-space:pre;font-size:13px;line-height:1.4;letter-spacing:.015em}.challenge-navigation button:hover{color:var(--selection);text-decoration:none}@media(max-width:760px){.object-glyph,.cat-yard .object-glyph{font-size:5.6px}.pizza-slice .object-glyph{font-size:7.5px}}.result-object .object-glyph,.objects.tabular>.object-glyph{font-size:5.5px}.selected-artwork{position:relative;display:grid;place-items:center;width:100%;min-height:250px;margin:24px auto 16px;container-type:inline-size;color:#f5f5f0}.artwork-frame{margin:0;max-width:100%;white-space:pre;font-family:Menlo,Consolas,ui-monospace,monospace;font-variant-ligatures:none;font-size:min(var(--art-font-cap, 12px),calc(100cqw / var(--art-columns)),calc(var(--art-height-cap, 350px) / var(--art-rows)));line-height:1;letter-spacing:0}.artwork-frame span{padding:0;background:transparent;border:0;font-size:inherit;animation:none}.artwork-loading{position:absolute;font-size:11px;color:var(--muted)}.artwork-off{filter:grayscale(1) brightness(.35)}.source-values{display:flex;justify-content:center;flex-wrap:wrap;gap:8px 18px;font-size:11px;color:var(--muted);margin:0 0 24px}.source-values span{max-width:100%;overflow-wrap:anywhere}.artwork-part{min-height:0;margin:0}.cat-yard .artwork-part{width:104px}.pizza-slice .artwork-part{width:68px}.result-values .cat-token{width:104px;margin-bottom:6px}.selected-scene .cat-yard,.selected-scene .pizza-share{min-height:0;padding:0 0 24px}.curriculum-update{border-left:2px solid var(--selection);color:var(--muted);font-size:12px;padding:8px 14px;margin:0 0 24px;line-height:1.7}.animation-toggle{display:inline-flex;align-items:center;gap:10px}.animation-symbol{font-size:16px;line-height:1}.notebook-art{min-width:0;aspect-ratio:1;position:relative;overflow:visible}.r-logo-scene{position:relative;width:100%;aspect-ratio:1;container-type:inline-size;overflow:visible;font-family:Menlo,Consolas,ui-monospace,monospace}.r-logo-text{position:absolute;white-space:pre;font-family:inherit;font-variant-ligatures:none;font-size:calc(100cqw / var(--r-logo-font-factor, 59.52));line-height:1.5625cqw;letter-spacing:0;pointer-events:none}.r-logo-mark{position:absolute;inset:0;transform-style:preserve-3d}.r-logo-oval{color:#b4b4b9;font-weight:600;z-index:1}.r-logo-r{color:#160a7f;font-weight:900;text-shadow:.22px 0 currentColor,-.22px 0 currentColor;z-index:2}.art-credits{border-top:1px solid var(--line);padding-top:18px;font-size:10px;line-height:1.8;color:var(--muted);letter-spacing:0}.art-credits p{margin:0 0 6px}.art-credits a{text-underline-offset:3px}.paused-fact{min-width:0;width:100%;min-height:340px;display:flex;flex-direction:column;justify-content:center;gap:18px;padding:36px 0}.paused-fact p{margin:0;max-width:65ch;color:var(--muted);font-size:13px;line-height:1.8;letter-spacing:0}.paused-fact .fact-lead{color:var(--ink);font-size:clamp(15px,1.4vw,18px);line-height:1.7}.paused-fact a{display:inline-block;color:var(--ink);text-underline-offset:3px}.levels.animations-paused{align-items:center}.animations-paused .level-entry{padding:16px 0}html[data-animations-paused=true] *,html[data-animations-paused=true] *:before,html[data-animations-paused=true] *:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}@media(max-width:700px){.notebook-art{max-width:520px;width:100%;margin:auto}}.task-background{color:var(--muted)}.hint-panel p{white-space:pre-wrap}.selected-artwork.artwork-expanded{width:calc(var(--art-scale) * 100%);margin-left:calc((1 - var(--art-scale)) * 50%)}@media(max-width:700px){.selected-artwork.artwork-expanded{width:100%;margin-left:0}}
