:root{--paper: #fbf7f0;--surface: #ffffff;--ink: #1f2933;--ink-soft: #54606d;--muted: #8a93a0;--accent: #2f9e6b;--accent-dark: #268257;--accent-soft: #e7f3ec;--amber: #e0a93c;--star-empty: #d8cdb6;--line: #e7ddc9;--focus: #2f6fed;--scrim: rgba(31, 41, 51, .38);--r-sm: 8px;--r-md: 16px;--r-lg: 24px;--r-pill: 999px;--shadow: 0 8px 24px rgba(31, 41, 51, .1);--shadow-sm: 0 2px 8px rgba(31, 41, 51, .08);--font: "Nunito", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;color-scheme:light}:root[data-theme=oled]{--paper: #000000;--surface: #121418;--ink: #eef1f4;--ink-soft: #aab2bc;--muted: #79808a;--accent: #46c483;--accent-dark: #3bb074;--accent-soft: #14241b;--amber: #f0bd55;--star-empty: #34372f;--line: #2a2e35;--focus: #6b9bff;--scrim: rgba(0, 0, 0, .66);color-scheme:dark}:root[data-theme=oled] .app{background:var(--paper)}:root[data-theme=oled] .world-card{background:#0d0f13}:root[data-theme=oled] .world-card--locked,:root[data-theme=oled] .level-card--locked{background:#0a0b0e}:root[data-theme=oled] .view-toggle,:root[data-theme=oled] .coin-hud{background:#14161aeb}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;min-height:100%}body{font-family:var(--font);font-size:15px;line-height:1.45;color:var(--ink);background:var(--paper);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;text-rendering:optimizeLegibility}h1,h2,p{margin:0}button{font-family:inherit}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.skip-link{position:absolute;left:8px;top:-56px;z-index:100;padding:8px 16px;background:var(--surface);color:var(--ink);border-radius:var(--r-sm);box-shadow:var(--shadow-sm);text-decoration:none;font-weight:800;transition:top .15s ease}.skip-link:focus{top:8px}.noscript{padding:24px;text-align:center;font-weight:700}:focus-visible{outline:3px solid var(--focus);outline-offset:2px;border-radius:4px}:focus:not(:focus-visible){outline:none}[hidden]{display:none!important}.muted{color:var(--muted)}.eyebrow{font-size:.8125rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--accent)}.cr-logo{display:inline-block;vertical-align:middle;max-width:100%}:root[data-theme=oled] .cr-logo{filter:brightness(0) invert(1)}.topbar-back{flex:none;display:inline-flex;align-items:center;gap:4px;padding:8px 12px;min-height:40px;background:var(--surface);border:2px solid var(--line);border-radius:var(--r-pill);color:var(--ink-soft);font-family:inherit;font-weight:800;font-size:.8125rem;cursor:pointer;transition:border-color .15s ease,color .15s ease}.topbar-back:hover{border-color:var(--accent);color:var(--ink)}.icon{display:block}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 22px;border:2px solid transparent;border-radius:var(--r-pill);font-size:1rem;font-weight:800;cursor:pointer;transition:background-color .15s ease,transform .08s ease,border-color .15s ease}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}.btn-lg{min-height:56px;padding:0 32px;font-size:1.125rem}.btn-primary{background:var(--accent);color:#fff;box-shadow:var(--shadow-sm)}.btn-primary:hover:not(:disabled){background:var(--accent-dark)}.btn-ghost{background:var(--surface);color:var(--ink);border-color:var(--line)}.btn-ghost:hover:not(:disabled){background:var(--accent-soft);border-color:var(--accent)}.icon-btn{display:grid;place-items:center;width:44px;height:44px;flex:none;padding:0;background:var(--surface);color:var(--ink-soft);border:2px solid var(--line);border-radius:var(--r-md);cursor:pointer;transition:background-color .15s ease,color .15s ease,border-color .15s ease}.icon-btn:hover{background:var(--accent-soft);color:var(--ink);border-color:var(--accent)}.app{background:var(--screen-bg, transparent);transition:background-color .2s ease}.screen{min-height:100dvh;display:flex;flex-direction:column}.picker-screen{position:relative;align-items:center;justify-content:center;padding:32px 24px}.screen-corner{position:absolute;top:16px;right:16px;z-index:2}.screen-corner--left{right:auto;left:16px}.picker-inner{width:100%;max-width:720px;text-align:center;display:flex;flex-direction:column;gap:16px;align-items:center}.picker-title{font-size:clamp(1.75rem,4vw,2.25rem);font-weight:800}.picker-sub{color:var(--ink-soft);font-weight:700}.avatar-group{width:100%;margin:8px 0 0;padding:0;border:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:16px}.avatar-card{position:relative;display:flex;flex-direction:column;align-items:center;gap:12px;padding:24px 16px;background:var(--surface);border:2px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);cursor:pointer;transition:transform .12s ease,border-color .15s ease}.avatar-card:hover{transform:translateY(-3px)}.avatar-card input{position:absolute;opacity:0;width:1px;height:1px}.avatar-card:has(input:checked){border-color:var(--avatar-accent);outline:3px solid var(--avatar-accent);outline-offset:2px}.avatar-card:has(input:focus-visible){outline:3px solid var(--focus);outline-offset:2px}.avatar-art{width:90px;height:116px}.avatar-art svg{width:100%;height:100%}.avatar-name{font-weight:800}.levels-screen,.worlds-screen{padding:24px;gap:24px;max-width:960px;margin:0 auto;width:100%}.levels-header{display:flex;align-items:center;gap:16px}.buddy-btn{display:flex;flex-direction:column;align-items:center;gap:2px;flex:none;padding:4px 10px 6px;background:var(--surface);border:2px solid var(--line);border-radius:var(--r-md);cursor:pointer;transition:border-color .15s ease,background-color .15s ease}.buddy-btn:hover{border-color:var(--accent);background:var(--accent-soft)}.buddy-art{width:42px;height:54px}.buddy-label{font-size:.6875rem;font-weight:800;color:var(--accent)}.buddy-art svg{width:100%;height:100%}.levels-heading{flex:1}.levels-heading h1{font-size:1.5rem;font-weight:800}.star-total{display:inline-flex;align-items:center;gap:8px;font-weight:800;font-size:1.125rem}.star-total .star--on{color:var(--amber)}.level-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:16px}.level-card{width:100%;min-height:132px;display:flex;flex-direction:column;gap:8px;padding:16px;text-align:left;background:var(--surface);border:2px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow-sm);cursor:pointer;transition:transform .12s ease,border-color .15s ease,box-shadow .15s ease}.level-card:hover{transform:translateY(-3px);border-color:var(--w-accent, var(--accent));box-shadow:var(--shadow)}.levels-screen .eyebrow{color:var(--w-accent, var(--accent))}.levels-screen .level-num{color:var(--w-accent, var(--muted))}.level-card--locked{align-items:center;justify-content:center;text-align:center;color:var(--muted);background:#f3eddf;box-shadow:none;cursor:default}.level-num{font-size:.8125rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}.level-name{font-size:1.0625rem;font-weight:800;color:var(--ink)}.level-lock{color:var(--muted)}.star-row{display:flex;gap:4px;margin-top:auto}.star{color:var(--star-empty)}.star--on{color:var(--amber)}.world-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px}.world-card{width:100%;min-height:150px;display:flex;flex-direction:column;gap:6px;padding:20px;text-align:left;background:var(--w-soft, var(--surface));border:2px solid var(--w-accent, var(--line));border-radius:var(--r-md);box-shadow:var(--shadow-sm);cursor:pointer;transition:transform .12s ease,box-shadow .15s ease}.world-card:hover{transform:translateY(-3px);box-shadow:var(--shadow)}.world-pill{align-self:flex-start;padding:3px 11px;background:var(--w-accent, var(--accent));color:#fff;text-shadow:0 1px 1px rgba(0,0,0,.32);border-radius:var(--r-pill);font-size:.75rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase}.world-card--locked{align-items:center;justify-content:center;text-align:center;color:var(--muted);background:var(--w-soft, #f3eddf);opacity:.6;box-shadow:none;cursor:default}.world-card--locked .world-lock{color:var(--w-accent, var(--muted))}.world-sub{font-size:.8125rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--accent)}.world-card--locked .world-sub{color:var(--muted)}.world-name{font-size:1.375rem;font-weight:800;color:var(--ink)}.world-blurb{color:var(--ink-soft);font-weight:700}.world-stars{display:inline-flex;align-items:center;gap:6px;margin-top:auto;font-weight:800}.world-stars .star--on{color:var(--amber)}.app-footer{margin-top:12px;text-align:center;font-size:.8125rem;font-weight:700;color:var(--muted)}.play-screen{position:relative;height:100dvh;padding:16px;gap:12px;overflow:hidden}.play-header{display:flex;align-items:center;gap:12px}.play-heading{flex:1;text-align:center}.play-heading h1{font-size:1.1rem;font-weight:800}.play-hint{text-align:center;font-weight:700;font-size:.9rem;color:var(--accent-dark);background:var(--accent-soft);padding:8px 14px;border-radius:var(--r-md)}.stage{flex:1;display:flex;gap:16px;min-height:0}.board-panel{position:relative;flex:1 1 50%;display:grid;grid-template:minmax(0,1fr) / minmax(0,1fr);place-items:center;min-width:0;min-height:0;overflow:hidden;padding:12px;background:var(--surface);border:2px solid var(--line);border-radius:var(--r-lg)}.board{max-width:100%;max-height:100%;min-width:0;min-height:0;width:auto;height:auto;border-radius:var(--r-md);touch-action:none}.board-panel:has(.view-toggle--3d) .board{cursor:grab}.view-toggle{position:absolute;top:10px;right:10px;z-index:2;display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:8px 16px;background:#ffffffeb;color:var(--ink-soft);border:2px solid var(--line);border-radius:var(--r-pill);font-family:inherit;font-size:.78rem;font-weight:800;cursor:pointer;box-shadow:var(--shadow-sm);transition:border-color .15s ease,color .15s ease}.view-toggle:hover{border-color:var(--accent);color:var(--ink)}.coin-hud{position:absolute;top:10px;left:10px;z-index:2;display:flex;align-items:center;gap:7px;padding:6px 12px;background:#ffffffeb;color:var(--ink-soft);border:2px solid var(--line);border-radius:var(--r-pill);font-family:inherit;font-size:.75rem;font-weight:800;box-shadow:var(--shadow-sm);pointer-events:none}.coin-hud:before{content:"";width:12px;height:12px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#ffe082,#f0a92e);border:1.5px solid #b9791a}.count-hud:before{content:"#";width:14px;height:14px;border-radius:4px;background:radial-gradient(circle at 35% 30%,#ffe082,#caa12f);border:1.5px solid #b9791a;color:#5a3f15;font-size:.7rem;line-height:14px;text-align:center}.paint-hud:before{content:"";width:12px;height:12px;border-radius:3px;background:radial-gradient(circle at 35% 30%,#e0635a,#b23c34);border:1.5px solid #8f2e27}.code-panel{flex:1 1 50%;display:flex;flex-direction:column;gap:12px;min-width:0;min-height:0}.blockly-host{flex:1;min-height:260px;border:2px solid var(--line);border-radius:var(--r-lg);overflow:hidden;background:var(--paper)}.play-message{min-height:1.25rem;text-align:center;font-weight:700;color:var(--accent-dark)}.controls{display:flex;gap:12px;flex-shrink:0;flex-wrap:wrap}.controls .btn{flex:1;white-space:nowrap}.controls .btn-primary{flex:2}.code-toggle.is-on{border-color:var(--accent);color:var(--accent-dark)}.code-peek{flex-shrink:0;max-height:38%;margin:0;padding:12px 14px;overflow:auto;background:#11151c;color:#e6edf4;border:2px solid var(--line);border-radius:var(--r-md);font-family:SFMono-Regular,ui-monospace,Cascadia Code,Menlo,Consolas,monospace;font-size:.82rem;line-height:1.5;white-space:pre;tab-size:4;box-shadow:var(--shadow-sm)}:root[data-theme=oled] .code-peek{background:#05070a;border-color:#2a2d34}.loading-overlay{position:absolute;inset:0;z-index:5;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;background:#fbf7f0eb;font-weight:700;color:var(--ink-soft);text-align:center;padding:24px}.error-title{font-size:1.25rem;font-weight:800;color:var(--ink)}.spinner{width:40px;height:40px;border:4px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}.result-dialog{margin:auto;padding:0;border:0;background:transparent;width:min(420px,calc(100vw - 40px));max-width:420px;overflow:visible}.result-dialog::backdrop{background:var(--scrim)}.result-card{width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:32px 28px;min-height:360px;text-align:center;background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--shadow);animation:pop .22s ease}.result-kicker{display:inline-flex;align-items:center;gap:6px;font-weight:800;color:var(--accent)}.result-card h2{font-size:1.5rem;font-weight:800}.result-stars{display:flex;gap:8px}.result-star{color:var(--star-empty)}.result-star--on{color:var(--amber);animation:starPop .35s ease backwards;animation-delay:calc(var(--i) * .12s)}.result-actions{display:flex;flex-direction:row;gap:10px;width:100%;margin-top:8px}.result-actions .btn{flex:1;min-height:40px;padding:0 14px;font-size:.9375rem}.result-report{display:inline-flex;align-items:center;justify-content:center;gap:5px;margin-top:2px;padding:4px 8px;background:none;border:0;color:var(--muted);font-family:inherit;font-size:.78rem;font-weight:700;cursor:pointer}.result-report:hover{color:var(--ink-soft)}.intro-card{display:flex;flex-direction:column;gap:14px;padding:28px;background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--shadow);max-height:calc(100dvh - 24px);overflow:auto;text-align:left;animation:pop .22s ease}.intro-card h2{font-size:1.35rem;font-weight:800;text-align:center}.intro-steps{margin:0;padding-left:1.3em;display:flex;flex-direction:column;gap:10px;font-weight:700;line-height:1.4}.intro-steps li::marker{color:var(--accent);font-weight:800}.hint-strategy{font-weight:700;line-height:1.5}.intro-card .btn{align-self:stretch;margin-top:4px}.app-toast{position:fixed;left:50%;top:14px;z-index:60;padding:10px 18px;background:var(--accent);color:#fff;border-radius:var(--r-pill);font-weight:800;font-size:.85rem;box-shadow:var(--shadow);opacity:0;transform:translate(-50%,-130%);transition:transform .25s ease,opacity .25s ease;pointer-events:none}.app-toast.is-visible{opacity:1;transform:translate(-50%)}.report-fab{position:fixed;left:12px;bottom:12px;z-index:50;display:inline-flex;align-items:center;gap:6px;padding:8px 14px 8px 12px;background:var(--surface);color:var(--ink-soft);border:2px solid var(--line);border-radius:var(--r-pill);font-family:inherit;font-size:.8125rem;font-weight:800;cursor:pointer;box-shadow:var(--shadow-sm);opacity:.85;transition:opacity .15s ease,border-color .15s ease,color .15s ease}.report-fab:hover{opacity:1;border-color:var(--accent);color:var(--ink)}.report-dialog{margin:auto;padding:0;border:0;background:transparent;max-width:min(420px,calc(100vw - 32px))}.report-dialog::backdrop{background:var(--scrim)}.report-card{display:flex;flex-direction:column;gap:10px;padding:24px;background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--shadow)}.report-card h2{font-size:1.25rem;font-weight:800}.report-hint{font-size:.875rem}.report-shot{width:100%;max-height:200px;object-fit:contain;object-position:top;background:var(--paper);border:1px solid var(--line);border-radius:var(--r-sm);min-height:60px}.report-shot.is-loading{opacity:.4}.report-field{display:flex;flex-direction:column;gap:4px;font-weight:700;font-size:.875rem}.report-field input,.report-field textarea{font-family:inherit;font-size:1rem;padding:10px 12px;border:2px solid var(--line);border-radius:var(--r-sm);background:var(--paper);color:var(--ink);resize:vertical}.report-field input:focus,.report-field textarea:focus{border-color:var(--accent);outline:none}.report-status{min-height:1.2em;font-weight:700;color:var(--accent-dark)}.report-actions{display:flex;gap:10px}.report-actions .btn{flex:1}@media (max-width: 860px),(orientation: portrait){.stage{flex-direction:column}.board-panel{flex:0 0 34vh}.code-panel{flex:1 1 auto}.blockly-host{min-height:0}body:has(.play-screen) .report-fab{display:none}}@media (max-width: 480px){.levels-header{gap:10px 12px;flex-wrap:wrap}.levels-heading{order:3;flex:1 1 100%;min-width:0;text-align:center}.levels-heading h1{font-size:1.35rem;line-height:1.2}}@media (max-width: 600px){body:not(:has(.play-screen)) .report-fab{left:auto;right:12px;padding:13px;justify-content:center}body:not(:has(.play-screen)) .report-fab span{display:none}.picker-screen{padding-bottom:76px}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pop{0%{transform:scale(.92);opacity:0}to{transform:scale(1);opacity:1}}@keyframes starPop{0%{transform:scale(.4);opacity:0}60%{transform:scale(1.15)}to{transform:scale(1);opacity:1}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:400;src:url(./nunito-cyrillic-ext-400-normal-CuPM9foi.woff2) format("woff2"),url(./nunito-cyrillic-ext-400-normal-xaE7D4Sw.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:400;src:url(./nunito-cyrillic-400-normal-xAOo5cBP.woff2) format("woff2"),url(./nunito-cyrillic-400-normal-D1j0u8EH.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:400;src:url(./nunito-vietnamese-400-normal-BHkVbP3T.woff2) format("woff2"),url(./nunito-vietnamese-400-normal-DtOtW02z.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:Nunito;font-style:normal;font-display:swap;font-weight:400;src:url(./nunito-latin-ext-400-normal-i-8OOpdj.woff2) format("woff2"),url(./nunito-latin-ext-400-normal-CjMJVfGn.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:Nunito;font-style:normal;font-display:swap;font-weight:400;src:url(./nunito-latin-400-normal-r8SDr6Up.woff2) format("woff2"),url(./nunito-latin-400-normal-DKg4f3fz.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:Nunito;font-style:normal;font-display:swap;font-weight:700;src:url(./nunito-cyrillic-ext-700-normal-BuR0mlCG.woff2) format("woff2"),url(./nunito-cyrillic-ext-700-normal-DfoqN4Gs.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:700;src:url(./nunito-cyrillic-700-normal-DP36NgGt.woff2) format("woff2"),url(./nunito-cyrillic-700-normal-DfHRUDv-.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:700;src:url(./nunito-vietnamese-700-normal-Ch8EUCfz.woff2) format("woff2"),url(./nunito-vietnamese-700-normal-C9SQsXvj.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:Nunito;font-style:normal;font-display:swap;font-weight:700;src:url(./nunito-latin-ext-700-normal-BWeMsAzO.woff2) format("woff2"),url(./nunito-latin-ext-700-normal-D4woHhbd.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:Nunito;font-style:normal;font-display:swap;font-weight:700;src:url(./nunito-latin-700-normal-Dort48En.woff2) format("woff2"),url(./nunito-latin-700-normal-OcDqTBcA.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:Nunito;font-style:normal;font-display:swap;font-weight:800;src:url(./nunito-cyrillic-ext-800-normal-B-cvGohL.woff2) format("woff2"),url(./nunito-cyrillic-ext-800-normal-pjRatrRO.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:800;src:url(./nunito-cyrillic-800-normal-D3igD7Kl.woff2) format("woff2"),url(./nunito-cyrillic-800-normal-DymMgApb.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:800;src:url(./nunito-vietnamese-800-normal-D_CZYdm9.woff2) format("woff2"),url(./nunito-vietnamese-800-normal-Dz0hZPb5.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:Nunito;font-style:normal;font-display:swap;font-weight:800;src:url(./nunito-latin-ext-800-normal-CtU8tJOV.woff2) format("woff2"),url(./nunito-latin-ext-800-normal-CDcxIxx8.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:Nunito;font-style:normal;font-display:swap;font-weight:800;src:url(./nunito-latin-800-normal-Dz8SOQK_.woff2) format("woff2"),url(./nunito-latin-800-normal-D-J0wlBY.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}.academy-screen{position:relative;align-items:center;justify-content:flex-start;padding:40px 24px 32px;gap:8px}.academy-inner{width:100%;max-width:1100px;margin:auto;display:flex;flex-direction:column;align-items:center;gap:28px}.academy-head{text-align:center;display:flex;flex-direction:column;gap:10px;align-items:center}.academy-title{font-size:clamp(1.9rem,4.5vw,3rem);font-weight:800;letter-spacing:-.01em;line-height:1.05}.academy-tagline{font-size:clamp(1rem,2.2vw,1.2rem);color:var(--ink-soft);max-width:46ch}.academy-grid{list-style:none;margin:0;padding:0;width:100%;display:grid;grid-template-columns:repeat(3,1fr);gap:22px}.academy-grid>li{display:flex}.academy-card{--aca-accent: var(--accent);--aca-soft: var(--accent-soft);position:relative;flex:1;display:flex;flex-direction:column;text-align:left;gap:14px;padding:0 0 22px;background:var(--surface);border:2px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);cursor:pointer;overflow:hidden;color:inherit;font:inherit;transition:transform .12s ease,box-shadow .15s ease,border-color .15s ease}.academy-card:hover{transform:translateY(-4px);box-shadow:var(--shadow);border-color:var(--aca-accent)}.academy-card:active{transform:translateY(-1px)}.academy-card:focus-visible{outline:3px solid var(--focus);outline-offset:3px}.academy-art{display:block;width:100%;aspect-ratio:16 / 9;background:var(--aca-soft);border-bottom:2px solid var(--line)}.academy-art svg{display:block;width:100%;height:100%}.academy-body{display:flex;flex-direction:column;gap:8px;padding:4px 22px 0}.academy-tier{display:inline-flex;align-items:center;align-self:flex-start;gap:6px;padding:4px 12px;border-radius:var(--r-pill);background:var(--aca-soft);color:var(--aca-accent);font-size:.75rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase}.academy-name{font-size:1.45rem;font-weight:800;line-height:1.1}.academy-ages{font-size:.95rem;font-weight:700;color:var(--ink-soft)}.academy-blurb{font-size:.95rem;color:var(--ink-soft);line-height:1.5}.academy-cta{margin-top:auto;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 22px 0}.academy-status{font-size:.8rem;font-weight:700;color:var(--muted)}.academy-status--ready{color:var(--aca-accent)}.academy-go{display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:0 18px;border-radius:var(--r-pill);font-size:.95rem;font-weight:800;background:var(--aca-accent);color:#fff;box-shadow:var(--shadow-sm)}.academy-go--soft{background:var(--aca-soft);color:var(--aca-accent);box-shadow:none}.academy-go .academy-arrow{transition:transform .15s ease}.academy-card:hover .academy-go .academy-arrow{transform:translate(3px)}.academy-foot{margin-top:4px}@media (max-width: 920px){.academy-grid{grid-template-columns:1fr;max-width:460px;margin:0 auto}.academy-card{flex-direction:row;align-items:stretch}.academy-art{width:38%;aspect-ratio:auto;border-bottom:0;border-right:2px solid var(--line);flex:none}.academy-card>.academy-body,.academy-card>.academy-cta{padding-left:18px;padding-right:18px}.academy-body{padding-top:18px}}@media (max-width: 540px){.academy-screen{padding:28px 16px 24px}.academy-card{flex-direction:column}.academy-art{width:100%;aspect-ratio:16 / 9;border-right:0;border-bottom:2px solid var(--line)}}@media (prefers-reduced-motion: reduce){.academy-card,.academy-go .academy-arrow{transition:none}.academy-card:hover{transform:none}}.ib-home{display:flex;flex-direction:column;min-height:100dvh;padding:16px;gap:8px;--ib-accent: #6a5cc4}.ib-top{display:flex;align-items:center;justify-content:space-between}.ib-inner{flex:1;width:min(960px,100%);margin:0 auto;display:flex;flex-direction:column;align-items:center;text-align:center;padding:8px 4px 24px}.ib-title{font-size:clamp(1.5rem,4vw,2.2rem);font-weight:800;margin:2px 0 6px}.ib-sub{color:var(--ink-soft);font-weight:700;max-width:46ch;margin-bottom:22px}.ib-units{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px;width:100%}.ib-unit{display:flex;flex-direction:column;align-items:flex-start;gap:4px;text-align:left;padding:16px 16px 18px;background:var(--surface);border:2px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);cursor:pointer;font:inherit;color:var(--ink);transition:border-color .15s ease,transform .12s ease,box-shadow .15s ease}.ib-unit:not(.is-locked):hover{border-color:var(--ib-accent);transform:translateY(-2px);box-shadow:var(--shadow)}.ib-unit:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.ib-unit.is-locked{cursor:default;opacity:.62;background:transparent}.ib-unit.is-complete{border-color:var(--ib-accent)}.ib-unit-id{font-size:.72rem;font-weight:800;letter-spacing:.08em;color:var(--ib-accent);background:#6a5cc424;padding:2px 8px;border-radius:var(--r-pill)}.ib-unit-title{font-size:1.1rem;font-weight:800;margin-top:6px}.ib-unit-blurb{font-size:.85rem;color:var(--ink-soft);font-weight:600}.ib-unit-status{margin-top:6px;font-size:.78rem;font-weight:800;color:var(--ib-accent)}.ib-unit.is-locked .ib-unit-status{color:var(--muted)}.ib-unit-bar{margin-top:8px;width:100%;height:6px;border-radius:var(--r-pill);background:var(--line);overflow:hidden}.ib-unit-bar>span{display:block;height:100%;background:var(--ib-accent);border-radius:inherit;transition:width .3s ease}.il-screen{display:flex;flex-direction:column;min-height:100dvh;padding:12px 16px 16px;gap:12px;--ib-accent: #6a5cc4}.il-header{display:flex;align-items:center;gap:12px}.il-progress{flex:1;display:flex;flex-direction:column;gap:4px}.il-step{font-size:.74rem;font-weight:800;letter-spacing:.04em;color:var(--ink-soft)}.il-bar{height:6px;border-radius:var(--r-pill);background:var(--line);overflow:hidden}.il-bar>span{display:block;height:100%;background:var(--ib-accent);transition:width .3s ease}.il-body{flex:1;width:min(720px,100%);margin:0 auto;display:flex;flex-direction:column;gap:14px;min-height:0;overflow:auto}.il-lesson-title{font-size:1.4rem;font-weight:800}.il-teach{color:var(--ink-soft);font-weight:600;line-height:1.55;white-space:pre-line}.il-readalong{display:grid;grid-template-columns:1fr 1fr;gap:12px}@media (max-width: 560px){.il-readalong{grid-template-columns:1fr}}.il-col-label{display:block;font-size:.7rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:6px}.il-blocks{display:flex;flex-direction:column;gap:6px}.il-block{background:var(--ib-accent);color:#fff;font-weight:800;font-size:.86rem;padding:8px 12px;border-radius:10px;white-space:pre;box-shadow:var(--shadow-sm)}.il-code,.il-question,.il-fill{background:#11151c;color:#e6edf4;border:2px solid var(--line);border-radius:var(--r-md);padding:12px 14px;font-family:SFMono-Regular,ui-monospace,Cascadia Code,Menlo,Consolas,monospace;font-size:.9rem;line-height:1.6;white-space:pre-wrap;overflow-x:auto;margin:0}:root[data-theme=oled] .il-code,:root[data-theme=oled] .il-question,:root[data-theme=oled] .il-fill{background:#05070a;border-color:#2a2d34}.il-question{font-size:.95rem}.il-activity{display:flex;flex-direction:column;gap:12px}.il-options{display:flex;flex-direction:column;gap:8px}.il-option{display:flex;align-items:center;gap:10px;padding:12px 14px;background:var(--surface);border:2px solid var(--line);border-radius:var(--r-md);font-weight:700;cursor:pointer;transition:border-color .15s ease,background .15s ease}.il-option:hover{border-color:var(--ib-accent)}.il-option input{width:18px;height:18px;accent-color:var(--ib-accent)}.il-option.is-chosen{border-color:var(--ib-accent)}.il-option.is-correct{border-color:var(--accent);background:var(--accent-soft)}.il-blank{font:inherit;color:#fff;background:#7c6cdc40;border:1px solid rgba(124,108,220,.55);border-bottom:2px solid var(--ib-accent);border-radius:6px;padding:2px 7px;margin:0 3px;min-width:3ch;text-align:center}.il-blank::placeholder{color:transparent}.il-blank:focus{outline:2px solid var(--focus);outline-offset:1px;background:#7c6cdc61}.il-blank.is-correct{border-color:#4ade80;border-bottom-color:#4ade80;background:#4ade8033}.il-blank.is-wrong{border-color:#f87171;border-bottom-color:#f87171;background:#f8717133}.il-feedback{min-height:1.4rem;font-weight:700;line-height:1.5}.il-feedback.is-pass{color:var(--accent-dark)}.il-feedback.is-fail{color:#d24b4b}.il-feedback.is-done{color:var(--ink-soft)}.il-controls{display:flex;gap:12px;width:min(720px,100%);margin:0 auto}.il-controls .btn{flex:1}.il-controls [data-action=check],.il-controls [data-action=next]{flex:2}.adv-screen{--adv-bg: var(--paper, #fbf7f0);--adv-panel: var(--surface, #ffffff);--adv-line: var(--line, #e7ddc9);--adv-text: var(--ink, #1f2933);--adv-muted: var(--ink-soft, #54606d);--adv-accent: var(--accent, #2f9e6b);--adv-code-bg: #0f1115;--adv-code-panel: #0b0d11;--adv-code-line: #2a2f3a;--adv-code-text: #e7ebf0;--adv-code-muted: #9aa3b2;--adv-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;color:var(--adv-text);max-width:1100px;margin:0 auto;padding:clamp(.75rem,2vw,1.5rem);width:100%;box-sizing:border-box}.adv-home__top,.adv-runner__top{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:1rem;margin-bottom:1.25rem}.adv-home__heading,.adv-runner__heading{text-align:center}.adv-home__tag{color:var(--adv-muted);font-size:.9rem;margin:.25rem 0 0}.adv-home__progress,.adv-runner__status{font-size:.85rem;color:var(--adv-muted);white-space:nowrap}.adv-home__right{display:flex;align-items:center;gap:.6rem;justify-self:end}.adv-runner__status{color:var(--adv-accent);font-weight:700}.adv-module{margin-bottom:1.5rem}.adv-module__title{font-size:1.1rem;margin:0 0 .15rem}.adv-module__sub{color:var(--adv-muted);font-size:.85rem;margin:0 0 .75rem}.adv-lesson-list{list-style:none;margin:0;padding:0;display:grid;gap:.5rem}.adv-lesson-card{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:.85rem;width:100%;text-align:left;background:var(--adv-panel);border:1px solid var(--adv-line);border-radius:12px;padding:.85rem 1rem;color:inherit;cursor:pointer;transition:border-color .15s,transform .05s}.adv-lesson-card:hover{border-color:var(--adv-accent)}.adv-lesson-card:active{transform:translateY(1px)}.adv-lesson-card.is-done{border-color:#2f9e6b8c}.adv-lesson-card__num{display:grid;place-items:center;width:2rem;height:2rem;border-radius:50%;background:#2f9e6b33;color:var(--adv-accent);font-weight:800;font-size:.9rem}.adv-lesson-card.is-done .adv-lesson-card__num{background:var(--adv-accent);color:#fff}.adv-lesson-card__title{display:block;font-weight:700}.adv-lesson-card__blurb{display:block;color:var(--adv-muted);font-size:.85rem}.adv-lesson-card__state{font-size:1.2rem;color:var(--adv-muted)}.adv-lesson-card.is-done .adv-lesson-card__state{color:var(--adv-accent)}.adv-runner__grid{display:grid;grid-template-columns:minmax(220px,1fr) minmax(0,1.8fr);gap:1rem;align-items:start}@media (max-width: 760px){.adv-runner__grid{grid-template-columns:1fr}}.adv-brief{background:var(--adv-panel);border:1px solid var(--adv-line);border-radius:12px;padding:1rem}.adv-brief__title{margin:0 0 .5rem;font-size:.95rem;text-transform:uppercase;letter-spacing:.05em;color:var(--adv-muted)}.adv-brief p{margin:0 0 .6rem;line-height:1.5}.btn-link{background:none;border:none;color:var(--adv-accent);cursor:pointer;padding:0;font:inherit;text-decoration:underline}.adv-solution{margin-top:.5rem;background:var(--adv-code-bg);border:1px solid var(--adv-code-line);border-radius:8px;padding:.6rem;color:var(--adv-code-text);font-family:var(--adv-mono);font-size:.82rem;white-space:pre-wrap;overflow-x:auto}.adv-work{display:grid;gap:.75rem}.adv-controls{display:flex;gap:.5rem;flex-wrap:wrap}.btn-secondary{background:#2f9e6b2e;border:1px solid var(--adv-accent);color:var(--adv-text)}.py-editor{display:grid;grid-template-columns:auto 1fr;border:1px solid var(--adv-code-line);border-radius:10px;overflow:hidden;background:var(--adv-code-bg);font-family:var(--adv-mono);font-size:.9rem;line-height:1.5}.py-editor__gutter{padding:.6rem .5rem;text-align:right;color:var(--adv-code-muted);background:#ffffff0d;user-select:none;overflow:hidden;display:flex;flex-direction:column}.py-editor__gutter span{display:block}.py-editor__area{display:block;width:100%;min-height:240px;resize:vertical;border:none;outline:none;padding:.6rem .75rem;background:transparent;color:var(--adv-code-text);font:inherit;tab-size:4;white-space:pre;overflow:auto}.py-editor__area::selection{background:#2f9e6b66}.py-console{border:1px solid var(--adv-code-line);border-radius:10px;overflow:hidden;background:var(--adv-code-panel)}.py-console__header{padding:.4rem .75rem;font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;color:var(--adv-code-muted);background:#ffffff0d;border-bottom:1px solid var(--adv-code-line)}.py-console__body{margin:0;padding:.6rem .75rem;min-height:80px;max-height:240px;overflow:auto;color:var(--adv-code-text);font-family:var(--adv-mono);font-size:.85rem;line-height:1.5;white-space:pre-wrap;word-break:break-word}.py-console__muted{color:var(--adv-code-muted)}.py-console__out{color:var(--adv-code-text)}.py-console__warn{color:#e0b341}.py-console__err{color:#ff6b6b}.adv-grade{border-radius:10px;border:1px solid var(--adv-line);padding:.85rem 1rem;background:var(--adv-panel)}.adv-grade--pass{border-color:var(--adv-accent);background:#2f9e6b1f}.adv-grade--fail{border-color:#ff6b6b99}.adv-grade__title{margin:0 0 .5rem;font-weight:800}.adv-grade__list{list-style:none;margin:0 0 .5rem;padding:0;display:grid;gap:.4rem}.adv-grade__check{font-weight:600}.adv-grade__list .is-pass .adv-grade__check{color:var(--adv-accent)}.adv-grade__list .is-fail .adv-grade__check{color:#ff8585}.adv-grade__detail{margin:.3rem 0 0;padding:.5rem .6rem;background:var(--adv-code-bg);border:1px solid var(--adv-code-line);border-radius:8px;font-family:var(--adv-mono);font-size:.8rem;white-space:pre-wrap;color:var(--adv-code-muted)}
