*,:before,:after{box-sizing:border-box}:root{--bg:#0f1117;--surface:#1a1d27;--surface2:#22263a;--border:#2e3347;--text:#e2e8f0;--text-muted:#7a8299;--accent:#6366f1;--accent-hover:#818cf8;--danger:#ef4444;--user-bubble:#6366f1;--assistant-bubble:#1e2236;--font:system-ui, "Segoe UI", Roboto, sans-serif}body{font-family:var(--font);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;margin:0;font-size:15px;line-height:1.6}#root{flex-direction:column;height:100dvh;display:flex}button{cursor:pointer;font-family:var(--font)}textarea{font-family:var(--font)}.upload-page{flex:1;justify-content:center;align-items:center;padding:24px;display:flex}.upload-card{background:var(--surface);border:1px solid var(--border);border-radius:16px;flex-direction:column;gap:20px;width:100%;max-width:540px;padding:40px;display:flex}.logo{align-items:center;gap:10px;display:flex}.logo-icon{font-size:26px;line-height:1}.logo-text{color:var(--text);font-size:18px;font-weight:600}.subtitle{color:var(--text-muted);margin:-8px 0 0;font-size:14px}.dropzone{border:2px dashed var(--border);text-align:center;cursor:pointer;background:var(--surface2);border-radius:10px;padding:32px 20px;transition:border-color .2s,background .2s}.dropzone:hover,.dropzone.active{border-color:var(--accent);background:#6366f114}.dropzone-empty{flex-direction:column;align-items:center;gap:6px;display:flex}.dropzone-icon{font-size:32px}.dropzone-label{color:var(--text);margin:0;font-size:15px;font-weight:500}.dropzone-hint{color:var(--text-muted);margin:0;font-size:13px}.dropzone-filled .dropzone-label{color:var(--text);font-size:14px}.dropzone-add{color:var(--text-muted);font-weight:400}.file-list{flex-direction:column;gap:6px;margin:-8px 0 0;padding:0;list-style:none;display:flex}.file-item{background:var(--surface2);border:1px solid var(--border);border-radius:8px;align-items:center;gap:8px;padding:8px 12px;font-size:13px;display:flex}.file-name{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.file-size{color:var(--text-muted);flex-shrink:0}.file-remove{color:var(--text-muted);background:0 0;border:none;border-radius:4px;flex-shrink:0;padding:2px 4px;font-size:14px;line-height:1;transition:color .15s}.file-remove:hover{color:var(--danger)}.address-input{background:var(--surface2);border:1px solid var(--border);color:var(--text);border-radius:8px;outline:none;width:100%;padding:10px 14px;font-size:14px;transition:border-color .2s}.address-input::placeholder{color:var(--text-muted)}.address-input:focus{border-color:var(--accent)}.analyze-btn{background:var(--accent);color:#fff;border:none;border-radius:8px;justify-content:center;align-items:center;gap:8px;padding:12px;font-size:15px;font-weight:600;transition:background .2s,opacity .2s;display:flex}.analyze-btn:hover:not(:disabled){background:var(--accent-hover)}.analyze-btn:disabled{opacity:.45;cursor:not-allowed}.spinner{border:2px solid #ffffff4d;border-top-color:#fff;border-radius:50%;flex-shrink:0;width:16px;height:16px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.error-banner{color:#fca5a5;background:#ef44441f;border:1px solid #ef444459;border-radius:8px;padding:10px 14px;font-size:13px}.chat-page{flex-direction:column;flex:1;min-height:0;display:flex}.chat-header{border-bottom:1px solid var(--border);background:var(--surface);flex-shrink:0;align-items:center;gap:12px;padding:12px 20px;display:flex}.back-btn{border:1px solid var(--border);color:var(--text-muted);background:0 0;border-radius:6px;padding:6px 12px;font-size:13px;transition:color .15s,border-color .15s}.back-btn:hover{color:var(--text);border-color:var(--text-muted)}.chat-header-center{align-items:center;gap:8px;display:flex;overflow:hidden}.header-files{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.messages{flex-direction:column;flex:1;gap:16px;width:100%;max-width:800px;margin:0 auto;padding:24px 20px;display:flex;overflow-y:auto}.message{display:flex}.message-user{justify-content:flex-end}.message-assistant{justify-content:flex-start}.message-bubble{border-radius:12px;max-width:78%;padding:12px 16px;font-size:14px;line-height:1.65}.message-user .message-bubble{background:var(--user-bubble);color:#fff;border-bottom-right-radius:4px}.message-assistant .message-bubble{background:var(--assistant-bubble);border:1px solid var(--border);border-bottom-left-radius:4px}.message-assistant .message-bubble p{margin:0 0 10px}.message-assistant .message-bubble p:last-child{margin-bottom:0}.message-assistant .message-bubble h1,.message-assistant .message-bubble h2,.message-assistant .message-bubble h3{color:var(--text);margin:14px 0 6px;font-size:15px;font-weight:600}.message-assistant .message-bubble ul,.message-assistant .message-bubble ol{margin:6px 0;padding-left:20px}.message-assistant .message-bubble li{margin-bottom:4px}.message-assistant .message-bubble code{background:#ffffff0f;border-radius:4px;padding:1px 5px;font-size:13px}.message-assistant .message-bubble pre code{padding:10px;display:block;overflow-x:auto}.stream-cursor{background:var(--text-muted);vertical-align:text-bottom;width:2px;height:1em;margin-left:2px;animation:.8s step-end infinite blink;display:inline-block}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}.message-bubble.typing{align-items:center;gap:5px;padding:14px 18px;display:flex}.message-bubble.typing span{background:var(--text-muted);border-radius:50%;width:7px;height:7px;animation:1.2s infinite bounce;display:inline-block}.message-bubble.typing span:nth-child(2){animation-delay:.2s}.message-bubble.typing span:nth-child(3){animation-delay:.4s}@keyframes bounce{0%,60%,to{transform:translateY(0)}30%{transform:translateY(-5px)}}.chat-input-row{border-top:1px solid var(--border);background:var(--surface);align-self:stretch;gap:10px;width:100%;max-width:800px;margin:0 auto;padding:16px 20px;display:flex}.chat-input{background:var(--surface2);border:1px solid var(--border);color:var(--text);resize:none;border-radius:10px;outline:none;flex:1;max-height:160px;padding:10px 14px;font-size:14px;line-height:1.5;transition:border-color .2s;overflow-y:auto}.chat-input::placeholder{color:var(--text-muted)}.chat-input:focus{border-color:var(--accent)}.send-btn{background:var(--accent);color:#fff;border:none;border-radius:10px;flex-shrink:0;justify-content:center;align-self:flex-end;align-items:center;width:42px;height:42px;font-size:18px;transition:background .2s,opacity .2s;display:flex}.send-btn:hover:not(:disabled){background:var(--accent-hover)}.send-btn:disabled{opacity:.4;cursor:not-allowed}.stop-btn{background:var(--surface2);color:var(--text);border:1px solid var(--border);border-radius:10px;flex-shrink:0;justify-content:center;align-self:flex-end;align-items:center;width:42px;height:42px;font-size:14px;transition:background .15s,border-color .15s;display:flex}.stop-btn:hover{border-color:var(--danger);color:#fca5a5;background:#ef444426}
