*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:linear-gradient(135deg,#1a1a2e,#16213e);min-height:100vh;color:#e0e0e0}.app{max-width:1600px;margin:0 auto;padding:20px}@media (min-width: 1400px){.app{max-width:95%}}@media (min-width: 1800px){.app{max-width:90%}}.header{text-align:center;padding:40px 0}.header h1{font-size:2.5rem;background:linear-gradient(90deg,#00d4ff,#7c3aed);-webkit-background-clip:text;-webkit-text-fill-color:transparent;margin-bottom:10px}.header p{color:#888;font-size:1.1rem}.search-section{background:#ffffff0d;border-radius:16px;padding:30px;margin-bottom:30px}.search-box{display:flex;gap:12px}.search-box input{flex:1;padding:14px 20px;border:2px solid rgba(255,255,255,.1);border-radius:12px;background:#0000004d;color:#fff;font-size:1rem;outline:none;transition:border-color .3s}.search-box input:focus{border-color:#00d4ff}.search-box button{padding:14px 28px;background:linear-gradient(90deg,#00d4ff,#7c3aed);border:none;border-radius:12px;color:#fff;font-size:1rem;font-weight:600;cursor:pointer;transition:transform .2s,opacity .2s}.search-box button:hover{transform:translateY(-2px);opacity:.9}.search-box button:disabled{opacity:.5;cursor:not-allowed;transform:none}.loading{text-align:center;padding:40px;color:#00d4ff}.loading-spinner{width:40px;height:40px;border:3px solid rgba(0,212,255,.2);border-top-color:#00d4ff;border-radius:50%;animation:spin 1s linear infinite;margin:0 auto 16px}@keyframes spin{to{transform:rotate(360deg)}}.code-section{background:#ffffff0d;border-radius:16px;padding:30px;margin-bottom:30px}.code-section h2{color:#00d4ff;margin-bottom:20px;font-size:1.4rem}.code-block{background:#0d1117;border-radius:12px;padding:20px;overflow-x:auto;font-family:Fira Code,monospace;font-size:.9rem;line-height:1.6;max-height:400px;overflow-y:auto}.code-block pre{margin:0;white-space:pre-wrap;word-break:break-word}.quiz-section{background:#ffffff0d;border-radius:16px;padding:30px}.quiz-section h2{color:#7c3aed;margin-bottom:20px;font-size:1.4rem}.chapter-tabs{display:flex;gap:10px;margin-bottom:24px;flex-wrap:wrap}.chapter-tab{padding:10px 20px;background:#ffffff1a;border:none;border-radius:8px;color:#888;cursor:pointer;transition:all .3s}.chapter-tab.active{background:linear-gradient(90deg,#7c3aed,#00d4ff);color:#fff}.question-card{background:#0000004d;border-radius:12px;padding:24px;margin-bottom:20px}.question-card h3{color:#fff;margin-bottom:16px;font-size:1.1rem;line-height:1.5;word-break:break-word}.options{display:flex;flex-direction:column;gap:12px}.option{padding:14px 20px;background:#ffffff0d;border:2px solid rgba(255,255,255,.1);border-radius:10px;color:#e0e0e0;cursor:pointer;transition:all .3s;text-align:left}.option:hover{border-color:#00d4ff;background:#00d4ff1a}.option.selected{border-color:#7c3aed;background:#7c3aed33}.option.correct{border-color:#10b981;background:#10b98133}.option.wrong{border-color:#ef4444;background:#ef444433}.explanation{margin-top:16px;padding:16px;background:#7c3aed1a;border-radius:8px;border-left:4px solid #7c3aed}.explanation h4{color:#7c3aed;margin-bottom:8px}.explanation p{color:#ccc;line-height:1.6}.progress-bar{height:6px;background:#ffffff1a;border-radius:3px;margin-bottom:20px;overflow:hidden}.progress-fill{height:100%;background:linear-gradient(90deg,#00d4ff,#7c3aed);transition:width .3s}.score-display{text-align:center;padding:20px;background:#0000004d;border-radius:12px;margin-top:20px}.score-display h3{font-size:2rem;color:#00d4ff}.error-message{background:#ef44441a;border:1px solid #ef4444;border-radius:12px;padding:20px;color:#ef4444;text-align:center}.results-section{background:#ffffff0d;border-radius:16px;padding:30px;margin-bottom:30px}.results-section h2{color:#00d4ff;margin-bottom:20px;font-size:1.3rem}.repo-list{display:flex;flex-direction:column;gap:12px}.repo-card{background:#0000004d;border:2px solid rgba(255,255,255,.1);border-radius:12px;padding:20px;cursor:pointer;transition:all .3s}.repo-card:hover{border-color:#00d4ff;background:#00d4ff1a;transform:translate(8px)}.repo-header{display:flex;align-items:center;gap:12px;margin-bottom:10px}.repo-index{background:linear-gradient(90deg,#00d4ff,#7c3aed);color:#fff;width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.85rem;font-weight:600}.repo-header h3{flex:1;color:#fff;font-size:1.1rem}.repo-stars{color:#fbbf24;font-size:.9rem}.repo-desc{color:#aaa;font-size:.9rem;line-height:1.5;margin-bottom:12px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.repo-meta{display:flex;gap:16px;font-size:.8rem}.repo-lang{background:#7c3aed4d;color:#a78bfa;padding:4px 10px;border-radius:12px}.repo-updated{color:#666}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.section-header h2{color:#00d4ff;font-size:1.4rem;display:flex;align-items:center;gap:12px}.repo-stars-small{font-size:.9rem;color:#fbbf24;font-weight:400}.repo-description{color:#888;margin-bottom:16px;line-height:1.6}.reset-btn{padding:10px 20px;background:#ffffff1a;border:1px solid rgba(255,255,255,.2);border-radius:8px;color:#ccc;cursor:pointer;transition:all .3s}.reset-btn:hover{background:#fff3;color:#fff}.code-file{margin-bottom:24px}.code-filename{color:#7c3aed;margin-bottom:8px;font-weight:600}.summary-box{background:#00d4ff1a;padding:16px;border-radius:12px;margin-bottom:24px;border-left:4px solid #00d4ff}.summary-box strong{color:#00d4ff}.summary-box p{margin-top:8px;line-height:1.6}.final-score{font-size:1.5rem;margin-top:12px;color:#00d4ff}.score-message{color:#888;margin:12px 0 20px}.score-display .reset-btn{background:linear-gradient(90deg,#00d4ff,#7c3aed);border:none;color:#fff;font-weight:600}.score-display .reset-btn:hover{opacity:.9}.code-layout{display:flex;border-radius:12px;overflow:hidden;border:1px solid rgba(255,255,255,.1);height:550px}.file-sidebar{width:200px;background:#1e1e1e;border-right:1px solid rgba(255,255,255,.1);overflow-y:auto;flex-shrink:0;display:flex;flex-direction:column}.file-sidebar::-webkit-scrollbar{width:6px}.file-sidebar::-webkit-scrollbar-track{background:transparent}.file-sidebar::-webkit-scrollbar-thumb{background:#fff3;border-radius:3px}.file-item{display:flex;align-items:center;gap:8px;padding:10px 12px;cursor:pointer;transition:all .2s;border-left:3px solid transparent}.file-item:hover{background:#ffffff0d}.file-item.active{background:#00d4ff1a;border-left-color:#00d4ff}.file-icon{font-size:14px}.file-name{font-size:13px;color:#ccc;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.file-item.active .file-name{color:#00d4ff}.code-editor-wrapper{flex:1;display:flex;flex-direction:column;min-width:0;min-height:0}.editor-header{background:#252526;color:#888;font-size:12px;padding:8px 16px;border-bottom:1px solid rgba(255,255,255,.1)}.editor-header{display:flex;justify-content:space-between;align-items:center}.explain-btn{padding:6px 14px;background:linear-gradient(90deg,#7c3aed,#00d4ff);border:none;border-radius:6px;color:#fff;font-size:12px;cursor:pointer;transition:all .2s}.explain-btn:hover{opacity:.9;transform:scale(1.02)}.explain-btn:disabled{opacity:.6;cursor:not-allowed;transform:none}.file-summary{background:#7c3aed26;border-left:3px solid #7c3aed;padding:12px 16px;font-size:14px;color:#e0e0e0;line-height:1.6}.file-explained{color:#10b981;font-size:12px;margin-left:auto}.code-main{flex:1;display:flex;flex-direction:column;min-width:0;overflow:hidden}.code-explanation-panel{background:#1e1e1e;border-top:1px solid rgba(255,255,255,.1);padding:16px;max-height:250px;overflow-y:auto}.code-explanation-panel h4{color:#00d4ff;margin-bottom:12px;font-size:14px}.explanation-section{background:#ffffff08;border-radius:8px;padding:12px;margin-bottom:10px}.explanation-section .section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.explanation-section .section-title{color:#7c3aed;font-weight:600;font-size:13px}.explanation-section .section-lines{color:#666;font-size:12px}.explanation-section p{color:#bbb;font-size:13px;line-height:1.6;margin:0}.file-overview{background:#0000004d;border-radius:12px;padding:20px;margin-bottom:24px}.file-overview h3{color:#00d4ff;font-size:1rem;margin-bottom:16px}.file-overview-list{display:flex;flex-direction:column;gap:10px}.file-overview-item{display:flex;align-items:flex-start;gap:12px;padding:10px 14px;background:#ffffff08;border-radius:8px}.file-overview-name{color:#7c3aed;font-weight:600;font-size:13px;white-space:nowrap;min-width:180px}.file-overview-desc{color:#aaa;font-size:13px;line-height:1.5}.related-files{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:20px;padding:12px 16px;background:#7c3aed1a;border-radius:8px}.related-files-label{color:#888;font-size:13px}.related-file-tag{background:#7c3aed4d;color:#a78bfa;padding:4px 10px;border-radius:12px;font-size:12px}.truefalse-options{flex-direction:row!important;gap:16px}.truefalse-options .option{flex:1;text-align:center}.fillblank-input{display:flex;gap:12px}.fillblank-input input{flex:1;padding:14px 20px;border:2px solid rgba(255,255,255,.1);border-radius:10px;background:#0000004d;color:#fff;font-size:1rem;outline:none;transition:border-color .3s}.fillblank-input input:focus{border-color:#00d4ff}.fillblank-input input:disabled{opacity:.6}.submit-btn{padding:14px 28px;background:linear-gradient(90deg,#00d4ff,#7c3aed);border:none;border-radius:10px;color:#fff;font-size:1rem;font-weight:600;cursor:pointer;transition:opacity .2s}.submit-btn:hover{opacity:.9}.code-question{display:flex;flex-direction:column;gap:16px}.code-snippet{background:#0d1117;border-radius:8px;padding:16px;font-family:Fira Code,Consolas,monospace;font-size:13px;color:#e0e0e0;overflow-x:auto;white-space:pre-wrap;word-break:break-all;border:1px solid rgba(255,255,255,.1);max-width:100%}.code-hint{color:#fbbf24;font-size:14px;margin-bottom:12px;padding:8px 12px;background:#fbbf241a;border-radius:6px}.code-input{width:100%;padding:14px;border:2px solid rgba(255,255,255,.1);border-radius:8px;background:#0d1117;color:#e0e0e0;font-family:Fira Code,Consolas,monospace;font-size:14px;resize:vertical;outline:none;transition:border-color .3s}.code-input:focus{border-color:#00d4ff}.code-input:disabled{opacity:.6}.ai-feedback{color:#00d4ff;font-style:italic;margin-bottom:8px}.explanation code{background:#0000004d;padding:4px 8px;border-radius:4px;font-family:Fira Code,Consolas,monospace;font-size:13px}.editor-loading{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#1e1e1e;color:#888}.editor-loading .loading-spinner{margin-bottom:16px}.editor-container{flex:1;min-height:0}.editor-actions{display:flex;gap:8px}.chat-btn{padding:6px 14px;background:#ffffff1a;border:1px solid rgba(255,255,255,.2);border-radius:6px;color:#ccc;font-size:12px;cursor:pointer;transition:all .2s}.chat-btn:hover{background:#ffffff26;color:#fff}.chat-btn.active{background:linear-gradient(90deg,#00d4ff,#7c3aed);border-color:transparent;color:#fff}.chat-panel{height:250px;border-top:1px solid rgba(255,255,255,.1);display:flex;flex-direction:column;background:#1a1a1a}.chat-messages{flex:1;overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:12px}.chat-welcome{color:#888;font-size:13px;text-align:center;padding:20px}.chat-message{display:flex;gap:10px;align-items:flex-start}.chat-message.user{flex-direction:row-reverse}.chat-avatar{font-size:18px;flex-shrink:0}.chat-content{background:#ffffff0d;padding:10px 14px;border-radius:12px;font-size:13px;line-height:1.6;max-width:80%;white-space:pre-wrap}.chat-message.user .chat-content{background:#00d4ff26}.chat-message.assistant .chat-content{background:#7c3aed26}.chat-content.typing{color:#888;font-style:italic}.chat-input-area{display:flex;gap:8px;padding:12px;border-top:1px solid rgba(255,255,255,.1)}.chat-input-area input{flex:1;padding:10px 14px;border:1px solid rgba(255,255,255,.1);border-radius:8px;background:#0000004d;color:#fff;font-size:13px;outline:none}.chat-input-area input:focus{border-color:#00d4ff}.chat-input-area button{padding:10px 20px;background:linear-gradient(90deg,#00d4ff,#7c3aed);border:none;border-radius:8px;color:#fff;font-size:13px;cursor:pointer;transition:opacity .2s}.chat-input-area button:hover{opacity:.9}.chat-input-area button:disabled{opacity:.5;cursor:not-allowed}.code-editor-small{border:2px solid rgba(255,255,255,.1);border-radius:8px;overflow:hidden;margin-bottom:12px}.code-editor-small:focus-within{border-color:#00d4ff}@media (min-width: 1400px){.code-layout{height:650px}.file-sidebar{width:280px}}@media (min-width: 1800px){.code-layout{height:750px}.file-sidebar{width:320px}}.sidebar-section{border-bottom:1px solid rgba(255,255,255,.1)}.sidebar-section:last-child{border-bottom:none;flex:1;display:flex;flex-direction:column;min-height:0}.sidebar-title{padding:12px;font-size:11px;font-weight:600;color:#888;text-transform:uppercase;letter-spacing:.5px;background:#0003;position:sticky;top:0;z-index:1;cursor:pointer;display:flex;align-items:center;gap:6px;-webkit-user-select:none;user-select:none;transition:background .2s}.sidebar-title:hover{background:#0006}.collapse-icon{font-size:10px;color:#666}.file-tree{flex:1;overflow-y:auto;min-height:0}.file-tree::-webkit-scrollbar{width:6px}.file-tree::-webkit-scrollbar-track{background:transparent}.file-tree::-webkit-scrollbar-thumb{background:#ffffff26;border-radius:3px}.file-item.core{background:#7c3aed0d}.file-item.core .file-icon{color:#fbbf24}.file-item.more{color:#666;font-size:12px;font-style:italic;cursor:default;padding:8px 12px}.file-item.more:hover{background:transparent}.file-item.folder{color:#ccc}.file-item.folder:hover{background:#ffffff0d}.file-item.folder .file-name{font-weight:500}.loading-indicator{color:#00d4ff;font-size:12px;margin-left:auto;animation:pulse 1s infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}
