.typing-root{--bg:#eef2f7;--bg-panel:#ffffff;--bg-card:#f7fafd;--line:#d5dde7;--key-bg:#ffffff;--key-line:#cdd6e1;--palm:#dde5ee;--text:#232c3a;--text-dim:#6d7889;--accent:#2f7fe0;--accent-soft:rgba(47,127,224,0.13);--ok:#1f9e57;--miss:#df5252;--shadow:rgba(16,42,67,0.06);--f-lp:#e0687a;--f-lr:#e09a58;--f-lm:#cdb53a;--f-li:#52ad52;--f-ri:#2fb3a4;--f-rm:#4a97e0;--f-rr:#8d7ee8;--f-rp:#c86ac8;--f-th:#9aa7b8;background:var(--bg);color:var(--text);min-height:100vh;display:flex;flex-direction:column}.typing-root[data-theme=dark]{--bg:#12151c;--bg-panel:#1a1f2a;--bg-card:#212836;--line:#303a4d;--key-bg:#212836;--key-line:#303a4d;--palm:#2c3547;--text:#e6eaf2;--text-dim:#8a94a8;--accent:#4da3ff;--accent-soft:rgba(77,163,255,0.18);--ok:#4ade80;--miss:#f87171;--shadow:rgba(0,0,0,0.25)}.typing-root .tp-header{border-bottom:1px solid var(--line);background:var(--bg-panel)}.typing-root .tp-header-inner{max-width:1060px;margin:0 auto;padding:14px 20px;display:flex;align-items:center;gap:24px;flex-wrap:wrap}.typing-root .tp-site-title{font-size:20px;font-weight:700;letter-spacing:.04em}.typing-root .tp-site-title small{color:var(--text-dim);font-weight:400;margin-left:8px;font-size:12px}.typing-root .tp-modes{display:flex;gap:8px;flex-wrap:wrap}.typing-root .tp-mode-chip{padding:6px 14px;border-radius:999px;font-size:13px;border:1px solid var(--line);color:var(--text-dim);background:transparent;user-select:none}.typing-root .tp-mode-chip.active{border-color:var(--accent);color:var(--accent);background:var(--accent-soft);font-weight:600}.typing-root .tp-mode-chip .soon{font-size:10px;margin-left:4px;opacity:.7}.typing-root button.tp-mode-chip{cursor:pointer;font-family:inherit}.typing-root button.tp-mode-chip:hover{filter:brightness(1.05)}.typing-root .tp-header-right{margin-left:auto;display:flex;align-items:center;gap:10px}.typing-root .tp-theme-toggle{width:36px;height:36px;border-radius:50%;border:1px solid var(--line);background:var(--bg-card);color:var(--text);cursor:pointer;font-size:16px;line-height:1}.typing-root .tp-theme-toggle:hover{border-color:var(--accent)}.typing-root .tp-container{max-width:1060px;margin:0 auto;padding:20px;width:100%;flex:1}.typing-root .tp-footer{text-align:center;color:var(--text-dim);font-size:11px;padding:20px 0 30px;line-height:1.9}.typing-root .tp-footer a{color:var(--text-dim);text-decoration:underline}.typing-root .tp-footer a:hover{color:var(--accent)}.typing-root .tp-mobile-notice{text-align:center;padding:10px 16px}.typing-root .tp-level-chip,.typing-root .tp-mobile-notice{background:var(--accent-soft);color:var(--text);font-size:13px}.typing-root .tp-level-chip{border:1px solid transparent;border-radius:8px;padding:6px 12px;cursor:pointer;font-weight:700;display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.typing-root .tp-level-chip:hover{border-color:var(--accent);color:var(--accent)}.typing-root .tp-level-chip-icon{font-size:13px;line-height:1}.typing-root .tp-level-chip-sub{font-size:11px;font-weight:500;color:var(--text-dim)}.typing-root .tp-dialog-overlay{position:fixed;inset:0;z-index:50;background:rgba(0,0,0,.45);display:flex;align-items:center;justify-content:center;padding:20px;overflow-y:auto}.typing-root .tp-dialog{background:var(--bg-panel);border:1px solid var(--line);border-radius:14px;padding:26px;width:100%;max-width:620px;margin:auto;box-shadow:0 12px 40px rgba(0,0,0,.25)}.typing-root .tp-dialog-title{font-size:20px;font-weight:800;margin:0 0 20px}.typing-root .tp-dialog-section{margin-bottom:20px}.typing-root .tp-dialog-label{font-size:14px;font-weight:700;margin-bottom:4px}.typing-root .tp-dialog-hint{font-size:12px;color:var(--text-dim);margin:0 0 10px;line-height:1.6}.typing-root .tp-nick-row{display:flex;gap:8px;align-items:center}.typing-root .tp-nick-input{flex:1;min-width:0;background:var(--bg);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:10px 12px;font-size:15px}.typing-root .tp-nick-input:focus{outline:none;border-color:var(--accent)}.typing-root .tp-nick-reroll{flex:none;width:42px;height:42px;border-radius:8px;cursor:pointer;background:var(--bg);border:1px solid var(--line);font-size:18px}.typing-root .tp-nick-reroll:hover{border-color:var(--accent)}.typing-root .tp-dialog-actions{display:flex;align-items:center;gap:14px;margin-top:22px}.typing-root .tp-dialog-start{background:var(--accent);color:#fff;border:none;border-radius:10px;padding:12px 32px;font-size:16px;font-weight:800;cursor:pointer}.typing-root .tp-dialog-start:hover{filter:brightness(1.08)}.typing-root .tp-dialog-cancel{background:none;border:none;color:var(--text-dim);font-size:13px;cursor:pointer;text-decoration:underline}.typing-root .tp-dialog-terms{margin:16px 0 0;font-size:11.5px;color:var(--text-dim);line-height:1.7}.typing-root .tp-dialog-terms a{color:var(--accent)}.typing-root .tp-level-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}.typing-root .tp-level-card{background:var(--bg-panel);border:1px solid var(--line);border-radius:10px;padding:18px 16px;text-align:left;cursor:pointer;color:var(--text);display:flex;flex-direction:column;gap:6px;box-shadow:0 1px 3px var(--shadow);transition:border-color .15s,transform .1s,box-shadow .15s}.typing-root .tp-level-card:hover{border-color:var(--accent);transform:translateY(-2px);box-shadow:0 4px 10px var(--shadow)}.typing-root .tp-level-card.current{border-color:var(--accent);background:var(--accent-soft)}.typing-root .tp-level-name{font-size:17px;font-weight:800}.typing-root .tp-level-desc{font-size:12px;color:var(--text-dim);line-height:1.6}.typing-root .tp-level-cancel{margin-top:16px;background:none;border:none;color:var(--text-dim);font-size:13px;cursor:pointer;text-decoration:underline}.typing-root .tp-loading{padding:40px 0;text-align:center;color:var(--text-dim);font-size:14px}.typing-root .tp-doc{max-width:760px;margin:0 auto;padding:8px 0 40px;line-height:1.9}.typing-root .tp-doc h1{font-size:22px;font-weight:800;margin:20px 0 6px}.typing-root .tp-doc h2{font-size:16px;font-weight:700;margin:30px 0 10px}.typing-root .tp-doc h3{font-size:14px;font-weight:700;margin:20px 0 6px}.typing-root .tp-doc p{font-size:14px;margin:0 0 12px}.typing-root .tp-doc ol,.typing-root .tp-doc ul{font-size:14px;margin:0 0 12px;padding-left:24px}.typing-root .tp-doc li{margin-bottom:6px}.typing-root .tp-doc a{color:var(--accent)}.typing-root .tp-doc-date{color:var(--text-dim);font-size:12px;margin-bottom:24px}.typing-root .tp-doc-note{background:var(--bg-panel);border:1px solid var(--line);border-radius:8px;padding:12px 14px;font-size:13px;color:var(--text-dim)}.typing-root .tp-doc-table-wrap{overflow-x:auto;margin:12px 0 16px}.typing-root .tp-doc-table{width:100%;border-collapse:collapse;font-size:13px}.typing-root .tp-doc-table td,.typing-root .tp-doc-table th{border:1px solid var(--line);padding:10px 12px;text-align:left;vertical-align:top}.typing-root .tp-doc-table th{width:30%;background:var(--bg-panel);font-weight:700;white-space:nowrap}.typing-root .tp-doc-back{margin-top:36px;font-size:14px}.typing-root .tp-section-title{font-size:16px;color:var(--text-dim);margin:18px 0 14px;font-weight:600}.typing-root .tp-drill-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}.typing-root .tp-drill-card{background:var(--bg-panel);border:1px solid var(--line);border-radius:10px;padding:16px;text-align:left;cursor:pointer;color:var(--text);display:flex;flex-direction:column;gap:6px;box-shadow:0 1px 3px var(--shadow);transition:border-color .15s,transform .1s,box-shadow .15s}.typing-root .tp-drill-card:hover{border-color:var(--accent);transform:translateY(-2px);box-shadow:0 4px 10px var(--shadow)}.typing-root .tp-drill-name{font-size:15px;font-weight:700}.typing-root .tp-drill-desc,.typing-root .tp-note{font-size:12px;color:var(--text-dim)}.typing-root .tp-note{margin-top:18px;line-height:1.7}.typing-root .tp-quota-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}.typing-root .tp-quota-card{background:var(--bg-panel);border:1px solid var(--line);border-radius:10px;padding:20px 16px;cursor:pointer;color:var(--text);display:flex;flex-direction:column;align-items:center;gap:4px;box-shadow:0 1px 3px var(--shadow);transition:border-color .15s,transform .1s,box-shadow .15s}.typing-root .tp-quota-card:hover{border-color:var(--accent);transform:translateY(-2px);box-shadow:0 4px 10px var(--shadow)}.typing-root .tp-quota-label{font-size:22px;font-weight:800}.typing-root .tp-quota-sub{font-size:11px;color:var(--text-dim)}.typing-root .tp-quota-card.time .tp-quota-label{color:var(--accent)}.typing-root .tp-progress{margin:6px 0 14px}.typing-root .tp-progress-head{display:flex;align-items:baseline;gap:10px;margin-bottom:6px}.typing-root .tp-progress-big{font-size:20px;font-weight:700;color:var(--text-dim)}.typing-root .tp-progress-big b{font-size:30px;font-weight:800;color:var(--text)}.typing-root .tp-progress-sub{font-size:12px;color:var(--text-dim)}.typing-root .tp-progress-bar{height:10px;border-radius:999px;background:var(--line);overflow:hidden}.typing-root .tp-progress-fill{height:100%;border-radius:999px;background:var(--accent);transition:width .2s linear}.typing-root .tp-progress-fill.time{background:linear-gradient(90deg,#f0a020,var(--accent))}.typing-root .tp-play-head{display:flex;align-items:center;gap:16px;margin:14px 0;flex-wrap:wrap}.typing-root .tp-btn-back{background:var(--bg-panel);border:1px solid var(--line);color:var(--text-dim);border-radius:8px;padding:6px 12px;cursor:pointer;font-size:13px}.typing-root .tp-btn-back:hover{border-color:var(--accent);color:var(--accent)}.typing-root .tp-play-name{font-size:16px;font-weight:700}.typing-root .tp-play-progress{color:var(--text-dim);font-size:13px}.typing-root .tp-stats{margin-left:auto;display:flex;gap:18px}.typing-root .tp-stat{text-align:right}.typing-root .tp-stat .v{font-size:18px;font-weight:700;font-variant-numeric:tabular-nums}.typing-root .tp-stat .k{font-size:10px;color:var(--text-dim)}.typing-root .tp-prompt-area{background:var(--bg-panel);border:1px solid var(--line);border-radius:12px;padding:26px 30px;text-align:center;margin-bottom:16px;min-height:150px;display:flex;flex-direction:column;justify-content:center;gap:10px;box-shadow:0 1px 3px var(--shadow)}.typing-root .tp-prompt-area.miss-flash{animation:tp-missflash .25s}@keyframes tp-missflash{0%{box-shadow:inset 0 0 0 2px var(--miss)}to{box-shadow:inset 0 0 0 2px transparent}}.typing-root .tp-prompt-label{font-size:26px;font-weight:700;min-height:1.3em}.typing-root .tp-prompt-kana{font-size:18px;color:var(--text-dim);letter-spacing:.06em}.typing-root .tp-prompt-kana .done{color:var(--ok)}.typing-root .tp-prompt-kana .now{color:var(--text);text-decoration:underline;text-underline-offset:4px}.typing-root .tp-prompt-area.kana-first .tp-prompt-kana{order:-1;font-size:26px;font-weight:700;color:var(--text)}.typing-root .tp-prompt-area.kana-first .tp-prompt-label{font-size:18px;font-weight:400;color:var(--text-dim)}.typing-root .tp-prompt-kana.keys-seq{font-size:26px;font-family:Consolas,Courier New,monospace;text-transform:uppercase}.typing-root .tchar{padding:0 2px;color:var(--text-dim)}.typing-root .tchar.done{color:var(--ok)}.typing-root .tchar.now{color:var(--text);background:var(--accent-soft);border-radius:4px}.typing-root .tchar.gap{margin-left:14px}.typing-root .tp-prompt-romaji{font-size:22px;font-family:Consolas,Courier New,monospace;letter-spacing:.04em;min-height:1.2em}.typing-root .tp-prompt-romaji.is-shown{animation:tp-guide-in .2s ease-out}@keyframes tp-guide-in{0%{opacity:0}to{opacity:1}}@media (prefers-reduced-motion:reduce){.typing-root .tp-prompt-romaji.is-shown{animation:none}}.typing-root .tp-prompt-romaji .done{color:var(--ok)}.typing-root .tp-prompt-romaji .next{color:var(--accent);border-bottom:2px solid var(--accent)}.typing-root .tp-prompt-romaji .rest{color:var(--text-dim)}.typing-root .tp-kbd-area{display:flex;align-items:center;gap:14px}.typing-root .tp-kbd{flex:1;background:var(--bg-panel);border:1px solid var(--line);border-radius:12px;padding:14px;display:flex;flex-direction:column;gap:6px;user-select:none;box-shadow:0 1px 3px var(--shadow)}.typing-root .tp-kbd-row{display:flex;gap:6px}.typing-root .tp-key{position:relative;height:46px;border-radius:6px;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:13px;font-family:Consolas,Segoe UI,monospace;border:1px solid var(--key-line);background:var(--key-bg);color:var(--text);transition:background .06s,box-shadow .1s,border-color .1s}.typing-root .tp-key-label{line-height:1}.typing-root .tp-key-shift-label{font-size:9px;color:var(--text-dim);line-height:1;margin-bottom:3px}.typing-root .tp-key-mod{color:var(--text-dim);font-size:10px}.typing-root .tp-key-ghost{visibility:hidden}.typing-root .tp-key-home:after{content:"";position:absolute;bottom:5px;left:50%;transform:translateX(-50%);width:14px;height:2px;border-radius:2px;background:var(--text-dim)}.typing-root .tp-key.f-lp{box-shadow:inset 0 -3px 0 var(--f-lp)}.typing-root .tp-key.f-lr{box-shadow:inset 0 -3px 0 var(--f-lr)}.typing-root .tp-key.f-lm{box-shadow:inset 0 -3px 0 var(--f-lm)}.typing-root .tp-key.f-li{box-shadow:inset 0 -3px 0 var(--f-li)}.typing-root .tp-key.f-ri{box-shadow:inset 0 -3px 0 var(--f-ri)}.typing-root .tp-key.f-rm{box-shadow:inset 0 -3px 0 var(--f-rm)}.typing-root .tp-key.f-rr{box-shadow:inset 0 -3px 0 var(--f-rr)}.typing-root .tp-key.f-rp{box-shadow:inset 0 -3px 0 var(--f-rp)}.typing-root .tp-key.f-th{box-shadow:inset 0 -3px 0 var(--f-th)}.typing-root .tp-key.guide{border-color:var(--accent);background:var(--accent-soft);color:var(--accent);animation:tp-guidepulse 1s infinite}@keyframes tp-guidepulse{0%,to{box-shadow:0 0 0 0 rgba(47,127,224,.3)}50%{box-shadow:0 0 10px 2px rgba(47,127,224,.3)}}.typing-root .tp-key.pressed{background:var(--accent);color:#ffffff;border-color:var(--accent);transform:translateY(1px)}.typing-root .tp-hand{display:flex;flex-direction:column;align-items:center;width:100px;flex-shrink:0;gap:2px}.typing-root .tp-fingers{display:flex;align-items:flex-end;gap:4px}.typing-root .tp-finger{width:13px;background:currentColor;opacity:.22;border-radius:7px 7px 3px 3px;transition:opacity .12s,box-shadow .12s,transform .12s}.typing-root .tp-finger.thumb{margin-bottom:-10px;border-radius:6px}.typing-root .tp-finger.active{opacity:1;box-shadow:0 0 9px currentColor;transform:translateY(-4px)}.typing-root .fg-lp{color:var(--f-lp)}.typing-root .fg-lr{color:var(--f-lr)}.typing-root .fg-lm{color:var(--f-lm)}.typing-root .fg-li{color:var(--f-li)}.typing-root .fg-ri{color:var(--f-ri)}.typing-root .fg-rm{color:var(--f-rm)}.typing-root .fg-rr{color:var(--f-rr)}.typing-root .fg-rp{color:var(--f-rp)}.typing-root .fg-th{color:var(--f-th)}.typing-root .tp-palm{width:82px;height:44px;border-radius:10px 10px 16px 16px;background:var(--palm);margin-top:2px}.typing-root .tp-hand-label{font-size:11px;color:var(--text-dim);margin-top:4px}.typing-root .tp-finger-legend{display:flex;gap:14px;justify-content:center;margin-top:10px;font-size:11px;color:var(--text-dim);flex-wrap:wrap}.typing-root .tp-finger-legend span:before{content:"";display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px;vertical-align:-1px}.typing-root .lg-lp:before{background:var(--f-lp)}.typing-root .lg-lr:before{background:var(--f-lr)}.typing-root .lg-lm:before{background:var(--f-lm)}.typing-root .lg-li:before{background:var(--f-li)}.typing-root .lg-ri:before{background:var(--f-ri)}.typing-root .lg-rm:before{background:var(--f-rm)}.typing-root .lg-rr:before{background:var(--f-rr)}.typing-root .lg-rp:before{background:var(--f-rp)}.typing-root .tp-overlay{position:fixed;inset:0;background:rgba(20,33,52,.4);display:flex;align-items:center;justify-content:center;z-index:60}.typing-root .tp-result-box{background:var(--bg-panel);border:1px solid var(--line);border-radius:14px;padding:34px 44px;text-align:center;min-width:320px;box-shadow:0 10px 30px var(--shadow)}.typing-root .tp-result-box h3{font-size:18px;margin-bottom:20px;font-weight:700}.typing-root .tp-result-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px 34px;margin-bottom:26px}.typing-root .tp-result-grid .v{font-size:30px;font-weight:700;font-variant-numeric:tabular-nums}.typing-root .tp-result-grid .k{font-size:11px;color:var(--text-dim);margin-top:2px}.typing-root .tp-rank-submit{display:flex;flex-direction:column;align-items:center;gap:6px;margin:14px 0 4px}.typing-root .tp-rank-btn{padding:8px 18px;border-radius:999px;cursor:pointer;border:1px solid var(--accent);background:transparent;color:var(--accent);font-size:.95rem;transition:background .15s,color .15s}.typing-root .tp-rank-btn:hover:not(:disabled){background:var(--accent);color:#fff}.typing-root .tp-rank-btn:disabled{opacity:.6;cursor:default}.typing-root .tp-rank-done{font-size:.95rem;color:var(--accent)}.typing-root .tp-rank-note{font-size:.8rem;color:var(--text-dim)}.typing-root .tp-lane.is-shared .tp-lane-name{color:var(--accent);font-weight:700}.typing-root .tp-lane-badge{margin-right:3px;font-size:11px}.typing-root .tp-javelin-count{margin-left:auto;font-size:13px;color:var(--text-dim)}.typing-root .tp-javelin-stage{--jv-ground:26px;position:relative;height:168px;margin-bottom:12px;overflow:hidden;border:1px solid var(--line);border-radius:12px;background:linear-gradient(180deg,var(--bg-card) 0,var(--bg-panel) 70%)}.typing-root .tp-javelin-stage.is-foul{border-color:var(--miss)}.typing-root .tp-jv-ground{position:absolute;left:0;right:0;bottom:0;height:var(--jv-ground);background:var(--accent-soft);border-top:2px solid var(--line)}.typing-root .tp-jv-scale{position:absolute;bottom:0;top:0;width:0;border-left:1px dashed var(--line)}.typing-root .tp-jv-scale span{position:absolute;bottom:4px;left:3px;font-size:10px;color:var(--text-dim)}.typing-root .tp-jv-foul-line{position:absolute;top:12px;bottom:0;width:0;border-left:3px solid var(--miss);opacity:.55}.typing-root .tp-jv-goal{position:absolute;top:6px;bottom:var(--jv-ground);width:0}.typing-root .tp-jv-goal span{position:absolute;top:0;left:4px;white-space:nowrap;font-size:10px;line-height:1.2}.typing-root .tp-jv-goal.is-npc{border-left:1px solid var(--text-dim)}.typing-root .tp-jv-goal.is-npc span{color:var(--text-dim)}.typing-root .tp-jv-goal.is-best{border-left:2px dashed var(--accent)}.typing-root .tp-jv-goal.is-best span{color:var(--accent);top:14px;font-weight:700}.typing-root .tp-jv-thrower{position:absolute;bottom:var(--jv-ground);font-size:26px;line-height:1;transition:left .25s ease-out}.typing-root .tp-jv-thrower.is-running{animation:tp-jv-step .2s steps(2) infinite}.typing-root .tp-jv-thrower.is-fallen{animation:none;transform:rotate(70deg);opacity:.6}@keyframes tp-jv-step{0%{transform:translateY(0) scaleX(1)}50%{transform:translateY(-3px) scaleX(1.06)}to{transform:translateY(0) scaleX(1)}}.typing-root .tp-jv-aim{position:absolute;top:30px;bottom:var(--jv-ground);width:0;border-left:2px dotted var(--accent)}.typing-root .tp-jv-aim span{position:absolute;bottom:2px;left:4px;white-space:nowrap;font-size:10px;font-weight:700;color:var(--accent)}.typing-root .tp-jv-javelin{position:absolute;width:38px;height:3px;border-radius:2px;margin-left:-19px;background:linear-gradient(90deg,var(--text-dim) 0,var(--text) 70%,var(--accent) 100%)}.typing-root .tp-jv-javelin.is-landed{transform:rotate(-62deg);bottom:calc(var(--jv-ground) - 6px)}.typing-root .tp-jv-over{position:absolute;right:6px;bottom:calc(var(--jv-ground) + 6px);font-size:12px;font-weight:700;color:var(--accent);background:var(--accent-soft);padding:2px 8px;border-radius:10px}.typing-root .tp-javelin-speed{display:flex;align-items:baseline;justify-content:center;gap:6px;font-size:12px;color:var(--text-dim)}.typing-root .tp-javelin-speed strong{font-size:16px;color:var(--text);font-variant-numeric:tabular-nums}.typing-root .tp-javelin-speed em{font-style:normal;font-weight:700;padding:1px 6px;border-radius:4px;font-variant-numeric:tabular-nums}.typing-root .tp-javelin-speed em.is-fast{color:var(--accent);background:var(--accent-soft)}.typing-root .tp-javelin-speed em.is-slow{color:var(--miss);background:rgba(223,82,82,.12)}.typing-root .tp-javelin-speed small{font-size:10px}@media (prefers-reduced-motion:reduce){.typing-root .tp-jv-thrower.is-running{animation:none}.typing-root .tp-jv-thrower{transition:none}}.typing-root .tp-javelin-field{background:var(--bg-panel);border:1px solid var(--line);border-radius:12px;padding:26px 20px;text-align:center;min-height:230px;display:flex;flex-direction:column;justify-content:center;gap:10px}.typing-root .tp-javelin-field.is-foul{border-color:var(--miss);background:rgba(223,82,82,.08)}.typing-root .tp-javelin-live{font-size:40px;font-weight:700;color:var(--accent);font-variant-numeric:tabular-nums}.typing-root .tp-javelin-live small{font-size:18px;margin-left:2px}.typing-root .tp-javelin-hint{font-size:12px;color:var(--text-dim);display:flex;gap:14px;justify-content:center}.typing-root .tp-javelin-warn{color:var(--miss)}.typing-root .tp-javelin-idle{display:flex;flex-direction:column;align-items:center;gap:14px}.typing-root .tp-javelin-foul{font-size:26px;font-weight:700;color:var(--miss)}.typing-root .tp-javelin-thrown{font-size:30px;font-weight:700;color:var(--accent)}.typing-root .tp-javelin-best{font-size:18px;font-weight:700}.typing-root .tp-javelin-start{padding:12px 26px;border-radius:8px;font-size:15px;cursor:pointer;border:1px solid var(--accent);background:var(--accent);color:#fff;font-family:inherit}.typing-root .tp-javelin-throws{display:flex;gap:10px;justify-content:center;margin:14px 0}.typing-root .tp-javelin-throw{border:1px solid var(--line);border-radius:8px;padding:8px 18px;min-width:104px;background:var(--bg-card)}.typing-root .tp-javelin-throw .k{display:block;font-size:11px;color:var(--text-dim)}.typing-root .tp-javelin-throw .v{display:block;font-size:17px;font-weight:700;font-variant-numeric:tabular-nums}.typing-root .tp-javelin-throw.is-foul .v{color:var(--miss)}.typing-root .tp-javelin-throw.is-done .v{color:var(--accent)}.typing-root .tp-javelin-board{max-width:460px;margin:0 auto}.typing-root .tp-javelin-board h3{font-size:13px;color:var(--text-dim);margin-bottom:6px}.typing-root .tp-javelin-board table{width:100%;border-collapse:collapse;font-size:13px}.typing-root .tp-javelin-board td{padding:6px 8px;border-bottom:1px solid var(--line)}.typing-root .tp-javelin-board .rank{width:34px;color:var(--text-dim);text-align:center}.typing-root .tp-javelin-board .num{width:74px;text-align:right;font-variant-numeric:tabular-nums;font-weight:700}.typing-root .tp-javelin-board tr.me td{background:var(--accent-soft);color:var(--accent);font-weight:700}.typing-root .tp-prompt-area.is-jump{background:var(--accent-soft);border:2px solid var(--accent)}.typing-root .tp-prompt-area.is-fallen{background:rgba(223,82,82,.13);border-color:var(--miss);animation:tp-fall-shake .3s ease-out}@keyframes tp-fall-shake{0%,to{transform:translateX(0)}25%{transform:translateX(-6px)}75%{transform:translateX(6px)}}@media (prefers-reduced-motion:reduce){.typing-root .tp-prompt-area.is-fallen{animation:none}}.typing-root .tp-hurdle-head{font-size:12px;font-weight:700;color:var(--accent);display:flex;align-items:center;gap:10px;margin-bottom:6px}.typing-root .tp-hurdle-fall{color:var(--miss)}.typing-root .tp-hurdle-head.is-soon{color:var(--text-dim);font-weight:500}.typing-root .tp-hurdle-mark{position:absolute;top:50%;transform:translate(-50%,-50%);font-size:13px;line-height:1;opacity:.85;pointer-events:none}.typing-root .tp-hurdle-mark.is-cleared{opacity:.25}.typing-root .tp-program-buttons{display:flex;flex-direction:column;gap:6px;align-items:stretch}.typing-root .tp-race-ranking{padding:6px 14px;border-radius:999px;font-size:12px;cursor:pointer;border:1px solid var(--line);background:transparent;color:var(--text-dim);font-family:inherit;white-space:nowrap}.typing-root .tp-race-ranking:hover{border-color:var(--accent);color:var(--accent)}.typing-root .tp-program-card.locked .tp-race-ranking{margin-top:8px}.typing-root .tp-tour-card.locked{cursor:pointer;opacity:.75}.typing-root .tp-tour-card.locked:hover{opacity:1;border-color:var(--accent)}.typing-root .tp-tour-peek{font-size:10px;opacity:.8}.typing-root .tp-rank-see{margin-left:10px;padding:3px 10px;border-radius:999px;font-size:12px;cursor:pointer;border:1px solid var(--accent);background:transparent;color:var(--accent);font-family:inherit}.typing-root .tp-rank-see:hover{background:var(--accent);color:#fff}.typing-root .tp-ranking-box{background:var(--bg-panel);color:var(--text);border-radius:14px;padding:20px 22px;width:min(560px,92vw);max-height:82vh;overflow-y:auto;box-shadow:0 18px 40px var(--shadow);border:1px solid var(--line)}.typing-root .tp-ranking-head{display:flex;align-items:center;gap:12px}.typing-root .tp-ranking-head h3{font-size:16px;font-weight:700;flex:1}.typing-root .tp-ranking-close{width:30px;height:30px;border-radius:50%;cursor:pointer;font-size:14px;border:1px solid var(--line);background:var(--bg-card);color:var(--text-dim)}.typing-root .tp-ranking-close:hover{border-color:var(--accent);color:var(--accent)}.typing-root .tp-ranking-filter{display:flex;gap:8px;margin:14px 0 10px}.typing-root .tp-ranking-tab{padding:5px 14px;border-radius:999px;font-size:12px;cursor:pointer;font-family:inherit;border:1px solid var(--line);background:transparent;color:var(--text-dim)}.typing-root .tp-ranking-tab.active{border-color:var(--accent);color:var(--accent);background:var(--accent-soft);font-weight:700}.typing-root .tp-ranking-msg{padding:26px 4px;text-align:center;color:var(--text-dim);font-size:13px;line-height:1.9}.typing-root .tp-ranking-table{width:100%;border-collapse:collapse;font-size:13px}.typing-root .tp-ranking-table th{text-align:left;font-size:11px;color:var(--text-dim);font-weight:500;padding:6px 8px;border-bottom:1px solid var(--line)}.typing-root .tp-ranking-table td{padding:7px 8px;border-bottom:1px solid var(--line)}.typing-root .tp-ranking-table .rank{width:44px;text-align:center;font-weight:700}.typing-root .tp-ranking-table .num{text-align:right;font-variant-numeric:tabular-nums;width:68px}.typing-root .tp-ranking-table .nick{word-break:break-all}.typing-root .tp-ranking-table .lv{font-size:10px;color:var(--text-dim);margin-left:6px}.typing-root .tp-ranking-table tr.me td{background:var(--accent-soft);font-weight:700}.typing-root .tp-ranking-note{margin-top:12px;font-size:11px;color:var(--text-dim)}.typing-root .tp-result-actions{display:flex;gap:12px;justify-content:center}.typing-root .tp-result-actions button{padding:10px 22px;border-radius:8px;font-size:14px;cursor:pointer;border:1px solid var(--line);background:var(--bg-card);color:var(--text)}.typing-root .tp-result-actions button.primary{background:var(--accent);border-color:var(--accent);color:#ffffff;font-weight:700}.typing-root .tp-result-actions button:hover{filter:brightness(1.06)}.typing-root a.tp-mode-chip{text-decoration:none}.typing-root a.tp-mode-chip:hover{border-color:var(--accent);color:var(--accent)}.typing-root .tp-tour-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:14px;margin-top:10px}.typing-root .tp-tour-card{background:var(--bg-panel);border:1px solid var(--line);border-radius:14px;padding:22px 24px;text-align:left;cursor:pointer;color:var(--text);display:flex;flex-direction:column;gap:8px;font:inherit;box-shadow:0 1px 3px var(--shadow)}.typing-root .tp-tour-card:hover:not(:disabled){border-color:var(--accent)}.typing-root .tp-tour-card.locked{cursor:default;opacity:.6}.typing-root .tp-tour-name{font-size:20px;font-weight:800}.typing-root .tp-tour-desc{font-size:13px;color:var(--text-dim);line-height:1.7}.typing-root .tp-tour-pace{font-size:12px;color:var(--text-dim)}.typing-root .tp-tour-lock{font-size:12px;color:var(--miss);font-weight:700}.typing-root .tp-tour-lock.soon{color:var(--text-dim)}.typing-root .tp-tour-open{font-size:12px;color:var(--ok);font-weight:700}.typing-root .tp-pref-lead{margin:0 0 14px}.typing-root .tp-pref-region{margin-bottom:18px}.typing-root .tp-pref-region-name{font-size:13px;font-weight:800;color:var(--text-dim);border-left:3px solid var(--accent);padding-left:8px;margin-bottom:8px}.typing-root .tp-pref-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(124px,1fr));gap:8px}.typing-root .tp-pref-card{background:var(--bg-panel);border:1px solid var(--line);border-radius:10px;padding:10px 8px;cursor:pointer;color:var(--text);font:inherit;display:flex;flex-direction:column;align-items:center;gap:1px;box-shadow:0 1px 3px var(--shadow)}.typing-root .tp-pref-card:hover{border-color:var(--accent)}.typing-root .tp-pref-kana{font-size:10px;color:var(--text-dim)}.typing-root .tp-pref-name{font-size:15px;font-weight:800}.typing-root .tp-pref-best{font-size:11px;color:var(--text-dim);font-variant-numeric:tabular-nums}.typing-root .tp-program-head{display:flex;align-items:center;gap:14px;margin-bottom:12px}.typing-root .tp-program-title{font-size:18px;font-weight:800}.typing-root .tp-program-list{display:flex;flex-direction:column;gap:12px}.typing-root .tp-program-card{background:var(--bg-panel);border:1px solid var(--line);border-radius:14px;padding:18px 24px;display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap;box-shadow:0 1px 3px var(--shadow)}.typing-root .tp-program-card.locked{opacity:.65}.typing-root .tp-program-card.soon{opacity:.55}.typing-root .tp-program-event{font-size:20px;font-weight:800}.typing-root .tp-program-desc{font-size:12px;color:var(--text-dim);margin-top:4px}.typing-root .tp-program-progress{font-size:11px;color:var(--text-dim);margin-top:3px}.typing-root .tp-program-side{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.typing-root .tp-program-lock{font-size:12px;color:var(--miss);font-weight:700;max-width:320px}.typing-root .tp-program-card .tp-race-start{margin-top:0;padding:10px 20px;font-size:14px}.typing-root .tp-race-start:disabled{opacity:.6;cursor:default}.typing-root .tp-load-error{background:#fdeaea;border:1px solid var(--miss);color:#8a2020;border-radius:10px;padding:10px 16px;font-size:13px;margin-bottom:12px}.typing-root[data-theme=dark] .tp-load-error{background:#4a2020;color:#ffd9d9}.typing-root .tp-unlock-banner{background:var(--accent-soft);border:1px solid var(--accent);color:var(--accent);border-radius:10px;padding:10px 18px;font-size:15px;font-weight:800;margin-bottom:18px;animation:tp-cdpop .4s}.typing-root .tp-race-menu{display:flex;justify-content:center;margin-top:10px}.typing-root .tp-race-event-card{background:var(--bg-panel);border:1px solid var(--line);border-radius:14px;padding:30px 40px;max-width:520px;width:100%;text-align:center;display:flex;flex-direction:column;gap:14px;box-shadow:0 1px 3px var(--shadow)}.typing-root .tp-race-event-name{font-size:30px;font-weight:800;letter-spacing:.06em}.typing-root .tp-race-event-desc{font-size:13px;color:var(--text-dim);line-height:1.8}.typing-root .tp-race-best{font-size:14px}.typing-root .tp-race-best strong{font-size:20px;color:var(--accent);font-variant-numeric:tabular-nums}.typing-root .tp-race-best .none{color:var(--text-dim)}.typing-root .tp-race-best .prev{color:var(--text-dim);font-size:12px;margin-left:6px}.typing-root .tp-race-start{margin-top:6px;padding:13px 30px;border-radius:10px;font-size:16px;font-weight:700;background:var(--accent);border:1px solid var(--accent);color:#ffffff;cursor:pointer}.typing-root .tp-race-start:hover{filter:brightness(1.08)}.typing-root .tp-prompt-area.race{min-height:120px;padding:18px 26px}.typing-root .tp-track{background:var(--bg-panel);border:1px solid var(--line);border-radius:12px;padding:10px 14px;margin-bottom:16px;box-shadow:0 1px 3px var(--shadow)}.typing-root .tp-lane{display:flex;align-items:center;gap:10px;height:34px;border-bottom:1px dashed var(--line)}.typing-root .tp-lane:last-child{border-bottom:none}.typing-root .tp-lane.is-self{background:var(--accent-soft);border-radius:6px}.typing-root .tp-lane-name{width:128px;flex-shrink:0;font-size:11px;color:var(--text-dim);text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.typing-root .tp-lane.is-self .tp-lane-name{color:var(--accent);font-weight:700}.typing-root .tp-lane-course{flex:1;position:relative;height:100%;margin-right:14px;border-right:3px solid var(--accent)}.typing-root .tp-runner{position:absolute;top:50%;transform:translate(-50%,-50%) scaleX(-1);font-size:21px;line-height:1;will-change:left}.typing-root .tp-runner.is-self{font-size:24px;z-index:2;transition:left .12s linear}.typing-root .tp-runner.is-ghost{opacity:.35;filter:grayscale(.6);z-index:1}.typing-root .tp-runner.st-run{animation:tp-runbob .34s infinite}@keyframes tp-runbob{0%,to{margin-top:0}50%{margin-top:-3px}}.typing-root .tp-runner.st-stumble{animation:tp-stumble .35s}@keyframes tp-stumble{0%{transform:translate(-50%,-50%) scaleX(-1) rotate(0deg)}50%{transform:translate(-50%,-46%) scaleX(-1) rotate(55deg)}to{transform:translate(-50%,-50%) scaleX(-1) rotate(0deg)}}.typing-root .tp-kbd-area.race{margin-top:4px}.typing-root .tp-countdown{position:fixed;inset:0;z-index:50;pointer-events:none;display:flex;align-items:center;justify-content:center}.typing-root .tp-countdown-text{font-size:56px;font-weight:800;letter-spacing:.1em;color:var(--accent);text-shadow:0 2px 14px var(--shadow),0 0 0 var(--bg);background:var(--bg-panel);border:1px solid var(--line);border-radius:16px;padding:22px 46px;box-shadow:0 10px 30px var(--shadow);animation:tp-cdpop .25s}.typing-root .tp-countdown-text.false-start{color:var(--miss)}@keyframes tp-cdpop{0%{transform:scale(.7);opacity:0}to{transform:scale(1);opacity:1}}.typing-root .tp-race-time{font-size:52px;font-weight:800;font-variant-numeric:tabular-nums;color:var(--accent);margin-bottom:18px;line-height:1}.typing-root .tp-race-time small{font-size:20px;font-weight:700;margin-left:4px}.typing-root .tp-best-badge{display:inline-block;margin-left:10px;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:700;color:#ffffff;background:var(--ok);animation:tp-cdpop .3s}.typing-root .tp-podium{display:flex;align-items:flex-end;justify-content:center;overflow:hidden;margin-bottom:22px}.typing-root .tp-podium-col{width:86px;display:flex;flex-direction:column;align-items:center;animation:tp-podium-rise .42s ease-out backwards}.typing-root .tp-podium-name{max-width:86px;font-size:11px;color:var(--text-dim);margin-bottom:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.typing-root .tp-podium-runner{position:relative;width:72px;height:30px}.typing-root .tp-podium-block{width:72px;border-radius:5px 5px 0 0;display:flex;align-items:center;justify-content:center}.typing-root .tp-podium-col.r1 .tp-podium-block{height:66px;background:#e0b32e}.typing-root .tp-podium-col.r2 .tp-podium-block{height:50px;background:#a9b4c2}.typing-root .tp-podium-col.r3 .tp-podium-block{height:38px;background:#c08344}.typing-root .tp-podium-rank{font-size:20px;font-weight:800;color:#ffffff;text-shadow:0 1px 2px rgba(0,0,0,.25)}.typing-root .tp-podium-time{width:100%;border-top:3px solid var(--line);padding-top:5px;font-size:12px;color:var(--text-dim);font-variant-numeric:tabular-nums}.typing-root .tp-podium-col.is-self .tp-podium-name{color:var(--accent);font-weight:700}.typing-root .tp-podium-col.is-self .tp-podium-block{box-shadow:0 0 0 2px var(--accent)}.typing-root .tp-podium-col.is-self .tp-podium-time{color:var(--accent);font-weight:700}@keyframes tp-podium-rise{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}.typing-root .tp-ime-warning{position:fixed;top:16px;left:50%;transform:translateX(-50%);background:#fdeaea;border:1px solid var(--miss);color:#8a2020;padding:10px 20px;border-radius:10px;font-size:14px;z-index:70;box-shadow:0 4px 12px var(--shadow)}.typing-root[data-theme=dark] .tp-ime-warning{background:#4a2020;color:#ffd9d9}.typing-root .tp-prog-tabs{display:flex;gap:8px;margin-bottom:14px}.typing-root .tp-prog-tab{padding:7px 16px;border-radius:999px;font-size:13px;cursor:pointer;font-family:inherit;border:1px solid var(--line);background:var(--bg-card);color:var(--text-dim)}.typing-root .tp-prog-tab.active{border-color:var(--accent);background:var(--accent-soft);color:var(--accent);font-weight:700}.typing-root .tp-code-time{display:flex;align-items:baseline;justify-content:center;gap:4px;margin:10px 0 18px}.typing-root .tp-code-time .v{font-size:44px;font-weight:700;color:var(--accent);font-variant-numeric:tabular-nums}.typing-root .tp-code-time .k{font-size:16px;color:var(--text-dim)}.typing-root .tp-code-time.is-low .v{color:var(--miss)}.typing-root .tp-code-bonus{margin-left:10px;font-size:18px;font-weight:700;color:var(--accent);animation:tp-code-bonus .9s ease-out forwards}@keyframes tp-code-bonus{0%{opacity:0;transform:translateY(6px)}25%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-10px)}}.typing-root .tp-code-line{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:26px;line-height:1.6;letter-spacing:1px;word-break:break-all;text-align:center}.typing-root .tp-code-line .cchar{color:var(--text-dim)}.typing-root .tp-code-line .cchar.done{color:var(--accent)}.typing-root .tp-code-line .cchar.now{color:var(--text);background:var(--accent-soft);border-radius:3px;box-shadow:inset 0 -2px 0 var(--accent)}.typing-root .tp-code-hint{margin-top:10px;font-size:12px;color:var(--text-dim);text-align:center}@media (prefers-reduced-motion:reduce){.typing-root .tp-code-bonus{animation:none;opacity:1}}.typing-root .tp-lang-card{display:flex;align-items:center;gap:12px}.typing-root .tp-lang-start{flex:1;display:flex;flex-direction:column;gap:4px;text-align:left;background:none;border:none;padding:0;cursor:pointer;font-family:inherit;color:inherit}