@import "https://fonts.googleapis.com/css2?family=Geist+Mono:wght@300;400;500&family=Geist:wght@300;400;500&display=swap";
:root{--bg:#1c1a17;--bg-sub:#242118;--bg-card:#2a271f;--text:#e8e4da;--sub:#9f9688;--sub-alt:#3a3630;--dim:#524e46;--accent:#d4693a;--accent-bg:#d4693a1f;--focus-ring:#d4693adb;--focus-ring-soft:#d4693a47;--target-accent:#7db884;--target-accent-strong:#9bd49f;--delete-accent:#e07575;--success:#7db884;--error:#e07575;--border:#ffffff12;--f-mono:"Geist Mono", monospace;--f-ui:"Geist", sans-serif;--r:8px;--ease:cubic-bezier(.16, 1, .3, 1)}[data-theme=light]{--bg:#f7f1e8;--bg-sub:#efe6dc;--bg-card:#e8dacd;--text:#332f2a;--sub:#766b60;--sub-alt:#e5d7ca;--dim:#beb0a1;--accent:#b85b35;--accent-bg:#b85b351f;--focus-ring:#b85b35db;--focus-ring-soft:#b85b3538;--target-accent:#3f7a4b;--target-accent-strong:#2f6840;--delete-accent:#b4463f;--success:#3f7a4b;--error:#b4463f;--border:#332f2a1a}*,:before,:after{box-sizing:border-box}html,body{background:var(--bg);min-height:100%;color:var(--text);font-family:var(--f-ui);-webkit-font-smoothing:antialiased;margin:0;font-size:15px;line-height:1.6}button,input{font:inherit}button{font-family:inherit}input[type=color]{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.45}.app-header :where(a,button):focus,.modebar :where(button):focus,.results-view :where(a,button,[role=button]):focus{outline:none}.app-header :where(a,button):focus-visible,.modebar :where(button):focus-visible,.results-view :where(a,button,[role=button]):focus-visible{box-shadow:0 0 0 1px var(--bg), 0 0 0 3px var(--focus-ring), 0 0 18px var(--focus-ring-soft);animation:focusLand .28s var(--ease) both;outline:none}.tab-shifting .app-header :where(a,button):focus-visible,.tab-shifting .modebar :where(button):focus-visible,.results-view.tab-shifting :where(a,button,[role=button]):focus-visible{animation:focusShift .34s var(--ease) both}.app-shell{background:var(--bg);max-width:900px;min-height:100vh;color:var(--text);grid-template-rows:auto auto 1fr auto;margin:0 auto;padding:0 32px;display:grid}.app-content{display:contents}.app-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;min-width:0;padding:24px 0 20px;display:flex}.logo{color:var(--text);cursor:pointer;letter-spacing:-.01em;background:0 0;border:0;align-items:center;gap:9px;padding:0;font-size:15px;font-weight:500;text-decoration:none;transition:opacity .15s;display:flex}.logo:hover{opacity:.72}.logo-mark{color:var(--accent);font-family:-apple-system,Helvetica Neue,sans-serif;font-size:19px;line-height:1}nav{gap:4px;display:flex}nav button{color:var(--sub);cursor:pointer;background:0 0;border:0;border-radius:6px;align-items:center;gap:6px;padding:5px 10px;font-size:13px;transition:color .15s,background .15s;display:inline-flex}nav a{color:var(--sub);border-radius:6px;align-items:center;gap:6px;padding:5px 10px;font-size:13px;text-decoration:none;transition:color .15s,background .15s;display:inline-flex}nav button:hover:not(:disabled),nav a:hover{color:var(--text);background:var(--sub-alt)}.modebar{border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;min-height:45px;padding:11px 0;display:flex}.modebar-placeholder{visibility:hidden;pointer-events:none}.mode-group{gap:2px;display:flex}.mode-btn{color:var(--sub);cursor:pointer;background:0 0;border:0;border-radius:6px;align-items:center;gap:6px;padding:4px 10px;font-size:13px;transition:color .15s,background .15s;display:inline-flex}.mode-btn:hover{color:var(--text);background:var(--sub-alt)}.mode-btn.active{color:var(--accent);background:var(--accent-bg)}.shortcut-hint{opacity:.72;vertical-align:middle;align-items:center;gap:2px;margin-left:2px;display:inline-flex}.shortcut-hint kbd{border:1px solid var(--border);color:currentColor;min-width:16px;height:16px;font-family:var(--f-ui);text-align:center;text-transform:lowercase;background:#ffffff0b;border-radius:4px;padding:0 4px;font-size:10px;font-weight:500;line-height:14px}.results-tab-coach{border:1px solid var(--focus-ring);background:var(--accent-bg);width:fit-content;box-shadow:0 0 18px var(--focus-ring-soft);color:var(--accent);pointer-events:none;text-transform:lowercase;animation:tabCoachIn .42s var(--ease) both, tabCoachNudge 1.6s var(--ease) .45s infinite;border-radius:999px;align-items:center;gap:8px;margin:0;padding:7px 10px 7px 12px;font-size:13px;font-weight:500;display:inline-flex}.results-tab-coach kbd{border:1px solid var(--focus-ring);background:color-mix(in srgb, var(--accent) 14%, var(--bg-sub));min-width:34px;color:var(--accent);font-family:var(--f-ui);text-align:center;border-radius:5px;padding:5px 8px;font-size:12px;font-weight:500;line-height:1}.mode-controls{flex:0 0 128px;justify-content:flex-end;align-items:center;gap:8px;width:128px;min-width:0;height:39px;margin-left:auto;display:flex;position:relative}.mode-controls.open{flex-basis:128px;justify-content:flex-end;width:128px;margin-left:auto}.mode-controls.open.compact{flex-basis:128px;width:128px;margin-left:auto}.mode-options-shell{--options-open-width:min(438px, calc(100vw - 48px));z-index:2;border-radius:var(--r);background:color-mix(in srgb, var(--bg-sub) 58%, transparent);width:128px;min-width:0;height:39px;color:var(--sub);contain:layout paint style;isolation:isolate;transform-origin:100%;backface-visibility:hidden;will-change:width, background, color, transform;transition:width .42s cubic-bezier(.19, 1, .22, 1), background .24s var(--ease), color .24s var(--ease);border:0;justify-content:flex-end;align-items:center;display:flex;position:absolute;top:50%;right:0;overflow:hidden;transform:translateY(-50%)}.mode-options-shell.open{z-index:8;width:var(--options-open-width);box-shadow:none;background:0 0}.mode-options-shell.compact.open{--options-open-width:min(334px, calc(100vw - 48px))}.mode-options-toggle{color:inherit;cursor:pointer;white-space:nowrap;will-change:opacity, transform;transition:opacity .16s var(--ease) .1s, transform .24s var(--ease) .1s;background:0 0;border:0;justify-content:center;align-items:center;gap:9px;padding:0 13px;font-size:12px;display:flex;position:absolute;inset:0;transform:translate(0,0)}.mode-options-shell.open .mode-options-toggle{opacity:0;pointer-events:none;transition-delay:0s;transform:translate(-8px)scale(.985)}.mode-options-label{color:var(--accent);font-weight:500}.chevron-mark{opacity:.72;border-bottom:1.5px solid;border-right:1.5px solid;flex:none;width:7px;height:7px}.chevron-mark.down{margin-top:-3px;transform:rotate(45deg)}.chevron-mark.up{margin-top:3px;transform:rotate(225deg)}.mode-options-shell:hover{background:color-mix(in srgb, var(--bg-sub) 86%, transparent);color:var(--text)}.mode-options-shell.open:hover{background:0 0}.mode-options-panel{opacity:0;pointer-events:none;will-change:opacity, transform;transition:opacity .14s var(--ease), transform .26s var(--ease);justify-content:flex-end;align-items:center;gap:5px;display:flex;position:absolute;inset:4px;overflow:hidden;transform:translate(10px)}.mode-options-shell.open .mode-options-panel{opacity:1;pointer-events:auto;transition:opacity .22s var(--ease) .12s, transform .34s cubic-bezier(.19, 1, .22, 1) 60ms;transform:translate(0,0)}.mode-options-close{height:29px;color:var(--sub);cursor:pointer;background:0 0;border:0;border-radius:6px;flex:none;justify-content:center;align-items:center;gap:6px;padding:0 6px;font-size:12px;display:inline-flex}.mode-options-close:hover:not(:disabled){background:var(--bg-card);color:var(--text)}.difficulty-segment.hidden{display:none}.mini-segment{border-radius:var(--r);background:0 0;border:1px solid #0000;align-items:center;gap:2px;padding:2px;display:inline-flex}.segment-label{color:var(--sub);white-space:nowrap;padding:0 4px;font-size:11px}.mini-segment button,.mode-meta-btn{color:var(--sub);cursor:pointer;white-space:nowrap;background:0 0;border:0;border-radius:6px;padding:5px 6px;font-size:11px}.mini-segment button:hover:not(:disabled),.mode-meta-btn:hover:not(:disabled){color:var(--text)}.mini-segment button.active,.mode-meta-btn.active{background:var(--accent-bg);color:var(--accent)}main{opacity:1;filter:blur();will-change:opacity, filter, transform;min-width:0;transition:opacity .22s var(--ease), filter .22s var(--ease), transform .28s cubic-bezier(.19, 1, .22, 1);flex-direction:column;justify-content:flex-start;padding:20px 0 12px;display:flex;transform:translate(0,0)scale(1)}main.screen-crossfade{filter:blur(1.5px);opacity:0;pointer-events:none;transform:translateY(4px)scale(.998)}.game-view{flex-direction:column;gap:20px;transition:opacity .15s;display:flex}.game-view.fading{opacity:.45}.status-row{justify-content:space-between;align-items:center;display:flex}.timer{color:var(--sub);font-family:var(--f-mono);font-variant-numeric:tabular-nums;font-size:15px;transition:color .2s}.timer.running{color:var(--accent)}.pips{gap:7px;display:flex}.pip{background:var(--sub-alt);border-radius:2px;width:20px;height:3px}.pip.current{background:var(--accent)}.pip.done{background:var(--success)}.block-label{color:var(--sub);letter-spacing:.07em;opacity:.7;text-transform:uppercase;justify-content:space-between;align-items:center;gap:10px;margin-bottom:8px;font-size:11px;font-weight:500;display:flex}.block-label.accent{color:var(--accent);opacity:.85}.part-label{color:var(--sub);font-family:var(--f-ui);letter-spacing:.04em;font-weight:500}.target-panel{border-radius:0;min-height:112px;padding:0;position:relative;overflow:hidden}.target-panel.updated:after{background:linear-gradient(90deg, transparent, var(--accent), transparent);content:"";pointer-events:none;height:1px;animation:targetUpdated 1.2s var(--ease) both;position:absolute;bottom:0;left:0;right:0}.target-block{color:var(--accent);font-family:var(--f-mono);letter-spacing:-.01em;pointer-events:none;-webkit-user-select:none;user-select:none;white-space:pre-wrap;word-break:break-word;min-height:58px;max-height:156px;padding:0 0 22px;font-size:19px;font-weight:400;line-height:1.75;overflow:hidden}.target-block.target-switched{animation:targetTextSwitch .7s var(--ease) both}.target-attention{color:var(--target-accent-strong);text-decoration-line:underline;-webkit-text-decoration-color:color-mix(in srgb, var(--target-accent-strong) 82%, var(--target-accent));text-decoration-color:color-mix(in srgb, var(--target-accent-strong) 82%, var(--target-accent));text-underline-offset:5px;text-shadow:0 0 10px color-mix(in srgb, var(--target-accent) 24%, transparent);font-weight:600;text-decoration-thickness:1.5px}.target-indent-guide{color:#0000;width:4ch;display:inline-block;position:relative}.target-indent-guide:before{background:color-mix(in srgb, var(--target-accent-strong) 48%, transparent);width:2px;box-shadow:0 0 10px color-mix(in srgb, var(--target-accent) 20%, transparent);content:"";border-radius:999px;position:absolute;top:.3em;bottom:.32em;left:.5ch}.editor-zone{--history-height:64px;--edit-label-height:24px;min-height:calc(var(--history-height) + var(--edit-label-height) + 56px);position:relative}.editor-zone.has-reset{min-height:calc(var(--history-height) + var(--edit-label-height) + 94px)}.edit-label{top:var(--history-height);transition:top .42s var(--ease), color .22s, opacity .22s;margin:0;position:absolute;left:0;right:0}.editor-zone.has-history .edit-label{top:0}.editor-flow{--completion-rail-height:28px;top:var(--edit-label-height);grid-template-rows:var(--history-height) auto;min-height:calc(var(--history-height) + 56px);transition:box-shadow .25s var(--ease);background:0 0;border-radius:0;align-items:start;display:grid;position:absolute;left:0;right:0;overflow:visible}.editor-flow.has-reset{grid-template-rows:var(--history-height) auto auto;min-height:calc(var(--history-height) + 94px)}.editor-flow.matched .active-segment:after{z-index:2;width:2px;height:var(--completion-rail-height);background:var(--success);content:"";pointer-events:none;transform-origin:bottom;animation:completionRailExtend 1.08s var(--ease) both;position:absolute;bottom:14px;left:0;box-shadow:0 0 14px #7db88461}.editor-flow.matched .active-segment:before{animation:activeRailReset 1.08s var(--ease) both}.editor-flow.matched .active-segment .edit-block{animation:correctTextPulse .42s var(--ease) both}.locked-stack{height:var(--history-height);opacity:0;pointer-events:none;transition:opacity .42s var(--ease), transform .42s var(--ease);position:relative;overflow:hidden;transform:translateY(4px)}.editor-zone.has-history .locked-stack{opacity:1;transform:translateY(0)}.locked-stack-inner{flex-direction:column;justify-content:flex-end;display:flex;position:absolute;bottom:0;left:0;right:0}.locked-segment{color:var(--sub);font-family:var(--f-mono);letter-spacing:-.01em;pointer-events:none;-webkit-user-select:none;user-select:none;white-space:pre-wrap;word-break:break-word;min-height:32px;max-height:56px;padding:3px 20px;font-size:17px;font-weight:400;line-height:1.55;overflow:hidden}.locked-segment.just-completed{animation:completedLineSettle .68s var(--ease) both}.active-segment{align-self:start;min-height:56px;position:relative}.active-segment:before{width:2px;height:var(--active-rail-height,48px);background:var(--accent);content:"";opacity:.75;transform-origin:bottom;transition:background .18s,box-shadow .18s,opacity .18s;position:absolute;top:8px;bottom:auto;left:0}.active-segment.revealed .edit-block{animation:lineReveal .52s var(--ease) both}.drill-view .locked-segment.just-completed{animation-duration:.82s}.drill-view .editor-flow.matched .active-segment:after,.drill-view .editor-flow.matched .active-segment:before{animation-duration:1.38s}.drill-view .editor-flow.matched .active-segment:after{bottom:8px}.drill-view .active-segment:before{height:var(--active-rail-height,34px);top:8px}.drill-view.difficulty-multiline .edit-block{min-height:56px;max-height:80px}.drill-view.difficulty-multiline .active-segment{min-height:56px}.drill-view.difficulty-multiline .active-segment:before{height:var(--active-rail-height,34px)}.drill-view .active-segment.revealed .edit-block{animation:drillLineReveal .72s var(--ease) both}.difficulty-multiline .target-block{max-height:128px;-webkit-mask-image:linear-gradient(#000 72%,#0000);mask-image:linear-gradient(#000 72%,#0000)}.difficulty-multiline .edit-block{min-height:150px;max-height:150px}.difficulty-multiline .editor-zone{--history-height:40px;min-height:calc(var(--history-height) + var(--edit-label-height) + 150px)}.difficulty-multiline .active-segment{min-height:150px}.difficulty-multiline .active-segment:before{height:var(--active-rail-height,88px)}.difficulty-multiline .locked-segment{min-height:26px;max-height:26px;color:color-mix(in srgb, var(--sub) 82%, transparent);opacity:.62;text-overflow:ellipsis;white-space:nowrap;word-break:normal;padding:2px 20px;font-size:13px;line-height:1.4;overflow:hidden}.difficulty-multiline .editor-zone.has-history .locked-stack{height:var(--history-height);margin-top:0}.difficulty-multiline .locked-segment.just-completed{animation:completedMultilineTrail .72s var(--ease) both}.difficulty-multiline .active-segment.revealed .edit-block{animation:lineCrossfade .58s var(--ease) both}.difficulty-multiline .editor-flow.matched .active-segment:after,.difficulty-multiline .editor-flow.matched .active-segment:before{animation-duration:1.2s}.active-segment.hinting:before{opacity:1;box-shadow:0 0 12px #d4693a6b}.edit-stack{position:relative}.syntax-overlay{z-index:0;border-radius:var(--r);color:var(--text);font-family:var(--f-mono);letter-spacing:-.01em;pointer-events:none;white-space:pre-wrap;word-break:break-word;padding:8px 20px;font-size:19px;font-weight:400;line-height:1.75;position:absolute;inset:0;overflow:hidden}.deletion-hint-overlay{z-index:2;border-radius:var(--r);color:#0000;font-family:var(--f-mono);letter-spacing:-.01em;pointer-events:none;white-space:pre-wrap;word-break:break-word;padding:8px 20px;font-size:19px;font-weight:400;line-height:1.75;position:absolute;inset:0;overflow:hidden}.indent-hint-overlay{z-index:3;border-radius:var(--r);color:#0000;font-family:var(--f-mono);letter-spacing:-.01em;pointer-events:none;white-space:pre-wrap;padding:8px 20px;font-size:19px;font-weight:400;line-height:1.75;position:absolute;inset:0;overflow:hidden}.indent-hint-line{height:1.75em;position:relative}.indent-hint-marker{opacity:0;gap:8px;height:.95em;display:inline-flex;position:absolute;top:.34em;left:0;transform:translate(-6px)}.indent-hint-line.needs-indent .indent-hint-marker{opacity:1;animation:indentHintIn .24s var(--ease) both, indentHintPulse 1.9s var(--ease) .24s infinite;transform:translate(0)}.indent-hint-marker span{width:13px;height:.95em;position:relative}.indent-hint-marker span:before,.indent-hint-marker span:after{background:color-mix(in srgb, var(--target-accent-strong) 82%, var(--success));box-shadow:0 0 12px color-mix(in srgb, var(--target-accent) 28%, transparent);content:"";position:absolute}.indent-hint-marker span:before{opacity:.9;width:2px;top:0;bottom:0;left:0}.indent-hint-marker span:after{opacity:.9;width:8px;height:2px;top:calc(50% - 1px);left:0}.delete-extra{background:linear-gradient(to bottom, transparent 43%, color-mix(in srgb, var(--delete-accent) 58%, transparent) 43%, color-mix(in srgb, var(--delete-accent) 58%, transparent) 56%, transparent 56%), color-mix(in srgb, var(--delete-accent) 12%, transparent);-webkit-box-decoration-break:clone;box-decoration-break:clone;color:color-mix(in srgb, var(--delete-accent) 74%, var(--text));text-decoration-line:line-through;-webkit-text-decoration-color:color-mix(in srgb, var(--delete-accent) 82%, transparent);text-decoration-color:color-mix(in srgb, var(--delete-accent) 82%, transparent);text-shadow:0 0 14px color-mix(in srgb, var(--delete-accent) 24%, transparent);animation:deletionStrikeIn .2s var(--ease) both;border-radius:3px;margin:0 -1px;padding:0 1px;text-decoration-thickness:2px}.line-numbers{z-index:2;color:color-mix(in srgb, var(--sub) 62%, transparent);font-family:var(--f-mono);pointer-events:none;-webkit-user-select:none;user-select:none;flex-direction:column;font-size:19px;line-height:1.75;display:flex;position:absolute;top:8px;bottom:8px;left:18px}.line-numbers span{text-align:right;min-width:2ch}.edit-block{z-index:1;min-height:56px;max-height:210px;color:var(--text);cursor:text;font-family:var(--f-mono);letter-spacing:-.01em;white-space:pre-wrap;word-break:break-word;background:0 0;border:0;border-radius:0;outline:none;padding:8px 20px;font-size:19px;font-weight:400;line-height:1.75;position:relative;overflow-y:auto}.edit-block.syntax-source{color:#0000;caret-color:var(--accent)}.edit-block:focus{outline:none}.edit-block:focus-visible{box-shadow:none}.edit-block.native-caret{caret-color:var(--accent)}.coding-view .target-block,.coding-view .edit-block{tab-size:2}.coding-view.difficulty-multiline .target-panel{min-height:196px;overflow:visible}.coding-view.difficulty-multiline .target-block{max-height:none;padding-bottom:8px;-webkit-mask-image:none;mask-image:none}.coding-view .active-segment{border:1px solid color-mix(in srgb, var(--accent) 42%, var(--border));border-radius:var(--r);background:color-mix(in srgb, var(--bg) 88%, #000);overflow:hidden;box-shadow:0 18px 42px #0000001f}.coding-view .edit-block{color:color-mix(in srgb, var(--text) 82%, var(--success))}.coding-view .edit-block.syntax-source{color:#0000;padding-left:58px}.coding-view .syntax-overlay{padding-left:58px}.coding-view .indent-hint-overlay{padding-left:48px}.coding-view .deletion-hint-overlay{padding-left:58px}.coding-view .active-segment:before{border-top:2px solid var(--accent);border-bottom:2px solid var(--accent);border-left:3px solid var(--accent);border-radius:var(--r) 0 0 var(--r);width:18px;height:100%;box-shadow:-8px 0 22px color-mix(in srgb, var(--accent) 12%, transparent), inset 10px 0 16px color-mix(in srgb, var(--accent) 7%, transparent);opacity:.92;background:0 0;top:0;bottom:auto;left:-1px}.coding-view .editor-flow.matched .active-segment{animation:consoleSuccessPulse 1.1s var(--ease) both}.coding-view .editor-flow.matched .active-segment:before{animation:consoleBracketReset 1.1s var(--ease) both}.coding-view .editor-flow.matched .active-segment:after{display:none}.syntax-keyword{color:#86a8ff}.syntax-string{color:var(--success)}.syntax-number{color:#d6a15f}.syntax-punctuation{color:var(--accent)}.syntax-name{color:color-mix(in srgb, var(--text) 88%, #86a8ff)}.syntax-plain{color:var(--text)}.edit-block.diff-active{color:#0000}.diff-overlay{border-radius:var(--r);color:var(--text);font-family:var(--f-mono);letter-spacing:-.01em;pointer-events:none;white-space:pre-wrap;word-break:break-word;background:#e0757509;padding:8px 20px;font-size:19px;line-height:1.75;position:absolute;inset:1px;overflow:hidden}.diff-wrong{color:var(--error);background:#e075752b;border-radius:3px;box-shadow:0 0 0 1px #e0757538}.cta-row,.results-actions{align-items:center;gap:18px;display:flex}.results-actions button{align-items:center;gap:7px;display:inline-flex}.results-actions .btn-ghost{border-radius:var(--r);padding:9px 14px}.results-actions .btn-ghost:focus-visible,.results-actions .btn-ghost:hover{background:var(--bg-sub);color:var(--text)}.share-preview-panel{border-top:1px solid color-mix(in srgb, var(--border) 82%, transparent);grid-template-columns:1fr;align-items:start;gap:14px;padding-top:14px;display:grid;overflow:hidden}.share-card-dialog{width:min(100vw - 32px,720px)}.share-preview-image{min-width:0}.share-preview-image img{border-radius:var(--r);width:100%;height:auto;display:block;box-shadow:0 16px 36px #00000029}.share-preview-loading{aspect-ratio:2;border-radius:var(--r);background:var(--bg-sub);color:var(--sub);font-family:var(--f-mono);place-items:center;font-size:13px;display:grid}.share-preview-actions{justify-content:flex-start;align-items:center;gap:12px;padding-bottom:2px;display:inline-flex}.share-preview-actions .btn-ghost{border-radius:var(--r);padding:8px 10px}.share-preview-actions .btn-ghost:hover:not(:disabled),.share-preview-actions .btn-ghost:focus-visible{background:var(--bg-sub);color:var(--text)}.cta-row span{color:var(--sub);font-size:12px}.btn-primary{border-radius:var(--r);background:var(--accent);color:var(--bg);cursor:pointer;border:0;align-items:center;gap:8px;padding:9px 18px;font-size:13px;font-weight:500;transition:opacity .15s,transform 80ms;display:inline-flex}.btn-primary:hover:not(:disabled){opacity:.84}.btn-primary:active:not(:disabled){transform:scale(.98)}.btn-ghost{color:var(--sub);cursor:pointer;background:0 0;border:0;padding:0;font-size:13px;transition:color .15s}.btn-ghost:hover{color:var(--text)}.drill-safety{min-height:34px;color:var(--sub);opacity:.76;animation:drillSafetyIn .32s var(--ease) both;justify-content:flex-start;align-items:center;margin-top:2px;padding-left:20px;font-size:12px;display:flex}.drill-safety .btn-ghost{border-radius:6px;align-items:center;gap:6px;margin-left:0;padding:4px 8px 4px 0;display:inline-flex}.drill-safety .shortcut-hint{opacity:.58}.drill-safety .btn-ghost:hover,.drill-safety .btn-ghost:focus-visible{color:var(--accent);background:0 0}footer{border-top:1px solid var(--border);color:var(--sub);opacity:.55;justify-content:center;align-items:center;gap:18px;padding:14px 0 22px;font-size:12px;display:flex}.footer-reset-indicator{align-items:center;gap:6px;display:inline-flex}.footer-keyboard{color:var(--sub);cursor:pointer;background:0 0;border:0;align-items:center;gap:6px;padding:0;font-size:12px;display:inline-flex}.footer-keyboard:hover:not(:disabled){color:var(--text)}.danger-footer-action{color:var(--accent)}.kbd{color:var(--sub);background:#ffffff12;border-radius:4px;padding:2px 6px;font-size:11px}[data-theme=light] .kbd{background:#3a353012}.settings-panel{z-index:90;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);z-index:80;background:#1c1a17cc;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}[data-theme=light] .settings-panel{background:#f0ebe3c7}.settings-card{border:1px solid var(--border);background:var(--bg);border-radius:12px;width:min(100vw - 32px,560px);max-height:min(720px,100vh - 32px);padding:28px 32px;overflow-y:auto;box-shadow:0 6px 30px #0006}.settings-card h2{color:var(--text);margin:0 0 18px;font-size:18px;font-weight:500}.panel-heading{justify-content:space-between;align-items:center;gap:16px;margin-bottom:18px;display:flex}.panel-heading h2{margin:0}.setting-group{border:0;grid-template-columns:132px 1fr;align-items:center;gap:16px;min-width:0;margin:12px 0;padding:0;display:grid}.setting-group>legend{float:left;width:132px;color:var(--sub);font-size:12px}.setting-group>div{flex-wrap:wrap;gap:6px;display:flex}.opt-btn{background:var(--bg-sub);color:var(--sub);cursor:pointer;border:0;border-radius:6px;padding:6px 13px;font-size:13px;transition:color .15s,background .15s}.opt-btn:hover{color:var(--text);background:var(--bg-card)}.opt-btn.active{color:var(--accent);background:var(--accent-bg)}.color-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;width:100%;display:grid}.color-field{background:var(--bg-sub);min-width:0;color:var(--sub);border-radius:6px;justify-content:space-between;align-items:center;gap:8px;padding:6px 8px;font-size:12px;display:flex}.color-field span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.color-field input{background:0 0;border:0;border-radius:4px;flex:none;width:28px;height:24px;padding:0}.close-cue{align-items:center;gap:7px;margin:20px auto 0;display:inline-flex}.history-card{width:min(100vw - 32px,760px);max-height:min(660px,100vh - 32px);padding:24px 28px;overflow:hidden}.history-card-expanded{overflow-y:auto}.history-heading{align-items:start;margin-bottom:14px}.history-heading-actions{white-space:nowrap;justify-content:flex-end;align-items:center;gap:12px;display:inline-flex}.history-filters{border-bottom:1px solid color-mix(in srgb, var(--border) 86%, transparent);align-items:center;gap:10px;margin-bottom:12px;padding-bottom:12px;display:flex}.history-filter-select{border-radius:var(--r);background:color-mix(in srgb, var(--bg-sub) 66%, transparent);flex:1 1 0;grid-template-columns:auto minmax(150px,1fr);align-items:center;gap:8px;min-width:0;padding:7px 10px;display:grid;position:relative}.history-filter-select span{color:var(--sub);letter-spacing:.08em;opacity:.72;text-transform:uppercase;font-size:11px}.history-filter-select select{width:100%;min-width:0;color:var(--accent);cursor:pointer;font:inherit;background:0 0;border:0;outline:none;font-size:13px}.history-filter-select select:focus-visible{color:var(--text)}.history-meta,.empty-state{color:var(--sub);margin:3px 0 0;font-size:12px}.history-bests{min-height:30px;color:var(--sub);flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 12px;font-size:12px;display:flex}.history-bests>span{color:var(--text-muted);letter-spacing:.08em;text-transform:uppercase}.history-bests em{font-style:normal}.history-best-chip{border:1px solid var(--border);background:var(--bg-sub);color:var(--sub);cursor:pointer;border-radius:999px;align-items:center;gap:7px;padding:4px 8px;display:inline-flex}.history-best-chip strong{color:var(--accent);font-family:var(--f-mono);font-weight:500}.history-layout{grid-template-columns:minmax(180px,.72fr) minmax(0,1.28fr);align-items:start;gap:14px;display:grid}.history-list{flex-direction:column;gap:5px;min-height:0;display:flex}.history-row{border-radius:var(--r);background:var(--bg-sub);color:var(--sub);cursor:pointer;text-align:left;border:0;gap:2px;padding:7px 10px;display:grid}.history-row strong{color:var(--text);font-family:var(--f-mono);font-size:15px;font-weight:500;line-height:1.15}.history-row span{font-size:11px;line-height:1.25}.history-row.active{background:var(--accent-bg);color:var(--accent)}.history-show-more{border-radius:var(--r);color:var(--accent);cursor:pointer;text-align:left;background:0 0;border:0;justify-content:space-between;align-items:center;gap:10px;padding:7px 10px;font-size:12px;display:flex}.history-show-more:hover,.history-show-more:focus-visible{background:var(--accent-bg)}.history-show-more span{color:var(--sub)}.history-detail{border-left:1px solid color-mix(in srgb, var(--border) 82%, transparent);min-width:0;color:var(--sub);background:0 0;border-radius:0;align-content:start;gap:9px;padding:2px 0 0 14px;display:grid}.history-detail-summary{grid-template-columns:auto minmax(0,1fr);align-items:start;gap:14px;display:grid}.history-detail-summary strong{color:var(--accent);font-family:var(--f-mono);font-size:22px;font-weight:500;line-height:1}.history-detail-summary div{gap:1px;min-width:0;display:grid}.history-detail span,.history-detail-summary span{font-size:12px}.history-detail pre{border-radius:var(--r);background:var(--bg-card);max-height:96px;color:var(--text);font-family:var(--f-mono);white-space:pre-wrap;margin:0;padding:10px;font-size:12px;line-height:1.45;overflow:auto}.history-share-action{width:fit-content;margin-top:2px}.history-share-preview{border-radius:var(--r);overflow:hidden}.history-share-preview .share-card{grid-template-columns:1fr;gap:10px;min-height:auto;padding:12px}.history-share-preview .share-left{grid-template-columns:auto 1fr auto;align-items:center;gap:12px;display:grid}.history-share-preview .share-left strong{font-size:22px}.history-share-preview .share-pair{grid-template-columns:1fr}.danger-action{color:var(--sub)}.shortcut-map-card{width:min(100vw - 32px,920px)}.shortcut-map-layout{grid-template-columns:minmax(190px,.55fr) minmax(0,1.45fr);gap:18px;display:grid}.shortcut-command-list{align-content:start;gap:6px;max-height:420px;display:grid;overflow:auto}.mock-keyboard-wrap{align-content:start;gap:12px;min-width:0;display:grid}.selected-shortcut{border-radius:var(--r);background:var(--accent-bg);color:var(--accent);font-family:var(--f-mono);margin:0;padding:10px 12px;font-size:14px}.mock-keyboard{border-radius:var(--r);background:var(--bg-sub);flex-direction:column;gap:6px;padding:12px;display:flex}.keyboard-row{grid-template-columns:repeat(15,minmax(0,1fr));gap:5px;display:grid}.mock-keyboard span{border:1px solid var(--border);background:var(--bg-card);min-height:30px;color:var(--sub);font-family:var(--f-ui);text-align:center;border-radius:6px;padding:6px 4px;font-size:10px}.mock-keyboard .key-backspace,.mock-keyboard .key-tab,.mock-keyboard .key-caps,.mock-keyboard .key-enter,.mock-keyboard .key-shift{grid-column:span 2}.mock-keyboard .key-space{grid-column:span 5}.mock-keyboard span.lit{border-color:var(--accent);background:var(--accent-bg);color:var(--accent);box-shadow:0 0 18px var(--focus-ring-soft)}.results-view{outline:none;flex-direction:column;gap:14px;min-width:0;display:flex}.results-view:focus,.results-view:focus-visible{outline:none}.results-top{grid-template-columns:minmax(220px,.58fr) minmax(0,1.42fr);align-items:stretch;gap:36px;min-width:0;margin-bottom:4px;display:grid}.results-hero{min-width:0}.results-tab-slot{display:none}.results-actions .results-tab-coach{justify-content:flex-start;align-items:center;min-height:0;margin-right:10px;display:flex}.results-hero p{color:var(--sub);margin:0;font-size:12px}.results-hero h1{color:var(--accent);font-family:var(--f-mono);letter-spacing:-.04em;margin:0;font-size:44px;font-weight:500;line-height:1.1}.pb-badge{background:var(--accent-bg);color:var(--accent);border-radius:999px;margin-top:6px;padding:3px 9px;font-size:12px;display:inline-block}.results-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:22px;margin:16px 0 4px;display:grid}.results-keystroke-panel{align-content:center;justify-self:end;gap:8px;width:min(68%,430px);min-width:0;padding:8px 0 4px;display:grid;position:relative;overflow:hidden}.results-keystroke-panel:before{content:none}.results-keystroke-heading{color:var(--sub);letter-spacing:.08em;text-transform:uppercase;justify-content:space-between;align-items:center;gap:12px;font-size:11px;display:flex}.results-keystroke-heading strong{color:var(--accent);font-family:var(--f-mono);letter-spacing:0;text-transform:none;font-size:12px;font-weight:500}.results-playback-keyboard{flex-direction:column;gap:3px;min-width:0;display:flex}.results-playback-keyboard span{border:1px solid color-mix(in srgb, var(--border) 52%, transparent);min-height:18px;color:color-mix(in srgb, var(--sub) 66%, transparent);font-family:var(--f-ui);text-align:center;background:0 0;border-radius:5px;padding:5px 2px 3px;font-size:8px;line-height:1}.results-playback-keyboard .key-backspace,.results-playback-keyboard .key-tab,.results-playback-keyboard .key-caps,.results-playback-keyboard .key-enter,.results-playback-keyboard .key-shift{grid-column:span 2}.results-playback-keyboard .key-space{grid-column:span 5}.results-playback-keyboard span.lit{animation:playbackKeyPulse var(--playback-duration,6.4s) var(--ease) var(--pulse-delay,0s) infinite}.keystroke-ticker{contain:paint;min-width:0;height:12px;color:color-mix(in srgb, var(--accent) 82%, var(--sub));font-family:var(--f-mono);border-radius:0 999px 999px 0;font-size:10px;line-height:1;position:relative;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,#0000 0,#000 18px 84%,#0000 100%);mask-image:linear-gradient(90deg,#0000 0,#000 18px 84%,#0000 100%)}.keystroke-ticker span{white-space:pre;width:max-content;min-width:100%;animation:keystrokeTicker var(--playback-duration,6.4s) linear infinite;display:block;position:absolute;inset:2px auto auto 0}.results-insights{color:var(--sub);flex-wrap:wrap;gap:7px;font-size:12px;display:flex}.results-insights span{background:var(--bg-sub);border-radius:999px;padding:3px 8px}.stat-card{border-top:1px solid color-mix(in srgb, var(--border) 86%, transparent);background:0 0;border-radius:0;min-width:0;padding:8px 0 0;line-height:1.25}.stat-card strong{color:var(--text);font-family:var(--f-mono);font-size:17px;font-weight:500;line-height:1.15;display:block}.stat-card span{color:var(--sub);font-size:12px;line-height:1.2}.share-card{border-radius:var(--r);background:var(--bg-sub);width:100%;max-width:100%;min-height:156px;color:var(--text);grid-template-columns:190px minmax(0,1fr);gap:28px;padding:14px 16px;display:grid;position:relative;overflow:hidden}.share-card:before{content:"";background:var(--accent);opacity:.52;width:1px;box-shadow:0 0 18px var(--focus-ring-soft);border-radius:999px;position:absolute;inset:12px auto 12px 10px}.share-left{flex-direction:column;justify-content:space-between;min-width:0;padding-left:8px;display:flex}.share-right{align-content:start;min-width:0}.share-left strong{color:var(--accent);font-family:var(--f-mono);font-size:28px;font-weight:500;line-height:1}.share-left span,.share-left em{color:var(--sub);font-size:12px;font-style:normal;line-height:1.8}.share-left em{font-weight:500}.share-right p{color:var(--sub);letter-spacing:.07em;text-transform:uppercase;margin:0 0 8px;font-size:11px}.share-pair{border-radius:var(--r);font-family:var(--f-mono);white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px;font-size:clamp(10px,1.2vw,12px);line-height:1.5;display:grid}.share-pane{border-radius:var(--r);background:var(--bg-card);min-width:0;max-height:82px;padding:10px 12px;overflow:auto}.share-pane-label{color:var(--sub);font-family:var(--f-ui);letter-spacing:.07em;text-transform:uppercase;margin-bottom:5px;font-size:10px;line-height:1.2;display:block}.share-pair span{display:block}.share-pair .before{color:var(--error)}.share-pair .after{color:var(--success)}.share-right small{color:var(--sub);margin-top:6px;font-size:12px;display:block}.share-final{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.share-card-export{grid-template-columns:180px 1fr;gap:26px;width:640px;min-height:320px;padding:32px}.share-card-export .share-left strong{font-size:44px}.share-card-export .share-pair{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px;font-size:13px;line-height:1.7}.share-card-export .share-pane{max-height:174px;padding:12px 14px}.export-status{min-height:20px;color:var(--error);margin:0;font-size:12px}@keyframes focusLand{0%{box-shadow:0 0 0 1px var(--bg), 0 0 0 1px var(--focus-ring), 0 0 0 var(--focus-ring-soft)}to{box-shadow:0 0 0 1px var(--bg), 0 0 0 3px var(--focus-ring), 0 0 18px var(--focus-ring-soft)}}@keyframes focusShift{0%{box-shadow:0 0 0 1px var(--bg), 0 0 0 1px var(--focus-ring), 0 0 0 var(--focus-ring-soft);transform:translateY(1px)}55%{box-shadow:0 0 0 1px var(--bg), 0 0 0 4px var(--focus-ring), 0 0 22px var(--focus-ring-soft);transform:translateY(0)}to{box-shadow:0 0 0 1px var(--bg), 0 0 0 3px var(--focus-ring), 0 0 18px var(--focus-ring-soft);transform:translateY(0)}}@keyframes tabCoachIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes tabCoachNudge{0%,to{box-shadow:0 10px 28px #0003}45%{box-shadow:0 10px 28px #0003, 0 0 0 3px var(--focus-ring-soft)}}@keyframes targetUpdated{0%{opacity:0;transform:scaleX(0)}18%,70%{opacity:.85;transform:scaleX(1)}to{opacity:0;transform:scaleX(1)}}@keyframes targetTextSwitch{0%{opacity:0;transform:translateY(2px)}60%{opacity:1;transform:translateY(0)}to{opacity:1;transform:translateY(0)}}@keyframes deletionStrikeIn{0%{opacity:0;text-shadow:none;transform:translateY(1px)}to{opacity:1;text-shadow:0 0 14px color-mix(in srgb, var(--delete-accent) 26%, transparent);transform:translateY(0)}}@keyframes indentHintIn{0%{opacity:0;transform:translate(-8px)}to{opacity:1;transform:translate(0)}}@keyframes indentHintPulse{0%,to{filter:brightness();opacity:.74}44%{filter:brightness(1.28);opacity:1}}@keyframes completedLineSettle{0%{color:var(--text);opacity:0;transform:translateY(6px)}48%{color:var(--text);opacity:.86;transform:translateY(0)}to{color:var(--sub);opacity:1;transform:translateY(0)}}@keyframes completedBlockFade{0%{color:var(--text);opacity:.2}45%{color:var(--text);opacity:.82}to{color:var(--sub);opacity:.82}}@keyframes completedMultilineTrail{0%{color:var(--text);opacity:0;transform:translateY(8px)}45%{color:var(--success);opacity:.88;transform:translateY(0)}to{color:color-mix(in srgb, var(--sub) 82%, transparent);opacity:.62;transform:translateY(0)}}@keyframes correctTextPulse{0%{color:var(--text);text-shadow:none}35%{color:color-mix(in srgb, var(--text) 72%, var(--success));text-shadow:0 0 18px color-mix(in srgb, var(--success) 34%, transparent)}to{color:var(--text);text-shadow:none}}@keyframes playbackKeyPulse{0%,13%,to{border-color:color-mix(in srgb, var(--border) 85%, transparent);background:color-mix(in srgb, var(--bg-card) 78%, transparent);color:color-mix(in srgb, var(--sub) 88%, transparent);box-shadow:none;transform:translateY(0)}4%{border-color:color-mix(in srgb, var(--accent) 78%, transparent);background:var(--accent-bg);color:var(--accent);box-shadow:0 0 16px var(--focus-ring-soft);transform:translateY(-1px)}}@keyframes keystrokeTicker{0%{transform:translate(0)}to{transform:translate(-50%)}}@keyframes completionRailExtend{0%{opacity:0;transform:scaleY(.3)}16%{opacity:1}42%{opacity:1;transform:scaleY(1)}63%{opacity:.95;transform:scaleY(1)}82%{opacity:.72;transform:scaleY(.26)}to{opacity:0;transform:scaleY(.3)}}@keyframes activeRailReset{0%{background:var(--success);opacity:1;transform:scaleY(1);box-shadow:0 0 12px #7db8845c}60%{background:var(--success);opacity:1;transform:scaleY(1);box-shadow:0 0 10px #7db88442}84%{background:var(--accent);opacity:.95;transform:scaleY(1.08);box-shadow:0 0 10px #d4693a33}to{background:var(--accent);opacity:.75;box-shadow:none;transform:scaleY(1)}}@keyframes consoleSuccessPulse{0%{border-color:color-mix(in srgb, var(--accent) 42%, var(--border));box-shadow:0 18px 42px #0000001f}32%{border-color:var(--success);box-shadow:0 0 0 1px color-mix(in srgb, var(--success) 70%, transparent), 0 0 26px color-mix(in srgb, var(--success) 28%, transparent)}72%{border-color:var(--success);box-shadow:0 0 0 1px color-mix(in srgb, var(--success) 46%, transparent), 0 0 18px color-mix(in srgb, var(--success) 18%, transparent)}to{border-color:color-mix(in srgb, var(--accent) 42%, var(--border));box-shadow:0 18px 42px #0000001f}}@keyframes consoleBracketReset{0%{border-color:var(--success);box-shadow:-8px 0 24px color-mix(in srgb, var(--success) 18%, transparent), inset 10px 0 18px color-mix(in srgb, var(--success) 10%, transparent);opacity:1;transform:scaleY(1)}58%{border-color:var(--success);box-shadow:-8px 0 20px color-mix(in srgb, var(--success) 14%, transparent), inset 10px 0 16px color-mix(in srgb, var(--success) 8%, transparent);opacity:1;transform:scaleY(1)}82%{border-color:var(--accent);box-shadow:-8px 0 22px color-mix(in srgb, var(--accent) 14%, transparent), inset 10px 0 16px color-mix(in srgb, var(--accent) 8%, transparent);opacity:.96;transform:scaleY(1.015)}to{border-color:var(--accent);box-shadow:-8px 0 22px color-mix(in srgb, var(--accent) 12%, transparent), inset 10px 0 16px color-mix(in srgb, var(--accent) 7%, transparent);opacity:.92;transform:scaleY(1)}}@keyframes lineReveal{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes lineCrossfade{0%{opacity:0}to{opacity:1}}@keyframes drillLineReveal{0%{opacity:0;transform:translateY(5px)}55%{opacity:.76;transform:translateY(1px)}to{opacity:1;transform:translateY(0)}}@keyframes drillSafetyIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:.82;transform:translateY(0)}}@media (max-width:700px){.app-shell{padding:0 18px}.app-header{align-items:flex-start;gap:10px}nav{flex-wrap:wrap;justify-content:flex-end;max-width:220px}nav .shortcut-hint,.modebar .shortcut-hint{display:none}.modebar,.status-row,.cta-row,footer{flex-direction:column;align-items:flex-start}.mode-controls{flex-direction:column;align-items:flex-start;margin-left:0}.mode-options-shell,.mode-options-shell.open,.mode-options-shell.compact.open{width:min(100%,100vw - 36px)}.results-top,.share-card{grid-template-columns:1fr}.results-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.results-playback-keyboard,.results-playback-keyboard .keyboard-row{gap:3px}.results-playback-keyboard span{border-radius:5px;min-height:18px;padding:5px 2px 3px;font-size:8px}.results-actions{flex-wrap:wrap;gap:12px}.share-preview-panel{grid-template-columns:1fr;align-items:start}.share-preview-image img{width:100%}.share-preview-actions{justify-content:flex-start}.results-actions button{justify-content:center;min-width:0}.share-card{width:100%;min-height:auto}.settings-card{padding:24px 20px}.setting-group{grid-template-columns:1fr;gap:8px}.setting-group>legend{float:none;width:auto}.color-grid{grid-template-columns:1fr}.results-hero h1{font-size:40px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
