*{margin:0;padding:0;box-sizing:border-box}:root{--bg: #0f0f0f;--bg-elevated: #1a1a1a;--bg-hover: #242424;--bg-active: #2a2a2a;--border: #2a2a2a;--text: #e8e8e8;--text-secondary: #888;--text-muted: #555;--accent: #8b93a7;--accent-dim: #8b93a722;--accent-hover: #a3aab9;--green: #00c853;--red: #ff4444;--radius: 12px;--radius-sm: 8px;--sidebar-width: 260px;--font: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Helvetica Neue", sans-serif;--font-mono: "SF Mono", "Fira Code", "Cascadia Code", monospace}html{height:100%}body{height:100%;width:100%;font-family:var(--font);background:var(--bg);color:var(--text);display:flex}.sidebar{width:var(--sidebar-width);background:var(--bg-elevated);border-right:1px solid var(--border);display:flex;flex-direction:column;flex-shrink:0}.sidebar-header{display:flex;align-items:center;gap:10px;padding:16px 16px 12px}.logo{font-size:28px}.logo-text{display:flex;flex-direction:column}.logo-name{font-size:15px;font-weight:600}.logo-sub{font-size:11px;color:var(--text-secondary)}.new-chat-btn{display:flex;align-items:center;gap:8px;margin:4px 12px 8px;padding:10px 14px;background:transparent;border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font-size:13px;cursor:pointer;transition:all .15s}.new-chat-btn:hover{background:var(--bg-hover);border-color:var(--accent);color:var(--accent)}.chat-history{flex:1;overflow-y:auto;padding:4px 8px}.chat-history::-webkit-scrollbar{width:4px}.chat-history::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}.history-item{display:flex;align-items:center;padding:8px 10px;border-radius:var(--radius-sm);cursor:pointer;font-size:13px;color:var(--text-secondary);transition:all .1s;gap:6px;position:relative}.history-item:hover{background:var(--bg-hover);color:var(--text)}.history-item.active{background:var(--bg-active);color:var(--text)}.history-item .history-title{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.history-item .history-delete{display:none;background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:14px;padding:0 2px}.history-item:hover .history-delete{display:block}.history-item .history-delete:hover{color:var(--red)}.sidebar-footer{border-top:1px solid var(--border);padding:8px}.settings-toggle{display:flex;align-items:center;gap:8px;width:100%;padding:10px 12px;background:transparent;border:none;border-radius:var(--radius-sm);color:var(--text-secondary);font-size:13px;cursor:pointer;transition:all .1s}.settings-toggle:hover{background:var(--bg-hover);color:var(--text)}.main{flex:1;display:flex;flex-direction:column;min-width:0}.welcome{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 20px;text-align:center}.welcome-avatar{font-size:64px;margin-bottom:16px}.welcome h1{font-size:28px;font-weight:600;margin-bottom:8px}.welcome .accent{color:var(--accent)}.welcome-desc{color:var(--text-secondary);font-size:15px;margin-bottom:32px;max-width:400px}.quick-prompts{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;max-width:600px}.quick-prompt{padding:10px 18px;background:var(--bg-elevated);border:1px solid var(--border);border-radius:20px;color:var(--text-secondary);font-size:13px;cursor:pointer;transition:all .15s}.quick-prompt:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-dim)}.chat-area{flex:1;overflow-y:auto;padding:20px 0;display:flex;flex-direction:column}.chat-area::-webkit-scrollbar{width:6px}.chat-area::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}.chat-messages{max-width:100%;width:100%;margin:0 auto;padding:0 48px;flex:1}.message{display:flex;gap:12px;margin-bottom:24px;animation:fadeIn .2s ease;width:100%}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.message-avatar{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:16px;flex-shrink:0}.message.user .message-avatar{background:#333}.message.assistant .message-avatar{background:var(--accent-dim)}.message-content{flex:1;min-width:0;font-size:14.5px;line-height:1.7}.message.user .message-content,.message.assistant .message-content{color:var(--text)}.message-content h1,.message-content h2,.message-content h3{margin:16px 0 8px;font-weight:600}.message-content h1{font-size:20px}.message-content h2{font-size:17px}.message-content h3{font-size:15px}.message-content p{margin:6px 0}.message-content ul,.message-content ol{padding-left:20px;margin:6px 0}.message-content li{margin:3px 0}.message-content code{background:var(--bg-hover);padding:1px 5px;border-radius:4px;font-family:var(--font-mono);font-size:13px}.message-content pre{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-sm);padding:14px;margin:10px 0;overflow-x:auto;position:relative}.message-content pre code{background:none;padding:0;font-size:13px;line-height:1.5}.message-content blockquote{border-left:3px solid var(--accent);padding-left:12px;color:var(--text-secondary);margin:10px 0}.message-content table{border-collapse:collapse;margin:10px 0;width:100%}.message-content th,.message-content td{border:1px solid var(--border);padding:6px 10px;text-align:left;font-size:13px}.message-content th{background:var(--bg-hover);font-weight:600}.message-content a{color:var(--accent);text-decoration:none}.message-content a:hover{text-decoration:underline}.message-content strong{color:#fff}.message-content hr{border:none;border-top:1px solid var(--border);margin:16px 0}.streaming-cursor:after{content:"▊";animation:blink .8s infinite;color:var(--accent);margin-left:2px}@keyframes blink{0%,50%{opacity:1}51%,to{opacity:0}}.message-files{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.file-tag{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;background:var(--bg-hover);border-radius:12px;font-size:12px;color:var(--text-secondary)}.input-area{padding:12px 48px 16px;max-width:100%;margin:0 auto;width:100%;flex-shrink:0}.file-preview{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.file-preview:empty{display:none}.file-chip{display:flex;align-items:center;gap:6px;padding:5px 10px;background:var(--bg-elevated);border:1px solid var(--border);border-radius:16px;font-size:12px;color:var(--text-secondary)}.file-chip .remove-file{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:14px;line-height:1}.file-chip .remove-file:hover{color:var(--red)}.input-row{display:flex;align-items:flex-end;gap:8px;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);padding:6px 8px;transition:border-color .15s}.input-row:focus-within{border-color:var(--accent)}.icon-btn{width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:none;border:none;color:var(--text-muted);cursor:pointer;border-radius:8px;flex-shrink:0;transition:all .1s}.icon-btn:hover{color:var(--text);background:var(--bg-hover)}.chat-input{flex:1;background:none;border:none;outline:none;color:var(--text);font-size:14px;font-family:var(--font);line-height:1.5;resize:none;min-height:36px;max-height:160px;padding:6px 0}.chat-input::placeholder{color:var(--text-muted)}.send-btn{width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:var(--accent);border:none;border-radius:8px;color:#fff;cursor:pointer;flex-shrink:0;transition:all .15s}.send-btn:disabled{opacity:.3;cursor:default}.send-btn:not(:disabled):hover{background:var(--accent-hover);transform:scale(1.05)}.input-hint{text-align:center;font-size:11px;color:var(--text-muted);margin-top:6px}.settings-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:100;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:fadeIn .15s}.settings-panel{width:460px;max-height:80vh;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);display:flex;flex-direction:column}.settings-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border)}.settings-header h2{font-size:16px;font-weight:600}.settings-body{padding:20px;overflow-y:auto}.setting-group{margin-bottom:16px}.setting-group label{display:block;font-size:13px;font-weight:500;margin-bottom:6px;color:var(--text-secondary)}.setting-group input{width:100%;padding:9px 12px;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font-size:13px;font-family:var(--font-mono);outline:none;transition:border-color .15s}.setting-group input:focus{border-color:var(--accent)}.setting-hint{font-size:11px;color:var(--text-muted);margin-top:4px;display:block}.preset-row{display:flex;gap:6px;flex-wrap:wrap}.preset-btn{padding:6px 14px;background:var(--bg);border:1px solid var(--border);border-radius:16px;color:var(--text-secondary);font-size:12px;cursor:pointer;transition:all .15s}.preset-btn:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-dim)}.setting-row{display:flex;gap:12px}.setting-group.half{flex:1}.test-btn{width:100%;padding:10px;background:var(--accent);border:none;border-radius:var(--radius-sm);color:#fff;font-size:13px;font-weight:500;cursor:pointer;transition:background .15s}.test-btn:hover{background:var(--accent-hover)}.test-result{margin-top:10px;font-size:13px;text-align:center;min-height:20px}.drag-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#ff1b6d14;border:2px dashed var(--accent);z-index:50;display:flex;align-items:center;justify-content:center;font-size:18px;color:var(--accent);pointer-events:none}.hidden{display:none!important}.loading-dots{display:inline-flex;gap:4px}.loading-dots span{width:6px;height:6px;background:var(--accent);border-radius:50%;animation:dotPulse 1.2s infinite}.loading-dots span:nth-child(2){animation-delay:.2s}.loading-dots span:nth-child(3){animation-delay:.4s}@keyframes dotPulse{0%,80%,to{opacity:.3;transform:scale(.8)}40%{opacity:1;transform:scale(1)}}.stop-btn{display:flex;align-items:center;gap:6px;margin:8px auto 0;padding:6px 16px;background:var(--bg-elevated);border:1px solid var(--border);border-radius:16px;color:var(--text-secondary);font-size:12px;cursor:pointer;transition:all .15s}.stop-btn:hover{border-color:var(--red);color:var(--red)}.sidebar-header{position:relative}.soul-avatar img,.logo img{width:100%;height:100%;object-fit:cover;border-radius:inherit;display:block}.logo{overflow:hidden;border-radius:9px;width:34px;height:34px;display:flex;align-items:center;justify-content:center;font-size:22px;flex-shrink:0}.welcome-avatar img{width:100%;height:100%;object-fit:cover;border-radius:50%;display:block}.welcome-avatar{width:84px;height:84px;overflow:hidden;display:flex;align-items:center;justify-content:center;font-size:64px;flex-shrink:0}.soul-switch{margin-left:auto;width:26px;height:26px;display:flex;align-items:center;justify-content:center;background:none;border:1px solid var(--border);border-radius:7px;color:var(--text-muted);cursor:pointer;transition:all .15s;flex-shrink:0}.soul-switch:hover{color:var(--accent);border-color:var(--accent);background:var(--accent-dim)}.sidebar-footer{display:flex;flex-direction:column;gap:2px}.soul-badge{margin-top:22px;font-size:11.5px;color:var(--text-muted);display:flex;gap:8px;flex-wrap:wrap;justify-content:center;max-width:620px}.soul-badge span{padding:3px 9px;border:1px solid var(--border);border-radius:99px;background:var(--bg-elevated)}.soul-badge span.warn{border-color:#6b5a2a;color:#d9b962}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000009e;display:flex;align-items:center;justify-content:center;z-index:100;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);padding:24px;animation:fadeIn .15s}.panel{width:480px;max-width:100%;max-height:86vh;background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;display:flex;flex-direction:column}.panel.wide{width:640px}.panel-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border);flex-shrink:0}.panel-header h2{font-size:16px;font-weight:600}.panel-body{padding:20px;overflow-y:auto}.panel-body::-webkit-scrollbar{width:6px}.panel-body::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}.close-btn{background:none;border:none;color:var(--text-secondary);font-size:22px;cursor:pointer;line-height:1}.close-btn:hover{color:var(--text)}.group{margin-bottom:16px}.group label{display:block;font-size:13px;font-weight:500;margin-bottom:6px;color:var(--text-secondary)}.group input[type=text],.group input[type=password],.group input[type=number]{width:100%;padding:9px 12px;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font-size:13px;font-family:var(--font-mono);outline:none;transition:border-color .15s}.group input:focus{border-color:var(--accent)}.hint{font-size:11px;color:var(--text-muted);margin-top:5px;display:block;line-height:1.6}.row{display:flex;gap:12px}.group.half{flex:1}.sep{border:none;border-top:1px solid var(--border);margin:20px 0}.sub-title{font-size:14px;margin-bottom:12px;font-weight:600}.check-row{display:flex;align-items:center;gap:9px;font-size:13px;color:var(--text);cursor:pointer;margin-bottom:6px}.check-row input{accent-color:var(--accent);width:15px;height:15px;cursor:pointer}.primary-btn{width:100%;padding:10px;background:var(--accent);border:none;border-radius:var(--radius-sm);color:#fff;font-size:13px;font-weight:500;cursor:pointer;transition:background .15s}.primary-btn:hover{background:var(--accent-hover)}.primary-btn:disabled{opacity:.5;cursor:default}.ghost-btn{width:100%;padding:10px;background:none;border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-secondary);font-size:13px;cursor:pointer;transition:all .15s}.ghost-btn:hover{border-color:var(--accent);color:var(--accent)}.test-result{margin-top:10px;font-size:13px;text-align:center;min-height:20px;line-height:1.6}.test-result.success{color:var(--green)}.test-result.error{color:var(--red)}.drop-zone{border:2px dashed var(--border);border-radius:var(--radius);padding:36px 24px;text-align:center;transition:all .18s;background:var(--bg)}.drop-zone.over{border-color:var(--accent);background:var(--accent-dim)}.dz-icon{font-size:40px;margin-bottom:12px}.dz-title{font-size:15px;font-weight:600;margin-bottom:8px}.dz-desc{font-size:12.5px;color:var(--text-secondary);line-height:1.75;margin-bottom:18px}.dz-desc b{color:var(--text)}.drop-zone .primary-btn{width:auto;padding:9px 26px}.import-result{margin-top:20px}.ir-card{border:1px solid var(--border);border-radius:var(--radius-sm);padding:14px 16px;margin-bottom:12px;background:var(--bg)}.ir-head{display:flex;align-items:center;gap:10px;margin-bottom:12px}.ir-name{font-size:14.5px;font-weight:600}.ir-prof{font-size:11.5px;color:var(--text-secondary)}.ir-stats{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:12px}.ir-stats span{font-size:11px;padding:3px 9px;border-radius:99px;background:var(--bg-hover);color:var(--text-secondary)}.ir-flags{font-size:12px;line-height:1.9}.ir-flags .fl{display:flex;gap:7px;align-items:flex-start;margin-bottom:4px}.ir-flags .fl-i{flex-shrink:0;width:15px;text-align:center}.fl-missing{color:#d9b962}.fl-guessed{color:#7eb8e0}.fl-extra{color:var(--text-secondary)}.fl-unknown{color:var(--text-muted)}.fl-warning{color:#e08a7e}.ir-actions{display:flex;gap:8px;margin-top:16px}.ir-actions button{flex:1}.soul-list{display:flex;flex-direction:column;gap:10px}.soul-item{display:flex;align-items:center;gap:13px;padding:13px 15px;border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;transition:all .15s;background:var(--bg)}.soul-item:hover{border-color:var(--accent);background:var(--bg-hover)}.soul-item.active{border-color:var(--accent);background:var(--accent-dim)}.soul-avatar{width:40px;height:40px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:20px;background:var(--bg-hover);overflow:hidden}.soul-meta{flex:1;min-width:0}.soul-meta .n{font-size:14px;font-weight:600;margin-bottom:3px}.soul-meta .p{font-size:11.5px;color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.soul-tag{font-size:10px;padding:2px 7px;border-radius:99px;background:var(--bg-hover);color:var(--text-muted);flex-shrink:0}.soul-del{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:15px;padding:2px 5px;flex-shrink:0}.soul-del:hover{color:var(--red)}.review-sec{margin-bottom:18px}.review-sec h4{font-size:12px;text-transform:uppercase;letter-spacing:.7px;color:var(--text-muted);margin-bottom:9px;font-weight:600}.review-sec pre{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px;font-size:11.5px;font-family:var(--font-mono);white-space:pre-wrap;word-break:break-word;max-height:190px;overflow-y:auto;color:var(--text-secondary);line-height:1.65;margin:0}.bar-row{display:flex;align-items:center;gap:10px;margin-bottom:6px;font-size:12px}.bar-row .bl{width:76px;color:var(--text-secondary);flex-shrink:0}.bar-row .bt{flex:1;height:14px;background:var(--bg);border-radius:4px;overflow:hidden;border:1px solid var(--border)}.bar-row .bf{height:100%;background:var(--accent);opacity:.55}.bar-row .bv{width:74px;text-align:right;color:var(--text-muted);font-size:11px;flex-shrink:0}.toast-wrap{position:fixed;bottom:26px;left:50%;transform:translate(-50%);z-index:300;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none}.toast{padding:10px 20px;border-radius:99px;background:#2a2a2a;color:var(--text);font-size:13px;border:1px solid var(--border);box-shadow:0 6px 24px #00000073;animation:toastIn .2s ease;max-width:70vw;text-align:center}.toast.ok{border-color:#2e6b3f}.toast.err{border-color:#6b2e2e}@keyframes toastIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.msg-img{max-width:320px;max-height:240px;border-radius:var(--radius-sm);border:1px solid var(--border);margin-top:6px;display:block}.hist-empty{padding:18px 12px;text-align:center;font-size:12px;color:var(--text-muted)}@media(max-width:860px){:root{--sidebar-width: 0px}.sidebar{display:none}.chat-messages{padding:0 18px}.input-area{padding:12px 18px 16px}.panel,.panel.wide{width:100%}}
