*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Segoe UI,Inter,sans-serif;font-size:15px;color:#e8e8e8;background:#0e0e0e;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#app{height:100%;display:flex;flex-direction:column}:root{--grad-main: linear-gradient(135deg, #6b5ce7 0%, #c85dbb 55%, #f0714a 100%);--grad-btn: linear-gradient(135deg, #6b5ce7 0%, #c85dbb 60%, #f0714a 100%);--bg-app: #141414;--bg-chat: #0e0e0e;--bg-card: #1c1c1c;--bg-input: #1a1a1a;--border: rgba(255,255,255,.07);--text-main: #e8e8e8;--text-sub: #888888;--text-dim: #555555;--accent: #6b5ce7}.app-wrapper{display:flex;flex-direction:column;height:100vh;height:100dvh;max-width:860px;margin:0 auto;width:100%;background:var(--bg-app);box-shadow:0 0 80px #6b5ce71f;position:relative;overflow:hidden}.header{background:#141414;border-bottom:1px solid var(--border);padding:0 20px;flex-shrink:0;position:relative;overflow:hidden}.header:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:var(--grad-main)}.header:after{content:"";position:absolute;top:-60px;right:-40px;width:200px;height:200px;background:radial-gradient(circle,rgba(200,93,187,.08) 0%,transparent 65%);pointer-events:none}.header-inner{display:flex;align-items:center;justify-content:space-between;height:62px;gap:12px;position:relative;z-index:1}.header-brand{display:flex;align-items:center;gap:12px}.header-logo-wrap{width:36px;height:36px;border-radius:10px;background:#1a1a1a;overflow:hidden;display:flex;align-items:center;justify-content:center;box-shadow:0 0 16px #6b5ce766;flex-shrink:0;position:relative}.header-logo-img{width:100%;height:100%;object-fit:cover;border-radius:10px}.header-title{font-size:16px;font-weight:700;letter-spacing:.2px;line-height:1.3;color:var(--text-main)}.header-badge{display:inline-flex;align-items:center;gap:5px;margin-top:2px}.badge-dot{width:6px;height:6px;border-radius:50%;background:#4ade80;box-shadow:0 0 8px #4ade80cc;animation:pulse 2.5s infinite}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(.8)}}.badge-text{font-size:11px;color:var(--text-sub);letter-spacing:.3px}.btn-new{display:flex;align-items:center;gap:6px;background:#ffffff0d;color:var(--text-sub);border:1px solid var(--border);border-radius:22px;padding:7px 16px;font-size:13px;font-weight:500;cursor:pointer;white-space:nowrap;transition:all .2s;flex-shrink:0}.btn-new:hover{background:#6b5ce726;border-color:#6b5ce766;color:#c8b8ff;transform:translateY(-1px)}.btn-new:active{transform:translateY(0)}.chat-main{flex:1;overflow-y:auto;padding:24px 20px;scroll-behavior:smooth;background:var(--bg-chat)}.message-list{display:flex;flex-direction:column;gap:20px;min-height:100%}.welcome{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:52px 24px;text-align:center;flex:1;animation:fadeInUp .5s ease}@keyframes fadeInUp{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}.welcome-logo{width:76px;height:76px;border-radius:22px;background:#111;overflow:hidden;display:flex;align-items:center;justify-content:center;box-shadow:0 0 40px #6b5ce759,0 8px 24px #0006;margin-bottom:4px;position:relative}.welcome-logo:after{content:"";position:absolute;top:-8px;right:-8px;bottom:-8px;left:-8px;border-radius:30px;background:var(--grad-main);opacity:.12;filter:blur(10px);pointer-events:none}.welcome-logo-img{width:100%;height:100%;object-fit:cover;border-radius:22px}.welcome-title{font-size:22px;font-weight:800;color:var(--text-main);letter-spacing:-.3px}.welcome-divider{width:40px;height:2px;background:var(--grad-main);border-radius:2px;margin:2px 0}.welcome-desc{font-size:14px;color:var(--text-sub);max-width:400px;line-height:1.85}.welcome-hints{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-top:8px;max-width:520px}.hint-item{background:var(--bg-card);color:#bbb;border:1px solid rgba(255,255,255,.08);border-radius:24px;padding:9px 18px;font-size:13px;font-weight:500;cursor:pointer;transition:all .22s cubic-bezier(.4,0,.2,1)}.hint-item:hover{background:#6b5ce733;color:#d4c8ff;border-color:#6b5ce773;transform:translateY(-2px);box-shadow:0 4px 16px #6b5ce733}.message-row{display:flex;align-items:flex-end;gap:10px;animation:messageIn .28s ease}@keyframes messageIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.row-user{flex-direction:row-reverse}.row-assistant{flex-direction:row}.avatar{flex-shrink:0;width:34px;height:34px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:18px;line-height:1}.assistant-avatar{background:#111;overflow:hidden;box-shadow:0 0 12px #6b5ce74d}.avatar-logo-img{width:100%;height:100%;object-fit:cover;border-radius:10px}.user-avatar{background:#222;border:1px solid rgba(255,255,255,.1);font-size:16px}.bubble{max-width:72%;border-radius:18px;padding:13px 17px;line-height:1.75;word-break:break-word;position:relative}.bubble-user{background:#252525;color:var(--text-main);border:1px solid rgba(255,255,255,.09);border-bottom-right-radius:5px}.bubble-assistant{background:var(--bg-card);color:var(--text-main);border:1px solid rgba(255,255,255,.07);border-bottom-left-radius:5px;box-shadow:0 2px 12px #0000004d}.user-text{white-space:pre-wrap;font-size:14px;line-height:1.7}.markdown-body{font-size:14px;line-height:1.8;color:#d4d4d4}.markdown-body p{margin:0 0 10px}.markdown-body p:last-child{margin-bottom:0}.markdown-body h1,.markdown-body h2,.markdown-body h3{font-weight:700;margin:16px 0 8px;line-height:1.4}.markdown-body h1{font-size:18px;color:#f0f0f0;border-bottom:1px solid rgba(255,255,255,.08);padding-bottom:8px}.markdown-body h2{font-size:16px;color:#e8e8e8}.markdown-body h3{font-size:15px;color:#d4d4d4}.markdown-body ul,.markdown-body ol{padding-left:20px;margin:8px 0}.markdown-body li{margin:5px 0;color:#c8c8c8}.markdown-body code{background:#6b5ce726;border:1px solid rgba(107,92,231,.25);border-radius:5px;padding:2px 6px;font-family:Fira Code,JetBrains Mono,Courier New,monospace;font-size:12.5px;color:#c8b8ff}.markdown-body pre{background:#111;border:1px solid rgba(255,255,255,.06);border-radius:10px;padding:14px 16px;overflow-x:auto;margin:10px 0}.markdown-body pre code{background:none;border:none;padding:0;font-size:13px;color:#e2e8f0}.markdown-body blockquote{border-left:3px solid #6b5ce7;background:#6b5ce714;padding:10px 14px;margin:10px 0;border-radius:0 8px 8px 0;color:#aaa;font-style:italic}.markdown-body a{color:#a89cf7;text-decoration:none;border-bottom:1px solid transparent;transition:border-color .2s,color .2s}.markdown-body a:hover{color:#c8b8ff;border-bottom-color:#a89cf7}.markdown-body strong{font-weight:700;color:#f0f0f0}.markdown-body em{color:#aaa}.markdown-body hr{border:none;border-top:1px solid rgba(255,255,255,.07);margin:14px 0}.markdown-body table{width:100%;border-collapse:collapse;margin:10px 0;font-size:13px;border-radius:8px;overflow:hidden;border:1px solid rgba(255,255,255,.07)}.markdown-body th{background:linear-gradient(135deg,#6b5ce7,#c85dbb);color:#fff;padding:9px 12px;text-align:left;font-weight:600;font-size:12.5px;letter-spacing:.2px}.markdown-body td{border-bottom:1px solid rgba(255,255,255,.05);padding:8px 12px;color:#c8c8c8}.markdown-body tr:last-child td{border-bottom:none}.markdown-body tr:nth-child(2n) td{background:#ffffff05}.markdown-body tr:hover td{background:#6b5ce714}.typing-cursor{display:inline-block;color:#c85dbb;animation:blink .8s step-end infinite;font-size:14px;vertical-align:middle;margin-left:2px}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}.thinking-dots{color:#999;font-size:14px;animation:thinkingPulse 1.4s ease-in-out infinite}@keyframes thinkingPulse{0%,to{opacity:.4}50%{opacity:1}}.error-bar{display:flex;align-items:center;gap:8px;background:#f0714a1a;border:1px solid rgba(240,113,74,.25);border-radius:12px;color:#f09274;font-size:13px;padding:10px 16px;text-align:center;justify-content:center}.session-tip{background:#c85dbb14;border-top:1px solid rgba(200,93,187,.15);color:#b08abf;font-size:12px;text-align:center;padding:6px 16px;letter-spacing:.02em}.copy-report-bar{display:flex;align-items:center;gap:10px;margin-top:10px;flex-wrap:wrap}.btn-copy-report{background:linear-gradient(135deg,#c85dbb,#7b5cf5);color:#fff;border:none;border-radius:8px;padding:7px 16px;font-size:13px;cursor:pointer;transition:opacity .2s;white-space:nowrap}.btn-copy-report:hover{opacity:.85}.copy-tip{color:#f09274;font-size:12px}.input-area{background:#141414;border-top:1px solid var(--border);padding:14px 20px 12px;flex-shrink:0}.input-box{display:flex;align-items:flex-end;gap:10px;background:var(--bg-input);border:1.5px solid rgba(255,255,255,.08);border-radius:16px;padding:10px 10px 10px 16px;transition:border-color .22s,box-shadow .22s}.input-box:focus-within{border-color:#6b5ce78c;box-shadow:0 0 0 3px #6b5ce71a}.chat-textarea{flex:1;border:none;background:transparent;resize:none;font-size:14px;line-height:1.65;color:var(--text-main);outline:none;max-height:160px;overflow-y:auto;font-family:inherit}.chat-textarea::placeholder{color:#444}.chat-textarea:disabled{cursor:not-allowed;opacity:.4}.send-btn{flex-shrink:0;background:var(--grad-btn);color:#fff;border:none;border-radius:12px;padding:9px 20px;font-size:14px;font-weight:600;cursor:pointer;transition:all .22s cubic-bezier(.4,0,.2,1);min-width:68px;height:40px;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 12px #6b5ce759;letter-spacing:.2px}.send-btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 18px #6b5ce780}.send-btn:active:not(:disabled){transform:scale(.97) translateY(0);box-shadow:0 1px 6px #6b5ce74d}.send-btn:disabled{background:#2a2a2a;color:#444;box-shadow:none;cursor:not-allowed}.loading-dots{display:flex;align-items:center;gap:4px}.loading-dots span{width:5px;height:5px;border-radius:50%;background:#fff;animation:dotBounce 1.2s infinite ease-in-out both}.loading-dots span:nth-child(1){animation-delay:-.32s}.loading-dots span:nth-child(2){animation-delay:-.16s}.loading-dots span:nth-child(3){animation-delay:0s}@keyframes dotBounce{0%,80%,to{transform:scale(.6);opacity:.4}40%{transform:scale(1);opacity:1}}.footer-info{text-align:center;font-size:11px;color:#3a3a3a;margin-top:10px;letter-spacing:.5px}.chat-main::-webkit-scrollbar{width:4px}.chat-main::-webkit-scrollbar-track{background:transparent}.chat-main::-webkit-scrollbar-thumb{background:#2a2a2a;border-radius:4px}.chat-main::-webkit-scrollbar-thumb:hover{background:#3a3a3a}@media (max-width: 600px){.header-inner{height:56px}.header-logo-wrap{width:32px;height:32px;font-size:18px}.header-title{font-size:15px}.bubble{max-width:86%}.welcome-hints{flex-direction:column;align-items:stretch}.hint-item{text-align:center;border-radius:14px}.welcome-title{font-size:19px}.welcome-logo{width:64px;height:64px;border-radius:18px}.welcome-logo-img{border-radius:18px}.chat-main{padding:16px 14px}.input-area{padding:12px 14px 10px}.send-btn{padding:9px 16px;min-width:60px}}.upload-zone{display:flex;align-items:center;gap:10px;background:#ffffff0a;border:1.5px dashed rgba(255,255,255,.2);border-radius:12px;padding:12px 18px;margin-bottom:8px;cursor:pointer;transition:all .2s;-webkit-user-select:none;user-select:none}.upload-zone:hover{border-color:#5dbb7799;background:#5dbb770f}.upload-zone--active{border-color:#5dbb77;background:#5dbb771a;transform:scale(1.01)}.upload-zone--uploading{cursor:wait;opacity:.75}.upload-zone-icon{font-size:22px;flex-shrink:0}.upload-zone-text{font-size:13px;color:#ffffffbf;flex:1}.upload-zone-text strong{color:#5dbb77}.upload-zone-hint{font-size:11px;color:#ffffff59;white-space:nowrap;flex-shrink:0}.upload-banner{display:flex;align-items:center;gap:8px;background:#5dbb771a;border:1px solid rgba(93,187,119,.3);border-radius:10px;padding:8px 14px;margin-bottom:8px;font-size:13px}.upload-banner-icon{font-size:16px;flex-shrink:0}.upload-banner-name{color:#5dbb77;font-weight:600;max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.upload-banner-meta{color:#ffffff80;font-size:12px;flex:1}.upload-banner-reupload{background:transparent;border:1px solid rgba(93,187,119,.4);color:#5dbb77;font-size:12px;padding:3px 10px;border-radius:6px;cursor:pointer;flex-shrink:0;transition:all .2s}.upload-banner-reupload:hover{background:#5dbb7726}.upload-error{color:#f09274;font-size:12px;padding:4px 8px;margin-bottom:4px}
