@font-face{font-family:"Press Start 2P";src:url(/fonts/PressStart2P-Regular.ttf) format("truetype");font-display:swap}@font-face{font-family:VT323;src:url(/fonts/VT323-Regular.ttf) format("truetype");font-display:swap}:root{--font-pixel: "Press Start 2P", "Courier New", monospace;--font-body: "VT323", "Courier New", monospace;--grass: #6abe30;--grass-dark: #4e8f2f;--dirt: #8a5a32;--stone: #8f8f8f;--stone-dark: #6e6e6e;--sky-top: #8fd3ff;--sky-bottom: #c8ecff;--panel: #3b2f23e0;--gold: #f8d33e;--danger: #e04848;--ok: #4fc04a}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%;margin:0;padding:0}body{font-family:var(--font-body);font-size:22px;color:#fff;background:linear-gradient(var(--sky-top),var(--sky-bottom));overflow:hidden;touch-action:manipulation;user-select:none;-webkit-user-select:none;overscroll-behavior:none}img.sprite{image-rendering:pixelated;display:inline-block;vertical-align:middle;pointer-events:none}.app{height:100%;display:flex;flex-direction:column;padding:max(8px,env(safe-area-inset-top)) max(10px,env(safe-area-inset-right)) max(8px,env(safe-area-inset-bottom)) max(10px,env(safe-area-inset-left))}.px-btn{font-family:var(--font-pixel);color:#fff;text-shadow:2px 2px 0 #00000080;border:3px solid #000;cursor:pointer;padding:14px 20px;display:inline-flex;align-items:center;justify-content:center;gap:12px;line-height:1.3;background-image:linear-gradient(#9c9c9c,#737373);box-shadow:inset 3px 3px #ffffff59,inset -3px -4px #00000042;transition:filter 80ms}.px-btn:active:not(:disabled){box-shadow:inset -3px -3px #ffffff30,inset 3px 4px #00000052;transform:translateY(2px);filter:brightness(1.08)}.px-btn:disabled{filter:grayscale(.7) brightness(.8);cursor:default}.px-btn--grass{background-image:linear-gradient(#8ee04a,#4e8f2f)}.px-btn--danger{background-image:linear-gradient(#f06a6a,#b03030)}.px-btn--wood{background-image:linear-gradient(#cf9f63,#8f6f43)}.px-btn--md{font-size:13px;min-height:56px;min-width:56px}.px-btn--lg{font-size:15px;min-height:72px}.px-btn--xl{font-size:18px;min-height:92px;padding:18px 30px}.px-btn--sprite{flex-direction:column;gap:8px;padding:14px}.px-btn--sprite-label{font-size:12px}.speak-btn{background:linear-gradient(#9c9c9c,#737373);border:3px solid #000;box-shadow:inset 3px 3px #ffffff59,inset -3px -4px #00000042;border-radius:0;padding:8px;cursor:pointer}.speak-btn:active{transform:translateY(2px)}.hud{display:flex;align-items:center;gap:12px;padding:6px 4px;min-height:64px}.hud-btn{background:linear-gradient(#9c9c9c,#737373);border:3px solid #000;box-shadow:inset 2px 2px #ffffff59,inset -2px -3px #00000042;padding:8px;cursor:pointer}.hud-btn:active{transform:translateY(2px)}.hud-title{font-family:var(--font-pixel);font-size:clamp(14px,3.4vw,22px);margin:0;text-shadow:3px 3px 0 #00000070;flex:1;text-align:center}.hud-profile{display:flex;align-items:center;gap:10px;flex:1;min-width:0}.hud-name{font-family:var(--font-pixel);font-size:14px;text-shadow:2px 2px 0 #00000070;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hud-right{display:flex;align-items:center;gap:10px;margin-left:auto}.hud-diamonds{display:flex;align-items:center;gap:6px;font-family:var(--font-pixel);font-size:15px;background:#0005;border:3px solid #000;padding:4px 10px;text-shadow:2px 2px 0 #00000080}.panel{background:var(--panel);border:4px solid #000;box-shadow:inset 3px 3px #ffffff18,inset -3px -4px #00000050;padding:16px}.page{flex:1;display:flex;flex-direction:column;min-height:0}.world-grid{flex:1;display:flex;align-items:center;justify-content:center;gap:clamp(14px,3vw,36px);flex-wrap:wrap;padding:8px}.world-card{display:flex;flex-direction:column;align-items:center;gap:10px;padding:18px 14px;min-width:clamp(150px,24vw,230px)}.world-card .world-icon{margin-bottom:4px}.world-card-title{font-family:var(--font-pixel);font-size:clamp(11px,2vw,15px);text-align:center;line-height:1.5;text-shadow:2px 2px 0 #00000070}.world-card-sub{font-size:20px;opacity:.85;text-align:center}.map-ground{height:clamp(40px,7vh,64px);background:repeating-linear-gradient(90deg,#6abe30 0 14px,#5fae2b 14px 28px),#6abe30;border-top:4px solid #8ee04a;box-shadow:0 -6px #4e8f2f}.game-list{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:12px;padding:4px 2px 12px;max-width:760px;width:100%;margin:0 auto}.game-row{display:flex;align-items:center;gap:16px;padding:10px 16px}.game-row-info{flex:1;display:flex;flex-direction:column;gap:4px;min-width:0}.game-row-title{font-family:var(--font-pixel);font-size:13px;text-shadow:2px 2px 0 #00000070}.game-row-tag{font-size:21px;opacity:.9}.game-row-meta{display:flex;align-items:center;gap:10px}.level-badge{font-family:var(--font-pixel);font-size:11px;background:#0006;border:2px solid #000;padding:6px 8px}.game-row.locked{filter:grayscale(.8) brightness(.75)}.game-stage{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:clamp(10px,2.6vh,22px);min-height:0;padding:6px}.game-instruction{display:flex;align-items:center;gap:14px;max-width:92vw}.game-instruction-text{font-family:var(--font-pixel);font-size:clamp(12px,2.6vw,17px);line-height:1.6;text-shadow:2px 2px 0 #00000070;text-align:center}.dots{display:flex;gap:8px;padding:6px 0}.dot{width:14px;height:14px;background:#0005;border:2px solid #000}.dot-done{background:var(--ok)}.dot-wrong{background:var(--danger)}.answer-grid{display:flex;flex-wrap:wrap;gap:clamp(10px,2vw,20px);justify-content:center;padding:8px}.answer-tile{font-family:var(--font-pixel);font-size:clamp(18px,4vw,28px);min-width:clamp(70px,12vw,110px);min-height:clamp(70px,12vw,110px);color:#fff;text-shadow:2px 2px 0 #00000080;background-image:linear-gradient(#b5b5b5,#7d7d7d);border:3px solid #000;box-shadow:inset 3px 3px #ffffff59,inset -3px -4px #00000042;display:flex;align-items:center;justify-content:center;cursor:pointer}.answer-tile.correct{background-image:linear-gradient(#8ee04a,#4e8f2f);animation:pop .3s}.answer-tile.wrong{animation:shake .4s}.answer-tile.hint{animation:hint-glow 1s infinite}@keyframes pop{0%{transform:scale(1)}50%{transform:scale(1.14)}to{transform:scale(1)}}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-8px)}50%{transform:translate(8px)}75%{transform:translate(-5px)}}@keyframes hint-glow{0%,to{filter:brightness(1)}50%{filter:brightness(1.6)}}.star-screen{display:flex;flex-direction:column;align-items:center;gap:18px}.star-row{display:flex;gap:10px}.star-on{filter:none}.star-off{filter:brightness(.35) saturate(.3)}.reward-chip{display:flex;align-items:center;gap:8px;font-family:var(--font-pixel);font-size:13px;background:#0005;border:3px solid #000;padding:8px 12px}.confetti-layer{position:fixed;inset:0;pointer-events:none;overflow:hidden}.confetti-piece{position:absolute;width:12px;height:12px;animation:confetti-fall linear forwards}@keyframes confetti-fall{0%{transform:translateY(-30px) rotate(0);opacity:1}to{transform:translateY(105vh) rotate(720deg);opacity:.7}}.onboarding{align-items:center;justify-content:center;gap:24px;display:flex;flex-direction:column;flex:1}.avatar-grid{display:flex;flex-wrap:wrap;gap:14px;justify-content:center;max-width:560px}.avatar-card{background-image:linear-gradient(#9c9c9c,#737373);border:3px solid #000;box-shadow:inset 3px 3px #ffffff59,inset -3px -4px #00000042;padding:12px;cursor:pointer}.avatar-card.selected{background-image:linear-gradient(#8ee04a,#4e8f2f);outline:4px solid var(--gold)}.name-input{font-family:var(--font-pixel);font-size:18px;padding:14px;color:#fff;background:#0006;border:3px solid #000;box-shadow:inset 3px 3px #00000040;text-align:center;width:min(420px,80vw)}.name-input::placeholder{color:#ffffff90;font-size:14px}.modal-overlay{position:fixed;inset:0;background:#000000b0;display:flex;align-items:center;justify-content:center;z-index:50;padding:12px}.modal-body{background:#2b2118;border:4px solid #000;box-shadow:inset 3px 3px #ffffff18,inset -3px -4px #00000050;padding:18px;max-width:min(700px,94vw);max-height:88vh;overflow-y:auto;width:100%}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%);background:#2b2118;border:3px solid #000;font-family:var(--font-pixel);font-size:12px;padding:12px 18px;z-index:80;animation:toast-in .2s}@keyframes toast-in{0%{transform:translate(-50%,20px);opacity:0}to{transform:translate(-50%);opacity:1}}.parent-section{margin-bottom:18px}.parent-section h3{font-family:var(--font-pixel);font-size:13px;margin:0 0 10px;color:var(--gold)}.parent-row{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:2px solid #ffffff14;font-size:21px}.parent-row .bar{flex:1}.progressbar{height:18px;background:#0006;border:2px solid #000;flex:1}.progressbar-fill{height:100%;transition:width .3s}.toggle-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:10px 0;border-bottom:2px solid #ffffff14;font-size:22px}.gate-pad{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;max-width:320px;margin:12px auto}.gate-display{font-family:var(--font-pixel);font-size:20px;text-align:center;background:#0006;border:3px solid #000;padding:14px;margin-bottom:10px}.title-logo{font-family:var(--font-pixel);font-size:clamp(20px,5vw,40px);color:var(--gold);text-shadow:4px 4px 0 #00000080;text-align:center;line-height:1.4}.title-logo small{display:block;font-size:.45em;color:#fff;margin-top:10px}.slot-row{display:flex;gap:8px;justify-content:center;flex-wrap:wrap}.word-slot{width:clamp(44px,7vw,60px);height:clamp(44px,7vw,60px);display:flex;align-items:center;justify-content:center;font-family:var(--font-pixel);font-size:clamp(16px,3vw,22px);background:#0006;border:3px solid #000;box-shadow:inset 2px 2px #00000040;color:#fff;text-shadow:2px 2px 0 #00000080}.sentence-slot{width:auto;min-width:clamp(56px,9vw,84px);padding:0 10px;font-size:clamp(11px,2vw,15px)}.slot-filled{background:#4e8f2f}.slot-next{animation:hint-glow 1s infinite}.letter-tile{min-width:clamp(56px,9vw,76px);min-height:clamp(56px,9vw,76px)}.letter-tile.used{visibility:hidden}.word-tile{font-size:clamp(14px,2.6vw,20px);min-width:clamp(64px,10vw,100px)}.word-tile.used{visibility:hidden}.word-card-big{font-family:var(--font-pixel);font-size:clamp(26px,6vw,44px);background:#f5efdc;color:#3b2f23;border:4px solid #000;box-shadow:inset -4px -4px #d8cbb0,inset 4px 4px #fff;padding:18px 30px;text-transform:lowercase}.sight-word-big{font-family:var(--font-pixel);font-size:clamp(24px,5.5vw,40px);background:#2b6cb0;border:4px solid #000;box-shadow:inset 3px 3px #ffffff30,inset -3px -4px #00000040;padding:16px 28px;text-shadow:3px 3px 0 #00000070}.smash-row{display:flex;gap:clamp(10px,2.4vw,24px);justify-content:center;flex-wrap:wrap}.smash-hole{display:flex;flex-direction:column;align-items:center;gap:6px;background:#00000045;border:3px solid #000;box-shadow:inset 3px 3px #ffffff20;padding:14px 12px 10px;cursor:pointer;min-width:clamp(84px,14vw,130px)}.smash-hole:active{transform:translateY(3px)}.smash-hole.hint{animation:hint-glow 1s infinite}.smash-sign{font-family:var(--font-pixel);font-size:clamp(11px,2vw,15px);background:#b8945f;border:2px solid #000;padding:8px;color:#241a10;text-align:center;min-width:90%}.stack-visual{padding:14px 20px;max-width:min(92vw,640px)}.stack-groups{display:flex;align-items:center;gap:16px;justify-content:center;flex-wrap:wrap}.stack-op{font-family:var(--font-pixel);font-size:clamp(18px,3.6vw,26px);text-shadow:2px 2px 0 #00000070}.blocks-row{display:flex;flex-wrap:wrap;gap:6px;max-width:220px;justify-content:center}.block-cell{position:relative}.block-cell.crossed{filter:grayscale(1) brightness(.55)}.block-cell.crossed:after{content:"✕";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:30px;color:#ff5252;font-weight:700}.scales-wrap{display:flex;align-items:stretch;gap:clamp(10px,2vw,20px)}.pan{background:linear-gradient(#8f8f8f,#5f5f5f);border:3px solid #000;box-shadow:inset 3px 3px #ffffff40,inset -3px -4px #00000040;padding:16px;min-width:clamp(110px,18vw,180px);min-height:150px;cursor:pointer}.pan:active{transform:translateY(3px)}.pan.hint{animation:hint-glow 1s infinite}.pan-middle{display:flex;align-items:center;justify-content:center;min-width:clamp(80px,12vw,120px);min-height:150px}.pan-same-label{font-family:var(--font-pixel);font-size:14px;text-shadow:2px 2px 0 #00000070}.pan-stack{display:flex;flex-direction:column;gap:2px;align-items:center}.seq-row{display:flex;gap:10px}.seq-tile{width:clamp(64px,10vw,90px);height:clamp(64px,10vw,90px);display:flex;align-items:center;justify-content:center;font-family:var(--font-pixel);font-size:clamp(20px,4vw,30px);background-image:linear-gradient(#b5b5b5,#7d7d7d);border:3px solid #000;box-shadow:inset 3px 3px #ffffff59,inset -3px -4px #00000042;color:#fff;text-shadow:2px 2px 0 #00000080}.seq-tile.hole{background-image:linear-gradient(#f2d047,#d4a017);animation:hint-glow 1.2s infinite}.pattern-row{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;max-width:92vw}.pattern-cell{background:#00000045;border:3px solid #000;padding:8px}.pattern-hole{font-family:var(--font-pixel);font-size:28px;display:flex;align-items:center;justify-content:center;min-width:60px;min-height:60px;background:#0006;animation:hint-glow 1.2s infinite}.mem-grid{display:grid;gap:10px;justify-content:center;max-width:min(92vw,560px)}.mem-card{background:#2b2118;border:3px solid #000;box-shadow:inset 2px 2px #ffffff15;padding:8px;display:flex;align-items:center;justify-content:center;min-height:74px;cursor:pointer}.mem-card.matched{background:#2f5f24}.mem-card:active{transform:translateY(2px)}.sort-item{padding:20px 40px}.chest-btn{flex-direction:column;gap:8px;min-width:clamp(140px,24vw,220px)}.chest-label{display:flex;align-items:center;gap:8px;font-family:var(--font-pixel);font-size:clamp(11px,2vw,15px)}.circuit-wrap{display:flex;flex-direction:column;align-items:center;gap:12px}.circuit-grid{display:grid;gap:4px;align-items:center}.circuit-edge{display:flex;align-items:center;justify-content:center;min-width:48px}.circuit-edge.empty{visibility:hidden}.wire-cell{width:100%;aspect-ratio:1;background:#1d1a24;border:2px solid #000;position:relative;cursor:pointer;padding:0}.wire-cell.empty{background:#00000030;cursor:default}.wire-cell.wire-live{background:#3a2d16;box-shadow:0 0 12px #ffb83880}.wire-lines{position:absolute;inset:0;display:block}.wl{position:absolute;background:#e03030;box-shadow:0 0 3px #ff6a6a90}.wl-u{left:50%;top:0;width:7px;height:50%;transform:translate(-50%)}.wl-d{left:50%;bottom:0;width:7px;height:50%;transform:translate(-50%)}.wl-l{top:50%;left:0;height:7px;width:50%;transform:translateY(-50%)}.wl-r{top:50%;right:0;height:7px;width:50%;transform:translateY(-50%)}.wl-dot{position:absolute;left:50%;top:50%;width:11px;height:11px;background:#8f1010;transform:translate(-50%,-50%)}.maze-wrap{display:flex;gap:clamp(14px,3vw,34px);align-items:center;flex-wrap:wrap;justify-content:center}.maze-grid{display:grid;background:#d8cbb0;border:4px solid #000}.maze-cell{position:relative;aspect-ratio:1;background:#c9d7ff;display:flex;align-items:center;justify-content:center}.maze-cell.w-up{border-top:4px solid #3b2f23}.maze-cell.w-right{border-right:4px solid #3b2f23}.maze-cell.w-down{border-bottom:4px solid #3b2f23}.maze-cell.w-left{border-left:4px solid #3b2f23}.maze-miner{display:flex}.maze-bump{animation:shake .3s}.d-pad{display:grid;grid-template-columns:repeat(3,64px);grid-template-rows:repeat(2,64px);gap:8px}.d-btn{background:linear-gradient(#9c9c9c,#737373);border:3px solid #000;box-shadow:inset 3px 3px #ffffff59,inset -3px -4px #00000042;display:flex;align-items:center;justify-content:center;cursor:pointer}.d-btn:active{transform:translateY(2px)}@media(max-width:620px){body{font-size:19px}.world-grid{flex-direction:column;flex-wrap:nowrap;justify-content:flex-start;align-items:stretch;overflow-y:auto;gap:10px}.world-card{flex-direction:row;justify-content:flex-start;flex-wrap:wrap;min-width:0;padding:10px 14px;gap:14px}.world-card .world-icon{width:64px;height:64px;margin:0}.map-extras{gap:8px}.map-extra{flex:1 1 140px;justify-content:center;flex-wrap:wrap;padding:8px}.maze-wrap{flex-direction:column}}.map-extras{display:flex;justify-content:center;gap:16px;flex-wrap:wrap;padding:8px}.map-extra{display:flex;align-items:center;gap:10px;font-family:var(--font-pixel);font-size:12px}.map-extra-sub{font-family:var(--font-body);font-size:20px;opacity:.85}.adv-summary{font-family:var(--font-pixel);font-size:14px;text-align:center;padding:4px;text-shadow:2px 2px 0 #00000070}.adv-list{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:10px;padding:4px 2px 12px;max-width:760px;width:100%;margin:0 auto}.adv-row{display:flex;align-items:center;gap:14px;padding:10px 14px;text-align:left;color:inherit;font:inherit;cursor:pointer}.adv-locked{opacity:.75}.adv-earned{background:#4a3d1ae0;border-color:var(--gold)}.adv-icon{flex:none}.adv-info{flex:1;display:flex;flex-direction:column;gap:6px;min-width:0}.adv-title{font-family:var(--font-pixel);font-size:13px;text-shadow:2px 2px 0 #00000070}.adv-desc{font-size:21px}.adv-new{border-color:var(--gold);animation:toast-in .4s}.build-stats{display:flex;align-items:center;justify-content:center;gap:14px;flex-wrap:wrap;min-height:44px}.build-hint{font-family:var(--font-pixel);font-size:11px;background:#2b2118;border:3px solid #000;padding:8px 12px;line-height:1.5}.build-area{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;gap:16px;padding:8px;flex-wrap:wrap;overflow-y:auto}.plot{display:grid;width:min(92vw,560px);border:4px solid #000;background:linear-gradient(var(--sky-top),var(--sky-bottom))}.plot-cell{aspect-ratio:1;padding:0;border:1px solid #ffffff30;background:transparent;cursor:pointer;display:flex}.plot-cell:active{background:#ffffff40}.plot-ground{background:#6abe3040}.plot-sprite{width:100%;height:100%}.palette{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;align-items:center;width:min(92vw,320px)}.palette-item{position:relative;width:60px;height:60px;padding:4px;background:#0005;border:3px solid #000;cursor:pointer}.palette-selected{border-color:var(--gold);background:#f8d33e40}.palette-locked>img:first-child{filter:grayscale(1) brightness(.55)}.palette-lock{position:absolute;right:2px;bottom:2px}.game-fit{flex:1;min-height:0;width:100%;display:flex;align-items:center;justify-content:center}.game-fit-inner{width:fit-content;max-width:100%;display:flex;flex-direction:column;align-items:center;gap:clamp(10px,2.6vh,22px);transform-origin:center center}.build-shop{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:center}.build-shop .px-btn{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-pixel);font-size:11px}
