*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #ffffff;--surface: #f5f5f7;--surface-2: #e8e8ed;--border: #d2d2d7;--text-primary: #1d1d1f;--text-secondary: #6e6e73;--text-tertiary: #aeaeb2;--accent: #0071e3;--accent-hover: #0077ed;--accent-text: #ffffff;--user-bubble: #0071e3;--user-bubble-text: #ffffff;--assistant-bubble: #f5f5f7;--assistant-bubble-text: #1d1d1f;--shadow-sm: 0 1px 3px rgba(0,0,0,.08), 0 1px 2px rgba(0,0,0,.05);--shadow-md: 0 4px 16px rgba(0,0,0,.08), 0 2px 6px rgba(0,0,0,.06);--radius-sm: 8px;--radius-md: 14px;--radius-lg: 20px;--font: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Helvetica Neue", Arial, sans-serif}html,body,#root{height:100%}body{font-family:var(--font);background:var(--bg);color:var(--text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.app-layout{display:flex;height:100vh;overflow:hidden}.sidebar{width:240px;flex-shrink:0;background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:20px 16px;gap:16px}.sidebar-header{display:flex;align-items:center;gap:10px}.sidebar-logo{font-size:11px;font-weight:700;letter-spacing:.5px;background:var(--accent);color:#fff;border-radius:5px;padding:3px 5px;line-height:1}.sidebar-title{font-size:15px;font-weight:600;color:var(--text-primary);letter-spacing:-.2px}.sidebar-subtitle{font-size:11px;color:var(--text-secondary);line-height:1.4;margin-top:-8px}.new-chat-btn{display:flex;align-items:center;gap:8px;background:var(--accent);color:var(--accent-text);border:none;border-radius:var(--radius-sm);padding:10px 14px;font-family:var(--font);font-size:14px;font-weight:500;cursor:pointer;transition:background .15s ease,opacity .15s ease;width:100%;letter-spacing:-.1px}.new-chat-btn:hover:not(:disabled){background:var(--accent-hover)}.new-chat-btn:disabled{opacity:.5;cursor:not-allowed}.conversation-list{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:2px;min-height:0}.conversation-list::-webkit-scrollbar{width:4px}.conversation-list::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}.conversation-item{padding:7px 10px;border-radius:var(--radius-sm);cursor:pointer;transition:background .1s;border:none;background:transparent;text-align:left;width:100%;font-family:var(--font);display:flex;flex-direction:column;gap:2px}.conversation-item:hover:not(:disabled){background:var(--surface-2)}.conversation-item:disabled{cursor:not-allowed;opacity:.6}.conversation-item--active{background:var(--surface-2)}.conversation-item-title{font-size:13px;font-weight:500;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.conversation-item-date{font-size:11px;color:var(--text-tertiary)}.sidebar-hint{margin-top:auto;display:flex;flex-direction:column;gap:8px}.sidebar-hint p{font-size:11px;color:var(--text-tertiary);line-height:1.5}.chat-area{flex:1;display:flex;flex-direction:column;overflow:hidden;background:var(--bg)}.chat-window{flex:1;overflow-y:auto;padding:24px 16px 8px;display:flex;flex-direction:column;gap:12px;scroll-behavior:smooth}.chat-window::-webkit-scrollbar{width:6px}.chat-window::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}.empty-state{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:40px 24px;gap:12px;color:var(--text-secondary)}.empty-icon{font-size:48px;line-height:1;margin-bottom:8px}.empty-state h2{font-size:20px;font-weight:600;color:var(--text-primary);letter-spacing:-.3px}.empty-state p{font-size:14px;color:var(--text-secondary);max-width:340px;line-height:1.5}.suggestions{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-top:8px}.suggestion-chip{background:var(--surface);border:1px solid var(--border);border-radius:20px;padding:7px 14px;font-size:13px;color:var(--text-primary);font-family:var(--font);cursor:pointer;transition:background .15s,border-color .15s,color .15s}.suggestion-chip:hover:not(:disabled){background:var(--surface-2);border-color:var(--accent);color:var(--accent)}.suggestion-chip:disabled{opacity:.5;cursor:not-allowed}.message-row{display:flex;align-items:flex-end;gap:8px;max-width:720px;width:100%;margin:0 auto}.message-row--user{flex-direction:row-reverse}.message-row--assistant{flex-direction:row}.avatar{width:28px;height:28px;border-radius:50%;background:linear-gradient(135deg,#34c759,#30d158);color:#fff;font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0;letter-spacing:0}.bubble{max-width:75%;padding:12px 16px;border-radius:var(--radius-lg);line-height:1.6}.bubble--user{background:var(--user-bubble);color:var(--user-bubble-text);border-bottom-right-radius:4px}.bubble--assistant{background:var(--assistant-bubble);color:var(--assistant-bubble-text);border-bottom-left-radius:4px;box-shadow:var(--shadow-sm)}.bubble-text{font-size:15px;white-space:pre-wrap;word-break:break-word}.stage-badge{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:600;letter-spacing:.2px;padding:3px 9px;border-radius:20px;margin-bottom:10px}.stage--assess{background:#ede9fe;color:#5b21b6}.stage--teach{background:#dcfce7;color:#15803d}.stage--quiz{background:#fff7ed;color:#c2410c}.stage--feedback{background:#e0f2fe;color:#0369a1}.stage--next{background:#f1f5f9;color:#475569}.bubble--quiz{border-left:3px solid #f97316}.bubble-markdown{font-size:15px;word-break:break-word;line-height:1.6}.bubble-markdown p{margin-bottom:8px}.bubble-markdown p:last-child{margin-bottom:0}.bubble-markdown h1,.bubble-markdown h2,.bubble-markdown h3{font-weight:600;margin:14px 0 6px;letter-spacing:-.2px;color:var(--text-primary)}.bubble-markdown h1{font-size:18px}.bubble-markdown h2{font-size:16px}.bubble-markdown h3{font-size:15px}.bubble-markdown ul,.bubble-markdown ol{padding-left:20px;margin:6px 0}.bubble-markdown li{margin-bottom:4px}.bubble-markdown strong{font-weight:600}.bubble-markdown em{font-style:italic}.bubble-markdown code{background:#0000000f;border-radius:4px;padding:1px 5px;font-size:13px;font-family:SF Mono,Fira Code,Cascadia Code,monospace}.bubble-markdown pre{background:#0000000f;border-radius:8px;padding:12px;overflow-x:auto;margin:8px 0}.bubble-markdown pre code{background:none;padding:0}.bubble-markdown blockquote{border-left:3px solid var(--accent);padding-left:12px;margin:8px 0;color:var(--text-secondary)}.bubble-markdown hr{border:none;border-top:1px solid var(--border);margin:10px 0}.cursor{display:inline-block;color:var(--accent);animation:blink .8s step-end infinite;font-weight:300;margin-left:1px}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}.bubble--loading{padding:14px 18px;display:flex;align-items:center;gap:5px}.dot{width:7px;height:7px;border-radius:50%;background:var(--text-tertiary);animation:bounce 1.2s ease-in-out infinite}.dot:nth-child(1){animation-delay:0s}.dot:nth-child(2){animation-delay:.2s}.dot:nth-child(3){animation-delay:.4s}.tool-status{font-size:12px;color:var(--text-secondary);margin-left:10px;font-style:italic;letter-spacing:-.1px}@keyframes bounce{0%,80%,to{transform:scale(.8);opacity:.5}40%{transform:scale(1.1);opacity:1}}.input-bar{padding:12px 16px 16px;border-top:1px solid var(--border);background:var(--bg)}.input-bar-inner{display:flex;align-items:flex-end;gap:10px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:10px 10px 10px 14px;box-shadow:var(--shadow-sm);max-width:720px;margin:0 auto;transition:border-color .15s,box-shadow .15s}.input-bar-inner:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px #0071e31f}.input-textarea{flex:1;border:none;background:transparent;resize:none;font-family:var(--font);font-size:15px;color:var(--text-primary);outline:none;max-height:140px;min-height:24px;line-height:1.5;overflow-y:auto}.input-textarea::placeholder{color:var(--text-tertiary)}.input-textarea:disabled{opacity:.6;cursor:not-allowed}.send-btn{flex-shrink:0;width:34px;height:34px;border-radius:50%;background:var(--accent);color:#fff;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s,opacity .15s,transform .1s}.send-btn:hover:not(:disabled){background:var(--accent-hover);transform:scale(1.05)}.send-btn:disabled{background:var(--border);cursor:not-allowed}.input-hint{font-size:11px;color:var(--text-tertiary);text-align:center;margin-top:8px}
