:root{--bg-top:#2a1d63;--bg-bottom:#1b1f4a;--panel:rgba(255,255,255,0.08);--panel-line:rgba(255,255,255,0.14);--text:#ffffff;--muted:rgba(255,255,255,0.6);--gold-1:#ffe066;--gold-2:#ff9a1f;--green-1:#79d94e;--green-2:#3f9a27;--cell:44px;--gap:5px;--app-w:min(100vw,460px)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;height:100%;overscroll-behavior:none}body{position:fixed;inset:0;-webkit-touch-callout:none;-webkit-text-size-adjust:100%;background:linear-gradient(180deg,var(--bg-top),var(--bg-bottom)) fixed;color:var(--text);font-family:"Nunito",ui-rounded,system-ui,-apple-system,sans-serif;overflow:hidden;user-select:none;-webkit-user-select:none;touch-action:manipulation}button{font-family:inherit}#app{position:relative;width:var(--app-w);height:100vh;height:100dvh;margin:0 auto;overflow:hidden}.screen{position:absolute;inset:0;display:none;flex-direction:column;padding:max(12px,env(safe-area-inset-top)) 16px max(14px,env(safe-area-inset-bottom))}.screen.active{display:flex}.btn{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;border:0;border-radius:18px;color:#fff;text-decoration:none;font-weight:900;font-size:20px;letter-spacing:0.5px;cursor:pointer;box-shadow:0 4px 0 rgba(0,0,0,0.25),0 8px 18px rgba(0,0,0,0.3);transition:transform 0.08s}.btn:active{transform:scale(0.96)}.btn-play{height:62px;background:linear-gradient(180deg,var(--green-1),var(--green-2))}.btn-store{height:58px;background:#000;border:1.5px solid rgba(255,255,255,0.35);font-size:15px;font-weight:800;text-align:left}.btn-store small{display:block;font-size:11px;font-weight:700;opacity:0.75;letter-spacing:0.3px}.btn-secondary{height:52px;font-size:17px;background:linear-gradient(180deg,#8d8d9b,#5b5b6b)}.store-apple{width:22px;height:26px;flex:none;background:no-repeat center/contain url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 384 512'><path fill='white' d='M318.7 268.7c-.2-36.7 16.4-64.4 50-84.8-18.8-26.9-47.2-41.7-84.7-44.6-35.5-2.8-74.3 20.7-88.5 20.7-15 0-49.4-19.7-76.4-19.7C63.3 141.2 4 184.8 4 273.5q0 39.3 14.4 81.2c12.8 36.7 59 126.7 107.2 125.2 25.2-.6 43-17.9 75.8-17.9 31.8 0 48.3 17.9 76.4 17.9 48.6-.7 90.4-82.5 102.6-119.3-65.2-30.7-61.7-90-61.7-91.9zm-56.6-164.2c27.3-32.4 24.8-61.9 24-72.5-24.1 1.4-52 16.4-67.9 34.9-17.5 19.8-27.8 44.3-25.6 71.9 26.1 2 49.9-11.4 69.5-34.3z'/></svg>")}.link-btn{background:none;border:0;color:var(--muted);font-size:14px;font-weight:800;text-decoration:underline;cursor:pointer;padding:6px}.icon-btn{width:40px;height:40px;flex:none;border:0;border-radius:50%;background:rgba(0,0,0,0.3);color:#fff;font-size:26px;font-weight:900;line-height:1;cursor:pointer}.icon-btn.small{width:34px;height:34px;font-size:16px}.lobby-top{text-align:center;margin-top:18px}.lobby-icon{width:76px;height:76px;border-radius:18px;box-shadow:0 6px 18px rgba(0,0,0,0.4)}.logo{margin:8px 0 0;font-size:44px;font-weight:900;background:linear-gradient(180deg,var(--gold-1),var(--gold-2));-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 3px 2px rgba(0,0,0,0.35))}.tagline{margin:2px 0 0;color:var(--muted);font-weight:800}.stage-path{flex:1 1 0;min-height:120px;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;align-content:center;column-gap:8px;row-gap:14px;padding:6px 0}.stage-node{position:relative;width:58px;height:58px;border-radius:50%;display:grid;place-items:center;font-size:24px;font-weight:900;color:#fff;border:4px solid rgba(255,255,255,0.75);box-shadow:0 5px 14px rgba(0,0,0,0.35);cursor:pointer}.stage-node.cleared{background:linear-gradient(180deg,#ffd34d,#e89a1c)}.stage-node.current{background:linear-gradient(180deg,var(--green-1),var(--green-2));animation:pulse 1.4s ease-in-out infinite}.stage-node.locked{background:linear-gradient(180deg,#6b6b78,#45454f);color:rgba(255,255,255,0.5);cursor:default;border-color:rgba(255,255,255,0.3)}.stage-node .tag{position:absolute;right:-8px;top:-8px;width:26px;height:26px;border-radius:50%;display:grid;place-items:center;font-size:13px;background:#fff;color:#333;border:2px solid #fff}.stage-node:nth-child(odd){transform:translateY(14px)}.stage-node:nth-child(even){transform:translateY(-14px)}.stage-node.current:nth-child(odd){--y:14px}.stage-node.current:nth-child(even){--y:-14px}@keyframes pulse{0%,100%{transform:translateY(var(--y,0)) scale(1)}50%{transform:translateY(var(--y,0)) scale(1.1)}}.path-more{flex-basis:100%;color:var(--muted);font-weight:800;font-size:13px;text-align:center}.lobby-bottom{display:flex;flex-direction:column;gap:10px;align-items:center;flex:none}.compact .lobby-top{margin-top:4px}.compact .lobby-icon{width:52px;height:52px;border-radius:13px}.compact .logo{font-size:34px;margin-top:4px}.compact .tagline{font-size:13px}.compact .btn-play{height:54px;font-size:18px}.compact .btn-store{height:52px}.compact .popup{padding:14px 14px 14px;gap:8px;border-radius:22px}.compact .popup h2{font-size:22px}.compact .popup p{font-size:13px;line-height:1.3}.compact .popup .big-score{font-size:30px}.compact .popup .btn-play,.compact .popup .btn-secondary{height:46px;font-size:16px}.compact .popup .btn-store{height:48px}.compact .tut-title{font-size:15px}.compact .t-finger{font-size:24px}.compact .screen{padding-top:max(8px,env(safe-area-inset-top));padding-bottom:max(8px,env(safe-area-inset-bottom))}.compact .hud-stage{font-size:11px}.compact .hud-score{font-size:22px}.compact .icon-btn{width:32px;height:32px;font-size:20px}.compact .icon-btn.small{width:28px;height:28px;font-size:14px}.compact .store-pill{height:28px;font-size:12px}.compact .goal{min-height:38px;margin:5px 0 6px;padding:3px 10px}.compact .goal-score .label{display:none}.compact .goal-item{font-size:16px}.compact .goal-item .mini{width:24px;height:24px}.compact .game-foot{padding-top:4px;font-size:11px}.compact .rise{margin-top:5px}.compact .next-row{margin-top:4px}.hud{display:flex;align-items:center;gap:10px}.hud-center{flex:1;text-align:center}.hud-stage{font-size:13px;font-weight:900;color:var(--muted);letter-spacing:1px}.hud-score{font-size:30px;font-weight:900;line-height:1.05}.store-pill{display:flex;align-items:center;gap:5px;height:34px;padding:0 12px 0 10px;border-radius:17px;background:#000;border:1px solid rgba(255,255,255,0.35);color:#fff;text-decoration:none;font-weight:900;font-size:13px}.store-pill .store-apple{width:14px;height:17px}.goal{margin:8px 0 8px;min-height:52px;border-radius:14px;background:var(--panel);border:1px solid var(--panel-line);display:flex;align-items:center;justify-content:center;gap:18px;padding:6px 14px;font-weight:900}.goal-score{width:100%}.goal-score .label{font-size:11px;color:var(--muted);text-align:center}.goal-score .nums{font-size:15px;text-align:center}.bar{height:8px;border-radius:4px;background:rgba(255,255,255,0.15);overflow:hidden;margin-top:3px}.bar>div{height:100%;background:linear-gradient(90deg,#ffdd33,#ff9a1f);transition:width 0.3s}.goal-item{display:flex;align-items:center;gap:6px;font-size:20px;transition:opacity 0.3s,filter 0.3s}.goal-item.done{opacity:0.35;filter:grayscale(1)}.goal-item .mini{width:30px;height:30px;position:relative}.board-wrap{position:relative;align-self:center}.board{position:relative;width:calc(var(--cell) * 7 + var(--gap) * 6);height:calc(var(--cell) * 9 + var(--gap) * 8);border-radius:10px;touch-action:none}.board.danger{box-shadow:0 0 0 3px rgba(255,60,60,0.9),0 0 24px rgba(255,60,60,0.6);animation:danger 0.8s ease-in-out infinite}@keyframes danger{50%{box-shadow:0 0 0 3px rgba(255,60,60,0.35),0 0 10px rgba(255,60,60,0.3)}}.slot{position:absolute;width:var(--cell);height:var(--cell);border-radius:5px;background:rgba(0,0,0,0.22)}.slot.hint{animation:hint 1s ease-in-out infinite}.tile.hint .face{animation:tilehint 1s ease-in-out infinite}@keyframes tilehint{50%{box-shadow:0 0 0 3px #ffe066,0 0 14px #ffe066}}@keyframes hint{0%,100%{box-shadow:inset 0 0 0 2px rgba(255,255,120,0.25)}50%{box-shadow:inset 0 0 0 3px rgba(255,255,120,0.95);background:rgba(255,255,120,0.18)}}.tile{position:absolute;left:0;top:0;width:var(--cell);height:var(--cell);transition:transform 0.18s ease-out,opacity 0.35s ease-in;will-change:transform}.tile.slow{transition:transform 0.22s ease-out,opacity 0.35s ease-in}.face{position:absolute;inset:0;border-radius:5px;display:grid;place-items:center;font-weight:900;font-size:calc(var(--cell) * 0.42);box-shadow:inset 0 -3px 0 rgba(0,0,0,0.18)}.face.d3{font-size:calc(var(--cell) * 0.34)}.face.d4{font-size:calc(var(--cell) * 0.26)}.tile.pop .face{animation:pop 0.28s ease-out}@keyframes pop{0%{transform:scale(1.3)}60%{transform:scale(0.95)}100%{transform:scale(1)}}.bomb-badge{position:absolute;right:-6%;top:-6%;width:44%;height:44%;border-radius:50%;border:2px solid #fff;box-shadow:0 1px 3px rgba(0,0,0,0.5);display:grid;place-items:center}.bomb-badge.small{background:#26a673}.bomb-badge.large{background:#f26b1a}.bomb-badge i{display:grid;gap:1.5px;grid-template-columns:repeat(3,3px)}.bomb-badge.large i{grid-template-columns:repeat(5,2.5px);gap:1px}.bomb-badge i b{width:100%;aspect-ratio:1;border-radius:50%;background:#fff}.box{position:absolute;inset:0;border-radius:5px;background:linear-gradient(180deg,#c7843f,#945b2b);border:calc(var(--cell) * 0.08) solid #5c3314;overflow:hidden}.box::before{content:"";position:absolute;left:-20%;right:-20%;top:44%;height:13%;background:#73441b;transform:rotate(45deg)}.box::after{content:"";position:absolute;inset:30% 0 auto;height:4%;background:rgba(64,38,16,0.6);box-shadow:0 calc(var(--cell) * 0.28) 0 rgba(64,38,16,0.6)}.ice{position:absolute;inset:-2px;border-radius:6px;background:linear-gradient(135deg,rgba(218,242,255,0.75),rgba(140,204,242,0.6));border:2.5px solid rgba(255,255,255,0.95);overflow:hidden}.ice::before,.ice::after{content:"";position:absolute;height:3px;width:55%;background:rgba(255,255,255,0.85);border-radius:2px;transform:rotate(-45deg);left:4%;top:30%}.ice::after{width:75%;top:48%;left:6%}.tile.breaking{animation:shake 0.3s linear}@keyframes shake{25%{margin-left:-3px}75%{margin-left:3px}}.tile.gone{opacity:0 !important}.rise{margin-top:8px}.gauge{height:5px;border-radius:3px;background:rgba(255,255,255,0.12);overflow:hidden}.gauge-fill{height:100%;width:0;background:#ff9a1f}.gauge-fill.hot{background:#ff3b3b}.next-row{position:relative;height:var(--cell);margin-top:6px}.next-row .tile{transition:none}.fx{position:absolute;pointer-events:none;z-index:50}.blast{border-radius:50%;background:radial-gradient(circle,#fff 0%,#fff6 25%,#ffd34d99 45%,#ff7a1a00 70%);animation:blast 0.5s ease-out forwards}@keyframes blast{0%{transform:scale(0.2);opacity:1}100%{transform:scale(1.15);opacity:0}}.cross-ring{border-radius:50%;border:5px solid #ffe066;animation:ring 0.6s ease-out forwards}@keyframes ring{0%{transform:scale(0.3);opacity:1}100%{transform:scale(2.2);opacity:0}}.float-score{font-weight:900;font-size:20px;color:#ffe066;text-shadow:0 2px 3px rgba(0,0,0,0.6);animation:floatup 0.8s ease-out forwards}@keyframes floatup{0%{transform:translateY(0);opacity:1}100%{transform:translateY(-40px);opacity:0}}.shake-board{animation:boardshake 0.3s linear}@keyframes boardshake{20%{transform:translate(-4px,2px)}40%{transform:translate(4px,-2px)}60%{transform:translate(-3px,1px)}80%{transform:translate(2px,-1px)}}.flash{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none;z-index:60;font-weight:900;font-size:40px;color:#ff6262;text-shadow:0 3px 8px rgba(0,0,0,0.8);opacity:0}.flash.show{animation:flash 1.1s ease-out}@keyframes flash{0%{opacity:0;transform:scale(0.6)}15%{opacity:1;transform:scale(1.05)}70%{opacity:1;transform:scale(1)}100%{opacity:0}}.game-foot{margin-top:auto;padding-top:8px;display:flex;align-items:center;justify-content:space-between;gap:8px;color:var(--muted);font-size:12px;font-weight:800}.overlay{position:absolute;inset:0;z-index:100;display:none;align-items:center;justify-content:center;background:rgba(0,0,0,0.6);padding:20px}.overlay.show{display:flex;animation:fadein 0.2s}@keyframes fadein{from{opacity:0}}.popup{position:relative;width:100%;max-width:360px;border-radius:26px;padding:22px 20px 20px;background:linear-gradient(180deg,#5a40b3,#382380);border:2px solid rgba(255,255,255,0.35);box-shadow:0 10px 40px rgba(0,0,0,0.5);text-align:center;display:flex;flex-direction:column;gap:12px;max-height:calc(100% - 8px);overflow-y:auto;-webkit-overflow-scrolling:touch;animation:popin 0.25s ease-out}@keyframes popin{from{transform:scale(0.9);opacity:0}}.popup h2{margin:0;font-size:28px;font-weight:900;background:linear-gradient(180deg,var(--gold-1),var(--gold-2));-webkit-background-clip:text;background-clip:text;color:transparent}.popup p{margin:0;font-weight:700;color:rgba(255,255,255,0.88);line-height:1.4}.popup .goal{margin:0}.popup .close{position:absolute;right:12px;top:12px;width:34px;height:34px;border-radius:50%;border:0;background:rgba(0,0,0,0.3);color:#fff;font-size:18px;cursor:pointer}.popup .big-score{font-size:40px;font-weight:900}.popup .row{display:flex;gap:10px}.popup .row .btn{flex:1}.promo{border-radius:16px;padding:12px;background:rgba(0,0,0,0.28);display:flex;flex-direction:column;gap:8px}.promo p{font-size:13px}.promo-list{font-size:13px;font-weight:800;color:#ffe9a8}.tut-title{font-size:18px;font-weight:900}.tut-board{position:relative;align-self:center;border-radius:12px;background:rgba(0,0,0,0.35);padding:8px}.tut-inner{position:relative}.tut-dots{display:flex;justify-content:center;gap:6px}.tut-dots i{width:7px;height:7px;border-radius:50%;background:rgba(255,255,255,0.3)}.tut-dots i.on{background:#fff}.t-src{animation:t-src 3.2s ease-in-out infinite}@keyframes t-src{0%,30%{transform:translate(var(--x),var(--y));opacity:1}44%{transform:translate(var(--tx),var(--ty));opacity:1}45%,100%{transform:translate(var(--tx),var(--ty));opacity:0}}.t-res{animation:t-res 3.2s ease-out infinite}@keyframes t-res{0%,44%{transform:translate(var(--x),var(--y)) scale(0.2);opacity:0}50%{transform:translate(var(--x),var(--y)) scale(1.25);opacity:1}58%,88%{transform:translate(var(--x),var(--y)) scale(1);opacity:1}100%{transform:translate(var(--x),var(--y)) scale(1);opacity:0}}.t-fly{animation:t-fly 3.2s ease-out infinite}@keyframes t-fly{0%,32%{transform:translate(var(--x),var(--y));opacity:1}50%,100%{transform:translate(var(--tx),var(--ty)) rotate(120deg) scale(0.4);opacity:0}}.t-break{animation:t-break 3.2s ease-out infinite}@keyframes t-break{0%,44%{transform:translate(var(--x),var(--y));opacity:1}47%{transform:translate(calc(var(--x) - 3px),var(--y))}50%{transform:translate(calc(var(--x) + 3px),var(--y));opacity:1}60%,100%{transform:translate(var(--x),var(--y)) scale(1.3);opacity:0}}.t-melt{animation:t-melt 3.2s ease-out infinite}@keyframes t-melt{0%,46%{opacity:1}60%,100%{opacity:0}}.t-swell{animation:t-swell 3.2s ease-out infinite}@keyframes t-swell{0%,22%{transform:translate(var(--x),var(--y)) scale(1);opacity:1}30%{transform:translate(var(--x),var(--y)) scale(1.18);opacity:1}32%,100%{transform:translate(var(--x),var(--y)) scale(1);opacity:0}}.t-boom{border-radius:50%;animation:t-boom 3.2s ease-out infinite;background:radial-gradient(circle,#fff 0%,#ffd34dcc 35%,#ff7a1a00 70%)}@keyframes t-boom{0%,31%{transform:scale(0.1);opacity:0}33%{opacity:1}55%,100%{transform:scale(1.2);opacity:0}}.t-finger{position:absolute;font-size:30px;z-index:20;animation:t-finger 3.2s ease-in-out infinite;filter:drop-shadow(0 2px 3px rgba(0,0,0,0.6))}@keyframes t-finger{0%{transform:translate(28px,34px);opacity:0}12%{opacity:1}24%{transform:translate(0,0) scale(1)}27%{transform:translate(0,0) scale(0.85)}32%{transform:translate(0,0) scale(1);opacity:1}45%,100%{transform:translate(0,0);opacity:0}}.t-target{position:absolute;border-radius:5px;border:2.5px solid #ffe066;animation:t-target 3.2s infinite}@keyframes t-target{0%,28%{opacity:1}34%,100%{opacity:0}}.t-line{position:absolute;border-top:3px dashed #6fe36f;animation:t-target 3.2s infinite;transform-origin:0 0}#game>.goal,#game>.game-foot{display:none}