*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}body{background-color:#0d1117;color:#e6edf3;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif;line-height:1.5;min-height:100vh;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{min-height:100vh}.terminal-container{background-color:#000;border:1px solid #333;border-radius:8px;font-family:Consolas,Courier New,monospace;font-size:13px;color:#0f0;padding:12px;height:50vh;min-height:300px;max-height:60vh;overflow-y:auto;cursor:text;position:relative}.terminal-container:focus-within{outline:1px solid #1f6feb}.terminal-output-line{white-space:pre-wrap;word-break:break-all;line-height:1.4;min-height:1.4em}.terminal-input-line{display:flex;line-height:1.4}.terminal-prompt{white-space:pre;flex-shrink:0}.terminal-input{background:transparent;border:none;outline:none;color:#0f0;font-family:inherit;font-size:inherit;flex:1;padding:0;margin:0;caret-color:#0f0}.terminal-input::selection{background-color:#0f0;color:#000}.terminal-syslog{color:#ff0}.terminal-error{color:#f66}.terminal-cursor-blink{animation:blink 1s step-end infinite}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}:root{--bg-primary: #0d1117;--bg-card: #161b22;--border: #30363d;--text-primary: #e6edf3;--text-secondary: #8b949e;--accent-blue: #1f6feb;--accent-blue-hover: #388bfd;--success: #238636;--success-text: #3fb950;--error: #f85149;--terminal-bg: #000000;--terminal-text: #00ff00;--sidebar-width: 240px;--sidebar-collapsed-width: 48px}*{margin:0;padding:0;box-sizing:border-box}body{background-color:var(--bg-primary);color:var(--text-primary);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif;line-height:1.5;overflow:hidden;height:100dvh}#root{height:100dvh}.app-layout{display:flex;height:100dvh;overflow:hidden}.sidebar{width:var(--sidebar-width);min-width:var(--sidebar-width);height:100dvh;background-color:var(--bg-card);border-right:1px solid var(--border);display:flex;flex-direction:column;transition:transform .2s ease,width .2s ease,min-width .2s ease;overflow:hidden;z-index:100}.sidebar.closed{width:0;min-width:0;transform:translate(-100%)}.sidebar.open{transform:translate(0)}.sidebar-overlay{display:none}.sidebar-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--border);flex-shrink:0}.sidebar-title{font-size:14px;font-weight:600;color:var(--text-primary)}.sidebar-close-btn{background:none;border:none;color:var(--text-secondary);cursor:pointer;font-size:14px;padding:4px 8px;border-radius:4px}.sidebar-close-btn:hover{color:var(--text-primary);background:#ffffff0d}.sidebar-nav{flex:1;overflow-y:auto;padding:8px 0}.sidebar-toggle-collapsed{position:fixed;left:0;top:0;width:var(--sidebar-collapsed-width);height:100dvh;background:var(--bg-card);border:none;border-right:1px solid var(--border);color:var(--text-secondary);font-size:18px;cursor:pointer;display:flex;align-items:flex-start;justify-content:center;padding-top:14px;z-index:90}.sidebar-toggle-collapsed:hover{color:var(--text-primary);background:var(--bg-card)}.sidebar-phase{border-bottom:1px solid var(--border)}.sidebar-phase:last-child{border-bottom:none}.sidebar-phase-header{width:100%;display:flex;align-items:center;gap:6px;padding:10px 16px;background:none;border:none;color:var(--text-primary);font-size:12px;font-weight:600;cursor:pointer;text-align:left;font-family:inherit}.sidebar-phase-header:hover{background:#ffffff08}.phase-arrow{font-size:10px;color:var(--text-secondary);width:12px;flex-shrink:0}.phase-name{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.phase-progress{color:var(--text-secondary);font-weight:400;font-size:11px;flex-shrink:0}.sidebar-phase-content{padding:0 8px 8px}.sidebar-group{margin-bottom:8px}.sidebar-group-title{font-size:11px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.3px;padding:4px 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-lab-list{display:flex;flex-wrap:wrap;gap:4px;padding:4px 8px}.sidebar-lab-btn{padding:2px 8px;font-size:11px;border-radius:4px;border:1px solid var(--border);background:transparent;color:var(--text-primary);cursor:pointer;transition:all .15s ease;font-family:inherit}.sidebar-lab-btn:hover{border-color:var(--text-secondary)}.sidebar-lab-btn.active{background-color:var(--accent-blue);border-color:var(--accent-blue);color:#fff}.sidebar-lab-btn.cleared{border-color:var(--success);color:var(--success-text)}.sidebar-lab-btn.cleared:after{content:" ✅";font-size:9px}.sidebar-lab-btn.hint-cleared{border-color:#d29922;color:#e3b341}.sidebar-lab-btn.hint-cleared:after{content:" △";font-size:9px}.main-content{flex:1;display:flex;flex-direction:column;height:100dvh;overflow-y:auto;min-width:0;transition:margin-left .2s ease}.main-content.sidebar-closed{margin-left:var(--sidebar-collapsed-width)}.app-header{display:flex;align-items:center;justify-content:space-between;padding:10px 20px;border-bottom:1px solid var(--border);background-color:var(--bg-card);flex-shrink:0}.header-left{display:flex;align-items:center;gap:10px}.sidebar-hamburger{display:none;background:none;border:none;color:var(--text-secondary);font-size:18px;cursor:pointer;padding:4px}.app-header h1{font-size:15px;font-weight:600}.progress-label{color:var(--text-secondary);font-size:13px;white-space:nowrap}.lab-description{padding:14px 20px;border-bottom:1px solid var(--border);flex-shrink:0}.lab-description .lab-phase{font-size:11px;color:var(--text-secondary)}.lab-description .lab-title{font-size:16px;font-weight:600;margin:2px 0 8px}.lab-description .lab-task-list{list-style:disc;padding-left:20px;color:var(--text-primary);font-size:13px}.lab-description .lab-task-list li{margin-bottom:2px}.lab-description code{font-family:Consolas,Courier New,monospace;background-color:#6e768133;padding:1px 5px;border-radius:3px;font-size:12px}.hint-toggle{margin-top:8px;padding:4px 10px;font-size:12px;background:transparent;border:1px solid var(--border);border-radius:4px;color:var(--text-secondary);cursor:pointer;font-family:inherit}.hint-toggle:hover{color:var(--text-primary);border-color:var(--text-secondary)}.hint-content{margin-top:6px;padding:8px 12px;background-color:#1f6feb1a;border:1px solid rgba(31,111,235,.3);border-radius:4px;color:var(--text-secondary);font-size:12px}.terminal-area{padding:12px 20px;flex:1;min-height:0}.action-bar{display:flex;gap:8px;padding:10px 20px;border-top:1px solid var(--border);flex-shrink:0}.action-btn{padding:6px 14px;font-size:13px;border-radius:6px;border:1px solid var(--border);background:transparent;color:var(--text-primary);cursor:pointer;font-family:inherit;transition:all .15s ease}.action-btn:hover{border-color:var(--text-secondary)}.action-btn.primary{background-color:var(--success);border-color:var(--success);color:#fff}.action-btn.primary:hover{background-color:#2ea043}.check-results{padding:10px 20px}.check-item{display:flex;align-items:center;gap:8px;padding:3px 0;font-size:13px}.check-item.pass{color:var(--success-text)}.check-item.fail{color:var(--error)}.check-icon{font-size:14px;width:18px;text-align:center}.explanation{margin-top:10px;padding:10px;background-color:var(--bg-card);border:1px solid var(--border);border-radius:6px;font-size:12px;color:var(--text-secondary)}.explanation p{margin-bottom:3px}.difficulty-badge{display:inline-block;padding:1px 6px;font-size:10px;border-radius:10px;font-weight:500}.difficulty-badge.basic{background-color:#23863633;color:var(--success-text)}.difficulty-badge.advanced{background-color:#f8514933;color:var(--error)}@media(max-width:600px){.sidebar{position:fixed;left:0;top:0;width:280px;min-width:280px;z-index:200}.sidebar.closed{transform:translate(-100%);width:280px;min-width:280px}.sidebar-overlay{display:block;position:fixed;inset:0;background:#00000080;z-index:150}.sidebar-toggle-collapsed{display:none}.sidebar-hamburger{display:block}.main-content.sidebar-closed,.main-content.sidebar-open{margin-left:0}.app-header h1{font-size:14px}}:root{--quiz-correct-bg: rgba(35, 134, 54, .15);--quiz-correct-border: #238636;--quiz-incorrect-bg: rgba(248, 81, 73, .15);--quiz-incorrect-border: #f85149;--quiz-hover-bg: rgba(31, 111, 235, .1);--quiz-hover-border: #388bfd}.quiz-progress-container{padding:16px 20px;background-color:var(--bg-card);border-bottom:1px solid var(--border)}.quiz-progress-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;font-size:14px}.quiz-progress-text{font-weight:600;color:var(--text-primary)}.quiz-progress-correct{color:var(--text-secondary)}.quiz-progress-bar-bg{width:100%;height:6px;background-color:var(--border);border-radius:3px;overflow:hidden}.quiz-progress-bar-fill{height:100%;background-color:var(--accent-blue);transition:width .3s ease}.quiz-question-container{padding:24px;max-width:900px;margin:0 auto}.quiz-question-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.quiz-question-type{font-size:12px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.quiz-difficulty-badge{display:inline-block;padding:2px 8px;font-size:11px;border-radius:10px;font-weight:500}.quiz-difficulty-badge.basic{background-color:#23863633;color:var(--success-text)}.quiz-difficulty-badge.intermediate{background-color:#1f6feb33;color:#58a6ff}.quiz-difficulty-badge.advanced{background-color:#f8514933;color:var(--error)}.quiz-question-text{font-size:16px;line-height:1.6;color:var(--text-primary);margin-bottom:24px;white-space:pre-wrap}.quiz-choices{display:flex;flex-direction:column;gap:12px;margin-bottom:20px}.quiz-choice{display:flex;align-items:center;gap:12px;padding:14px 16px;background-color:var(--bg-card);border:2px solid var(--border);border-radius:8px;cursor:pointer;transition:all .15s ease;font-family:inherit;font-size:14px;text-align:left;color:var(--text-primary)}.quiz-choice:hover:not(:disabled){background-color:var(--quiz-hover-bg);border-color:var(--quiz-hover-border)}.quiz-choice:disabled{cursor:default}.quiz-choice-selected{background-color:var(--quiz-hover-bg);border-color:var(--accent-blue)}.quiz-choice-correct-selected{background-color:var(--quiz-correct-bg);border-color:var(--quiz-correct-border)}.quiz-choice-correct-unselected{border-color:var(--quiz-correct-border);border-style:dashed}.quiz-choice-incorrect-selected{background-color:var(--quiz-incorrect-bg);border-color:var(--quiz-incorrect-border)}.quiz-choice-icon{font-size:16px;flex-shrink:0;width:20px;text-align:center}.quiz-choice-label{font-weight:600;font-size:13px;text-transform:uppercase;color:var(--text-secondary);flex-shrink:0;width:20px}.quiz-choice-text{flex:1;line-height:1.5}.quiz-submit-container{display:flex;align-items:center;gap:12px;margin-top:20px}.quiz-submit-btn{padding:10px 24px;font-size:14px;font-weight:600;background-color:var(--accent-blue);border:none;border-radius:6px;color:#fff;cursor:pointer;font-family:inherit;transition:background-color .15s ease}.quiz-submit-btn:hover:not(:disabled){background-color:var(--accent-blue-hover)}.quiz-submit-btn:disabled{opacity:.5;cursor:not-allowed}.quiz-keyboard-hint{font-size:12px;color:var(--text-secondary)}.quiz-explanation{margin-top:24px;padding:16px;background-color:#1f6feb1a;border:1px solid rgba(31,111,235,.3);border-radius:8px}.quiz-explanation-header{font-size:13px;font-weight:600;color:var(--accent-blue);margin-bottom:8px}.quiz-explanation-text{font-size:14px;line-height:1.6;color:var(--text-primary);white-space:pre-wrap}.quiz-view-container{display:flex;flex-direction:column;height:100dvh;background-color:var(--bg-primary)}.quiz-view-header{display:flex;align-items:center;gap:16px;padding:12px 20px;background-color:var(--bg-card);border-bottom:1px solid var(--border)}.quiz-back-btn{padding:6px 12px;font-size:13px;background:transparent;border:1px solid var(--border);border-radius:6px;color:var(--text-primary);cursor:pointer;font-family:inherit;transition:all .15s ease}.quiz-back-btn:hover{border-color:var(--text-secondary);background-color:#ffffff0d}.quiz-view-topic{flex:1;font-size:14px;font-weight:600;color:var(--text-primary)}.quiz-view-question{flex:1;overflow-y:auto}.quiz-view-navigation{display:flex;justify-content:space-between;padding:16px 20px;background-color:var(--bg-card);border-top:1px solid var(--border);padding-bottom:max(16px,env(safe-area-inset-bottom,16px))}.quiz-nav-btn{padding:8px 16px;font-size:13px;background:transparent;border:1px solid var(--border);border-radius:6px;color:var(--text-primary);cursor:pointer;font-family:inherit;transition:all .15s ease}.quiz-nav-btn:hover:not(:disabled){border-color:var(--accent-blue);background-color:var(--quiz-hover-bg)}.quiz-nav-btn:disabled{opacity:.4;cursor:not-allowed}.quiz-keyboard-shortcuts{display:flex;justify-content:center;gap:16px;padding:8px 20px;padding-bottom:max(8px,env(safe-area-inset-bottom,8px));font-size:11px;color:var(--text-secondary);background-color:var(--bg-card)}.quiz-keyboard-shortcuts span:first-child{font-weight:600}.quiz-summary{max-width:700px;margin:40px auto;padding:32px}.quiz-summary-header{font-size:24px;font-weight:600;text-align:center;margin-bottom:24px;color:var(--text-primary)}.quiz-summary-score{text-align:center;margin-bottom:32px}.quiz-summary-score-value{font-size:48px;font-weight:700;color:var(--accent-blue);margin-bottom:8px}.quiz-summary-score-percent{font-size:18px;color:var(--text-secondary)}.quiz-summary-incorrect{margin-bottom:32px;padding:20px;background-color:var(--bg-card);border:1px solid var(--border);border-radius:8px}.quiz-summary-incorrect-header{font-size:16px;font-weight:600;margin-bottom:16px;color:var(--error)}.quiz-summary-incorrect-list{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}.quiz-summary-incorrect-item{display:flex;gap:12px;padding:10px 12px;background-color:var(--bg-primary);border:1px solid var(--border);border-radius:6px;color:var(--text-primary);cursor:pointer;font-family:inherit;text-align:left;font-size:13px;transition:all .15s ease}.quiz-summary-incorrect-item:hover{border-color:var(--accent-blue);background-color:var(--quiz-hover-bg)}.quiz-summary-incorrect-number{font-weight:600;color:var(--text-secondary);flex-shrink:0}.quiz-summary-incorrect-text{flex:1}.quiz-retry-incorrect-btn{width:100%;padding:10px 16px;font-size:14px;font-weight:600;background-color:var(--error);border:none;border-radius:6px;color:#fff;cursor:pointer;font-family:inherit;transition:opacity .15s ease}.quiz-retry-incorrect-btn:hover{opacity:.9}.quiz-summary-actions{display:flex;gap:12px;justify-content:center}.quiz-action-btn{padding:10px 20px;font-size:14px;font-weight:600;background:transparent;border:1px solid var(--border);border-radius:6px;color:var(--text-primary);cursor:pointer;font-family:inherit;transition:all .15s ease}.quiz-action-btn:hover{border-color:var(--accent-blue);background-color:var(--quiz-hover-bg)}.quiz-action-btn.primary{background-color:var(--accent-blue);border-color:var(--accent-blue);color:#fff}.quiz-action-btn.primary:hover{background-color:var(--accent-blue-hover)}.quiz-error{padding:40px;text-align:center;color:var(--text-secondary);font-size:16px}.quiz-topic-list-container{padding:24px;max-width:1200px;margin:0 auto}.quiz-topic-list-header{margin-bottom:24px}.quiz-topic-list-title{font-size:24px;font-weight:600;color:var(--text-primary);margin-bottom:4px}.quiz-topic-list-subtitle{font-size:14px;color:var(--text-secondary)}.quiz-overall-score{margin-bottom:32px;padding:20px;background-color:var(--bg-card);border:1px solid var(--border);border-radius:8px}.quiz-overall-score-label{font-size:13px;color:var(--text-secondary);margin-bottom:8px}.quiz-overall-score-value{font-size:36px;font-weight:700;color:var(--accent-blue);margin-bottom:12px}.quiz-overall-score-bar-bg{width:100%;height:8px;background-color:var(--border);border-radius:4px;overflow:hidden}.quiz-overall-score-bar-fill{height:100%;background-color:var(--success);transition:width .3s ease}.quiz-topic-list{display:flex;flex-direction:column;gap:12px;margin-bottom:24px}.quiz-topic-item{position:relative;display:flex;align-items:stretch;background-color:var(--bg-card);border:1px solid var(--border);border-radius:8px;overflow:hidden;transition:border-color .15s ease}.quiz-topic-item:hover{border-color:var(--accent-blue)}.quiz-topic-btn{flex:1;display:flex;justify-content:space-between;align-items:center;padding:16px;background:transparent;border:none;cursor:pointer;font-family:inherit;text-align:left;color:var(--text-primary);transition:background-color .15s ease}.quiz-topic-btn:hover{background-color:#ffffff08}.quiz-topic-left{flex:1}.quiz-topic-id-row{display:flex;align-items:center;gap:8px;margin-bottom:6px}.quiz-topic-id{font-size:13px;font-weight:600;color:var(--accent-blue)}.quiz-topic-complete-icon{font-size:14px;color:var(--success-text)}.quiz-topic-title{font-size:16px;font-weight:600;margin-bottom:6px;color:var(--text-primary)}.quiz-topic-meta{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--text-secondary)}.quiz-topic-exam-verb{text-transform:capitalize}.quiz-topic-separator{color:var(--border)}.quiz-topic-right{display:flex;flex-direction:column;align-items:flex-end;justify-content:center;min-width:100px;margin-left:20px}.quiz-topic-score{font-size:24px;font-weight:700;color:var(--accent-blue);margin-bottom:6px}.quiz-topic-progress-bar-bg{width:100px;height:6px;background-color:var(--border);border-radius:3px;overflow:hidden}.quiz-topic-progress-bar-fill{height:100%;background-color:var(--success);transition:width .3s ease}.quiz-topic-not-started{font-size:13px;color:var(--text-secondary)}.quiz-topic-reset-btn{padding:8px 16px;font-size:12px;background:transparent;border:none;border-left:1px solid var(--border);color:var(--text-secondary);cursor:pointer;font-family:inherit;transition:all .15s ease}.quiz-topic-reset-btn:hover{background-color:#f851491a;color:var(--error)}.quiz-reset-all-container{text-align:center;padding-top:16px;border-top:1px solid var(--border)}.quiz-reset-all-btn{padding:8px 20px;font-size:13px;background:transparent;border:1px solid var(--border);border-radius:6px;color:var(--text-secondary);cursor:pointer;font-family:inherit;transition:all .15s ease}.quiz-reset-all-btn:hover{border-color:var(--error);color:var(--error);background-color:#f851490d}.quiz-topic-list-empty{padding:60px 20px;text-align:center;color:var(--text-secondary);font-size:16px}.quiz-domain-btn{cursor:pointer;background:none;border:none;font-family:inherit;padding:4px 8px;color:var(--text-secondary);font-size:11px;text-transform:uppercase;letter-spacing:.3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:100%;text-align:left}.quiz-domain-btn:hover{color:var(--text-primary)}.quiz-topic-list-sidebar{display:flex;flex-direction:column;gap:2px;padding:4px 8px}.quiz-sidebar-topic-btn{display:flex;align-items:center;gap:6px;padding:4px 8px;background:transparent;border:none;border-radius:4px;cursor:pointer;font-family:inherit;font-size:11px;color:var(--text-primary);text-align:left;transition:all .15s ease;width:100%}.quiz-sidebar-topic-btn:hover{background-color:#ffffff0d}.quiz-sidebar-topic-btn.active{background-color:var(--accent-blue);color:#fff}.quiz-sidebar-topic-btn.complete{color:var(--success-text)}.quiz-sidebar-topic-btn .quiz-topic-id{flex-shrink:0;font-weight:600;font-size:11px;color:inherit}.quiz-sidebar-topic-btn .quiz-topic-title{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:400;margin-bottom:0;color:inherit}.quiz-sidebar-topic-btn .quiz-topic-score{flex-shrink:0;font-size:10px;color:var(--text-secondary)}.quiz-sidebar-topic-btn.active .quiz-topic-score{color:#ffffffb3}@media(max-width:600px){.quiz-question-container{padding:16px}.quiz-question-text{font-size:15px}.quiz-choice{padding:12px;font-size:13px}.quiz-summary{padding:24px 16px}.quiz-summary-score-value{font-size:36px}.quiz-topic-list-container{padding:16px}.quiz-topic-list-title{font-size:20px}.quiz-topic-btn{flex-direction:column;align-items:flex-start;gap:12px}.quiz-topic-right{width:100%;flex-direction:row;justify-content:space-between;align-items:center;margin-left:0}.quiz-topic-score{font-size:20px;margin-bottom:0}.quiz-view-navigation{flex-wrap:wrap;gap:8px}.quiz-nav-btn{flex:1;min-width:120px}.quiz-keyboard-shortcuts{flex-wrap:wrap;gap:8px}}
