:root{--bg:#0d0b14;--panel:#16131f;--field:#0f0d16;--line:#2a2438;--text:#f1eefa;--sub:#a39cb8;--a1:#8b5cf6;--a2:#f97316;--grad:linear-gradient(90deg, var(--a1), var(--a2))}*{box-sizing:border-box}html,body{background:var(--bg);height:100%;color:var(--text);margin:0;font-family:system-ui,Segoe UI,Hiragino Sans,Yu Gothic UI,sans-serif;overflow:hidden}a{color:#c4b5fd}canvas{display:block}.overlay{background:#0d0b14b8;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.hidden{display:none!important}.panel{background:var(--panel);border:1px solid var(--line);border-radius:18px;width:min(460px,92vw);padding:24px 28px;box-shadow:0 10px 40px #00000080}h1{margin:0 0 4px;font-size:20px;font-weight:900}h2{margin:0 0 4px;font-size:18px}.sub{color:var(--sub);margin:0 0 16px;font-size:13px;line-height:1.6}.modes{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.modes button{background:var(--field);border:1px solid var(--line);color:var(--sub);box-shadow:none;margin:0;padding:10px 0;font-size:13px}.modes button.active{background:var(--grad) border-box;color:#fff;border-color:#0000}.mode-desc{color:var(--sub);min-height:20px;margin:10px 0 6px;font-size:13px}label{justify-content:space-between;align-items:center;margin:10px 0;font-size:14px;display:flex}input,select{background:var(--field);width:140px;color:var(--text);border:1px solid var(--line);border-radius:8px;padding:6px 8px;font-size:14px}input:focus,select:focus{border-color:var(--a1);outline:none}button{cursor:pointer;background:var(--grad) border-box;color:#fff;border:0;border-radius:12px;width:100%;margin-top:8px;padding:12px;font-size:15px;font-weight:700;box-shadow:0 8px 24px #8b5cf64d}button:hover{filter:brightness(1.1)}button.secondary{border:1px solid var(--line);box-shadow:none;background:#ffffff0f}.stats{grid-template-columns:1fr 1fr;gap:10px;margin:16px 0;display:grid}.stat{background:var(--field);border:1px solid var(--line);border-radius:10px;padding:10px 12px}.stat .k{color:var(--sub);font-size:12px}.stat .v{margin-top:2px;font-size:22px;font-weight:700}.best{color:#fdba74;text-align:center;min-height:18px;margin-top:8px;font-size:13px}.hint{color:var(--sub);text-align:center;margin-top:10px;font-size:12px}#hud{text-shadow:0 1px 3px #000;pointer-events:none;align-items:baseline;gap:28px;font-size:15px;font-weight:600;display:flex;position:fixed;top:16px;left:50%;transform:translate(-50%)}#hud .time{font-size:24px}#crosshair{pointer-events:none;background:#00ff9c;border-radius:50%;width:4px;height:4px;margin:-2px 0 0 -2px;position:fixed;top:50%;left:50%;box-shadow:0 0 0 1px #000}#toast{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:10px 16px;font-size:13px;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}button.start{margin-top:18px}#menu h1{margin-bottom:16px}.keys{color:var(--text);justify-content:center;gap:22px;margin-top:14px;font-size:13px;font-weight:700;display:flex}kbd{text-align:center;min-width:26px;color:var(--text);background:var(--field);border:1px solid var(--line);border-bottom-width:3px;border-radius:6px;margin-right:4px;padding:2px 7px;font:700 12px/1.5 Consolas,monospace;display:inline-block}#fsKey kbd{border-color:var(--a1);color:#c4b5fd}.rank{margin:12px 0 4px}.rank-form{gap:8px;display:flex}.rank-form input{flex:1;width:auto;padding:9px 10px}.rank-form button{white-space:nowrap;width:auto;margin:0;padding:9px 14px;font-size:13px}.rank-form button:disabled{opacity:.5;cursor:default}.rank-msg{color:#c4b5fd;text-align:center;min-height:0;margin:8px 0 0;font-size:13px}.rank-msg:empty{display:none}.rank-list{border:1px solid var(--line);border-radius:10px;margin:10px 0 0;padding:0;list-style:none;overflow:hidden}.rank-list li{border-top:1px solid var(--line);grid-template-columns:28px 1fr auto;gap:8px;padding:6px 12px;font-size:13px;display:grid}.rank-list li:first-child{border-top:0}.rank-list .r{color:var(--sub);font-weight:700}.rank-list .n{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.rank-list .s{font-variant-numeric:tabular-nums;font-weight:700}.rank-list li.me{background:#8b5cf62e}.rank-list li.empty{color:var(--sub);text-align:center;display:block}.actions{grid-template-columns:1fr 1fr;gap:8px;margin-top:16px;display:grid}.actions button{margin:0;padding:10px;font-size:14px}.actions button:disabled{opacity:.35;cursor:default;filter:none}#countdown{pointer-events:none;background:#0d0b1473;justify-content:center;align-items:flex-start;padding-top:18vh;display:flex;position:fixed;inset:0}#countNum{font-variant-numeric:tabular-nums;background:var(--grad);color:#0000;filter:drop-shadow(0 4px 24px #8b5cf680);-webkit-background-clip:text;background-clip:text;font-size:120px;font-weight:900;line-height:1}#countNum.pop{animation:.9s ease-out count-pop}@keyframes count-pop{0%{opacity:0;transform:scale(1.4)}20%{opacity:1;transform:scale(1)}to{opacity:.85}}@media (prefers-reduced-motion:reduce){#countNum.pop{animation:none}}#playKeys{color:var(--sub);opacity:.6;pointer-events:none;gap:16px;font-size:12px;font-weight:700;display:flex;position:fixed;bottom:14px;right:16px}#playKeys kbd{min-width:22px;padding:1px 6px;font-size:11px}.rank-list li:not(.empty) .r{border-radius:7px;place-items:center;width:22px;height:22px;font-size:12px;display:inline-grid}.rank-list li:first-child:not(.empty) .r{color:#3d2c00;background:linear-gradient(135deg,#ffe58f,#d4a017)}.rank-list li:nth-child(2) .r{color:#1f252c;background:linear-gradient(135deg,#f4f6f9,#9aa4b0)}.rank-list li:nth-child(3) .r{color:#2c1406;background:linear-gradient(135deg,#f2b98a,#a35a2a)}
