:root{--ink: #302d3b;--cream: #fff5df;--paper: #fbe9c8;--coral: #f27868;--teal: #43b7a9;--gold: #f5c75e;--sky: #8dcde0;--lav: #ada0d8;--font: ui-rounded, "Segoe UI Rounded", "Arial Rounded MT Bold", "Nunito", "Trebuchet MS", system-ui, "PingFang SC", "Hiragino Sans", "Yu Gothic UI", "Malgun Gothic", "Microsoft YaHei", sans-serif}*{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--cream);color:var(--ink);font-family:var(--font);overflow:hidden}body{background:radial-gradient(circle at 50% 0%,#fffaf0 0%,var(--cream) 55%,#f7e3bd 100%)}#app{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center}button{font:inherit;color:inherit}.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.fx{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none;z-index:0}.fx i{position:absolute;display:block;color:var(--c);opacity:.2}.fx svg{display:block;width:100%;height:100%;fill:currentColor;fill-opacity:.28;stroke:currentColor;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}.fx .brain{left:var(--x);top:var(--y);width:var(--s);height:var(--s);animation:fx-bob var(--t) ease-in-out var(--d) infinite}.fx .twinkle{left:var(--x);top:var(--y);width:var(--s);height:var(--s);animation:fx-twinkle var(--t) ease-in-out var(--d) infinite}.fx .rocket{left:0;top:0;width:var(--s);height:var(--s);animation:fx-fly var(--t) linear var(--d) infinite}.fx .rocket:before{content:"";position:absolute;left:50%;top:50%;width:150px;height:5px;transform-origin:0 50%;rotate:135deg;background:repeating-linear-gradient(90deg,currentColor 0 9px,transparent 9px 19px);-webkit-mask-image:linear-gradient(90deg,#000,transparent);mask-image:linear-gradient(90deg,#000,transparent)}@keyframes fx-bob{0%,to{translate:0 0;rotate:-4deg}50%{translate:0 -18px;rotate:5deg}}@keyframes fx-twinkle{0%,to{opacity:.08;scale:.7}50%{opacity:.4;scale:1.15}}@keyframes fx-fly{0%{translate:-14vw var(--y0, 110vh)}to{translate:114vw var(--y1, -20vh)}}.fx.calm i{animation:none}.fx.calm .rocket{display:none}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:10px 20px;border:3px solid var(--ink);border-radius:18px;background:#fff;font-weight:800;font-size:17px;cursor:pointer;box-shadow:0 4px 0 var(--ink);transition:transform 90ms ease-out,box-shadow 90ms ease-out,background .12s;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.btn svg{flex:none;width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}.btn:hover{background:#fffaf0}.btn:active{transform:translateY(3px);box-shadow:0 1px 0 var(--ink)}.btn:focus-visible{outline:4px solid var(--sky);outline-offset:3px}.btn:disabled{opacity:.45;cursor:default;transform:none;box-shadow:0 4px 0 var(--ink)}.btn.primary{background:var(--coral);color:#fff}.btn.primary:hover{background:#f4887a}.btn.danger{background:#fde1dc}.btn.big{min-height:64px;font-size:24px;padding:12px 40px;border-radius:24px}.btn.small{min-height:40px;font-size:15px;padding:6px 14px}.btn.icon{padding:8px;min-width:48px}.btn.icon span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.screen{position:absolute;z-index:1;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;animation:screen-in .3s ease-out;padding:env(safe-area-inset-top) 0 env(safe-area-inset-bottom)}.screen.leaving{animation:screen-out .28s ease-in forwards;pointer-events:none}@keyframes screen-in{0%{opacity:0;transform:translateY(10px)}}@keyframes screen-out{to{opacity:0}}.title{justify-content:safe center;gap:clamp(10px,2vh,18px);padding:16px;overflow-y:auto}.title>*{flex-shrink:0}.logo{width:min(560px,92vw,max(170px,calc((100dvh - 440px)*1.476)));aspect-ratio:1332 / 902;display:grid;place-items:center;animation:logo-bob 4s ease-in-out infinite}.logo img{width:100%;height:100%;object-fit:contain}.logo-text{font-size:56px;font-weight:900;color:var(--coral);-webkit-text-stroke:3px var(--ink)}@keyframes logo-bob{50%{transform:translateY(-6px) rotate(-1deg)}}.tagline{margin:-6px 0 0;font-size:18px;font-weight:700;opacity:.75;text-align:center}.progress{display:flex;flex-direction:column;align-items:center;gap:6px;font-weight:800}.progress .bar{width:220px;height:14px;border:3px solid var(--ink);border-radius:10px;background:#fff;overflow:hidden}.progress .bar i{display:block;height:100%;background:var(--teal)}.menu{display:flex;flex-direction:column;gap:14px;align-items:stretch;width:min(320px,86vw)}.select{padding:16px;gap:12px}.bar-top{width:min(640px,100%);display:flex;align-items:center;gap:12px}.bar-top h2{margin:0;flex:1;font-size:26px}.bar-top .count{font-weight:800;opacity:.7}.grid{width:min(640px,100%);display:grid;grid-template-columns:repeat(5,1fr);gap:10px;overflow-y:auto;padding:4px 4px 16px}.tile{position:relative;aspect-ratio:1;border:3px solid var(--ink);border-radius:18px;background:#fff;font-size:24px;font-weight:900;cursor:pointer;box-shadow:0 4px 0 var(--ink);transition:transform 90ms}.tile:active{transform:translateY(3px);box-shadow:0 1px 0 var(--ink)}.tile:focus-visible{outline:4px solid var(--sky);outline-offset:2px}.tile.solved{background:#c9ece6}.tile.skipped{background:#fbe8b4}.tile.last{outline:3px dashed var(--coral);outline-offset:3px}.tile:disabled{opacity:.3;cursor:not-allowed}.tile svg{position:absolute;right:5px;bottom:5px;width:18px;height:18px;fill:none;stroke:var(--ink);stroke-width:3;stroke-linecap:round;stroke-linejoin:round}.stars{display:inline-flex;align-items:center;gap:3px;margin-left:10px;font-style:normal}.stars svg,.starline svg{width:18px;height:18px;fill:var(--gold);stroke:var(--ink);stroke-width:2.2;stroke-linejoin:round}.tile .star,.slot .star{position:absolute;right:3px;top:3px;width:15px;height:15px}.tile .star svg,.slot .star svg{position:static;width:15px;height:15px;fill:var(--gold);stroke:var(--ink);stroke-width:2.4}:root{--sticker-edge: drop-shadow(2px 0 0 #fff) drop-shadow(-2px 0 0 #fff) drop-shadow(0 2px 0 #fff) drop-shadow(0 -2px 0 #fff) drop-shadow(0 3px 4px rgba(48, 45, 59, .35))}.stk{position:relative;width:100%;aspect-ratio:1;overflow:hidden}.stk img{position:absolute;max-width:none;pointer-events:none;filter:var(--sticker-edge)}.stk svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;filter:var(--sticker-edge)}.stk.locked img,.stk.locked svg{filter:brightness(0);opacity:.12}.slot{position:relative;aspect-ratio:1;padding:6px;border:3px solid var(--ink);border-radius:18px;background:#fff;cursor:pointer;box-shadow:0 4px 0 var(--ink);transition:transform 90ms}.slot.have{background:repeating-linear-gradient(45deg,#fffaf0 0,#fffaf0 10px,#fff0cc 10px,#fff0cc 20px)}.slot:active{transform:translateY(3px);box-shadow:0 1px 0 var(--ink)}.slot:focus-visible{outline:4px solid var(--sky);outline-offset:2px}.slot .num{position:absolute;left:8px;bottom:4px;font-size:13px;font-weight:900;opacity:.55}.reward{display:flex;align-items:center;gap:14px;margin:0 0 12px}.reward .stk{width:104px;flex:none;rotate:-6deg;animation:sticker-pop .62s cubic-bezier(.34,1.56,.64,1) .18s both}.reward b{display:block;font-size:20px;color:var(--coral)}.starline{display:flex;align-items:center;gap:6px;margin-top:4px;font-weight:800}@keyframes sticker-pop{0%{transform:scale(0) rotate(-40deg);opacity:0}}.game{gap:0;width:100%}.hud{width:min(720px,100%);display:flex;align-items:center;gap:10px;padding:10px 12px 6px}.obj{flex:1;text-align:center;min-width:0}.obj small{font-weight:800;opacity:.6;font-size:13px;letter-spacing:.04em;text-transform:uppercase}.obj h2{margin:2px 0 0;font-size:clamp(17px,4.6vw,24px);line-height:1.15}.stage-wrap{position:relative;flex:1;width:100%;min-height:0;display:grid;place-items:center;padding:4px 8px}.stage-box{position:relative;border:3px solid var(--ink);border-radius:22px;overflow:hidden;box-shadow:0 6px #302d3b40;background:var(--paper)}#stage{position:absolute;left:0;top:0;transform-origin:0 0;touch-action:none;user-select:none;-webkit-user-select:none;overflow:hidden}.controls{display:flex;gap:8px;padding:8px 10px 14px;width:min(560px,100%)}.controls .btn{flex:1 1 auto;min-width:0;min-height:64px;flex-direction:column;gap:3px;padding:6px 4px;font-size:16px}.controls .btn span{line-height:1.1;text-align:center;white-space:nowrap}.toast{position:absolute;z-index:2;top:14px;left:50%;transform:translate(-50%,-12px);max-width:min(520px,88%);padding:10px 16px;border:3px solid var(--ink);border-radius:16px;background:#fff;font-weight:800;text-align:center;opacity:0;pointer-events:none;transition:opacity .18s,transform .22s cubic-bezier(.34,1.56,.64,1)}.toast.show{opacity:1;transform:translate(-50%)}.toast.wrong{background:#fde1dc}.hint-box{display:none;position:absolute;z-index:3;bottom:calc(var(--controls-height, 86px) + env(safe-area-inset-bottom) + 8px);width:min(560px,calc(100% - 24px));max-height:min(28vh,220px);overflow-y:auto;margin:0 12px;padding:8px 14px;border:3px solid var(--ink);border-radius:16px;background:#fff7d6;box-shadow:0 4px 14px #302d3b29;font-weight:700;font-size:15px;animation:pop-in .26s cubic-bezier(.34,1.56,.64,1)}.hint-box.show{display:flex;align-items:flex-start;gap:8px}.hint-copy{flex:1;min-width:0}.hint-close{flex:none;width:40px;min-width:40px!important;min-height:40px;padding:6px}.hint-box p{margin:3px 0}.modal{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;background:#302d3b59;z-index:10;padding:16px;animation:fade .2s ease-out}.modal .card{width:min(440px,100%);background:var(--cream);border:3px solid var(--ink);border-radius:26px;padding:22px 22px 18px;box-shadow:0 8px 0 var(--ink);animation:pop-in .32s cubic-bezier(.34,1.56,.64,1);max-height:100%;overflow:auto}.modal h2{margin:0 0 8px;font-size:28px;color:var(--coral);-webkit-text-stroke:.5px var(--ink)}.modal p{margin:0 0 14px;font-size:18px;line-height:1.4;font-weight:600}.modal.sheet{align-items:end;padding-bottom:5vh}.actions{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-top:8px}.set-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:2px dashed rgba(48,45,59,.2);font-weight:800}.card>.danger{margin-top:14px}.mini-grid{display:grid;grid-template-columns:repeat(10,1fr);gap:4px;margin-bottom:10px}.mini-grid i{font-style:normal;font-size:12px;font-weight:900;text-align:center;padding:4px 0;border:2px solid var(--ink);border-radius:6px;background:#fff}.mini-grid i.solved{background:#c9ece6}.mini-grid i.skipped{background:#fbe8b4}@keyframes fade{0%{opacity:0}}@keyframes pop-in{0%{transform:scale(.85);opacity:0}}.scene{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden}.scene *{position:absolute}.scene .backdrop{z-index:0;translate:calc(var(--px, 0) * -7px) calc(var(--py, 0) * -5px);scale:1.035;transition:translate .28s ease-out}.scene img{pointer-events:none;max-width:none}.sprite{z-index:2}.hot{cursor:pointer}.scene .vec:not(.hot){pointer-events:none}.hot:after{content:"";position:absolute;top:-12%;right:-12%;bottom:-12%;left:-12%}.grab{cursor:grab}.lifted{cursor:grabbing;z-index:50!important;scale:1.06;rotate:calc(-2deg + var(--tilt, 0deg));filter:drop-shadow(0 14px 10px rgba(48,45,59,.25));transition:scale .11s ease-out,rotate .11s ease-out}.pulling{filter:drop-shadow(0 6px 6px rgba(48,45,59,.25));scale:1.03}.hot:focus-visible{outline:4px dashed var(--sky);outline-offset:4px}.vec svg{position:static;display:block}.txt{white-space:nowrap}.dust{width:8px;height:8px;border-radius:50%;background:#fff;box-shadow:0 0 6px #fff;z-index:40;pointer-events:none}.ripple{border:3px solid rgba(255,255,255,.9);border-radius:50%;z-index:40;pointer-events:none}.confetti{z-index:61;pointer-events:none}.spark{width:16px;height:16px;border-radius:50%;z-index:60;pointer-events:none;border:2px solid var(--ink)}.float.heart{color:var(--coral);font-size:56px;width:56px;-webkit-text-stroke:2px var(--ink)}.theme-night .float:not(.heart),.theme-stage .float:not(.heart){color:#fff3b0;-webkit-text-stroke:1.5px rgba(30,24,50,.55)}.float{width:38px;text-align:center;font-weight:900;font-size:38px;z-index:60;pointer-events:none;color:var(--ink)}.sprite.ph{border:3px dashed var(--ink);border-radius:22px;background:repeating-linear-gradient(45deg,color-mix(in srgb,var(--ph) 55%,#fff) 0,color-mix(in srgb,var(--ph) 55%,#fff) 12px,color-mix(in srgb,var(--ph) 35%,#fff) 12px,color-mix(in srgb,var(--ph) 35%,#fff) 24px)}.ph-label{left:50%;top:50%;transform:translate(-50%,-50%);padding:2px 6px;border-radius:6px;background:#ffffffd9;font:700 13px/1.1 ui-monospace,Consolas,monospace;white-space:nowrap;pointer-events:none}.ph-label:before{content:"DEV ART · ";color:var(--coral)}.theme-park{background:linear-gradient(#bfe5ef 0,#bfe5ef 28%,#d9ea9c 28%)}.theme-room{background:linear-gradient(#f7e0bd 0,#f7e0bd 64%,#d9a978 64%,#d9a978 65%,#e9c08f 65%)}.theme-room:before{content:"";position:absolute;top:0;right:0;bottom:36%;left:0;background:repeating-linear-gradient(90deg,transparent 0 58px,rgba(242,120,104,.1) 58px 64px)}.theme-kitchen{background:linear-gradient(#e5f3ef 0,#e5f3ef 62%,#fff 62%)}.theme-kitchen:before{content:"";position:absolute;top:62%;right:0;bottom:0;left:0;background:conic-gradient(#e8d9c2 25%,#fff5df 0,#fff5df 50%,#e8d9c2 0,#e8d9c2 75%,#fff5df 0) 0 0 / 80px 80px}.theme-paper{background:#fffaf0 repeating-linear-gradient(transparent 0 38px,#d6e8f2 38px,#d6e8f2 40px)}.theme-paper:before{content:"";position:absolute;left:70px;top:0;bottom:0;width:3px;background:#f2786873}.theme-stage{background:radial-gradient(ellipse at 50% 30%,#6a4f86,#3e3253 70%)}.theme-lake{background:linear-gradient(#bfe5ef 0,#bfe5ef 48%,#9dd3a0 48%,#9dd3a0 56%,#6fbfd6 56%)}.theme-night{background:radial-gradient(circle at 50% 20%,#47557f,#262b45 75%)}.theme-shop{background:linear-gradient(#fbe3e0 0,#fbe3e0 66%,#c98f6a 66%,#c98f6a 67%,#e6b48e 67%)}.theme-library{background:linear-gradient(#e9dcc4 0,#e9dcc4 66%,#a8754f 66%,#a8754f 67%,#c99a6e 67%)}.theme-street{background:#bfe5ef}.theme-sun{background:linear-gradient(#ffe7a3 0,#ffe7a3 30%,#f3e2a0 30%)}.note{margin:-4px 0 0;min-height:22px;font-weight:800;color:var(--coral);text-align:center}.tile.locked{background:#efe6d2;border-color:#302d3b8c;box-shadow:0 4px #302d3b8c;cursor:not-allowed}.tile.locked b{opacity:.35}.tile.locked svg{stroke:#302d3b99;width:20px;height:20px}.slot.closed{opacity:.75;cursor:not-allowed}.slot>svg{position:absolute;right:6px;bottom:5px;width:18px;height:18px;fill:none;stroke:#302d3b99;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}.nope{animation:nope .28s ease-in-out}@keyframes nope{20%,60%{translate:-5px 0}40%,80%{translate:5px 0}}.lang-select{font:inherit;font-weight:800;font-size:15px;min-height:40px;max-width:210px;padding:6px 12px;border:3px solid var(--ink);border-radius:18px;background:#fff;color:var(--ink);box-shadow:0 4px 0 var(--ink);cursor:pointer}.lang-select:focus-visible{outline:4px solid var(--sky);outline-offset:3px}
