@import"https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=Manrope:wght@400;500;700&display=swap";:root{--bg: #0d0f11;--text-strong: #f5f7fa;--text-body: #d0d6dd;--text-soft: #93a0ad;--text-faint: #6e7a88;--text-accent: #e5e7eb;--good: #9be5c4;--bad: #f5a3a3;--current: #f2f4f8;--input-bg: #14191f;--input-bg-focus: #1a2027}*,*:before,*:after{box-sizing:border-box}html,body,#root{width:100%;min-height:100%}body{margin:0;min-width:320px;min-height:100dvh;font-family:Manrope,sans-serif;color:var(--text-body);background:var(--bg);text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit;color:inherit}.app-shell{width:100%;margin:0 auto;padding:1.8rem 1rem calc(1.8rem + env(safe-area-inset-bottom));display:grid;justify-items:center;gap:1rem}.app-shell.is-session-active .control-bar,.app-shell.is-session-active .session-actions,.app-shell.is-session-active .history-panel,.app-shell.is-session-active .result-card{opacity:.2;pointer-events:none}.app-shell.is-session-active .stat-card{opacity:.25}.app-shell.is-session-active .stat-card.stat-card-timer{opacity:1}.control-bar,.workspace{width:min(100%,940px)}.control-bar{padding:.6rem .2rem;display:grid;gap:.75rem;color:var(--text-soft)}.mode-switch{display:flex;flex-wrap:wrap;gap:.55rem}.mode-chip{border:none;background:transparent;color:var(--text-faint);padding:.2rem .1rem;cursor:pointer;font-size:.82rem;letter-spacing:.04em;text-transform:uppercase;transition:color .13s ease}.mode-chip:hover{color:var(--text-body)}.mode-chip.is-active{color:var(--text-accent);font-weight:600}.control-row{display:flex;align-items:center;flex-wrap:wrap;gap:.75rem}.control-group{display:inline-flex;align-items:center;gap:.42rem}.control-group span{color:var(--text-faint);font-size:.79rem}.control-group select,.control-group input[type=range]{border:none;background:transparent;color:var(--text-soft);padding:.08rem .2rem;min-width:56px;font-size:.85rem}.toggle-group{display:inline-flex;gap:.38rem;align-items:center;color:var(--text-faint);font-size:.82rem}.toggle-group input{accent-color:#cbd5e1}.control-copy{margin:0;color:var(--text-faint);font-size:.84rem}.settings-button{margin-left:auto;border:none;background:transparent;color:var(--text-faint);padding:0;cursor:pointer;font-size:.83rem;text-transform:uppercase;letter-spacing:.04em}.settings-button.is-active{color:var(--text-body)}.settings-panel{padding-top:.2rem;display:flex;gap:.8rem;flex-wrap:wrap}.workspace{display:block}.main-column{width:100%;display:grid;gap:.95rem}.stat-rail{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:.45rem;color:var(--text-faint)}.stat-card{padding:.12rem .05rem;display:grid;gap:.12rem}.stat-label{color:var(--text-faint);text-transform:uppercase;letter-spacing:.05em;font-size:.58rem}.stat-value{font-size:.92rem;font-family:IBM Plex Mono,monospace;color:var(--text-soft)}.stat-card-mode .stat-value{text-transform:capitalize}.prompt-shell{padding:1.4rem .05rem .55rem;display:grid;gap:1rem;cursor:text}.prompt-meta{display:flex;justify-content:space-between;color:var(--text-faint);letter-spacing:.05em;text-transform:uppercase;font-size:.68rem}.prompt-text{padding:.9rem .95rem;min-height:var(--typing-min-height);font-family:IBM Plex Mono,monospace;font-size:inherit;line-height:1.58;white-space:pre-wrap;overflow-wrap:normal;word-break:normal;color:#7d8996}.typing-stage{--typing-min-height: 240px;position:relative;display:block;border-radius:4px;background:var(--input-bg)}.typing-stage:focus-within{background:var(--input-bg-focus)}.prompt-overlay{position:absolute;inset:0;pointer-events:none;overflow:hidden}.prompt-word{display:inline-block;white-space:pre}.prompt-space{white-space:pre}.prompt-char{transition:color .12s linear,background-color .12s linear}.prompt-char.is-correct{color:var(--good)}.prompt-char.is-incorrect{color:var(--bad)}.prompt-char.is-current{color:var(--current);background-color:#f2f4f838;border-radius:2px;position:relative;box-shadow:0 0 0 1px #f2f4f84d;animation:prompt-current-pulse 1.15s ease-in-out infinite}@keyframes prompt-current-pulse{0%,to{background-color:#f2f4f829;box-shadow:0 0 0 1px #f2f4f838}50%{background-color:#f2f4f852;box-shadow:0 0 0 1px #f2f4f873}}.prompt-overflow{color:var(--bad)}.typing-input{position:relative;z-index:1;width:100%;min-height:var(--typing-min-height);resize:none;border:none;border-radius:4px;background:transparent;color:transparent;caret-color:transparent;padding:.9rem .95rem;font-family:IBM Plex Mono,monospace;line-height:1.58;font-size:inherit;outline:none;overflow-wrap:normal;word-break:normal;white-space:pre-wrap;overflow:hidden;-webkit-user-select:none;user-select:none}.typing-input::selection{background:#f2f4f838}.typing-input::placeholder{color:transparent}.typing-input.is-finished{caret-color:transparent}.session-actions{display:flex;align-items:center;gap:.72rem;flex-wrap:wrap}.session-actions button{border:none;background:transparent;padding:0;cursor:pointer;color:var(--text-faint);font-size:.84rem;text-transform:lowercase}.session-actions button:hover:not(:disabled){color:var(--text-body)}.session-actions button:disabled{cursor:not-allowed;opacity:.45}.duration-chip{margin-left:auto;color:var(--text-faint);font-size:.8rem;font-family:IBM Plex Mono,monospace}.result-card{padding:.5rem .05rem;display:grid;gap:.82rem;color:var(--text-soft)}.result-head{display:flex;justify-content:space-between;align-items:baseline;gap:.8rem}.result-head h2{margin:0;font-size:.88rem;text-transform:uppercase;letter-spacing:.05em;color:var(--text-faint)}.result-head p{margin:0;color:var(--text-faint);font-size:.8rem}.result-grid,.result-coder{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.52rem}.result-grid div,.result-coder div{padding:.26rem .05rem;display:grid;gap:.2rem}.result-grid span,.result-coder span{color:var(--text-faint);font-size:.66rem;text-transform:uppercase;letter-spacing:.05em}.result-grid strong,.result-coder strong{font-family:IBM Plex Mono,monospace;font-size:.95rem;color:var(--text-body)}.result-insights h3{margin:0 0 .25rem;font-size:.8rem;text-transform:uppercase;letter-spacing:.05em;color:var(--text-faint)}.result-insights ul{list-style:none;margin:0;padding:0;display:grid;gap:.4rem}.result-insights li{display:grid;gap:.15rem}.result-insights p{margin:0;font-size:.86rem;color:var(--text-soft)}.result-insights span{color:var(--text-faint);font-size:.79rem;line-height:1.42}.result-actions{display:flex;gap:.6rem}.result-actions button{border:none;background:transparent;padding:0;cursor:pointer;color:var(--text-faint);font-size:.83rem}.result-actions button:hover{color:var(--text-body)}.history-panel{padding:.4rem .05rem 0;color:var(--text-soft)}.history-panel header{display:flex;justify-content:space-between;align-items:baseline;gap:.8rem}.history-panel h3{margin:0;font-size:.8rem;text-transform:uppercase;letter-spacing:.05em;color:var(--text-faint)}.history-panel p{margin:0;color:var(--text-faint);font-size:.78rem}.history-panel ul{list-style:none;margin:.62rem 0 0;padding:0;display:grid;gap:.38rem}.history-panel li{padding:.24rem .04rem;display:grid;grid-template-columns:84px 56px 70px 1fr;align-items:center;gap:.5rem;font-size:.78rem}.history-panel li span:first-child{text-transform:capitalize;color:var(--text-faint)}.history-panel li strong{font-family:IBM Plex Mono,monospace;color:var(--text-body)}.history-panel li time{color:var(--text-faint);text-align:right}.history-empty{color:var(--text-faint);font-size:.82rem}.visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}@media(max-width:980px){.stat-rail{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:720px){.app-shell{padding:.95rem .75rem calc(1.1rem + env(safe-area-inset-bottom));gap:.85rem}.control-row{gap:.58rem}.settings-button{margin-left:0}.typing-stage{--typing-min-height: 170px}.prompt-shell{padding-top:1rem;gap:.82rem}.prompt-text,.typing-input{line-height:1.68}.result-grid,.result-coder,.stat-rail{grid-template-columns:repeat(2,minmax(0,1fr))}.history-panel li{grid-template-columns:68px 52px 58px 1fr;font-size:.74rem}}
