:root{--brand:#1b2c8b;--orange:#ff8a1c;--ink:#1d1d22;--font:"Noto Sans TC", "Microsoft JhengHei", "PingFang TC", system-ui, sans-serif}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}button,a,input,label,kbd{touch-action:manipulation}html,body{height:100%;font-family:var(--font);color:#fff;-webkit-user-select:none;user-select:none;touch-action:none;overscroll-behavior:none;background:#9fcdf2;margin:0;overflow:hidden}#scene{width:100%;height:100%;display:block;position:fixed;inset:0}.hidden{display:none!important}#pops{pointer-events:none;position:fixed;inset:0;overflow:hidden}.pop{white-space:nowrap;-webkit-text-stroke:5px #2a1500;paint-order:stroke fill;color:#fff;font-size:26px;font-weight:900;position:absolute;top:0;left:0}.pop-nice{color:#6dff8f;font-size:32px}.pop-ok{color:#ffe45c}.pop-graze{color:#ffae4a}.pop-hit{color:#ffd21f;font-size:28px}.pop-block{color:#e7eef5;font-size:20px}#hud{pointer-events:none;position:fixed;inset:0}.top{top:calc(env(safe-area-inset-top,0px) + 10px);z-index:2;align-items:flex-start;gap:8px;display:flex;position:absolute;left:12px;right:12px}.pill{white-space:nowrap;background:#14161eb8;border:2px solid #ffffff40;border-radius:999px;padding:6px 14px;font-size:18px;font-weight:900}.pill b{color:#ffc21a;vertical-align:-2px;margin:0 2px;font-size:26px}.grip{text-align:center;flex:1;min-width:0}.grip .label,.bal .label{-webkit-text-stroke:3px #222;paint-order:stroke fill;font-size:14px;font-weight:900}.grip .bar{background:#14161ebf;border:2px solid #fff;border-radius:10px;height:16px;margin-top:2px;overflow:hidden}.grip .bar i{background:linear-gradient(90deg,#38d26a,#ffd12e);width:100%;height:100%;transition:width .12s;display:block}.topbtns{gap:8px;margin-left:auto;display:flex}.round{pointer-events:auto;color:#fff;background:#14161eb3;border:2px solid #ffffff80;border-radius:50%;width:44px;height:44px;font-size:16px;font-weight:900}.round.off{opacity:.45;text-decoration:line-through}.chev{color:#ffc21a;-webkit-text-stroke:6px #6b2b00;paint-order:stroke fill;text-shadow:0 4px 14px #00000073;pointer-events:none;font-size:clamp(130px,30vw,190px);font-weight:900;line-height:1;animation:.35s infinite alternate chev;position:absolute;top:18%}.chev.right{right:clamp(16%,50% - 300px,40%)}.chev.left{left:clamp(16%,50% - 300px,40%);transform:scaleX(-1)}@keyframes chev{0%{opacity:.55}to{opacity:1}}.hint{left:0;right:0;bottom:calc(env(safe-area-inset-bottom,0px) + 222px);text-align:center;-webkit-text-stroke:5px #2a1a08;paint-order:stroke fill;color:#fff7d6;padding:0 16px;font-size:26px;font-weight:900;position:absolute}.hint.warn{color:#ffd84a;font-size:30px}.hint.go{color:#7dff9d}.bal{left:50%;bottom:calc(env(safe-area-inset-bottom,0px) + 168px);text-align:center;width:min(78vw,360px);position:absolute;transform:translate(-50%)}.bal .bar{background:linear-gradient(90deg,#e3302f 0%,#ff8a1c 14%,#ffd12e 26%,#45d067 38% 62%,#ffd12e 74%,#ff8a1c 86%,#e3302f 100%);border:3px solid #fff;border-radius:12px;height:22px;position:relative;box-shadow:0 2px 8px #00000059}.bal .bar i{background:#fff;border:2px solid #222;border-radius:4px;width:8px;margin-left:-4px;position:absolute;top:-8px;bottom:-8px;left:50%}.bal.danger .bar{animation:.1s infinite alternate shake}@keyframes shake{0%{transform:translate(-2px)}to{transform:translate(2px)}}.controls{display:flex;position:absolute;inset:0}.pad,.act{pointer-events:auto;touch-action:none;flex:1;position:relative}.pad:after{content:"";left:14px;bottom:calc(env(safe-area-inset-bottom,0px) + 40px);background:#1e202880;border:2px solid #ffffff59;border-radius:999px;width:min(52vw,230px);height:82px;position:absolute}.pad .arrow{bottom:calc(env(safe-area-inset-bottom,0px) + 56px);color:#ffffffd9;z-index:1;font-size:44px;font-weight:900;line-height:48px;position:absolute}.pad .arrow.l{left:30px}.pad .arrow.r{left:calc(min(52vw,230px) - 32px)}.pad .thumb{z-index:1;bottom:calc(env(safe-area-inset-bottom,0px) + 49px);background:#ffffffd9;border-radius:50%;width:64px;height:64px;position:absolute;left:calc(min(52vw,230px)/2 - 18px);box-shadow:0 2px 6px #0000004d}.pad.active:after{border-color:#ffc21a}.padlabel{text-align:center;width:min(52vw,230px);left:14px;bottom:calc(env(safe-area-inset-bottom,0px) + 14px);-webkit-text-stroke:3px #222;paint-order:stroke fill;font-size:14px;font-weight:900;position:absolute}.act>.ring,.act>span{right:18px;bottom:calc(env(safe-area-inset-bottom,0px) + 30px);width:112px;height:112px;position:absolute}.act>span{text-align:center;-webkit-text-stroke:3px #7a3200;paint-order:stroke fill;background:radial-gradient(circle at 35% 30%,#ffc463,#ff8a1c 55%,#d45d00);border:4px solid #fff3d6;border-radius:50%;justify-content:center;align-items:center;padding:10px;font-size:18px;font-weight:900;line-height:1.15;transition:transform 60ms;display:flex;box-shadow:0 4px 12px #00000059}.act.peck>span{font-size:44px}.act.down>span{transform:scale(.92)}.act.dim>span{filter:grayscale(.7)brightness(.8)}.act>.ring{z-index:1;pointer-events:none;transform:rotate(-90deg)scale(1.12)}.ring circle{fill:none;stroke-width:6px}.ring circle:first-child{stroke:#0000}#chargeArc{stroke:#7dff9d;stroke-dasharray:289;stroke-dashoffset:289px;stroke-linecap:round}.panel{background:#0a102873;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.card{width:min(92vw,420px);color:var(--ink);text-align:center;background:linear-gradient(#fff,#f2f5ff);border-radius:24px;max-height:calc(100vh - 32px);padding:22px 20px 18px;overflow-y:auto;box-shadow:0 10px 40px #00000059}.card.small{width:min(80vw,300px)}.card h1{color:var(--brand);letter-spacing:2px;-webkit-text-stroke:1px var(--brand);margin:0;font-size:44px;font-weight:900}.card h1:after{content:"";background:var(--orange);border-radius:3px;width:60px;height:6px;margin:6px auto 0;display:block}.card h2{color:var(--brand);margin:0 0 6px;font-size:32px;font-weight:900}.sub{margin:10px 0 8px;font-weight:700}.how{text-align:left;margin:0 0 6px;padding-left:22px;font-size:14.5px;line-height:1.55}.how li{margin-bottom:4px}.g{color:#12a03a;font-weight:900}.w{color:#555;font-weight:900}.y{color:#c98a00;font-weight:900}.keys,.ver{color:#777;margin:4px 0;font-size:12px}.best{margin:6px 0 10px;font-weight:700}.best b{color:var(--orange);font-size:20px}.newbest{color:#e3302f;font-weight:900}.big{width:100%;font-size:22px;font-weight:900;font-family:var(--font);color:#fff;cursor:pointer;background:linear-gradient(#ffa443,#f07400);border:none;border-radius:16px;margin-top:6px;padding:14px;display:block;box-shadow:0 5px #b35500}.big:active{transform:translateY(3px);box-shadow:0 2px #b35500}.ghost{color:var(--brand);font-size:16px;font-weight:700;font-family:var(--font);background:0 0;border:none;margin-top:12px}.reason{color:#e3302f;margin:4px 0 8px;font-size:22px;font-weight:900}.result{font-size:22px;font-weight:900}.result b{color:var(--orange);vertical-align:-6px;font-size:48px}.stats{color:#666;margin:4px 0 6px;font-size:13px}.count{color:#fff;-webkit-text-stroke:8px var(--brand);paint-order:stroke fill;pointer-events:none;justify-content:center;align-items:center;font-size:120px;font-weight:900;display:flex;position:fixed;inset:0}.kb-only{display:none!important}body.kb .kb-only{display:revert!important}kbd{color:#1d1d22;min-width:1.7em;font:800 13px/1.5 var(--font);text-align:center;-webkit-text-stroke:0;background:#fff;border:1px solid #9aa3b5;border-bottom-width:3px;border-radius:6px;margin:0 1px;padding:1px 6px;display:inline-block}kbd.wide{min-width:5em}.round{position:relative}.round kbd{padding:0 4px;font-size:10px;position:absolute;top:44px;left:50%;transform:translate(-50%)}.keys-l,.keys-r{bottom:calc(env(safe-area-inset-bottom,0px) + 128px);white-space:nowrap;-webkit-text-stroke:3px #222;paint-order:stroke fill;font-size:13px;font-weight:900;position:absolute}.keys-l{text-align:center;width:min(52vw,230px);left:14px}.keys-r{text-align:center;width:112px;right:18px;bottom:calc(env(safe-area-inset-bottom,0px) + 150px)}table.keys{border-collapse:collapse;color:#444;text-align:left;width:100%;margin:6px 0 4px;font-size:12.5px}table.keys td{border-top:1px solid #e3e7f2;padding:3px 4px}table.keys td:first-child{white-space:nowrap;width:1%}.small-key{opacity:.85;margin-left:4px;font-size:14px}.pill.tier{color:#c9f7d6;padding:8px 10px;font-size:14px}.pill.tier[data-tier="1"]{color:#ffe45c}.pill.tier[data-tier="2"]{color:#ffae4a}.pill.tier[data-tier="3"],.pill.tier[data-tier="4"]{color:#ff7a7a}.grip .label{white-space:nowrap}@media (width<=420px){.top{gap:6px}.pill.score{padding:6px 10px;font-size:15px}.pill.score b{font-size:22px}.pill.tier{padding:7px;font-size:12px}.round{width:40px;height:40px}}.bal .bar .zone{pointer-events:none;background:#ffffff2e;border:3px dashed #fffffff2;border-radius:8px;position:absolute;top:-5px;bottom:-5px}.bal .bar .zone.ok{border-style:solid;box-shadow:0 0 10px #fffc}.big:disabled{opacity:.65;filter:grayscale(.4);cursor:wait}.cover{padding:calc(env(safe-area-inset-top,0px) + 28px) 16px calc(env(safe-area-inset-bottom,0px) + 22px);pointer-events:none;background:linear-gradient(#0a143c59 0%,#0a143c00 32% 58%,#0a143c8c 100%);flex-direction:column;justify-content:space-between;align-items:center;display:flex;position:fixed;inset:0}.cover>*{pointer-events:auto}.cover-top{text-align:center}.logo{letter-spacing:2px;-webkit-text-stroke:10px #1b2c8b;paint-order:stroke fill;text-shadow:0 7px #0d1650,0 12px 22px #00000073;margin:0;font-size:clamp(58px,18vw,104px);font-weight:900;line-height:1;animation:.7s cubic-bezier(.2,1.6,.4,1) both logo-in;transform:rotate(-4deg)}.logo .w{color:#fff}.logo .o{color:#ffb21f}@keyframes logo-in{0%{opacity:0;transform:rotate(-4deg)scale(.4)}}.tagline{color:#fff;background:#1b2c8be0;border-radius:999px;margin:14px 0 0;padding:6px 16px;font-size:17px;font-weight:900;display:inline-block;box-shadow:0 3px 10px #0000004d}.cover-bottom{text-align:center;width:min(92vw,380px)}.cover-best{color:#fff;-webkit-text-stroke:4px #1b2c8b;paint-order:stroke fill;margin:0 0 8px;font-size:16px;font-weight:900}.cover-best b{color:#ffb21f;font-size:24px}.big.start{border:4px solid #fff3d6;border-radius:999px;padding:16px;font-size:28px;animation:1.4s ease-in-out infinite start-pulse}@keyframes start-pulse{50%{transform:scale(1.04)}}.big.start:disabled{animation:none}.cover-row{justify-content:center;gap:8px;margin-top:12px;display:flex}.chip{color:#fff;font:900 16px var(--font);cursor:pointer;background:#1b2c8bd9;border:2px solid #ffffffb3;border-radius:999px;flex:1;padding:9px 6px}.cover .ver{color:#fffc;margin-top:10px}.lb-list{text-align:left;margin:6px 0 8px;padding:0;list-style:none}.lb-list li{border-bottom:1px solid #e3e7f2;grid-template-columns:34px minmax(0,1fr) auto auto;align-items:center;gap:8px;padding:7px 8px;font-size:15px;display:grid}.lb-list li .rk{color:var(--brand);text-align:center;font-weight:900}.lb-list li:first-child .rk{color:#d9a400}.lb-list li .nm{text-overflow:ellipsis;white-space:nowrap;font-weight:700;overflow:hidden}.lb-list li .sc{color:var(--orange);font-weight:900}.lb-list li .tm{color:#666;font-variant-numeric:tabular-nums;font-size:13px}.lb-list li.me{background:#ffb21f2e;border-radius:8px}.lb-list .empty{text-align:center;color:#777;display:block}.lb-form{text-align:left;margin:8px 0 4px}.lb-form label{color:var(--brand);font-size:14px;font-weight:900}.lb-row{gap:6px;margin-top:4px;display:flex}.lb-row input{min-width:0;font:700 16px var(--font);border:2px solid #c8cfe0;border-radius:12px;flex:1;padding:10px 12px}.lb-row button{background:var(--brand);color:#fff;font:900 16px var(--font);cursor:pointer;border:none;border-radius:12px;padding:0 16px}.lb-row button:disabled{opacity:.5}.lb-status{min-height:1.4em;margin:4px 0 0;font-size:13px;font-weight:700}.lb-status.ok{color:#12a03a}.lb-status.err{color:#e3302f}#help,#lb{z-index:5}.loading{z-index:8;background:repeating-linear-gradient(115deg,#ffffff0d 0 18px,#0000 18px 46px),linear-gradient(#1b2c8b 0%,#2a3fb0 55%,#ff8a1c 140%);flex-direction:column;justify-content:center;align-items:center;gap:14px;padding:24px 16px;display:flex;position:fixed;inset:0}.load-bar{background:#00000040;border:3px solid #fff;border-radius:10px;width:min(78vw,320px);height:16px;margin-top:18px;overflow:hidden}.load-bar i{background:linear-gradient(90deg,#ffd12e,#ff8a1c);width:0%;height:100%;transition:width .25s;display:block}.load-text{color:#fff;margin:0;font-size:16px;font-weight:900}.loading .big.start{width:min(84vw,340px);margin-top:6px}.load-note{color:#fffc;margin:0;font-size:13px;font-weight:700}
