.header{display:flex;align-items:center;justify-content:space-between;height:56px;padding:0 var(--space-5);background:var(--bg-secondary);border-bottom:1px solid var(--border-subtle);flex-shrink:0}.header-left,.header-right{display:flex;align-items:center;gap:var(--space-3)}.header-center{display:flex;align-items:center}.logo{display:flex;align-items:center;gap:var(--space-2)}.logo-mark{display:flex;align-items:center;justify-content:center;width:28px;height:28px;background:var(--bg-tertiary);border-radius:var(--radius-md);font-family:var(--font-serif);font-size:1rem;font-weight:600;color:var(--text-primary)}.logo-text{font-family:var(--font-serif);font-size:1.125rem;font-weight:500;color:var(--text-primary)}.topic-badge{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--bg-tertiary);border-radius:var(--radius-md);font-size:.8125rem;color:var(--text-secondary)}.topic-badge svg{color:var(--accent-primary);opacity:.8}.topic-badge strong{color:var(--text-primary);font-weight:500}.workspace-toggle{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--bg-tertiary);border:1px solid var(--border-default);border-radius:var(--radius-md);font-size:.8125rem;color:var(--text-secondary);cursor:pointer;transition:all .15s ease}.workspace-toggle:hover{background:var(--bg-elevated);color:var(--text-primary);border-color:var(--border-strong)}.workspace-toggle.active{background:var(--accent-muted);color:var(--accent-primary);border-color:var(--accent-primary)}.workspace-toggle.active:hover{background:var(--accent-muted)}.profile-icon{display:flex;align-items:center;justify-content:center;width:36px;height:36px;background:var(--bg-tertiary);border-radius:50%;color:var(--text-secondary);cursor:pointer;transition:all .15s ease}.profile-icon:hover{background:var(--bg-elevated);color:var(--text-primary)}@media (max-width: 768px){.header{padding:0 var(--space-3)}.topic-badge span,.workspace-toggle span{display:none}}.chat-panel{display:flex;flex-direction:column;height:100%;background:var(--bg-primary)}.chat-panel.expanded{max-width:900px;margin:0 auto}.chat-header{display:flex;align-items:center;padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--border-subtle);background:var(--bg-secondary)}.tutor-info{display:flex;align-items:center;gap:var(--space-3)}.tutor-avatar{display:flex;align-items:center;justify-content:center;width:40px;height:40px;background:linear-gradient(135deg,var(--accent-primary) 0%,var(--accent-secondary) 100%);border-radius:50%;font-family:var(--font-serif);font-size:.875rem;font-weight:600;color:var(--bg-primary)}.tutor-details h3{font-size:.9375rem;font-weight:500;color:var(--text-primary);margin-bottom:2px}.tutor-status{display:flex;align-items:center;gap:6px;font-size:.75rem;color:var(--text-secondary)}.status-dot{width:6px;height:6px;background:var(--success);border-radius:50%}.chat-messages{flex:1;overflow-y:auto;padding:var(--space-5);display:flex;flex-direction:column;gap:var(--space-4)}.message{display:flex;gap:var(--space-3);animation:slideInUp .2s ease}.message.user{flex-direction:row-reverse}.message-avatar{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:32px;height:32px;background:var(--bg-tertiary);border-radius:50%;font-family:var(--font-serif);font-size:.75rem;font-weight:500;color:var(--accent-primary)}.message-content{max-width:70%;padding:var(--space-3) var(--space-4);border-radius:var(--radius-lg);font-size:.9375rem;line-height:1.6}.message.assistant .message-content{background:var(--bg-secondary);border:1px solid var(--border-subtle);border-radius:var(--radius-lg) var(--radius-lg) var(--radius-lg) var(--radius-sm)}.message.user .message-content{background:var(--accent-muted);border:1px solid rgba(212,165,116,.2);border-radius:var(--radius-lg) var(--radius-lg) var(--radius-sm) var(--radius-lg);color:var(--text-primary)}.message.error .message-content{background:#c970701a;border-color:#c970704d}.message-content p:last-child{margin-bottom:0}.message-content code{background:var(--bg-tertiary)}.message-content .katex-display{margin:var(--space-3) 0;text-align:left}.message-content .katex{text-align:left}.message.user .message-content .katex-display{background:#00000026;border-left-color:var(--accent-secondary)}.message-time{display:block;margin-top:var(--space-2);font-size:.6875rem;color:var(--text-muted)}.typing-indicator{display:flex;gap:4px;padding:var(--space-2) 0}.typing-indicator span{width:6px;height:6px;background:var(--text-muted);border-radius:50%;animation:pulse 1.4s ease-in-out infinite}.typing-indicator span:nth-child(2){animation-delay:.2s}.typing-indicator span:nth-child(3){animation-delay:.4s}.chat-input-area{padding:var(--space-4) var(--space-5);background:var(--bg-secondary);border-top:1px solid var(--border-subtle)}.quick-actions{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-3);animation:slideInUp .2s ease}.quick-actions button{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--bg-tertiary);border:1px solid var(--border-default);border-radius:var(--radius-md);font-size:.8125rem;color:var(--text-secondary);cursor:pointer;transition:all .15s ease}.quick-actions button:hover{background:var(--bg-elevated);color:var(--text-primary);border-color:var(--border-strong)}.quick-actions button svg{color:var(--accent-primary)}.chat-form{display:flex;align-items:flex-end;gap:var(--space-2);background:var(--bg-tertiary);border:1px solid var(--border-default);border-radius:var(--radius-lg);padding:var(--space-2);transition:border-color .15s ease}.chat-form:focus-within{border-color:var(--accent-primary)}.chat-form textarea{flex:1;background:transparent;border:none;padding:var(--space-2);resize:none;min-height:24px;max-height:150px;line-height:1.5}.chat-form textarea:focus{outline:none;border:none}.action-btn,.send-btn{display:flex;align-items:center;justify-content:center;width:36px;height:36px;background:transparent;border-radius:var(--radius-md);color:var(--text-secondary);cursor:pointer;transition:all .15s ease;flex-shrink:0}.action-btn:hover,.send-btn:hover:not(:disabled){background:var(--bg-elevated);color:var(--text-primary)}.send-btn:disabled{opacity:.4;cursor:not-allowed}.send-btn:not(:disabled){color:var(--accent-primary)}.message-attachment{margin-bottom:var(--space-3)}.attachment-preview{max-width:200px;max-height:150px;border-radius:var(--radius-md);object-fit:cover;border:1px solid var(--border-default)}.attachment-file{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--bg-tertiary);border-radius:var(--radius-md);font-size:.8125rem;color:var(--text-secondary)}.attachment-file svg{color:var(--accent-primary);flex-shrink:0}.quiz-result-summary{display:flex;align-items:center;gap:var(--space-3);margin-top:var(--space-3);padding-top:var(--space-3);border-top:1px solid var(--border-subtle)}.quiz-score-badge{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-2);border-radius:var(--radius-md);font-size:.8125rem;font-weight:500}.quiz-score-badge.good{background:#7cb67c26;color:var(--success)}.quiz-score-badge.needs-work{background:var(--accent-muted);color:var(--accent-primary)}.expand-quiz-btn{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-2);background:var(--bg-tertiary);border:1px solid var(--border-default);border-radius:var(--radius-md);font-size:.75rem;color:var(--text-secondary);cursor:pointer;transition:all .15s ease}.expand-quiz-btn:hover{background:var(--bg-elevated);color:var(--text-primary);border-color:var(--border-strong)}.expand-quiz-btn svg{color:var(--accent-primary)}@media (max-width: 768px){.chat-messages,.chat-input-area{padding:var(--space-3)}.message-content{max-width:85%}.quiz-result-summary{flex-direction:column;align-items:flex-start}}.workspace-panel{display:flex;flex-direction:column;height:100%;background:var(--bg-secondary)}.workspace-panel.empty{justify-content:center;align-items:center}.empty-state{text-align:center;padding:var(--space-6);color:var(--text-secondary)}.empty-state svg{color:var(--text-muted);margin-bottom:var(--space-4)}.empty-state h3{font-size:1.125rem;color:var(--text-primary);margin-bottom:var(--space-2)}.empty-state p{font-size:.875rem;max-width:240px}.workspace-header{display:flex;align-items:flex-start;justify-content:space-between;padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--border-subtle)}.workspace-title h2{font-size:1rem;font-weight:500;color:var(--text-primary);margin-bottom:4px}.workspace-topic{font-size:.75rem;color:var(--text-secondary)}.close-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;background:transparent;border-radius:var(--radius-md);color:var(--text-secondary);cursor:pointer;transition:all .15s ease}.close-btn:hover{background:var(--bg-tertiary);color:var(--text-primary)}.progress-section{padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--border-subtle)}.progress-bar{height:4px;background:var(--bg-tertiary);border-radius:2px;overflow:hidden;margin-bottom:var(--space-2)}.progress-fill{height:100%;background:var(--accent-primary);border-radius:2px;transition:width .3s ease}.progress-text{display:flex;align-items:center;justify-content:space-between;font-size:.75rem;color:var(--text-secondary)}.score-badge{padding:2px 8px;background:var(--accent-muted);border-radius:var(--radius-sm);color:var(--accent-primary);font-weight:500}.question-content{flex:1;overflow-y:auto;padding:var(--space-5)}.question-card{background:var(--bg-primary);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:var(--space-5)}.question-card.correct{border-color:var(--success);background:#7cb67c0d}.question-card.incorrect{border-color:var(--error);background:#c970700d}.question-number{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-3)}.question-number>span:first-child{display:flex;align-items:center;justify-content:center;width:28px;height:28px;background:var(--bg-tertiary);border-radius:var(--radius-md);font-size:.75rem;font-weight:600;color:var(--text-secondary)}.difficulty{font-size:.6875rem;text-transform:uppercase;letter-spacing:.5px;padding:2px 6px;border-radius:var(--radius-sm);background:var(--bg-tertiary);color:var(--text-muted)}.difficulty.easy{background:#7cb67c26;color:var(--success)}.difficulty.medium{background:var(--accent-muted);color:var(--accent-primary)}.difficulty.hard{background:#c9707026;color:var(--error)}.question-text{font-size:.9375rem;line-height:1.6;margin-bottom:var(--space-4)}.question-text p{margin-bottom:0}.question-text .katex-display{margin:var(--space-3) 0;background:var(--bg-secondary)}.options-list{display:flex;flex-direction:column;gap:var(--space-2)}.option{display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--bg-secondary);border:1px solid var(--border-default);border-radius:var(--radius-md);text-align:left;cursor:pointer;transition:all .15s ease}.option:hover:not(:disabled){border-color:var(--border-strong);background:var(--bg-tertiary)}.option.selected{border-color:var(--accent-primary);background:var(--accent-muted)}.option.correct{border-color:var(--success);background:#7cb67c1a}.option.wrong{border-color:var(--error);background:#c970701a}.option:disabled{cursor:default}.option-marker{display:flex;align-items:center;justify-content:center;width:24px;height:24px;background:var(--bg-tertiary);border-radius:50%;font-size:.75rem;font-weight:600;color:var(--text-secondary);flex-shrink:0}.option.selected .option-marker{background:var(--accent-primary);color:var(--bg-primary)}.option.correct .option-marker{background:var(--success);color:var(--bg-primary)}.option.wrong .option-marker{background:var(--error);color:var(--bg-primary)}.option-text{flex:1;font-size:.875rem;color:var(--text-primary);line-height:1.5}.option-text p{margin:0}.option-text .katex-display{margin:var(--space-2) 0;padding:var(--space-2);background:transparent;border-left:none}.option-text .katex{font-size:1em}.result-icon{flex-shrink:0;margin-left:auto}.option.correct .result-icon{color:var(--success)}.option.wrong .result-icon{color:var(--error)}.text-answer-section{display:flex;flex-direction:column;gap:var(--space-3)}.text-answer-input{width:100%;padding:var(--space-3) var(--space-4);background:var(--bg-secondary);border:1px solid var(--border-default);border-radius:var(--radius-md);font-family:inherit;font-size:.9375rem;color:var(--text-primary);resize:vertical;min-height:80px;transition:all .15s ease}.text-answer-input:focus{outline:none;border-color:var(--accent-primary);box-shadow:0 0 0 3px var(--accent-muted)}.text-answer-input::placeholder{color:var(--text-muted)}.text-answer-input:disabled{opacity:.7;cursor:not-allowed}.text-answer-input.correct{border-color:var(--success);background:#7cb67c1a}.text-answer-input.incorrect{border-color:var(--error);background:#c970701a}.answer-feedback{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);font-size:.875rem}.answer-feedback.correct{background:#7cb67c26;color:var(--success)}.answer-feedback.incorrect{background:#c9707026;color:var(--error)}.answer-feedback .correct-answer{font-family:monospace;background:var(--bg-tertiary);padding:2px 6px;border-radius:var(--radius-sm);margin-left:var(--space-2)}.explanation{margin-top:var(--space-4);padding:var(--space-3) var(--space-4);background:var(--bg-secondary);border-radius:var(--radius-md);font-size:.875rem;color:var(--text-secondary);border-left:3px solid var(--accent-primary)}.explanation strong{display:block;color:var(--text-primary);margin-bottom:var(--space-2)}.explanation p{margin-bottom:var(--space-2)}.explanation p:last-child{margin-bottom:0}.explanation .katex-display{background:var(--bg-tertiary);margin:var(--space-2) 0}.hint-btn{display:flex;align-items:center;gap:var(--space-2);margin-top:var(--space-4);padding:var(--space-2) var(--space-3);background:transparent;border:1px solid var(--border-default);border-radius:var(--radius-md);font-size:.8125rem;color:var(--text-secondary);cursor:pointer;transition:all .15s ease}.hint-btn:hover:not(:disabled){border-color:var(--accent-primary);color:var(--accent-primary)}.hint-btn:disabled{opacity:.5;cursor:default}.hint-box{margin-top:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--accent-muted);border-radius:var(--radius-md);font-size:.875rem;color:var(--text-primary);animation:slideInUp .2s ease}.hint-box strong{color:var(--accent-primary)}.workspace-footer{padding:var(--space-4) var(--space-5);border-top:1px solid var(--border-subtle);background:var(--bg-secondary)}.nav-buttons{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-3)}.nav-btn{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--bg-tertiary);border:1px solid var(--border-default);border-radius:var(--radius-md);font-size:.8125rem;color:var(--text-secondary);cursor:pointer;transition:all .15s ease}.nav-btn:hover:not(:disabled){background:var(--bg-elevated);color:var(--text-primary)}.nav-btn:disabled{opacity:.4;cursor:not-allowed}.question-dots{display:flex;gap:6px}.dot{width:8px;height:8px;padding:0;background:var(--bg-tertiary);border:1px solid var(--border-default);border-radius:50%;cursor:pointer;transition:all .15s ease}.dot:hover{border-color:var(--text-muted)}.dot.active{background:var(--accent-primary);border-color:var(--accent-primary)}.dot.answered{background:var(--text-muted);border-color:var(--text-muted)}.dot.correct{background:var(--success);border-color:var(--success)}.dot.incorrect{background:var(--error);border-color:var(--error)}.submit-btn{width:100%;padding:var(--space-3) var(--space-4);background:var(--accent-primary);border-radius:var(--radius-md);font-size:.875rem;font-weight:500;color:var(--bg-primary);cursor:pointer;transition:all .15s ease}.submit-btn:hover:not(:disabled){background:var(--accent-secondary)}.submit-btn:disabled{opacity:.5;cursor:not-allowed}.results-footer{display:flex;flex-direction:column;gap:var(--space-3)}.results-summary{text-align:center}.score{font-size:.875rem;font-weight:500}.score.good{color:var(--success)}.score.needs-work{color:var(--accent-primary)}.exit-btn{display:flex;align-items:center;justify-content:center;gap:var(--space-2);width:100%;padding:var(--space-3) var(--space-4);background:var(--bg-tertiary);border:1px solid var(--border-default);border-radius:var(--radius-md);font-size:.875rem;font-weight:500;color:var(--text-primary);cursor:pointer;transition:all .15s ease}.exit-btn:hover{background:var(--bg-elevated);border-color:var(--border-strong)}.exit-btn svg{color:var(--accent-primary)}@media (max-width: 768px){.workspace-header,.progress-section,.question-content,.workspace-footer{padding-left:var(--space-3);padding-right:var(--space-3)}}.app{display:flex;flex-direction:column;min-height:100vh;background:var(--bg-primary)}.main-content{display:flex;flex:1;overflow:hidden;height:calc(100vh - 56px)}.main-content>*{transition:width .3s ease,opacity .2s ease}.main-content.workspace-open .chat-panel{width:50%;border-right:1px solid var(--border-subtle)}.main-content:not(.workspace-open) .chat-panel{width:100%}.main-content.workspace-open .workspace-panel{width:50%;animation:slideIn .3s ease}@keyframes slideIn{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}@media (max-width: 1024px){.main-content.workspace-open .chat-panel,.main-content.workspace-open .workspace-panel{width:50%}}@media (max-width: 768px){.main-content.workspace-open{flex-direction:column}.main-content.workspace-open .chat-panel,.main-content.workspace-open .workspace-panel{width:100%;height:50%}.main-content.workspace-open .chat-panel{border-right:none;border-bottom:1px solid var(--border-subtle)}}:root{--bg-primary: #0f0f12;--bg-secondary: #16161b;--bg-tertiary: #1c1c23;--bg-elevated: #222229;--text-primary: #e8e6e3;--text-secondary: #9a9a9a;--text-muted: #6b6b6b;--accent-primary: #d4a574;--accent-secondary: #b8956e;--accent-muted: rgba(212, 165, 116, .15);--success: #7cb67c;--error: #c97070;--warning: #d4a574;--info: #7093b8;--border-subtle: rgba(255, 255, 255, .06);--border-default: rgba(255, 255, 255, .1);--border-strong: rgba(255, 255, 255, .15);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 4px 12px rgba(0, 0, 0, .4);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .5);--font-serif: "Source Serif 4", Georgia, serif;--font-sans: "DM Sans", -apple-system, BlinkMacSystemFont, sans-serif;--font-mono: "JetBrains Mono", "Fira Code", monospace;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--space-8: 48px;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-sans);background:var(--bg-primary);color:var(--text-primary);line-height:1.6;min-height:100vh}h1,h2,h3,h4,h5,h6{font-family:var(--font-serif);font-weight:500;line-height:1.3}h1{font-size:1.75rem}h2{font-size:1.375rem}h3{font-size:1.125rem}h4{font-size:1rem}p{margin-bottom:var(--space-3)}a{color:var(--accent-primary);text-decoration:none}a:hover{text-decoration:underline}code{font-family:var(--font-mono);font-size:.875em;background:var(--bg-tertiary);padding:2px 6px;border-radius:var(--radius-sm)}pre{font-family:var(--font-mono);font-size:.875rem;background:var(--bg-tertiary);padding:var(--space-4);border-radius:var(--radius-md);overflow-x:auto;margin:var(--space-3) 0}pre code{background:none;padding:0}button{font-family:var(--font-sans);font-size:.875rem;font-weight:500;cursor:pointer;border:none;outline:none;transition:all .15s ease}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);border-radius:var(--radius-md)}.btn-primary{background:var(--accent-primary);color:var(--bg-primary)}.btn-primary:hover{background:var(--accent-secondary)}.btn-secondary{background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border-default)}.btn-secondary:hover{background:var(--bg-elevated);border-color:var(--border-strong)}.btn-ghost{background:transparent;color:var(--text-secondary)}.btn-ghost:hover{background:var(--bg-tertiary);color:var(--text-primary)}input,textarea{font-family:var(--font-sans);font-size:.9375rem;background:var(--bg-tertiary);border:1px solid var(--border-default);border-radius:var(--radius-md);color:var(--text-primary);padding:var(--space-3) var(--space-4);outline:none;transition:border-color .15s ease}input:focus,textarea:focus{border-color:var(--accent-primary)}input::placeholder,textarea::placeholder{color:var(--text-muted)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}#root{min-height:100vh;display:flex;flex-direction:column}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.katex{font-size:1.1em;color:var(--text-primary)}.katex-display{margin:var(--space-4) 0;padding:var(--space-4);background:var(--bg-tertiary);border-radius:var(--radius-md);border-left:3px solid var(--accent-primary);overflow-x:auto}.katex-display>.katex{font-size:1.15em}.katex:not(.katex-display .katex){padding:0 2px}.katex .mord,.katex .mop,.katex .mbin,.katex .mrel,.katex .mopen,.katex .mclose,.katex .mpunct,.katex .minner{color:var(--text-primary)}.katex .mfrac .frac-line{border-color:var(--text-secondary)}.katex .delimsizing,.katex .delimsizinginner{color:var(--accent-secondary)}.katex .mop{color:var(--accent-primary)}.katex .accent>.vlist>span>span{color:var(--text-primary)}.katex-display::-webkit-scrollbar{height:6px}.katex-display::-webkit-scrollbar-track{background:var(--bg-secondary);border-radius:3px}.katex-display::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:3px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideInUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.fade-in{animation:fadeIn .2s ease}.slide-in{animation:slideInUp .3s ease}
