:root{--bg:#241a4d;--bg-2:#33266b;--ink:#fff;--ink-soft:#cfc6ff;--accent:#2bb673;--accent-dark:#1d8a55;--warn:#ffd23f;--card:#fff;--card-ink:#2a2150;--radius:18px;font-family:"Baloo 2",system-ui,-apple-system,Segoe UI,sans-serif}*{box-sizing:border-box}html,body{background:var(--bg);height:100%;color:var(--ink);-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;margin:0;overflow:hidden}[hidden]{display:none!important}.ic{vertical-align:-.18em;flex:none;width:1.1em;height:1.1em}.star-on{color:#ffc61a}.star-off{color:#ffffff40}button{font:inherit;cursor:pointer;touch-action:manipulation;border:0}.primary,.secondary{border-radius:999px;justify-content:center;align-items:center;gap:.4em;min-height:56px;padding:.6em 1.3em;font-size:1.15rem;font-weight:800;transition:transform 80ms;display:inline-flex;box-shadow:0 5px #00000040}.primary{background:var(--accent);color:#fff}.secondary{color:var(--card-ink);background:#ece6ff}.primary:active,.secondary:active{transform:translateY(3px);box-shadow:0 2px #00000040}.big{min-width:190px;font-size:1.4rem}.icon-btn{color:var(--ink);background:var(--bg-2);border-radius:16px;place-items:center;width:56px;height:56px;font-size:1.6rem;display:inline-grid}.link{color:var(--ink-soft);background:0 0;align-items:center;gap:.4em;padding:12px;font-size:1rem;display:inline-flex}#map{background:radial-gradient(circle at 50% 0%, #4a37a0, var(--bg) 70%);height:100%;padding:24px 16px 40px;overflow-y:auto}.map-head{text-align:center}.map-head h1{align-items:center;gap:.25em;margin:0;font-size:clamp(2.4rem,7vw,3.6rem);line-height:1.1;display:inline-flex}.logo .ic{vertical-align:middle;width:1.15em;height:1.1em}.tagline{color:var(--ink-soft);margin:4px 0 12px;font-size:1.2rem}.map-pills{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}button.pill{color:var(--ink);font-family:inherit}button.pill .ic{color:var(--tier,var(--ink-soft))}.pill{background:var(--bg-2);border-radius:999px;align-items:center;gap:.35em;padding:6px 18px;font-size:1.2rem;font-weight:800;display:inline-flex}#worlds{gap:22px;max-width:900px;margin:24px auto 0;display:grid}.world{border:3px solid var(--world);border-radius:var(--radius);background:#ffffff0f;padding:14px 16px 18px}.world h2{color:var(--world);margin:0 0 12px;font-size:1.5rem}.world h2 small{color:var(--ink-soft);margin-left:6px;font-size:1rem}.levels{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px;display:grid}.level-btn{background:var(--world);color:#fff;border-radius:16px;flex-direction:column;align-items:center;gap:2px;min-height:112px;padding:10px 8px 12px;display:flex;box-shadow:0 5px #0000004d}.level-btn:disabled{color:#9c93c7;box-shadow:none;cursor:default;background:#4a4170}.level-btn .num{font-size:2rem;font-weight:800;line-height:1}.level-btn .stars{gap:2px;font-size:1.2rem;display:flex}.level-btn .stars .star-off{color:#ffffff73}.level-btn .num .ic{width:1.6rem;height:1.6rem}.level-btn .name{font-size:.95rem;font-weight:700}.map-foot{text-align:center;margin-top:18px}#play{flex-direction:column;height:100%;display:flex}.topbar{background:var(--bg-2);align-items:center;gap:12px;padding:8px 12px;display:flex}.title{flex:1;min-width:0}#lvl-name{font-size:1.3rem;font-weight:800;line-height:1.2}#lvl-hint{color:var(--ink-soft);font-size:1rem;line-height:1.25}#lvl-stars .stars{gap:2px;font-size:1.5rem;display:flex}.split{--code-size:50%;flex:1;min-height:0;display:flex}#blockly,#code{flex:0 0 var(--code-size);isolation:isolate;min-width:0;min-height:0;position:relative;overflow:hidden}#code{--mono:"JetBrains Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;color:#e9e4ff;-webkit-user-select:text;user-select:text;background:#15102e;flex-direction:column;display:flex}#code .snippets{background:#1d1640;border-bottom:1px solid #33266b;flex-wrap:wrap;gap:6px;padding:10px;display:flex}#code .snippets button{font-family:var(--mono);color:#fff;background:#33266b;border-radius:8px;min-height:40px;padding:8px 10px;font-size:.85rem;font-weight:700}#code .snippets button:active{background:#4a37a0}.code-scroll{flex:1;align-items:flex-start;min-height:0;display:flex;overflow:auto}.gutter{z-index:2;color:#6f62a8;min-height:100%;font:600 1rem/1.6 var(--mono);text-align:right;background:#15102e;flex-direction:column;flex:none;padding:12px 8px 12px 10px;display:flex;position:sticky;left:0}.gutter .running{color:#ffe14d}.gutter .error{color:#ff6b81}.code-body{flex:1;min-width:max-content;min-height:100%;position:relative}.code-view,.code-input{font:500 1rem/1.6 var(--mono);white-space:pre;tab-size:2;letter-spacing:0;margin:0;padding:12px 16px 12px 6px}.code-view{pointer-events:none;min-height:100%}.code-view .ln{border-radius:4px;min-width:100%;display:inline-block}.code-view .ln.running{background:#ffe14d38;box-shadow:inset 3px 0 #ffe14d}.code-view .ln.error{text-underline-offset:4px;background:#ff2d552e;-webkit-text-decoration:underline wavy #ff6b81;text-decoration:underline wavy #ff6b81}.code-input{resize:none;color:#0000;caret-color:#ffe14d;background:0 0;border:0;outline:none;width:100%;height:100%;position:absolute;inset:0;overflow:hidden}.code-input::selection{background:#7cf3ff4d}#code.locked .code-input{cursor:default}.code-error{color:#fff;background:#ff2d55;padding:8px 12px;font-weight:700;line-height:1.3}.tk-key{color:#c792ff;font-weight:700}.tk-cmd{color:#ffb86b}.tk-check{color:#ffd23f}.tk-var{color:#4ee0c8}.tk-num{color:#7cf3ff}.tk-string{color:#a5f08a}.tk-comment{color:#6f62a8;font-style:italic}.tiers{text-align:left;gap:12px;margin:14px 0 6px;display:grid}.tier-btn{color:var(--card-ink);text-align:left;background:#f3efff;border:3px solid #0000;border-radius:16px;grid-template-columns:auto 1fr;align-items:center;gap:4px 14px;padding:12px 16px;display:grid}.tier-btn.current{border-color:var(--accent)}.tier-btn .tier-ic{color:var(--tier);grid-row:span 2;font-size:2.2rem}.tier-btn .lang-sample{color:#ffb86b;text-align:center;background:#15102e;border-radius:10px;min-width:108px;padding:10px 8px;font:700 .85rem/1.2 JetBrains Mono,ui-monospace,monospace}.tier-btn b{font-size:1.25rem}.tier-btn b small{color:#7a6cb8;margin-left:6px;font-size:.95rem;font-weight:700}.tier-btn span{color:#5a4d93;font-size:.95rem;line-height:1.3}.demo-code.as-code li{color:#e9e4ff;opacity:.7;background:#15102e;font-family:JetBrains Mono,ui-monospace,monospace;font-weight:600}.demo-code.as-code li.on{opacity:1}#splitter{cursor:col-resize;touch-action:none;background:var(--bg-2);z-index:5;flex:0 0 18px;place-items:center;display:grid}#splitter span{background:var(--ink-soft);opacity:.7;border-radius:3px;width:6px;height:56px}#splitter:hover span,#splitter:focus-visible span,#splitter.dragging span{opacity:1;background:var(--warn)}#splitter:focus-visible{outline:3px solid var(--warn);outline-offset:-3px}#blockly.locked{pointer-events:none}#blockly[hidden],#code[hidden]{display:none!important}#blockly.locked:after{content:"";background:#241a4d1f;position:absolute;inset:0}.board-col{flex-direction:column;flex:1 1 0;gap:10px;min-width:0;min-height:0;padding:10px;display:flex}#board{touch-action:none;border-radius:14px;flex:1;min-height:0;position:relative;overflow:hidden}.controls{justify-content:center;gap:12px;display:flex}@media (width<=640px){.topbar{flex-wrap:wrap;gap:8px}.title{flex-basis:100%;order:5}#lvl-stars{margin-left:auto}.icon-btn{width:48px;height:48px;font-size:1.4rem}.board-col{gap:6px;padding:6px}.big{padding-block:8px}}@media (height<=500px){.board-col{gap:6px;padding:6px}.big{padding-block:6px}}@media (orientation:portrait){.split{--code-size:58%;flex-direction:column-reverse}#splitter{cursor:row-resize;flex-basis:18px}#splitter span{width:56px;height:6px}.big{min-width:160px}}.blocklyZoom>image,.blocklyTrash{transform-origin:50%}.blocklyHighlightedConnectionPath{stroke-width:5px}#overlay{z-index:50;background:#140c32b3;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.card{background:var(--card);color:var(--card-ink);text-align:center;border-radius:24px;width:min(440px,100%);padding:24px 28px;animation:.3s cubic-bezier(.3,1.6,.6,1) pop}.card h2{margin:6px 0;font-size:2rem}.card p{margin:6px 0 12px;font-size:1.15rem}.big-stars{justify-content:center;gap:8px;font-size:3.6rem;display:flex}.big-stars .star-off{color:#ddd6f5}.big-stars .star-on{filter:drop-shadow(0 3px #e09b00)}.checks{text-align:left;gap:6px;margin:10px 0 16px;padding:0;font-size:1.1rem;list-style:none;display:grid}.checks li{align-items:flex-start;gap:10px;display:flex}.checks .ic{width:1.5em;height:1.5em}.discover{color:#1aa3d9;font-size:5rem;line-height:1;animation:1s ease-out spin}.eyebrow{text-transform:uppercase;letter-spacing:.12em;color:#8a7bc8;font-size:.85rem;font-weight:800}.demo{flex-wrap:wrap;justify-content:center;align-items:center;gap:14px;margin:12px 0 4px;display:flex}.demo-code{text-align:left;gap:4px;margin:0;padding:0;list-style:none;display:grid}.demo-code li{background:var(--block);color:#fff;opacity:.55;margin-left:calc(var(--indent,0) * 18px);border-radius:10px;align-items:center;gap:6px;padding:4px 10px 4px 6px;font-size:.95rem;font-weight:800;transition:opacity .2s,transform .2s;display:flex}.demo-side{justify-items:center;gap:8px;display:grid}.demo-var{color:#fff;background:#16b5a3;border-radius:10px;padding:2px 12px;font-weight:800}.demo-var b{min-width:1ch;display:inline-block}.demo-var.bump{animation:.3s ease-out pop}.demo-cell.brick{color:#fff;text-align:center;font-size:.85rem;font-weight:900;line-height:20px}.demo-cell.star{box-shadow:inset 0 0 0 2px #ffd23f}.demo-cell.star:not(.brick):before{content:"★";color:#ffd23f;text-align:center;font-size:15px;line-height:20px;position:absolute;inset:0}.demo-cell.hole{background:#0d0820;border-radius:50%;box-shadow:inset 0 0 0 2px #8a7bc8}.demo-code li.on{opacity:1;transform:scale(1.06);box-shadow:0 0 0 3px #ffe14d}.demo-code img{width:22px;height:22px}.demo-board{--cell:34px;grid-template-columns:repeat(5, var(--cell));background:#241a4d;border-radius:14px;grid-auto-rows:20px;gap:6px;padding:12px;display:grid;position:relative}.demo-cell{border-radius:4px;position:relative}.demo-cell.brick{background:var(--brick);animation:.25s ease-out pop}.demo-cell.skipped:after{content:"";background:#c9b8ff;border-radius:50%;width:8px;height:8px;margin:auto;position:absolute;inset:0}.demo-bot{width:var(--cell);height:20px;transform:translate(calc(var(--col,0) * (var(--cell) + 6px)), calc(var(--row,0) * 26px - 6px));background:#dfe6ff;border:2px solid #3b2f7a;border-radius:6px;transition:transform .45s ease-in-out;position:absolute;top:12px;left:12px}.demo-bot:before,.demo-bot:after{content:"";background:#3b2f7a;border-radius:50%;width:5px;height:5px;position:absolute;top:5px}.demo-bot:before{left:9px}.demo-bot:after{right:9px}.actions{flex-wrap:wrap;justify-content:center;gap:12px;display:flex}#toast{background:var(--warn);color:var(--card-ink);opacity:0;pointer-events:none;z-index:40;text-align:center;border-radius:999px;max-width:calc(100% - 32px);padding:10px 22px;font-size:1.3rem;font-weight:800;transition:opacity .2s,transform .2s;position:fixed;top:84px;left:50%;transform:translate(-50%,-20px);box-shadow:0 6px #0003}#toast.show{opacity:1;transform:translate(-50%)}#toast{align-items:center;gap:10px;display:flex}#toast .toast-ic{width:1.6em;height:1.6em}#hand{pointer-events:none;z-index:30;filter:drop-shadow(0 4px 4px #0000004d);width:54px;height:54px;position:fixed;top:0;left:0}#hand .ic{width:100%;height:100%}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}@keyframes pop{0%{opacity:0;transform:scale(.7)}to{opacity:1;transform:scale(1)}}@keyframes spin{0%{transform:rotate(-200deg)scale(.3)}to{transform:none}}.small-print{color:#7a6cb8;margin:6px 0 0;font-size:.9rem}.as-code-card{text-align:left;margin:4px 0 14px}.as-code-card .eyebrow{text-align:center}.as-code-card pre{color:#e9e4ff;-webkit-user-select:text;user-select:text;background:#15102e;border-radius:12px;max-height:180px;margin:6px 0 0;padding:10px 14px;font:600 .9rem/1.5 JetBrains Mono,ui-monospace,monospace;overflow:auto}.codie{z-index:8;pointer-events:none;align-items:flex-end;gap:8px;display:flex;position:absolute;bottom:86px;left:18px;right:18px}.codie-body{pointer-events:auto;filter:drop-shadow(0 4px #00000040);background:0 0;flex:none;width:80px;height:88px;padding:0}.codie-svg{width:100%;height:100%;overflow:visible}.codie-bob{transform-origin:60px 120px;animation:2.4s ease-in-out infinite codie-bob}@keyframes codie-bob{50%{transform:translateY(-3px)rotate(-2deg)}}.codie-spark{transform-origin:60px 8px;animation:3s linear infinite codie-spark}@keyframes codie-spark{50%{transform:scale(1.15)}}.codie-eyes{transform-origin:60px 54px;animation:4.5s infinite codie-blink}@keyframes codie-blink{0%,94%,to{transform:scaleY(1)}97%{transform:scaleY(.1)}}.codie-arm-r{transform-origin:98px 74px}.codie.talking .codie-arm-r{animation:.9s ease-in-out 2 codie-wave}@keyframes codie-wave{50%{transform:rotate(-22deg)}}.codie-talk,.codie-frown,.codie.speaking .codie-smile{display:none}.codie.speaking .codie-talk{transform-origin:60px 69px;animation:.22s ease-in-out infinite alternate codie-talk;display:block}@keyframes codie-talk{0%{transform:scaleY(.35)}to{transform:scaleY(1)}}.codie[data-mood=oops] .codie-smile{display:none}.codie[data-mood=oops]:not(.speaking) .codie-frown{display:block}.codie[data-mood=oops] .codie-brows{transform-origin:60px 40px;transform:translateY(2px)rotate(4deg)}.codie[data-mood=think] .codie-brows{transform:translateY(-3px)}.codie[data-mood=think] .codie-eyes{animation:none;transform:translate(3px)}.codie[data-mood=cheer] .codie-arm-l{transform-origin:22px 74px;transform:rotate(40deg)}.codie[data-mood=cheer] .codie-arm-r{transform:rotate(-30deg)}.codie-bubble{pointer-events:auto;color:var(--card-ink);opacity:0;transform-origin:0 100%;visibility:hidden;background:#fff;border-radius:16px;width:max-content;max-width:min(340px,100% - 90px);margin-bottom:26px;padding:10px 14px;font-size:1.02rem;font-weight:600;line-height:1.35;transition:opacity .18s,transform .18s;position:relative;transform:translateY(8px)scale(.96);box-shadow:0 6px #00000040}.codie-bubble:before{content:"";border:9px solid #0000;border-left:0;border-right-color:#fff;position:absolute;bottom:14px;left:-9px}.codie.talking .codie-bubble{opacity:1;visibility:visible;transform:none}.codie-bubble p{margin:0}.codie-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;margin-top:8px;display:none}:is(.codie.talking .codie-actions:has(.codie-replay:not([hidden])),.codie.waiting .codie-actions){display:flex}.codie-actions button{border-radius:999px;min-height:40px;padding:6px 14px;font-weight:800}.codie-replay{color:var(--card-ink);background:#ece6ff}.codie-next{background:var(--accent);color:#fff;display:none}.codie.waiting .codie-next{animation:1.2s ease-in-out infinite codie-pulse;display:inline-block}@keyframes codie-pulse{50%{transform:scale(1.06)}}#voice .ic{color:#2ec4b6}.codie-hello{text-align:left;align-items:center;gap:12px;margin-bottom:6px;display:flex}.codie-hello .codie-svg{flex:none;width:64px;height:70px}.codie-hello p{margin:0;font-size:1rem;line-height:1.35}@media (width<=640px){.codie{bottom:80px;left:10px;right:10px}.codie-body{width:52px;height:57px}.codie-bubble{font-size:.95rem}}@media (prefers-reduced-motion:reduce){.codie-bob,.codie-spark,.codie-eyes,.codie.talking .codie-arm-r,.codie.waiting .codie-next{animation:none}}.pill.fullscreen-btn{color:inherit;font:inherit;cursor:pointer;border:0;padding:6px 12px}.pill.fullscreen-btn svg{width:1.1em;height:1.1em}.rules{flex-wrap:wrap;justify-content:center;align-items:center;gap:6px 10px;font-size:.95rem;font-weight:700;display:flex}.rules-title{color:var(--ink-soft);align-items:center;gap:6px;display:inline-flex}.rule{background:var(--bg-2);border:2px dashed #8f6bff;border-radius:999px;align-items:center;gap:6px;padding:3px 12px;display:inline-flex}.rule.done{border-style:solid;border-color:var(--accent)}.rule .ic,.rules-title .ic{width:1.1em;height:1.1em}.demo-board.has-paddle .demo-bot{display:none}.demo-cell.swapped{animation:.35s ease-out pop}.demo-cell.coin:before{content:"";background:#ffd23f;border:2px solid #fff;border-radius:50%;width:12px;height:12px;position:absolute;top:4px;left:4px}.demo-coin{left:calc(12px + 2 * (var(--cell) + 6px) + var(--cell) / 2 - 8px);background:#ffd23f;border:2px solid #fff;border-radius:50%;width:16px;height:16px;animation:.9s ease-in forwards coin-drop;position:absolute;top:40px}@keyframes coin-drop{to{opacity:.2;transform:translateY(46px)}}.demo-paddle{background:#7cf3ff;border:2px solid #fff;border-radius:6px;width:60px;height:10px;transition:width .35s cubic-bezier(.3,1.6,.6,1)}.demo-paddle.big{width:110px}.demo-flag{background:#fff;width:2px;height:16px;position:absolute;bottom:100%;right:3px}.demo-flag:after{content:"";border-top:4px solid #0000;border-bottom:4px solid #0000;border-left:10px solid #ff2d55;position:absolute;top:0;left:2px}.world-home{width:max-content;color:inherit;margin:0 auto 10px 0;padding:6px 14px;font-size:1rem;text-decoration:none;display:flex}.world-home svg{width:1.1em;height:1.1em}.slow-btn{min-width:0;padding-inline:16px}.slow-btn.on{background:var(--warn);color:var(--card-ink);border-color:var(--warn)}@media (width<=640px){.slow-btn{gap:0;font-size:0}.slow-btn .ic{font-size:1.4rem}}.board-col{position:relative}.loop-chip{z-index:4;pointer-events:none;flex-wrap:wrap;justify-content:center;gap:6px;display:flex;position:absolute;top:16px;left:50%;transform:translate(-50%)}.loop-chip span{background:var(--warn);color:var(--card-ink);font-variant-numeric:tabular-nums;border-radius:999px;align-items:center;gap:6px;padding:4px 12px;font-weight:800;display:inline-flex;box-shadow:0 3px #00000040}.loop-chip .ic{width:1.1em;height:1.1em}.hint-glow>.blocklyPath{animation:.8s ease-in-out infinite alternate hint-glow}@keyframes hint-glow{0%{filter:drop-shadow(0 0 #ffe14d)}to{filter:drop-shadow(0 0 8px #ffe14d)drop-shadow(0 0 3px #ffe14d)}}.predict{z-index:30;background:var(--card);color:var(--card-ink);border-radius:var(--radius);text-align:center;padding:12px 14px;position:absolute;top:40%;left:12px;right:12px;box-shadow:0 8px 24px #00000059}.predict p{margin:2px 0 10px;font-size:1.15rem;font-weight:800}.predict-choices{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}.predict-choice{background:#f5f2ff;border:3px solid #d8d0ff;border-radius:12px;min-width:0;padding:8px}.predict-choice.chosen{border-color:#8f6bff}.predict-choice.right{border-color:var(--accent);background:#e3f7ec}.predict-choice.chosen:not(.right){background:#ffe9e9;border-color:#ff5c5c}.mini{grid-template-columns:repeat(var(--cols), 20px);gap:3px;display:grid}.mini-cell{color:#fff;text-shadow:0 0 2px #3b2f7a;background:#e4dcff;border-radius:3px;width:20px;height:14px;font-size:10px;font-weight:900;line-height:14px}.mini-cell:not(.brick){color:#e8a317;text-shadow:none}.stop-card{text-align:left;color:var(--card-ink);background:#fff7d6;border-radius:12px;align-items:flex-start;gap:10px;margin:0 0 16px;padding:10px 14px;font-weight:700;display:flex}.stop-card p{margin:0}.stop-card .ic{flex:none;width:1.6em;height:1.6em}body.young .icon-btn{min-width:56px;min-height:56px}body.young .big{min-height:64px}body.young .level-btn{min-height:120px}@media (orientation:portrait){.predict{padding:8px 10px;inset:auto 8px 8px}.predict p{margin-bottom:6px;font-size:1rem}.predict-choices{flex-wrap:nowrap;gap:6px}.predict-choice{padding:5px}.mini{grid-template-columns:repeat(var(--cols), 10px);gap:2px}.mini-cell{width:10px;height:9px;font-size:7px;line-height:9px}}.teach-btn{width:100%;color:var(--card-ink);text-align:left;background:#e6f9f6;border:3px solid #2ec4b6;border-radius:14px;align-items:center;gap:12px;margin:0 0 14px;padding:12px 16px;font-weight:800;display:flex}.teach-btn .ic{color:#2ec4b6;flex:none;width:2em;height:2em}.why-choices{gap:10px;margin-top:12px;display:grid}.why-choice{min-height:56px;color:var(--card-ink);text-align:left;background:#f5f2ff;border:3px solid #d8d0ff;border-radius:14px;padding:12px 16px;font-weight:700}.why-choice.wrong{opacity:.7;background:#ffe9e9;border-color:#ff5c5c}.level-btn{position:relative}.taught{color:#fff;background:#2ec4b6;border-radius:50%;place-items:center;width:30px;height:30px;display:grid;position:absolute;top:-8px;right:-8px;box-shadow:0 2px #0000004d}.taught .ic{width:20px;height:20px}#run.hint-pulse{animation:.6s ease-in-out 4 alternate run-pulse}@keyframes run-pulse{to{transform:scale(1.08);box-shadow:0 0 0 6px #ffe14d99}}
