:root{--bg:#07090f;--bg2:#0b0e17;--panel:#111522b8;--line:#1d2335;--text:#e6edf7;--muted:#8b96b3;--dim:#5c6a8a;--mode:#82aaff;--mono:"JetBrains Mono", ui-monospace, monospace;--sans:"Space Grotesk", system-ui, sans-serif;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:radial-gradient(1200px 600px at 70% -10%, #131a33 0%, transparent 60%), var(--bg);color:var(--text);font-family:var(--sans);-webkit-font-smoothing:antialiased;overflow:hidden}button{font:inherit;color:inherit;cursor:pointer}button:disabled{cursor:not-allowed;opacity:.4}:focus-visible{outline:2px solid var(--mode);outline-offset:2px}kbd{font-family:var(--mono);color:var(--text);background:#151a2b;border:1px solid #2a3150;border-bottom-width:3px;border-radius:6px;padding:2px 7px;font-size:.85em}.inline-code{font-family:var(--mono);background:color-mix(in srgb, var(--mode) 14%, transparent);color:color-mix(in srgb, var(--mode) 70%, white);border:1px solid color-mix(in srgb, var(--mode) 30%, transparent);white-space:nowrap;border-radius:5px;padding:1px 6px;font-size:.88em}.logo-vim{color:#82aaff}.intro{place-items:center;display:grid;position:fixed;inset:0;overflow:hidden}.grid-bg{background-image:linear-gradient(#82aaff10 1px,#0000 1px),linear-gradient(90deg,#82aaff10 1px,#0000 1px);background-size:48px 48px;animation:6s linear infinite grid-move;position:absolute;inset:-50%;transform:perspective(600px)rotateX(55deg)translateY(-10%);-webkit-mask-image:radial-gradient(at 50% 40%,#000 10%,#0000 60%);mask-image:radial-gradient(at 50% 40%,#000 10%,#0000 60%)}@keyframes grid-move{to{background-position:0 48px}}.glyph-field{pointer-events:none;position:absolute;inset:0}.glyph{font-family:var(--mono);color:#82aaff;font-weight:700;position:absolute}.intro-inner{text-align:center;flex-direction:column;align-items:center;gap:22px;padding:24px;display:flex;position:relative}.logo{font-family:var(--mono);letter-spacing:-.04em;perspective:600px;text-shadow:0 0 60px #82aaff44;align-items:center;margin:0;font-size:clamp(3rem,10vw,7rem);font-weight:800;display:flex}.logo span{display:inline-block}.logo-cursor{background:#c3e88d;border-radius:4px;width:.55em;height:.95em;margin-left:.06em;box-shadow:0 0 30px #c3e88d}.tagline{color:var(--muted);max-width:560px;margin:0;font-size:1.2rem}.tagline em{color:var(--text);border-bottom:2px solid #c792ea;font-style:normal}.demo{border:1px solid var(--line);text-align:left;width:min(560px,90vw);box-shadow:0 30px 80px -20px #000, 0 0 0 1px color-mix(in srgb, var(--mode) 30%, transparent);background:#0d1120ee;border-radius:14px;transition:box-shadow .3s}.demo-bar{border-bottom:1px solid var(--line);align-items:center;gap:6px;padding:10px 14px;display:flex}.demo-bar .dot{background:#2a3150;border-radius:50%;width:10px;height:10px}.demo-file{font-family:var(--mono);color:var(--dim);margin-left:8px;font-size:12px}.demo-code{font-family:var(--mono);color:var(--text);white-space:pre;margin:0;padding:22px 18px;font-size:17px}.tok-kw{color:#c792ea}.demo-word{color:#82aaff;border-radius:3px;transition:background .2s;display:inline-block}.demo-word.hl{background:color-mix(in srgb, var(--mode) 35%, transparent)}.demo-block{background:var(--mode);color:#0b0d12;box-shadow:0 0 12px var(--mode);border-radius:2px}.demo-caret{vertical-align:text-bottom;background:var(--mode);width:2px;height:1.1em;animation:1s step-end infinite blink;display:inline-block}@keyframes blink{50%{opacity:0}}.demo-foot{border-top:1px solid var(--line);align-items:center;gap:12px;min-height:48px;padding:10px 14px;display:flex}.mini-mode{font-family:var(--mono);color:#0b0d12;border-radius:4px;padding:3px 8px;font-size:11px;font-weight:800}.demo-keys{gap:6px;display:flex}.intro-cta{flex-direction:column;align-items:center;gap:10px;display:flex}.intro-hint{color:var(--dim);font-size:.9rem}.btn-primary{color:#0b0d12;background:linear-gradient(135deg,#82aaff,#c792ea);border:none;border-radius:12px;align-items:center;gap:10px;padding:13px 26px;font-size:1rem;font-weight:700;transition:filter .2s;display:inline-flex}.btn-primary:hover{filter:brightness(1.08)}.btn-primary kbd{color:#0b0d12;background:#0b0d1222;border-color:#0b0d1233}.btn-ghost{border:1px solid var(--line);color:var(--muted);background:0 0;border-radius:9px;align-items:center;gap:6px;padding:8px 12px;font-size:.85rem;transition:border-color .2s,color .2s,background .2s;display:inline-flex}.btn-ghost:not(:disabled):hover{border-color:var(--mode);color:var(--text);background:color-mix(in srgb, var(--mode) 8%, transparent)}.app{flex-direction:column;height:100%;display:flex}.topbar{border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#07090fcc;align-items:center;gap:24px;padding:12px 20px;display:flex}.brand{font-family:var(--mono);background:0 0;border:none;align-items:center;padding:0;font-size:1.2rem;font-weight:800;display:flex}.brand-cursor{background:var(--mode);width:9px;height:1.1em;margin-left:2px;transition:background .25s;animation:1.1s step-end infinite blink}.crumbs{color:var(--muted);gap:8px;font-size:.95rem;display:flex}.crumbs strong{color:var(--text);font-weight:600}.crumbs .sep{color:var(--dim)}.top-stats{margin-left:auto}.star-total{font-family:var(--mono);color:#ffcb6b;align-items:center;gap:6px;font-weight:700;display:inline-flex}.layout{flex:1;grid-template-columns:250px minmax(0,1fr) 330px;min-height:0;display:grid}.sidebar{border-right:1px solid var(--line);padding:16px 12px 24px;overflow-y:auto}.progress-head{color:var(--muted);text-transform:uppercase;letter-spacing:.08em;justify-content:space-between;padding:0 8px;font-size:.75rem;display:flex}.progress-track{background:#151a2b;border-radius:99px;height:5px;margin:8px 8px 14px;overflow:hidden}.progress-fill{border-radius:inherit;background:linear-gradient(90deg,#82aaff,#c3e88d);width:100%;height:100%;box-shadow:0 0 12px #82aaff}.module h3{letter-spacing:.12em;text-transform:uppercase;color:var(--dim);margin:16px 8px 6px;font-size:.7rem;font-weight:600}.module ul{margin:0;padding:0;list-style:none}.lesson-item{text-align:left;width:100%;color:var(--muted);background:0 0;border:none;border-radius:9px;align-items:center;gap:10px;padding:8px 10px;font-size:.88rem;transition:color .2s;display:flex;position:relative}.lesson-item:hover,.lesson-item.active{color:var(--text)}.lesson-item.locked{color:var(--dim);cursor:default}.active-bg{background:color-mix(in srgb, var(--mode) 12%, transparent);border:1px solid color-mix(in srgb, var(--mode) 30%, transparent);border-radius:9px;position:absolute;inset:0}.bullet{border:1.5px solid #2f3756;border-radius:50%;flex:none;place-items:center;width:18px;height:18px;transition:background .3s,border-color .3s;display:grid;position:relative}.bullet.done{background:#c3e88d;border-color:#c3e88d;box-shadow:0 0 10px #c3e88d88}.lesson-name{flex:1;position:relative}.lang-dot{opacity:.7;border-radius:50%;width:6px;height:6px;position:relative}.center{flex-direction:column;gap:14px;min-width:0;padding:18px 22px 22px;display:flex;overflow-y:auto}.objective{background:var(--panel);border:1px solid var(--line);border-radius:12px;align-items:flex-start;gap:12px;padding:14px 16px;display:flex}.objective p{flex:1;margin:0;line-height:1.6}.objective-icon{color:var(--mode);flex:none;margin-top:3px;transition:color .25s}.par{font-family:var(--mono);color:var(--dim);white-space:nowrap;padding-top:4px;font-size:.75rem}.editor-frame{border:1px solid var(--line);background:#0b0e17;border-radius:14px;flex-direction:column;display:flex;overflow:hidden}.tabbar{border-bottom:1px solid var(--line);background:#090c14;align-items:center;gap:12px;padding:0 8px 0 0;display:flex}.tab{font-family:var(--mono);border-right:1px solid var(--line);border-top:2px solid var(--mode);background:#0b0e17;align-items:center;gap:8px;padding:10px 16px;font-size:.82rem;transition:border-color .25s;display:inline-flex}.tab-dot{background:#ffcb6b;border-radius:50%;width:7px;height:7px}.tab-meta{font-family:var(--mono);color:var(--dim);margin-left:auto;font-size:.75rem}.icon-btn{width:30px;height:30px;color:var(--muted);background:0 0;border:none;border-radius:8px;place-items:center;transition:background .2s,color .2s;display:grid}.icon-btn:hover{color:var(--text);background:#151a2b}.editor-wrap{flex-direction:column;min-height:260px;max-height:46vh;display:flex}.editor-host{flex:1;min-width:0;overflow:auto}.editor-host .cm-editor{height:100%}.editor-host .cm-editor.cm-focused{outline:none}.cm-fat-cursor{transition:background .2s}.keyboard{background:var(--panel);border:1px solid var(--line);border-radius:14px;flex-direction:column;gap:5px;padding:12px;display:flex}.kb-row{gap:5px;display:flex}.kb-key{background:#11152450;border:1px solid #222a44;border-bottom-width:3px;border-radius:7px;flex-direction:column;flex-basis:0;justify-content:center;align-items:center;height:40px;transition:border-color .2s,background .2s;display:flex;position:relative;overflow:hidden}.kb-key.held{border-color:var(--kb);background:color-mix(in srgb, var(--kb) 18%, transparent)}.kb-legend{font-family:var(--mono);color:#c0c9e0;font-size:.78rem}.kb-hint{font-family:var(--mono);color:color-mix(in srgb, var(--kb) 75%, #5c6a8a);white-space:nowrap;margin-top:2px;font-size:.55rem;line-height:1}.kb-flash{border-radius:inherit;background:var(--kb);box-shadow:0 0 24px var(--kb);mix-blend-mode:screen;pointer-events:none;position:absolute;inset:0}.right{flex-direction:column;gap:14px;padding:18px 18px 22px 0;display:flex;overflow-y:auto}.panel{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:14px}.panel-title{letter-spacing:.12em;text-transform:uppercase;color:var(--dim);justify-content:space-between;align-items:center;margin-bottom:10px;font-size:.7rem;font-weight:600;display:flex}.anatomy{min-height:92px}.parts{flex-wrap:wrap;gap:6px;display:flex}.parts.big{gap:10px}.part{flex-direction:column;align-items:center;gap:4px;display:inline-flex}.part kbd{color:var(--c);border-color:color-mix(in srgb, var(--c) 50%, transparent);background:color-mix(in srgb, var(--c) 10%, #0f1322)}.parts.big .part kbd{box-shadow:0 0 20px color-mix(in srgb, var(--c) 25%, transparent);padding:6px 12px;font-size:1.15rem}.part small{color:var(--c);opacity:.85;font-size:.68rem}.summary,.waiting{color:var(--text);margin:10px 0 0;font-size:.92rem}.waiting{color:#ffcb6b}.muted{color:var(--muted);margin:0;font-size:.9rem;line-height:1.6}.legend{color:var(--dim);flex-wrap:wrap;gap:10px;margin-top:12px;font-size:.7rem;display:flex}.legend span:before{content:"";background:var(--c);border-radius:2px;width:8px;height:8px;margin-right:5px;display:inline-block}.history{flex-direction:column;gap:6px;margin:12px 0 0;padding:0;list-style:none;display:flex}.history li{color:var(--muted);align-items:center;gap:10px;font-size:.78rem;display:flex;overflow:hidden}.history .parts kbd{padding:1px 5px;font-size:.75rem}.history-summary{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.diff-count{font-family:var(--mono);letter-spacing:0;text-transform:none;color:#ffcb6b}.diff-count.zero{color:#c3e88d}.diff{font-family:var(--mono);margin:0;font-size:.74rem;line-height:1.65;overflow-x:auto}.diff-line{white-space:pre;color:var(--dim);border-radius:3px;padding:0 6px}.diff-line.add{color:#c3e88d;background:#c3e88d14}.diff-line.del{color:#ff5370;background:#ff537014;-webkit-text-decoration:line-through #ff537066;text-decoration:line-through #ff537066}.diff-sign{width:14px;display:inline-block}.hint{color:var(--text);margin:0 0 10px;font-size:.88rem;line-height:1.6;overflow:hidden}.hint-actions{gap:8px;display:flex}.solution-keys{flex-wrap:wrap;gap:4px;margin-bottom:12px;display:flex}.solution-keys kbd{font-size:.8rem}.toast{z-index:30;font-family:var(--mono);color:#ffcb6b;background:#151a2b;border:1px solid #ffcb6b55;border-radius:10px;padding:11px 18px;font-size:.85rem;position:fixed;bottom:26px;left:50%;translate:-50%;box-shadow:0 10px 40px #0008}.celebration{z-index:40;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#05070cbb;place-items:center;display:grid;position:fixed;inset:0}.burst{pointer-events:none;width:0;height:0;position:absolute;top:50%;left:50%}.confetti{border-radius:2px;position:absolute}.shockwave{border:3px solid #82aaff;border-radius:50%;width:80px;height:80px;position:absolute;top:-40px;left:-40px}.celebrate-card{text-align:center;background:linear-gradient(#121830,#0b0e17);border:1px solid #2a3150;border-radius:20px;width:min(440px,92vw);padding:28px;position:relative;box-shadow:0 40px 120px -20px #000,0 0 80px -30px #82aaff}.eyebrow{letter-spacing:.16em;text-transform:uppercase;color:#c3e88d;margin:0;font-size:.72rem}.celebrate-card h2{margin:6px 0 12px;font-size:1.6rem}.stars{justify-content:center;gap:6px;margin-bottom:14px;display:flex}.stats{justify-content:center;gap:40px;margin-bottom:18px;display:flex}.stats div{flex-direction:column;display:flex}.stats strong{font-family:var(--mono);font-size:2rem}.stats span{color:var(--muted);font-size:.75rem}.solution{margin-bottom:20px}.solution>span{letter-spacing:.12em;text-transform:uppercase;color:var(--dim);margin-bottom:8px;font-size:.7rem;display:block}.solution .solution-keys{justify-content:center}.celebrate-actions{justify-content:center;gap:10px;display:flex}@media (width<=1200px){.layout{grid-template-columns:220px minmax(0,1fr) 290px}}@media (width<=960px){body{overflow:auto}.layout{grid-template-columns:1fr}.sidebar{border-right:none;border-bottom:1px solid var(--line);max-height:220px}.right{padding:0 22px 22px}.keyboard,.crumbs{display:none}}@media (prefers-reduced-motion:reduce){.grid-bg,.brand-cursor,.demo-caret{animation:none}}.vim-cmdline{background:color-mix(in srgb, var(--mode) 10%, #0d1018);border-top:1px solid color-mix(in srgb, var(--mode) 45%, transparent);color:#c3cbe3;flex-shrink:0;justify-content:space-between;align-items:center;height:32px;padding:0 14px;font-family:JetBrains Mono,ui-monospace,monospace;font-size:14px;transition:background .2s,border-color .2s;display:flex}.vim-cmdline-mode{color:var(--mode);letter-spacing:.04em;font-weight:700}.vim-cmdline-mode.dim{opacity:.6;font-weight:500}.vim-cmdline-right{gap:28px;margin-left:auto;display:flex}.vim-showcmd{color:#e6edf7;text-align:right;min-width:6ch}.vim-ruler{text-align:right;min-width:7ch}.center>*{flex-shrink:0}.vim-cmdline-tip{color:var(--muted);letter-spacing:0;margin-left:16px;font-size:.85em;font-weight:400}
