:root{font-family:Courier New,monospace;line-height:1.5;color-scheme:dark;color:#e0e0e0;background-color:#1a1a2e;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;min-width:320px;min-height:100vh}*{margin:0;padding:0;box-sizing:border-box}body{background:#1a1a2e;color:#e0e0e0;font-family:Courier New,monospace;min-height:100vh;overflow-x:hidden}#root{margin:0 auto;padding:0}.app-layout{display:flex;min-height:100vh}.app{flex:1;display:flex;flex-direction:column;gap:.75rem;padding:1rem 1.5rem;max-width:850px;min-width:0}.sidebar{width:220px;min-width:220px;background:#0d1117;border-right:1px solid #2d2d4a;display:flex;flex-direction:column;position:relative;overflow-y:auto;max-height:100vh;position:sticky;top:0}.sidebar.collapsed{width:32px;min-width:32px}.sidebar-toggle{position:absolute;top:8px;right:4px;background:none;border:none;color:#666;cursor:pointer;font-family:inherit;font-size:.85rem;padding:2px 6px;z-index:2}.sidebar-toggle:hover{color:#7bed9f}.sidebar-content{padding:.5rem 0}.sidebar-title{padding:.5rem .8rem .3rem;font-size:.7rem;color:#555;text-transform:uppercase;letter-spacing:.1em}.sidebar-phase{margin-bottom:.3rem}.sidebar-phase-name{padding:.4rem .8rem .15rem;font-size:.7rem;color:#7bed9f;font-weight:700;text-transform:uppercase;letter-spacing:.05em}.sidebar-lesson{display:flex;align-items:center;width:100%;padding:.25rem .8rem;background:none;border:none;color:#888;font-family:inherit;font-size:.75rem;cursor:pointer;text-align:left;gap:.4rem;transition:all .15s}.sidebar-lesson:hover{background:#1a1a2e;color:#ccc}.sidebar-lesson.current{background:#16213e;color:#fff;border-left:2px solid #7bed9f}.sidebar-lesson.done{color:#5a8a5a}.sidebar-lesson.done.current{color:#fff}.sidebar-status{font-family:Courier New,monospace;width:1.2em;text-align:center;flex-shrink:0;color:#7bed9f}.sidebar-lesson-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mobile-menu-btn,.mobile-drawer-overlay{display:none}.header{text-align:center}.header-top{display:flex;align-items:center;justify-content:center}.header h1{font-size:1.8rem;color:#7bed9f;margin-bottom:.3rem;text-shadow:0 0 20px rgba(123,237,159,.3)}.progress-container{margin:.3rem 0}.progress-bar{height:8px;background:#2d2d4a;border-radius:4px;overflow:hidden}.progress-fill{height:100%;background:linear-gradient(90deg,#7bed9f,#2ed573);border-radius:4px;transition:width .5s ease}.progress-text{font-size:.8rem;color:#888;margin-top:.2rem}.lesson-info{background:#16213e;border:1px solid #2d2d4a;border-radius:8px;padding:.8rem}.phase-badge{display:inline-block;background:#2d2d4a;color:#7bed9f;padding:.15rem .5rem;border-radius:12px;font-size:.7rem;margin-bottom:.4rem}.lesson-info h2{font-size:1.1rem;color:#fff;margin-bottom:.2rem}.description{font-size:.85rem;line-height:1.5;color:#b0b0b0}.description code{background:#2d2d4a;color:#ffd93d;padding:.1rem .4rem;border-radius:3px;font-size:.95em}.editor-wrapper{background:#0a0a1a;border:2px solid #2d2d4a;border-radius:8px;overflow:hidden}.editor{display:flex;padding:.75rem;font-size:1.05rem;line-height:1.6;min-height:60px;overflow-x:auto}.line-numbers{color:#555;text-align:right;padding-right:.75rem;border-right:1px solid #2d2d4a;margin-right:.75rem;-webkit-user-select:none;user-select:none}.line-number{font-size:.75rem;line-height:1.6;height:1.6em}.editor-content{flex:1;white-space:pre}.editor-line{height:1.6em}.char{display:inline-block;min-width:.6em}.cursor-normal{background:#7bed9f;color:#000;animation:blink 1s step-end infinite}.cursor-insert{border-left:2px solid #ffd93d;animation:blink .6s step-end infinite}.star{color:#ffd93d;text-shadow:0 0 8px rgba(255,217,61,.5)}@keyframes blink{50%{opacity:.5}}.mode-indicator{display:flex;justify-content:space-between;padding:.25rem .6rem;font-size:.8rem;font-weight:700;border-top:1px solid #2d2d4a}.cursor-pos{font-weight:400;color:#666;font-size:.7rem}.mode-indicator.normal{background:#1a3a1a;color:#7bed9f}.mode-indicator.insert{background:#3a3a1a;color:#ffd93d}.mode-indicator.command{background:#1a1a3a;color:#70a1ff}.command-line{font-family:Courier New,monospace}.command-cursor{animation:blink .6s step-end infinite}.pending{color:#ff6b6b}.status-message{text-align:center;color:#888;font-size:.8rem}.key-log{display:flex;gap:.25rem;flex-wrap:wrap;justify-content:center;min-height:1.5rem;align-items:center}.key-badge{background:#2d2d4a;color:#b0b0b0;padding:.1rem .4rem;border-radius:4px;font-size:.7rem;border:1px solid #444}.controls{text-align:center}.hint{background:#2d2d1a;border:1px solid #ffd93d33;border-radius:8px;padding:.6rem;margin-bottom:.4rem;color:#ffd93d;font-size:.8rem;line-height:1.4}.control-buttons{display:flex;gap:.5rem;justify-content:center}.hint-btn,.reset-btn,.skip-btn,.restart-btn{padding:.45rem .9rem;border:1px solid #2d2d4a;border-radius:6px;background:#16213e;color:#b0b0b0;cursor:pointer;font-family:inherit;font-size:.8rem;transition:all .2s;-webkit-tap-highlight-color:transparent}.hint-btn:hover,.reset-btn:hover,.skip-btn:hover,.restart-btn:hover{background:#2d2d4a;color:#fff}.skip-btn{border-color:#3a2d2d;color:#999}.skip-btn:hover{border-color:#ff6b6b44;color:#ff6b6b}.vim-keyboard{display:none}.success-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:100;animation:fadeIn .3s;cursor:pointer;-webkit-tap-highlight-color:transparent}.success-box{background:#16213e;border:2px solid #7bed9f;border-radius:12px;padding:1.5rem 2.5rem;text-align:center;animation:popIn .3s}.success-icon{font-size:2.5rem;color:#7bed9f;margin-bottom:.3rem}.success-box h2{color:#7bed9f;margin-bottom:.2rem}.success-box p{color:#ffd93d;font-size:1rem}.continue-text{color:#888!important;font-size:.8rem!important;margin-top:.3rem}.game-complete{text-align:center;padding:1.5rem .5rem}.game-complete h1{color:#7bed9f;font-size:2rem;margin-bottom:.3rem}.trophy{font-size:3rem;color:#7bed9f;margin:.5rem 0}.final-xp{color:#ffd93d;font-size:1.3rem;margin-bottom:.8rem}.summary{display:flex;gap:1rem;justify-content:center;margin:1rem 0;text-align:left;flex-wrap:wrap}.summary-col{background:#16213e;padding:.8rem;border-radius:8px;border:1px solid #2d2d4a;font-size:.75rem;line-height:1.8}.summary-col h3{color:#7bed9f;margin-bottom:.2rem}.summary-col code{color:#ffd93d;background:#2d2d4a;padding:.1rem .3rem;border-radius:3px}.restart-btn{margin-top:1rem;font-size:1rem;padding:.7rem 1.5rem;background:#7bed9f;color:#000;border:none;font-weight:700}.restart-btn:hover{background:#2ed573;color:#000}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes popIn{0%{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}@media (max-width: 768px){.sidebar{display:none}.mobile-menu-btn{display:block;background:#16213e;border:1px solid #2d2d4a;color:#7bed9f;font-family:inherit;font-size:.75rem;padding:.3rem .6rem;border-radius:6px;cursor:pointer;-webkit-tap-highlight-color:transparent;white-space:nowrap;position:absolute;left:.75rem;top:.75rem;z-index:10}.header-top{position:relative;justify-content:center;padding-top:0}.mobile-drawer-overlay{display:flex;position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;z-index:200;animation:fadeIn .2s}.mobile-drawer{width:280px;max-width:80vw;background:#0d1117;overflow-y:auto;animation:slideIn .2s}@keyframes slideIn{0%{transform:translate(-100%)}to{transform:translate(0)}}.drawer-header{display:flex;justify-content:space-between;align-items:center;padding:.8rem;border-bottom:1px solid #2d2d4a;color:#7bed9f;font-size:.9rem;font-weight:700}.drawer-close{background:none;border:none;color:#888;font-family:inherit;font-size:1rem;cursor:pointer;padding:.2rem .5rem}.drawer-content{padding:.5rem 0}.drawer-content .sidebar-lesson{padding:.5rem .8rem;font-size:.8rem}.drawer-content .sidebar-phase-name{font-size:.75rem;padding:.5rem .8rem .2rem}.app-layout{flex-direction:column}.app{padding:.6rem;gap:.5rem}.header h1{font-size:1.3rem;margin-bottom:.2rem}.progress-text{font-size:.7rem}.lesson-info{padding:.6rem}.lesson-info h2{font-size:.95rem}.description{font-size:.78rem;line-height:1.4}.editor{padding:.5rem;font-size:.85rem;min-height:50px}.line-numbers{padding-right:.5rem;margin-right:.5rem}.line-number{font-size:.65rem}.char{min-width:.52em}.mode-indicator{padding:.2rem .5rem;font-size:.7rem}.cursor-pos{font-size:.6rem}.key-log{min-height:1.2rem}.key-badge{font-size:.6rem;padding:.05rem .3rem}.control-buttons{gap:.4rem}.hint-btn,.reset-btn,.skip-btn{padding:.4rem .7rem;font-size:.75rem}.hint{font-size:.75rem;padding:.5rem}.vim-keyboard{display:flex;flex-direction:column;gap:4px;padding:.3rem;background:#0d1117;border-radius:8px;border:1px solid #2d2d4a}.kb-row{display:flex;gap:3px;justify-content:center}.kb-key{flex:1;max-width:40px;height:38px;background:#1e2a3a;border:1px solid #2d2d4a;border-radius:5px;color:#ddd;font-family:Courier New,monospace;font-size:.8rem;cursor:pointer;display:flex;align-items:center;justify-content:center;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;touch-action:manipulation}.kb-key:active{background:#7bed9f;color:#000}.kb-key.kb-wide{flex:1.5;max-width:60px;font-size:.65rem}.success-box{padding:1.2rem 1.5rem;margin:1rem}.success-icon{font-size:2rem}.success-box h2{font-size:1.1rem}.success-box p{font-size:.9rem}.game-complete{padding:1rem .3rem}.game-complete h1{font-size:1.5rem}.trophy{font-size:2rem}.final-xp{font-size:1.1rem}.summary{flex-direction:column;gap:.5rem;align-items:center}.summary-col{width:100%;font-size:.7rem}}@media (max-width: 380px){.app{padding:.4rem;gap:.4rem}.header h1{font-size:1.1rem}.editor{font-size:.75rem}.kb-key{height:34px;font-size:.7rem}.kb-key.kb-wide{font-size:.6rem}}
