*{box-sizing:border-box;margin:0;padding:0}:root{--bg:#0b0e14;--panel:#10141eeb;--fg:#e6edf3;--dim:#8b949e;--accent:#37d5ff;--accent2:#ff5c93;--good:#7ce38b;--bad:#ff6b6b}html,body{background:var(--bg);width:100%;height:100%;color:var(--fg);-webkit-user-select:none;user-select:none;font-family:SF Mono,ui-monospace,Menlo,monospace;overflow:hidden}#gl{width:100%;height:100%;display:block;position:fixed;inset:0}.hidden{display:none!important}.overlay{z-index:10;background:radial-gradient(#0b0e14d1,#0b0e14f5);flex-direction:column;justify-content:center;align-items:center;gap:14px;padding:24px;display:flex;position:fixed;inset:0;overflow-y:auto}h1{letter-spacing:2px;color:var(--accent);font-size:42px}.tagline{color:var(--dim);margin-bottom:10px}#dropzone{border:2px dashed var(--accent);text-align:center;cursor:pointer;border-radius:12px;padding:36px 60px;transition:background .15s,transform .15s}#dropzone:hover,#dropzone.drag{background:#37d5ff14;transform:scale(1.02)}#dropzone .dim{margin-top:6px}#analyze-status{background:var(--panel);border:1px solid var(--accent);border-radius:8px;padding:10px 18px}#analyze-status.error{border-color:var(--bad);color:var(--bad)}.settings{background:var(--panel);border:1px solid #1f2733;border-radius:12px;flex-direction:column;gap:8px;min-width:380px;padding:18px 22px;display:flex}.row{justify-content:space-between;align-items:center;gap:16px;display:flex}.row label{color:var(--dim);font-size:13px}.row input[type=number],.row select{color:var(--fg);background:#0d1117;border:1px solid #2a3340;border-radius:6px;width:130px;padding:5px 8px;font-family:inherit}.row input[type=checkbox]{width:18px;height:18px;accent-color:var(--accent)}.row input[type=range]{width:130px;accent-color:var(--accent)}details{border-top:1px solid #1f2733;padding-top:8px}details summary{color:var(--dim);cursor:pointer;margin-bottom:6px;font-size:13px}details .row{margin:4px 0}button{color:var(--fg);border:1px solid var(--accent);cursor:pointer;background:#0d1117;border-radius:8px;padding:9px 22px;font-family:inherit;font-size:14px;transition:background .12s}button:hover{background:#37d5ff1f}button.big{background:#37d5ff24;padding:14px 48px;font-size:20px}.dim{color:var(--dim);font-size:12px}#crosshair{background:var(--good);z-index:5;pointer-events:none;border-radius:50%;width:6px;height:6px;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 0 4px #000000e6}#hud{z-index:4;pointer-events:none;position:fixed;inset:0}#hud-left{position:absolute;top:18px;left:22px}#score{font-size:30px;font-weight:700}#acc{color:var(--dim);font-size:15px}#combo{color:var(--accent);min-height:24px;font-size:18px}#combo.milestone{animation:.55s ease-out milepop}@keyframes milepop{0%{color:#ffe14a;transform:scale(1.8)}to{transform:scale(1)}}#judgment{opacity:0;font-size:22px;font-weight:700;position:absolute;top:42%;left:50%;transform:translate(-50%)}#judgment.pop{animation:.45s ease-out judgepop}@keyframes judgepop{0%{opacity:1;transform:translate(-50%)scale(1.25)}70%{opacity:1}to{opacity:0;transform:translate(-50%)scale(1)}}#hint{color:var(--fg);text-shadow:0 0 6px #000000e6;opacity:0;white-space:nowrap;font-size:15px;transition:opacity .25s;position:absolute;top:58%;left:50%;transform:translate(-50%)}#hint.show{opacity:.9}#arrow{border:11px solid #0000;border-left:20px solid var(--accent);pointer-events:none;z-index:6;width:0;height:0;position:fixed;top:50%;left:50%}.legend{text-align:center;line-height:1.7}#timing-bar{background:linear-gradient(90deg, var(--bad), var(--good) 40%, var(--good) 60%, var(--bad));opacity:.55;border-radius:3px;width:240px;height:6px;position:absolute;bottom:64px;left:50%;transform:translate(-50%)}#timing-marker{background:#fff;width:3px;height:14px;transition:left 80ms;position:absolute;top:-4px;left:50%}#progress{background:#ffffff14;height:4px;position:absolute;bottom:0;left:0;right:0}#progress-fill{background:var(--accent);width:0%;height:100%}#results-body{background:var(--panel);border:1px solid #1f2733;border-radius:12px;min-width:340px;padding:20px 30px;font-size:15px;line-height:1.9}#results-body .grade{text-align:center;color:var(--accent);font-size:52px}.charts{justify-content:center;align-items:flex-start;gap:18px;margin-top:12px;display:flex}.charts>div{text-align:center}.chart-title{color:var(--dim);margin-bottom:4px;font-size:12px}#results-body .record{text-align:center;color:#ffe14a;font-weight:700;animation:.7s ease-out milepop}#results-body table{border-collapse:collapse;width:100%}#results-body td:last-child{text-align:right}#calib-status{color:var(--accent);min-height:40px;font-size:26px}
