*{margin:0;padding:0;box-sizing:border-box}html,body{overflow:hidden;background:#0e1228;height:100%;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Arial,sans-serif;color:#cfd6ee}.webgl{position:fixed;top:0;left:0;outline:none}#typing-test{position:fixed;top:18px;left:50%;transform:translate(-50%);width:min(880px,calc(100vw - 360px));background:#0a1028c7;border:1px solid rgba(80,130,220,.25);border-radius:10px;padding:14px 18px;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:10}.tt-label{font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;color:#78aaffb3;margin-bottom:8px}#tt-prompt{font-family:SFMono-Regular,Menlo,Consolas,monospace;font-size:1.15rem;line-height:1.5;letter-spacing:.01em;word-break:break-word;min-height:2.4em}#tt-prompt .ch{color:#ffffff59;transition:color .08s ease,background .08s ease}#tt-prompt .ch.done{color:#6ee7a4}#tt-prompt .ch.bad{color:#f77;background:#ff50502e;border-radius:2px}#tt-prompt .ch.cur{color:#ffd870;background:#ffd8702e;border-radius:2px}.tt-label-you{margin-top:8px;color:#96c8ffa6}#tt-typed{font-family:SFMono-Regular,Menlo,Consolas,monospace;font-size:1.15rem;line-height:1.5;letter-spacing:.01em;word-break:break-word;min-height:1.5em;color:#ffffff8c}#tt-typed .ch{transition:color .08s ease,background .08s ease}#tt-typed .ch.done{color:#6ee7a4}#tt-typed .ch.bad{color:#f77;background:#ff50502e;border-radius:2px}#tt-typed .ch.dup{color:#f54;background:#ff3c3c52;border-radius:2px;text-decoration:underline wavy #ff5544}#tt-typed .placeholder{color:#ffffff40;font-style:italic}#tt-typed .caret{display:inline-block;width:.5em;background:#ffd87080;animation:blink .9s steps(1,end) infinite;color:transparent}@keyframes blink{50%{opacity:0}}#tt-meta{margin-top:10px;display:flex;gap:18px;align-items:center;font-size:.78rem;color:#ffffff8c}#tt-meta button,#reset-btn,.cz-meta button{margin-left:auto;padding:5px 12px;background:transparent;border:1px solid rgba(120,170,255,.3);border-radius:5px;color:#b4c8ffd9;font-size:.75rem;letter-spacing:.04em;cursor:pointer;transition:border-color .15s,color .15s}#tt-meta button:hover,#reset-btn:hover{border-color:#78aaffb3;color:#fff}#click-zone{position:fixed;right:18px;bottom:18px;width:290px;height:240px;background:#0a1028c7;border:1px dashed rgba(120,170,255,.3);border-radius:10px;padding:8px 10px;z-index:10;display:flex;flex-direction:column}.cz-label{font-size:.66rem;letter-spacing:.16em;text-transform:uppercase;color:#78aaffb3}#click-area{position:relative;flex:1;margin-top:4px;overflow:hidden}.target{position:absolute;border-radius:50%;background:radial-gradient(circle at 35% 30%,#ffd870,#f73 70%,#b03020);box-shadow:0 0 12px #ff8c3c99;cursor:crosshair;transition:transform .1s ease,opacity .2s ease;-webkit-user-select:none;user-select:none}.target:hover{transform:scale(1.08)}.target.popping{transform:scale(1.6);opacity:0;pointer-events:none}.cz-meta{margin-top:4px;display:flex;gap:14px;font-size:.72rem;color:#ffffff8c}#stats-panel{position:fixed;top:18px;right:18px;width:290px;max-height:calc(100vh - 290px);overflow-y:auto;background:#0a1028d1;border:1px solid rgba(80,130,220,.25);border-radius:10px;padding:14px 16px;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:10}.sp-section{padding:10px 0;border-bottom:1px solid rgba(120,170,255,.12)}.sp-section:last-child{border-bottom:none}.sp-title{font-size:.68rem;letter-spacing:.18em;text-transform:uppercase;color:#78aaffbf;margin-bottom:6px}.sp-hint{text-transform:none;letter-spacing:.04em;color:#ff7878a6;font-size:.65rem;margin-left:4px}#suspect-keys{font-family:SFMono-Regular,Menlo,Consolas,monospace;font-size:.78rem;color:#ffc8c8b3;line-height:1.5}#suspect-keys .tk-row .k{color:#ff8c8c}#suspect-keys .tk-row .v{color:#ffc8c8d9}.sp-row{display:flex;justify-content:space-between;align-items:center;padding:3px 0;font-size:.82rem}.sp-row span{color:#ffffff8c}.sp-row strong{font-family:SFMono-Regular,Menlo,Consolas,monospace;color:#fff;font-weight:600}.threshold-wrap{display:flex;align-items:center;gap:6px}.threshold-wrap input[type=range]{width:110px;accent-color:#4488ff}#chatter-log{margin-top:6px;max-height:110px;overflow-y:auto;font-family:SFMono-Regular,Menlo,Consolas,monospace;font-size:.72rem}.chatter-entry{padding:3px 6px;margin-bottom:2px;background:#ff50501a;border-left:2px solid #ff7777;border-radius:2px;color:#ffc8c8d9}.chatter-entry.fresh{animation:flash .6s ease}@keyframes flash{0%{background:#ff787880}to{background:#ff50501a}}#top-keys{font-family:SFMono-Regular,Menlo,Consolas,monospace;font-size:.78rem;color:#ffffffb3;line-height:1.5}.tk-row{display:flex;justify-content:space-between;padding:1px 0}.tk-row .k{color:#ffd870}#reset-btn{width:100%;margin-left:0;padding:8px}#home-link{position:fixed;bottom:16px;left:18px;z-index:10}#home-link a{color:#fff9;text-decoration:none;font-size:.85rem;letter-spacing:.04em;transition:color .15s}#home-link a:hover{color:#fff}#hint{position:fixed;bottom:16px;left:50%;transform:translate(-50%);font-size:.72rem;color:#fff6;letter-spacing:.04em;pointer-events:none;-webkit-user-select:none;user-select:none;z-index:10}@media(max-width:1100px){#click-zone{right:18px;bottom:18px;width:260px;height:200px}#stats-panel{max-height:calc(100vh - 250px)}#typing-test{width:calc(100vw - 36px)}}.tt-toggle{display:inline-flex;align-items:center;gap:5px;color:#ffffff8c;font-size:.78rem;cursor:pointer;-webkit-user-select:none;user-select:none}.tt-toggle input{accent-color:#4488ff;cursor:pointer}body.free-mode #tt-prompt,body.free-mode .tt-label:not(.tt-label-you),body.free-mode #tt-progress,body.free-mode #tt-errors,body.free-mode #tt-new{display:none}body.free-mode .tt-label-you{margin-top:0}#tt-typed .ch.free{color:#ffffffd9}[data-tip]{cursor:help;border-bottom:1px dotted rgba(120,170,255,.35)}#tooltip{position:fixed;left:0;top:0;max-width:240px;padding:7px 10px;background:#141a32f5;border:1px solid rgba(80,130,220,.4);border-radius:5px;font-family:-apple-system,Segoe UI,Arial,sans-serif;font-size:.72rem;font-weight:400;line-height:1.4;color:#ffffffe6;white-space:normal;pointer-events:none;opacity:0;transform:translateY(-2px);transition:opacity .12s ease,transform .12s ease;z-index:1000;box-shadow:0 4px 12px #0006}#tooltip.visible{opacity:1;transform:translateY(0)}
