*{box-sizing:border-box}#root,body,html{height:100%;margin:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:#0d1117;color:#c9d1d9;font-size:14px;line-height:1.6}a{color:#58a6ff;text-decoration:none}a:hover{text-decoration:underline}button{font-family:inherit;font-size:inherit;padding:6px 12px;background:#21262d;color:#c9d1d9;border:1px solid #30363d;border-radius:6px;cursor:pointer;transition:all .15s}button:hover{background:#30363d;border-color:#8b949e}button.primary{background:#238636;border-color:#2ea043;color:white}button.primary:hover{background:#2ea043}:root{--sidebar-w:320px;--term-h:320px}.app{display:grid;grid-template-columns:var(--sidebar-w) 4px 1fr;grid-template-rows:1fr;height:100vh;overflow:hidden}.app.term-open{grid-template-rows:1fr 4px var(--term-h)}.app .sidebar{grid-row:1/-1;grid-column:1}.app>.resizer-x{grid-column:2;grid-row:1/-1}.app>.resizer-y{grid-column:3;grid-row:2}.app .content-area{grid-column:3;grid-row:1;overflow:hidden;min-height:0;display:flex;flex-direction:column}.app .content-area>*{flex:1 1;min-height:0}.resizer{background:transparent;position:relative;z-index:5;transition:background .15s ease}.resizer-x{cursor:col-resize;width:4px;border-left:1px solid #30363d}.resizer-y{cursor:row-resize;height:4px;border-top:1px solid #30363d}.resizer:active,.resizer:hover{background:#58a6ff;border-color:#58a6ff}.terminal-panel{grid-column:3;grid-row:3;display:flex;flex-direction:column;background:#010409;border-top:1px solid #30363d;min-height:0}.terminal-panel.closed{display:none}.terminal-header{display:flex;align-items:center;gap:8px;padding:6px 10px;background:#161b22;border-bottom:1px solid #30363d;font-size:12px}.terminal-header .dot{width:8px;height:8px;border-radius:50%;background:#f85149}.terminal-header .dot[data-status=connecting]{background:#d29922}.terminal-header .dot[data-status=connected]{background:#2ea043}.terminal-title{color:#f0f6fc;font-weight:600}.terminal-status{color:#8b949e;font-family:monospace}.terminal-header button{padding:2px 8px;font-size:12px}.terminal-host{flex:1 1;min-height:0;padding:6px 8px}.terminal-host .xterm,.terminal-host .xterm-screen,.terminal-host .xterm-viewport{height:100%!important;width:100%!important}.term-toggle{position:fixed;right:12px;bottom:12px;z-index:100;padding:6px 12px;font-size:12px;background:#161b22;border:1px solid #30363d;color:#c9d1d9;border-radius:6px;cursor:pointer}.term-toggle:hover{border-color:#58a6ff}.sidebar{background:#010409;border-right:1px solid #30363d;overflow-y:auto;padding:16px}.sidebar h1{font-size:18px;margin:0 0 16px;color:#f0f6fc}.sidebar h1 a{color:inherit}.course-card{display:block;padding:10px 12px;margin-bottom:8px;background:#0d1117;border:1px solid #30363d;border-radius:6px;color:#c9d1d9}.course-card:hover{background:#161b22;text-decoration:none;border-color:#58a6ff}.course-card .emoji{font-size:18px;margin-right:8px}.course-card .title{font-weight:600}.course-card .desc{font-size:12px;color:#8b949e;margin-top:4px}.tree-section{margin-bottom:4px}.tree-section-header{display:flex;align-items:center;padding:6px 8px;cursor:pointer;border-radius:4px;font-weight:600;color:#f0f6fc}.tree-section-header:hover{background:#161b22}.tree-section-header .chevron{margin-right:6px;transition:transform .15s}.tree-section-header.open .chevron{transform:rotate(90deg)}.tree-level{display:block;padding:5px 8px 5px 28px;border-radius:4px;color:#c9d1d9;font-size:13px}.tree-level:hover{background:#161b22;text-decoration:none}.tree-level.active{background:#1f6feb33;color:#58a6ff}.main{background-image:linear-gradient(rgba(0,0,0,.94),rgba(0,0,0,.94)),url(/img.jpg);background-repeat:no-repeat;background-size:cover;background-position:50%;overflow-y:auto;padding:24px 40px}.main.with-code{--code-w:50%;display:grid;grid-template-columns:minmax(240px,1fr) 4px minmax(320px,var(--code-w));padding:0;height:100%;min-height:0;overflow:hidden}.main.with-code>.resizer-x{height:100%;z-index:10}.lesson-pane{padding:24px 32px;overflow-y:auto;border-right:1px solid #30363d}.code-pane,.lesson-pane{min-width:0;min-height:0}.code-pane{display:flex;flex-direction:column;height:100%;overflow:hidden}.breadcrumbs{font-size:13px;margin-bottom:12px}.breadcrumbs,.breadcrumbs a{color:#8b949e}.markdown{max-width:920px}.markdown h1,.markdown h2,.markdown h3,.markdown h4{color:#f0f6fc;margin-top:24px;margin-bottom:12px;border-bottom:1px solid #21262d;padding-bottom:6px}.markdown h1{font-size:28px}.markdown h2{font-size:22px}.markdown h3{font-size:17px;border-bottom:none}.markdown h4{font-size:15px;border-bottom:none}.markdown p{margin:8px 0}.markdown ol,.markdown ul{padding-left:24px}.markdown code:not(pre code){background:#161b22;padding:2px 6px;border-radius:4px;font-size:13px;font-family:SF Mono,Consolas,monospace}.markdown pre{background:#161b22!important;padding:14px;border-radius:6px;overflow-x:auto;font-size:13px}.markdown pre code{background:transparent!important;padding:0}.markdown table{border-collapse:collapse;margin:12px 0}.markdown td,.markdown th{border:1px solid #30363d;padding:6px 12px}.markdown th{background:#161b22}.markdown blockquote{border-left:3px solid #30363d;padding-left:14px;color:#8b949e;margin:8px 0}.markdown hr{border:none;border-top:1px solid #30363d;margin:24px 0}.mermaid-block{display:flex;justify-content:center;background:#161b22;border:1px solid #30363d;border-radius:8px;padding:16px;margin:16px 0;overflow-x:auto}.mermaid-block svg{max-width:100%;height:auto}.mermaid-error{background:#2d1b1b;border:1px solid #f85149;color:#ffa198;padding:12px;border-radius:6px}.markdown .katex{font-size:1.05em}.markdown .katex-display{margin:12px 0;padding:8px;background:#161b22;border-radius:6px;overflow-x:auto}.markdown svg.figure{display:block;margin:16px auto;max-width:100%;background:#161b22;border:1px solid #30363d;border-radius:8px;padding:12px}.tabs{display:flex;background:#161b22;border-bottom:1px solid #30363d;overflow-x:auto}.tab{padding:8px 14px;cursor:pointer;border-right:1px solid #21262d;white-space:nowrap;font-size:13px;color:#8b949e}.tab:hover{background:#0d1117;color:#c9d1d9}.tab.active{background:#0d1117;color:#58a6ff;border-bottom:2px solid #58a6ff}.tab.test{color:#d29922}.tab.test.active{color:#d29922;border-bottom-color:#d29922}.editor-toolbar{display:flex;gap:8px;padding:8px 12px;background:#161b22;border-bottom:1px solid #30363d;align-items:center}.editor-toolbar .filename{color:#8b949e;font-family:monospace;font-size:12px;flex:1 1}.editor-toolbar .saved{color:#2ea043;font-size:12px}.editor-host{flex:1 1;min-height:0}.run-output{background:#010409;color:#c9d1d9;padding:12px;font-family:monospace;font-size:12px;white-space:pre-wrap;border-top:1px solid #30363d;max-height:240px;overflow-y:auto}.empty{color:#8b949e;text-align:center;padding:60px 20px}.level-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));grid-gap:16px;gap:16px;margin-top:24px}.level-card{display:block;padding:16px;background:#161b22;border:1px solid #30363d;border-radius:8px;color:#c9d1d9}.level-card:hover{border-color:#58a6ff;text-decoration:none}.level-card h3{margin:0 0 6px;color:#f0f6fc}.level-card .desc{font-size:12px;color:#8b949e;line-height:1.4}.level-card .meta{display:flex;gap:12px;margin-top:10px;font-size:11px;color:#8b949e}.search{width:100%;padding:6px 10px;background:#0d1117;border:1px solid #30363d;color:#c9d1d9;border-radius:6px;margin-bottom:12px}.search:focus{outline:none;border-color:#58a6ff}.draggable{cursor:-webkit-grab;cursor:grab;transition:transform .12s ease,opacity .12s ease,border-color .12s ease}.draggable:active{cursor:-webkit-grabbing;cursor:grabbing}.draggable[data-dragging=true]{opacity:.4;transform:scale(.98)}.draggable[data-drag-over=true]{border-color:#58a6ff!important;box-shadow:0 0 0 2px rgba(88,166,255,.25)}.drag-grip{display:inline-block;margin-right:6px;color:#6e7681;font-size:10px;letter-spacing:-1px;cursor:-webkit-grab;cursor:grab;-webkit-user-select:none;-moz-user-select:none;user-select:none}.tree-section.draggable[data-drag-over=true]{outline:2px dashed #58a6ff;outline-offset:-2px;border-radius:4px}.reset-order{background:#161b22;border:1px solid #30363d;color:#8b949e;padding:4px 10px;border-radius:6px;font-size:12px;cursor:pointer}.reset-order:hover{color:#f0f6fc;border-color:#58a6ff}.profile-link{display:block;padding:8px 12px;margin-bottom:12px;background:#161b22;border:1px solid #30363d;border-radius:6px;color:#c9d1d9;font-size:13px;text-decoration:none}.profile-link:hover{border-color:#58a6ff;color:#f0f6fc}.progress-controls{display:flex;flex-wrap:wrap;gap:10px;align-items:center;padding:12px;margin:12px 0 20px;background:#161b22;border:1px solid #30363d;border-radius:8px}.status-group{display:flex;gap:6px}.status-btn{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;font-size:12px;background:transparent;border:1px solid #30363d;border-radius:6px;color:#8b949e;cursor:pointer}.status-btn:hover{border-color:#58a6ff;color:#f0f6fc}.status-btn.active{font-weight:600;background:#0d1117}.bookmark-btn{padding:4px 10px;font-size:12px;background:transparent;border:1px solid #30363d;border-radius:6px;color:#8b949e;cursor:pointer}.bookmark-btn.active,.bookmark-btn:hover{border-color:#d29922;color:#d29922}.bookmark-btn.active{background:rgba(210,153,34,.1)}.tag-group{gap:6px;align-items:center;flex:1 1}.tag-group,.tag-list{display:flex;flex-wrap:wrap}.tag-list{gap:4px}.tag-chip{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;font-size:11px;background:rgba(88,166,255,.1);border:1px solid rgba(88,166,255,.3);border-radius:10px;color:#79c0ff;font-family:monospace}.tag-chip.small{padding:1px 6px;font-size:10px}.tag-chip.clickable{cursor:pointer}.tag-chip.clickable.active,.tag-chip.clickable:hover{background:rgba(88,166,255,.25);border-color:#58a6ff;color:#f0f6fc}.tag-chip button{all:unset;cursor:pointer;color:#8b949e;font-weight:700;padding:0 2px}.tag-chip button:hover{color:#f85149}.tag-add{display:flex;gap:4px}.tag-add input{padding:3px 8px;font-size:11px;background:#0d1117;border:1px solid #30363d;border-radius:4px;color:#c9d1d9;width:200px}.tag-add input:focus{outline:none;border-color:#58a6ff}.tag-add button{padding:2px 10px;font-size:12px;background:#21262d;border:1px solid #30363d;border-radius:4px;color:#c9d1d9;cursor:pointer}.status-dot{display:inline-flex;gap:2px;font-size:10px;margin-left:auto;padding-left:6px}.tree-level{display:flex;align-items:center}.tree-level-title{flex:1 1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.profile{background-image:linear-gradient(rgba(0,0,0,.7),rgba(0,0,0,.7)),url(/img.jpg);background-repeat:no-repeat;background-size:cover;background-position:50%;padding:32px 48px}.continue-card{display:block;padding:16px 20px;margin:16px 0 24px;background:linear-gradient(135deg,rgba(46,160,67,.15),rgba(88,166,255,.1));border:1px solid #2ea043;border-radius:10px;color:#c9d1d9;text-decoration:none;transition:transform .15s}.continue-card:hover{transform:translateX(4px)}.continue-label{color:#2ea043;font-size:12px;font-weight:600;letter-spacing:.5px}.continue-title{color:#f0f6fc;font-size:18px;font-weight:600;margin-top:4px}.continue-path{color:#8b949e;font-size:11px;font-family:monospace;margin-top:4px}.stats-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));grid-gap:12px;gap:12px;margin:16px 0}.stat-card{padding:14px;background:#161b22;border:1px solid #30363d;border-radius:8px;text-align:center}.stat-emoji{font-size:22px}.stat-value{font-size:28px;font-weight:700;color:#f0f6fc;margin:4px 0}.stat-label{font-size:11px;color:#8b949e;text-transform:uppercase;letter-spacing:.5px}.progress-bar-outer{position:relative;height:28px;background:#161b22;border:1px solid #30363d;border-radius:14px;overflow:hidden;margin:16px 0 24px}.progress-bar-inner{height:100%;background:linear-gradient(90deg,#2ea043,#58a6ff);transition:width .3s ease}.progress-bar-label{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:12px;color:#f0f6fc;font-weight:600;text-shadow:0 1px 2px rgba(0,0,0,.6)}.recent-list{display:flex;flex-direction:column;gap:6px;margin-top:12px}.lesson-row{display:grid;grid-template-columns:24px 1fr auto auto;align-items:center;grid-gap:12px;gap:12px;padding:8px 12px;background:#161b22;border:1px solid #30363d;border-radius:6px;color:#c9d1d9;text-decoration:none;font-size:13px}.lesson-row:hover{border-color:#58a6ff}.lesson-row-icon{font-size:16px}.lesson-row-title{color:#f0f6fc;font-weight:500}.lesson-row-tags{display:flex;gap:4px;flex-wrap:wrap}.lesson-row-path{color:#6e7681;font-size:11px;font-family:monospace}.filter-controls{display:flex;gap:6px}.filter-controls select{padding:4px 8px;background:#0d1117;border:1px solid #30363d;color:#c9d1d9;border-radius:6px;font-size:12px}.search-trigger{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;background:#161b22;border:1px solid #30363d;color:#c9d1d9;padding:8px 12px;border-radius:8px;cursor:pointer;margin-bottom:12px;font-size:13px;transition:all .15s}.search-trigger:hover{background:#21262d;border-color:#58a6ff;color:#f0f6fc}.search-trigger kbd{font-size:11px;padding:2px 6px;background:#0d1117;border:1px solid #30363d;border-radius:4px;color:#8b949e;font-family:inherit}.search-overlay{position:fixed;inset:0;background:rgba(1,4,9,.75);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:10000;display:flex;align-items:flex-start;justify-content:center;padding-top:10vh}.search-modal{width:min(800px,92vw);max-height:75vh;background:#0d1117;border:1px solid #30363d;border-radius:12px;box-shadow:0 20px 60px rgba(0,0,0,.6);display:flex;flex-direction:column;overflow:hidden}.search-header{display:flex;align-items:center;gap:10px;padding:14px 18px;border-bottom:1px solid #21262d;background:#161b22}.search-icon{font-size:18px}.search-input{flex:1 1;background:transparent;border:none;outline:none;color:#f0f6fc;font-size:16px;font-family:inherit}.search-input::placeholder{color:#6e7681}.search-hint{color:#8b949e;font-size:12px;display:flex;gap:6px;align-items:center}.search-hint kbd{padding:2px 6px;background:#0d1117;border:1px solid #30363d;border-radius:4px;font-size:11px;color:#c9d1d9;font-family:inherit}.search-body{overflow-y:auto;padding:8px;flex:1 1}.search-empty{padding:30px 20px;color:#8b949e;text-align:center;font-size:14px}.search-meta{padding:6px 12px;color:#6e7681;font-size:11px;text-transform:uppercase;letter-spacing:.05em}.search-result{padding:10px 12px;border-radius:8px;cursor:pointer;border:1px solid transparent;margin-bottom:4px}.search-result.active,.search-result:hover{background:#1f2937;border-color:#30363d}.search-result.active{border-color:#58a6ff}.search-result-header{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.search-result-emoji{font-size:16px}.search-result-crumbs{color:#8b949e;font-size:12px}.search-result-crumbs .sep{color:#30363d}.search-result-title{color:#f0f6fc;font-weight:600;font-size:14px}.search-result-kind{font-size:11px;padding:2px 6px;background:#161b22;border:1px solid #30363d;border-radius:4px;color:#8b949e;margin-left:auto}.search-snippets{margin-top:6px;display:flex;flex-direction:column;gap:4px}.search-snippet{font-size:12px;color:#c9d1d9;line-height:1.5;padding:4px 8px;background:#010409;border-radius:4px;white-space:pre-wrap;word-break:break-word}.search-snippets.code .search-snippet{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,monospace;font-size:11.5px}.search-snippet mark{background:#ffd33d;color:#24292e;padding:0 2px;border-radius:2px;font-weight:600}.nav-cards-block{margin:12px 0 20px;padding:12px;background:linear-gradient(180deg,#161b22,#0d1117);border:1px solid #30363d;border-radius:10px}.nav-cards-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.nav-cards-header h2{margin:0;font-size:14px;text-transform:uppercase;letter-spacing:.05em;color:#8b949e;font-weight:600}.level-grid.compact{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));grid-gap:8px;gap:8px}.level-grid.compact .level-card{padding:10px 12px;background:#0d1117;border:1px solid #30363d;border-radius:8px;transition:all .15s;text-decoration:none;display:flex;flex-direction:column;gap:4px}.level-grid.compact .level-card:hover{border-color:#58a6ff;background:#161b22;transform:translateY(-1px)}.level-grid.compact .level-card h3{margin:0;font-size:13px;color:#f0f6fc;font-weight:600;line-height:1.3}.level-grid.compact .level-card .desc{font-size:11px;color:#8b949e;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.level-grid.compact .level-card .meta{display:flex;gap:8px;font-size:10px;color:#6e7681;margin-top:2px}.sidebar h1 .brand{display:inline-flex;align-items:center;gap:8px;text-decoration:none}.sidebar h1 .brand-logo{width:28px;height:28px;border-radius:6px;object-fit:cover}.confirm-backdrop{position:fixed;inset:0;z-index:10000;background:rgba(1,4,9,.72);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;animation:fadeIn .15s ease-out}.confirm-dialog{min-width:320px;max-width:480px;background:#161b22;border:1px solid #30363d;border-radius:12px;padding:22px 24px 18px;box-shadow:0 16px 48px rgba(0,0,0,.6),0 0 0 1px rgba(255,255,255,.02);animation:popIn .18s cubic-bezier(.2,.8,.3,1.2)}.confirm-title{margin:0 0 8px;color:#f0f6fc;font-size:17px;font-weight:600}.confirm-message{margin:0 0 18px;color:#c9d1d9;font-size:14px;line-height:1.5}.confirm-actions{display:flex;gap:8px;justify-content:flex-end}.confirm-btn{padding:8px 16px;border-radius:8px;border:1px solid #30363d;background:#21262d;color:#c9d1d9;font-size:13px;font-weight:500;cursor:pointer;transition:all .12s}.confirm-btn:hover{background:#30363d;border-color:#484f58}.confirm-btn.primary{background:#238636;border-color:#2ea043;color:#fff}.confirm-btn.primary:hover{background:#2ea043}.confirm-btn.danger{background:#da3633;border-color:#f85149;color:#fff}.confirm-btn.danger:hover{background:#f85149}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes popIn{0%{opacity:0;transform:scale(.94) translateY(6px)}to{opacity:1;transform:scale(1) translateY(0)}}.page-spinner{display:flex;justify-content:center;align-items:center;min-height:60vh}.spinner{width:44px;height:44px;border:3px solid #30363d;border-top-color:#58a6ff;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.course-card,.level-card{position:relative}.mobile-menu-btn{display:none;position:fixed;top:12px;left:12px;z-index:100;width:40px;height:40px;background:#161b22;border:1px solid #30363d;border-radius:8px;color:#c9d1d9;font-size:20px;cursor:pointer;align-items:center;justify-content:center}.mobile-menu-btn:active{background:#21262d}.sidebar-backdrop{display:none;position:fixed;inset:0;background:rgba(0,0,0,.6);z-index:90}@media (max-width:768px){.app{grid-template-columns:1fr}.app,.app.term-open{grid-template-rows:1fr}.app>.resizer-x,.app>.resizer-y{display:none}.app .content-area,.app .terminal-panel{grid-column:1;grid-row:1}.app .sidebar{position:fixed;top:0;left:0;width:85vw;max-width:320px;height:100vh;z-index:95;transform:translateX(-100%);transition:transform .25s ease;border-right:1px solid #30363d;overflow-y:auto}.app.sidebar-open .sidebar{transform:translateX(0)}.app.sidebar-open .sidebar-backdrop{display:block}.mobile-menu-btn{display:flex}.main{padding-top:60px;padding-left:14px;padding-right:14px}.main.with-code{display:block}.main.with-code>.code-pane,.main.with-code>.resizer-x{display:none}.main.with-code>.lesson-pane{padding:0}.terminal-panel{display:none!important}.level-grid{grid-template-columns:1fr!important;gap:10px}.markdown h1{font-size:24px}.markdown h2{font-size:20px}.markdown h3{font-size:17px}.markdown pre{overflow-x:auto;font-size:12px;padding:10px}.markdown table{display:block;overflow-x:auto;white-space:nowrap;font-size:13px}.mermaid-block svg{max-width:100%;height:auto!important}.breadcrumbs{overflow-x:auto;white-space:nowrap;font-size:12px;-webkit-overflow-scrolling:touch}.progress-controls{flex-wrap:wrap;gap:8px}.status-btn{flex:1 1 auto;font-size:12px;padding:6px 8px}}