.tp-char{white-space:pre;transition:color 80ms,background 80ms;display:inline}.tp-char.tp-correct{color:#16a34a}.tp-char.tp-wrong{color:#dc2626;background:#dc26261a;border-radius:2px}.tp-char.tp-current{background:#3b82f638;border-radius:3px;animation:1s step-end infinite tpBlink}@keyframes tpBlink{0%,to{background:#3b82f638}50%{background:#3b82f60a}}@keyframes tpShake{0%,to{transform:translate(0)}20%,60%{transform:translate(-4px)}40%,80%{transform:translate(4px)}}@keyframes tpSlideUp{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes tpWarnPls{0%{box-shadow:0 0 #eab30873}70%{box-shadow:0 0 0 8px #eab30800}to{box-shadow:0 0 #eab30800}}@keyframes modalIn{0%{opacity:0;transform:scale(.94)translateY(12px)}to{opacity:1;transform:scale(1)translateY(0)}}@keyframes overlayIn{0%{opacity:0}to{opacity:1}}.tp-slide-up{animation:.4s forwards tpSlideUp}.tp-warn-pulse{animation:1.8s infinite tpWarnPls}#tpInput.tp-invalid{animation:.32s tpShake;background:#ef44440d!important;border-color:#ef4444!important}#tpTimer.tp-danger{color:#dc2626!important;background:#ef444414!important;border-color:#fca5a5!important}#tpTextScroll::-webkit-scrollbar{width:4px}#tpTextScroll::-webkit-scrollbar-track{background:#f1f5f9;border-radius:9px}#tpTextScroll::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:9px}#tpTextScroll::-webkit-scrollbar-thumb:hover{background:#94a3b8}.tp-card-fail{border-top-color:#ef4444!important}#tpJoinOverlay{z-index:20;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#f8fafcf2;border-radius:.75rem;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}#tpStartOverlay{z-index:10;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#f8fafceb;border-radius:.75rem;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.tp-rtl,.tp-rtl #tpInput,.tp-rtl #tpTextDisplay{text-align:right;direction:rtl}.tp-zh #tpTextDisplay{font-size:1.25rem!important;line-height:42px!important}.tp-zh #tpTextScroll{height:126px!important}#tpLoginModal{z-index:9999;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}#tpLoginModal.hidden{display:none}#tpLoginOverlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0f172a8c;animation:.22s forwards overlayIn;position:absolute;inset:0}#tpLoginBox{text-align:center;background:#fff;border-radius:1.25rem;width:100%;max-width:400px;padding:2.5rem 2rem 2rem;animation:.28s cubic-bezier(.34,1.56,.64,1) forwards modalIn;position:relative;box-shadow:0 24px 60px #0000002e,0 4px 12px #00000014}#tpLoginBox .tp-modal-icon{background:linear-gradient(135deg,#7c3aed,#4f46e5);border-radius:50%;justify-content:center;align-items:center;width:64px;height:64px;margin:0 auto 1.25rem;font-size:1.75rem;display:flex;box-shadow:0 6px 20px #6366f159}#tpLoginBox h2{color:#0f172a;margin-bottom:.4rem;font-size:1.35rem;font-weight:800}#tpLoginBox p{color:#64748b;margin-bottom:1.75rem;font-size:.875rem;line-height:1.5}.tp-google-btn{color:#1e293b;cursor:pointer;background:#fff;border:2px solid #e2e8f0;border-radius:.75rem;justify-content:center;align-items:center;gap:.75rem;width:100%;margin-bottom:.875rem;padding:.8rem 1.25rem;font-size:.9375rem;font-weight:600;text-decoration:none;transition:border-color .15s,box-shadow .15s,background .15s;display:flex}.tp-google-btn:hover{background:#f8f7ff;border-color:#a5b4fc;box-shadow:0 0 0 3px #6366f11f}.tp-google-btn svg{flex-shrink:0}.tp-divider{color:#94a3b8;align-items:center;gap:.75rem;margin:.875rem 0;font-size:.8rem;display:flex}.tp-divider:before,.tp-divider:after{content:"";background:#e2e8f0;flex:1;height:1px}.tp-login-link-btn{color:#fff;background:linear-gradient(135deg,#7c3aed,#4f46e5);border-radius:.75rem;width:100%;margin-bottom:.75rem;padding:.8rem;font-size:.9375rem;font-weight:700;text-decoration:none;transition:opacity .15s,box-shadow .15s;display:block;box-shadow:0 4px 14px #6366f159}.tp-login-link-btn:hover{opacity:.9;box-shadow:0 6px 20px #6366f166}.tp-register-link{color:#64748b;margin-top:.5rem;font-size:.8125rem;display:block}.tp-register-link a{color:#6366f1;font-weight:600;text-decoration:none}.tp-register-link a:hover{text-decoration:underline}#tpLoginClose{color:#64748b;cursor:pointer;background:#f1f5f9;border:none;border-radius:50%;justify-content:center;align-items:center;width:2rem;height:2rem;font-size:1rem;line-height:1;transition:background .15s,color .15s;display:flex;position:absolute;top:1rem;right:1rem}#tpLoginClose:hover{color:#0f172a;background:#e2e8f0}
