:root{--primary: #7C5CFC;--primary-light: #A78BFA;--primary-gradient: linear-gradient(135deg, #7C5CFC, #A78BFA);--primary-dim: rgba(124, 92, 252, .15);--bg-page: #FFFFFF;--bg-card: #FAFAFA;--bg-chat-ai: #F3F4F6;--bg-chat-user: #EDE9FE;--text-primary: #1F2937;--text-secondary: #6B7280;--text-hint: #9CA3AF;--border: #E5E7EB;--shadow: 0 1px 3px rgba(0,0,0,.1);--shadow-md: 0 4px 12px rgba(0,0,0,.1);--radius: 18px;--radius-sm: 10px;--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-top: env(safe-area-inset-top, 0px)}[data-theme=dark]{--bg-page: #0F172A;--bg-card: #1E293B;--bg-chat-ai: #1E293B;--bg-chat-user: #312E81;--text-primary: #F1F5F9;--text-secondary: #94A3B8;--text-hint: #64748B;--border: #334155}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;font-family:Inter,Noto Sans TC,system-ui,sans-serif;background:var(--bg-page);color:var(--text-primary);overflow:hidden}#app{height:100dvh;display:flex;flex-direction:column;max-width:480px;margin:0 auto;position:relative}.page{display:none;flex-direction:column;height:100%;background:var(--bg-page);animation:fadeIn .2s ease}.page.active{display:flex}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.nav-bar{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;padding-top:calc(12px + var(--safe-top));background:#ffffffd9;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:10}[data-theme=dark] .nav-bar{background:#0f172ad9}.nav-bar h1{font-size:17px;font-weight:600}.nav-actions{display:flex;gap:8px}.icon-btn{width:36px;height:36px;display:flex;align-items:center;justify-content:center;border:none;background:none;cursor:pointer;color:var(--text-secondary);font-size:18px;border-radius:50%;transition:background .15s}.icon-btn:hover{background:var(--primary-dim);color:var(--primary)}#page-start{padding:24px 20px;overflow-y:auto;align-items:center;gap:20px}.avatar-wrap{width:100px;height:100px;border-radius:50%;background:var(--primary-gradient);display:flex;align-items:center;justify-content:center;font-size:52px;box-shadow:0 8px 24px #7c5cfc59;margin-top:12px}.start-title{font-size:22px;font-weight:600;text-align:center}.start-subtitle{color:var(--text-secondary);font-size:14px;text-align:center;margin-top:-12px}.lang-select-wrap{display:flex;align-items:center;gap:12px;padding:12px 16px;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);width:100%}.lang-select-wrap label{color:var(--text-secondary);font-size:14px;flex-shrink:0}.lang-select-wrap select{flex:1;border:none;background:transparent;color:var(--text-primary);font-size:15px;outline:none;cursor:pointer;text-align:right}.history-preview{width:100%;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden}.history-preview-header{padding:10px 16px;font-size:13px;font-weight:600;color:var(--text-secondary);border-bottom:1px solid var(--border);display:flex;justify-content:space-between}.history-preview-item{padding:12px 16px;border-bottom:1px solid var(--border);cursor:pointer;transition:background .15s}.history-preview-item:last-child{border-bottom:none}.history-preview-item:hover{background:var(--primary-dim)}.history-preview-item .title{font-size:14px;font-weight:500}.history-preview-item .meta{font-size:12px;color:var(--text-secondary);margin-top:2px}.history-empty{padding:20px 16px;text-align:center;color:var(--text-hint);font-size:14px}.text-mode-btn{background:none;border:none;cursor:pointer;color:var(--text-secondary);font-size:14px;display:flex;align-items:center;gap:6px;padding:8px}.text-mode-btn:hover{color:var(--primary)}.btn-primary{width:100%;padding:16px;background:var(--primary-gradient);color:#fff;font-size:17px;font-weight:600;border:none;border-radius:var(--radius);cursor:pointer;box-shadow:0 4px 16px #7c5cfc66;transition:transform .15s,box-shadow .15s}.btn-primary:active{transform:scale(.97)}#page-chat{overflow:hidden}.chat-messages{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:12px;scroll-behavior:smooth}.msg{display:flex;flex-direction:column;max-width:85%;animation:msgIn .25s ease}@keyframes msgIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.msg.ai{align-self:flex-start}.msg.user{align-self:flex-end}.msg-bubble{padding:12px 14px;border-radius:var(--radius);font-size:15px;line-height:1.55;position:relative}.msg.ai .msg-bubble{background:var(--bg-chat-ai);border-bottom-left-radius:4px;color:var(--text-primary)}.msg.user .msg-bubble{background:var(--bg-chat-user);border-bottom-right-radius:4px;color:var(--text-primary)}.msg-actions{display:flex;align-items:center;gap:4px;padding:4px 4px 0}.msg.user .msg-actions{justify-content:flex-end}.msg-btn{width:28px;height:28px;display:flex;align-items:center;justify-content:center;border:none;background:none;color:var(--text-secondary);font-size:14px;border-radius:50%;cursor:pointer;transition:background .15s,color .15s}.msg-btn:hover{background:var(--border);color:var(--text-primary)}.feedback-btns{display:flex;gap:2px;margin-left:auto}.feedback-btn.active{color:var(--primary)}.context-menu{position:fixed;background:var(--bg-page);border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden;box-shadow:var(--shadow-md);z-index:100;min-width:180px;animation:fadeIn .15s ease}.context-menu-item{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;cursor:pointer;font-size:15px;border-bottom:1px solid var(--border)}.context-menu-item:last-child{border-bottom:none}.context-menu-item:hover{background:var(--primary-dim)}.context-menu-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:99}.msg-translation{font-size:13px;color:var(--text-secondary);padding:6px 14px 10px;line-height:1.5}.typing-dots{display:flex;gap:4px;padding:4px 0}.typing-dots span{width:7px;height:7px;background:var(--text-hint);border-radius:50%;animation:bounce 1.2s infinite}.typing-dots span:nth-child(2){animation-delay:.2s}.typing-dots span:nth-child(3){animation-delay:.4s}@keyframes bounce{0%,60%,to{transform:translateY(0)}30%{transform:translateY(-6px)}}.chat-input-area{background:var(--bg-page);border-top:1px solid var(--border);padding:12px 16px;padding-bottom:calc(12px + var(--safe-bottom))}.input-record-bar{display:flex;align-items:center;justify-content:space-between}.side-btn{display:flex;flex-direction:column;align-items:center;gap:4px;background:none;border:none;cursor:pointer;color:var(--text-secondary);font-size:22px;padding:8px;border-radius:var(--radius-sm);transition:color .15s;min-width:44px}.side-btn span{font-size:11px;color:var(--text-hint)}.side-btn:hover{color:var(--primary)}.record-btn-wrap{display:flex;flex-direction:column;align-items:center;gap:6px}.record-btn{width:64px;height:64px;border-radius:50%;border:none;cursor:pointer;background:var(--primary-gradient);color:#fff;font-size:26px;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 16px #7c5cfc73;position:relative;transition:transform .15s}.record-btn:active{transform:scale(.94)}.record-btn.recording{background:linear-gradient(135deg,#ef4444,#f87171);box-shadow:0 4px 16px #ef444473;animation:pulse-ring 1.5s infinite}@keyframes pulse-ring{0%{box-shadow:0 0 #ef444480}70%{box-shadow:0 0 0 14px #ef444400}to{box-shadow:0 0 #ef444400}}.record-hint{font-size:11px;color:var(--text-hint)}.input-recording-bar{display:none;flex-direction:column;align-items:center;gap:10px}.recording-timer{display:flex;align-items:center;gap:8px;font-size:14px;color:#ef4444;font-weight:500}.rec-dot{width:8px;height:8px;border-radius:50%;background:#ef4444;animation:blink 1s infinite}@keyframes blink{0%,to{opacity:1}50%{opacity:.3}}.waveform{display:flex;align-items:center;gap:3px;height:32px}.wave-bar{width:3px;border-radius:2px;background:var(--primary);animation:wave .8s ease-in-out infinite}.wave-bar:nth-child(1){height:10px;animation-delay:0s}.wave-bar:nth-child(2){height:20px;animation-delay:.1s}.wave-bar:nth-child(3){height:28px;animation-delay:.2s}.wave-bar:nth-child(4){height:18px;animation-delay:.3s}.wave-bar:nth-child(5){height:24px;animation-delay:.4s}.wave-bar:nth-child(6){height:14px;animation-delay:.5s}.wave-bar:nth-child(7){height:22px;animation-delay:.6s}@keyframes wave{0%,to{transform:scaleY(.6)}50%{transform:scaleY(1)}}.stop-btn{padding:10px 28px;background:#ef4444;color:#fff;font-size:15px;font-weight:500;border:none;border-radius:20px;cursor:pointer;transition:transform .1s}.stop-btn:active{transform:scale(.96)}.input-edit-bar{display:none;flex-direction:column;gap:10px;animation:slideUp .2s ease}@keyframes slideUp{0%{transform:translateY(12px);opacity:0}to{transform:translateY(0);opacity:1}}.edit-textarea{width:100%;min-height:80px;max-height:160px;padding:12px 14px;border:1.5px solid var(--primary);border-radius:var(--radius-sm);background:var(--bg-page);color:var(--text-primary);font-size:16px;line-height:1.5;resize:none;outline:none;font-family:inherit;overflow-y:auto}.edit-textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-dim)}.edit-actions{display:flex;align-items:center;justify-content:space-between;gap:8px}.edit-left-btns{display:flex;gap:8px}.btn-delete{width:44px;height:44px;display:flex;align-items:center;justify-content:center;border:1px solid var(--border);border-radius:50%;background:none;cursor:pointer;color:var(--text-secondary);font-size:18px;transition:all .15s}.btn-delete:hover{border-color:#ef4444;color:#ef4444}.btn-rerecord{width:44px;height:44px;display:flex;align-items:center;justify-content:center;border:1px solid var(--border);border-radius:50%;background:none;cursor:pointer;color:var(--text-secondary);font-size:18px;transition:all .15s}.btn-rerecord:hover{border-color:var(--primary);color:var(--primary)}.btn-send{width:52px;height:52px;display:flex;align-items:center;justify-content:center;background:var(--primary-gradient);border:none;border-radius:50%;cursor:pointer;color:#fff;font-size:22px;box-shadow:0 4px 12px #7c5cfc66;transition:transform .15s;margin-left:auto}.btn-send:active{transform:scale(.94)}.btn-send:disabled{opacity:.5;cursor:not-allowed}#page-history{overflow:hidden}.history-list{flex:1;overflow-y:auto;padding:12px 16px}.history-date-group{margin-bottom:20px}.history-date-label{font-size:12px;color:var(--text-hint);font-weight:600;letter-spacing:.05em;padding:8px 0 6px;text-transform:uppercase}.history-session-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);padding:14px 16px;margin-bottom:8px;cursor:pointer;transition:all .15s;display:flex;align-items:flex-start;justify-content:space-between}.history-session-card:hover{border-color:var(--primary-light);background:var(--primary-dim)}.history-session-info{flex:1}.history-session-title{font-size:15px;font-weight:500}.history-session-meta{font-size:12px;color:var(--text-secondary);margin-top:4px}.history-session-del{width:28px;height:28px;display:flex;align-items:center;justify-content:center;border:none;background:none;cursor:pointer;color:var(--text-hint);font-size:16px;border-radius:50%;flex-shrink:0}.history-session-del:hover{background:#ef44441a;color:#ef4444}.history-empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;height:200px;gap:12px;color:var(--text-hint)}.history-empty-state .icon{font-size:40px}#page-settings{overflow-y:auto}.settings-body{padding:16px;display:flex;flex-direction:column;gap:8px}.settings-section{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden}.settings-section-label{padding:10px 16px;font-size:12px;font-weight:600;letter-spacing:.06em;color:var(--text-secondary);text-transform:uppercase;border-bottom:1px solid var(--border)}.settings-row{display:flex;align-items:center;padding:14px 16px;border-bottom:1px solid var(--border);gap:12px}.settings-row:last-child{border-bottom:none}.settings-row label{font-size:15px;flex:1}.settings-row input[type=text],.settings-row input[type=password]{flex:1;border:1px solid var(--border);border-radius:8px;padding:8px 10px;font-size:14px;background:var(--bg-page);color:var(--text-primary);max-width:200px;text-align:right;outline:none}.settings-row input:focus{border-color:var(--primary)}.settings-row select{border:1px solid var(--border);border-radius:8px;padding:8px 10px;font-size:14px;background:var(--bg-page);color:var(--text-primary);outline:none;cursor:pointer}.toggle-switch{position:relative;width:46px;height:26px}.toggle-switch input{opacity:0;width:0;height:0}.toggle-slider{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--border);border-radius:26px;cursor:pointer;transition:.2s}.toggle-slider:before{content:"";position:absolute;width:20px;height:20px;border-radius:50%;background:#fff;left:3px;bottom:3px;transition:.2s}input:checked+.toggle-slider{background:var(--primary)}input:checked+.toggle-slider:before{transform:translate(20px)}.settings-version{text-align:center;font-size:12px;color:var(--text-hint);padding:16px}.toast{position:fixed;bottom:calc(100px + var(--safe-bottom));left:50%;transform:translate(-50%);background:#1f2937;color:#fff;padding:10px 18px;border-radius:20px;font-size:14px;z-index:200;animation:toastIn .25s ease,toastOut .25s ease 2.5s forwards;white-space:nowrap}@keyframes toastIn{0%{opacity:0;transform:translate(-50%) translateY(12px)}to{opacity:1;transform:translate(-50%) translateY(0)}}@keyframes toastOut{to{opacity:0}}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}.text-input-wrap{display:flex;gap:8px;align-items:flex-end}.text-input{flex:1;padding:12px 14px;border:1.5px solid var(--border);border-radius:var(--radius);background:var(--bg-page);color:var(--text-primary);font-size:15px;font-family:inherit;outline:none;resize:none;min-height:48px;max-height:120px;overflow-y:auto}.text-input:focus{border-color:var(--primary)}
