:root{--text-main:var(--ink);--text-muted:var(--muted)}.editor-intro:before{background-image:url('typing-art-v1.png');inset:-8px -15px -25px 7%;background-size:100% auto;background-position:center;opacity:.43}[data-theme=dark] .editor-intro:before{opacity:.2}.editor-icon{background:linear-gradient(145deg,#acb4a5,#758674)}.typing-toolbar{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:20px 0;border-bottom:1px solid var(--line);margin-bottom:30px;font-size:11px;color:var(--muted)}.typing-workspace{border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--surface);scroll-margin-top:100px}.session-settings{padding:22px 28px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:25px;flex-wrap:wrap}.mode-choice{display:flex;gap:6px}.mode-choice button{background:transparent;border-color:transparent}.mode-choice .active{background:var(--wash);border-color:var(--line);font-weight:600}.setting-fields{display:flex;gap:18px}.setting-fields label{font-size:10px;color:var(--muted);display:flex;align-items:center;gap:10px}.setting-fields label[hidden]{display:none}.setting-fields select{background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:5px;font-size:11px;padding:9px 10px}.typing-stage{padding:34px 40px 24px;background:var(--wash)}.stage-heading{display:flex;justify-content:space-between;align-items:center;gap:25px}.eyebrow{font-size:9px}.session-metrics{display:flex;gap:32px}.session-metrics span{font-size:10px;color:var(--muted);display:block;margin-bottom:8px}.session-metrics strong{font-size:22px;font-weight:500;font-variant-numeric:tabular-nums}.session-hint{font-size:11px;color:var(--muted);line-height:1.8;margin:22px 0}.target-text{position:relative;font:25px/1.9 Consolas,monospace;letter-spacing:.2px;max-height:150px;overflow:auto;overflow-wrap:anywhere;color:var(--muted);padding:8px 0;margin:22px 0 28px;scrollbar-width:thin}.target-text .right{color:var(--ink)}.target-text .wrong{color:#b2665e;background:#b2665e15;text-decoration:underline;text-decoration-thickness:1px}.target-text .caret{border-left:2px solid #78977f;margin-left:-2px}.entry-label{font-size:10px;color:var(--muted);display:block;margin-bottom:11px}#typingInput{box-sizing:border-box;display:block;width:100%;min-height:105px;padding:16px 18px;border:1px solid var(--line);border-radius:7px;background:var(--surface);color:var(--ink);font:17px/1.8 Consolas,monospace;resize:vertical}#typingInput:focus{outline:2px solid #78977f80;outline-offset:2px}#typingInput:disabled{opacity:.7}.stage-footer{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-top:20px}.stage-footer>span{font-size:10px;color:var(--muted);line-height:1.8}.stage-footer button{flex:none;font-size:11px}.typing-results{padding:34px 40px;border-top:1px solid var(--line)}.typing-results[hidden]{display:none}.results-heading{display:flex;align-items:center;justify-content:space-between;gap:20px}.results-heading h2{font-size:30px;letter-spacing:-1px;margin:14px 0}.results-heading p{font-size:11px;color:var(--muted);line-height:1.8}.result-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:25px;margin:30px 0;padding:25px 0;border-block:1px solid var(--line)}.result-metrics dt{font-size:10px;color:var(--muted);margin-bottom:14px}.result-metrics dd{font-size:30px;font-weight:500;letter-spacing:-1px;margin:0}.results-detail{display:grid;grid-template-columns:1fr 1fr;gap:45px}.results-detail h3{font-size:14px;font-weight:500;margin:5px 0 18px}.results-detail p{font-size:11px;color:var(--muted);line-height:1.9}.results-detail svg{width:100%;height:auto;max-height:130px;color:#78977f;background:var(--wash);border-bottom:1px solid var(--line)}.fine-print{font-size:10px!important}.progress-panel{display:grid;grid-template-columns:1fr 1fr;gap:40px;padding:30px 0;margin:20px 0 0;border-bottom:1px solid var(--line)}.progress-panel h3{font-size:20px;letter-spacing:-.4px;margin:14px 0 22px}.progress-panel label{font-size:12px;display:flex;gap:9px;align-items:center}.progress-panel input{accent-color:#78977f}.progress-panel p,.progress-panel li{font-size:11px;line-height:1.9;color:var(--muted)}.progress-panel ol{padding-left:18px}.progress-panel button{font-size:10px}.site-header .theme-choice{width:78px;max-width:78px;margin:0;padding:10px 9px;font-size:11px;flex:none}button{cursor:pointer;box-shadow:none}@media(max-width:800px){.session-settings{align-items:flex-start;flex-direction:column}.stage-heading{align-items:flex-start;flex-direction:column}.typing-stage,.typing-results{padding:26px}.target-text{font-size:21px}.result-metrics{grid-template-columns:1fr 1fr}.results-detail{grid-template-columns:1fr;gap:25px}.progress-panel{grid-template-columns:1fr;gap:20px}.setting-fields{flex-wrap:wrap}.stage-footer{align-items:flex-start;flex-direction:column}.editor-intro:before{opacity:.28;background-size:auto 100%}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}

/* Keep the next expected character distinct from both completed and upcoming text. */
.target-text .caret{color:#245a49;background:#dbece1;border-radius:3px;box-shadow:0 0 0 2px #dbece1;border-left-color:#4d8067}
[data-theme=dark] .target-text .caret{color:#e4f5e9;background:#385548;box-shadow:0 0 0 2px #385548;border-left-color:#a2c7ad}
.target-text .caret.next-space{background:#c9dfd2;box-shadow:0 0 0 2px #c9dfd2;text-decoration:underline;text-decoration-color:#4d8067}
[data-theme=dark] .target-text .caret.next-space{background:#456653;box-shadow:0 0 0 2px #456653;text-decoration-color:#bad8c2}

/* Strong, steady cyan marker for the next character in either theme. */
.target-text .caret,.target-text .caret.next-space,[data-theme=dark] .target-text .caret,[data-theme=dark] .target-text .caret.next-space{color:#062631;background:#48d9f3;border-radius:3px;border-left:2px solid #007d99;box-shadow:0 0 0 2px #48d9f3;font-weight:700;text-decoration:none}
.target-text .caret.next-space,[data-theme=dark] .target-text .caret.next-space{text-decoration:underline;text-decoration-color:#005b70;text-decoration-thickness:2px;text-underline-offset:4px}

/* Readable supporting typography at normal browser zoom. */
.typing-toolbar{font-size:14px}
.session-settings button,.typing-toolbar button,.stage-footer button,.results-heading button,.results-detail button,.progress-panel button{font-size:13px;padding:11px 15px}
.setting-fields label,.session-metrics span,.entry-label{font-size:13px}
.setting-fields select{font-size:13px;padding:10px 12px}
.session-hint,.stage-footer>span,.results-heading p,.results-detail p,.progress-panel p,.progress-panel li{font-size:14px;line-height:1.8}
.progress-panel label{font-size:14px;line-height:1.7}
.result-metrics dt{font-size:13px;line-height:1.5}
.results-detail h3{font-size:17px}
.fine-print{font-size:13px!important}
.stage-heading .eyebrow,.results-heading .eyebrow,.progress-panel .eyebrow{font-size:11px;line-height:1.6}
.progress-panel h3{font-size:23px}
.editor-guide .guide-heading>p,.editor-guide .guide-steps li,.editor-guide .faq-questions p{font-size:15px;line-height:1.85}
.editor-guide .guide-steps strong,.editor-guide .faq-questions summary{font-size:15px}
.editor-guide .faq-intro>a{font-size:14px}
@media(max-width:480px){.setting-fields{width:100%;gap:14px}.setting-fields label{flex-wrap:wrap}.session-settings{padding:20px}.session-metrics{gap:26px}.typing-stage,.typing-results{padding:22px}.stage-footer button{align-self:flex-start}}
