@font-face{font-family:Sora;src:url(../fonts/Sora-VF.subset.woff2)format("woff2");font-weight:100 800;font-display:swap}@font-face{font-family:Figtree;src:url(../fonts/Figtree-VF.subset.woff2)format("woff2");font-weight:300 900;font-display:swap}@font-face{font-family:Noto Sans SC;src:url(../fonts/NotoSansSC-VF.subset.woff2)format("woff2");font-weight:100 900;font-display:swap}:root{--ink:#0d0b1f;--ink-2:#17142f;--ink-3:#2a2452;--ink-4:#3d3673;--cream:#fff4e4;--amber:#ffb347;--gold:#ffd35c;--orange:#ff7a2f;--magenta:#ff3d8e;--cyan:#4fe3ff;--cyan-2:#9ff4ff;--red:#f34;--lime:#9dff5c;--display:"Sora", "Noto Sans SC", system-ui, sans-serif;--body:"Figtree", "Noto Sans SC", system-ui, sans-serif;--safe-t:env(safe-area-inset-top,0px);--safe-b:env(safe-area-inset-bottom,0px);--safe-l:env(safe-area-inset-left,0px);--safe-r:env(safe-area-inset-right,0px);--notch:16px;--label-spacing:.22em}:lang(zh-CN){--label-spacing:.08em;--display:"Noto Sans SC", "Sora", system-ui, sans-serif;--body:"Noto Sans SC", "Figtree", system-ui, sans-serif}*{box-sizing:border-box}html,body{background:var(--ink);height:100%;color:var(--cream);font-family:var(--body);-webkit-font-smoothing:antialiased;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;touch-action:none;margin:0;overflow:hidden}#game{width:100%;height:100%;display:block;position:fixed;inset:0}#ui{pointer-events:none;position:fixed;inset:0}button{font:inherit;color:inherit}.is-hidden{display:none!important}.screen{opacity:0;visibility:hidden;transition:opacity .3s,visibility 0s linear .3s;position:absolute;inset:0}.screen.is-active{opacity:1;visibility:visible;transition:opacity .3s}.screen.is-active :is(button,input,.modal){pointer-events:auto}.outlined,.logo-text,.modal-title,.popup,.banner-title,.hud-mult,.hud-score,.cue,.grade-badge b,.results-total b,.boss-name{font-family:var(--display);paint-order:stroke fill;-webkit-text-stroke:.14em var(--ink)}.screen-boot{background:radial-gradient(120% 90% at 50% 35%, #2a1f5c 0%, var(--ink) 70%);place-content:center;justify-items:center;gap:18px;display:grid}.boot-mark{width:84px;color:var(--amber);filter:drop-shadow(0 0 22px #ff963ccc)drop-shadow(4px 5px #000);animation:2.4s ease-in-out infinite bob}.boot-logo{letter-spacing:.06em;color:var(--gold);font-size:clamp(38px,7vw,68px);font-style:italic;font-weight:800}.boot-bar{background:var(--ink-2);border:2px solid var(--ink-4);width:min(340px,70vw);height:12px;overflow:hidden;transform:skew(-18deg)}.boot-bar i{background:linear-gradient(90deg, var(--magenta), var(--orange), var(--gold));transform-origin:0;height:100%;transition:transform .3s;display:block;transform:scaleX(.04)}.boot-label{letter-spacing:.34em;text-transform:uppercase;opacity:.7;font-size:12px;font-weight:800}.menu{flex-direction:column;align-items:flex-start;gap:12px;display:flex}.menu-row{flex-flow:wrap;justify-content:center;align-items:center;gap:14px}.btn{--skew:-14deg;cursor:pointer;min-width:270px;font-family:var(--display);letter-spacing:.06em;text-transform:uppercase;text-align:left;color:var(--cream);isolation:isolate;background:0 0;border:0;outline:none;padding:14px 32px;font-size:21px;font-weight:800;transition:transform .14s cubic-bezier(.3,1.6,.5,1),color .14s;position:relative}:lang(zh-CN) .btn{letter-spacing:.14em;font-weight:900}.btn:before,.btn:after{content:"";transform:skewX(var(--skew));z-index:-1;position:absolute;inset:0}.btn:before{opacity:.75;background:#000;translate:6px 6px}.btn:after{background:linear-gradient(#2a2452f2,#17142ff2);border:3px solid #fff4e438;box-shadow:inset 0 3px #ffffff14,inset 0 -4px #00000040}.btn span{align-items:center;gap:12px;display:inline-flex;position:relative}.btn span:before{content:"";opacity:0;border-top:8px solid #0000;border-bottom:8px solid #0000;border-left:11px solid;width:0;height:0;margin-left:-23px;transition:all .14s;transform:translate(-8px)}.btn:is(:hover,:focus-visible,:focus){color:var(--ink);transform:translate(10px)scale(1.03)}.btn:is(:hover,:focus-visible,:focus):after{background:linear-gradient(180deg, #ffe8a0, var(--gold) 50%, var(--amber));border-color:#fff4c2}.btn:is(:hover,:focus-visible,:focus):before{background:var(--magenta);opacity:1}.btn:is(:hover,:focus-visible,:focus) span:before{opacity:1;transform:none}.btn:active{transform:translate(10px)scale(.97)}.btn-primary{color:var(--gold)}.btn-primary:after{border-color:var(--amber)}.btn-small{min-width:0;padding:10px 22px;font-size:16px}.menu-row .btn{text-align:center;min-width:190px}.menu-row .btn span{justify-content:center}.menu-row .btn:is(:hover,:focus-visible,:focus){transform:translateY(-3px)scale(1.03)}kbd{background:var(--cream);min-width:1.95em;height:1.95em;color:var(--ink);font:800 .72em/1 var(--display);vertical-align:.1em;border-radius:5px;place-items:center;margin:0 .12em;padding:0 .45em;display:inline-grid;box-shadow:0 3px #9d927f}kbd.wide{min-width:4.2em}kbd.icon{padding:0 .3em}kbd.icon svg{width:.95em;height:1.3em}kbd.round{background:var(--ink-4);color:var(--cream);border-radius:50%;padding:0;box-shadow:0 3px #0a0818}kbd.pill{background:var(--ink-4);color:var(--cream);border-radius:999px;min-width:2.6em;box-shadow:0 3px #0a0818}kbd.a{background:#3fbf6a}kbd.b{background:var(--red)}.bottom-bar{padding:18px calc(32px + var(--safe-r)) calc(16px + var(--safe-b)) calc(32px + var(--safe-l));background:linear-gradient(#0000,#080614d9);justify-content:space-between;align-items:center;gap:16px;font-size:14px;font-weight:700;display:flex;position:absolute;bottom:0;left:0;right:0}.bottom-bar small{opacity:.5;letter-spacing:.04em;font-size:11px;font-weight:600}.prompts{gap:22px;display:flex}.prompts span{align-items:center;gap:6px;display:inline-flex}.title-vignette{background:linear-gradient(90deg,#080614d1 0%,#08061466 40%,#0000 65%),radial-gradient(140% 100% at 60%,#0000 50%,#08061499);position:absolute;inset:0}.title-block{left:calc(clamp(24px, 6vw, 100px) + var(--safe-l));flex-direction:column;gap:16px;display:flex;position:absolute;top:50%;transform:translateY(-54%)}.screen-title.is-active .title-block>*{animation:.7s cubic-bezier(.2,1.2,.4,1) both rise}.screen-title.is-active .tagline{animation-delay:.1s}.screen-title.is-active .menu{animation-delay:.2s}.logo{flex-direction:column;align-items:flex-start;gap:6px;display:flex;position:relative}.logo-text{letter-spacing:.02em;text-transform:uppercase;background:linear-gradient(180deg, #fff7da 0%, var(--gold) 38%, var(--orange) 70%, var(--magenta) 100%);color:#0000;-webkit-text-stroke:.07em var(--ink);filter:drop-shadow(.05em .06em #000)drop-shadow(0 0 28px #ff783c59);-webkit-background-clip:text;background-clip:text;margin:0;font-size:clamp(56px,10.5vw,132px);font-style:italic;font-weight:800;line-height:.88;position:relative}:lang(zh-CN) .logo-text{letter-spacing:.1em;-webkit-text-stroke:.035em var(--ink);font-size:clamp(64px,12vw,150px);font-style:normal;font-weight:900}.logo-sub{background:var(--cyan);color:var(--ink);margin-left:.4em;padding:6px 18px 6px 16px;transform:skew(-14deg);box-shadow:6px 6px #000}.logo-sub span{font:800 clamp(13px, 1.5vw, 18px) var(--display);letter-spacing:.34em;text-transform:uppercase;display:block;transform:skew(14deg)}:lang(zh-CN) .logo-sub span{letter-spacing:.5em;font-weight:900}.tagline{opacity:.92;text-shadow:0 2px #000;max-width:34ch;margin:6px 0 16px;font-size:clamp(15px,1.5vw,18px);font-weight:600;line-height:1.45}.title-best{top:calc(22px + var(--safe-t));left:calc(clamp(24px, 6vw, 100px) + var(--safe-l));border:2px solid var(--gold);font:800 15px var(--display);color:var(--gold);background:#080614cc;padding:7px 18px;position:absolute;transform:skew(-14deg);box-shadow:4px 4px #000}.controls-card{right:calc(clamp(20px, 4vw, 64px) + var(--safe-r));bottom:calc(76px + var(--safe-b));width:min(430px,40vw);clip-path:polygon(var(--notch) 0, 100% 0, 100% calc(100% - var(--notch)), calc(100% - var(--notch)) 100%, 0 100%, 0 var(--notch));background:linear-gradient(#2a2452d1,#0d0b1fdb);border:2px solid #fff4e429;padding:16px 20px 14px;position:absolute}.screen-title.is-active .controls-card{animation:.7s cubic-bezier(.2,1.2,.4,1) .3s both rise}.controls-card h3{font:800 12px var(--display);letter-spacing:var(--label-spacing);text-transform:uppercase;color:var(--cyan);margin:0 0 10px}.controls-grid{grid-template-columns:1fr 1fr;gap:4px 18px;display:grid}.ctl-col h4{font:800 11px var(--display);letter-spacing:var(--label-spacing);text-transform:uppercase;opacity:.6;margin:0 0 6px}.ctl-ico svg{width:12px;height:18px}.ctl-ico.pad{letter-spacing:-2px;font-size:14px}.ctl-col p{align-items:center;gap:2px;min-height:30px;margin:0;font-size:13px;font-weight:700;display:flex}.ctl-col p span{opacity:.85;margin-left:8px}body.has-touch .controls-card{display:none}.screen-modal{-webkit-backdrop-filter:blur(6px)saturate(.8);background:#08061499;place-items:center;display:grid}.modal{width:min(460px,100vw - 32px);max-height:calc(100dvh - 24px);clip-path:polygon(var(--notch) 0, 100% 0, 100% calc(100% - var(--notch)), calc(100% - var(--notch)) 100%, 0 100%, 0 var(--notch));background:linear-gradient(#2a2452f7,#0d0b1ff7);border:3px solid #fff4e429;flex-direction:column;align-items:center;gap:22px;padding:30px 34px 32px;display:flex;position:relative;overflow:auto;box-shadow:inset 0 3px #ffffff12}.screen-modal.is-active .modal{animation:.34s cubic-bezier(.2,1.4,.4,1) both pop}.modal:before{content:"";background:repeating-linear-gradient(-45deg, var(--gold) 0 14px, var(--ink) 14px 28px);opacity:.9;height:6px;position:absolute;top:0;left:0;right:0}.modal .menu{align-items:stretch;width:100%}.modal .menu:not(.menu-row) .btn{text-align:center;min-width:0}.modal .menu:not(.menu-row) .btn span{justify-content:center}.modal .menu:not(.menu-row) .btn:is(:hover,:focus-visible,:focus){transform:scale(1.04)}.modal-wide{width:min(780px,100vw - 32px)}.modal-title{text-transform:uppercase;color:var(--cream);text-align:center;letter-spacing:.03em;filter:drop-shadow(4px 4px #000);margin:0;font-size:clamp(32px,5vw,48px);font-style:italic;font-weight:800}:lang(zh-CN) .modal-title{letter-spacing:.12em;font-style:normal;font-weight:900}.settings-grid{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px 22px;width:100%;display:grid}fieldset{background:#08061466;border:2px solid #fff4e41f;margin:0;padding:12px 16px 6px}fieldset:last-child{grid-column:1/-1}legend{font:800 12px var(--display);letter-spacing:var(--label-spacing);text-transform:uppercase;color:var(--cyan);padding:0 8px}.row{justify-content:space-between;align-items:center;gap:16px;min-height:48px;font-size:16px;font-weight:700;display:flex}.range{align-items:center;gap:10px;display:inline-flex}.range output{text-align:right;min-width:3ch;font:800 14px var(--display);color:var(--gold)}input[type=range]{--fill:50%;appearance:none;background:linear-gradient(90deg, var(--gold) var(--fill), var(--ink) var(--fill));border:2px solid var(--ink-4);cursor:pointer;outline:none;width:150px;height:12px;transform:skew(-14deg)}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;background:var(--cream);border:3px solid var(--ink);width:16px;height:26px;box-shadow:3px 3px #000}input[type=range]::-moz-range-thumb{background:var(--cream);border:3px solid var(--ink);border-radius:0;width:12px;height:22px}input[type=range]:is(:focus-visible,:focus){border-color:var(--gold);box-shadow:0 0 0 3px #ffd35c59}.toggle{cursor:pointer;background:0 0;border:0;outline:none;justify-content:flex-end;align-items:center;gap:10px;min-width:88px;padding:0;font-size:14px;font-weight:800;display:inline-flex}.toggle i{background:var(--ink);border:2px solid var(--ink-4);width:52px;height:28px;transition:all .18s;position:relative;transform:skew(-14deg)}.toggle i:after{content:"";background:#8a84b3;width:18px;height:18px;transition:all .18s cubic-bezier(.3,1.5,.5,1);position:absolute;top:3px;left:3px}.toggle[aria-pressed=true] i{background:var(--gold);border-color:var(--amber)}.toggle[aria-pressed=true] i:after{background:var(--ink);left:27px}.toggle:is(:focus-visible,:focus) i{box-shadow:0 0 0 3px #ffd35c73}.seg{background:var(--ink);border:2px solid var(--ink-4);gap:3px;padding:3px;display:inline-flex;transform:skew(-14deg)}.seg button{cursor:pointer;color:#fff4e4a6;background:0 0;border:0;outline:none;padding:8px 14px;font-size:14px;font-weight:800;transition:all .14s}.seg button>*,.seg button{font-style:normal}.seg button[aria-pressed=true]{background:var(--gold);color:var(--ink)}.seg button:is(:focus-visible,:focus){color:var(--cream);box-shadow:0 0 0 3px #ffd35c8c}.seg button[aria-pressed=true]:is(:focus-visible,:focus){color:var(--ink)}.board-head,.board li{grid-template-columns:44px 1fr 56px 110px;align-items:center;gap:8px;width:100%;display:grid}.board-head{font:800 11px var(--display);letter-spacing:var(--label-spacing);text-transform:uppercase;opacity:.6;padding:0 14px}.board-head em,.board em{text-align:right;font-style:normal}.board{flex-direction:column;gap:6px;width:100%;margin:-12px 0 0;padding:0;list-style:none;display:flex}.board li{border-left:4px solid var(--ink-4);font-variant-numeric:tabular-nums;animation:rise .4s calc(var(--i,0) * 40ms) both;background:#0806148c;padding:9px 14px;font-weight:700}.board li b{font:800 18px var(--display);color:#fff4e499}.board li:first-child{border-left-color:var(--gold)}.board li:first-child b{color:var(--gold)}.board li:nth-child(2) b{color:#d8dcef}.board li:nth-child(3) b{color:#f0a574}.board li em{font:800 17px var(--display);color:var(--gold)}.board li.is-me{outline:2px solid var(--gold);background:#ffd35c2e}.board-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.board .board-empty{text-align:center;opacity:.7;background:0 0;border:0;padding:22px;display:block}.grade-chip{width:30px;height:30px;font:800 16px var(--display);color:var(--ink);background:#8a84b3;place-items:center;font-style:normal;display:inline-grid;transform:skew(-12deg);box-shadow:3px 3px #000}[data-grade=S].grade-chip{background:linear-gradient(180deg, #fff2b0, var(--gold))}[data-grade=A].grade-chip{background:var(--orange)}[data-grade=B].grade-chip{background:var(--cyan)}[data-grade=C].grade-chip{background:#b9a8ff}.modal-results{gap:14px;width:min(560px,100vw - 32px);padding-top:24px}.modal-results .modal-title{font-size:clamp(30px,4.4vw,44px);line-height:1.05}.screen-results.is-won .modal-title{color:var(--gold)}.screen-results:not(.is-won) .modal-title{color:#ffb3c1}.results-main{grid-template-columns:auto 1fr;align-items:center;gap:20px;width:100%;display:grid}.grade-badge{background:var(--ink);border:4px solid var(--gold);place-content:center;justify-items:center;width:132px;height:132px;display:grid;position:relative;transform:rotate(45deg)scale(.78);box-shadow:8px 8px #000}.grade-badge>*{transform:rotate(-45deg)}.grade-badge small{font:800 10px var(--display);letter-spacing:.2em;text-transform:uppercase;color:var(--ink);background:var(--gold);white-space:nowrap;padding:2px 6px;position:absolute;bottom:4px;right:4px;transform:rotate(-45deg)translate(2px,14px)}.grade-badge b{color:var(--gold);-webkit-text-stroke:.08em var(--ink);font-size:96px;font-style:italic;font-weight:800;line-height:1}.screen-results.is-active .grade-badge{animation:.7s cubic-bezier(.2,1.6,.4,1) .3s both gradeIn}.grade-badge[data-grade=S]{border-color:#fff2b0;box-shadow:8px 8px #000,0 0 40px #ffd35c99}.grade-badge[data-grade=A] b{color:var(--orange)}.grade-badge[data-grade=B] b{color:var(--cyan)}.grade-badge[data-grade=C] b,.grade-badge[data-grade=D] b{color:#b9a8ff}.grade-badge[data-grade=X]{border-color:var(--red)}.grade-badge[data-grade=X] b{color:var(--red)}.results-table{flex-direction:column;gap:3px;width:100%;margin:0;display:flex}.results-table>div{font-variant-numeric:tabular-nums;animation:rise .4s calc(.35s + var(--i) * 60ms) both;background:#08061473;justify-content:space-between;gap:12px;padding:5px 12px;display:flex}.results-table dt{opacity:.8;font-size:14px;font-weight:700}.results-table dd{text-align:right;font:800 15px var(--display);margin:0}.results-total{background:#ffd35c1f;border:2px solid #ffd35c73;justify-content:space-between;align-items:baseline;width:100%;padding:8px 16px;display:flex}.results-total span{font:800 15px var(--display);letter-spacing:var(--label-spacing);text-transform:uppercase;color:var(--gold)}.results-total b{color:var(--gold);font-size:34px;font-weight:800}.results-best{background:var(--magenta);color:var(--cream);font:800 13px var(--display);letter-spacing:.14em;text-transform:uppercase;margin-top:-6px;padding:4px 16px;animation:1s ease-in-out infinite pulse;display:none;transform:skew(-14deg);box-shadow:4px 4px #000}.results-best.is-active{display:block}.results-save{flex-wrap:wrap;justify-content:center;align-items:center;gap:10px;width:100%;display:flex}.results-name{border:2px solid var(--ink-4);background:var(--ink);max-width:230px;height:44px;color:var(--cream);font:700 16px var(--body);-webkit-user-select:text;user-select:text;outline:none;flex:160px;padding:0 14px}.results-name:focus{border-color:var(--gold)}.results-saved,.results-rank{font:800 15px var(--display);color:var(--gold);display:none}.results-save.is-saved :is(.results-name,.btn){display:none}.results-save.is-saved :is(.results-saved,.results-rank){display:inline}.results-note{opacity:.7;margin:-4px 0 0;font-size:13px}.screen-hud{font-variant-numeric:tabular-nums}.hud-label{font:800 11px var(--display);letter-spacing:var(--label-spacing);text-transform:uppercase;opacity:.8;text-shadow:0 2px #000}.is-cinematic .screen-hud :is(.hud-score-block,.hud-status,.hud-top-right){opacity:0;transform:translateY(-8px)}.hud-score-block,.hud-status,.hud-top-right{transition:opacity .4s,transform .4s}.hud-score-block{top:calc(16px + var(--safe-t));left:calc(22px + var(--safe-l));flex-direction:column;align-items:flex-start;gap:8px;display:flex;position:absolute}.hud-score-panel{background:linear-gradient(#2a2452cc,#0d0b1fcc);border:2px solid #fff4e429;flex-direction:column;padding:6px 22px 8px 16px;display:flex;transform:skew(-14deg);box-shadow:5px 5px #0009}.hud-score-panel>*{transform:skew(14deg)}.hud-score{color:var(--cream);letter-spacing:.02em;font-size:34px;font-weight:800;line-height:1}.hud-chain{opacity:.35;align-items:center;gap:10px;margin-left:8px;transition:opacity .2s;display:flex}.hud-chain.is-active{opacity:1}.hud-mult{color:var(--amber);font-size:44px;font-style:italic;font-weight:800;line-height:1;transition:color .2s}.hud-chain[data-level="2"] .hud-mult,.hud-chain[data-level="3"] .hud-mult{color:var(--gold)}.hud-chain[data-level="4"] .hud-mult,.hud-chain[data-level="5"] .hud-mult{color:var(--orange)}.hud-chain[data-level="6"] .hud-mult,.hud-chain[data-level="7"] .hud-mult{color:var(--magenta)}.hud-chain[data-level="8"] .hud-mult{color:var(--cyan);text-shadow:0 0 18px #4fe3ffcc}.hud-chain.pop .hud-mult{animation:.4s cubic-bezier(.2,1.8,.4,1) comboPop}.hud-chain-info{flex-direction:column;gap:4px;display:flex}.hud-chain-info span{font:800 13px var(--display);text-shadow:0 2px #000}.hud-chain-info em{color:var(--gold);font-size:16px;font-style:normal}.hud-chain-info small{letter-spacing:var(--label-spacing);text-transform:uppercase;opacity:.8;font-size:10px}.hud-chain-bar{background:#080614cc;border:1px solid #fff4e433;width:110px;height:6px;overflow:hidden;transform:skew(-20deg)}.hud-chain-bar i{background:linear-gradient(90deg, var(--magenta), var(--amber));transform-origin:0;height:100%;display:block}.hud-top-right{top:calc(16px + var(--safe-t));right:calc(22px + var(--safe-r));position:absolute}.hud-pause{cursor:pointer;background:#0d0b1fbf;border:2px solid #fff4e433;place-items:center;width:50px;height:50px;padding:12px;display:grid;transform:skew(-12deg);box-shadow:4px 4px #0009}.hud-pause svg{transform:skew(12deg)}.hud-status{left:calc(22px + var(--safe-l));bottom:calc(22px + var(--safe-b));clip-path:polygon(0 0,calc(100% - 14px) 0,100% 14px,100% 100%,0 100%);background:linear-gradient(#2a2452b8,#0d0b1fd1);border:2px solid #fff4e424;grid-template-columns:auto auto;align-items:center;gap:6px 14px;padding:12px 18px 12px 16px;display:grid;position:absolute}.bar-row{grid-column:1;grid-template-columns:58px 200px 34px;align-items:center;gap:10px;display:grid}.bar-row b{font:800 14px var(--display);text-align:right}.bar{background:#080614e6;border:2px solid #fff4e42e;height:14px;position:relative;overflow:hidden;transform:skew(-20deg)}.bar:after{content:"";background:repeating-linear-gradient(90deg,#0000 0 18px,#080614b3 18px 20px);position:absolute;inset:0}.bar i{transform-origin:0;height:100%;transition:transform .12s linear;display:block}.shield .bar i{background:linear-gradient(180deg, var(--cyan-2), var(--cyan));box-shadow:0 0 12px var(--cyan)}.shield b{color:var(--cyan-2)}.hull .bar i{background:linear-gradient(180deg, #ffe08a, var(--amber))}.hull b{color:var(--gold)}.hud-status.shield-down .shield .hud-label{color:var(--red);opacity:1}.hud-status.is-low .hull .bar i{background:linear-gradient(180deg, #ff8a9a, var(--red));animation:.5s steps(2,end) infinite blink}.hud-status.is-low .hull b{color:var(--red)}.hud-status.shake{animation:.35s shakeX}.roll-pip{--ready:1;background:conic-gradient(var(--gold) calc(var(--ready) * 360deg), #080614e6 0);border:3px solid var(--ink);border-radius:50%;grid-area:1/2/span 2;place-items:center;width:54px;height:54px;display:grid;box-shadow:3px 3px #000}.roll-pip span{background:var(--ink-2);width:42px;height:42px;font:800 10px var(--display);letter-spacing:.08em;text-transform:uppercase;border-radius:50%;place-items:center;display:grid}.roll-pip.is-ready span{background:var(--ink-3);color:var(--gold)}.low-hull{font:800 12px var(--display);letter-spacing:var(--label-spacing);text-transform:uppercase;color:var(--red);text-shadow:0 2px #000;opacity:0;position:absolute;top:-26px;left:16px}.hud-status.is-low .low-hull{opacity:1;animation:.8s steps(2,end) infinite blink}.boss-bar{top:calc(18px + var(--safe-t));opacity:0;width:min(560px,46vw);transition:all .5s cubic-bezier(.2,1.3,.4,1);position:absolute;left:50%;transform:translate(-50%,-30px)}.boss-bar.is-active{opacity:1;transform:translate(-50%)}.boss-head{align-items:baseline;gap:12px;margin-bottom:6px;display:flex}.boss-name{letter-spacing:.08em;color:var(--orange);font-size:22px;font-style:italic;font-weight:800}:lang(zh-CN) .boss-name{letter-spacing:.2em;font-style:normal}.boss-phase{font:800 12px var(--display);letter-spacing:var(--label-spacing);text-transform:uppercase;opacity:.85;text-shadow:0 2px #000}.boss-pips{gap:5px;margin-left:auto;display:flex}.boss-pips i{background:var(--red);width:16px;height:10px;transform:skew(-20deg);box-shadow:2px 2px #000}.boss-pips i.is-done{background:#fff4e42e}.boss-track{background:#080614e6;border:2px solid #fff4e440;height:16px;position:relative;overflow:hidden;transform:skew(-20deg);box-shadow:5px 5px #0009}.boss-track i{transform-origin:0;width:100%;height:100%;transition:transform .15s linear;position:absolute;top:0;left:0}.boss-total{background:#ff3d8e40;bottom:0;height:3px!important;top:auto!important}.boss-fill{background:linear-gradient(180deg, #ffd0a0, var(--orange) 50%, var(--red));box-shadow:0 0 14px #ff5a28b3}.boss-bar[data-phase="3"] .boss-fill{background:linear-gradient(180deg, #fff, #ffd35c 40%, var(--magenta));animation:.6s steps(2,end) infinite blink}.reticle{opacity:0;transition:opacity .2s;position:absolute;inset:0}.reticle.is-visible{opacity:1}body.has-touch .reticle{opacity:.8}.reticle-outer,.reticle-inner{will-change:transform;position:absolute;top:0;left:0}.reticle-outer{width:0;height:0}.reticle-outer i{border:3px solid var(--cyan-2);width:14px;height:14px;filter:drop-shadow(0 0 4px var(--cyan)) drop-shadow(2px 2px 0 #000);transition:transform .12s ease-out,border-color .12s;position:absolute}.reticle-outer i:first-child{border-bottom:0;border-right:0;top:-22px;left:-22px}.reticle-outer i:nth-child(2){border-bottom:0;border-left:0;top:-22px;left:8px}.reticle-outer i:nth-child(3){border-top:0;border-right:0;top:8px;left:-22px}.reticle-outer i:nth-child(4){border-top:0;border-left:0;top:8px;left:8px}.reticle-outer b{background:var(--cream);width:6px;height:6px;box-shadow:0 0 6px var(--cyan);position:absolute;top:-3px;left:-3px}.reticle-inner{transform-origin:50%;border:2px solid #9ff4ffb3;width:16px;height:16px;margin:-8px 0 0 -8px;rotate:45deg}.reticle.is-locked .reticle-outer i{border-color:var(--magenta);filter:drop-shadow(0 0 6px var(--magenta)) drop-shadow(2px 2px 0 #000)}.reticle.is-locked .reticle-outer i:first-child{transform:translate(7px,7px)}.reticle.is-locked .reticle-outer i:nth-child(2){transform:translate(-7px,7px)}.reticle.is-locked .reticle-outer i:nth-child(3){transform:translate(7px,-7px)}.reticle.is-locked .reticle-outer i:nth-child(4){transform:translate(-7px,-7px)}.reticle.is-locked .reticle-inner{border-color:#ff3d8ee6}.banner{opacity:0;pointer-events:none;flex-direction:column;align-items:center;gap:10px;display:flex;position:absolute;top:24%;left:0;right:0}.banner.show{animation:3s cubic-bezier(.2,1,.3,1) both banner}.banner-title{text-transform:uppercase;letter-spacing:.04em;color:var(--gold);filter:drop-shadow(5px 5px #000);text-align:center;padding:0 20px;font-size:clamp(30px,5.2vw,60px);font-style:italic;font-weight:800}:lang(zh-CN) .banner-title{letter-spacing:.14em;font-style:normal;font-weight:900}.banner-sub{font:800 clamp(13px, 1.5vw, 17px) var(--display);letter-spacing:var(--label-spacing);text-transform:uppercase;background:var(--ink);border:2px solid var(--gold);padding:6px 22px;transform:skew(-14deg);box-shadow:5px 5px #000}.banner[data-style=warning] .banner-title{color:var(--red)}.banner[data-style=warning] .banner-sub{border-color:var(--red);color:#ffc2cd}.banner[data-style=clear] .banner-title{color:var(--cyan-2)}.banner[data-style=clear] .banner-sub{border-color:var(--cyan)}.cue{text-align:center;text-transform:uppercase;color:var(--magenta);filter:drop-shadow(4px 4px #000);opacity:0;font-size:clamp(24px,3.6vw,40px);font-style:italic;font-weight:800;position:absolute;top:62%;left:0;right:0}:lang(zh-CN) .cue{font-style:normal;font-weight:900}.cue.show{animation:1.8s both cue}.hint{left:50%;bottom:calc(40px + var(--safe-b));border:2px solid var(--cyan);white-space:nowrap;opacity:0;clip-path:polygon(10px 0,100% 0,100% calc(100% - 10px),calc(100% - 10px) 100%,0 100%,0 10px);background:#0d0b1fdb;padding:12px 26px;font-size:18px;font-weight:700;transition:all .3s cubic-bezier(.2,1.3,.4,1);position:absolute;transform:translate(-50%,20px);box-shadow:5px 5px #000}.hint.is-active{opacity:1;transform:translate(-50%)}.popups{position:absolute;inset:0;overflow:hidden}.popup{color:var(--cream);white-space:nowrap;font-size:22px;font-style:italic;font-weight:800;animation:.8s ease-out both popup;position:absolute;transform:translate(-50%,-50%)}.popup-bonus{color:var(--gold);font-size:34px}.popup-combo{color:var(--amber);font-size:40px;animation:1s ease-out both popupBig}.popup-pickup{color:var(--lime);font-size:26px}.popup-hurt{color:#ff8a9a;font-size:22px}:lang(zh-CN) .popup{font-style:normal}.hurt-vignette{opacity:0;background:radial-gradient(#0000 45%,#ff284699);position:absolute;inset:0}.hurt-vignette[data-kind=shield]{background:radial-gradient(#0000 55%,#4fe3ff73)}.hurt-vignette.flash{animation:.6s ease-out hurt}.letterbox i{background:#000;height:11vh;transition:transform .6s cubic-bezier(.3,1,.3,1);position:absolute;left:0;right:0;transform:scaleY(0)}.letterbox i:first-child{transform-origin:top;top:0}.letterbox i:last-child{transform-origin:bottom;bottom:0}.letterbox.is-active i{transform:scaleY(1)}.warning{opacity:0;transition:opacity .3s;position:absolute;inset:0}.warning.is-active{opacity:1}.warning:before{content:"";animation:.9s ease-in-out infinite blink;position:absolute;inset:0;box-shadow:inset 0 0 120px #ff1e328c}.warning-band{background:repeating-linear-gradient(-45deg, var(--red) 0 22px, #3a0710 22px 44px);border-block:4px solid #000;align-items:center;height:44px;display:flex;position:absolute;left:0;right:0;overflow:hidden}.warning-band.top{top:16vh}.warning-band.bottom{bottom:16vh}.warning-track{white-space:nowrap;gap:60px;padding-left:20px;animation:6s linear infinite scroll;display:flex}.warning-band.bottom .warning-track{animation-direction:reverse}.warning-track span{font:800 26px var(--display);letter-spacing:.3em;color:var(--cream);-webkit-text-stroke:0;background:#000;padding:0 16px;font-style:italic}.touch{display:none}body.has-touch .touch{display:block}body.has-touch .hint{top:calc(92px + var(--safe-t));white-space:normal;text-align:center;width:max-content;max-width:56vw;padding:8px 18px;font-size:15px;bottom:auto}body.has-touch .hud-status{left:50%;bottom:calc(10px + var(--safe-b));padding:8px 12px;transform:translate(-50%)}body.has-touch .bar-row{grid-template-columns:44px 120px 28px}body.has-touch .roll-pip{display:none}body.has-touch .hud-top-right{right:calc(16px + var(--safe-r))}.touch-stick{left:calc(16% + var(--safe-l));opacity:.5;pointer-events:none;background:#0d0b1f4d;border:3px solid #fff4e459;border-radius:50%;width:128px;height:128px;margin:-64px 0 0 -64px;position:absolute;top:68%}.touch-stick.is-active{opacity:1}.touch-stick i{background:var(--cream);border:3px solid var(--ink);border-radius:50%;width:58px;height:58px;margin:-29px 0 0 -29px;position:absolute;top:50%;left:50%;box-shadow:0 4px #0006}.touch-btn{border:4px solid var(--ink);font:800 15px var(--display);color:var(--ink);box-shadow:0 6px 0 var(--ink);touch-action:none;border-radius:50%;place-items:center;display:grid;position:absolute}.touch-btn.is-down{box-shadow:0 2px 0 var(--ink);filter:brightness(1.15);transform:translateY(4px)}.touch-fire{right:calc(26px + var(--safe-r));bottom:calc(30px + var(--safe-b));background:radial-gradient(circle at 40% 35%, #ffe8a0, var(--amber));width:108px;height:108px}.touch-roll{right:calc(150px + var(--safe-r));bottom:calc(46px + var(--safe-b));background:radial-gradient(circle at 40% 35%, #d4fbff, var(--cyan));width:78px;height:78px}.fatal{text-align:center;place-items:center;padding:24px;font-weight:700;display:grid;position:fixed;inset:0}@keyframes rise{0%{opacity:0;transform:translateY(24px)}}@keyframes pop{0%{opacity:0;transform:scale(.86)}}@keyframes bob{50%{transform:translateY(-6px)rotate(-4deg)}}@keyframes pulse{50%{transform:skew(-14deg)scale(1.06)}}@keyframes blink{50%{opacity:.45}}@keyframes shakeX{20%{translate:-6px}40%{translate:5px}60%{translate:-4px}80%{translate:2px}}@keyframes gradeIn{0%{opacity:0;transform:rotate(45deg)scale(2.2)}}@keyframes comboPop{0%{transform:scale(1.8)rotate(-8deg)}}@keyframes popup{0%{opacity:0;transform:translate(-50%,-30%)scale(.6)}15%{opacity:1;transform:translate(-50%,-60%)scale(1.15)}to{opacity:0;transform:translate(-50%,-170%)scale(1)}}@keyframes popupBig{0%{opacity:0;transform:translate(-50%,-50%)scale(2.2)}15%{opacity:1;transform:translate(-50%,-80%)scale(1)}70%{opacity:1}to{opacity:0;transform:translate(-50%,-220%)scale(.9)}}@keyframes hurt{0%{opacity:1}}@keyframes banner{0%{opacity:0;filter:blur(6px);transform:scaleX(1.6)scaleY(.4)}10%{opacity:1;filter:none;transform:none}82%{opacity:1;transform:none}to{opacity:0;transform:translate(-60px)}}@keyframes cue{0%{opacity:0;transform:scale(1.6)}12%{opacity:1;transform:scale(1)}25%,45%,65%{opacity:1}35%,55%{opacity:.4}to{opacity:0}}@keyframes scroll{to{transform:translate(-50%)}}@media (max-width:900px),(max-height:560px){.btn{min-width:220px;padding:11px 24px;font-size:17px}.menu{gap:9px}.hud-score{font-size:26px}.hud-mult{font-size:34px}.bottom-bar small{display:none}.modal{gap:14px;padding:20px 20px 22px}.modal-title{font-size:30px}.settings-grid{gap:10px}.row{min-height:42px;font-size:14px}.controls-card{display:none}.tagline{margin-bottom:6px}.grade-badge{width:100px;height:100px}.grade-badge b{font-size:70px}.boss-bar{width:min(420px,44vw)}.boss-name{font-size:17px}.banner{top:20%}.warning-band{height:34px}.warning-track span{font-size:20px}.logo-text{font-size:clamp(48px,9vw,90px)}}@media (max-height:460px){.title-block{gap:6px;transform:translateY(-50%)}.logo-text,:lang(zh-CN) .logo-text{font-size:clamp(40px,13vh,64px)}.logo-sub span{font-size:12px}.tagline{max-width:40ch;margin:2px 0 6px;font-size:13px}.menu{gap:7px}.btn{min-width:200px;padding:8px 20px;font-size:15px}.title-best{top:calc(10px + var(--safe-t));font-size:13px}.modal{gap:10px;max-height:calc(100vh - 20px);padding:14px 18px 16px;overflow-y:auto}.modal-title{font-size:26px}.row{min-height:36px}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}
