:root{font-family:Inter,"SF Pro Display","PingFang SC","Microsoft YaHei",sans-serif;color:#282a2b;background:#f7f7ef;font-synthesis:none;--lime:#d4ef60;--purple:#7661b8}*{box-sizing:border-box}body{margin:0}button,input,a{-webkit-tap-highlight-color:transparent}button,a,input,label.upload{touch-action:manipulation}button{font:inherit;cursor:pointer}button:disabled{cursor:default;opacity:.42}button:focus-visible,a:focus-visible,input:focus-visible,#scene:focus-visible{outline:3px solid #7f62c0;outline-offset:4px}button{color:inherit}button:hover:not(:disabled){filter:brightness(.96)}[hidden]{display:none!important}.topbar{max-width:1440px;padding:24px 48px;margin:auto;display:flex;align-items:center;gap:24px;border-bottom:1px solid #dedfd4}.brand{display:flex;align-items:center;gap:9px;color:#292c28;text-decoration:none;font-size:30px;font-weight:850;letter-spacing:-1.8px}.brand img{width:34px;height:34px;border-radius:10px}.nine{color:#8a9f37}.divider{width:1px;height:21px;background:#d8d9cf}.playroom{font-size:11px;letter-spacing:2px;font-weight:750}.playroom span{letter-spacing:0;color:#81837a;margin-left:10px;font-weight:400}.preview{margin-left:auto;font-size:11px;display:flex;gap:8px;align-items:center}.preview i,.mode-label i,.arena-footer i,.target-tag i{width:6px;height:6px;border-radius:50%;background:#7d9633;display:inline-block}main{max-width:1440px;margin:auto;padding:28px 48px 24px}.intro{display:flex;justify-content:space-between;align-items:center;margin-bottom:26px}.eyebrow{font-size:10px;letter-spacing:2px;font-weight:700;color:#7a7e71}h1{font-size:52px;letter-spacing:-2px;line-height:1.2;margin:12px 0}h1 span{position:relative;z-index:0}h1 span:after{position:absolute;content:"";background:var(--lime);height:17px;bottom:3px;left:0;right:0;z-index:-1;transform:rotate(-3deg)}h1 svg{width:44px;height:44px;fill:none;stroke:#819b36;stroke-width:3;margin-left:15px}.intro p{font-size:13px;color:#808277;margin:10px 0 0}.intro-note{display:flex;gap:14px;align-items:center;font-size:13px;line-height:1.8;margin:18px 12px 0 0;transform:rotate(4deg)}.intro-note b{font-weight:600}.asterisk{font-size:48px;color:#9aac46;line-height:1}.arena{height:min(610px,66vw);min-height:520px;position:relative;border-radius:24px;overflow:hidden;background:#e5e0ec;border:1px solid #d5d0db;isolation:isolate}#scene{position:absolute;inset:0;touch-action:manipulation;cursor:crosshair}#scene canvas{display:block;width:100%;height:100%}.grain{pointer-events:none;position:absolute;inset:0;background:linear-gradient(90deg,#f4eeff33,transparent 35%,transparent 65%,#f4eeff33);box-shadow:inset 0 0 100px #8b80a214}.arena-top{position:absolute;top:22px;left:26px;right:22px;display:flex;justify-content:space-between;align-items:center;pointer-events:none}.mode-label{font-size:11px;letter-spacing:1.6px;font-weight:750;display:flex;align-items:center;gap:8px}.mode-label span{font-size:9px;font-weight:400;margin-left:6px;opacity:.45}.tools{display:flex;gap:8px;pointer-events:auto}.icon-button{width:34px;height:34px;border-radius:50%;border:1px solid #ffffffb0;background:#ffffff70;font-size:19px}.target-card{position:absolute;top:100px;left:28px;width:184px;background:#fffdf3d6;padding:20px;border:1px solid #fff;box-shadow:0 9px 24px #4f376308;border-radius:15px;transform:rotate(-2deg);backdrop-filter:blur(12px)}.tiny-label{display:block;letter-spacing:1.6px;font-size:8px;color:#93948a;font-weight:650}.target-card>label:not(.upload){font-size:10px;color:#858478;display:block;margin-top:18px}.name-row{display:flex;align-items:center;margin-top:4px}.name-row input{font:700 21px "PingFang SC",sans-serif;background:transparent;border:0;border-bottom:1px dashed #bdbdaf;min-width:0;width:100%;padding:0 0 8px;color:#363830}.name-row>span{font-size:23px;margin-left:5px;color:#8d9c5a}.upload{display:block;border:1px solid #d6d7c9;border-radius:7px;font-size:11px;padding:9px 6px;text-align:center;cursor:pointer;margin-top:15px}.upload input{position:absolute;width:1px;height:1px;opacity:0}.upload:focus-within{outline:2px solid var(--purple)}.target-card small{display:block;font-size:8px;color:#9a9b91;text-align:center;margin-top:9px;line-height:1.4}.score-card{position:absolute;right:33px;top:105px;width:140px}.score-card>strong{font-size:53px;letter-spacing:-3px;font-weight:500;display:block;margin:6px 0 5px;font-variant-numeric:tabular-nums}.score-card>div:not(.relief){display:flex;justify-content:space-between;align-items:center;font-size:10px;color:#827d8d}.score-card b{font-size:16px;color:#49464f}.score-card em{font-size:8px;font-style:normal;font-weight:400}.relief{height:4px;border-radius:3px;background:#bdb1ce50;margin-top:14px;overflow:hidden}.relief i{display:block;height:100%;width:0;background:#8e74c4;transition:width .3s}.speech{position:absolute;background:#fff8f0;border:1px solid #ffffffa0;box-shadow:0 5px 12px #6e5b6e10;border-radius:8px 8px 8px 0;padding:10px 14px;font-size:12px;color:#615d66;pointer-events:none;transition:transform .18s}.speech-one{top:72px;left:32%;transform:rotate(-7deg)}.speech-two{top:270px;right:7%;background:var(--lime);transform:rotate(7deg);font-weight:600}.target-tag{position:absolute;bottom:155px;left:50%;transform:translateX(-50%);background:#fffef3e0;border:1px solid #fff;border-radius:30px;padding:9px 14px;font-size:12px;display:flex;gap:8px;align-items:center;white-space:nowrap;pointer-events:none}.tag-small{font-size:9px;color:#9b998f;margin-left:8px}.verdict{position:absolute;top:41%;left:50%;transform:translate(-50%,-50%);font-size:35px;letter-spacing:1px;font-weight:900;font-style:italic;text-align:center;color:#fff;text-shadow:0 3px 0 #78609c,0 0 25px #68547f;pointer-events:none;opacity:0}.verdict.show{animation:verdict .5s ease-out forwards}.verdict small{display:block;font-size:12px;font-style:normal;letter-spacing:0;margin-top:4px}@keyframes verdict{0%{opacity:1;transform:translate(-50%,-20%) scale(.8)}25%{transform:translate(-50%,-50%) scale(1.06)}70%{opacity:1}100%{opacity:0;transform:translate(-50%,-100%)}}.start-card{position:absolute;bottom:54px;left:50%;transform:translateX(-50%);width:min(650px,calc(100% - 48px));padding:17px 20px;display:flex;align-items:center;gap:14px;background:#fcfcf4f0;border:1px solid #fff;border-radius:14px;box-shadow:0 10px 35px #68537f14;backdrop-filter:blur(20px);z-index:3}.start-icon{width:38px;height:38px;border-radius:50%;background:#e9e3f2;color:#8d74b7;font-size:25px;display:grid;place-items:center;flex-shrink:0}.start-card h2{font-size:14px;margin:0 0 6px;font-weight:650}.start-card p{font-size:10px;color:#8e8e85;margin:0;line-height:1.6}.primary{display:flex;justify-content:space-between;align-items:center;gap:22px;border:0;border-radius:9px;background:var(--lime);font-size:12px;font-weight:650;padding:15px 18px;margin-left:auto;white-space:nowrap}.primary span{font-size:18px}.arena-footer{position:absolute;left:26px;right:26px;bottom:18px;display:flex;justify-content:space-between;gap:8px;font-size:9px;color:#8b8098}.arena-footer>span:first-child{display:flex;align-items:center;gap:7px}kbd{font-size:8px;padding:2px 4px;border:1px solid #a79caf60;border-radius:3px;margin:0 3px 0 10px}.rhythm{position:absolute;bottom:51px;left:50%;transform:translateX(-50%);width:min(520px,calc(100% - 48px));height:79px;opacity:0;pointer-events:none}.playing .rhythm,.paused .rhythm{opacity:1;pointer-events:auto}.rhythm-caption{font-size:10px;display:flex;justify-content:space-between;color:#746682;margin-bottom:5px;padding-right:84px}.rhythm canvas{width:calc(100% - 84px);height:48px;border-radius:12px;background:#fffaf5a8;border:1px solid #fff}.throw-button{position:absolute;right:0;top:0;width:70px;height:72px;background:var(--lime);border:1px solid #edffb1;border-radius:12px;font-size:25px;font-weight:750}.throw-button span{display:block;font-size:7px;font-weight:400;margin-top:3px}.below{display:flex;align-items:center;gap:24px;padding:24px 0;border-bottom:1px solid #e1e2d7}.track{display:flex;align-items:center;gap:13px;flex:1}.album{height:48px;width:48px;border-radius:10px;background:#ddd5eb;position:relative;display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:800;color:#715c92;transform:rotate(-4deg)}.album span{position:absolute;font-size:10px;bottom:3px;right:5px}.track h3{font-size:13px;margin:5px 0}.track h3 span{font-size:8px;color:#85887a;letter-spacing:.6px;font-weight:400;margin-left:10px}.track p{font-size:9px;color:#929587;margin:0}.equalizer{display:flex;gap:3px;align-items:center;height:20px;margin-left:10px}.equalizer i{height:7px;width:3px;background:#a3b75e;border-radius:2px}.equalizer i:nth-child(2){height:17px}.equalizer i:nth-child(3){height:12px}body.is-playing .equalizer i{animation:eq .5s infinite alternate}body.is-playing .equalizer i:nth-child(2){animation-delay:.3s}body.is-playing .equalizer i:nth-child(3){animation-delay:.15s}@keyframes eq{to{height:4px}}.difficulty{display:flex;align-items:center;gap:15px;font-size:10px;color:#858878}.segmented{display:flex;border:1px solid #dedfd4;border-radius:9px;padding:3px;gap:3px}.segmented button{border:0;background:transparent;font-size:10px;padding:10px 14px;border-radius:6px;color:#8b8d82}.segmented button.selected{background:#e7ebd5;color:#4e5c2f}.text-button{border:0;background:none;font-size:11px;padding:10px 0 10px 20px}.text-button span{margin-left:15px;color:#8e9f5b}.bottom-note{font-size:8px;color:#999e8c;letter-spacing:1px;display:flex;justify-content:space-between;margin-top:19px}.bottom-note span:last-child{letter-spacing:0}.help{font-size:12px;color:#787c6e;line-height:1.9;padding:20px;background:#efefe5;border-radius:10px;margin-top:12px}.ready{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);padding:16px 24px;background:#262d23;color:#fff;border-radius:14px;box-shadow:0 5px 20px #0003;z-index:10;display:flex;align-items:center;gap:25px;font-size:13px;width:max-content;max-width:95%}.ready a{color:#d4ef60;white-space:nowrap;text-decoration:none}.unavailable{position:absolute;inset:0;background:#e9e4ed;display:grid;place-content:center;text-align:center;padding:30px;line-height:1.8;font-size:14px;z-index:5}
@media(min-width:1500px){main{padding-top:32px}.arena{height:610px}}@media(max-width:1000px){.topbar{padding:20px 28px}main{padding:24px 28px}.target-card{width:155px;left:20px;padding:15px}.score-card{width:115px;right:25px}.score-card>strong{font-size:43px}.speech-one{left:29%;font-size:10px}.speech-two{right:4%;font-size:10px}.below{gap:16px}.difficulty{gap:8px}.text-button{padding-left:4px}}
@media(max-width:680px){.topbar{padding:17px 20px;gap:14px}.brand{font-size:25px}.brand img{width:28px;height:28px}.playroom{font-size:9px;letter-spacing:1px}.playroom span,.divider{display:none}.preview{font-size:9px}main{padding:23px 16px 20px}.eyebrow{font-size:8px;letter-spacing:1.5px}h1{font-size:38px;margin:10px 0}h1 svg{width:31px;height:31px;margin-left:8px}.intro{margin-bottom:22px}.intro p{font-size:11px;margin-top:9px}.intro-note{display:none}.arena{height:580px;min-height:0;border-radius:20px}.arena-top{left:18px;right:14px;top:16px}.mode-label{font-size:9px}.mode-label span{display:none}.icon-button{width:31px;height:31px;font-size:16px}.target-card{top:67px;left:17px;width:137px;padding:12px;transform:rotate(-2deg)}.tiny-label{font-size:7px;letter-spacing:1px}.target-card>label:not(.upload){margin-top:8px;font-size:9px}.name-row input{font-size:17px;padding-bottom:4px}.name-row>span{font-size:17px}.upload{font-size:9px;padding:7px;margin-top:9px}.target-card small{font-size:6px;margin-top:6px}.score-card{right:19px;top:75px;width:103px}.score-card>strong{font-size:38px;margin:4px 0}.score-card>div:not(.relief){font-size:9px}.score-card b{font-size:13px}.relief{margin-top:9px}.speech-one{top:227px;left:16px;font-size:9px;padding:7px 10px}.speech-two{right:14px;top:355px;font-size:9px;padding:8px 11px}.target-tag{bottom:161px;padding:7px 12px;font-size:10px}.tag-small{display:none}.start-card{bottom:48px;padding:15px;gap:8px;width:calc(100% - 28px);flex-wrap:wrap;border-radius:12px}.start-icon{display:none}.start-card h2{font-size:12px}.start-card p{font-size:8px}.primary{font-size:11px;padding:12px 14px;gap:8px}.arena-footer{left:17px;right:17px;bottom:17px;font-size:8px}.arena-footer>span:nth-child(2){font-size:7px}.keyboard-hint{display:none}.rhythm{bottom:57px;width:calc(100% - 34px);height:72px}.rhythm-caption{font-size:9px}.verdict{top:50%;font-size:30px}.below{flex-wrap:wrap;padding:19px 0;gap:20px 10px}.track{min-width:100%}.album{width:43px;height:43px}.track h3{font-size:12px}.equalizer{margin-left:auto;margin-right:8px}.difficulty{flex:1;justify-content:space-between;padding-right:10px}.segmented button{font-size:9px;padding:9px 11px}.text-button{font-size:10px}.text-button span{margin-left:7px}.bottom-note{font-size:6px;letter-spacing:.5px;gap:8px}.ready{font-size:11px;gap:12px;padding:16px}.playing .target-card,.paused .target-card{opacity:.65}.playing .target-card:focus-within,.paused .target-card:focus-within{opacity:1}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition:none!important}.verdict.show{opacity:1}}
/* V2: a complete party arena. The scene owns the page; controls become a compact HUD. */
:root{background:#151d2b;color:#eef0f2;--lime:#f4cf72;--purple:#a180c2}.topbar{max-width:1640px;padding:14px 30px;border-color:#ffffff0c;gap:20px}.brand{color:#f3f0e5;font-size:25px}.brand img{width:29px;height:29px}.nine{color:#e2c775}.playroom span,.preview{color:#9fabbc}.divider{background:#475061}.preview i{background:#e9c974}main{max-width:1640px;padding:16px 30px 18px}.intro{margin:0 0 16px;align-items:center}.eyebrow{font-size:8px;color:#a4b0c2;letter-spacing:2px}h1{font-size:32px;letter-spacing:1px;margin:5px 0 0;display:inline-block}h1 span{color:#f5d781}h1 span:after{display:none}h1 svg{width:28px;height:28px;stroke:#d9c27d;vertical-align:middle;margin-left:12px}.intro p{display:inline-block;margin:0 0 0 25px;font-size:11px;color:#9cabbf}.intro-note{font-size:10px;margin:0;transform:none;color:#afb6bd}.asterisk{font-size:31px;color:#dfbf67}.arena{height:calc(100dvh - 240px);min-height:490px;max-height:920px;border-radius:16px;background:#4f6173;border:1px solid #8a9dae44;box-shadow:0 18px 60px #0002}.grain{background:linear-gradient(180deg,#0c1c303b,transparent 23%,transparent 60%,#101c3a88);box-shadow:inset 0 0 100px #18213830}.arena-top{top:19px;left:22px;right:20px}.mode-label{font-size:10px;color:#fff4ce;letter-spacing:2px;text-shadow:0 1px 6px #0007}.mode-label i{background:#efcd73}.icon-button{background:#1e304cbb;border-color:#ffffff30;color:#f5e3b1;width:34px;height:34px}.target-card{left:20px;top:68px;width:156px;padding:14px;background:#1d2e43df;border-color:#9aaec52b;transform:none;border-radius:10px;color:#f3e9d8;box-shadow:0 6px 20px #12213330}.target-card .tiny-label{color:#b0bdd0}.target-card>label:not(.upload){color:#99abc0;font-size:9px;margin-top:11px}.name-row input{color:#fff0cf;font-size:18px;border-color:#8c9ca84a}.name-row>span{color:#c5c5a7;font-size:18px}.upload{color:#d3e4ed;border-color:#728ca65c;font-size:10px;padding:8px;margin-top:11px}.target-card small{font-size:7px;color:#8399af}.score-card{right:21px;top:74px;background:#1b2d41bd;border:1px solid #a0b2c02b;border-radius:10px;padding:13px 16px;width:136px}.score-card .tiny-label{color:#a8b9c9;font-size:7px}.score-card>strong{font-size:40px;color:#ffdd87;letter-spacing:-1px;margin:3px 0}.score-card>div:not(.relief){color:#acb9c6;font-size:9px}.score-card b{color:#f8f3de}.relief{background:#91a1b633;height:3px;margin-top:10px}.relief i{background:#ffd477}.speech{display:none}.target-tag{bottom:auto;background:#26344ae6;border:1px solid #d8be80a6;border-radius:6px;padding:5px 11px;font-size:10px;color:#ffdda0;transform:translate(-50%,-100%);box-shadow:0 3px 12px #0004}.target-tag i{background:#f3d685;width:4px;height:4px}.tag-small{display:none}.verdict{top:40%;font-size:37px;text-shadow:3px 4px 0 #73532c,0 0 25px #443127;color:#ffe18b}.verdict small{color:#fff8df;font-size:12px;text-shadow:0 2px 4px #000b}.start-card{bottom:42px;width:min(590px,calc(100% - 40px));padding:15px 18px;background:#16283eee;border:1px solid #90a8c250;color:#f8efdc;border-radius:10px;box-shadow:0 8px 30px #101e3433}.start-card h2{font-size:14px}.start-card p{color:#b0bdc8;font-size:10px}.start-icon{background:#9bb9c120;color:#f4d381}.primary{background:#f0cf79;color:#443322;box-shadow:0 3px 0 #aa8649;border:1px solid #ffe4a3;border-radius:7px;font-weight:800}.arena-footer{color:#c0cbd7;font-size:8px;bottom:14px;left:20px;right:20px}.arena-footer i{background:#edcf86}.rhythm{bottom:43px;height:76px;width:min(570px,calc(100% - 40px))}.rhythm-caption{color:#f6e3b3;text-shadow:0 2px 3px #152331;margin-bottom:5px}.rhythm canvas{background:#263951d9;border:1px solid #9aacbc66}.throw-button{background:#f2ce77;color:#392f24;border:1px solid #ffe7a4;box-shadow:0 3px 0 #a2824e}.below{border-color:#ffffff0b;padding:16px 0;gap:18px}.album{background:#384558;color:#efd8a0;height:40px;width:40px}.track h3{font-size:12px}.track .tiny-label{font-size:7px;color:#8492a6}.track h3 span,.track p{color:#8895a9;font-size:8px}.track p{margin-top:2px}.track h3{margin:4px 0}.equalizer i{background:#d7bf77}.difficulty{color:#a8b4c1}.segmented{border-color:#4b586933}.segmented button{color:#93a1b3;padding:8px 12px}.segmented button.selected{background:#3a4147;color:#f4d997}.text-button{color:#d2d8db}.text-button span{color:#e0ca91}.bottom-note{margin-top:8px;color:#617287}.help{background:#203046;color:#b5c3d0}.playing .target-card{opacity:.6}.playing .target-card:hover,.playing .target-card:focus-within{opacity:1}.unavailable{background:#25374f;color:#fff}
@media(min-width:1500px){main{padding-top:16px}.arena{height:calc(100dvh - 240px)}}
@media(max-width:680px){.topbar{padding:13px 16px;gap:15px}.brand{font-size:23px}.brand img{width:26px;height:26px}.preview{font-size:8px}.playroom{font-size:8px}.intro{margin:0 0 12px}main{padding:14px 10px 16px}.eyebrow{font-size:7px}h1{font-size:26px;letter-spacing:1px}h1 svg{width:23px;height:23px}.intro p{display:block;font-size:9px;margin:6px 0 0}.arena{height:calc(100dvh - 205px);min-height:570px;max-height:790px;border-radius:12px}.arena-top{left:13px;right:12px;top:13px}.mode-label{font-size:8px;letter-spacing:1px}.icon-button{width:29px;height:29px}.target-card{top:54px;left:12px;padding:10px;width:125px;background:#1d2e43c9}.target-card>label:not(.upload){margin-top:6px;font-size:8px}.name-row input{font-size:15px;padding-bottom:4px}.upload{font-size:8px;padding:6px;margin-top:8px}.target-card small{font-size:6px}.score-card{right:12px;top:54px;width:100px;padding:10px}.score-card>strong{font-size:30px}.score-card .tiny-label{font-size:6px}.score-card>div:not(.relief){font-size:8px}.score-card b{font-size:12px}.target-tag{font-size:9px;padding:5px 9px}.start-card{width:calc(100% - 24px);bottom:42px;padding:12px;gap:8px}.start-card h2{font-size:11px}.start-card p{font-size:7px}.primary{padding:12px 10px;font-size:10px;gap:6px}.arena-footer{left:13px;right:13px;font-size:7px}.rhythm{width:calc(100% - 26px);bottom:43px}.verdict{font-size:29px;top:43%}.below{padding:14px 4px;gap:15px}.track{gap:10px}.track h3{font-size:11px}.difficulty{font-size:9px}.segmented button{font-size:9px;padding:8px 10px}.bottom-note{padding:0 4px;font-size:6px}.playing .target-card{opacity:.4}.playing .score-card{opacity:.8}}
.adjust-face{background:none;color:#d5bd84;border:0;padding:6px 0 0;font-size:9px;width:100%;text-decoration:underline;text-underline-offset:3px}.sfx-control{display:flex;align-items:center;gap:7px;font-size:9px;color:#acb9c6;white-space:nowrap}.sfx-control input{width:72px;accent-color:#edcd78}.sfx-control output{width:27px;color:#e4d29c;font-size:8px}#faceDialog{width:min(370px,calc(100vw - 24px));border:1px solid #63758d;border-radius:16px;padding:22px;background:#1b2c42;color:#fff1d0;box-shadow:0 20px 100px #0008}#faceDialog::backdrop{background:#08111dcc;backdrop-filter:blur(5px)}#faceDialog h2{font-size:19px;margin:0 0 8px}#faceDialog p{font-size:11px;color:#aabed0;margin:0 0 16px}#faceCrop{display:block;width:100%;aspect-ratio:1;border-radius:12px;touch-action:none;cursor:grab}#faceDialog>label{display:flex;align-items:center;gap:14px;font-size:11px;margin-top:13px}#faceDialog input{flex:1;accent-color:#edcd78}.crop-actions{display:flex;justify-content:space-between;gap:15px;margin-top:18px}.crop-actions button:not(.primary){color:#b8c6d5;background:transparent;border:1px solid #51627a;border-radius:8px;padding:10px 18px}.crop-actions .primary{font-size:11px;padding:12px 15px}#faceDialog small{display:block;text-align:center;font-size:9px;color:#7d94ac;margin-top:16px}@media(max-width:1000px){.below{flex-wrap:wrap}.sfx-control{margin-left:auto}}@media(max-width:680px){.adjust-face{font-size:8px;padding-top:5px}.sfx-control{margin-left:0;order:3;flex:1}.sfx-control input{width:95px}.below .text-button{order:4}.target-card{padding-bottom:8px}}
/* Beat impact V4: one audio-clock-driven hit lights the entire rhythm rail. */
.rhythm{--impact:0;height:96px;bottom:41px;filter:drop-shadow(0 0 calc(var(--impact)*18px) #ffd46c);transform:translateX(-50%)}.rhythm-caption{align-items:center;gap:10px;margin-bottom:6px;min-height:16px}.rhythm-caption #cue{flex:1;white-space:nowrap;font-size:9px}.rhythm-caption #roundProgress{font-variant-numeric:tabular-nums;color:#c4d6ee;font-size:9px}.combo-badge{font-weight:900;font-size:10px;letter-spacing:.9px;color:#ffe598;white-space:nowrap;text-shadow:0 0 12px #ffcc7180;transform-origin:center}.rhythm canvas{height:68px;border-radius:12px;border-color:#d8c38088;box-shadow:0 0 calc(3px + var(--impact)*23px) #ffd37588,inset 0 0 12px #ffcc6314}.rhythm.hot canvas{border-color:#ffa67d;box-shadow:0 0 calc(6px + var(--impact)*30px) #ff965d88}.rhythm.hot .combo-badge{color:#ffad79}.throw-button{top:22px;height:68px;box-shadow:0 3px 0 #9a713d,0 0 calc(var(--impact)*26px) #ffd56c;color:#382b1c}.throw-button:active:not(:disabled){transform:translateY(2px);box-shadow:0 1px 0 #9a713d}.playing .score-card>strong{color:#ffe49e}.relief i{box-shadow:0 0 9px #f3d780}.start-card{bottom:43px}@media(max-width:680px){.rhythm{height:96px;bottom:40px;width:calc(100% - 26px)}.rhythm-caption{gap:5px;padding-right:77px}.rhythm-caption #cue{font-size:8px;white-space:normal;line-height:1.25}.combo-badge{font-size:8px;letter-spacing:.3px}.rhythm-caption #roundProgress{font-size:8px}.rhythm canvas{width:calc(100% - 77px)}.throw-button{width:65px;font-size:24px}.rhythm.hot canvas{box-shadow:0 0 calc(5px + var(--impact)*18px) #ff965d66}}@media(prefers-reduced-motion:reduce){.rhythm{filter:none}.rhythm canvas,.rhythm.hot canvas{box-shadow:none}.combo-badge{text-shadow:none}}

/* Weapon progression: a compact, glanceable inventory in the arena. */
.weapon-card{--weapon-color:#ffe395;position:absolute;left:24px;bottom:153px;width:190px;padding:14px 16px;background:linear-gradient(135deg,#17253af5,#25364ce8);border:1px solid color-mix(in srgb,var(--weapon-color) 45%,transparent);border-radius:14px;color:#fff3d1;pointer-events:none;box-shadow:0 8px 22px #101c2940}
.weapon-card>div:first-child{display:flex;justify-content:space-between;align-items:center;font-size:10px;letter-spacing:1px;color:var(--weapon-color)}.weapon-stage{opacity:.5;font-size:8px;letter-spacing:0}.weapon-card strong{display:block;font-size:20px;margin:7px 0 9px}.weapon-card small{display:block;font-size:10px;color:#b7c5d8;margin-top:7px}.weapon-meter{height:4px;background:#72829840;border-radius:4px;overflow:hidden}.weapon-meter i{display:block;width:0;height:100%;background:var(--weapon-color);box-shadow:0 0 12px var(--weapon-color);transition:width .12s}.weapon-card.upgrade{animation:weapon-up .5s ease-out}.weapon-card[data-tier="4"]{box-shadow:0 0 28px #ffce6440;border-color:#ffdf77}.rhythm.hot{border-color:var(--weapon-color,#ffbc7f)}#soundSelect{background:#18273c;color:#eadbb6;border:1px solid #61708655;border-radius:8px;padding:8px;font:inherit;font-size:11px;max-width:145px}.below{flex-wrap:wrap;row-gap:12px}@keyframes weapon-up{0%{transform:scale(1.12);box-shadow:0 0 45px var(--weapon-color)}100%{transform:scale(1)}}
@media(max-width:680px){.weapon-card{left:12px;bottom:147px;width:140px;padding:9px 11px;border-radius:10px}.weapon-card strong{font-size:16px;margin:5px 0 6px}.weapon-card small{font-size:9px}.weapon-stage{display:none}.weapon-card>div:first-child{font-size:9px}#soundSelect{max-width:128px}.is-playing .speech{opacity:0}}
@media(prefers-reduced-motion:reduce){.weapon-card.upgrade{animation:none}.weapon-meter i{transition:none}}

.rhythm.hot canvas{border-color:var(--weapon-color,#ff9d5c);box-shadow:0 0 calc(6px + var(--impact)*30px) color-mix(in srgb,var(--weapon-color,#ff9d5c) 55%,transparent)}.rhythm.hot .combo-badge{color:var(--weapon-color,#ff9d5c)}@media(prefers-reduced-motion:reduce){.rhythm.hot canvas{box-shadow:none}}
.throw-button{padding:0;font-size:26px;white-space:nowrap;letter-spacing:0}@media(max-width:680px){.throw-button{font-size:20px}}

.sound-credit{font-size:9px;line-height:1.5;color:#8a9aaf;margin:4px 0 12px}.sound-credit a{color:#c0d3df;text-underline-offset:3px}
