@import "https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@300;400;500;600&family=Inter:wght@300;400;500;600&display=swap";:root{--bg:#faf9f6;--bg-chat:#f5f3ee;--user-bubble:#93b6ce2e;--user-bubble-text:#3d5a6e;--ai-bubble:#d67e5f26;--ai-bubble-text:#6b4434;--thinking-bg:#d67e5f14;--thinking-border:#d67e5f40;--header-bg:#faf9f6d9;--input-bg:#fff;--input-border:#e0ddd5;--input-focus:#d67e5f66;--text-primary:#3d3833;--text-secondary:#8a8279;--text-muted:#b0a99f;--accent-user:#93b6ce99;--accent-ai:#d67e5f8c;--accent-send:#d67e5f;--shadow-sm:0 1px 3px #0000000a;--shadow-md:0 4px 12px #0000000f;--radius:18px;--radius-sm:12px;--font-sans:"Inter", "Noto Sans SC", system-ui, -apple-system, sans-serif;font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text-primary);height:100dvh;overflow:hidden}#app{background:var(--bg);flex-direction:column;max-width:768px;height:100dvh;margin:0 auto;display:flex}.chat-header{background:var(--header-bg);-webkit-backdrop-filter:blur(20px);z-index:100;border-bottom:1px solid #0000000a;justify-content:space-between;align-items:center;padding:14px 20px;display:flex;position:sticky;top:0}.header-left,.header-right{align-items:center;width:40px;display:flex}.header-right{justify-content:flex-end;gap:8px;width:auto}.header-center{text-align:center;flex:1;position:relative}.header-title{color:var(--text-primary);letter-spacing:1px;font-size:17px;font-weight:500;display:block}.model-selector{cursor:pointer;font-family:var(--font-sans);color:var(--text-muted);background:0 0;border:none;border-radius:6px;align-items:center;gap:3px;margin-top:1px;padding:2px 6px;font-size:11px;transition:color .2s,background .2s;display:inline-flex}.model-selector:hover{color:var(--text-secondary);background:#00000008}.model-selector svg{transition:transform .2s}.model-selector.open svg{transform:rotate(180deg)}.model-picker{background:var(--input-bg);border:1.5px solid var(--input-border);border-radius:var(--radius-sm);box-shadow:var(--shadow-md);opacity:0;visibility:hidden;z-index:150;min-width:200px;transition:opacity .2s,visibility .2s;position:absolute;top:100%;left:50%;overflow:hidden;transform:translate(-50%)translateY(4px)}.model-picker.open{opacity:1;visibility:visible}.model-picker-header{border-bottom:1px solid var(--input-border);justify-content:space-between;align-items:center;padding:8px 12px 6px;display:flex}.model-picker-title{color:var(--text-muted);font-size:11px;font-weight:500}.fetch-models-btn{border:1px solid var(--input-border);font-family:var(--font-sans);color:var(--text-secondary);cursor:pointer;background:0 0;border-radius:6px;align-items:center;gap:4px;padding:3px 8px;font-size:11px;transition:all .15s;display:flex}.fetch-models-btn:hover{border-color:var(--accent-send);color:var(--accent-send);background:#d67e5f14}.fetch-models-btn.loading svg{animation:.8s linear infinite spin}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.model-options-list{max-height:240px;overflow-y:auto}.model-option{width:100%;font-family:var(--font-sans);color:var(--text-primary);cursor:pointer;text-align:left;background:0 0;border:none;padding:10px 16px;font-size:13px;transition:background .15s;display:block}.model-option:hover{background:#00000008}.model-option.active{color:var(--accent-send);font-weight:500}.model-option+.model-option{border-top:1px solid #0000000a}.status-dot{background:#ccc;border-radius:50%;width:8px;height:8px}.status-dot.connected{background:var(--accent-ai);box-shadow:0 0 6px #a3b18a80}.icon-btn{cursor:pointer;color:var(--text-secondary);background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;padding:4px;transition:background .2s;display:flex}.icon-btn:hover{background:#0000000a}.chat-messages{scroll-behavior:smooth;flex-direction:column;flex:1;gap:16px;padding:20px 16px;display:flex;overflow:hidden auto}.chat-messages::-webkit-scrollbar{width:4px}.chat-messages::-webkit-scrollbar-track{background:0 0}.chat-messages::-webkit-scrollbar-thumb{background:#0000001a;border-radius:4px}.message{flex-direction:column;max-width:85%;animation:.3s ease-out messageIn;display:flex}@keyframes messageIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.message.user{align-self:flex-end;align-items:flex-end}.message.assistant{align-self:flex-start;align-items:flex-start}.message-header{align-items:center;gap:8px;margin-bottom:4px;padding:0 4px;display:flex}.avatar{color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:26px;height:26px;font-size:12px;font-weight:600;display:flex}.message.user .avatar{background:var(--accent-user)}.message.assistant .avatar{background:var(--accent-ai)}.avatar.has-image{background:0 0!important}.avatar img{object-fit:cover;border-radius:50%;width:100%;height:100%}.sender-name{color:var(--text-secondary);font-size:12px;font-weight:500}.bubble{word-break:break-word;white-space:pre-wrap;box-shadow:var(--shadow-sm);padding:12px 16px;font-size:15px;line-height:1.6}.message.user .bubble{background:var(--user-bubble);color:var(--user-bubble-text);border-radius:var(--radius) var(--radius) 6px var(--radius)}.message.assistant .bubble{background:var(--ai-bubble);color:var(--ai-bubble-text);border-radius:var(--radius) var(--radius) var(--radius) 6px}.thinking-block{border:1.5px dashed var(--thinking-border);border-radius:var(--radius-sm);background:var(--thinking-bg);margin-bottom:8px;overflow:hidden}.thinking-toggle{cursor:pointer;width:100%;font-family:var(--font-sans);color:var(--text-secondary);letter-spacing:1.5px;text-transform:uppercase;background:0 0;border:none;align-items:center;gap:8px;padding:8px 14px;font-size:12px;font-weight:500;display:flex}.thinking-toggle:hover{background:#00000005}.thinking-toggle .arrow{font-size:10px;transition:transform .2s}.thinking-toggle.open .arrow{transform:rotate(180deg)}.thinking-content{color:var(--text-secondary);white-space:pre-wrap;word-break:break-word;max-height:300px;padding:0 14px 12px;font-size:13px;line-height:1.7;display:none;overflow-y:auto}.thinking-content.show{display:block}.thinking-content::-webkit-scrollbar{width:3px}.thinking-content::-webkit-scrollbar-thumb{background:#0000001a;border-radius:3px}.timestamp{color:var(--text-muted);margin-top:4px;padding:0 4px;font-size:11px}.chat-input-area{background:var(--bg);border-top:1px solid #0000000a;padding:8px 16px 20px;position:relative}.input-wrapper{background:var(--input-bg);border:1.5px solid var(--input-border);border-radius:24px;align-items:flex-end;gap:4px;padding:6px 8px 6px 4px;transition:border-color .2s,box-shadow .2s;display:flex}.input-wrapper:focus-within{border-color:var(--input-focus);box-shadow:0 0 0 3px #c9a8a026}.input-tools{flex-shrink:0;align-items:center;gap:0;display:flex}.tool-btn{width:32px;height:32px;color:var(--text-muted);border-radius:50%;transition:color .2s,background .2s}.tool-btn:hover{color:var(--text-secondary)}.tool-btn.active{color:var(--accent-send);background:#d67e5f1a}.attach-menu{background:var(--input-bg);border:1.5px solid var(--input-border);border-radius:var(--radius-sm);box-shadow:var(--shadow-md);opacity:0;visibility:hidden;z-index:50;margin-bottom:6px;transition:opacity .2s,visibility .2s,transform .2s;position:absolute;bottom:100%;left:16px;overflow:hidden;transform:translateY(4px)}.attach-menu.open{opacity:1;visibility:visible;transform:translateY(0)}.attach-menu-item{width:100%;font-family:var(--font-sans);color:var(--text-primary);cursor:pointer;background:0 0;border:none;align-items:center;gap:10px;padding:10px 16px;font-size:14px;transition:background .15s;display:flex}.attach-menu-item:hover{background:#00000008}.attach-menu-item+.attach-menu-item{border-top:1px solid #0000000a}.toolbar-status{gap:6px;min-height:0;padding:4px 4px 0;display:flex}.toolbar-status:empty{display:none}.status-tag{letter-spacing:.3px;border-radius:10px;align-items:center;gap:4px;padding:2px 8px;font-size:11px;font-weight:500;display:none}.status-tag.visible{display:inline-flex}.thinking-tag{color:var(--accent-send);background:#d67e5f1a}.style-tag{color:#6a8fa8;background:#93b6ce26}.style-picker{background:var(--input-bg);border:1.5px solid var(--input-border);border-radius:var(--radius-sm);box-shadow:var(--shadow-md);opacity:0;visibility:hidden;z-index:50;margin-bottom:6px;transition:opacity .2s,visibility .2s,transform .2s;position:absolute;bottom:100%;left:80px;overflow:hidden;transform:translateY(4px)}.style-picker.open{opacity:1;visibility:visible;transform:translateY(0)}.style-option{width:100%;font-family:var(--font-sans);color:var(--text-primary);cursor:pointer;text-align:left;background:0 0;border:none;padding:9px 20px;font-size:13px;transition:background .15s;display:block}.style-option:hover{background:#00000008}.style-option.active{color:var(--accent-send);font-weight:500}.style-option+.style-option{border-top:1px solid #0000000a}.style-option .delete-style{float:right;cursor:pointer;color:var(--text-muted);opacity:0;background:0 0;border:none;padding:0 2px;font-size:14px;line-height:1;transition:opacity .15s,color .15s}.style-option:hover .delete-style{opacity:1}.style-option .delete-style:hover{color:#c0756a}.style-custom-add{border-top:1px solid #0000000f;align-items:center;gap:4px;padding:6px 8px;display:flex}.custom-style-input{font-family:var(--font-sans);color:var(--text-primary);background:0 0;border:none;outline:none;flex:1;padding:4px 8px;font-size:13px}.custom-style-input::placeholder{color:var(--text-muted)}.custom-style-add-btn{cursor:pointer;width:28px;height:28px;color:var(--text-muted);background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;transition:color .2s,background .2s;display:flex}.custom-style-add-btn:hover{color:var(--accent-send);background:#d67e5f1a}.style-options-list{max-height:200px;overflow-y:auto}#messageInput{font-family:var(--font-sans);color:var(--text-primary);resize:none;background:0 0;border:none;outline:none;flex:1;max-height:120px;padding:8px 0;font-size:15px;line-height:1.5}#messageInput::placeholder{color:var(--text-muted)}.send-btn{background:var(--accent-send);color:#fff;cursor:pointer;opacity:.5;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;transition:background .2s,opacity .2s,transform .15s;display:flex}.send-btn:not(:disabled){opacity:1}.send-btn:not(:disabled):hover{background:#c4704f;transform:scale(1.05)}.send-btn:disabled{cursor:default}.typing-indicator{align-items:center;gap:4px;padding:12px 16px;display:flex}.typing-indicator span{background:var(--accent-ai);opacity:.4;border-radius:50%;width:6px;height:6px;animation:1.4s infinite typing}.typing-indicator span:nth-child(2){animation-delay:.2s}.typing-indicator span:nth-child(3){animation-delay:.4s}@keyframes typing{0%,60%,to{opacity:.4;transform:translateY(0)}30%{opacity:1;transform:translateY(-4px)}}.welcome{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:12px;padding:40px 20px;display:flex}.welcome-icon{margin-bottom:8px;font-size:48px}.welcome h2{color:var(--text-primary);margin:0;font-size:22px;font-weight:500}.welcome p{color:var(--text-secondary);max-width:300px;font-size:14px;line-height:1.6}.chat-messages.has-bg{background-position:50%;background-repeat:no-repeat;background-size:cover}.settings-overlay{z-index:200;opacity:0;visibility:hidden;background:#0000004d;transition:opacity .25s,visibility .25s;position:fixed;inset:0}.settings-overlay.open{opacity:1;visibility:visible}.settings-panel{background:var(--bg);z-index:201;flex-direction:column;width:320px;max-width:85vw;transition:transform .3s cubic-bezier(.4,0,.2,1);display:flex;position:fixed;top:0;bottom:0;right:0;transform:translate(100%);box-shadow:-4px 0 20px #00000014}.settings-panel.open{transform:translate(0)}.settings-header{border-bottom:1px solid #0000000f;justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.settings-header h3{color:var(--text-primary);font-size:16px;font-weight:500}.settings-body{flex-direction:column;flex:1;gap:24px;padding:20px;display:flex;overflow-y:auto}.settings-section h4{color:var(--text-secondary);text-transform:uppercase;letter-spacing:1px;margin-bottom:12px;font-size:13px;font-weight:500}.avatar-setting{align-items:center;gap:14px;display:flex}.avatar-preview{color:#fff;cursor:pointer;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:48px;height:48px;font-size:18px;font-weight:600;transition:transform .15s;display:flex;overflow:hidden}.avatar-preview:hover{transform:scale(1.08)}.avatar-preview.user-avatar{background:var(--accent-user)}.avatar-preview.ai-avatar{background:var(--accent-ai)}.avatar-preview img{object-fit:cover;width:100%;height:100%}.avatar-info{flex-direction:column;gap:2px;display:flex}.avatar-info .label{color:var(--text-primary);font-size:14px;font-weight:500}.avatar-info .hint{color:var(--text-muted);font-size:12px}.bg-setting{flex-direction:column;gap:10px;display:flex}.bg-preview{border-radius:var(--radius-sm);border:1.5px dashed var(--input-border);cursor:pointer;background:var(--bg-chat);justify-content:center;align-items:center;width:100%;height:100px;transition:border-color .2s;display:flex;overflow:hidden}.bg-preview:hover{border-color:var(--accent-send)}.bg-preview img{object-fit:cover;width:100%;height:100%}.bg-preview .placeholder{color:var(--text-muted);font-size:13px}.bg-actions{gap:8px;display:flex}.settings-btn{border:1.5px solid var(--input-border);font-family:var(--font-sans);color:var(--text-secondary);cursor:pointer;background:0 0;border-radius:20px;flex:1;padding:8px 12px;font-size:13px;transition:all .2s}.settings-btn:hover{border-color:var(--accent-send);color:var(--accent-send)}.settings-btn.danger{color:#c0756a;border-color:#0000}.settings-btn.danger:hover{background:#c0756a14}input[type=file].hidden-input{display:none}.mode-toggle{border:1.5px solid var(--input-border);border-radius:20px;gap:0;display:flex;overflow:hidden}.mode-btn{font-family:var(--font-sans);color:var(--text-secondary);cursor:pointer;background:0 0;border:none;flex:1;padding:8px 12px;font-size:13px;transition:all .2s}.mode-btn.active{background:var(--accent-send);color:#fff}.mode-hint{color:var(--text-muted);margin-top:6px;padding:0 2px;font-size:11px}.settings-text-input{border:1.5px solid var(--input-border);width:100%;font-family:var(--font-sans);color:var(--text-primary);background:0 0;border-radius:10px;outline:none;padding:8px 12px;font-size:13px;transition:border-color .2s}.settings-text-input:focus{border-color:var(--accent-send)}.settings-text-input::placeholder{color:var(--text-muted)}.slider-setting{align-items:center;gap:12px;display:flex}.settings-slider{appearance:none;background:var(--input-border);border-radius:2px;outline:none;flex:1;height:4px}.settings-slider::-webkit-slider-thumb{-webkit-appearance:none;background:var(--accent-send);cursor:pointer;border-radius:50%;width:18px;height:18px;box-shadow:0 1px 4px #00000026}.settings-slider.short{max-width:100px}.slider-value{color:var(--text-secondary);text-align:right;min-width:36px;font-size:13px;font-weight:500}.color-setting{flex-direction:column;gap:10px;display:flex}.color-row{align-items:center;gap:10px;display:flex}.color-row .label{color:var(--text-primary);min-width:70px;font-size:14px}.color-picker{appearance:none;border:2px solid var(--input-border);cursor:pointer;border-radius:50%;width:32px;height:32px;padding:0;overflow:hidden}.color-picker::-webkit-color-swatch-wrapper{padding:0}.color-picker::-webkit-color-swatch{border:none;border-radius:50%}.custom-css-setting{flex-direction:column;gap:10px;display:flex}.css-editor{border:1.5px solid var(--input-border);border-radius:var(--radius-sm);width:100%;min-height:120px;max-height:200px;color:var(--text-primary);resize:vertical;background:#00000005;outline:none;padding:12px;font-family:SF Mono,Fira Code,Cascadia Code,ui-monospace,monospace;font-size:12px;line-height:1.6;transition:border-color .2s}.css-editor:focus{border-color:var(--accent-send)}.css-editor::placeholder{color:var(--text-muted);font-size:12px}@media (width<=480px){.chat-header{padding:12px 16px}.message{max-width:90%}.bubble{padding:10px 14px;font-size:14px}}
