:root{--bg-1: #7c4dff;--bg-2: #b388ff;--bg-3: #e8d5ff;--piece-num-1: #4fc3f7;--piece-num-2: #29b6f6;--piece-op-1: #ffca28;--piece-op-2: #ffb300;--piece-group-1: #ff8a65;--piece-group-2: #ff7043;--piece-result-1: #66bb6a;--piece-result-2: #43a047;--text-dark: #1a237e;--white: #ffffff;--shadow-piece: 0 6px 0 rgba(0, 0, 0, .18), 0 10px 18px rgba(0, 0, 0, .15);--radius: 22px}*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent;user-select:none;-webkit-user-select:none;touch-action:manipulation}html,body{height:100%;overflow:hidden;overscroll-behavior:none}body{font-family:"Baloo 2",Comic Sans MS,Segoe UI,system-ui,sans-serif;background:linear-gradient(180deg,var(--bg-1) 0%,var(--bg-2) 55%,var(--bg-3) 100%);color:var(--white)}#app{height:100dvh;display:flex;flex-direction:column;position:relative;max-width:560px;margin:0 auto}.top-bar{display:flex;align-items:center;justify-content:space-between;padding:calc(env(safe-area-inset-top,0px) + 10px) 16px 6px;gap:8px}.level-badge{font-size:clamp(1.1rem,5vw,1.5rem);font-weight:800;background:#ffffff40;border-radius:999px;padding:6px 18px;display:flex;align-items:center;gap:8px;box-shadow:inset 0 2px 6px #ffffff4d;letter-spacing:.5px}.level-badge .slime-dot{width:1.2em;height:1.2em;border-radius:50%/60% 60% 40% 40%;background:radial-gradient(circle at 35% 30%,#b9f6ca,#4caf50 70%);box-shadow:inset -3px -4px 6px #0003;animation:slime-breathe 2.4s ease-in-out infinite}@keyframes slime-breathe{0%,to{transform:scale(1)}50%{transform:scale(1.06,.94)}}.sound-btn{width:52px;height:52px;border:none;border-radius:50%;font-size:1.6rem;background:#ffffff40;box-shadow:inset 0 2px 6px #ffffff4d,0 4px #0000001f;cursor:pointer;transition:transform .15s cubic-bezier(.34,1.56,.64,1)}.sound-btn:active{transform:scale(.88)}.board-wrap{flex:1;display:flex;align-items:center;justify-content:center;padding:12px;position:relative}.board{display:flex;flex-wrap:wrap;align-items:center;align-content:center;justify-content:center;gap:10px;width:100%;max-width:520px;padding:18px 8px}.piece{min-width:64px;height:76px;min-height:76px;padding:0 14px;border:none;border-radius:var(--radius);font-size:clamp(1.9rem,9vw,2.6rem);font-weight:800;font-family:inherit;color:var(--white);display:inline-flex;align-items:center;justify-content:center;box-shadow:var(--shadow-piece);cursor:pointer;position:relative;transition:transform .18s cubic-bezier(.34,1.56,.64,1);will-change:transform;text-shadow:0 2px 0 rgba(0,0,0,.15)}.piece:after{content:"";position:absolute;top:6px;left:12px;right:12px;height:30%;border-radius:inherit;background:linear-gradient(180deg,#ffffff73,#fff0);pointer-events:none}.piece-num{background:linear-gradient(180deg,var(--piece-num-1),var(--piece-num-2))}.piece-op{background:linear-gradient(180deg,var(--piece-op-1),var(--piece-op-2));color:var(--text-dark);text-shadow:0 1px 0 rgba(255,255,255,.35)}.piece-group{background:linear-gradient(180deg,var(--piece-group-1),var(--piece-group-2))}.piece-result{background:linear-gradient(180deg,var(--piece-result-1),var(--piece-result-2))}.piece:active{transform:scale(.92)}.piece.tappable{animation:piece-idle 2.2s ease-in-out infinite}@keyframes piece-idle{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-3px) scale(1.02)}}.piece.op-available{animation:op-glow 1.6s ease-in-out infinite}@keyframes op-glow{0%,to{filter:brightness(1) drop-shadow(0 0 0px rgba(255,255,255,0));transform:scale(1)}50%{filter:brightness(1.18) drop-shadow(0 0 10px rgba(255,255,255,.75));transform:scale(1.05)}}@keyframes piece-merge-left{0%{transform:translate(0) scale(1)}to{transform:translate(46px) scale(.55) rotate(-8deg);opacity:.4}}@keyframes piece-merge-right{0%{transform:translate(0) scale(1)}to{transform:translate(-46px) scale(.55) rotate(8deg);opacity:.4}}@keyframes piece-squash{0%{transform:scale(1)}35%{transform:scale(1.25,.7)}65%{transform:scale(.85,1.2)}to{transform:scale(1)}}@keyframes piece-bounce-in{0%{transform:scale(0) rotate(-12deg);opacity:0}60%{transform:scale(1.35) rotate(4deg);opacity:1}80%{transform:scale(.9) rotate(-2deg)}to{transform:scale(1) rotate(0)}}@keyframes piece-shake{0%,to{transform:translate(0) rotate(0)}20%{transform:translate(-7px) rotate(-3deg)}40%{transform:translate(7px) rotate(3deg)}60%{transform:translate(-5px) rotate(-2deg)}80%{transform:translate(5px) rotate(2deg)}}@keyframes piece-hint{0%,to{transform:scale(1)}50%{transform:scale(1.12)}}.anim-merge-left{animation:piece-merge-left .32s cubic-bezier(.45,0,.55,1) forwards}.anim-merge-right{animation:piece-merge-right .32s cubic-bezier(.45,0,.55,1) forwards}.anim-squash{animation:piece-squash .38s cubic-bezier(.34,1.56,.64,1)}.anim-bounce-in{animation:piece-bounce-in .45s cubic-bezier(.34,1.56,.64,1)}.anim-shake{animation:piece-shake .4s ease-in-out}.anim-hint{animation:piece-hint .6s ease-in-out 2}.mascot-zone{display:flex;align-items:flex-end;justify-content:center;min-height:130px;padding-bottom:4px;position:relative}.mascot{width:clamp(110px,30vw,150px);position:relative;cursor:pointer;transition:transform .2s cubic-bezier(.34,1.56,.64,1)}.mascot svg{width:100%;height:auto;display:block;filter:drop-shadow(0 8px 10px rgba(0,0,0,.25))}.mascot .slime-body{transform-origin:50% 90%;animation:slime-breathe 2.8s ease-in-out infinite}.mascot.celebrating{animation:mascot-jump .5s cubic-bezier(.34,1.56,.64,1) 2}.mascot.surprised .slime-body{animation:slime-surprise .5s ease-in-out}.mascot.thinking .slime-body{animation:slime-think 1s ease-in-out 2}@keyframes mascot-jump{0%,to{transform:translateY(0) scale(1)}30%{transform:translateY(-26px) scale(.92,1.12)}60%{transform:translateY(0) scale(1.15,.82)}80%{transform:translateY(-8px) scale(.98,1.04)}}@keyframes slime-surprise{0%,to{transform:scale(1)}40%{transform:scale(1.25,.75)}70%{transform:scale(.9,1.15)}}@keyframes slime-think{0%,to{transform:rotate(0)}30%{transform:rotate(-6deg)}70%{transform:rotate(6deg)}}.stars{display:flex;justify-content:center;gap:14px;padding:4px 0 calc(env(safe-area-inset-bottom,0px) + 14px);font-size:1.7rem;filter:drop-shadow(0 3px 3px rgba(0,0,0,.2))}.star{opacity:.28;transform:scale(.85);transition:all .35s cubic-bezier(.34,1.56,.64,1)}.star.earned{opacity:1;transform:scale(1.15) rotate(8deg)}#fx-canvas{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:50}.levelup-overlay{position:fixed;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;background:#402496d1;backdrop-filter:blur(4px);z-index:100;opacity:0;pointer-events:none;transition:opacity .3s ease}.levelup-overlay.show{opacity:1;pointer-events:auto}.levelup-emoji{font-size:clamp(4rem,22vw,6.5rem);animation:piece-bounce-in .6s cubic-bezier(.34,1.56,.64,1)}.levelup-text{font-size:clamp(1.6rem,8vw,2.4rem);font-weight:800;text-shadow:0 3px 0 rgba(0,0,0,.2)}.levelup-btn{font-family:inherit;font-size:clamp(1.3rem,6vw,1.8rem);font-weight:800;color:var(--white);background:linear-gradient(180deg,#66bb6a,#43a047);border:none;border-radius:999px;padding:16px 44px;box-shadow:0 8px #2e7d32,0 12px 20px #0000004d;cursor:pointer;transition:transform .15s cubic-bezier(.34,1.56,.64,1)}.levelup-btn:active{transform:translateY(5px) scale(.97);box-shadow:0 3px #2e7d32}.rotate-hint{position:fixed;inset:0;display:none;flex-direction:column;align-items:center;justify-content:center;gap:16px;background:var(--bg-1);z-index:200;font-size:1.4rem;font-weight:700;text-align:center;padding:24px}.rotate-hint .rotate-icon{font-size:4rem;animation:rotate-phone 1.6s ease-in-out infinite}@keyframes rotate-phone{0%,20%{transform:rotate(0)}60%,to{transform:rotate(-90deg)}}@media (orientation: landscape) and (max-height: 480px){.rotate-hint{display:flex}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
