@font-face{font-family:Fredoka;src:url(../fonts/fredoka-latin.woff2)format("woff2");font-weight:300 700;font-display:swap}:root{--ink:#1d3557;--ink-soft:#3d5a80;--cream:#fff8f0;--pink:#ff8fa3;--cyan:#4cc9f0;--green:#52b788;--green-dark:#2d6a4f;--yellow:#ffd166;--red:#e63946;--purple:#7b2cbf;--panel:#fff8f0;--radius:22px;--shadow:0 6px 0 #1d355740;--tap:56px;--safe-l:env(safe-area-inset-left,0px);--safe-r:env(safe-area-inset-right,0px);--safe-t:env(safe-area-inset-top,0px);--safe-b:env(safe-area-inset-bottom,0px)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{overscroll-behavior:none;height:100%;color:var(--ink);-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:manipulation;background:#2b1633;margin:0;font-family:Fredoka,ui-rounded,Arial Rounded MT Bold,system-ui,sans-serif;font-weight:500;overflow:hidden}#app{position:fixed;inset:0}button{color:inherit;touch-action:manipulation;font-family:inherit}.icon,.icon svg{width:1em;height:1em;line-height:0;display:inline-block}.btn{min-height:var(--tap);min-width:var(--tap);border:4px solid var(--ink);border-radius:var(--radius);box-shadow:var(--shadow);cursor:pointer;background:#fff;justify-content:center;align-items:center;gap:10px;padding:8px 20px;font-size:22px;font-weight:600;transition:transform 80ms;display:inline-flex}.btn .icon{font-size:30px}.btn:active{transform:translateY(4px);box-shadow:0 2px #1d355740}.btn:disabled{opacity:.45}.btn.round{width:var(--tap);height:var(--tap);border-radius:50%;padding:0}.btn.round .icon{font-size:28px}.btn.round.on{background:var(--cyan)}.btn.small{min-height:44px;padding:4px 14px;font-size:18px}.btn.round.small{width:48px;min-width:48px;height:48px;min-height:48px}.btn.big{border-radius:40px;min-height:76px;padding:10px 34px;font-size:32px}.btn.big .icon{font-size:38px}.btn.go{background:var(--green);color:#fff}.btn.go .icon{color:#fff}.screen{padding:calc(12px + var(--safe-t)) calc(16px + var(--safe-r)) calc(12px + var(--safe-b)) calc(16px + var(--safe-l));background:radial-gradient(circle at 30% 20%,#ffb3c6 0%,#f08aa5 40%,#c4577f 100%);flex-direction:column;display:flex;position:absolute;inset:0;overflow:hidden}.world-bg-1{background:radial-gradient(circle at 30% 20%,#ffd6e0 0%,#f4a6b8 45%,#c96b8a 100%)}.world-bg-2{background:radial-gradient(circle at 30% 20%,#ffd8cc 0%,#f29e8e 45%,#b8565a 100%)}.world-bg-3{background:radial-gradient(circle at 30% 20%,#ffb3c1 0%,#e46a7f 45%,#8f1d3f 100%)}.topbar{justify-content:space-between;align-items:center;gap:12px;width:100%;min-height:64px;display:flex}.topbar h2{color:#fff;text-shadow:0 3px 0 var(--ink);text-align:center;flex:1;margin:0;font-size:clamp(22px,3.4vw,36px)}.spacer{width:var(--tap)}.corner{right:calc(16px + var(--safe-r));top:calc(12px + var(--safe-t));position:absolute}.title{justify-content:center;align-items:center;gap:2vh}.logo{color:#fff;text-shadow:0 6px 0 var(--ink), 0 0 30px #4cc9f099;-webkit-text-stroke:3px var(--ink);z-index:1;flex-direction:column;align-items:center;margin:0;font-size:clamp(48px,10vw,120px);font-weight:700;line-height:.9;display:flex;transform:rotate(-3deg)}.logo span:last-child{color:var(--cyan)}.title-pixel{z-index:1;height:28vh;animation:2.4s ease-in-out infinite bob}.title .btn.go{z-index:1}.floater{opacity:.85;width:14vh;animation:7s ease-in-out infinite drift;position:absolute}.f1{top:14%;left:6%}.f2{animation-delay:-2s;top:18%;right:8%}.f3{animation-delay:-4s;bottom:12%;left:10%}.f4{animation-delay:-1s;bottom:14%;right:12%}.f5{width:10vh;animation-delay:-3s;top:4%;left:30%}@keyframes bob{50%{transform:translateY(-12px)}}@keyframes drift{0%,to{transform:translate(0)rotate(-6deg)}50%{transform:translate(14px,-20px)rotate(6deg)}}.mentor{align-items:flex-end;gap:8px;display:flex}.pixel-img{flex:none;width:90px;animation:2.4s ease-in-out infinite bob}.mentor.big .pixel-img{width:clamp(110px,18vh,200px)}.bubble-wrap{flex:1;position:relative}.bubble{--bubble-bg:#fff;background:var(--bubble-bg);border:4px solid var(--ink);box-shadow:var(--shadow);border-radius:24px;min-height:60px;padding:14px 18px;font-size:clamp(18px,2.3vw,26px);line-height:1.3;position:relative}.mentor.big .bubble{font-size:clamp(20px,2.8vw,32px)}.bubble:before,.bubble:after{content:"";border-style:solid;border-color:#0000;width:0;height:0;position:absolute}.bubble:before{border-width:12px 18px 12px 0;border-right-color:var(--ink);bottom:14px;left:-22px}.bubble:after{border-width:9px 15px 9px 0;border-right-color:var(--bubble-bg);bottom:17px;left:-15px}.bubble.pop{animation:.25s ease-out pop}.speak{background:var(--yellow);position:absolute;top:-18px;right:-10px}@keyframes pop{0%{transform:scale(.92)}60%{transform:scale(1.03)}}.naming{justify-content:center;gap:4vh;padding-left:6vw;padding-right:6vw}.name-box{flex-direction:column;align-items:center;gap:18px;display:flex}.name-input{text-align:center;border:4px solid var(--ink);width:min(480px,80vw);color:var(--ink);-webkit-user-select:text;user-select:text;border-radius:24px;padding:10px 20px;font-family:inherit;font-size:40px}.chips{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}.chip{border:3px solid var(--ink);background:var(--yellow);border-radius:30px;min-height:52px;padding:6px 22px;font-size:24px;font-weight:600}.map-body{flex:1;justify-content:center;align-items:center;gap:4vw;min-height:0;display:flex}.map-body .mentor{max-width:40vw}.body-figure{aspect-ratio:2/3;height:100%;max-height:82vh;position:relative}.body-svg{width:100%;height:100%}.zone{cursor:pointer;background:0 0;border:none;align-items:center;gap:8px;padding:0;display:flex;position:absolute;transform:translate(-50%,-50%)}.zone-dot{border:5px solid var(--ink);background:var(--cyan);color:#fff;border-radius:50%;place-items:center;width:64px;height:64px;font-size:30px;font-weight:700;animation:1.8s infinite pulse;display:grid;box-shadow:0 0 #4cc9f0b3}.zone-dot .icon{font-size:26px}.zone-name{white-space:nowrap;border:3px solid var(--ink);background:#fff;border-radius:16px;flex-direction:column;padding:4px 12px;font-size:20px;font-weight:600;line-height:1.1;display:flex;position:absolute;left:72px}.zone-name small{color:#b8860b;font-size:15px}.zone.done .zone-dot{background:var(--green);animation:none}.zone.locked .zone-dot,.zone.future .zone-dot{background:#9a8c98;animation:none}.zone.future .zone-dot{opacity:.6;border-width:4px;width:40px;height:40px}.zone.future .zone-dot .icon{font-size:18px}.zone.future{pointer-events:none}@keyframes pulse{70%{box-shadow:0 0 0 18px #4cc9f000}to{box-shadow:0 0 #4cc9f000}}.level-grid{flex:1;grid-template-columns:repeat(3,1fr);align-content:center;gap:3vh 3vw;padding:3vh 6vw;display:grid}.level-btn{border:5px solid var(--ink);box-shadow:var(--shadow);cursor:pointer;background:#fff;border-radius:30px;flex-direction:column;align-items:center;gap:6px;padding:18px 10px 14px;display:flex;position:relative}.level-btn:active{transform:translateY(4px)}.level-num{background:var(--cyan);color:#fff;border:4px solid var(--ink);border-radius:50%;place-items:center;width:72px;height:72px;font-size:40px;font-weight:700;display:grid}.level-num .icon{font-size:32px}.level-name{text-align:center;font-size:clamp(16px,2vw,22px);font-weight:600}.level-stars{gap:4px;font-size:32px;display:flex}.star{color:#e5dccf}.star.on{color:var(--yellow)}.level-btn.locked{opacity:.55}.level-btn.locked .level-num{background:#9a8c98}.boss-tag{background:var(--purple);color:#fff;border:3px solid var(--ink);border-radius:14px;padding:2px 12px;font-size:18px;position:absolute;top:-14px;right:-8px;transform:rotate(8deg)}.briefing{align-items:center;gap:2vh}.brief-body{flex:1;align-items:center;gap:3vw;width:100%;min-height:0;display:flex}.brief-body .mentor{flex:1.4}.brief-side{flex-direction:column;flex:1;align-items:stretch;gap:16px;display:flex}.intro-card{border:4px solid var(--ink);box-shadow:var(--shadow);cursor:pointer;background:#fff;border-radius:24px;align-items:center;gap:14px;padding:14px;font-size:24px;font-weight:600;display:flex;position:relative}.intro-img{object-fit:contain;width:96px;height:96px}.intro-icon{font-size:80px}.block-icon{background:var(--cyan);border:4px solid var(--ink);border-radius:18px;padding:6px}.new-tag{background:var(--red);color:#fff;border:3px solid var(--ink);border-radius:12px;padding:2px 12px;font-size:18px;position:absolute;top:-16px;left:14px}.goals{border:4px solid var(--ink);background:#ffffffd9;border-radius:22px;flex-direction:column;gap:8px;padding:12px 14px;display:flex}.goal{align-items:center;gap:8px;font-size:19px;display:flex}.goal .icon{flex:none;font-size:30px}.play{padding:0}.play-main{flex:1;min-height:0;display:flex}body.left-handed .play-main{flex-direction:row-reverse}.board-wrap{min-width:0;padding:calc(8px + var(--safe-t)) 8px calc(8px + var(--safe-b)) calc(8px + var(--safe-l));flex:1.55;display:flex;position:relative}.board{top:calc(62px + var(--safe-t));bottom:calc(8px + var(--safe-b));left:calc(8px + var(--safe-l));position:absolute;right:8px;overflow:hidden}.board canvas{box-shadow:0 8px 0 #1d35574d, 0 0 0 4px var(--ink);touch-action:none;border-radius:18px}.hud{z-index:2;top:calc(10px + var(--safe-t));pointer-events:none;gap:8px;display:flex;position:absolute;left:50%;transform:translate(-50%)}.hud-item{border:3px solid var(--ink);background:#ffffffeb;border-radius:18px;align-items:center;gap:6px;padding:2px 12px;font-size:20px;display:flex}.hud-item .icon{font-size:26px}.hud-virus{width:28px;height:28px}.hud-label{font-size:15px}.replay-tag{background:var(--yellow)}.banner{color:#fff;-webkit-text-stroke:3px var(--ink);text-shadow:0 5px 0 var(--ink);pointer-events:none;font-size:56px;font-weight:700;animation:1.6s ease-out forwards banner;position:absolute;top:40%;left:50%;transform:translate(-50%,-50%)}@keyframes banner{0%{opacity:0;transform:translate(-50%,-50%)scale(.3)}20%{opacity:1;transform:translate(-50%,-50%)scale(1.1)}80%{opacity:1}to{opacity:0;transform:translate(-50%,-80%)scale(1)}}.panel{background:var(--panel);border-left:5px solid var(--ink);min-width:320px;max-width:400px;padding:calc(10px + var(--safe-t)) calc(12px + var(--safe-r)) calc(10px + var(--safe-b)) 12px;flex-direction:column;flex:1;gap:10px;display:flex;overflow:hidden}body.left-handed .panel{border-left:none;border-right:5px solid var(--ink);padding-left:calc(12px + var(--safe-l))}.panel-top{align-items:center;gap:8px;display:flex}.panel-title{flex:1;font-size:20px;line-height:1.1}.panel-body{flex-direction:column;flex:1;gap:12px;min-height:0;padding:4px 2px;display:flex;overflow-y:auto}.section{flex-direction:column;gap:8px;display:flex}.section-title{color:var(--ink-soft);font-size:19px;font-weight:600}.tip{color:var(--ink-soft);align-items:center;gap:8px;margin:0;font-size:17px;display:flex}.tip .icon{flex:none;font-size:28px}.bot-palette{gap:10px;display:flex}.bot-card{border:4px solid var(--ink);width:110px;box-shadow:var(--shadow);cursor:pointer;background:#fff;border-radius:20px;flex-direction:column;align-items:center;padding:6px;display:flex;position:relative}.bot-card img{width:72px;height:72px}.bot-card.on{outline:4px solid var(--cyan);background:#d7f3fc}.bot-card.empty{opacity:.5}.bot-name{font-size:17px;font-weight:600}.bot-count{background:var(--yellow);border:3px solid var(--ink);border-radius:14px;padding:0 8px;font-size:20px;font-weight:700;position:absolute;top:-10px;right:-10px}.cards{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.card{border:4px solid var(--ink);box-shadow:var(--shadow);cursor:pointer;background:#fff;border-radius:18px;flex-direction:column;align-items:center;gap:4px;min-height:96px;padding:8px 4px;font-size:15px;font-weight:600;display:flex}.card .icon{font-size:52px}.card.on{background:var(--yellow);transform:translateY(-4px)rotate(-2deg)}.btn.remove{align-self:flex-start}.slot-list{flex-wrap:wrap;gap:10px;display:flex}.slot-item{border:4px solid var(--ink);box-shadow:var(--shadow);cursor:pointer;background:#fff;border-radius:20px;align-items:center;gap:4px;padding:6px 10px;display:flex;position:relative}.slot-item img{width:54px;height:54px}.slot-card{font-size:44px}.slot-num{background:var(--ink);color:#fff;border-radius:50%;place-items:center;width:30px;height:30px;font-weight:700;display:grid;position:absolute;top:-10px;left:-10px}.controls{flex-direction:column;align-items:stretch;gap:10px;display:flex}.play-btn{width:100%}.run-row{justify-content:space-between;gap:6px;display:flex}.stop-square{background:var(--red);border-radius:5px;width:22px;height:22px;display:block}.fever-btn{z-index:3;right:16px;top:calc(6px + var(--safe-t));pointer-events:auto;background:#ffe8d6;min-height:52px;padding:4px 12px;position:absolute}.fever-btn.active{background:#ff9f43;animation:1s infinite pulse}.fever-btn .icon{font-size:40px}.fever-btn.used{opacity:.5}.fever-pips,.budget{align-items:center;gap:5px;display:flex}.pip{border:3px solid var(--ink);background:#fff;border-radius:50%;width:16px;height:16px}.pip.on{background:var(--red)}.budget .pip.on{background:var(--cyan)}.budget-num{margin-left:4px;font-weight:700}.hint-slot:empty{display:none}.hint{position:relative}.hint .pixel-img{width:64px}.hint .bubble{--bubble-bg:#fffbe0;padding:10px 14px;font-size:18px}.hint .close{position:absolute;bottom:-10px;right:-6px}.hint .speak{display:none}.editor{flex-direction:column;gap:8px;display:flex}.editor.locked .palette-row{opacity:.4;pointer-events:none}.editor-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.scout-tag{color:var(--ink-soft);font-size:19px;font-weight:600}.strip-wrap{border:4px dashed var(--cyan);background:#e9f7fc;border-radius:20px;align-items:flex-start;gap:6px;min-height:96px;padding:8px;display:flex}.start-flag{background:var(--green);color:#fff;border:3px solid var(--ink);border-radius:14px 30px 30px 14px;flex:none;place-items:center;width:44px;height:72px;font-size:24px;display:grid}.strip{flex-wrap:wrap;flex:1;align-items:center;gap:8px;min-height:72px;display:flex}.strip-empty{color:var(--ink-soft);align-items:center;gap:8px;font-size:17px;display:flex}.strip-empty .icon{font-size:32px}.sblock,.pblock{border:4px solid var(--ink);cursor:grab;touch-action:none;border-radius:16px;place-items:center;width:72px;height:72px;display:grid;position:relative;box-shadow:0 4px #1d35574d}.sblock .icon,.pblock .icon{font-size:48px}.b-move{background:#4cc9f0}.b-wait{background:#ffd166}.b-action{background:#ff8fab}.b-loop{background:#ff9f1c}.sblock.selected{outline:5px solid var(--yellow);transform:translateY(-4px)}.sblock.running{outline:6px solid #fff;transform:scale(1.08);box-shadow:0 0 0 10px #ffffff80,0 0 24px #fff}.sblock.dragging{opacity:.3}.sblock.insert-before{margin-left:22px}.sblock.insert-before:before,.sblock.insert-after:after{content:"";background:var(--green);border-radius:3px;width:6px;position:absolute;top:0;bottom:0}.sblock.insert-before:before{left:-18px}.sblock.insert-after{margin-right:22px}.sblock.insert-after:after{right:-18px}.sblock.ghost{z-index:100;pointer-events:none;position:fixed;transform:translate(-50%,-50%)scale(1.1)rotate(-4deg)}.count{border:3px solid var(--ink);background:#fff;border-radius:12px;padding:0 6px;font-size:18px;font-weight:700;position:absolute;bottom:-10px;right:-10px}.block-tools{justify-content:center;align-items:center;gap:8px;min-height:0;display:flex}.block-tools:empty{display:none}.tool{border:3px solid var(--ink);background:#fff;border-radius:14px;place-items:center;width:52px;height:52px;font-size:28px;display:grid;box-shadow:0 3px #1d35574d}.tool .icon{font-size:28px}.tool:disabled{opacity:.3}.tool-count{text-align:center;min-width:40px;font-size:24px;font-weight:700}.palette-row{align-items:stretch;gap:8px;display:flex}.palette{background:#1d35570f;border-radius:18px;flex-wrap:wrap;flex:1;gap:8px;padding:8px;display:flex}.palette.full .pblock{filter:grayscale(.8);opacity:.6}.bin{color:#9a8c98;border:4px dashed #9a8c98;border-radius:18px;flex:none;place-items:center;width:64px;font-size:36px;display:grid}.bin.hot{color:var(--red);border-color:var(--red);background:#ffe5e8;transform:scale(1.1)}.overlay{z-index:20;background:#2b16338c;place-items:center;padding:16px;display:grid;position:absolute;inset:0}.overlay.hidden{display:none}.overlay-card{background:var(--cream);border:5px solid var(--ink);border-radius:34px;flex-direction:column;align-items:center;gap:12px;max-width:min(760px,96vw);max-height:96vh;padding:18px 28px 22px;animation:.3s ease-out pop;display:flex;overflow-y:auto;box-shadow:0 10px #1d355759}.overlay-card h2{margin:0;font-size:44px}.overlay-card p{margin:0;font-size:22px}.stars{gap:18px;display:flex}.big-star{color:#e5dccf;font-size:84px}.big-star.on.pop{color:var(--yellow);animation:.45s ease-out starpop}.big-star.s1{transform:translateY(-14px)}@keyframes starpop{0%{transform:scale(.2)rotate(-40deg)}70%{transform:scale(1.3)rotate(10deg)}}.star-labels{gap:18px;display:flex}.star-label{text-align:center;flex-direction:column;align-items:center;width:120px;font-size:15px;display:flex}.star-label .icon{font-size:30px}.fact{border:4px solid var(--cyan);background:#e9f7fc;border-radius:22px;width:100%;padding:10px 14px}.fact-title{color:var(--ink-soft);margin-bottom:4px;font-size:18px;font-weight:700}.fact .pixel-img{width:70px}.fact .bubble{font-size:19px}.world-done{background:var(--green);color:#fff;border:4px solid var(--ink);border-radius:18px;padding:6px 18px;font-size:24px;font-weight:700}.overlay-buttons{flex-wrap:wrap;justify-content:center;align-items:center;gap:12px;display:flex}.lose-img{width:120px;animation:2s ease-in-out infinite bob}.settings-body{flex-direction:column;flex:1;gap:12px;padding:2vh 8vw;display:flex;overflow-y:auto}.settings-body h3{color:#fff;text-shadow:0 2px 0 var(--ink);margin:10px 0 0;font-size:26px}.toggles,.speed-row{flex-wrap:wrap;gap:12px;display:flex}.toggle{border:4px solid var(--ink);opacity:.7;background:#ddd;border-radius:22px;align-items:center;gap:10px;min-height:64px;padding:8px 20px;font-size:22px;font-weight:600;display:flex}.toggle .icon{font-size:32px}.toggle.on{opacity:1;outline:4px solid var(--green);background:#fff}.parent-input{border:4px solid var(--ink);-webkit-user-select:text;user-select:text;border-radius:18px;width:220px;padding:8px 16px;font-family:inherit;font-size:26px}.parent{border:4px solid var(--ink);background:#ffffffe6;border-radius:20px;flex-direction:column;align-items:flex-start;gap:10px;padding:14px;display:flex}.parent.hidden{display:none}.parent-row{align-items:center;gap:8px;font-size:20px;display:flex}.parent-row input{width:28px;height:28px}.view-toggle{display:none}@media (height<=520px),(width<=760px){:root{--tap:48px}.btn.big{min-height:58px;padding:6px 20px;font-size:24px}.panel{z-index:5;border-left:none;max-width:none;display:none;position:absolute;inset:0}.play.show-panel .panel{display:flex}.controls{padding-right:70px}.hud-label{display:none}.view-toggle{right:calc(10px + var(--safe-r));bottom:calc(10px + var(--safe-b));z-index:10;background:var(--yellow);padding:6px 12px;display:flex;position:absolute}.view-toggle .icon:nth-child(2){display:none}.play.show-panel .view-toggle .icon:first-child{display:inline-block}.play:not(.show-panel) .view-toggle .icon:first-child{display:none}.play:not(.show-panel) .view-toggle .icon:nth-child(2){display:inline-block}.level-grid{gap:12px;padding:8px 4vw}.level-num{width:52px;height:52px;font-size:28px}.mentor.big .pixel-img{width:90px}.goal{font-size:15px}.brief-body{gap:12px}.bubble,.mentor.big .bubble{font-size:17px}.overlay-card{gap:6px;padding:10px 14px}.overlay-card h2{font-size:30px}.big-star{font-size:54px}.fact .pixel-img{width:50px}.fact .bubble{font-size:15px}}#rotate{display:none}@media (orientation:portrait) and (width<=1100px){#rotate{z-index:1000;color:#fff;background:#2b1633;flex-direction:column;justify-content:center;align-items:center;gap:24px;font-family:Fredoka,sans-serif;font-size:30px;display:flex;position:fixed;inset:0}.rotate-phone{border:8px solid #fff;border-radius:18px;width:90px;height:150px;animation:2s ease-in-out infinite turn}}@keyframes turn{0%,30%{transform:rotate(0)}60%,to{transform:rotate(-90deg)}}.loading{text-align:center;gap:2.5vh}.loading-bot{z-index:1;font-size:18vh;animation:1.6s ease-in-out infinite bob}.loading-msg{color:#fff;text-shadow:0 3px 0 var(--ink);max-width:80vw;margin:0;font-size:clamp(20px,3vw,32px);font-weight:700}.loading-bar{border:4px solid var(--ink);background:var(--cream);width:min(70vw,560px);height:34px;box-shadow:var(--shadow);border-radius:999px;overflow:hidden}.loading-fill{background:repeating-linear-gradient(-45deg, var(--cyan) 0 16px, #7fdcf7 16px 32px);background-size:45px 45px;border-radius:999px;width:0;height:100%;transition:width .3s;animation:.8s linear infinite loading-stripes}@keyframes loading-stripes{to{background-position:45px 0}}.loading-pct{color:var(--ink);font-size:clamp(18px,2.4vw,26px);font-weight:700}.loading-hint{min-height:1.2em;color:var(--ink);margin:0;font-size:clamp(16px,2vw,22px)}.loading-actions{gap:16px;display:flex}
