html,body,#root{min-height:100%}body{margin:0}#root{width:100%}.container{min-height:100dvh;display:grid;place-items:center;padding:24px 16px}.game{width:100%;display:grid;gap:14px;justify-items:center}.gamePage{height:100dvh;overflow:hidden}.stageBlock{width:min(560px,92vw,70vh);margin-inline:auto}.stageShell{position:relative;width:100%}.stageHeader{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:0 2px;margin-bottom:10px}.stageHeaderLeft{min-width:0;flex:1 1 auto;display:flex;align-items:center;gap:8px}.stageHomeBtn{flex:0 0 auto;height:30px;padding:0 10px;border-radius:10px;border:1px solid rgba(255,255,255,.14);background:#ffffff0f;color:var(--text);cursor:pointer;font-size:12px;font-weight:800;white-space:nowrap}.stageHomeBtn:hover{background:#ffffff1a}.stageHeaderTitle{min-width:0;flex:1 1 auto;display:flex;align-items:baseline;gap:8px;overflow:hidden}.stagePlaylistName{min-width:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:18px;font-weight:700}.stageModeText{flex:0 0 auto;font-size:12px;opacity:.75;white-space:nowrap}.stageHeaderProgress{flex:0 0 auto}.progressPill,.scorePill{height:20px;display:inline-flex;align-items:center;border:0;border-radius:6px;background:transparent}.progressPill{padding:0 6px;color:#ffffffc7;font-size:12px;font-weight:750;line-height:1}.progressPillLoading{min-width:72px;justify-content:center}.scorePill{gap:5px;padding:0 6px}.scoreLabel{color:#ffffff8c;font-size:11px;line-height:1}.scoreValue{min-width:22px;height:20px;padding:0 6px;display:grid;place-items:center;border-radius:6px;background:#50f0aa24;color:#ffffffeb;font-size:12px;font-weight:850;font-variant-numeric:tabular-nums;line-height:1}.stage{width:100%;padding:12px;border:1px solid rgba(255,255,255,.12);border-radius:16px;background:#ffffff0f;-webkit-user-select:none;user-select:none;touch-action:none}.square{position:relative;width:100%;aspect-ratio:1 / 1;overflow:hidden;border-radius:0;outline:1px solid rgba(0,0,0,.85);outline-offset:-1px;background:#000;background-clip:padding-box;transform:translateZ(0)}.stageCover,.stageCoverFallback,.playerBar,.stageMask{position:absolute;inset:0}.stageCover{width:100%;height:100%;object-fit:cover;z-index:1;pointer-events:none;-webkit-user-drag:none;-webkit-user-select:none;user-select:none}.stageCoverFallback{z-index:1;background:#00000040}.stageBottomShade{position:absolute;left:0;right:0;bottom:0;z-index:2;height:140px;background:linear-gradient(to top,rgba(0,0,0,.55),transparent);pointer-events:none}.playerBar{top:auto;z-index:3;width:100%;height:100px;border:0;display:block;overflow:hidden}.playerBarMasked{opacity:0}.stageMask{inset:-2px;z-index:10;display:grid;place-items:center;background:#000;opacity:1;transition:none;touch-action:none}.stageMaskHidden{opacity:0;pointer-events:none;transition:opacity .24s ease}.noHit{pointer-events:none}:root{--kkbox-widget-w: min(335px, calc(100vw - 56px) );--kkbox-widget-h: 100px;--kkbox-play-x: 118px;--kkbox-play-y: 78px;--kkbox-hit-size: 56px;--kkbox-fake-play-size: 32px;--kkbox-widget-offset-x: calc(var(--kkbox-widget-w) / 2 - var(--kkbox-play-x))}.manualKkboxMode .playerBar{left:calc(50% + var(--kkbox-widget-offset-x));right:auto;bottom:0;z-index:20;width:var(--kkbox-widget-w);height:var(--kkbox-widget-h);opacity:1;transform:translate(-50%)}.manualKkboxMode .square:after{content:"";position:absolute;left:calc(50% + var(--kkbox-widget-offset-x));bottom:-6px;z-index:25;width:calc(var(--kkbox-widget-w) + 16px);height:calc(var(--kkbox-widget-h) + 16px);transform:translate(-50%);background:#000;pointer-events:none}.manualKkboxMode .stageMask{z-index:50;pointer-events:none}.kkboxTapShield{position:absolute;left:calc(50% + var(--kkbox-widget-offset-x));bottom:0;z-index:70;width:var(--kkbox-widget-w);height:var(--kkbox-widget-h);transform:translate(-50%);pointer-events:none}.kkboxTapBlocker{position:absolute;background:transparent;pointer-events:auto}.kkboxTapTop{left:0;top:0;width:100%;height:calc(var(--kkbox-play-y) - var(--kkbox-hit-size) / 2)}.kkboxTapBottom{left:0;top:calc(var(--kkbox-play-y) + var(--kkbox-hit-size) / 2);width:100%;bottom:0}.kkboxTapLeft{left:0;top:calc(var(--kkbox-play-y) - var(--kkbox-hit-size) / 2);width:calc(var(--kkbox-play-x) - var(--kkbox-hit-size) / 2);height:var(--kkbox-hit-size)}.kkboxTapRight{left:calc(var(--kkbox-play-x) + var(--kkbox-hit-size) / 2);right:0;top:calc(var(--kkbox-play-y) - var(--kkbox-hit-size) / 2);height:var(--kkbox-hit-size)}.kkboxTapFakePlay{position:absolute;left:50%;bottom:calc(var(--kkbox-widget-h) - var(--kkbox-play-y) - var(--kkbox-fake-play-size) / 2);z-index:80;width:var(--kkbox-fake-play-size);height:var(--kkbox-fake-play-size);transform:translate(-50%);border:1px solid rgba(255,255,255,.18);border-radius:999px;background:#ffffff14;color:var(--text);box-shadow:0 16px 40px #00000047,inset 0 1px 1px #ffffff2e;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);pointer-events:none}.kkboxTapFakePlay:before{content:"";position:absolute;left:50%;top:50%;width:0;height:0;transform:translate(-30%,-50%);border-top:6px solid transparent;border-bottom:6px solid transparent;border-left:9px solid rgba(255,255,255,.92);filter:drop-shadow(0 1px 2px rgba(0,0,0,.35))}.kkboxTapDebug .kkboxTapBlocker{background:#ff505033}.kkboxTapDebug:after{content:"";position:absolute;left:calc(var(--kkbox-play-x) - var(--kkbox-hit-size) / 2);top:calc(var(--kkbox-play-y) - var(--kkbox-hit-size) / 2);width:var(--kkbox-hit-size);height:var(--kkbox-hit-size);border:2px solid rgba(255,80,80,.95);border-radius:999px;pointer-events:none}.turntable{position:relative;width:min(72%,420px);aspect-ratio:1 / 1;display:grid;place-items:center}.disc{width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 18px 45px rgba(0,0,0,.55));transform:translateZ(0);will-change:transform}.disc.spin{animation:spin 1.7s linear infinite}.label{position:absolute;width:20%;aspect-ratio:1 / 1;display:grid;place-items:center;overflow:hidden;border-radius:50%;background:transparent;box-shadow:0 2px 14px #00000040}.labelIcon{width:100%;height:100%;object-fit:cover;border-radius:50%}.label img{width:82%;height:82%;object-fit:contain}.gloss{position:absolute;inset:0;border-radius:50%;pointer-events:none;background:radial-gradient(circle at 35% 25%,#ffffff2e,#fff0 45%),radial-gradient(circle at 65% 75%,#ffffff1a,#fff0 55%);mix-blend-mode:screen;opacity:.9}@keyframes spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.disc.spin,.skelBlock:after,.skelLine:after,.loaderBar:after{animation:none}}:root{--mobile-btn-x: 0px;--mobile-btn-y: 131px;--desktop-btn-right: -160px;--desktop-btn-y: 0px}.stageRightOverlay{position:absolute;top:50%;right:10px;z-index:4;transform:translateY(-50%);pointer-events:auto}.stageRightButtons{display:grid;gap:10px}.stageBtn{width:44px;height:44px;display:grid;place-items:center;border:1px solid rgba(255,255,255,.18);border-radius:14px;background:#00000059;color:#fff;cursor:pointer;font-size:18px;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.stageBtn:hover{background:#00000080}.stageBottomOverlay{position:absolute;left:0;right:0;bottom:110px;z-index:4;display:grid;place-items:center;pointer-events:none}.stageCenterOverlay,.stageCenterAction{position:absolute;inset:0;z-index:9999;display:grid;place-items:center;pointer-events:none}.stageCenterOverlay>*,.stageCenterAction>*,.stageBottomOverlay>*{pointer-events:auto}.floatControls{position:absolute;top:calc(50% + var(--desktop-btn-y));right:var(--desktop-btn-right);z-index:6;display:flex;gap:10px;transform:translateY(-50%);pointer-events:none}.floatControls>*{pointer-events:auto}.sideActionBtn{min-width:124px;height:48px;padding:0 16px;display:grid;place-items:center;border:1px solid rgba(255,255,255,.18);border-radius:16px;background:#ffffff14;color:var(--text);cursor:pointer;font-weight:800;letter-spacing:.2px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 16px 40px #00000047;transition:background .14s ease,transform .12s ease,opacity .12s ease}.sideActionBtn:hover{background:#ffffff1f}.sideActionBtn:active{transform:translateY(1px) scale(.995)}.sideActionBtn:disabled{opacity:.55;cursor:not-allowed}.answers{width:min(900px,100%);margin-inline:auto;display:grid;grid-template-columns:1fr 1fr;gap:12px}.answerBtn{position:relative;min-height:84px;height:100%;padding:16px;display:grid;grid-template-columns:34px 1fr;align-items:center;gap:12px;border:1px solid rgba(255,255,255,.14);border-radius:14px;background:#ffffff0f;color:var(--text);cursor:pointer;transition:transform .12s ease,background .18s ease,border-color .18s ease,box-shadow .18s ease}.answerBtn:hover{background:#ffffff1a}.answerBtn:active{transform:translateY(1px) scale(.995)}.answerBtn:disabled{opacity:.65;cursor:not-allowed}.badge{width:34px;height:34px;display:grid;place-items:center;border:1px solid rgba(255,255,255,.16);border-radius:10px;background:#ffffff14;font-weight:700}.answerMain{min-width:0;display:grid;gap:2px}.answerTitle{font-size:15px;line-height:1.25}.answerSub{color:var(--muted);font-size:13px}.clamp2{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;word-break:break-word}.answerBtn.isPicked:not(.isCorrect):not(.isWrong){border-color:#ffffff3d;background:#ffffff17}.answerBtn.isDim{opacity:.55;filter:saturate(.8)}.answerBtn.isCorrect{border-color:#50f0aad9;background:radial-gradient(800px 200px at 20% 10%,rgba(80,240,170,.2),transparent 55%),#ffffff0f;box-shadow:0 0 0 1px #50f0aa33 inset,0 12px 28px #14dc9624;transform:translateY(-1px)}.answerBtn.isWrong{border-color:#ff5f5fe6;background:radial-gradient(800px 200px at 20% 10%,rgba(255,95,95,.18),transparent 55%),#ffffff0f;box-shadow:0 0 0 1px #ff5f5f2e inset,0 12px 28px #ff5f5f24}.answerBtn.isCorrect .badge{border-color:#50f0aad9;background:#50f0aa29}.answerBtn.isWrong .badge{border-color:#ff5f5fe6;background:#ff5f5f29}.answerBtn.isCorrect:after,.answerBtn.isWrong:before,.answerBtn.isWrong:after{content:"";position:absolute;top:50%;right:14px;pointer-events:none;box-sizing:border-box}.answerBtn.isCorrect:after{width:24px;height:24px;border:4px solid rgba(80,240,170,.95);border-radius:999px;background:transparent;transform:translateY(-50%)}.answerBtn.isWrong:before,.answerBtn.isWrong:after{right:12px;width:28px;height:4px;border-radius:999px;background:#ff7878f5;box-shadow:0 8px 18px #ff5f5f29;transform-origin:center}.answerBtn.isWrong:before{transform:translateY(-50%) rotate(45deg)}.answerBtn.isWrong:after{transform:translateY(-50%) rotate(-45deg)}.lobbyPage{min-height:100dvh;max-width:1100px;margin:0 auto;padding:22px 16px 40px}.lobbyHeader{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-bottom:14px}.lobbyTitleMain{font-size:22px;font-weight:800;letter-spacing:.5px}.lobbyTitleSub{margin-top:4px;color:var(--muted);font-size:13px}.importBtn{padding:10px 12px;display:flex;align-items:center;gap:8px;border:1px solid rgba(255,255,255,.14);border-radius:14px;background:#ffffff0f;color:var(--text);cursor:pointer}.importBtn:hover{background:#ffffff1a}.lobbyError{margin:12px 0;color:#ffb4b4eb}.playlistGrid{display:grid;grid-template-columns:repeat(1,minmax(0,1fr));gap:12px}.playlistCard{padding:0;display:flex;flex-direction:column;overflow:hidden;border:1px solid rgba(255,255,255,.14);border-radius:16px;background:#ffffff0f;cursor:pointer;text-align:left}.playlistCard:hover{background:#ffffff1a}.playlistCover{width:100%;aspect-ratio:1 / 1;background:#ffffff0d}.playlistCover img{width:100%;height:100%;display:block;object-fit:cover}.playlistCoverFallback{width:100%;height:100%;background:#00000040}.playlistMeta{min-height:62px;padding:10px 10px 12px;display:grid;gap:4px}.playlistName{overflow:hidden;font-size:14px;font-weight:750;text-overflow:ellipsis;white-space:nowrap}.playlistCount{color:var(--muted);font-size:12px}.skeleton{border-color:#ffffff14;background:#ffffff0a}.skelBlock,.skelLine{position:relative;overflow:hidden;border-radius:12px;background:#ffffff14}.skelLine{height:12px}.skelBlock:after,.skelLine:after{content:"";position:absolute;inset:0;transform:translate(-100%);background:linear-gradient(90deg,transparent,rgba(255,255,255,.18),transparent);animation:skelShimmer 1.2s infinite}@keyframes skelShimmer{to{transform:translate(100%)}}.modalBackdrop{position:fixed;inset:0;z-index:50;padding:16px;display:grid;place-items:center;background:#0000008c}.modal{width:min(560px,100%);overflow:hidden;border:1px solid rgba(255,255,255,.14);border-radius:18px;background:#101827eb;box-shadow:var(--shadow)}.tuneModal{align-self:start;max-height:calc(100dvh - 140px);margin-top:200px;overflow-y:auto}.modalHeader{padding:12px 14px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid rgba(255,255,255,.1)}.modalTitle{font-weight:800}.modalClose{border:0;background:transparent;color:var(--muted);cursor:pointer;font-size:18px}.modalBody{padding:14px;display:grid;gap:12px}.modalHint{color:var(--muted);font-size:13px}.modalInput{width:100%;padding:12px;border:1px solid rgba(255,255,255,.14);border-radius:14px;outline:none;background:#ffffff0f;color:var(--text)}.modalError{color:#ffb4b4eb;font-size:13px}.choiceRow,.modalActions{display:flex;gap:10px}.choiceRow{flex-wrap:wrap}.modalActions{justify-content:flex-end}.pill,.btnGhost,.btnPrimary{border-radius:14px;cursor:pointer}.pill{padding:10px 12px;border:1px solid rgba(255,255,255,.14);border-radius:999px;background:#ffffff0f;color:var(--text)}.pill:hover,.btnGhost:hover{background:#ffffff1a}.btnGhost,.btnPrimary{padding:10px 12px}.btnGhost{border:1px solid rgba(255,255,255,.14);background:#ffffff0f;color:var(--text)}.btnPrimary{border:1px solid rgba(255,255,255,.18);background:#567eff40;color:var(--text)}.btnPrimary:hover{background:#567eff52}.btnPrimary:disabled,.pill:disabled{opacity:.6;cursor:not-allowed}.loaderBar{position:relative;height:8px;overflow:hidden;border-radius:999px;background:#ffffff1a}.loaderBar:after{content:"";position:absolute;inset:0;width:45%;transform:translate(-60%);background:#ffffff2e;animation:slide .9s infinite ease-in-out}@keyframes slide{0%{transform:translate(-60%)}to{transform:translate(160%)}}.rateBox{padding:12px;display:grid;place-items:center;gap:4px;border:1px solid rgba(255,255,255,.14);border-radius:16px;background:#ffffff0f}.ratePct{font-size:28px;font-weight:900}.rateSub,.resultSub{color:var(--muted);font-size:13px}.resultBig{font-size:22px;font-weight:800;letter-spacing:.2px}.resultSub{margin-top:8px;font-size:12px}.limitBox{margin-top:14px;padding:12px;display:grid;gap:10px;border:1px solid rgba(255,255,255,.12);border-radius:16px;background:#ffffff0a}.limitToggle{min-height:44px;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;cursor:pointer;-webkit-user-select:none;user-select:none}.limitToggle input{position:absolute;opacity:0;pointer-events:none}.limitSwitch{width:44px;height:26px;padding:3px;border:1px solid rgba(255,255,255,.18);border-radius:999px;background:#ffffff1a;transition:background .16s ease,border-color .16s ease}.limitSwitch span{display:block;width:18px;height:18px;border-radius:50%;background:#ffffffd1;transition:transform .16s ease}.limitToggle input:checked+.limitSwitch{border-color:#567eff99;background:#567eff5c}.limitToggle input:checked+.limitSwitch span{transform:translate(18px)}.limitToggleText{font-size:14px;font-weight:700}.limitValueText{justify-self:end;color:#ffffffeb;font-size:15px;font-weight:850;line-height:1;white-space:nowrap}.limitSliderArea{display:grid;gap:8px}.limitSliderScale{display:flex;justify-content:space-between;align-items:center;color:var(--muted);font-size:12px}.limitSlider{width:100%;accent-color:rgba(125,155,255,.95)}.niceScroll{scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.28) rgba(255,255,255,.06);scroll-behavior:smooth}.niceScroll::-webkit-scrollbar{width:10px;height:10px}.niceScroll::-webkit-scrollbar-track{border-radius:999px;background:#ffffff0f}.niceScroll::-webkit-scrollbar-thumb{border:2px solid rgba(0,0,0,0);border-radius:999px;background:#ffffff38;background-clip:padding-box}.niceScroll::-webkit-scrollbar-thumb:hover{background:#ffffff52;background-clip:padding-box}.niceScroll::-webkit-scrollbar-corner{background:transparent}.debugPanel{position:fixed;left:14px;bottom:14px;z-index:10000;width:min(360px,calc(100vw - 28px));padding:12px;border:1px solid rgba(255,255,255,.18);border-radius:16px;background:#080c14d1;color:var(--text);font-size:12px;line-height:1.45;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:0 18px 50px #0000006b}.debugPanelTop{margin-bottom:8px;display:flex;justify-content:space-between;align-items:center;gap:10px}.debugPill{padding:4px 8px;border:1px solid rgba(255,255,255,.14);border-radius:999px;background:#ffffff14;color:var(--muted);white-space:nowrap}.debugRows{display:grid;gap:4px;color:#ffffffc7}.debugActions{margin-top:10px;display:flex;justify-content:flex-end}.debugButton{padding:8px 10px;border:1px solid rgba(255,255,255,.18);border-radius:12px;background:#ffffff14;color:var(--text);cursor:pointer;font-size:12px;font-weight:700}.debugButton:hover{background:#ffffff1f}@media(min-width:520px){.playlistGrid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:820px){.playlistGrid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(min-width:860px){.stageHomeBtn{height:36px;padding:0 14px;border-radius:12px;font-size:14px}.stageCenterAction{display:none}.floatControls{display:flex}}@media(min-width:1024px){.playlistGrid{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(max-width:859px){.tuneModal{max-height:calc(100dvh - 80px);margin-top:120px}.stageRightOverlay,.floatControls{display:none}.stageCenterAction{display:grid;transform:translate(var(--mobile-btn-x),var(--mobile-btn-y))}.stageHeader{gap:8px}.stageHeaderLeft{min-width:0;max-width:calc(100% - 122px);flex:1 1 auto}.stageHeaderTitle{min-width:0;overflow:hidden}.stagePlaylistName{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.stageModeText{display:none}.answerBtn.isCorrect:after,.answerBtn.isWrong:before,.answerBtn.isWrong:after{content:none;display:none}.debugPanel{left:10px;right:10px;bottom:10px;width:auto}}.lobbyTitle{min-width:0}.gamePageExpert .container{align-content:center}:root{--bg0: #0b0f17;--bg1: #101827;--card: rgba(255,255,255,.06);--card2: rgba(255,255,255,.09);--border: rgba(255,255,255,.1);--text: rgba(255,255,255,.92);--muted: rgba(255,255,255,.62);--shadow: 0 20px 60px rgba(0,0,0,.55);--radius: 18px}*{box-sizing:border-box}html{background:linear-gradient(180deg,var(--bg0),var(--bg1));background-repeat:no-repeat;background-size:cover}body{margin:0;color:var(--text);background:radial-gradient(1000px 500px at 15% 15%,rgba(86,126,255,.25),transparent 60%),radial-gradient(900px 500px at 85% 25%,rgba(255,120,195,.18),transparent 60%),radial-gradient(900px 500px at 50% 90%,rgba(53,255,197,.12),transparent 60%),linear-gradient(180deg,var(--bg0),var(--bg1));background-repeat:no-repeat;background-size:cover;font-family:system-ui,-apple-system,Noto Sans TC,sans-serif}a{color:inherit}
