.chat-history{flex:1;overflow-y:auto;padding:1rem;display:flex;flex-direction:column;gap:.75rem}.empty-state{color:var(--text-muted);text-align:center;padding:2rem 1rem}.bubble-wrap{display:flex;justify-content:flex-start}.bubble-wrap.user{justify-content:flex-end}.bubble{max-width:85%;padding:.75rem 1rem;border-radius:1rem;border:1px solid var(--border)}.bubble.user{background:var(--user-bubble);border-bottom-right-radius:.25rem}.bubble.ai{background:var(--ai-bubble);border-bottom-left-radius:.25rem}.bubble-label{display:block;font-size:.75rem;color:var(--text-muted);margin-bottom:.25rem}.bubble-text{margin:0;white-space:pre-wrap;word-break:break-word}.feedback{margin-top:.75rem;padding-top:.75rem;border-top:1px solid var(--border);font-size:.875rem;color:var(--text-muted)}.feedback-item{margin-top:.25rem}.feedback-item em{color:var(--text);font-style:normal}.voice-input{display:flex;align-items:center;gap:.5rem}.mic-btn{width:2.5rem;height:2.5rem;border-radius:50%;border:2px solid var(--border);background:var(--surface);cursor:pointer;position:relative;flex-shrink:0}.mic-btn:after{content:"🎤";position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:1.1rem}.mic-btn:hover:not(:disabled){border-color:var(--accent);background:var(--user-bubble)}.mic-btn:disabled:not(.recording){opacity:.5;cursor:not-allowed}.mic-btn.recording{background:var(--recording);border-color:var(--recording);animation:pulse 1s ease-in-out infinite}.mic-btn.recording:after{content:"⏹";color:#fff}.recording-hint{font-size:.875rem;color:var(--text-muted)}.recording-hint .interim{color:var(--text)}.no-voice{font-size:.875rem;color:var(--text-muted)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.7}}.text-input-wrap{display:flex;gap:.5rem;padding:.75rem 1rem;background:var(--surface);border-top:1px solid var(--border)}.text-input{flex:1;padding:.6rem 1rem;border:1px solid var(--border);border-radius:.5rem;background:var(--bg);color:var(--text);font-size:1rem}.text-input:focus{outline:none;border-color:var(--accent)}.text-input:disabled{opacity:.7;cursor:not-allowed}.send-btn{padding:.6rem 1.25rem;background:var(--accent);color:#fff;border:none;border-radius:.5rem;cursor:pointer;font-weight:600}.send-btn:hover:not(:disabled){background:var(--accent-hover)}.send-btn:disabled{opacity:.5;cursor:not-allowed}.quiz-interface{max-width:560px;margin:0 auto;padding:1rem}.quiz-start,.quiz-result,.quiz-review{display:flex;flex-direction:column;align-items:center;gap:1rem}.quiz-time-range{display:flex;align-items:center;gap:.5rem;font-size:.95rem}.quiz-time-range select{padding:.4rem .75rem;border:1px solid var(--border);border-radius:.375rem;background:var(--bg);color:var(--text)}.quiz-desc{color:var(--text-muted);font-size:.95rem;text-align:center;margin:0}.quiz-error{color:var(--recording, #ef4444);font-size:.9rem;margin:0}.quiz-start-btn{padding:.75rem 2rem;font-size:1rem;font-weight:600;background:var(--accent);color:#fff;border:none;border-radius:.5rem;cursor:pointer}.quiz-start-btn:hover:not(:disabled){opacity:.9}.quiz-start-btn:disabled{opacity:.7;cursor:not-allowed}.quiz-back-btn,.quiz-back-btn-small{padding:.5rem 1rem;font-size:.9rem;background:transparent;color:var(--text-muted);border:1px solid var(--border);border-radius:.375rem;cursor:pointer}.quiz-back-btn:hover,.quiz-back-btn-small:hover{color:var(--text)}.quiz-back-btn-small{margin-top:1rem}.quiz-progress{font-size:.9rem;color:var(--text-muted);margin-bottom:1rem}.quiz-question{background:var(--surface);border:1px solid var(--border);border-radius:.75rem;padding:1.25rem}.quiz-sentence{font-size:1.1rem;line-height:1.6;margin:0 0 1.25rem}.quiz-options{display:flex;flex-direction:column;gap:.5rem}.quiz-option{padding:.75rem 1rem;text-align:left;font-size:1rem;border:2px solid var(--border);background:var(--bg);color:var(--text);border-radius:.5rem;cursor:pointer;transition:border-color .15s,background .15s}.quiz-option:hover:not(:disabled){border-color:var(--accent)}.quiz-option:disabled{cursor:default}.quiz-option.correct{border-color:#22c55e;background:#22c55e26;color:#22c55e}.quiz-option.wrong{border-color:#ef4444;background:#ef444426;color:#ef4444}.quiz-next-btn{margin-top:1rem;padding:.6rem 1.5rem;font-size:1rem;background:var(--accent);color:#fff;border:none;border-radius:.5rem;cursor:pointer}.quiz-next-btn:hover{opacity:.9}.quiz-summary{text-align:center;padding:1rem}.quiz-score{font-size:1.25rem;font-weight:600;margin:0 0 .25rem}.quiz-time,.quiz-rate{font-size:.95rem;color:var(--text-muted);margin:0}.quiz-review-btn{padding:.5rem 1rem;background:transparent;color:var(--accent);border:1px solid var(--accent);border-radius:.5rem;cursor:pointer}.quiz-review-btn:hover{background:var(--accent);color:#fff}.quiz-restart-btn{padding:.6rem 1.5rem;background:var(--accent);color:#fff;border:none;border-radius:.5rem;cursor:pointer}.quiz-wrong-list{list-style:none;margin:0;padding:0;width:100%;max-width:400px}.quiz-wrong-item{padding:.75rem 1rem;margin-bottom:.5rem;background:var(--surface);border:1px solid var(--border);border-radius:.5rem;display:flex;flex-direction:column;gap:.25rem}.quiz-wrong-word{font-weight:600;color:#22c55e}.quiz-wrong-selected{font-size:.9rem;color:var(--text-muted)}@media (max-width: 480px){.quiz-interface{padding:.75rem}.quiz-sentence{font-size:1rem}.quiz-option{padding:.65rem .9rem}}.learning-page{padding:1rem;max-width:600px;margin:0 auto}.learning-page h2{margin:0 0 1rem;font-size:1.25rem}.tabs{display:flex;gap:.5rem;margin-bottom:1rem}.tabs button{padding:.5rem 1rem;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:.5rem;cursor:pointer}.tabs button.active{background:var(--accent);border-color:var(--accent);color:#fff}.loading,.empty{color:var(--text-muted)}.card-list,.correction-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}.card-item{padding:.75rem 1rem;background:var(--surface);border:1px solid var(--border);border-radius:.5rem}.card-item .word{font-weight:600}.flashcard-item{display:flex;flex-direction:column;align-items:flex-start;gap:.25rem}.flashcard-main{display:flex;align-items:center;gap:.5rem;width:100%}.flashcard-main .word{flex:1}.flashcard-play{padding:.25rem .5rem;border:1px solid var(--border);background:var(--bg);color:var(--text);border-radius:.4rem;cursor:pointer;font-size:1rem;line-height:1}.flashcard-play:hover{background:var(--surface)}.flashcard-ipa{font-size:.9rem;color:var(--text-muted);font-family:ui-monospace,monospace}.flashcard-zh{font-size:.95rem;color:var(--accent)}.correction-item{padding:.75rem 1rem;background:var(--surface);border:1px solid var(--border);border-radius:.5rem}.correction-item .original{font-size:.875rem;color:var(--text-muted);margin-top:.25rem}.ai-content-by-date{display:flex;flex-direction:column;gap:1.5rem}.ai-content-day h3.ai-content-date{font-size:.9rem;color:var(--text-muted);margin:0 0 .5rem;font-weight:600}.ai-content-item .ai-content-text{white-space:pre-wrap;word-break:break-word}.ai-content-item .ai-content-kind{font-size:.75rem;color:var(--text-muted);margin-top:.25rem;display:block}.rss-fetch{display:flex;gap:.5rem;margin-bottom:1rem}.rss-fetch input{flex:1;padding:.5rem;border:1px solid var(--border);border-radius:.5rem;background:var(--bg);color:var(--text)}.rss-content{font-size:.875rem;color:var(--text-muted);margin:.25rem 0 0}.config-interface{max-width:560px;margin:0 auto;padding:1.5rem 1rem 2rem}.config-title{margin:0 0 .5rem;font-size:1.25rem;font-weight:600}.config-desc{margin:0 0 1.5rem;font-size:.9rem;color:var(--text-muted)}.config-section{margin-bottom:1.5rem}.config-section-title{margin:0 0 .75rem;font-size:.95rem;font-weight:600;color:var(--text)}.config-options{display:flex;flex-wrap:wrap;gap:.5rem}.theme-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:.5rem}.config-option{padding:.6rem 1rem;border:2px solid var(--border);background:var(--surface);color:var(--text);border-radius:.5rem;cursor:pointer;font-size:.9rem;transition:border-color .15s,background .15s}.config-option:hover{border-color:var(--accent);background:var(--bg)}.config-option.selected{border-color:var(--accent);background:var(--surface);color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.config-option-difficulty{flex:1;min-width:120px}.difficulty-row{display:flex;gap:.5rem}.difficulty-row .config-option{flex:1}.config-actions{margin-top:1.5rem;display:flex;flex-direction:column;align-items:center;gap:.5rem}.config-start-btn{padding:.75rem 2rem;font-size:1rem;font-weight:600;border:none;border-radius:.5rem;cursor:pointer;background:var(--accent);color:#fff;transition:opacity .15s,transform .1s}.config-start-btn:hover:not(:disabled){opacity:.9;transform:translateY(-1px)}.config-start-btn:disabled{opacity:.5;cursor:not-allowed}.config-hint{margin:0;font-size:.85rem;color:var(--text-muted)}.app{display:flex;flex-direction:column;min-height:100vh}.header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.5rem;padding:.75rem 1rem;background:var(--surface);border-bottom:1px solid var(--border)}.header h1{margin:0;font-size:1.25rem;font-weight:600}.nav{display:flex;gap:.25rem}.nav button{padding:.35rem .75rem;border:1px solid var(--border);background:transparent;color:var(--text);border-radius:.375rem;cursor:pointer;font-size:.875rem}.nav button.nav-active{background:var(--accent);border-color:var(--accent);color:#fff}.status{font-size:.875rem;padding:.25rem .6rem;border-radius:999px;font-weight:500}.status.recording{background:#ef444433;color:var(--recording)}.status.thinking{background:#f59e0b33;color:var(--thinking)}.chat-toolbar{padding:.5rem 1rem;border-bottom:1px solid var(--border);background:var(--surface)}.new-conversation-btn{padding:.35rem .75rem;font-size:.85rem;border:1px solid var(--border);background:transparent;color:var(--text-muted);border-radius:.375rem;cursor:pointer}.new-conversation-btn:hover{color:var(--text);background:var(--surface)}.input-area{display:flex;flex-direction:column;gap:.5rem;padding:0 1rem 1rem;background:var(--surface)}:root{--bg: #0f1419;--surface: #1a2332;--border: #2d3a4d;--user-bubble: #1e3a5f;--ai-bubble: #1e2d3d;--accent: #3b82f6;--accent-hover: #2563eb;--text: #e2e8f0;--text-muted: #94a3b8;--recording: #ef4444;--thinking: #f59e0b;font-family:Segoe UI,system-ui,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);min-height:100vh}#root{min-height:100vh;display:flex;flex-direction:column}
