.debug{max-width:640px;margin:0 auto;padding:32px 20px 56px}.debug__head h1{letter-spacing:3px;margin:0;font-size:28px}.debug__sub{color:#93a0bd;margin:4px 0 0;font-size:13px}.debug__transport{flex-wrap:wrap;align-items:center;gap:16px;margin:28px 0 18px;display:flex}.debug__play{font:inherit;color:#e7ecf6;cursor:pointer;background:#161d2e;border:1px solid #2a3550;border-radius:12px;padding:12px 28px;font-size:18px}.debug__play:hover{border-color:#5cc8ff}.debug__readout{color:#93a0bd;flex-wrap:wrap;gap:16px;font-size:14px;display:flex}.debug__beats{gap:10px;margin:18px 0 28px;display:flex}.debug__dot{background:#1c2438;border:1px solid #2a3550;border-radius:50%;width:22px;height:22px;transition:transform 60ms,background 60ms,box-shadow 60ms}.debug__dot.is-downbeat{border-color:#5b6a92}.debug__dot.is-on{background:#5cc8ff;transform:scale(1.25);box-shadow:0 0 14px #5cc8ff}.debug__layers{grid-template-columns:repeat(2,1fr);gap:10px;display:grid}.debug__layer{cursor:pointer;background:#131a29;border:1px solid #222c44;border-radius:10px;align-items:center;gap:8px;padding:8px 12px;font-size:15px;display:flex}.debug__note{color:#6c7896;margin-top:28px;font-size:12px;line-height:1.7}.ft-stage{color:#c7d2e8;background:radial-gradient(circle at 50% 30%,#111a2e 0%,#0a0f1c 56%,#060912 100%);justify-content:center;align-items:center;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;display:flex;position:fixed;inset:0}.ft-wrap{transform-origin:50%;will-change:transform;flex-direction:column;align-items:center;gap:14px;display:flex}.ft-head{text-align:center}.ft-head h1{letter-spacing:.03em;color:#dbe7ff;margin:0;font-size:18px;font-weight:600}.ft-head p{color:#6b7794;letter-spacing:.04em;margin:5px 0 0;font-size:12px}.ft-field{touch-action:none;-webkit-user-select:none;user-select:none;cursor:pointer;background:0 0;flex-shrink:0;position:relative;overflow:visible}.ft-svg{width:100%;height:100%;position:absolute;inset:0;overflow:visible}.ft-track{fill:none;stroke:#2b3b59;stroke-width:2px;opacity:.55}.ft-line{background:#78beffd9;height:2px;position:absolute;left:0;right:0;box-shadow:0 0 14px #78beff8c}.ft-line:after{content:"";background:linear-gradient(#0000,#78beff24);height:16px;position:absolute;top:-16px;left:0;right:0}.ft-note{filter:drop-shadow(0 0 8px var(--acc))}.ft-note .ft-star{fill:var(--acc);stroke:var(--acc);stroke-width:2px;stroke-linejoin:miter;transform-box:fill-box;transform-origin:50%;animation:1.9s ease-in-out infinite ft-pulse}.ft-note .ft-core{fill:#f2fffb;opacity:.92}@keyframes ft-pulse{0%,to{opacity:.85}50%{opacity:1}}.ft-hold{filter:drop-shadow(0 0 8px var(--acc))}.ft-hold .ft-star{fill:var(--acc);stroke:var(--acc);stroke-width:2px;stroke-linejoin:miter;transform-box:fill-box;transform-origin:50%}.ft-hold .ft-core{fill:#f2fffb;opacity:.92}.ft-hold .ft-head .ft-star{animation:1.9s ease-in-out infinite ft-pulse}.ft-beamwrap{transform-box:fill-box;transform-origin:50%}.ft-beam{fill:none;stroke:var(--acc);stroke-width:18px;stroke-linecap:round;opacity:.9;filter:drop-shadow(0 0 7px var(--acc))}.ft-beam-core{fill:none;stroke:#eafffb;stroke-width:5px;stroke-linecap:round;opacity:.5;filter:drop-shadow(0 0 6px var(--acc))}.ft-hold.holding .ft-beamwrap{animation:.15s linear infinite ft-beamjit}.ft-hold.holding .ft-beam{stroke-width:19px;filter:drop-shadow(0 0 12px var(--acc)) drop-shadow(0 0 4px var(--acc))}.ft-hold.holding .ft-beam-core{opacity:.8}@keyframes ft-beamjit{0%{transform:translate(0)scaleX(1)}20%{transform:translate(-2px)scaleX(1.5)}40%{transform:translate(1.6px)scaleX(.7)}60%{transform:translate(-1.5px)scaleX(1.34)}80%{transform:translate(2px)scaleX(.84)}to{transform:translate(0)scaleX(1)}}.ft-hit{pointer-events:none;z-index:4;position:absolute}.ft-hit>svg{width:480px;height:480px;position:absolute;top:-240px;left:-240px;overflow:visible}.ft-hit path,.ft-hit circle{transform-box:fill-box;transform-origin:50%}.ft-hit .hit-star{fill:var(--acc);stroke:var(--acc);stroke-width:2.5px;stroke-linejoin:miter;stroke-miterlimit:50;filter:drop-shadow(0 0 10px var(--acc)) drop-shadow(0 0 5px var(--acc));animation:.46s cubic-bezier(.16,.7,.2,1) forwards ft-hit-star}@keyframes ft-hit-star{0%{opacity:1;fill:var(--acc);transform:rotate(0)scale(1)}to{opacity:0;fill:#fff;transform:rotate(135deg)scale(2.4)}}.ft-hit .hit-core{fill:#f2fffb;animation:.3s forwards ft-hit-core}@keyframes ft-hit-core{0%{opacity:.95;transform:scale(1)}to{opacity:0;transform:scale(.5)}}.ft-hit .hit-flash{fill:#eaffff;animation:.34s ease-out forwards ft-hit-flash}@keyframes ft-hit-flash{0%{opacity:.8;transform:scale(1)}to{opacity:0;transform:scale(2)}}.ft-hit .hit-ring{fill:none;stroke:#eafffb;stroke-width:3px;animation:.66s cubic-bezier(.1,.78,.22,1) forwards ft-hit-ring}.ft-hit .hit-ring2{stroke:var(--acc);animation-delay:90ms}.ft-hit .hit-ring3{stroke:var(--acc);opacity:.6;animation-delay:.18s}@keyframes ft-hit-ring{0%{opacity:1;stroke-width:3.4px;transform:scale(.5)}to{opacity:0;stroke-width:.4px;transform:scale(3.4)}}.ft-hit .hit-spark{fill:#eafffb;filter:drop-shadow(0 0 4px var(--acc));animation:.5s cubic-bezier(.12,.7,.2,1) forwards ft-hit-spark}@keyframes ft-hit-spark{0%{opacity:0;transform:translate(0)scale(.7)}14%{opacity:1}to{transform:translate(var(--tx), var(--ty)) scale(.2);opacity:0}}.ft-hud{color:#cfe0ff;pointer-events:none;z-index:3;justify-content:space-between;align-items:flex-start;padding:0 18px;display:flex;position:absolute;top:14px;left:0;right:0}.ft-score{flex-direction:column;display:flex}.ft-score .num{font-variant-numeric:tabular-nums;color:#eaf2ff;text-shadow:0 0 14px #78beff73;font-size:42px;font-weight:700;line-height:1}.ft-pause{pointer-events:auto;cursor:pointer;color:#cfe0ff;background:#78aaff24;border:1px solid #78aaff4d;border-radius:11px;justify-content:center;align-items:center;width:44px;height:44px;font:20px/1 system-ui,sans-serif;display:flex}.ft-pause:hover{background:#78aaff3d}.ft-combo{text-align:center;pointer-events:none;z-index:2;color:#eaf6ff;text-shadow:0 0 18px #78beff80;font-size:46px;font-weight:700;position:absolute;top:10px;left:0;right:0}.ft-combo small{letter-spacing:.3em;color:#7f93b8;font-size:12px;font-weight:600;display:block}.ft-grade{text-align:center;pointer-events:none;z-index:3;letter-spacing:.08em;font-size:26px;font-weight:700;position:absolute;top:62%;left:0;right:0}.ft-grade.perfect{color:#7fe9ff}.ft-grade.good{color:#9fe0a0}.ft-grade.miss{color:#ff8da3}.ft-grade.flash{animation:.42s ease-out forwards ft-grade}@keyframes ft-grade{0%{opacity:0;transform:translateY(6px)scale(.9)}30%{opacity:1}to{opacity:0;transform:scale(1.05)}}.ft-controls{color:#8b97b4;align-items:center;gap:14px;font-size:13px;display:flex}.ft-controls button{font:inherit;color:#cfe0ff;cursor:pointer;background:#78aaff1f;border:1px solid #78aaff40;border-radius:9px;padding:7px 16px;font-weight:600}.ft-controls button:hover{background:#78aaff33}@media (prefers-reduced-motion:reduce){.ft-note .ft-star{animation:none!important}}.cal-stage{color:#c7d2e8;background:radial-gradient(circle at 50% 30%,#111a2e 0%,#0a0f1c 56%,#060912 100%);justify-content:center;align-items:center;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;display:flex;position:fixed;inset:0}.cal-wrap{background:#0e142299;border-radius:18px;flex-direction:column;align-items:center;gap:14px;width:min(92vw,440px);padding:24px;display:flex;box-shadow:0 24px 80px #00000080,inset 0 0 0 1px #ffffff0d}.cal-wrap h1{color:#dbe7ff;margin:0;font-size:22px;font-weight:700}.cal-field{cursor:pointer;touch-action:none;-webkit-user-select:none;user-select:none;background:radial-gradient(circle at 50% 22%,#121d33 0%,#0a0f1c 62%,#060912 100%);border-radius:14px;width:150px;height:380px;position:relative;overflow:hidden;box-shadow:inset 0 0 0 1px #ffffff0d}.cal-svg{width:100%;height:100%;position:absolute;inset:0;overflow:visible}.cal-track{stroke:#2b3b59;stroke-width:2px;opacity:.5}.cal-star{fill:#38bdf8;stroke:#38bdf8;stroke-width:2px;stroke-linejoin:miter;filter:drop-shadow(0 0 7px #38bdf8)}.cal-line{background:linear-gradient(90deg,#0000,#78beffd9 16% 84%,#0000);height:2px;position:absolute;left:0;right:0;box-shadow:0 0 12px #78beff80}.cal-fb{text-align:center;font-variant-numeric:tabular-nums;font-size:18px;font-weight:700;animation:.4s ease-out cal-fb;position:absolute;bottom:16px;left:0;right:0}.cal-fb.ok{color:#7fe9ff}.cal-fb.early{color:#ffd27f}.cal-fb.late{color:#ff9db0}@keyframes cal-fb{0%{opacity:0;transform:translateY(6px)}30%{opacity:1}to{opacity:.85}}.cal-tip{color:#6f7f9c;margin:0;font-size:12px}.cal-read{font-variant-numeric:tabular-nums;color:#cfe0ff;gap:24px;font-size:14px;display:flex}.cal-controls{gap:12px;display:flex}.cal-controls button,.cal-reset{color:#cfe0ff;cursor:pointer;background:#78aaff24;border:1px solid #78aaff47;border-radius:9px;padding:8px 16px;font:600 13px system-ui,sans-serif}.cal-controls button:hover,.cal-reset:hover{background:#78aaff3d}.cal-controls button:disabled{opacity:.45;cursor:default}.cal-slider{border-top:1px solid #ffffff0f;flex-direction:column;align-items:center;gap:10px;width:100%;margin-top:4px;padding-top:14px;display:flex}.cal-slider label{color:#aab8d4;font-size:14px}.cal-slider label b{color:#8fb6ff;font-variant-numeric:tabular-nums}.cal-adjust{align-items:center;gap:10px;display:flex}.cal-adjust button{color:#cfe0ff;cursor:pointer;background:#78aaff24;border:1px solid #78aaff47;border-radius:9px;width:44px;height:40px;font:700 18px/1 system-ui,sans-serif}.cal-adjust button:hover{background:#78aaff3d}.cal-adjust .cal-reset{width:auto;padding:0 16px;font-size:13px;font-weight:600}.ob-stage{cursor:pointer;-webkit-user-select:none;user-select:none;color:#eaf2ff;background:#04060c;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;position:fixed;inset:0;overflow:hidden}.ob-glow{pointer-events:none;opacity:1;background:radial-gradient(circle,#78b4ff33 0%,#78b4ff0f 42%,#0000 70%);width:62vmin;height:62vmin;transition:opacity 2.8s;animation:6s ease-in-out infinite ob-glow;position:absolute;top:44%;left:50%;transform:translate(-50%,-50%)}@keyframes ob-glow{0%,to{transform:translate(-50%,-50%)scale(1)}50%{transform:translate(-50%,-50%)scale(1.08)}}.ob-stars{pointer-events:none;opacity:1;transition:opacity 3.4s;position:absolute;inset:0}.ob-star{opacity:.5;background:#cfe0ff;border-radius:50%;animation:linear infinite ob-twinkle;position:absolute;box-shadow:0 0 4px #9fc3ff}@keyframes ob-twinkle{0%,to{opacity:.18}50%{opacity:.9}}.ob-stage.is-dark .ob-glow,.ob-stage.is-dark .ob-stars{opacity:0}.ob-stage.is-dark .ob-narration{color:#c7d2e6;text-shadow:0 0 12px #96aac838}.ob-narration{text-align:center;white-space:pre-line;letter-spacing:.02em;text-shadow:0 0 18px #78b4ff6b;width:min(86vw,720px);font-size:clamp(18px,3.3vw,30px);font-weight:500;line-height:1.95;animation:1s both ob-fadein;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}@keyframes ob-fadein{0%{opacity:0;transform:translate(-50%,-46%)}to{opacity:1;transform:translate(-50%,-50%)}}.ob-cue{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0d1525e0;border:1px solid #78aaff4d;border-radius:14px;width:min(90vw,640px);padding:18px 22px 20px;animation:.34s both ob-slidein;position:absolute;bottom:9%;left:50%;transform:translate(-50%);box-shadow:0 16px 50px #00000080}@keyframes ob-slidein{0%{opacity:0;transform:translate(-50%,14px)}to{opacity:1;transform:translate(-50%)}}.ob-cue-name{letter-spacing:.14em;color:#7fb0ff;margin-bottom:9px;font-size:13px;font-weight:700}.ob-cue-text{color:#eaf2ff;white-space:pre-line;font-size:clamp(15px,2.1vw,19px);line-height:1.75}.ob-cue-next{text-align:right;color:#5d80c0;margin-top:8px;font-size:15px;animation:1.6s ease-in-out infinite ob-hint}.ob-choices{flex-direction:column;gap:8px;margin-top:15px;display:flex}.ob-choice{text-align:left;color:#d6e4ff;cursor:pointer;background:#78aaff1f;border:1px solid #78aaff47;border-radius:9px;padding:9px 14px;font:600 14px/1.5 system-ui,sans-serif;transition:background .15s}.ob-choice:hover{background:#78aaff3d}.ob-auto{z-index:5;cursor:pointer;letter-spacing:1.5px;color:#cfe0ff;background:#78aaff1f;border:1px solid #78aaff47;border-radius:10px;justify-content:center;align-items:center;width:40px;height:40px;font:12px/1 system-ui,sans-serif;display:flex;position:absolute;top:14px;right:16px}.ob-auto:hover{background:#78aaff3d}.ob-hint{text-align:center;color:#5d6f8f;pointer-events:none;font-size:12px;animation:2s ease-in-out infinite ob-hint;position:absolute;bottom:20px;left:0;right:0}@keyframes ob-hint{0%,to{opacity:.3}50%{opacity:.75}}.ob-stage.ob-hidecursor,.ob-stage.ob-hidecursor *{cursor:none}.light-cursor{z-index:9999;pointer-events:none;background:var(--cursor-color,#fff);opacity:0;width:14px;height:14px;box-shadow:0 0 10px 2px var(--cursor-color,#fff), 0 0 26px 9px #aac8ff73;border-radius:50%;margin:-7px 0 0 -7px;transition:opacity .45s;position:fixed;top:40%;left:50%}.light-cursor.is-point,.light-cursor.is-cursor{opacity:1}.ob-bodies{justify-content:center;gap:22px;margin-top:16px;display:flex}.ob-body{color:#cfe0ff;background:#78aaff14;border:1px solid #78aaff40;border-radius:14px;flex-direction:column;align-items:center;gap:8px;padding:16px 28px;font:600 15px system-ui,sans-serif;transition:background .15s,border-color .15s,transform .15s;display:flex}.ob-body:hover{background:#78aaff33;border-color:#96c8ff99;transform:translateY(-3px)}.ob-body-sil{fill:#dfeaff;opacity:.9;filter:drop-shadow(0 0 8px #96c8ff80);width:56px;height:92px}.ob-bodytag{text-align:center;color:#8fb6ff;pointer-events:none;font-size:13px;position:absolute;bottom:20px;left:0;right:0}@media (prefers-reduced-motion:reduce){.ob-glow,.ob-star,.ob-narration,.ob-cue,.ob-cue-next,.ob-hint{animation:none!important}}.oe-stage{color:#c7d2e8;background:radial-gradient(circle at 50% 0,#0e1626 0%,#080d18 60%,#05080f 100%);padding:56px 18px 48px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;position:fixed;inset:0;overflow-y:auto}.oe-bar{z-index:5;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0c1322eb;border:1px solid #78aaff38;border-radius:12px;flex-wrap:wrap;align-items:center;gap:12px;max-width:760px;margin:0 auto 12px;padding:12px 14px;display:flex;position:sticky;top:0}.oe-bar h1{color:#dbe7ff;margin:0;font-size:17px;font-weight:700}.oe-count{color:#7f93b8;font-size:12px}.oe-bar-btns{flex-wrap:wrap;gap:8px;margin-left:auto;display:flex}.oe-msg{color:#8fe0b0;width:100%;font-size:12.5px}.oe-bar-btns button,.oe-ops button,.oe-kind button,.oe-json-head button{color:#cfe0ff;cursor:pointer;background:#78aaff1f;border:1px solid #78aaff42;border-radius:8px;padding:6px 12px;font:600 13px system-ui,sans-serif}.oe-bar-btns button:hover{background:#78aaff38}.oe-primary{color:#c8ffe6;background:#5ac8962e;border-color:#5ac8966b}.oe-warn{color:#ffd2da;background:#ff8ca01f;border-color:#ff8ca057}.oe-tip{color:#8294b4;max-width:760px;margin:0 auto 14px;font-size:12.5px;line-height:1.75}.oe-tip strong{color:#bcd0f4}.oe-list{flex-direction:column;gap:10px;max-width:760px;margin:0 auto;display:flex}.oe-row{background:#ffffff08;border:1px solid #ffffff12;border-left:3px solid #3a4d72;border-radius:11px;padding:11px 12px}.oe-row.oe-cue{border-left-color:#5a7fd6}.oe-row-top{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:8px;display:flex}.oe-no{color:#9fb0d0;min-width:48px;font-size:12px;font-weight:700}.oe-kind{gap:4px;display:flex}.oe-kind button{opacity:.55;padding:4px 10px;font-size:12px}.oe-kind button.on{opacity:1;background:#78aaff42;border-color:#78aaff80}.oe-dark{color:#9fb0d0;cursor:pointer;align-items:center;gap:5px;font-size:12px;display:flex}.oe-ops{gap:4px;margin-left:auto;display:flex}.oe-ops button{padding:4px 9px;font-size:12px}.oe-ops button:disabled{opacity:.3;cursor:default}.oe-del{color:#ffb0bd;border-color:#ff8ca04d}.oe-text,.oe-choices{box-sizing:border-box;resize:vertical;color:#eaf2ff;background:#00000047;border:1px solid #78aaff33;border-radius:8px;width:100%;padding:8px 10px;font:14px/1.6 system-ui,sans-serif}.oe-choices{color:#cfe0ff;border-style:dashed;margin-top:7px;font-size:13px}.oe-text:focus,.oe-choices:focus{border-color:#78aaff8c;outline:none}.oe-json{max-width:760px;margin:14px auto 0}.oe-json-head{color:#8294b4;justify-content:space-between;align-items:center;gap:10px;margin-bottom:6px;font-size:12px;display:flex}.oe-json-head code{color:#cfe0ff}.oe-json textarea{box-sizing:border-box;resize:vertical;color:#cfe0ff;background:#0000006b;border:1px solid #78aaff40;border-radius:8px;width:100%;padding:10px;font:12px/1.5 ui-monospace,Menlo,monospace}.oe-versions{z-index:6;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0c1322eb;border:1px solid #78aaff38;border-radius:12px;flex-direction:column;gap:6px;width:198px;max-height:calc(100vh - 76px);padding:12px;display:flex;position:fixed;top:56px;right:12px;overflow-y:auto}.oe-ver-head{justify-content:space-between;align-items:baseline;display:flex}.oe-ver-head span:first-child{color:#dbe7ff;font-size:13px;font-weight:700}.oe-ver-cap{color:#7f93b8;font-size:11px}.oe-ver-empty{color:#7f93b8;margin:6px 0;font-size:12px}.oe-ver-list{flex-direction:column;gap:6px;margin:4px 0 0;padding:0;list-style:none;display:flex}.oe-ver-item{color:#aebbd6;background:#ffffff08;border:1px solid #ffffff12;border-radius:8px;align-items:center;gap:6px;padding:6px 8px;font-size:12px;display:flex}.oe-ver-tag{border-radius:999px;padding:1px 6px;font-size:10px;font-weight:700}.oe-ver-tag.ai{color:#cdc6ff;background:#8b7bff38}.oe-ver-tag.manual{color:#c8ffe6;background:#5ac8962e}.oe-ver-time{font-variant-numeric:tabular-nums}.oe-ver-n{color:#7f93b8;margin-left:auto}.oe-ver-item button{color:#cfe0ff;cursor:pointer;background:#78aaff24;border:1px solid #78aaff47;border-radius:7px;padding:3px 8px;font:600 11px system-ui,sans-serif}.oe-ver-item button:hover{background:#78aaff3d}.oe-ver-clear{color:#ffd2da;cursor:pointer;background:#ff8ca01f;border:1px solid #ff8ca04d;border-radius:7px;margin-top:4px;padding:4px 8px;font:600 11px system-ui,sans-serif}@media (width<=1180px){.oe-versions{width:auto;max-width:760px;max-height:220px;margin:0 auto 12px;position:static}}.auth-gate{background:radial-gradient(circle at 50% 30%,#111a2e 0%,#0a0f1c 56%,#060912 100%);justify-content:center;align-items:center;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;display:flex;position:fixed;inset:0}.auth-card{text-align:center;color:#cfe0ff;background:#0e1422b3;border:1px solid #78aaff38;border-radius:16px;padding:34px 38px;box-shadow:0 24px 80px #00000080}.auth-card h1{color:#dbe7ff;letter-spacing:1px;margin:0 0 14px;font-size:20px;font-weight:700}.auth-card p{color:#8295b4;margin:0 0 16px;font-size:13px}.auth-card>div{justify-content:center;display:flex}.auth-deny{color:#ffb0bd;margin-top:14px}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-family:Noto Sans TC,PingFang TC,Microsoft JhengHei,system-ui,-apple-system,sans-serif;line-height:1.6}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{color:#e7ecf6;background:radial-gradient(1100px 600px at 80% -10%,#8b7bff1f,#0000 60%),radial-gradient(800px 500px at -10% 10%,#5cc8ff14,#0000 55%),#0b0f1a}
