: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}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;min-height:100%}body{font-family:var(--font);font-size:16px;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)}.icon{display:block}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:0 24px;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:48px;height:48px;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)}.screen{min-height:100dvh;display:flex;flex-direction:column}.picker-screen{align-items:center;justify-content:center;padding:32px 24px}.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(--accent);box-shadow:var(--shadow)}.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(--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}.world-card:hover{transform:translateY(-3px);border-color:var(--accent);box-shadow:var(--shadow)}.world-card--locked{align-items:center;justify-content:center;text-align:center;color:var(--muted);background:#f3eddf;box-shadow:none;cursor:default}.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.25rem;font-weight:800}.play-hint{text-align:center;font-weight:700;color:var(--accent-dark);background:var(--accent-soft);padding:10px 16px;border-radius:var(--r-md)}.stage{flex:1;display:flex;gap:16px;min-height:0}.board-panel{flex:1 1 50%;display:grid;place-items:center;min-width:0;padding:12px;background:var(--surface);border:2px solid var(--line);border-radius:var(--r-lg)}.board{max-width:100%;max-height:100%;width:auto;height:auto;border-radius:var(--r-md)}.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}.controls .btn{flex:1}.controls .btn-primary{flex:2}.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;max-width:min(360px,calc(100vw - 48px));overflow:visible}.result-dialog::backdrop{background:var(--scrim)}.result-card{width:100%;max-width:360px;display:flex;flex-direction:column;align-items:center;gap:12px;padding:28px 24px;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:column;gap:10px;width:100%;margin-top:4px}.result-actions .btn{width:100%}.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 auto;max-height:40vh}.code-panel{flex:1 1 auto}.blockly-host{min-height:220px}}@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}
