html{--u:calc(min(100vw,56.25vh) / 390)}html,body{margin:0;height:100%;overflow:hidden;background:#13202d;font-family:-apple-system,PingFang SC,Microsoft YaHei,sans-serif;touch-action:none;user-select:none;-webkit-user-select:none}#game{position:fixed;top:0;bottom:0;left:50%;transform:translate(-50%);width:min(100vw,56.25vh);overflow:hidden;background:#6fa8d6}#game canvas{display:block;width:100%;height:100%}#hud{position:absolute;left:0;right:0;top:0;padding:10px 12px;color:#fff;pointer-events:none;text-shadow:0 2px 3px rgba(0,0,0,.55)}#hud .row{display:flex;align-items:center;gap:8px}#level{font-weight:800;font-size:18px;white-space:nowrap}#bar{flex:1;height:10px;border-radius:6px;background:#00000059;overflow:hidden;border:2px solid rgba(255,255,255,.7)}#fill{height:100%;width:0;background:linear-gradient(90deg,#ffd34d,#ff8a3d)}#stats{margin-top:6px;font-size:13px;font-weight:700;display:flex;flex-wrap:wrap;gap:6px}#stats span{background:#00000059;padding:2px 8px;border-radius:10px}#bossbar{display:none;margin-top:8px}#bossbar .lbl{font-size:13px;font-weight:800;color:#ff6b6b}#bossbar .bar{height:12px;border-radius:6px;background:#0006;overflow:hidden;border:2px solid #fff}#bossfill{height:100%;width:100%;background:#e63946}#fx{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden}.ft{position:absolute;font-weight:900;white-space:nowrap;transform:translate(-50%,-50%);text-shadow:0 2px 0 rgba(0,0,0,.5),0 0 6px rgba(0,0,0,.4)}#count{position:absolute;transform:translate(-50%,-100%);background:#2f6fde;color:#fff;font-weight:900;font-size:18px;padding:2px 10px;border-radius:12px;border:2px solid #fff;box-shadow:0 2px 4px #00000059}#mute,#pause{position:absolute;right:10px;z-index:5;width:44px;height:44px;border-radius:50%;border:2px solid rgba(255,255,255,.8);background:#00000059;color:#fff;font-size:18px;line-height:1;cursor:pointer;padding:0}#mute{top:60px}#pause{top:112px}#boot{position:absolute;top:0;right:0;bottom:0;left:0;z-index:50;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;background:linear-gradient(#2a3b8f,#13202d);color:#fff;font-weight:800;letter-spacing:2px}#boot .spin{width:44px;height:44px;border-radius:50%;border:5px solid rgba(255,255,255,.25);border-top-color:#ffd34d;animation:bootspin .8s linear infinite}#boot.gone{opacity:0;pointer-events:none;transition:opacity .3s}@keyframes bootspin{to{transform:rotate(360deg)}}#ui{position:absolute;top:0;right:0;bottom:0;left:0;z-index:30;display:flex;flex-direction:column;color:#fff;overflow-y:auto;overflow-x:hidden;padding:max(16px,calc(16*var(--u)));box-sizing:border-box;touch-action:pan-y;background:linear-gradient(#0a1628b8,#0a1628e6),url(../art/ui/title_art.webp) center/cover #12253a}#ui.hide{display:none}#ui *{box-sizing:border-box}#game.in-menu #hud,#game.in-menu #fx,#game.in-menu #mute,#game.in-menu #pause{visibility:hidden}#pause{display:none}#game.playing #pause{display:block}#ui h1,#ui h2{margin:0}#ui .emoji{display:inline-block;text-align:center;line-height:1}.ic{display:block;width:calc(28*var(--u));height:calc(28*var(--u));object-fit:contain;pointer-events:none}.ic.flip{transform:rotate(-90deg)}.btn{--bh:calc(58*var(--u));font:inherit;font-size:calc(19*var(--u));font-weight:900;color:#fff;cursor:pointer;min-height:max(44px,var(--bh));padding:0 calc(22*var(--u));border-radius:14px;border:3px solid #fff;display:flex;align-items:center;justify-content:center;gap:calc(8*var(--u));text-shadow:0 2px 0 rgba(0,0,0,.45),0 0 4px rgba(0,0,0,.35);-webkit-tap-highlight-color:transparent;position:relative}.btn .lbl{display:flex;align-items:center;gap:calc(6*var(--u));line-height:1;white-space:nowrap}.btn.green{background:linear-gradient(#7ad94c,#3da12a);box-shadow:0 4px #1f6a1a}.btn.blue{background:linear-gradient(#5aa9ff,#2f6fde);box-shadow:0 4px #1b3f94}.btn.yellow{background:linear-gradient(#ffd34d,#ff9a1a);box-shadow:0 4px #a85a0e}.btn.red{background:linear-gradient(#ff7a6a,#d63a30);box-shadow:0 4px #86201a}.btn:active:not(.off){transform:translateY(2px) scale(.985)}.btn.off{filter:grayscale(.9) brightness(.8);opacity:.8}.btn.big{--bh:calc(70*var(--u));font-size:calc(24*var(--u))}.btn.small{--bh:calc(48*var(--u));font-size:calc(17*var(--u))}.btn .ic{width:calc(22*var(--u));height:calc(22*var(--u))}.panel-dark{background:linear-gradient(#1d3a5e,#122743);border:2px solid #4fb3ff;border-radius:12px;color:#fff;box-shadow:inset 0 0 12px #4fb3ff2e}.panel-light{background:#f7ecd2;border:4px solid #2f6fde;border-radius:16px;color:#2b3340;box-shadow:0 6px #00000040}.art-ui .btn{border:solid transparent;border-width:calc(var(--bh)*.33) calc(var(--bh)*.5);padding:0;background:none;box-shadow:none;border-radius:0;border-image-slice:44 66 fill;border-image-repeat:stretch;filter:drop-shadow(0 3px 0 rgba(0,0,0,.28))}.art-ui .btn.off{filter:grayscale(.95) brightness(.75)}.art-ui .btn.green{border-image-source:url(../art/ui/btn_green.png)}.art-ui .btn.blue{border-image-source:url(../art/ui/btn_blue.png)}.art-ui .btn.yellow{border-image-source:url(../art/ui/btn_yellow.png)}.art-ui .btn.red{border-image-source:url(../art/ui/btn_red.png)}.art-ui .panel-dark{background:none;box-shadow:none;border:solid transparent;border-width:calc(13*var(--u));border-radius:0;border-image:url(../art/ui/panel_dark.png) 44 fill / calc(13*var(--u)) stretch}.art-ui .panel-light{background:none;box-shadow:none;border:solid transparent;border-width:calc(24*var(--u));border-radius:0;border-image:url(../art/ui/panel_light.png) 64 fill / calc(24*var(--u)) stretch;filter:drop-shadow(0 5px 0 rgba(0,0,0,.25))}.topbar{display:flex;align-items:center;gap:calc(10*var(--u));margin-bottom:calc(10*var(--u));min-height:44px}.topbar h2{flex:1;text-align:center;font-size:calc(21*var(--u));font-weight:900;letter-spacing:2px;padding:calc(6*var(--u)) 0;text-shadow:0 2px 0 rgba(0,0,0,.5)}.topbar .spacer{width:calc(84*var(--u))}.back{width:max(44px,calc(48*var(--u)));height:max(44px,calc(48*var(--u)));border-radius:50%;border:3px solid #fff;background:linear-gradient(#5aa9ff,#2f6fde);box-shadow:0 3px #1b3f94;display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;flex:none}.back .ic{width:calc(26*var(--u));height:calc(26*var(--u))}.back:active{transform:translateY(2px)}.chip{display:flex;align-items:center;gap:calc(6*var(--u));padding:calc(4*var(--u)) calc(12*var(--u)) calc(4*var(--u)) calc(6*var(--u));border-radius:999px;background:#00000073;border:2px solid rgba(255,255,255,.55);font-weight:900;font-size:calc(18*var(--u));min-width:calc(84*var(--u));height:44px;flex:none;color:#ffe36b;text-shadow:0 2px 0 rgba(0,0,0,.5)}.chip .ic{width:calc(30*var(--u));height:calc(30*var(--u))}.sub{display:flex;justify-content:center;align-items:center;margin:calc(4*var(--u)) 0 calc(10*var(--u));font-size:calc(14*var(--u));font-weight:700;opacity:.9;text-shadow:0 2px 2px rgba(0,0,0,.6)}.sub .btn{min-width:calc(160*var(--u))}#ui.main{background:linear-gradient(#0a162826 0,#0a162800 30%,#0a162800 50%,#0a1628d1),url(../art/ui/title_art.webp) center/cover #12253a;justify-content:flex-start}.main-top{display:flex;justify-content:flex-start}.logo{text-align:center;margin-top:calc(34*var(--u))}.logo-1{font-size:calc(68*var(--u));font-weight:900;color:#ffd34d;letter-spacing:calc(6*var(--u));line-height:1.05;-webkit-text-stroke:calc(7*var(--u)) #3a1408;paint-order:stroke fill;text-shadow:0 calc(5*var(--u)) 0 #8a2d10,0 calc(10*var(--u)) calc(18*var(--u)) rgba(0,0,0,.45)}.logo-2{margin-top:calc(4*var(--u));font-size:calc(17*var(--u));font-weight:900;color:#fff;letter-spacing:calc(5*var(--u));-webkit-text-stroke:calc(4*var(--u)) #1c2f4a;paint-order:stroke fill}.main-btns{margin-top:auto!important;display:flex;flex-direction:column;align-items:stretch;gap:calc(12*var(--u));width:min(100%,calc(300*var(--u)));margin:0 auto;padding-bottom:calc(8*var(--u))}.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:calc(10*var(--u))}.lv{font:inherit;color:#fff;cursor:pointer;min-height:calc(84*var(--u));display:flex;flex-direction:column;align-items:center;justify-content:center;gap:calc(2*var(--u));padding:0;position:relative}.lv-no{font-size:calc(26*var(--u));font-weight:900;line-height:1;text-shadow:0 2px 0 rgba(0,0,0,.55)}.lv-name{font-size:calc(12*var(--u));font-weight:700;opacity:.92;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lv-lock{height:calc(24*var(--u))}.lv-lock .ic{width:calc(24*var(--u));height:calc(24*var(--u))}.lv .stars{display:flex;gap:calc(2*var(--u))}.lv .star .ic{width:calc(17*var(--u));height:calc(17*var(--u));filter:grayscale(1) brightness(.45);opacity:.7}.lv .star.on .ic{filter:none;opacity:1}.lv.cleared{filter:brightness(1.12)}.lv.locked{opacity:.55;filter:grayscale(.7)}.lv:active:not(.locked){transform:scale(.97)}.endless{font:inherit;color:#fff;cursor:pointer;margin-top:calc(16*var(--u));width:100%;min-height:calc(64*var(--u));padding:calc(8*var(--u)) calc(16*var(--u));display:flex;align-items:center;gap:calc(12*var(--u));border:3px solid #fff;border-radius:16px;background:linear-gradient(#a35bff,#5b2bbf);box-shadow:0 4px #34187a;font-size:calc(30*var(--u));text-align:left}.endless .ic{width:calc(32*var(--u));height:calc(32*var(--u))}.endless-txt{display:flex;flex-direction:column;gap:2px}.endless-txt b{font-size:calc(19*var(--u));font-weight:900;text-shadow:0 2px 0 rgba(0,0,0,.45)}.endless-txt span{font-size:calc(13*var(--u));font-weight:700;opacity:.92}.endless.locked{background:linear-gradient(#59606b,#383e48);box-shadow:0 4px #20252d;opacity:.85}.toast{position:absolute;left:50%;bottom:calc(40*var(--u));transform:translate(-50%);background:#000c;color:#fff;font-weight:700;font-size:calc(15*var(--u));padding:10px 18px;border-radius:999px;white-space:nowrap;z-index:5;animation:toast-in .2s}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,8px)}}.ups{display:flex;flex-direction:column;gap:calc(10*var(--u))}.up{display:grid;grid-template-columns:calc(54*var(--u)) 1fr auto;align-items:center;gap:calc(10*var(--u));min-height:calc(86*var(--u));padding:calc(2*var(--u)) calc(4*var(--u))}.up.bought{animation:bought .35s}@keyframes bought{40%{transform:scale(1.03);filter:brightness(1.4)}}.up-ic{width:calc(54*var(--u));height:calc(54*var(--u));border-radius:12px;background:#ffffff1f;display:flex;align-items:center;justify-content:center}.up-ic .ic{width:calc(44*var(--u));height:calc(44*var(--u))}.up-ic .emoji{font-size:calc(30*var(--u))}.up-name{font-size:calc(17*var(--u));font-weight:900;display:flex;align-items:baseline;gap:calc(8*var(--u))}.up-name em{font-style:normal;font-size:calc(12*var(--u));font-weight:700;color:#9fd2ff}.pips{display:flex;gap:calc(3*var(--u));margin:calc(4*var(--u)) 0}.pips i{flex:1;max-width:calc(16*var(--u));height:calc(6*var(--u));border-radius:3px;background:#fff3}.pips i.on{background:linear-gradient(#ffe36b,#ffa51a)}.up-eff{font-size:calc(13*var(--u));font-weight:700;color:#d6e6f5}.up-eff span{color:#7dff9a}.btn.buy{--bh:calc(48*var(--u));min-width:calc(100*var(--u));font-size:calc(16*var(--u))}.maxed{min-width:calc(100*var(--u));text-align:center;font-weight:900;color:#ffe36b;font-size:calc(15*var(--u))}.card{padding:calc(6*var(--u))}.card .row{display:flex;align-items:center;gap:calc(10*var(--u));min-height:52px;font-weight:900;font-size:calc(17*var(--u))}.card .row>span{width:calc(52*var(--u));flex:none}.card .row b{width:calc(48*var(--u));text-align:right;font-size:calc(14*var(--u));flex:none}.card .row.center{justify-content:center}.card input[type=range]{flex:1;min-width:0;height:44px;accent-color:#e8791a;cursor:pointer;margin:0}#ui.pause{background:#050c189e;justify-content:center;align-items:center}.pause-card{display:flex;flex-direction:column;gap:calc(12*var(--u));width:min(100%,calc(280*var(--u)));padding:calc(10*var(--u)) calc(6*var(--u)) calc(14*var(--u))}.pause-card h2{text-align:center;font-size:calc(26*var(--u));font-weight:900;margin:0 0 calc(4*var(--u))}.pause-card .btn{width:100%}#ui.result{background:linear-gradient(#0a162880,#0a162826 35%,#0a1628bf),url(../art/ui/result_art.webp) center/cover #12253a;align-items:center}#ui.result.lose{background:linear-gradient(#0a0a1499,#0a0a1480 35%,#0a0a14d9),url(../art/ui/result_art.webp) center/cover #4a5160;background-blend-mode:normal,luminosity}.res-head{text-align:center;margin-top:calc(14*var(--u))}.res-head h1{font-size:calc(50*var(--u));font-weight:900;color:#ffd34d;letter-spacing:calc(4*var(--u));-webkit-text-stroke:calc(7*var(--u)) #3a1408;paint-order:stroke fill;text-shadow:0 calc(5*var(--u)) 0 #8a2d10}.lose .res-head h1{color:#ff9d92;text-shadow:0 calc(5*var(--u)) 0 #5a1712}.res-sub{margin-top:calc(6*var(--u));font-size:calc(16*var(--u));font-weight:800;text-shadow:0 2px 3px rgba(0,0,0,.8)}.res-stars{display:flex;justify-content:center;align-items:flex-end;gap:calc(6*var(--u));margin:calc(14*var(--u)) 0 calc(10*var(--u))}.rs .ic{width:calc(62*var(--u));height:calc(62*var(--u));filter:grayscale(1) brightness(.35);opacity:.8}.rs.d2 .ic{width:calc(78*var(--u));height:calc(78*var(--u));margin-bottom:calc(10*var(--u))}.rs.on .ic{filter:drop-shadow(0 3px 4px rgba(0,0,0,.5));opacity:1;animation:star-pop .5s both}.rs.d1.on .ic{animation-delay:.15s}.rs.d2.on .ic{animation-delay:.45s}.rs.d3.on .ic{animation-delay:.75s}@keyframes star-pop{0%{transform:scale(0) rotate(-40deg);opacity:0}70%{transform:scale(1.25) rotate(8deg);opacity:1}to{transform:scale(1) rotate(0)}}.res-card{width:100%;padding:calc(6*var(--u)) calc(8*var(--u))}.res-card .line{display:flex;justify-content:space-between;align-items:center;min-height:calc(30*var(--u));font-size:calc(15*var(--u));font-weight:700}.res-card .line b{color:#c2610a;font-weight:900}.res-card .sum{display:flex;justify-content:space-between;align-items:center;margin-top:calc(6*var(--u));padding-top:calc(8*var(--u));border-top:2px dashed rgba(43,51,64,.3);font-size:calc(17*var(--u));font-weight:900}.res-card .total{display:flex;align-items:center;gap:calc(6*var(--u));font-size:calc(26*var(--u));color:#c2610a}.res-card .total .ic{width:calc(34*var(--u));height:calc(34*var(--u))}.res-card .notes{margin-top:calc(6*var(--u));text-align:center;font-size:calc(14*var(--u));font-weight:900;color:#2f9e44}.res-card .notes.dim{color:#7b8494;font-weight:700}.res-btns{display:flex;flex-direction:column;gap:calc(10*var(--u));width:min(100%,calc(300*var(--u)));margin-top:calc(14*var(--u));padding-bottom:calc(8*var(--u))}.btn-row{display:flex;gap:calc(10*var(--u))}.btn-row .btn{flex:1;padding-left:0;padding-right:0}
