:root{--ink:#0d0a14;--sky:#101a3c;--white:#f6f7ff;--yellow:#ffd21f;--red:#ff3b3b;--lime:#9dff2e;--cyan:#2fe6ff;--magenta:#ff2e88;--display:"Bangers", "Arial Black", sans-serif;--body:system-ui, -apple-system, "Segoe UI", sans-serif;--letter-shadow:2px 2px 0 var(--ink), 3px 3px 0 var(--ink);--extrude:1px 1px 0 var(--ink), 2px 2px 0 var(--ink), 3px 3px 0 var(--ink), 4px 4px 0 var(--ink), 5px 5px 0 var(--ink), 6px 6px 0 var(--ink)}html,body{background:var(--sky);height:100%;color:var(--white);font-family:var(--body);margin:0;overflow:hidden}#app{position:fixed;inset:0}#app canvas{display:block}.hud,.hud-status,.hud-power,.hud-message,.hud-toast,.hud-pop,.hud-points,.title,.fps-meter,.perf-readout{-webkit-text-stroke:1px var(--ink);paint-order:stroke fill;text-shadow:var(--letter-shadow)}kbd{min-width:1em;font-family:var(--body);text-align:center;box-shadow:2px 2px 0 var(--ink);border:1.5px solid;border-radius:4px;padding:0 4px;font-size:.85em;font-weight:700;line-height:1.3;display:inline-block}.hud{pointer-events:none;font-size:13px;font-weight:600;line-height:1.6;position:absolute;bottom:14px;left:18px;right:18px}.hud strong{color:var(--yellow);font-family:var(--display);letter-spacing:.04em;font-size:19px;font-weight:400}.hud-controls,.hud-sound{display:inline}.hud-status{pointer-events:none;flex-direction:column;align-items:flex-start;display:flex;position:absolute;top:10px;left:18px}.hud-score{font-family:var(--display);letter-spacing:.03em;font-variant-numeric:tabular-nums;-webkit-text-stroke:2.5px var(--ink);text-shadow:var(--extrude);transform-origin:0 60%;font-size:46px;line-height:1}.hud-sub{letter-spacing:.02em;color:var(--white);margin-top:4px;font-size:13px;font-weight:800}.hud-lives{gap:3px;margin-top:6px;display:flex}.icon-android{width:26px;height:26px;filter:drop-shadow(2px 2px 0 var(--ink))}.hud-dash{transform-origin:0;align-items:center;gap:6px;margin-top:6px;display:flex}.hud-dash-label{font-family:var(--display);letter-spacing:.06em;color:#8a93b8;-webkit-text-stroke:1.5px var(--ink);text-shadow:2px 2px 0 var(--ink);font-size:17px;line-height:1;transition:color .15s}.hud-dash-gauge{border:2px solid var(--ink);width:64px;height:8px;box-shadow:2px 2px 0 var(--ink);background:#0d0a148c;border-radius:6px;overflow:hidden}.hud-dash-fill{transform-origin:0;will-change:transform;background:#6f7aa3;height:100%;display:block}.hud-dash.ready .hud-dash-label{color:var(--cyan)}.hud-dash.ready .hud-dash-fill{background:repeating-linear-gradient(-45deg, #fff6 0 3px, transparent 3px 8px), var(--cyan)}.hud-power{pointer-events:none;width:min(280px,46vw);position:absolute;top:14px;left:50%;transform:translate(-50%)}.hud-power[hidden],.hud-message[hidden]{display:none}.hud-power-label{font-family:var(--display);letter-spacing:.05em;text-align:center;color:var(--yellow);-webkit-text-stroke:2px var(--ink);text-shadow:3px 3px 0 var(--ink);margin-bottom:4px;font-size:26px;line-height:1}.hud-power-seconds{color:var(--white);font-variant-numeric:tabular-nums}.hud-power-gauge{border:3px solid var(--ink);height:14px;box-shadow:3px 3px 0 var(--ink);background:#0d0a148c;border-radius:10px;overflow:hidden}.hud-power-fill{background:repeating-linear-gradient(-45deg, #ffffff59 0 4px, transparent 4px 10px), var(--yellow);transform-origin:0;will-change:transform;height:100%}.hud-power.warning .hud-power-fill,.hud-power.warning .hud-power-label{animation:.3s steps(2,jump-none) infinite power-flash}@keyframes power-flash{0%{filter:none}to{filter:brightness(2.2)saturate(.2)}}.hud-message{text-align:center;white-space:nowrap;pointer-events:none;isolation:isolate;position:absolute;top:33%;left:50%;transform:translate(-50%,-50%)rotate(-4deg)}.hud-message-main{font-family:var(--display);letter-spacing:.04em;-webkit-text-stroke:3.5px var(--ink);text-shadow:var(--extrude), 7px 7px 0 var(--ink), 8px 8px 0 var(--ink);font-size:clamp(56px,10vw,104px);line-height:1;position:relative}.hud-message-main:before,.title-word:before{content:attr(data-text);z-index:-1;color:#0000;-webkit-text-stroke:0;text-shadow:none;background-image:radial-gradient(circle, var(--dot,var(--ink)) 34%, transparent 36%);background-size:6px 6px;-webkit-background-clip:text;background-clip:text;position:absolute;top:0;left:0;transform:translate(12px,12px)}.hud-message-detail{font-family:var(--display);letter-spacing:.05em;-webkit-text-stroke:1.5px var(--ink);text-shadow:3px 3px 0 var(--ink);margin-top:10px;font-size:26px}.hud-message[data-tone] .hud-message-main:before{--dot:currentColor;opacity:.75}.hud-message[data-tone=ready] .hud-message-main{color:var(--yellow);animation:.42s cubic-bezier(.2,1.5,.4,1) both slam}.hud-message[data-tone=caught] .hud-message-main{color:var(--red);animation:.5s ease-out both hit}.hud-message[data-tone=cleared] .hud-message-main{color:var(--lime);animation:.6s cubic-bezier(.2,1.6,.4,1) both spring}.hud-message[data-tone=over] .hud-message-main{color:var(--red);animation:.7s cubic-bezier(.5,0,.6,1.4) both drop}.hud-message[data-tone=paused] .hud-message-main{color:var(--white);animation:.2s ease-out both fade-in}.hud-message-detail{animation:.3s ease-out .25s both fade-in}.hud-message[data-tone=over] .hud-message-detail,.hud-message[data-tone=paused] .hud-message-detail{animation:.3s ease-out .4s both fade-in,1.6s ease-in-out .7s infinite breathe}@keyframes slam{0%{opacity:0;transform:scale(2.4)rotate(6deg)}to{opacity:1;transform:scale(1)rotate(0)}}@keyframes hit{0%{opacity:0;transform:scale(1.6)}25%{opacity:1;transform:scale(1)translate(-14px)}45%{transform:translate(11px)}65%{transform:translate(-6px)}85%{transform:translate(3px)}to{transform:none}}@keyframes spring{0%{opacity:0;transform:translateY(60px)scale(.6)}to{opacity:1;transform:none}}@keyframes drop{0%{opacity:0;transform:translateY(-180px)rotate(8deg)}60%{opacity:1;transform:translateY(0)rotate(-2deg)}80%{transform:translateY(-10px)rotate(0)}to{transform:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes breathe{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}.hud-toast{font-family:var(--display);letter-spacing:.04em;color:var(--yellow);-webkit-text-stroke:2.5px var(--ink);text-shadow:var(--extrude);opacity:0;pointer-events:none;font-size:48px;position:absolute;top:22%;left:50%;transform:translate(-50%)}.hud-toast.show{animation:1.8s ease-out forwards toast}@keyframes toast{0%{opacity:0;transform:translate(-50%,12px)scale(.9)}15%{opacity:1;transform:translate(-50%)scale(1.12)}70%{opacity:1;transform:translate(-50%,-6px)scale(1)}to{opacity:0;transform:translate(-50%,-16px)scale(1)}}.hud-pop{transform:translate(-50%, -50%) rotate(var(--tilt,0deg));font-family:var(--display);letter-spacing:.04em;-webkit-text-stroke:2.5px var(--ink);text-shadow:var(--extrude);pointer-events:none;font-size:50px;animation:.9s ease-out forwards pop;position:absolute}@keyframes pop{0%{opacity:0;transform:translate(-50%, -50%) rotate(var(--tilt,0deg)) scale(.4)}18%{opacity:1;transform:translate(-50%, -50%) rotate(var(--tilt,0deg)) scale(1.3)}35%{transform:translate(-50%, -50%) rotate(var(--tilt,0deg)) scale(1)}to{opacity:0;transform:translate(-50%, -80%) rotate(var(--tilt,0deg)) scale(1)}}.hud-points{transform:translate(-50%, -50%) rotate(var(--tilt,0deg));font-family:var(--display);letter-spacing:.04em;white-space:nowrap;color:var(--white);-webkit-text-stroke:2px var(--ink);text-shadow:3px 3px 0 var(--ink), 4px 4px 0 var(--ink);pointer-events:none;font-size:30px;line-height:1;animation:1.1s ease-out forwards points-rise;position:absolute}.hud-points[data-kind=combo][data-tier="1"]{color:var(--yellow);font-size:32px}.hud-points[data-kind=combo][data-tier="2"]{color:#ffb21f;font-size:40px}.hud-points[data-kind=combo][data-tier="3"]{color:#ff7a1f;-webkit-text-stroke:2.5px var(--ink);text-shadow:var(--extrude);font-size:52px}.hud-points[data-kind=combo][data-tier="4"]{color:var(--red);-webkit-text-stroke:3px var(--ink);text-shadow:3px 3px 0 var(--yellow), var(--extrude);font-size:66px}.hud-points[data-kind=chain]{color:var(--cyan);-webkit-text-stroke:1.5px var(--ink);text-shadow:2px 2px 0 var(--ink);font-size:24px;animation-duration:.9s}.hud-points[data-kind=bonus]{color:var(--yellow);-webkit-text-stroke:3px var(--ink);text-shadow:3px 3px 0 #ff7a1f, var(--extrude);font-size:60px;animation:1.4s ease-out forwards points-punch}@keyframes points-rise{0%{opacity:0;transform:translate(-50%, -30%) rotate(var(--tilt,0deg)) scale(.5)}15%{opacity:1;transform:translate(-50%, -50%) rotate(var(--tilt,0deg)) scale(1.2)}30%{transform:translate(-50%, -60%) rotate(var(--tilt,0deg)) scale(1)}75%{opacity:1}to{opacity:0;transform:translate(-50%, -170%) rotate(var(--tilt,0deg)) scale(.95)}}@keyframes points-punch{0%{opacity:0;transform:translate(-50%, -50%) rotate(var(--tilt,0deg)) scale(2.4)}12%{opacity:1;transform:translate(-50%, -50%) rotate(var(--tilt,0deg)) scale(.85)}22%{transform:translate(-50%, -50%) rotate(var(--tilt,0deg)) scale(1.1)}32%{transform:translate(-50%, -50%) rotate(var(--tilt,0deg)) scale(1)}75%{opacity:1;transform:translate(-50%, -80%) rotate(var(--tilt,0deg)) scale(1)}to{opacity:0;transform:translate(-50%, -150%) rotate(var(--tilt,0deg)) scale(1)}}.minimap{pointer-events:none;transition:background-color .24s ease-out;position:absolute;top:16px;right:16px}.minimap canvas{border:3px solid var(--ink);outline:3px solid var(--white);box-shadow:7px 7px 0 3px #0d0a14b3}.minimap.expanded{background:#101a3cc7;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.fps-meter{font-variant-numeric:tabular-nums;pointer-events:none;font-size:12px;font-weight:600;position:absolute;bottom:14px;right:18px}.perf-readout{font-variant-numeric:tabular-nums;pointer-events:none;font-size:12px;font-weight:600;position:absolute;bottom:32px;right:18px}.on-title .hud,.on-title .hud-status,.on-title .hud-power,.on-title .hud-message,.on-title .hud-toast,.on-title .minimap{display:none}.title{text-align:center;pointer-events:none;background:radial-gradient(62% 46% at 50% 64%,#0a0e20d1 0%,#0a0e208c 55%,#0a0e2000 100%),radial-gradient(90% 70%,#0a0e2000 50%,#0a0e2073 100%);flex-direction:column;justify-content:center;align-items:center;gap:clamp(16px,5vh,52px);padding:clamp(16px,4vh,40px) 16px;display:flex;position:absolute;inset:0;overflow:hidden}.title[hidden]{display:none}.title-cover,.title-go{flex-direction:column;justify-content:center;align-items:center;gap:clamp(8px,2vh,18px);display:flex}.title-go{gap:clamp(6px,1.4vh,12px)}.title-sign{font-family:var(--display);letter-spacing:.03em;isolation:isolate;margin:0 0 clamp(6px,1.8vh,16px);font-size:clamp(56px,min(15vw,19vh),172px);font-weight:400;line-height:.9;transform:rotate(-4deg)skew(-6deg)}.title-word{color:var(--white);-webkit-text-stroke:5px var(--ink);text-shadow:var(--extrude), 7px 7px 0 var(--ink), 8px 8px 0 var(--ink), 9px 9px 0 var(--ink), 10px 10px 0 var(--ink), 12px 12px 0 var(--red), 14px 14px 0 var(--red), 16px 16px 0 var(--ink);display:inline-block;position:relative}.title-word:before{--dot:var(--red);background-size:7px 7px;transform:translate(24px,24px)}.title-word-1{color:var(--yellow);margin-left:.12em;font-size:.82em;transform:translateY(-.14em)rotate(4deg)}.title-tagline{-webkit-text-stroke:1.2px var(--ink);max-width:34em;text-shadow:2px 2px 0 var(--ink), 3px 3px 0 var(--ink);margin:0;font-size:clamp(14px,min(2vw,2.4vh),19px);font-weight:800;line-height:1.35}.title-start{font-family:var(--display);letter-spacing:.05em;color:var(--yellow);-webkit-text-stroke:2.5px var(--ink);text-shadow:var(--extrude);margin:0;font-size:clamp(28px,min(4.4vw,5.6vh),44px);animation:1.4s ease-in-out infinite blurb;transform:rotate(2deg)}.title-start kbd{font-family:var(--display);letter-spacing:.04em;box-shadow:3px 3px 0 var(--ink);border-width:2.5px;border-radius:6px;padding:0 8px;font-size:.85em;font-weight:400}@keyframes blurb{0%,to{transform:rotate(2deg)scale(1)}50%{transform:rotate(2deg)scale(1.07)}}.title-camera{margin:0;font-size:15px;font-weight:700}.title-camera strong{color:var(--yellow)}.title-panel{text-align:left;align-items:flex-start;gap:clamp(32px,8vw,96px);font-size:clamp(13px,1.9vh,15px);font-weight:700;display:flex}.title-panel h2{font-family:var(--display);letter-spacing:.05em;color:var(--yellow);-webkit-text-stroke:1.8px var(--ink);text-shadow:3px 3px 0 var(--ink);margin:0 0 clamp(6px,1.4vh,12px);font-size:28px;font-weight:400}.title-scores{font-variant-numeric:tabular-nums;min-width:16em;margin:0;padding-left:1.6em}.title-scores li{padding:clamp(1px,.4vh,4px) 0}.title-scores li::marker{color:var(--cyan);font-weight:900}.title-scores li span{display:inline-block}.title-score{min-width:5.5em;font-family:var(--display);letter-spacing:.04em;text-align:right;margin-right:.8em;font-size:1.3em;font-weight:400}.title-date{margin-left:.8em}.title-scores li.new,.title-scores li.new .title-score{color:var(--yellow)}.title-empty{max-width:16em;margin:0}.title-empty[hidden]{display:none}.title-controls{grid-template-columns:auto auto auto auto;align-items:center;gap:clamp(8px,1.6vh,14px) 12px;margin:0;display:grid}.title-controls dt{justify-self:end}.title-controls dt kbd{color:var(--cyan);white-space:nowrap;font-weight:800}.title-controls dd{margin:0 18px 0 0}.title.switch-on .title-sign{animation:.55s cubic-bezier(.2,1.4,.4,1) both cover-slam}.title.switch-on .title-tagline,.title.switch-on .title-camera,.title.switch-on .title-panel{animation:.45s ease-out .35s both rise}@keyframes cover-slam{0%{opacity:0;transform:rotate(-14deg)skew(-6deg)scale(1.7)}to{opacity:1;transform:rotate(-4deg)skew(-6deg)scale(1)}}@keyframes rise{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}@media (width<=640px){.title{gap:14px}.title-sign{font-size:clamp(56px,19vw,110px)}.title-panel{flex-direction:column;gap:14px}.title-keys{display:none}.hud-score{font-size:36px}.hud-controls{display:none}.hud-points[data-kind=combo][data-tier="3"],.hud-points[data-kind=combo][data-tier="4"],.hud-points[data-kind=bonus]{font-size:44px}}@media (prefers-reduced-motion:reduce){.title.switch-on .title-sign,.title.switch-on .title-tagline,.title.switch-on .title-camera,.title.switch-on .title-panel,.title-start,.hud-message-main,.hud-message-detail,.hud-power.warning .hud-power-fill,.hud-power.warning .hud-power-label{animation:none!important}.hud-pop,.hud-points,.hud-points[data-kind=bonus]{animation-name:pop-still}@keyframes pop-still{0%,70%{opacity:1}to{opacity:0}}}@font-face{font-family:Bangers;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/bangers-vietnamese-400-normal-BbvBhFjQ.woff2)format("woff2"),url(/assets/bangers-vietnamese-400-normal-Ll9rymNv.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Bangers;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/bangers-latin-ext-400-normal-7BLmjjiv.woff2)format("woff2"),url(/assets/bangers-latin-ext-400-normal-CzVt_Cgx.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Bangers;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/bangers-latin-400-normal-DeHY8Ncq.woff2)format("woff2"),url(/assets/bangers-latin-400-normal-BAEm-Pv0.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
