button:not(:disabled),[role=button]:not(:disabled){cursor:pointer}:root{--bg:#0b0c0e;--card:#141518;--muted:#1c1e22;--fg:#e8e6e1;--mf:#8b8d93;--sub:#5c5e66;--bd:#e8e6e11f;--ok:#8fa88e;--bad:#c48982;--ready:#b8f7c8;--sb:env(safe-area-inset-bottom,0px);--st:env(safe-area-inset-top,0px);--go:#c8f3d4;--go-ink:#102018;--save:#c9e0f7;--save-ink:#102030;--home:#ddc8f8;--home-ink:#1a1024}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{max-width:100%;min-height:100%;color:var(--fg);background:#0b0c0e;margin:0;font-family:Heebo,system-ui,sans-serif;overflow-x:hidden}button{cursor:pointer;color:inherit;touch-action:manipulation;border:none;font-family:inherit}button:disabled{opacity:.4}.mono{font-family:IBM Plex Mono,monospace}input[type=text],input[type=email]{background:var(--muted);color:var(--fg);direction:ltr;border:1px solid #e8e6e133;border-radius:12px;width:100%;padding:.7rem .85rem;font-family:IBM Plex Mono,monospace;font-size:.95rem}.screen{flex-direction:column;min-height:100dvh;display:none}.wrap{width:100%;max-width:26rem;padding:calc(1.15rem + var(--st)) max(1rem, env(safe-area-inset-left,0px), env(safe-area-inset-right,0px)) calc(2.2rem + var(--sb));box-sizing:border-box;margin:0 auto}.top{align-items:center;gap:.5rem;margin-bottom:1rem;display:flex}.top .back{background:var(--muted);min-height:40px;box-shadow:0 0 0 1px var(--bd);border-radius:12px;padding:0 .9rem;font-size:.9rem;font-weight:500}.top .ttl{flex:1;margin:0;font-size:1.05rem;font-weight:600}.card{background:var(--card);box-shadow:0 0 0 1px var(--bd);border-radius:18px;margin-top:.85rem;padding:1rem 1.05rem}.card:first-of-type{margin-top:0}h1{letter-spacing:-.03em;margin:.2rem 0 0;font-size:clamp(1.5rem,5.5vw,1.9rem);font-weight:600;line-height:1.25}.eb{color:var(--mf);margin:0;font-size:.8rem;font-weight:500}.ld{color:var(--mf);white-space:pre-line;margin:.5rem 0 0;font-size:.93rem;line-height:1.45}.lb{color:var(--mf);margin:0;font-size:.8rem;font-weight:500}.val{margin:.2rem 0 0;font-size:1.5rem;font-weight:500}.val .u{color:var(--mf);margin-inline-start:.25rem;font-family:Heebo,sans-serif;font-size:.85rem}.chips{flex-wrap:wrap;gap:.4rem;margin-top:.7rem;display:flex}.chip,.btn{background:var(--muted);min-height:42px;box-shadow:0 0 0 1px var(--bd);box-sizing:border-box;border-radius:999px;max-width:100%;padding:0 .85rem;font-size:.88rem;font-weight:500}.chip.on,.btn.pri{background:var(--fg);color:var(--bg);box-shadow:none}.btn.pri{border-radius:14px;width:100%;min-height:50px;font-size:1rem}.btn.sec{background:var(--card);box-shadow:0 0 0 1px var(--bd);border-radius:14px;min-height:46px;padding:0 1rem}.btn.sm{min-height:38px;padding:0 .75rem;font-size:.82rem}.st{color:var(--sub);margin:.9rem 0 0;font-size:.72rem;font-weight:500}.dg,.mt{grid-template-columns:1fr 1fr;gap:.45rem;margin-top:.65rem;display:grid}.dg .chip,.mt .chip{text-align:center;border-radius:12px;width:100%}.sticky{z-index:20;width:calc(100% - 2rem);max-width:24rem;padding:1.15rem 0 calc(.9rem + var(--sb));background:linear-gradient(to top, var(--bg) 58%, transparent);pointer-events:none;box-sizing:border-box;position:fixed;bottom:0;left:50%;right:auto;transform:translate(-50%)}.sticky>*{pointer-events:auto;box-sizing:border-box;width:100%;max-width:100%}.hint{text-align:center;color:var(--mf);margin:.45rem 0 0;font-size:.8rem}.check{align-items:center;gap:.65rem;min-height:42px;margin-top:.75rem;font-size:.88rem;display:flex}.check input{width:1.1rem;height:1.1rem;accent-color:var(--fg);flex-shrink:0}.rb{color:var(--mf);justify-content:space-between;align-items:center;margin-top:.55rem;font-size:.85rem;display:flex}.range{width:100%;height:2.2rem;accent-color:var(--fg);margin-top:.45rem}.list{margin:.6rem 0 0;padding:0;list-style:none}.list li{background:var(--muted);border-radius:10px;justify-content:space-between;align-items:center;margin-bottom:.35rem;padding:.55rem .7rem;font-size:.88rem;display:flex}.sm{color:var(--mf);white-space:pre-line;margin:.55rem 0 0;font-size:.82rem;line-height:1.45}.kb{background:#8fa88e1f;border-radius:11px;margin-top:.6rem;padding:.65rem .8rem;font-size:.88rem;line-height:1.4}#morse-root{background:var(--bg);min-height:100dvh;color:var(--fg)}.hint.bits{text-align:start;flex-wrap:wrap;justify-content:flex-start;align-items:center;gap:.28rem;display:flex}.hint .bit{unicode-bidi:isolate}.hint .dot{opacity:.55}.btn.pri.btn-save,.sticky .btn.pri.btn-save{background:var(--save);color:var(--save-ink);box-shadow:none}.top .back.btn-home,.btn.btn-home,.fa .btn.btn-home{background:var(--home);color:var(--home-ink);box-shadow:none}.top .back.btn-home{font-weight:600}#morse-host{background:var(--bg);color:var(--fg);min-height:100dvh}.byline{letter-spacing:.04em;color:#c9a4ff;white-space:nowrap;text-overflow:ellipsis;box-sizing:border-box;text-align:start;direction:ltr;unicode-bidi:isolate;flex-shrink:0;width:100%;min-width:0;max-width:100%;margin:0 0 .5rem;font-family:"Press Start 2P",ui-monospace,monospace;font-size:clamp(11px,3.2vw,13px);font-weight:400;line-height:1.55;overflow:hidden}.screen:not(#s-home) .wrap>.byline{margin:0 0 .75rem}.screen.active{display:flex}.arow{flex-wrap:wrap;gap:.4rem;margin-top:.7rem;display:flex}.arow[hidden]{display:none}.arow .btn{box-sizing:border-box;flex:calc(50% - .25rem);min-width:0;max-width:100%}.dur-mins{grid-template-columns:repeat(5,minmax(0,1fr));gap:.4rem;margin-top:.45rem;display:grid}.dur-mins .chip{text-align:center;font-variant-numeric:tabular-nums;border-radius:12px;width:100%;min-height:42px;padding:0;font-family:IBM Plex Mono,monospace;font-size:.95rem}.char .pro-sign,.key .pro-sign{letter-spacing:0;align-items:flex-start;line-height:1;display:inline-flex}.pro-letters{letter-spacing:.04em;text-underline-offset:0;font-family:IBM Plex Mono,ui-monospace,monospace;font-weight:700;text-decoration:overline;text-decoration-thickness:2px}.punct-letters{letter-spacing:.04em;text-underline-offset:0;font-family:IBM Plex Mono,ui-monospace,monospace;font-weight:600;text-decoration:overline;text-decoration-thickness:1px}.pro-hat{opacity:.85;margin-inline-start:1px;font-size:.72em;font-weight:700;line-height:1}.auth-pop{z-index:60;padding:max(1rem, var(--st)) 1rem calc(1rem + var(--sb));background:#0b0c0ef2;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.auth-pop[hidden]{display:none}.auth-card{background:var(--card);width:100%;max-width:24rem;box-shadow:0 0 0 1px var(--bd), 0 20px 60px #0008;border-radius:18px;padding:1rem 1.05rem}.auth-top{justify-content:space-between;align-items:center;gap:.6rem;display:flex}.auth-top h2{margin:0;font-size:1.05rem}.auth-close{background:var(--muted);border-radius:10px;width:38px;height:38px;font-size:1.15rem}.auth-card .btn{margin-top:.65rem}.auth-email{direction:ltr;margin-top:.65rem}.auth-divider{color:var(--sub);text-align:center;margin:.8rem 0 .2rem;font-size:.75rem}.auth-status{color:var(--mf);min-height:1.3em;margin:.65rem 0 0;font-size:.8rem;line-height:1.4}.auth-user{word-break:break-word;direction:ltr;margin:.75rem 0 0;font-family:IBM Plex Mono,monospace;font-size:.88rem}.menu{flex-direction:column;gap:.6rem;margin-top:1.2rem;display:flex}.mb{text-align:start;background:var(--card);width:100%;box-shadow:0 0 0 1px var(--bd);border-radius:16px;align-items:center;gap:.8rem;min-height:72px;padding:1rem;display:flex}.mb:active{transform:scale(.985)}.mb .ic{background:var(--muted);border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;width:2.45rem;height:2.45rem;font-size:1.1rem;display:flex}.mb .tx{flex:1;min-width:0}.mb .tx b{font-size:1.05rem;display:block}.mb .tx>span{color:var(--mf);white-space:nowrap;text-overflow:ellipsis;margin-top:.15rem;font-size:.8rem;display:block;overflow:hidden}.mb .tx>span.bits{align-items:center;gap:.26rem;min-width:0;display:flex}.mb .tx .bit,.mb .tx .dot{font-size:inherit;color:inherit;white-space:nowrap;text-overflow:unset;margin:0;display:inline;overflow:visible}.mb .tx .bit{unicode-bidi:isolate;flex-shrink:0}.mb .tx .dot{opacity:.5;flex-shrink:0}.mb .ch{color:var(--sub);flex-shrink:0;font-size:1.15rem}.mb.pri{background:var(--fg);color:var(--bg);box-shadow:none}.mb.pri .ic{background:#0b0c0e1f}.mb.pri .tx>span{color:#0b0c0e8c}.mb.pri .ch{color:#0b0c0e66}.mb:disabled{opacity:.45}.hs{grid-template-columns:repeat(3,1fr);gap:.5rem;margin-top:1.1rem;display:grid}.hs>div{background:var(--card);text-align:center;box-shadow:0 0 0 1px var(--bd);border-radius:14px;padding:.75rem .4rem}.hs .n{direction:ltr;font-family:IBM Plex Mono,monospace;font-size:1.25rem;font-weight:600}.hs .l{color:var(--mf);margin-top:.12rem;font-size:.72rem}.home-bar{justify-content:space-between;align-items:center;gap:.6rem;margin-bottom:.85rem;display:flex}.home-actions{align-items:center;gap:.5rem;display:flex}.lang-wrap{position:relative}.lang-btn{background:var(--card);width:42px;height:42px;box-shadow:0 0 0 1px var(--bd);color:var(--fg);border-radius:12px;justify-content:center;align-items:center;display:flex}.lang-btn svg{display:block}.lang-btn[aria-expanded=true]{background:var(--fg);color:var(--bg)}.lang-menu{background:var(--card);min-width:11rem;box-shadow:0 0 0 1px var(--bd), 0 16px 40px #0006;z-index:40;top:calc(100% + 6px);border-radius:14px;padding:.35rem;position:absolute;inset-inline-start:0}.lang-menu[hidden]{display:none}.lang-opt{text-align:start;background:0 0;border-radius:10px;width:100%;min-height:44px;padding:0 .85rem;font-size:.92rem;font-weight:500}.lang-opt.on{background:var(--fg);color:var(--bg)}.account-btn{background:var(--card);max-width:12rem;height:42px;box-shadow:0 0 0 1px var(--bd);white-space:nowrap;text-overflow:ellipsis;border-radius:12px;padding:0 .85rem;font-size:.82rem;font-weight:600;overflow:hidden}.morse-rule{color:#e8e6e152;align-items:center;gap:.32rem;margin:.7rem 0 0;display:flex}.morse-rule i{background:currentColor;border-radius:2px;height:2px;display:block}.morse-rule .dit{border-radius:50%;width:.28rem;height:.28rem}.morse-rule .dah{width:1.15rem}#s-home h1{margin-top:.1rem}#s-home .ld{max-width:22rem}.mb .ic svg{display:block}html[dir=ltr] .mb .ch{transform:scaleX(-1)}.hs>div{position:relative;overflow:hidden}.hs>div:after{content:"";inset-inline:.7rem;background:linear-gradient(270deg,#0000,#e8e6e138,#0000);height:1px;position:absolute;top:0}#s-home .mb.pri{box-shadow:0 0 0 1px #e8e6e10f,0 10px 28px #00000047}.mb.pri:not(:disabled){background:var(--go);color:var(--go-ink);box-shadow:0 0 0 1px #b8f7c828,0 12px 28px #b8f7c81f}.mb.pri:not(:disabled) .ic{background:#10201818}.mb.pri:not(:disabled) .tx>span{color:#10201899}.mb.pri:not(:disabled) .ch{color:#10201866}#s-home .mb.pri:not(:disabled){box-shadow:0 0 0 1px #b8f7c828,0 12px 28px #b8f7c824}.dur-box{margin-top:.65rem}.dur-quick{gap:.4rem;display:flex}.dur-quick .chip{text-align:center;border-radius:12px;min-width:6.2rem}#s-set .wrap{padding-bottom:calc(8.2rem + var(--sb))}.grid{direction:ltr;grid-template-columns:repeat(6,minmax(0,1fr));gap:.35rem;margin-top:.55rem;display:grid}.char{background:var(--muted);min-height:48px;box-shadow:0 0 0 1px var(--bd);border-radius:10px;flex-direction:column;justify-content:center;align-items:center;gap:.12rem;display:flex}.char.on{background:var(--fg);color:var(--bg)}.char .L{font-family:IBM Plex Mono,monospace;font-size:1rem;font-weight:600}.char .P{color:var(--sub);font-family:IBM Plex Mono,monospace;font-size:.5rem}.char.on .P{color:#0b0c0e80}.space-opts{flex-direction:column;gap:.4rem;margin-top:.65rem;display:flex}.space-opts .chip{text-align:center;white-space:normal;border-radius:12px;width:100%;min-height:44px;padding:.55rem .75rem;line-height:1.25}.wbox{background:var(--muted);border-radius:12px;max-height:9rem;margin-top:.6rem;padding:.5rem .65rem;overflow-y:auto}.wbox .it{border-bottom:1px solid var(--bd);direction:ltr;justify-content:space-between;align-items:center;padding:.4rem 0;font-family:IBM Plex Mono,monospace;font-size:.88rem;display:flex}.wbox .it:last-child{border-bottom:none}.wbox .rm{min-width:32px;min-height:32px;color:var(--bad);background:0 0;font-size:.9rem}.add{direction:ltr;gap:.4rem;margin-top:.55rem;display:flex}.add input{flex:1;min-height:42px}.add button{background:var(--fg);min-height:42px;color:var(--bg);border-radius:12px;flex-shrink:0;padding:0 .9rem;font-size:.88rem;font-weight:500}.grid.pro-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.char.wide{min-height:56px}.char.hat-char .L{font-size:1.15rem}#s-sel .pro-help{margin-top:.35rem}#s-sel #w-kind{margin-top:.65rem}#s-sel .wrap{padding-bottom:calc(8.2rem + var(--sb))}.bars{-webkit-overflow-scrolling:touch;max-height:min(42vh,22rem);margin:.6rem 0 0;padding:0;list-style:none;overflow-y:auto}.bars li{align-items:center;gap:.45rem;margin-bottom:.35rem;font-size:.85rem;display:grid}.stat-cats{flex-wrap:wrap;gap:.35rem;margin-top:.55rem;display:flex}.stat-cats .chip{min-height:36px;padding:0 .7rem;font-size:.8rem}.bt{background:var(--muted);border-radius:99px;height:7px;overflow:hidden}.bf{background:var(--ok);border-radius:99px;min-width:2px;height:100%}.bf.m{background:#c4b07a}.bf.l{background:var(--bad)}.list.hist .hist-item{padding:0;display:block;overflow:hidden}.hist-main{text-align:start;background:0 0;border-radius:10px;justify-content:space-between;align-items:center;gap:.5rem;width:100%;min-height:48px;padding:.55rem .7rem;font-size:.88rem;display:flex}.hist-main>span:first-child{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.hist-main.open{background:#e8e6e10f}.hist-main:after{content:"";border-inline-end:1.5px solid var(--sub);border-bottom:1.5px solid var(--sub);flex-shrink:0;width:.4rem;height:.4rem;margin-inline-start:.15rem;transition:transform .15s;transform:rotate(45deg)}.hist-main.open:after{margin-top:.2rem;transform:rotate(225deg)}.hist-det{padding:.15rem .7rem .8rem}.hist-stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:.4rem;display:grid}.hist-stats div{background:var(--bg);border-radius:10px;padding:.45rem .55rem}.hist-stats span{color:var(--mf);font-size:.68rem;display:block}.hist-stats b{margin-top:.14rem;font-family:IBM Plex Mono,monospace;font-size:.92rem;font-weight:600;display:block}.hist-pool-lab{color:var(--mf);margin:.7rem 0 0;font-size:.68rem}.hist-det .hist-pool{letter-spacing:.08em;text-align:left;word-break:break-word;color:var(--fg);direction:ltr;margin:.25rem 0 0;font-family:IBM Plex Mono,monospace;font-size:.88rem;line-height:1.55}#s-stat .wrap{padding-bottom:calc(4.8rem + var(--sb))}.bars li{grid-template-columns:minmax(3.1rem,auto) 1fr auto}#s-ready{padding:calc(1rem + var(--st)) 1.2rem calc(1.6rem + var(--sb));justify-content:center;align-items:center;position:relative}#s-ready .byline{inset-inline-start:max(1rem, env(safe-area-inset-left,0px))}.ready-wrap{flex-direction:column;align-items:center;width:100%;max-width:22rem;display:flex}#s-ready.active .ready-wrap{animation:.42s cubic-bezier(.2,0,0,1) both ready-in}@keyframes ready-in{0%{opacity:0;filter:blur(6px);transform:translateY(12px)}to{opacity:1;filter:none;transform:none}}.ready-ring{width:11.2rem;height:11.2rem}.ready-ring svg{width:100%;height:100%;display:block;overflow:visible}.ready-track{fill:none;stroke:#b8f7c824;stroke-width:3.2px}.ready-fill{fill:none;stroke:#b8f7c84d;stroke-width:3.2px;stroke-linecap:round;stroke-dasharray:326.7;stroke-dashoffset:326.7px}.ready-snake{fill:none;stroke:var(--ready);stroke-width:4.2px;stroke-linecap:round;stroke-dasharray:78 248.7;stroke-dashoffset:0;filter:drop-shadow(0 0 8px #b8f7c88c)}.ready-ring.run .ready-fill{animation:var(--ready-fill-dur,4.2s) linear forwards ready-fill}.ready-ring.run .ready-snake{animation:.85s linear infinite ready-snake}@keyframes ready-fill{to{stroke-dashoffset:0}}@keyframes ready-snake{to{stroke-dashoffset:-326.7px}}.ready-title{letter-spacing:.08em;color:var(--ready);text-align:center;text-shadow:0 0 22px #b8f7c847;margin:1.2rem 0 0;font-family:Syne,Heebo,sans-serif;font-size:clamp(2.15rem,8.4vw,2.9rem);font-weight:800;line-height:1.05}.ready-morse{min-height:1.55rem;color:var(--ready);justify-content:center;align-items:center;gap:.48rem;margin-top:1rem;display:flex}.ready-morse .dit{background:currentColor;border-radius:50%;width:.52rem;height:.52rem;display:block;box-shadow:0 0 8px #b8f7c859}.ready-morse .dah{background:currentColor;border-radius:99px;width:1.85rem;height:.52rem;display:block;box-shadow:0 0 8px #b8f7c859}.ready-morse.tick i{animation:.28s ease-out ready-bit}@keyframes ready-bit{0%{opacity:.15;transform:scale(.65)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.ready-ring.run .ready-fill,.ready-ring.run .ready-snake,.ready-morse.tick i,#s-ready.active .ready-wrap{animation:none}.ready-fill{stroke-dashoffset:0}.ready-wrap{opacity:1;filter:none;transform:none}}.ready-title.go{letter-spacing:.14em}#s-ready .byline{top:calc(.55rem + var(--st));left:max(1rem, env(safe-area-inset-left,0px));right:max(1rem, env(safe-area-inset-right,0px));inset-inline:max(1rem, env(safe-area-inset-left,0px)) max(1rem, env(safe-area-inset-right,0px));text-align:start;width:auto;max-width:none;margin:0;position:absolute}.tt{padding:.9rem max(1rem, env(safe-area-inset-left,0px), env(safe-area-inset-right,0px)) 0;box-sizing:border-box;flex-shrink:0;justify-content:space-between;align-items:center;gap:.5rem;width:100%;max-width:26rem;margin:0 auto;display:flex}.tt>div:last-child{flex-shrink:0;gap:.35rem;display:flex}.tt .btn{min-height:42px;padding:0 .8rem;font-size:.82rem}#tr-stop.ready,#tr-pause.on{background:var(--fg);color:var(--bg);box-shadow:none}.prog{background:var(--muted);flex-shrink:0;width:100%;height:3px}.prog i{background:var(--fg);width:100%;height:100%;transition:width .2s linear;display:block}.tv{direction:ltr;margin:0;font-size:1.5rem;font-weight:500}.tl{color:var(--mf);margin:0;font-size:.8rem}.tv.held{opacity:.7}.tl.held{color:var(--fg);font-weight:600}.typed-row{box-sizing:border-box;flex-shrink:0;align-items:stretch;gap:.4rem;width:calc(100% - 2rem);max-width:26rem;margin:.85rem auto 0;display:flex}.typed{background:var(--card);min-width:0;height:3.5rem;min-height:3.5rem;max-height:3.5rem;box-shadow:0 0 0 1px var(--bd);border-radius:14px;outline:none;flex:1;align-items:center;padding:0;display:flex;position:relative;overflow:hidden}.typed:focus,.typed:focus-visible{box-shadow:0 0 0 1px #e8e6e147,0 0 0 4px #e8e6e11a}.typed .ph{color:var(--mf);white-space:nowrap;text-overflow:ellipsis;padding:0 .95rem;font-size:.9rem;overflow:hidden}.typed-track{box-sizing:border-box;direction:ltr;justify-content:flex-end;align-items:center;width:100%;height:100%;padding:0 1rem 0 1.6rem;display:none;overflow:hidden}.typed:not(.empty) .typed-track{display:flex}.typed:not(.empty) .ph{display:none}.typed .ch{white-space:nowrap;letter-spacing:.12em;direction:ltr;font-size:1.12rem;line-height:1}.typed-fade{background:linear-gradient(to right, var(--card) 20%, transparent);pointer-events:none;z-index:1;width:1.8rem;display:none;position:absolute;inset:0 auto 0 0}.typed:not(.empty) .typed-fade{display:block}.typed-track.tick .ch{animation:.18s ease-out tickin}@keyframes tickin{0%{opacity:.55;transform:translate(.55rem)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.typed-track.tick .ch{animation:none}}.texp{background:var(--card);width:3.5rem;min-height:3.5rem;box-shadow:0 0 0 1px var(--bd);color:var(--fg);border-radius:14px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.texp:disabled{opacity:.35;color:var(--mf)}.texp svg{display:block}.kb-bar{box-sizing:border-box;direction:ltr;flex-shrink:0;justify-content:space-between;align-items:center;gap:.4rem;width:calc(100% - 2rem);max-width:26rem;margin:.45rem auto 0;display:flex}.kb-bar .btn{width:auto;min-height:38px;padding:0 .8rem;font-size:.78rem}.kb-bar .btn.on{background:var(--fg);color:var(--bg);box-shadow:none}.bk-bar{background:var(--muted);min-height:38px;box-shadow:0 0 0 1.5px var(--bd);color:var(--fg);border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;gap:.3rem;padding:0 1rem;font-family:Heebo,sans-serif;font-size:.8rem;font-weight:700;display:flex}.bk-bar svg{flex-shrink:0;display:block}.kp{flex:none;width:calc(100% - 2rem);max-width:26rem;min-height:0;margin:.45rem auto 0;padding-bottom:0}.keys{direction:ltr;gap:.35rem;display:grid}.keys.full{--kg:.2rem;--kw:calc((100% - 9 * var(--kg)) / 10);flex-direction:column;gap:.26rem;display:flex}.krow{gap:var(--kg);direction:ltr;justify-content:center;display:flex}.krow.sym{--kw:calc((100% - 10 * var(--kg)) / 11)}.krow .key{flex:0 0 var(--kw);width:var(--kw);max-width:var(--kw);border-radius:10px;min-height:42px;padding:0;font-size:.86rem}.krow .key.spc{flex:0 0 62%;width:62%;min-width:9.5rem;max-width:none}.krow.grp{margin-top:.38rem}#keys .key:disabled{opacity:.3;color:var(--sub);box-shadow:0 0 0 1px #e8e6e10f}.key{background:var(--muted);min-height:48px;box-shadow:0 0 0 1px var(--bd);border-radius:11px;font-family:IBM Plex Mono,monospace;font-size:1.1rem;font-weight:600}.key:active:not(:disabled),.key.hit{background:var(--fg);color:var(--bg)}.typed-pop{z-index:40;padding:max(1rem, var(--st)) 1rem calc(1rem + var(--sb));background:#0b0c0eb8;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.typed-pop-card{background:var(--card);width:100%;max-width:26rem;max-height:min(70dvh,28rem);box-shadow:0 0 0 1px var(--bd);border-radius:18px;flex-direction:column;gap:.7rem;padding:1rem 1.05rem .9rem;display:flex}.typed-pop-top{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.typed-pop-top p{margin:0;font-size:.88rem;font-weight:600}.typed-full{letter-spacing:.1em;text-align:left;white-space:pre-wrap;word-break:break-word;direction:ltr;flex:1;min-height:4rem;margin:0;font-size:1.05rem;line-height:1.7;overflow:auto}.hf{opacity:0;width:1px;height:1px;position:absolute}.kb-hint{text-align:center;width:calc(100% - 2rem);max-width:26rem;color:var(--sub);flex-shrink:0;margin:.35rem auto 0;font-size:.75rem;line-height:1.35}#s-train{padding-top:max(10px, var(--st));height:100dvh;max-height:100dvh;overflow:hidden}#s-train>.byline{box-sizing:border-box;flex-shrink:0}#s-train .tt{margin-top:0;padding-top:.3rem}.train-pad{pointer-events:none;flex:1 1 0;min-height:0}.train-pad-top{flex-grow:1.1}.train-pad-mid{flex-grow:1.25}.train-pad-bot{flex-grow:.6}.kb-dock{box-sizing:border-box;-webkit-overflow-scrolling:touch;margin-top:0;flex-direction:column;flex:0 auto;width:100%;max-width:26rem;min-height:0;margin-inline:auto;padding-bottom:.45rem;display:flex;overflow-y:auto}.kb-dock .kb-bar{margin-top:0}.kb-dock .kp{margin-top:.4rem;overflow:visible}.bk-bar:active,.bk-bar.hit{box-shadow:none;background:var(--fg);color:var(--bg)}.keys.compact{flex-direction:column;align-items:stretch;gap:.45rem;display:flex}.keys.compact .krow{justify-content:center;gap:.4rem;width:100%;display:flex}.keys.compact .krow .key{border-radius:12px;flex:0 0 calc(20% - .32rem);width:calc(20% - .32rem);max-width:calc(20% - .32rem);min-height:58px;padding:0;font-size:1.18rem}.keys.compact.few .krow .key{flex:1 1 0;width:auto;min-width:3.2rem;max-width:5.2rem;min-height:64px;font-size:1.28rem}.keys.compact .krow .key.spc,.keys.compact.few .krow .key.spc{flex:0 0 62%;width:62%;min-width:9.5rem;max-width:none;min-height:58px}.keys.compact.few .krow .key.spc{min-height:64px}#tr-pause.on{background:var(--save);color:var(--save-ink);box-shadow:none}.key.hit,.key.spc.hit,.key.spc:active:not(:disabled){background:var(--fg);color:var(--bg)}#s-train>.byline{width:calc(100% - 2rem);max-width:26rem;margin:.4rem auto .1rem;padding:0}#keys button.key.hit,#keys button.key.spc.hit,#keys button.key:active:not(:disabled),#keys button.key.spc:active:not(:disabled){color:#0b0c0e;background:#e8e6e1}.kb-catch{z-index:3;resize:none;appearance:none;-webkit-user-select:text;user-select:text;border:0;outline:none;width:100%;height:100%;margin:0;padding:0;font-size:16px;line-height:1;position:absolute;inset:0;color:#0000!important;box-shadow:none!important;background:0 0!important}.typed-pop[hidden]{display:none}#typed-box{position:relative;overflow:hidden}#s-train{padding-bottom:calc(3.2rem + var(--sb))}.krow.pro{--kw:calc((100% - 3 * var(--kg,.2rem)) / 4);flex-wrap:wrap}.krow.pro .key{letter-spacing:0;flex:1 1 0;width:auto;min-width:3.4rem;max-width:none;font-size:.82rem}.krow.pro .key.hat,.krow.sym .key.hat{flex:0 0 2.6rem;min-width:2.6rem;max-width:3rem}.pro-hat-key{font-family:IBM Plex Mono,ui-monospace,monospace;font-size:1.15rem;font-weight:700}.keys.compact .krow.pro .key{flex:1 1 0;width:auto;min-width:3.6rem;max-width:none;min-height:58px;font-size:.95rem}.keys.compact .krow.pro .key.hat{flex:0 0 3rem;min-width:3rem;max-width:3.4rem}.typed #tch{letter-spacing:0;align-items:baseline;gap:.06em;display:inline-flex}.typed #tch .glyph{white-space:nowrap;letter-spacing:0}.typed #tch .glyph.pro{letter-spacing:0}.typed #tch .glyph.sp{color:#0000;letter-spacing:0;flex:0 0 .72em;width:.72em;min-width:.72em;display:inline-block;overflow:hidden}.typed #tch .glyph.pro .pro-letters,.typed-full .pro-letters{letter-spacing:.04em;text-underline-offset:2px;text-decoration:overline;text-decoration-thickness:2px}.typed-full .glyph.pro{letter-spacing:0}.typed-full .glyph{white-space:nowrap}.kb-catch{pointer-events:none!important;caret-color:#0000!important;opacity:0!important}#s-train.active #typed-box .kb-catch,#s-train:not(.active) .kb-catch{pointer-events:none!important;display:none!important}#typed-box,#s-train .typed{cursor:default}#keys,#keys .key,.kb-bar,.bk-bar,.kb-dock,#tr-kb,#tr-bs,#tr-pause,#tr-stop,#tr-expand{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.score{margin:0;font-family:IBM Plex Mono,monospace;font-size:2.8rem;font-weight:600}.score.ok{color:var(--ok)}.score.mid{color:var(--fg)}.score.bad{color:var(--bad)}.score span{color:var(--mf);font-size:1.25rem}.stats{grid-template-columns:repeat(2,1fr);gap:.5rem;margin:.85rem 0 0;display:grid}.stat{background:var(--muted);border-radius:11px;margin:0;padding:.55rem}.stat dt{color:var(--mf);margin:0;font-size:.7rem}.stat dd{margin:.1rem 0 0;font-size:1.15rem;font-weight:600}.ar{flex-wrap:wrap;align-items:center;gap:.2rem;margin-bottom:.3rem;display:flex}.al{color:var(--sub);text-align:end;min-width:2.6rem;font-size:.68rem}html[dir=ltr] .al{text-align:left;direction:ltr}.cell{border-radius:5px;justify-content:center;align-items:center;min-width:1.5rem;height:1.55rem;font-family:IBM Plex Mono,monospace;font-size:.8rem;display:inline-flex}.cell.ok{color:var(--ok);background:#8fa88e2e}.cell.wrong{color:var(--bad);background:#c489822e}.cell.miss{background:var(--muted);color:var(--mf)}.cell.extra{color:var(--bad);background:#c489821f}.fa{z-index:20;width:calc(100% - 2rem);max-width:24rem;padding:1.15rem 0 calc(.9rem + var(--sb));background:linear-gradient(to top, var(--bg) 58%, transparent);box-sizing:border-box;gap:.45rem;display:flex;position:fixed;bottom:0;left:50%;right:auto;transform:translate(-50%)}.fa .btn{flex:1 1 0;min-width:0}.fa .btn.pri{flex:1.25}.align{direction:ltr;flex-direction:column;gap:1rem;margin-top:0;display:flex;overflow-x:auto}.ablock{flex-direction:column;gap:.4rem;min-width:0;display:flex}.ablock .al{color:var(--mf);letter-spacing:.01em;text-align:start;direction:rtl;min-width:0;margin:0;font-size:.82rem;font-weight:600}html[dir=ltr] .ablock .al{text-align:start;direction:ltr}.ablock .ar{flex-wrap:wrap;align-items:center;gap:.28rem;margin:0;display:flex}#s-res .wrap{padding-bottom:calc(8.4rem + var(--sb))}.cell.punct{letter-spacing:.02em;min-width:3.2rem;padding:0 .28rem}.cell.punct .punct-letters{text-decoration:overline;text-decoration-thickness:1px}.cell.pro{letter-spacing:.02em;min-width:3.2rem;padding:0 .28rem}.cell.pro .pro-letters{text-decoration:overline;text-decoration-thickness:2px}.mean-l li{align-items:flex-start;gap:.75rem}.mean-sym{direction:ltr;unicode-bidi:isolate;flex-shrink:0;min-width:4.6rem;font-family:IBM Plex Mono,ui-monospace,monospace;font-weight:700}.mean-slash{color:var(--sub);font-weight:500}.mean-txt{color:var(--mf);flex:1;font-size:.88rem;line-height:1.4}
