.custom-editor-container{background:var(--vim-bg);color:var(--vim-text);font-family:JetBrains Mono,monospace;border:var(--terminal-border);border-radius:8px;box-shadow:var(--terminal-shadow);height:400px;min-height:300px;max-height:70vh;position:relative;display:flex;flex-direction:column;overflow:hidden}.editor-lines{display:flex;flex-direction:column;gap:1px;flex:1;overflow-y:auto;padding:var(--space-lg);height:calc(100% - 32px);min-height:200px}.editor-line{display:flex;align-items:center;min-height:1.5rem;padding:2px var(--space-sm);position:relative;width:100%}.editor-line:hover{background:var(--vim-bg-lighter)}.line-number{color:var(--vim-comment);min-width:40px;padding:0 var(--space-md);-webkit-user-select:none;user-select:none;text-align:right;font-size:.9rem;border-right:1px solid var(--terminal-line);margin-right:var(--space-md);background:var(--vim-bg-darker);border-radius:3px 0 0 3px}.line{white-space:pre;font-family:JetBrains Mono,monospace;font-size:15px;flex:1;line-height:1.5}.cursor{background-color:var(--vim-accent);color:var(--vim-bg);animation:blink 1s step-end infinite;padding:0 2px}.editor-status{position:absolute;bottom:0;left:0;right:0;height:32px;background:var(--vim-bg-darker);border-top:var(--terminal-border);padding:0 var(--space-md);display:flex;align-items:center;justify-content:space-between;font-size:.9rem;gap:var(--space-lg);z-index:10}.editor-status span{color:var(--vim-text);display:flex;align-items:center;gap:var(--space-md)}.editor-status span:first-child{color:var(--vim-accent);font-weight:500;padding:.2rem var(--space-sm);background:var(--vim-bg);border-radius:4px;border:1px solid var(--terminal-line)}@keyframes blink{50%{opacity:0}}.editor-lines::-webkit-scrollbar{width:6px}.editor-lines::-webkit-scrollbar-track{background:var(--vim-bg-darker)}.editor-lines::-webkit-scrollbar-thumb{background:var(--vim-comment);border-radius:3px}.editor-lines::-webkit-scrollbar-thumb:hover{background:var(--vim-accent)}.custom-editor-container{height:100%;display:flex;flex-direction:column;background:var(--vim-bg);border-radius:0;border:none;box-shadow:none}.tutorial-header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-md) var(--space-lg);background:var(--vim-bg-darker);border-bottom:var(--terminal-border)}.tutorial-header h2{margin:0;font-size:1.2rem;color:var(--vim-accent)}.tutorial-score{font-size:1rem;padding:.3rem var(--space-md);background:var(--vim-bg);border-radius:4px;color:var(--vim-text);border:1px solid var(--terminal-line)}.tutorial-content{display:flex;flex-direction:column;gap:var(--space-md);height:100%;padding:var(--space-md);overflow:hidden}.tutorial-main{display:flex;flex-direction:column;gap:var(--space-lg);flex:1;min-height:0;overflow:auto}.tutorial-message{text-align:center;padding:var(--space-lg);border-radius:6px;background:var(--vim-bg-darker);color:var(--vim-text);font-size:1.1rem;transition:all .3s ease;border:1px solid var(--terminal-line);position:sticky;top:0;z-index:1}.tutorial-message.success{background:var(--vim-accent);color:var(--vim-bg);transform:scale(1.02);border-color:transparent}.tutorial-instructions{flex:1;overflow:auto;min-height:200px;max-height:none}.instruction-box{height:100%;display:flex;flex-direction:column;background:var(--vim-bg-darker);border:1px solid var(--terminal-line);border-radius:6px;overflow:hidden}.instruction-content{flex:1;padding:var(--space-lg);overflow:auto}.instruction-header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-md) var(--space-lg);background:var(--vim-bg-lighter);border-bottom:1px solid var(--terminal-line)}.instruction-title{color:var(--vim-accent);font-weight:600;font-size:.9rem;text-transform:uppercase;letter-spacing:.05em}.instruction-category{color:var(--vim-comment);font-size:.9rem;padding:var(--space-xs) var(--space-sm);background:var(--vim-bg);border-radius:4px;border:1px solid var(--terminal-line)}.instruction-text{margin-bottom:var(--space-lg);color:var(--vim-text);font-size:1rem;line-height:1.5}.instruction-keys{padding:var(--space-md) var(--space-lg);background:var(--vim-bg);border-top:1px solid var(--terminal-line)}.key-hint{display:flex;align-items:center;gap:var(--space-lg)}.key-label{color:var(--vim-comment);font-size:.9rem;white-space:nowrap}.key-list{display:flex;gap:var(--space-sm);flex-wrap:wrap}.key{display:inline-flex;align-items:center;justify-content:center;min-width:28px;height:28px;padding:0 var(--space-sm);background:var(--vim-bg-darker);border:1px solid var(--terminal-line);border-radius:4px;color:var(--vim-accent);font-family:JetBrains Mono,monospace;font-size:.9rem;box-shadow:0 2px 0 var(--terminal-line)}.key.pressed{background:var(--vim-accent);color:var(--vim-bg);border-color:var(--vim-accent);box-shadow:0 2px 0 var(--vim-accent-soft)}.tutorial-input{margin-top:auto}.input-box{background:var(--vim-bg-darker);border:1px solid var(--terminal-line);border-radius:6px;overflow:hidden}.input-header{display:flex;justify-content:space-between;align-items:center;padding:var(--space-sm) var(--space-lg);background:var(--vim-bg-lighter);border-bottom:1px solid var(--terminal-line)}.input-label{color:var(--vim-comment);font-size:.9rem;text-transform:uppercase;letter-spacing:.05em}.input-mode{color:var(--vim-accent);font-size:.8rem;font-weight:600;padding:var(--space-xs) var(--space-sm);background:var(--vim-bg);border-radius:4px;border:1px solid var(--terminal-line)}.input-display{padding:var(--space-lg);min-height:60px;display:flex;align-items:center;justify-content:center}.input-placeholder{color:var(--vim-comment);font-style:italic}.key-sequence{display:flex;gap:var(--space-sm);flex-wrap:wrap}.vim-statusline{margin-top:auto;flex-shrink:0}.status-group{display:flex;align-items:center;gap:var(--space-xl)}.status-item{display:flex;align-items:center;gap:var(--space-sm);font-size:.9rem}.status-label{color:var(--vim-comment)}.status-value{color:var(--vim-text);font-family:JetBrains Mono,monospace}.tutorial-main::-webkit-scrollbar{width:6px}.tutorial-main::-webkit-scrollbar-track{background:var(--vim-bg)}.tutorial-main::-webkit-scrollbar-thumb{background:var(--vim-comment);border-radius:3px}.tutorial-main::-webkit-scrollbar-thumb:hover{background:var(--vim-accent)}@media (max-width: 768px){.tutorial-main{padding:var(--space-md);gap:var(--space-lg)}.key-hint{flex-direction:column;align-items:flex-start;gap:var(--space-sm)}.status-group{gap:var(--space-lg)}.status-item{flex-direction:column;align-items:flex-start;gap:var(--space-xs)}}.tutorial-practice-text{margin:var(--space-lg) 0;padding:var(--space-md);background:var(--vim-bg-darker);border-radius:8px}.tutorial-practice-text h3{color:var(--vim-accent);font-size:1rem;margin-bottom:var(--space-md);font-weight:500}.tutorial-practice-text .custom-editor-container{height:200px;min-height:120px;max-height:40vh;margin-bottom:var(--space-md);border:1px solid var(--terminal-line)}.practice-text{font-family:monospace;white-space:pre-wrap;background:var(--vim-bg);padding:var(--space-lg);border-radius:4px;border:1px solid var(--terminal-line);color:var(--vim-text);font-size:1rem;line-height:1.6;margin-top:var(--space-md)}.tutorial-progress{display:flex;align-items:center;gap:var(--space-md);padding:var(--space-md);background:var(--vim-bg-darker);border-radius:4px;border:1px solid var(--terminal-line)}.tutorial-progress progress{flex:1;height:8px;border-radius:4px;overflow:hidden}.tutorial-progress progress::-webkit-progress-bar{background:var(--vim-bg);border-radius:4px}.tutorial-progress progress::-webkit-progress-value{background:var(--vim-accent);border-radius:4px}.tutorial-progress span{color:var(--vim-text);font-size:.9rem;white-space:nowrap}.tutorial-controls{display:flex;gap:var(--space-md);padding:var(--space-md);background:var(--vim-bg-darker);border-radius:4px;border:1px solid var(--terminal-line)}.tutorial-control-button{display:inline-flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);background:var(--vim-bg);border:1px solid var(--terminal-line);border-radius:4px;color:var(--vim-text);font-size:.9rem;cursor:pointer;transition:all .2s ease}.tutorial-control-button:hover{background:var(--vim-bg-lighter);border-color:var(--vim-accent);color:var(--vim-accent)}.tutorial-control-button .shortcut{font-size:.8rem;padding:2px 6px;background:var(--vim-bg-darker);border-radius:3px;color:var(--vim-comment);border:1px solid var(--terminal-line)}.tutorial-control-button:hover .shortcut{background:var(--vim-bg);color:var(--vim-accent);border-color:var(--vim-accent-soft)}.tutorial-control-button.active{background:var(--vim-accent);border-color:var(--vim-accent);color:var(--vim-bg)}.tutorial-control-button.active .shortcut{background:var(--vim-accent-soft);color:var(--vim-bg);border-color:transparent}:root{--vim-bg: #1a1b26;--vim-bg-darker: #16161e;--vim-bg-lighter: #1f2335;--vim-accent: #7aa2f7;--vim-accent-soft: rgba(122, 162, 247, .1);--vim-warning: #e0af68;--vim-error: #f7768e;--vim-text: #c0caf5;--vim-text-muted: #9aa5ce;--vim-comment: #565f89;--vim-selection: rgba(122, 162, 247, .2);--normal-mode: #7aa2f7;--insert-mode: #9ece6a;--visual-mode: #bb9af7;--command-mode: #e0af68;--terminal-glow: 0 0 20px rgba(122, 162, 247, .1);--terminal-line: rgba(122, 162, 247, .2);--terminal-highlight: rgba(122, 162, 247, .05);--space-xs: .25rem;--space-sm: .5rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2rem;--bg-primary: var(--vim-bg);--bg-secondary: var(--vim-bg-darker);--bg-tertiary: var(--vim-bg-lighter);--text-primary: var(--vim-text);--text-secondary: var(--vim-comment);--terminal-shadow: 0 0 0 1px rgba(122, 162, 247, .2), 0 8px 32px rgba(0, 0, 0, .4);--terminal-border: 1px solid var(--terminal-line);--terminal-glow-active: 0 0 30px rgba(122, 162, 247, .3);--gradient-blue: linear-gradient(135deg, #0051FF 0%, #4DA5FF 100%);--gradient-purple: linear-gradient(135deg, #6C3AFF 0%, #B46CFF 100%);--gradient-mint: linear-gradient(135deg, #00B8A9 0%, #4FFFEB 100%);--gradient-page: radial-gradient(circle at 0% 0%, rgba(108, 58, 255, .15), transparent 50%), radial-gradient(circle at 100% 0%, rgba(0, 81, 255, .15), transparent 50%), radial-gradient(circle at 50% 100%, rgba(0, 184, 169, .1), transparent 50%);--gradient-card-hover: linear-gradient(rgba(255, 255, 255, .05), rgba(255, 255, 255, .05));--accent-primary: #0051FF;--accent-secondary: #6C3AFF;--accent-success: #00B8A9;--accent-warning: #FF9F1C;--accent-error: #FF4757;--text-tertiary: rgba(255, 255, 255, .65);--space-2xl: 4rem;--glass-bg: rgba(15, 18, 24, .7);--glass-border: rgba(255, 255, 255, .07);--glass-highlight: rgba(255, 255, 255, .1);--glass-shine: linear-gradient( 120deg, rgba(255,255,255,0) 30%, rgba(255,255,255,.05) 50%, rgba(255,255,255,0) 70% );--shadow-subtle: 0 2px 8px rgba(0, 0, 0, .08);--shadow-card: 0 8px 32px rgba(0, 0, 0, .15);--shadow-elevated: 0 16px 48px rgba(0, 0, 0, .2);--shadow-button: 0 2px 12px rgba(0, 81, 255, .3);--shadow-glow: 0 0 80px rgba(108, 58, 255, .15);--transition-fast: .2s cubic-bezier(.2, 0, 0, 1);--transition-medium: .3s cubic-bezier(.2, 0, 0, 1);--transition-bounce: .5s cubic-bezier(.68, -.6, .32, 1.6);--icon-tutorial: linear-gradient(135deg, #FF6B6B 0%, #FFE66D 100%);--icon-practice: linear-gradient(135deg, #4FACFE 0%, #00F2FE 100%);--icon-survival: linear-gradient(135deg, #FA709A 0%, #FEE140 100%);--glow-tutorial: 0 0 30px rgba(255, 107, 107, .3);--glow-practice: 0 0 30px rgba(79, 172, 254, .3);--glow-survival: 0 0 30px rgba(250, 112, 154, .3);--cmdbar-height: 32px;--cmdbar-bg: var(--vim-bg-darker);--cmdbar-border: var(--terminal-border);--cmdbar-shadow: 0 2px 8px rgba(0, 0, 0, .2);--container-width-sm: 640px;--container-width-md: 768px;--container-width-lg: 1024px;--container-width-xl: 1280px;--header-height: 64px;--content-spacing: clamp(1.5rem, 5vw, 3rem);--section-spacing: clamp(2rem, 8vw, 6rem)}body{background:var(--vim-bg);color:var(--vim-text);font-family:JetBrains Mono,SF Mono,monospace;line-height:1.6}.app{min-height:100vh;display:flex;flex-direction:column;background:var(--vim-bg)}.navbar{height:var(--header-height);background:var(--vim-bg-darker);border-bottom:1px solid var(--terminal-line);position:sticky;top:0;z-index:100}.navbar-content{max-width:var(--container-width-xl);margin:0 auto;height:100%;padding:0 var(--content-spacing);display:grid;grid-template-columns:auto minmax(200px,800px) auto;align-items:center;gap:var(--space-xl)}.vim-header{padding:3rem 0;background:linear-gradient(180deg,var(--vim-bg-darker) 0%,var(--vim-bg) 100%);position:relative;overflow:hidden;border-bottom:1px solid var(--vim-border)}.vim-welcome{text-align:center;margin-bottom:3rem}.vim-title-block{margin-bottom:1.5rem}.vim-header-title{font-size:3rem;color:var(--vim-text);margin:0;font-weight:600;display:inline-flex;align-items:center;gap:.75rem;letter-spacing:-.02em;position:relative}.vim-title-prefix{color:var(--vim-comment);font-size:2rem;opacity:.7}.vim-cursor{display:inline-block;width:4px;height:3.5rem;background:var(--vim-accent);margin-left:.5rem;animation:cursor-blink 1s step-end infinite;vertical-align:middle;transform:translateY(-2px)}.vim-subtitle{color:var(--vim-text-muted);font-size:1.2rem;margin-top:1rem;display:block}.vim-command-list{margin:2rem 0}.command-group{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap}.vim-cmd-button{display:flex;align-items:center;gap:.75rem;padding:.75rem 1.25rem;background:var(--vim-bg-darker);border:1px solid var(--vim-border);border-radius:4px;color:var(--vim-text);font-family:JetBrains Mono,monospace;font-size:.9rem;cursor:pointer;transition:all .2s ease;min-width:200px}.vim-cmd-button:hover{background:var(--vim-bg-lighter);border-color:var(--vim-accent);transform:translateY(-1px)}.vim-cmd-icon{color:var(--vim-accent);font-weight:700;font-size:.9rem;font-family:JetBrains Mono,monospace;padding:.2rem .1rem;border-radius:2px;min-width:2.5rem;text-align:center}.vim-cmd-text{color:var(--vim-text);font-weight:500;min-width:5rem;text-align:left}.vim-cmd-hint{color:var(--vim-text-dim);font-size:.8rem;padding-left:.75rem;border-left:1px solid var(--vim-border);opacity:.8;min-width:6rem;text-align:left}.vim-stats{margin-top:3rem}.stats-group{display:flex;align-items:center;justify-content:center;gap:3rem;padding:1.5rem 2rem;background:var(--vim-bg-darker);border:1px solid var(--vim-border);border-radius:8px;max-width:fit-content;margin:0 auto}.stat-item{display:flex;flex-direction:column;align-items:center;gap:.5rem;min-width:120px}.stat-value{color:var(--vim-accent);font-size:2rem;font-weight:600;font-family:JetBrains Mono,monospace;line-height:1}.stat-label{color:var(--vim-text-muted);font-size:.9rem;text-transform:uppercase;letter-spacing:.05em}.stat-divider{width:1px;height:40px;background:var(--vim-border);opacity:.5}@keyframes cursor-blink{0%,50%{opacity:1}51%,to{opacity:0}}.mode-grid{padding:var(--content-spacing);display:grid;grid-template-columns:repeat(auto-fit,minmax(400px,1fr));gap:var(--space-xl);max-width:var(--container-width-xl);margin:0 auto}.mode-card{display:flex;align-items:center;padding:var(--space-xl);background:linear-gradient(135deg,var(--vim-bg) 0%,var(--vim-bg-lighter) 100%);border:1px solid var(--vim-bg-lighter);border-radius:8px;transition:all .3s cubic-bezier(.4,0,.2,1)}.mode-card:hover{transform:translateY(-2px);box-shadow:0 8px 30px #0000004d;border-color:var(--vim-accent-soft)}.mode-card-content{display:flex;align-items:center;width:100%;gap:var(--space-xl)}.mode-card-header{display:flex;align-items:center;gap:var(--space-xl);flex:1}.mode-icon-wrapper{width:56px;height:56px;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:var(--vim-bg-darker);border:2px solid var(--vim-accent-soft);box-shadow:0 0 15px var(--vim-accent-soft);transition:all .3s ease}.mode-card:hover .mode-icon-wrapper{border-color:var(--vim-accent);box-shadow:0 0 20px var(--vim-accent-soft)}.mode-card-text{flex:1;min-width:0}.mode-card h2{font-size:1.25rem;font-weight:600;margin-bottom:var(--space-xs);color:var(--vim-accent);text-align:left}.mode-card p{font-size:.9rem;color:var(--vim-comment);margin:0;text-align:left;line-height:1.5}.mode-card-actions{flex-shrink:0;margin-left:var(--space-xl)}.command-bar{width:100%;height:40px;background:var(--vim-bg-darker);border:1px solid var(--vim-accent-soft);border-radius:6px;padding:0 var(--space-md);display:flex;align-items:center;gap:var(--space-md);box-shadow:0 2px 8px #0003;transition:all .2s ease}.command-bar:focus-within{border-color:var(--vim-accent);box-shadow:0 0 0 2px var(--vim-accent-soft)}.vim-statusline{height:36px;padding:0 var(--content-spacing);background:var(--vim-bg-darker);border-top:1px solid var(--vim-bg-lighter);display:flex;align-items:center;justify-content:space-between;box-shadow:0 -1px 0 var(--vim-accent-soft)}.button.vim-command{height:36px;padding:0 var(--space-xl);background:var(--vim-bg-darker);border:1px solid var(--vim-accent-soft);border-radius:6px;color:var(--vim-accent);font-size:.9rem;display:inline-flex;align-items:center;gap:var(--space-sm);transition:all .2s cubic-bezier(.4,0,.2,1);white-space:nowrap;box-shadow:0 2px 8px #0000001a}.button.vim-command:hover{background:var(--vim-bg-lighter);border-color:var(--vim-accent);box-shadow:0 4px 12px var(--vim-accent-soft);transform:translateY(-1px)}.editor-area{margin:var(--content-spacing);padding:var(--space-xl);background:var(--vim-bg);border:1px solid var(--terminal-line);border-radius:8px;display:grid;grid-template-columns:auto 1fr;gap:var(--space-lg)}@media (max-width: 1024px){.mode-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width: 768px){.navbar-content{grid-template-columns:auto 1fr}.mode-card,.mode-card-content,.mode-card-header{flex-direction:column;text-align:center;gap:var(--space-lg)}.mode-card h2,.mode-card p{text-align:center}.mode-card-actions{margin-left:0;margin-top:var(--space-lg)}.vim-progress{grid-template-columns:1fr}.mode-grid{grid-template-columns:1fr;padding:var(--space-md)}.vim-header-description{flex-direction:column;align-items:center;gap:var(--space-sm)}.vim-tag{width:200px;text-align:center}.vim-header-title{font-size:clamp(2.5rem,8vw,3.5rem)}.mode-grid{gap:var(--space-lg)}.mode-card{padding:var(--space-lg)}.progress-bar{max-width:280px;margin:0 auto}}.navbar h1{font-family:JetBrains Mono,monospace;color:var(--vim-accent);font-size:1rem;font-weight:600;display:flex;align-items:center;gap:var(--space-sm);white-space:nowrap}.navbar h1:before{content:"[VIM]";color:var(--vim-comment);font-size:.8rem;padding:.1rem .4rem;border:1px solid var(--vim-comment);border-radius:3px}.command-bar:before{content:":";color:var(--vim-accent);font-weight:700;margin-right:.5rem}.command-input{background:transparent;border:none;color:var(--vim-text);font-family:JetBrains Mono,monospace;font-size:.9rem;width:100%;padding:0;outline:none}.command-input::placeholder{color:var(--vim-comment);opacity:.7}.nav-actions{display:flex;align-items:center;gap:var(--space-md)}.nav-button{background:transparent;border:1px solid var(--terminal-line);color:var(--vim-text);font-family:JetBrains Mono,monospace;font-size:.8rem;padding:0 var(--space-md);border-radius:3px;display:flex;align-items:center;gap:.5rem;transition:all .2s ease}.nav-button:hover{border-color:var(--vim-accent);color:var(--vim-accent);background:var(--terminal-highlight)}.nav-button .shortcut{color:var(--vim-comment);font-size:.75rem;padding:.1rem .3rem;border:1px solid var(--vim-comment);border-radius:2px}.current-mode{padding:.25rem .5rem;border-radius:3px;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;margin-left:var(--space-sm);line-height:1;display:inline-flex;align-items:center;height:24px}.current-mode.normal{background:var(--normal-mode);color:var(--vim-bg)}.current-mode.insert{background:var(--insert-mode);color:var(--vim-bg)}.current-mode.visual{background:var(--visual-mode);color:var(--vim-bg)}.file-path{color:var(--vim-comment);font-size:.8rem;margin-left:var(--space-md);display:flex;align-items:center;gap:.25rem}.file-path:before{content:"📁";font-size:.9rem}.status-indicators{display:flex;align-items:center;gap:var(--space-sm);margin-left:auto}.status-dot{width:8px;height:8px;border-radius:50%;background:var(--vim-comment)}.status-dot.active{background:var(--vim-accent);box-shadow:0 0 8px var(--vim-accent)}.mode-card-actions{flex-shrink:0;margin-left:auto}.mode-icon{font-size:.9rem;font-weight:500}.mode-icon-wrapper[data-mode=Tutorial]{border-color:var(--normal-mode)}.mode-icon-wrapper[data-mode=Practice]{border-color:var(--insert-mode)}.mode-icon-wrapper[data-mode=Survival]{border-color:var(--visual-mode)}.mode-card h2{font-size:1.25rem;font-weight:600;margin-bottom:var(--space-xs);color:var(--vim-text);line-height:1.3;text-align:center;width:100%}.mode-card p{font-size:.9rem;line-height:1.5;color:var(--vim-comment);flex:1;text-align:center;max-width:300px;margin:0 auto}.button{background:var(--vim-bg-lighter);color:var(--vim-accent);border:var(--terminal-border);border-radius:4px;font-family:JetBrains Mono,monospace;font-size:.9rem;padding:.75rem 1.5rem;position:relative;overflow:hidden}.button:hover{background:var(--terminal-highlight);border-color:var(--vim-accent);box-shadow:var(--terminal-glow)}.mode-indicator{background:var(--normal-mode);color:var(--vim-bg);padding:.25rem .75rem;border-radius:4px;font-weight:700;font-size:.8rem;letter-spacing:.05em}.mode-indicator.insert{background:var(--insert-mode)}.mode-indicator.visual{background:var(--visual-mode)}.mode-card h2:after{content:"█";color:var(--vim-accent);animation:cursor-blink 1s step-end infinite;margin-left:.2rem;font-size:1rem}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:var(--vim-bg-darker)}::-webkit-scrollbar-thumb{background:var(--vim-comment);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--vim-accent)}.vim-buffer{position:relative}.vim-buffer:before{content:"~";position:absolute;left:var(--space-sm);color:var(--vim-comment);opacity:.5}.vim-command{font-family:JetBrains Mono,monospace;position:relative}.vim-command:before{content:":";color:var(--vim-accent);opacity:.8;position:absolute;left:-.8rem}.vim-line-numbers{color:var(--vim-comment);font-size:.8rem;padding:0 var(--space-sm);border-right:1px solid var(--terminal-line);margin-right:var(--space-sm)}.vim-file-info{display:flex;align-items:center;gap:var(--space-xs);font-size:.8rem;color:var(--vim-comment)}.file-type,.file-status{color:var(--vim-accent)}.cursor-position{color:var(--vim-text)}.mode-icon-wrapper[data-mode=Tutorial] .mode-icon{color:var(--normal-mode);font-family:JetBrains Mono,monospace;font-size:1rem;font-weight:700}.mode-icon-wrapper[data-mode=Practice] .mode-icon{color:var(--insert-mode);font-family:JetBrains Mono,monospace;font-size:1rem;font-weight:700}.mode-icon-wrapper[data-mode=Survival] .mode-icon{color:var(--visual-mode);font-family:JetBrains Mono,monospace;font-size:1rem;font-weight:700}.command-input{caret-color:var(--vim-accent)}.command-input::selection{background:var(--vim-selection)}@keyframes vim-cursor-blink{0%,to{opacity:1}50%{opacity:0}}.command-bar:after{content:"█";color:var(--vim-accent);animation:vim-cursor-blink 1s step-end infinite;margin-left:.2rem;font-size:1rem}.app:after{background:repeating-linear-gradient(0deg,transparent,transparent 2px,rgba(255,255,255,.01) 2px,rgba(255,255,255,.01) 4px);pointer-events:none;z-index:1}.vim-progress{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-xl);max-width:var(--container-width-lg);margin:var(--space-xl) auto 0;padding:var(--space-xl);background:var(--vim-bg);border:1px solid var(--terminal-line);border-radius:8px;opacity:0;animation:fade-slide-up .8s ease forwards;animation-delay:.9s}.progress-item{display:flex;flex-direction:column;align-items:center;gap:var(--space-md);text-align:center}.progress-label{font-size:.9rem;color:var(--vim-text);font-weight:500;margin-bottom:var(--space-xs)}.progress-bar{width:100%;height:6px;background:var(--vim-bg-darker);border-radius:3px;overflow:hidden;position:relative;box-shadow:inset 0 1px 2px #0003}.progress-bar-fill{height:100%;background:linear-gradient(90deg,var(--vim-accent-soft),var(--vim-accent));box-shadow:0 0 10px var(--vim-accent-soft);transition:width .5s cubic-bezier(.4,0,.2,1)}@keyframes cursor-blink{0%,to{opacity:1}50%{opacity:0}}.vim-header-title:after{display:none}.vim-footer{margin-top:auto;padding:var(--space-xl) 0;background:linear-gradient(0deg,var(--vim-bg-darker) 0%,var(--vim-bg) 100%);border-top:1px solid var(--vim-accent-soft)}.vim-footer-content{max-width:var(--container-width-lg);margin:0 auto;padding:0 var(--content-spacing);display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-xl)}.footer-section{display:flex;flex-direction:column;gap:var(--space-md)}.footer-section h3{color:var(--vim-accent);font-size:1rem;font-weight:600;margin-bottom:var(--space-sm)}.footer-section p{color:var(--vim-comment);font-size:.9rem;line-height:1.6}.footer-links{list-style:none;padding:0;margin:0}.footer-links li{margin-bottom:var(--space-sm)}.footer-links a{color:var(--vim-text);text-decoration:none;display:flex;align-items:center;gap:var(--space-sm);transition:color .2s ease}.footer-links a:hover{color:var(--vim-accent);transform:translate(4px)}.footer-links a:before{content:":h";color:var(--vim-accent);font-size:.8rem}@media (max-width: 768px){.vim-footer-content{grid-template-columns:1fr;gap:var(--space-xl);text-align:center}.footer-links a{justify-content:center}}.mode-card-content{display:flex;flex-direction:column;align-items:center;text-align:center;height:100%;justify-content:center;padding:var(--space-lg) var(--space-xl)}.mode-card-actions{display:flex;justify-content:center;width:100%;padding-top:var(--space-xl);margin-top:auto}.vim-buffer-container{max-width:var(--container-width-lg);margin:0 auto;background:var(--vim-bg-darker);border:1px solid var(--terminal-line);border-radius:8px;overflow:hidden}.vim-buffer-header{padding:var(--space-md) var(--space-xl);background:var(--vim-bg);border-bottom:1px solid var(--terminal-line);display:flex;align-items:center;justify-content:space-between}.vim-buffer-title{display:flex;align-items:center;gap:var(--space-sm);color:var(--vim-text);font-size:.9rem}.vim-buffer-title:before{content:"[+]";color:var(--vim-accent);font-size:.8rem}.vim-buffer-content{padding:var(--space-xl)}.status-group{display:flex;align-items:center;justify-content:center;gap:var(--space-md)}.status-item{display:flex;align-items:center;gap:var(--space-xs);color:var(--vim-comment);font-size:.8rem}.status-item.active{color:var(--vim-accent)}.command-input{height:100%;padding:0 var(--space-sm)}.mode-icon-wrapper{width:48px;height:48px;flex-shrink:0;display:flex;align-items:center;justify-content:center}.mode-card,.nav-button,.command-bar,.mode-icon-wrapper{transition:all .2s cubic-bezier(.4,0,.2,1)}.button.vim-command{height:32px;padding:0 var(--space-lg);background:var(--vim-bg-darker);border:1px solid var(--vim-accent-soft);color:var(--vim-accent);font-size:.85rem;display:inline-flex;align-items:center;gap:var(--space-sm);transition:all .2s ease}.button.vim-command:hover{background:var(--vim-bg-lighter);border-color:var(--vim-accent)}.editor-area{padding:var(--space-xl);background:var(--vim-bg);border:1px solid var(--terminal-line);border-radius:6px;margin:var(--space-xl)}.line-numbers{padding-right:var(--space-md);color:var(--vim-comment);border-right:1px solid var(--terminal-line);margin-right:var(--space-md)}.text-area{flex:1;padding:var(--space-md) var(--space-lg)}.line{display:flex;align-items:center;min-height:1.5rem}.mode-card h2{font-size:1.25rem;font-weight:600;margin-bottom:var(--space-xs);color:var(--vim-text);line-height:1.3}.mode-card p{font-size:.9rem;line-height:1.5;color:var(--vim-comment);margin:0;flex:1}@media (max-width: 1400px){.mode-grid{grid-template-columns:repeat(auto-fit,minmax(350px,1fr))}}.vim-header-tutorial{padding:var(--space-lg) 0;background:linear-gradient(180deg,var(--vim-bg-darker) 0%,var(--vim-bg) 100%)}.tutorial-header-content{max-width:var(--container-width-lg);margin:0 auto;padding:0 var(--content-spacing)}.tutorial-overview{display:flex;flex-direction:column;gap:var(--space-xl)}.tutorial-categories{display:flex;justify-content:center;gap:var(--space-lg);padding:var(--space-md) 0;flex-wrap:wrap}.category-item{display:flex;align-items:center;gap:var(--space-md);padding:var(--space-sm) var(--space-lg);background:var(--vim-bg);border:1px solid var(--terminal-line);border-radius:4px;cursor:pointer;transition:all .2s ease;position:relative;min-width:180px}.category-item:hover{border-color:var(--vim-accent);background:var(--vim-bg-lighter)}.category-item.active{background:var(--vim-accent-soft);border-color:var(--vim-accent)}.category-item.active:before{content:"";position:absolute;left:0;top:0;bottom:0;width:2px;background:var(--vim-accent)}.category-icon-group{display:flex;align-items:center;gap:var(--space-xs);min-width:60px;padding:var(--space-xs) var(--space-sm);background:var(--vim-bg-darker);border:1px solid var(--terminal-line);border-radius:3px;transition:all .2s ease}.category-symbol{color:var(--vim-accent);font-size:1rem;line-height:1;display:flex;align-items:center;justify-content:center}.category-command{color:var(--vim-text);font-family:JetBrains Mono,monospace;font-size:.8rem;font-weight:500;padding-left:var(--space-xs);border-left:1px solid var(--terminal-line)}.category-item:hover .category-icon-group{border-color:var(--vim-accent);box-shadow:0 0 8px var(--vim-accent-soft)}.category-item.active .category-icon-group{background:var(--vim-accent-soft);border-color:var(--vim-accent)}.category-item.active .category-symbol,.category-item.active .category-command{color:var(--vim-accent)}.category-name{color:var(--vim-text);font-size:.9rem;font-weight:500;letter-spacing:.02em}.category-item.active .category-name{color:var(--vim-accent)}@media (max-width: 768px){.tutorial-categories{gap:var(--space-md);padding:var(--space-sm) 0}.category-item{padding:var(--space-xs) var(--space-md);min-width:160px}.category-icon-group{min-width:50px;padding:var(--space-xs)}.category-command{font-size:.75rem}}.tutorial-progress{display:flex;flex-direction:column;gap:var(--space-md)}.progress-overview{display:flex;justify-content:center;gap:var(--space-xl)}.progress-stat{display:flex;flex-direction:column;align-items:center;gap:var(--space-xs)}.stat-label{color:var(--vim-comment);font-size:.9rem}.stat-value{color:var(--vim-accent);font-size:1.5rem;font-weight:600;font-family:JetBrains Mono,monospace}.tutorial-progress-bar{height:4px;background:var(--vim-bg-darker);border-radius:2px;overflow:hidden;margin:0 var(--space-2xl)}.tutorial-progress-bar .progress-bar-fill{height:100%;background:linear-gradient(90deg,var(--vim-accent),var(--vim-warning));transition:width .3s ease}.vim-header-practice{padding:var(--space-xl) 0}.mode-title{font-size:2rem;color:var(--vim-accent);margin-bottom:var(--space-md)}.mode-description{color:var(--vim-comment);font-size:1.1rem;max-width:600px}
