:root{--bg:#0f1412;--bg-header:#0b100e;--bg-card:#161d1a;--bg-inset:#0b100e;--border:#262f2b;--text:#e7ece9;--text-muted:#93a09a;--accent:#93c6a4;--on-accent:#10201a;--accent-soft:#1d2b24;--orange:#e39a72;--orange-soft:#e39a7221;--orange-border:#e39a7259;--yellow:#e6d38a;--red:#e08b8b;--purple:#c7a3dc;--overlay:#0a0e0cd1;--practice-tint:#c7a3dc1a;--shadow:none;--shadow-hover:0 6px 20px #00000059;--font-serif:"Iowan Old Style", "Palatino Linotype", Palatino, Georgia, "Times New Roman", serif;--font-mono:"JetBrains Mono", "Fira Code", Consolas, monospace;font-family:Inter,Segoe UI,system-ui,-apple-system,sans-serif}:root[data-theme=light]{--bg:#e9eef3;--bg-header:#fff;--bg-card:#fff;--bg-inset:#f0f4f7;--border:#dde4ea;--text:#182428;--text-muted:#5d6b71;--accent:#1e5b45;--on-accent:#fff;--accent-soft:#ddeae2;--orange:#d2622e;--orange-soft:#faeadf;--orange-border:#f0d3bd;--yellow:#8f5e15;--red:#c0344b;--purple:#7847bd;--overlay:#e9eef3d9;--practice-tint:#7847bd12;--shadow:0 1px 2px #172a3a0d, 0 8px 24px #172a3a0f;--shadow-hover:0 2px 4px #172a3a0f, 0 12px 32px #172a3a1a}*{box-sizing:border-box}:root[data-js="1"] .static-snapshot{display:none}body{background:var(--bg);color:var(--text);min-height:100vh;margin:0;transition:background .2s,color .2s}h1,h2.serif{font-family:var(--font-serif);letter-spacing:-.01em;font-weight:500}code,kbd{font-family:var(--font-mono)}code{background:var(--orange-soft);border:1px solid var(--orange-border);color:var(--orange);border-radius:6px;padding:.1em .4em;font-size:.88em}kbd{background:var(--orange-soft);border:1px solid var(--orange-border);color:var(--orange);border-radius:6px;margin:0 .15em;padding:.1em .45em;font-size:.82em;display:inline-block}.mono-label,.exercise-counter,.lesson-number,.lesson-status,.overview-label{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.14em;color:var(--text-muted);font-size:.7rem}.app-header{background:var(--bg-header);border-bottom:1px solid var(--border);z-index:100;justify-content:space-between;align-items:center;padding:.7rem 1.5rem;display:flex;position:sticky;top:0}.app-header .brand{color:var(--text);align-items:center;gap:.6rem;font-size:1.05rem;font-weight:700;text-decoration:none;display:inline-flex}.brand-badge{background:var(--accent);width:1.8rem;height:1.8rem;color:var(--on-accent);font-family:var(--font-mono);border-radius:8px;justify-content:center;align-items:center;font-size:.9rem;font-weight:800;display:inline-flex}.app-header nav{align-items:center;gap:1.4rem;display:flex}.app-header nav a{color:var(--text-muted);font-size:.95rem;text-decoration:none}.app-header nav a.active{color:var(--text);font-weight:600}.theme-toggle{background:var(--bg-card);border:1px solid var(--border);width:2.15rem;height:2.15rem;color:var(--text);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;transition:border-color .15s;display:inline-flex}.theme-toggle:hover{border-color:var(--accent)}main{max-width:920px;margin:0 auto;padding:1.5rem}.page h1{margin-top:0}.muted{color:var(--text-muted)}.btn{border:1px solid var(--border);cursor:pointer;background:var(--bg-card);color:var(--text);border-radius:10px;padding:.55rem 1.2rem;font-family:inherit;font-size:.95rem;transition:border-color .15s,filter .15s}.btn:disabled{opacity:.45;cursor:default;pointer-events:none}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent);font-weight:600}.btn-ghost:hover{border-color:var(--accent)}.btn-primary:hover{filter:brightness(1.08)}.btn-hint{align-items:center;gap:.45rem;padding:.45rem 1rem;font-size:.9rem;display:inline-flex}.hero{margin:2.2rem 0 2rem}.hero-eyebrow{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.28em;color:var(--text-muted);margin:0 0 .75rem;font-size:.72rem}.hero h1{margin:0 0 .9rem;font-size:clamp(2.1rem,5vw,3rem)}.hero-sub{color:var(--text-muted);max-width:34rem;margin:0;line-height:1.6}.overview-card{background:var(--bg-card);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:16px;margin-bottom:2rem;padding:1.5rem 1.75rem}.overview-stats{flex-wrap:wrap;align-items:center;gap:2.4rem;margin-bottom:1.1rem;display:flex}.overview-percent{border-right:1px solid var(--border);flex-direction:column;padding-right:2.4rem;display:flex}.overview-percent-value{font-family:var(--font-serif);color:var(--accent);font-size:2.5rem;line-height:1.1}.overview-percent-value small{font-size:.5em}.overview-stat{flex-direction:column;gap:.2rem;display:flex}.overview-value{font-size:1.55rem;font-weight:650;line-height:1.2}.overview-value.in-progress{color:var(--orange)}.progress-track{background:var(--bg-inset);border:1px solid var(--border);border-radius:999px;height:7px;overflow:hidden}.progress-track.small{height:6px}.progress-fill{background:var(--accent);border-radius:999px;height:100%;transition:width .4s ease-out}.progress-fill.started{background:var(--orange)}.lesson-grid{grid-template-columns:1fr 1fr;gap:1.4rem;display:grid}.lesson-card{background:var(--bg-card);border:1px solid var(--border);box-shadow:var(--shadow);color:var(--text);border-radius:16px;padding:1.4rem 1.5rem;text-decoration:none;transition:border-color .15s,transform .15s,box-shadow .15s;display:block}.lesson-card:hover{border-color:var(--accent);box-shadow:var(--shadow-hover);transform:translateY(-2px)}.lesson-card-top{align-items:center;gap:.85rem;margin-bottom:1rem;display:flex}.lesson-icon{background:var(--accent-soft);width:2.7rem;height:2.7rem;color:var(--accent);border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.lesson-icon.complete{background:var(--accent);color:var(--on-accent)}.lesson-number{flex:1}.lesson-check{border:1.5px solid var(--accent);width:1.45rem;height:1.45rem;color:var(--accent);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.lesson-card h2{margin:0 0 .35rem;font-size:1.2rem;font-weight:650}.lesson-summary{color:var(--text-muted);margin:0 0 .9rem;font-size:.92rem;line-height:1.5}.lesson-keys{flex-wrap:wrap;gap:.35rem;margin-bottom:1rem;display:flex}.lesson-keys kbd{margin:0}.lesson-status{justify-content:space-between;margin-bottom:.5rem;display:flex}.lesson-status.complete span:first-child{color:var(--accent)}.lesson-status.started span:first-child{color:var(--orange)}.lesson-header{margin-top:.5rem}.lesson-header h1{margin:.6rem 0 .4rem;font-size:clamp(1.8rem,4vw,2.4rem)}.back-link{color:var(--text-muted);font-size:.9rem;text-decoration:none}.back-link:hover{color:var(--accent)}.lesson-intro{color:var(--text-muted);max-width:46rem;margin-top:.25rem;font-size:.95rem;line-height:1.7}.instruction-panel{background:var(--bg-card);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:14px;margin:1.4rem 0;padding:1.3rem 1.5rem}.instruction-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;display:flex}.allowed-keys{color:var(--text-muted);font-size:.85rem}.instruction-panel.practice{border-color:var(--purple)}.practice-badge{background:var(--practice-tint);color:var(--purple);border:1px solid var(--purple);letter-spacing:.1em;border-radius:999px;margin-right:.6rem;padding:.1rem .6rem;display:inline-block}.practice-note{color:var(--purple);margin:.6rem 0 0;font-size:.9rem}.instruction-text{margin:.8rem 0 0;font-size:1.12rem;line-height:1.6}.blocked-key-warning{color:var(--yellow);margin:.5rem 0 0;font-size:.9rem}.hint-area{margin-top:.9rem}.hint-text{color:var(--yellow);margin:0;font-size:.92rem}.lesson-nav{justify-content:space-between;margin-top:1.25rem;display:flex}.editor-wrap{border:1px solid var(--border);box-shadow:var(--shadow);border-radius:14px;position:relative;overflow:hidden}.editor-wrap .cm-editor{font-size:15px}:root:not([data-theme=light]) .editor-wrap .cm-editor,:root:not([data-theme=light]) .editor-wrap .cm-gutters{background:var(--bg-inset)}:root:not([data-theme=light]) .editor-wrap .cm-activeLine{background:#ffffff0d}:root:not([data-theme=light]) .editor-wrap .cm-activeLineGutter{background:#ffffff12}.editor-wrap .cm-panels{background:var(--bg-inset);color:var(--text);border-top:1px solid var(--border);font-family:var(--font-mono);padding:.25rem .6rem;font-size:.85rem}.editor-wrap .cm-panels input{color:var(--text);font-family:inherit;font-size:inherit;background:0 0;border:none;outline:none}.vim-status-bar{background:var(--bg-inset);border-top:1px solid var(--border);font-family:var(--font-mono);justify-content:space-between;align-items:center;padding:.45rem .95rem;font-size:.85rem;display:flex}.vim-mode{font-weight:700}.vim-mode-normal{color:var(--accent)}.vim-mode-insert{color:var(--orange)}.vim-mode-visual{color:var(--purple)}.vim-keystrokes{color:var(--text-muted)}.feedback-overlay{background:var(--overlay);justify-content:center;align-items:center;animation:.2s ease-out fade-in;display:flex;position:absolute;inset:0}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.feedback-card{text-align:center;background:var(--bg-card);border:1px solid var(--border);box-shadow:var(--shadow-hover);border-radius:16px;padding:1.5rem 2.5rem}.feedback-card h2{color:var(--accent);margin:.5rem 0 .25rem}.feedback-rank{font-size:2.4rem;font-weight:800;font-family:var(--font-mono)}.rank-S{color:var(--yellow)}.rank-A{color:var(--accent)}.rank-B{color:var(--orange)}.rank-C{color:var(--text-muted)}.feedback-stats{color:var(--text);margin:.25rem 0}.feedback-label{color:var(--text-muted);margin:.25rem 0 1rem;font-size:.9rem}.feedback-actions{flex-wrap:wrap;justify-content:center;gap:.75rem;display:flex}.lesson-complete{text-align:center;padding:3rem 0}.stats-row{gap:1rem;margin:1rem 0 1.5rem;display:flex}.stat-card{background:var(--bg-card);border:1px solid var(--border);box-shadow:var(--shadow);text-align:center;border-radius:14px;flex:1;padding:1rem 1.5rem}.stat-value{font-family:var(--font-serif);color:var(--accent);font-size:1.9rem;font-weight:600}.stat-label{color:var(--text-muted);font-size:.85rem}.skill-bars{flex-direction:column;gap:.6rem;margin:1rem 0;display:flex}.skill-bar-row{align-items:center;gap:.75rem;display:flex}.skill-name{text-transform:capitalize;width:7.5rem;font-size:.95rem}.skill-bar{background:var(--bg-inset);border:1px solid var(--border);border-radius:999px;flex:1;height:9px;overflow:hidden}.skill-bar-fill{background:var(--accent);border-radius:999px;height:100%;transition:width .4s ease-out}.skill-value{text-align:right;width:2.5rem;color:var(--text-muted);font-family:var(--font-mono);font-size:.85rem}.practice-suggestion{color:var(--orange)}@media (width<=720px){.lesson-grid{grid-template-columns:1fr}}@media (width<=640px){main{padding:1rem}.app-header{padding:.6rem 1rem}.app-header nav{gap:.9rem}.hero{margin:1.4rem 0 1.5rem}.overview-card{padding:1.2rem 1.3rem}.overview-stats{gap:1.4rem}.overview-percent{padding-right:1.4rem}.instruction-panel{padding:.95rem 1.1rem}.instruction-text{font-size:1rem}.editor-wrap .cm-editor{font-size:14px}.feedback-card{max-width:92%;padding:1.25rem 1.5rem}.stats-row{flex-direction:column}.skill-name{width:5.5rem;font-size:.85rem}.feedback-actions{gap:.5rem}}@media (width<=420px){.app-header .brand{font-size:.95rem}.lesson-card{padding:1.1rem 1.2rem}.lesson-card h2{font-size:1.05rem}.vim-status-bar{padding:.35rem .6rem;font-size:.75rem}}
