:root{--p1:#2fe9ff;--p2:#ff4ff0;--warn:#ff3348;--gold:#ffc21a;--ink:#e9f3ff;--bg:#05060a;--font:"Chakra Petch", "Segoe UI", sans-serif;--display:"Black Ops One", "Impact", sans-serif}*{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--bg);width:100%;height:100%;color:var(--ink);font-family:var(--font);-webkit-user-select:none;user-select:none;overflow:hidden}#app{cursor:none;position:fixed;inset:0}#game,#game canvas{width:100%;height:100%;display:block;position:absolute;inset:0}#hud{pointer-events:none;transition:opacity .4s;position:absolute;inset:0}#hud.hidden,.hidden{opacity:0}#top{flex-direction:column;align-items:center;gap:6px;width:min(720px,70vw);display:flex;position:absolute;top:14px;left:50%;transform:translate(-50%)}#stage-label{font-family:var(--display);letter-spacing:3px;color:#ffd7a0;text-shadow:0 0 8px #ff8c28cc;font-size:15px}#stage-label b{color:#fff;font-size:20px}#stage-label span{opacity:.85;margin-left:10px;font-size:13px}#gauge,#bossbar{align-items:center;gap:10px;width:100%;transition:opacity .3s,transform .3s;display:flex}#gauge .lab,#bossbar .name{font-family:var(--display);letter-spacing:2px;text-align:right;min-width:64px;font-size:14px}#gauge .lab{color:#ff8a5a;text-shadow:0 0 8px #ff4a2a}#gauge.off{opacity:0;transform:translateY(-10px)}.bar{skew:-12deg;background:#0a040899;border:1px solid #ffffff73;flex:1;height:12px;padding:2px;box-shadow:0 0 10px #ff3c2859,inset 0 0 8px #000c}.bar .fill{transform-origin:0;height:100%;transition:transform .25s ease-out}#gauge .fill{background:linear-gradient(90deg,#ff2a2a,#ff9a2a);box-shadow:0 0 12px #ff5a2a,0 0 22px #ff3a1a}#bossbar{opacity:0;position:absolute;top:28px;transform:translateY(-10px)}#bossbar.on{opacity:1;transform:none}#bossbar .name{color:#ff3a5a;text-shadow:0 0 10px #ff0030;min-width:140px;font-size:16px}#bossbar .bar{height:16px;box-shadow:0 0 16px #ff003c99}#bossbar .fill{background:linear-gradient(90deg,#ff0040,#ff6a2a 70%,#ffe04a);transition:transform .12s;box-shadow:0 0 16px #ff1040}#bossbar.hit .bar{animation:.12s bosshit}@keyframes bosshit{0%{filter:brightness(2.2)}to{filter:none}}#alert{font-family:var(--display);letter-spacing:4px;color:#ffe04a;text-shadow:0 0 10px #ff8a00,0 0 24px #ff4a00;opacity:0;white-space:nowrap;font-size:22px;position:absolute;top:88px;left:50%;transform:translate(-50%)}#alert.on{animation:2.2s forwards alertIn}@keyframes alertIn{0%{opacity:0;transform:translate(-50%,-8px)scale(1.4)}8%{opacity:1;transform:translate(-50%)scale(1)}15%,35%,55%{opacity:1}25%,45%{opacity:.35}85%{opacity:1}to{opacity:0}}.xh{--c:var(--p1);will-change:transform;width:0;height:0;display:none;position:absolute;top:0;left:0}.xh.p2{--c:var(--p2)}.xh>i{display:block;position:absolute}.xh .ring{border:2px solid var(--c);width:34px;height:34px;box-shadow:0 0 8px var(--c), inset 0 0 6px var(--c);opacity:.9;border-radius:50%;top:-17px;left:-17px}.xh .tk{background:var(--c);box-shadow:0 0 8px var(--c)}.xh .tk.a,.xh .tk.b{width:2px;height:11px;left:-1px}.xh .tk.a{top:-27px}.xh .tk.b{top:16px}.xh .tk.c,.xh .tk.d{width:11px;height:2px;top:-1px}.xh .tk.c{left:-27px}.xh .tk.d{left:16px}.xh .dot{width:4px;height:4px;box-shadow:0 0 6px var(--c), 0 0 12px var(--c);background:#fff;border-radius:50%;top:-2px;left:-2px}.xh .lab{font-family:var(--display);color:var(--c);text-shadow:0 0 6px var(--c);font-size:11px;position:absolute;top:14px;left:20px}.xh[data-lv="2"] .ring{border-width:3px;width:40px;height:40px;top:-20px;left:-20px}.xh[data-lv="3"] .ring{border-style:dashed;border-width:3px;width:46px;height:46px;animation:1.2s linear infinite spin;top:-23px;left:-23px}@keyframes spin{to{transform:rotate(360deg)}}.xh.fire .ring{animation:90ms ease-out fireRing}.xh[data-lv="3"].fire .ring{animation:1.2s linear infinite spin}@keyframes fireRing{0%{filter:brightness(1.8);transform:scale(1.28)}to{transform:scale(1)}}.xh .hm{opacity:0;filter:drop-shadow(0 0 4px #fff);background:linear-gradient(45deg,#0000 46%,#fff 46% 54%,#0000 54%),linear-gradient(-45deg,#0000 46%,#fff 46% 54%,#0000 54%);width:36px;height:36px;top:-18px;left:-18px;-webkit-mask:radial-gradient(circle,#0000 7px,#000 8px);mask:radial-gradient(circle,#0000 7px,#000 8px)}.xh.hit .hm{animation:.14s ease-out hm}.xh.crit .hm{filter:drop-shadow(0 0 6px #ffd000)drop-shadow(0 0 2px #ffd000);animation:.2s ease-out hm}.xh.kill .hm{filter:drop-shadow(0 0 6px #ff2040)drop-shadow(0 0 2px #ff2040);animation:.32s ease-out hmk}@keyframes hm{0%{opacity:1;transform:scale(.8)}to{opacity:0;transform:scale(1.15)}}@keyframes hmk{0%{opacity:1;transform:scale(1.7)rotate(0)}30%{opacity:1;transform:scale(1.2)}to{opacity:0;transform:scale(1.4)}}#floaters{position:absolute;inset:0;overflow:hidden}.ft{font-family:var(--display);color:#fff;white-space:nowrap;text-shadow:0 0 6px #ffc850e6,0 2px #000;font-size:17px;animation:1.2s ease-out forwards ft;position:absolute;transform:translate(-50%,-50%)}.ft.big{color:#ffe04a;text-shadow:0 0 10px #ff8a00,0 2px #000;font-size:22px}.ft.boss{color:#ff4a6a;text-shadow:0 0 14px #ff0030,0 2px #000;font-size:34px}.ft.warn{color:#ff6a6a;text-shadow:0 0 8px #ff0020,0 2px #000;font-size:18px}.ft.crit{color:#ffd000;text-shadow:0 0 8px #ff8a00,0 2px #000;font-size:15px}.ft.item{text-shadow:0 0 10px,0 2px #000;font-size:21px}@keyframes ft{0%{opacity:0;transform:translate(-50%,-30%)scale(1.8)}12%{opacity:1;transform:translate(-50%,-50%)scale(1)}70%{opacity:1}to{opacity:0;transform:translate(-50%,-190%)scale(.9)}}.pp{--c:var(--p1);border:1px solid color-mix(in srgb, var(--c) 60%, transparent);width:270px;box-shadow:0 0 14px color-mix(in srgb, var(--c) 35%, transparent), inset 0 0 18px #0009;clip-path:polygon(0 0,92% 0,100% 22%,100% 100%,0 100%);background:linear-gradient(#040a148c,#040a14cc);padding:10px 14px;transition:opacity .3s;position:absolute;bottom:16px}.pp.p1{left:16px}.pp.p2{--c:var(--p2);clip-path:polygon(8% 0,100% 0,100% 100%,0 100%,0 22%);right:16px}.pp .head{justify-content:space-between;align-items:baseline;display:flex}.pp .tag{font-family:var(--display);color:var(--c);text-shadow:0 0 10px var(--c);font-size:22px}.pp .score{font-family:var(--display);letter-spacing:2px;color:#fff;text-shadow:0 0 8px var(--c);font-size:24px}.pp .hp{gap:5px;margin:6px 0 5px;display:flex}.pp .hp i{skew:-18deg;background:#ffffff14;border:1px solid #fff3;flex:1;height:10px;transition:background .15s}.pp .hp i.on{background:var(--c);box-shadow:0 0 8px var(--c);border-color:#fff}.pp.low .hp i.on{background:#ff2a3a;animation:.4s infinite blink;box-shadow:0 0 10px #ff2a3a}@keyframes blink{50%{opacity:.3}}.pp.hurt{animation:.35s hurtShake}@keyframes hurtShake{0%,to{transform:none}20%{background:#780000b3;transform:translate(-6px,2px)}40%{transform:translate(5px,-2px)}60%{transform:translate(-3px,1px)}}.pp .row{letter-spacing:1px;opacity:.9;justify-content:space-between;font-size:13px;font-weight:700;display:flex}.pp .row b{font-family:var(--display);color:#fff;margin-left:4px;font-size:16px}.pp .gren b{color:#8aff5a;text-shadow:0 0 6px #4aff2a}.pp .weap{align-items:center;gap:8px;margin-top:6px;font-size:13px;font-weight:700;display:flex}.pp .wname{min-width:76px;color:var(--gold);text-shadow:0 0 6px #ff8a00;letter-spacing:1px}.pp .ammo{background:#ffffff1a;flex:1;height:6px}.pp .ammo .fill{background:var(--gold);height:100%;box-shadow:0 0 8px var(--gold);transform-origin:0}.pp[data-lv="1"] .ammo .fill{box-shadow:none;background:#ffffff59}.pp .lv{font-family:var(--display);color:var(--gold)}.pp .join,.pp .cont,.pp .outmsg,.pp[data-state=join]>:not(.join),.pp[data-state=continue]>:not(.cont):not(.head),.pp[data-state=out]>:not(.outmsg):not(.head){display:none}.pp[data-state=join] .join,.pp[data-state=out] .outmsg{font-family:var(--display);letter-spacing:1px;color:var(--c);text-shadow:0 0 8px var(--c);text-align:center;padding:8px 0;font-size:15px;animation:1s infinite blink;display:block}.pp[data-state=join]{background:#00000059}.pp[data-state=continue] .cont{font-family:var(--display);color:#fff;justify-content:center;align-items:baseline;gap:10px;padding:6px 0;font-size:18px;display:flex}.pp .cont b{color:var(--warn);text-shadow:0 0 12px var(--warn);font-size:34px}.pp .cont small{opacity:.8;font-size:12px;animation:.8s infinite blink}.combo{font-family:var(--display);opacity:0;--c:var(--p1);text-align:center;transition:opacity .3s;position:absolute;bottom:150px}.combo.p1{left:26px}.combo.p2{--c:var(--p2);right:26px}.combo.on{opacity:1}.combo b{color:#fff;text-shadow:0 0 12px var(--c), 0 0 24px var(--c), 0 3px 0 #000;font-size:44px;line-height:1;display:block}.combo span{letter-spacing:4px;color:var(--c);font-size:13px}.combo.pop b{animation:.25s ease-out comboPop}@keyframes comboPop{0%{filter:brightness(2);transform:scale(1.6)}to{transform:scale(1)}}#banner{text-align:center;opacity:0;transition:opacity .25s,transform .3s cubic-bezier(.2,1.6,.4,1);position:absolute;top:34%;left:0;right:0;transform:scale(1.3)}#banner.on{opacity:1;transform:none}#banner .t{font-family:var(--display);letter-spacing:8px;color:#fff;text-shadow:0 0 14px #ffb040,0 0 40px #ff6a00,0 5px #000;font-size:clamp(42px,8vw,96px)}#banner .s{font-family:var(--display);letter-spacing:6px;color:#ffe0b0;text-shadow:0 0 10px #ff8a00,0 2px #000;margin-top:8px;font-size:clamp(16px,2.2vw,26px)}#banner .s small{letter-spacing:8px;opacity:.8;font-size:.6em}#banner.stage .t{background:linear-gradient(#fff 30%,#ffc060);color:#0000;filter:drop-shadow(0 0 16px #ff8a00)drop-shadow(0 4px #000);text-shadow:none;-webkit-background-clip:text;background-clip:text}#banner.warning .t{color:#ff2040;text-shadow:0 0 14px #ff0030,0 0 50px #ff0030,0 5px #000;animation:.5s infinite warn}#banner.warning:before,#banner.warning:after{content:"";background:repeating-linear-gradient(-45deg,#ff1a30 0 18px,#1a0004 18px 36px);height:18px;animation:.6s linear infinite stripes;position:absolute;left:0;right:0;box-shadow:0 0 20px #ff0030}#banner.warning:before{top:-36px}#banner.warning:after{bottom:-36px}@keyframes stripes{to{background-position:51px 0}}@keyframes warn{50%{opacity:.35}}#banner.warn .t{color:#ff6a3a;text-shadow:0 0 14px #ff2000,0 4px #000;font-size:clamp(28px,4.5vw,54px)}#banner.clear .t{color:#ffe04a;text-shadow:0 0 16px #ffa000,0 0 40px #ff6a00,0 4px #000;font-size:clamp(32px,5.5vw,64px)}#banner.gameover .t{color:#ff3348;text-shadow:0 0 18px #ff0020,0 0 50px #a00010,0 5px #000}#banner.gameover .s{animation:1s infinite blink}#tally{opacity:0;background:#04060ed1;border:1px solid #ffc85099;width:min(560px,86vw);padding:26px 34px;transition:opacity .3s,transform .4s cubic-bezier(.2,1.4,.4,1);position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)scale(.8);box-shadow:0 0 30px #ff8c0059}#tally.on{opacity:1;transform:translate(-50%,-50%)}#tally .tt{font-family:var(--display);letter-spacing:6px;text-align:center;color:#ffe04a;text-shadow:0 0 14px #ff9a00;margin-bottom:18px;font-size:40px}#tally .row{letter-spacing:2px;opacity:0;border-bottom:1px solid #ffffff14;justify-content:space-between;padding:6px 0;font-size:18px;font-weight:700;animation:.3s forwards rowIn;display:flex}#tally .row b{font-family:var(--display);font-size:22px}#tally .row.p1 b{color:var(--p1);text-shadow:0 0 8px var(--p1)}#tally .row.p2 b{color:var(--p2);text-shadow:0 0 8px var(--p2)}#tally .row:nth-child(2){animation-delay:.3s}#tally .row:nth-child(3){animation-delay:.55s}#tally .row:nth-child(4){animation-delay:.8s}#tally .row:nth-child(5){animation-delay:1.05s}#tally .row:nth-child(6){animation-delay:1.3s}#tally .row:nth-child(7){animation-delay:1.55s}@keyframes rowIn{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:none}}#title{opacity:0;pointer-events:none;background:radial-gradient(#00000026,#000000bf);flex-direction:column;justify-content:center;align-items:center;gap:min(14px,1.8vh);padding:16px;transition:opacity .5s;display:flex;position:absolute;inset:0;overflow-y:auto}#title.on{opacity:1}.ver{letter-spacing:1.5px;opacity:.5;white-space:nowrap;font-size:11px;font-weight:700}#version{z-index:1;position:absolute;bottom:10px;right:14px}#pause .ver{text-align:center;opacity:.4;margin-top:2px}#title:not(.on) *,#pause:not(.on) *{pointer-events:none!important}#title:after{content:"";pointer-events:none;background:repeating-linear-gradient(0deg,#0000002e 0 2px,#0000 2px 4px);position:absolute;inset:0}.logo{text-align:center;line-height:.9}.logo .cabal{font-family:var(--display);letter-spacing:clamp(6px,2vw,26px);color:#fff;text-shadow:0 0 10px #ffb040,0 0 30px #ff7a00,0 0 80px #ff3a00,0 8px #3a0a00;font-size:clamp(56px,min(16vw,21vh),210px);animation:4s infinite flicker}.logo .neon{font-family:var(--display);letter-spacing:clamp(14px,4vw,52px);color:var(--p1);text-shadow:0 0 10px var(--p1), 0 0 30px var(--p1), 0 0 60px #0090ff;margin-bottom:-4px;font-size:clamp(22px,min(5.5vw,7vh),72px)}@keyframes flicker{0%,to{opacity:1}92%{opacity:1}93%{opacity:.6}94%{opacity:1}96%{opacity:.75}97%{opacity:1}}.press{font-family:var(--display);letter-spacing:6px;color:#ffe04a;text-shadow:0 0 12px #ff9a00;margin-top:4px;font-size:clamp(18px,min(3vw,4.2vh),32px);animation:1.1s infinite blink}.sub{letter-spacing:4px;opacity:.8;font-size:14px;font-weight:700}.controls{flex-wrap:wrap;justify-content:center;gap:24px;margin-top:8px;display:flex}.ctl{border:1px solid var(--c);--c:var(--p1);min-width:300px;box-shadow:0 0 14px color-mix(in srgb, var(--c) 40%, transparent);background:#0008108c;padding:12px 20px}.ctl.p2{--c:var(--p2)}.ctl h3{font-family:var(--display);color:var(--c);text-shadow:0 0 10px var(--c);margin-bottom:6px;font-size:24px}.ctl p{letter-spacing:1px;margin:5px 0;font-size:14px;font-weight:700}.ctl p.alt{opacity:.7;font-size:12px}kbd{min-width:22px;font-family:var(--font);text-align:center;background:#ffffff14;border:1px solid #ffffff80;border-bottom-width:3px;border-radius:4px;margin:0 2px;padding:1px 6px;font-size:12px;display:inline-block}.tips{letter-spacing:1px;opacity:.85;text-align:center;flex-direction:column;align-items:center;gap:5px;font-size:13px;font-weight:700;display:flex}.tips .y{color:var(--gold)}.tips .g{color:#6dff3a}.tips .r{color:#ff3a6e}#pause{z-index:5;opacity:0;pointer-events:none;background:#00000080;justify-content:center;align-items:center;padding:16px;transition:opacity .2s;display:flex;position:absolute;inset:0}#pause.on{opacity:1;pointer-events:auto}#pause.live{background:#00000038}#app:has(#pause.on){cursor:default}#pause .panel{clip-path:polygon(0 0,94% 0,100% 8%,100% 100%,6% 100%,0 92%);background:linear-gradient(#040a14c7,#040a14e6);border:1px solid #2fe9ff8c;flex-direction:column;gap:6px;width:min(540px,100%);max-height:100%;padding:18px 24px 16px;display:flex;overflow-y:auto;box-shadow:0 0 22px #2fe9ff40,inset 0 0 18px #0009}#pause .t{font-family:var(--display);letter-spacing:10px;text-align:center;text-shadow:0 0 20px var(--p1);margin-bottom:4px;font-size:clamp(36px,6vw,60px)}#pause .s{text-align:center;letter-spacing:2px;color:#ffe08a;margin:-4px 0 4px;font-size:13px;font-weight:700;display:none}#pause.online .s{display:block}.orow{--c:var(--p1);border:1px solid #0000;grid-template-columns:136px 1fr 58px;align-items:center;gap:14px;padding:7px 10px;transition:background .12s,border-color .12s;display:grid}.orow[data-k=glare]{--c:var(--gold)}.orow.sel{border-color:color-mix(in srgb, var(--c) 55%, transparent);background:color-mix(in srgb, var(--c) 9%, transparent)}.orow .ol{font-family:var(--display);letter-spacing:2px;font-size:16px;line-height:1.1}.orow .ol small{font-family:var(--font);letter-spacing:2px;opacity:.6;font-size:10px;font-weight:700;display:block}.orow .ov{font-family:var(--display);text-align:right;color:var(--c);text-shadow:0 0 8px var(--c);font-size:16px;font-weight:400}.orow input{appearance:none;cursor:pointer;background:0 0;width:100%;height:22px;margin:0}.orow input:focus{outline:none}.orow input::-webkit-slider-runnable-track{background:linear-gradient(90deg, var(--c) var(--p,100%), #ffffff1f var(--p,100%));height:6px;box-shadow:0 0 8px color-mix(in srgb, var(--c) 45%, transparent)}.orow input::-webkit-slider-thumb{-webkit-appearance:none;width:12px;height:20px;box-shadow:0 0 8px var(--c), 0 0 2px #000;background:#fff;border:0;margin-top:-7px;transform:skew(-14deg)}.orow input::-moz-range-track{background:#ffffff1f;height:6px}.orow input::-moz-range-progress{background:var(--c);height:6px;box-shadow:0 0 8px var(--c)}.orow input::-moz-range-thumb{width:12px;height:20px;box-shadow:0 0 8px var(--c);background:#fff;border:0;border-radius:0;transform:skew(-14deg)}.obtns{justify-content:center;gap:12px;margin-top:8px;display:flex}#pause .hint{text-align:center;letter-spacing:2px;opacity:.65;margin-top:4px;font-size:12px;font-weight:700}#pause .hint kbd{min-width:18px;padding:0 4px;font-size:11px}@media (width<=560px){.orow{grid-template-columns:1fr 50px;gap:4px 10px}.orow .ol{grid-column:1/-1}}#fade{opacity:0;pointer-events:none;background:#000;transition:opacity .4s;position:absolute;inset:0}#fade.on{opacity:1}@media (width<=760px){.pp{width:190px;padding:6px 8px}.pp .score{font-size:17px}.pp .tag{font-size:16px}.ctl{width:100%;min-width:0}}#app:has(#title.on){cursor:default}#online{pointer-events:auto;z-index:2;flex-direction:column;align-items:center;gap:8px;display:flex}.btnrow{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}.btn{pointer-events:auto;cursor:pointer;font-family:var(--display);letter-spacing:3px;color:#fff;border:1px solid var(--p1);text-shadow:0 0 8px var(--p1);background:linear-gradient(#2fe9ff38,#2fe9ff0f);padding:10px 22px;font-size:17px;transition:transform .12s,box-shadow .12s;box-shadow:0 0 14px #2fe9ff73,inset 0 0 12px #2fe9ff33}.btn:hover{transform:translateY(-1px)scale(1.03);box-shadow:0 0 24px #2fe9ffcc,inset 0 0 14px #2fe9ff59}.btn kbd{color:#fff}.btn.small{letter-spacing:2px;padding:8px 14px;font-size:13px}#room-box{background:#000a1499;border:1px dashed #2fe9ff99;flex-direction:column;align-items:center;gap:6px;padding:10px 16px;display:none}#room-box.on{display:flex}#room-box .code{font-family:var(--display);letter-spacing:3px;font-size:16px}#room-box .code b{color:var(--p1);text-shadow:0 0 10px var(--p1);letter-spacing:6px;margin-left:8px;font-size:28px}#room-box .linkrow{align-items:center;gap:8px;display:flex}#room-link{pointer-events:auto;width:min(420px,60vw);font-family:var(--font);color:#cfefff;background:#0009;border:1px solid #ffffff40;padding:7px 10px;font-size:13px}#net-status{letter-spacing:2px;color:#ffe08a;text-align:center;min-height:18px;font-size:13px;font-weight:700}#net-status.err{color:#ff6a6a}#net-status.ok{color:#7dff9a}.joinbox,#join-retry{display:none}#join-retry{pointer-events:auto;color:var(--p1);letter-spacing:2px;font-weight:700}#join-retry.on{display:block}#title.joining .press,#title.joining .controls,#title.joining .tips,#title.joining #btn-host,#title.joining .sub{display:none}#title.joining .joinbox{font-family:var(--display);letter-spacing:5px;color:var(--p2);text-shadow:0 0 12px var(--p2);font-size:26px;animation:1s infinite blink;display:block}#title.joining .joinbox b{color:#fff}#netbadge{letter-spacing:1.5px;opacity:0;pointer-events:none;background:#00000073;border:1px solid #ffffff2e;padding:6px 10px;font-size:12px;font-weight:700;transition:opacity .3s;position:absolute;top:12px;left:14px}#netbadge.on{opacity:.92}#netbadge b{color:var(--p1)}#netbadge i{background:#ff4a4a;border-radius:50%;width:8px;height:8px;margin-right:8px;display:inline-block;box-shadow:0 0 8px #ff4a4a}#netbadge i.on{background:#4aff7a;box-shadow:0 0 8px #4aff7a}@media (height<=760px){.ctl{padding:8px 16px}.ctl h3{margin-bottom:2px;font-size:19px}.ctl p{margin:3px 0;font-size:13px}.tips{gap:3px;font-size:12px}.btn{padding:8px 18px;font-size:15px}}#app{touch-action:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}#title{touch-action:pan-y}.only-touch,#touch{display:none}#touch{pointer-events:none;position:fixed;inset:0}#app.touch .only-touch{display:revert}#app.touch .no-touch{display:none}#app.touch #hud:not(.hidden) #touch{display:block}#app.touch .pp.p2[data-state=join]{display:none}#tstick{opacity:0;background:0 0;border:1.5px solid #2fe9ff80;border-radius:32px;width:176px;height:64px;margin:-32px 0 0 -88px;transition:opacity .15s;position:absolute;top:0;left:0}#tstick.on{opacity:.45}#tstick i{background:#2fe9ff1f;border:2px solid #ffffffd9;border-radius:50%;width:52px;height:52px;margin:-26px 0 0 -26px;position:absolute;top:50%;left:50%}.tb{pointer-events:auto;--c:var(--p1);width:72px;height:72px;font-family:var(--display);letter-spacing:1px;color:#fff;text-shadow:0 0 6px var(--c);border:2px solid var(--c);background:color-mix(in srgb, var(--c) 16%, transparent);box-shadow:0 0 12px color-mix(in srgb, var(--c) 45%, transparent);opacity:.8;border-radius:50%;justify-content:center;align-items:center;font-size:14px;display:flex;position:absolute}.tb.down{background:color-mix(in srgb, var(--c) 50%, transparent);opacity:1;transform:scale(.93)}.tb.gren{--c:#6dff3a;right:calc(18px + env(safe-area-inset-right));bottom:112px}.tb.roll{--c:var(--gold);right:calc(102px + env(safe-area-inset-right));bottom:96px}.tb.pause{--c:#e9f3ff;top:10px;right:calc(12px + env(safe-area-inset-right));border-radius:8px;width:44px;height:44px;font-size:16px}@media (orientation:portrait){#game,#hud{height:min(100%,80vw);bottom:auto}#game canvas{height:100%}#top{width:calc(100% - 80px);top:8px}#alert{font-size:18px;top:64px}.pp{width:calc(50% - 22px);top:calc(100% + 10px);bottom:auto}.pp.p1{left:12px}.pp.p2{right:12px}.combo{top:calc(100% - 70px);bottom:auto}.combo b{font-size:32px}#banner{top:30%}}#app:not(.can-fs) .fs-btn,#app:not(.can-fs) .tb.fs,#app.ios-fs .tb.fs{display:none}.tb.fs{--c:#e9f3ff;top:62px;right:calc(12px + env(safe-area-inset-right));border-radius:8px;width:44px;height:44px}.tb.fs i,.tb.fs i:before,.tb.fs i:after{display:block;position:absolute}.tb.fs i{background-color:#0000;background-image:linear-gradient(#fff,#fff),linear-gradient(#fff,#fff),linear-gradient(#fff,#fff),linear-gradient(#fff,#fff),linear-gradient(#fff,#fff),linear-gradient(#fff,#fff),linear-gradient(#fff,#fff),linear-gradient(#fff,#fff);background-position:0 0,0 0,100% 0,100% 0,0 100%,0 100%,100% 100%,100% 100%;background-repeat:no-repeat;background-size:7px 2px,2px 7px,7px 2px,2px 7px,7px 2px,2px 7px,7px 2px,2px 7px;background-attachment:scroll,scroll,scroll,scroll,scroll,scroll,scroll,scroll;background-origin:padding-box,padding-box,padding-box,padding-box,padding-box,padding-box,padding-box,padding-box;background-clip:border-box,border-box,border-box,border-box,border-box,border-box,border-box,border-box;inset:11px}@media (orientation:landscape) and (height<=520px){#top{gap:3px;width:max(200px,100% - 488px);top:6px}#stage-label{letter-spacing:2px;white-space:nowrap;font-size:11px}#stage-label b{font-size:14px}#stage-label span{margin-left:6px;font-size:10px}#gauge .lab{min-width:0;font-size:11px}#gauge .bar{height:9px}#bossbar{top:20px}#bossbar .name{min-width:0;font-size:12px}#alert{font-size:18px;top:54px}.pp{background:linear-gradient(#040a1459,#040a1499);width:170px;padding:4px 8px 5px;top:6px;bottom:auto}.pp.p1{left:calc(8px + env(safe-area-inset-left))}.pp.p2{right:calc(64px + env(safe-area-inset-right))}.pp .tag{font-size:14px}.pp .score{letter-spacing:1px;font-size:15px}.pp .hp{gap:3px;margin:3px 0}.pp .hp i{height:6px}.pp .row{letter-spacing:.5px;font-size:10px}.pp .row b{margin-left:2px;font-size:12px}.pp .weap{gap:5px;margin-top:3px;font-size:10px}.pp .wname{min-width:0}.pp .ammo{height:4px}.pp[data-state=join] .join,.pp[data-state=out] .outmsg{padding:3px 0;font-size:11px}.pp[data-state=continue] .cont{padding:2px 0;font-size:13px}.pp .cont b{font-size:22px}.combo{top:84px;bottom:auto}.combo.p1{left:14px}.combo.p2{right:70px}.combo b{font-size:30px}#netbadge{padding:4px 8px;font-size:10px;top:82px;left:8px}}
