/* ============================================================
   1. 变量 & 通用
   ============================================================ */
:root{--sidebar-width:240px;--sidebar-collapsed-width:60px;--primary-color:#4a6cf7;--primary-light:#e8f1fd;--light-bg:#f8f9fa;--dark-text:#16181a;--gray-200:#edf2f7;--gray-300:#e2e8f0;--gray-400:#cbd5e0;--success-color:#38a169;--danger-color:#e53e3e;--chat-max-width:900px;--shadow-sm:0 1px 2px rgba(0,0,0,.03);--shadow:0 4px 6px rgba(0,0,0,.05);--shadow-lg:0 10px 15px rgba(0,0,0,.1);}
body{font-family:'Segoe UI','SF Pro Display',-apple-system,sans-serif;background:#f7fafc;margin:0;padding:0;height:100vh;display:flex;overflow:hidden;color:var(--dark-text);}

/* ============================================================
   2. 侧边栏
   ============================================================ */
#sidebar{width:var(--sidebar-width);background:#f0f3ff;border-right:1px solid var(--gray-300);height:100%;transition:all .3s ease;position:relative;box-shadow:var(--shadow-sm);z-index:1000;display:flex;flex-direction:column;}
#sidebar.collapsed{width:var(--sidebar-collapsed-width);}
.sidebar-header{padding:.75rem 1rem;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--gray-300);height:56px;}
.logo{display:flex;align-items:center;font-weight:600;font-size:1.1rem;color:var(--primary-color);gap:.5rem;transition:opacity .3s ease;}
#sidebar.collapsed .logo{opacity:0;}
.collapse-btn{background:0 0;border:none;font-size:1.1rem;color:#718096;cursor:pointer;width:36px;height:36px;border-radius:8px;display:flex;align-items:center;justify-content:center;}
.collapse-btn:hover{background:var(--gray-200);}
.sidebar-body{flex:1;overflow-y:auto;padding:.75rem 0;}
.quick-actions{display:flex;flex-direction:column;gap:.25rem;margin-bottom:1rem;}
.quick-btn{display:flex;align-items:center;gap:.75rem;padding:.5rem 1rem;border-radius:6px;color:var(--dark-text);text-decoration:none;font-size:.9rem;transition:background .2s;border:1px solid transparent;margin:0 .75rem;}
.quick-btn.active{background:var(--primary-light);color:var(--primary-color);border-color:var(--primary-color);}
.quick-btn:hover:not(.active){background:var(--gray-200);border-color:var(--gray-300);}
.quick-btn i{font-size:1rem;min-width:20px;text-align:center;}
.history-title{font-size:.75rem;color:#718096;text-transform:uppercase;letter-spacing:.5px;margin:1rem 0 .5rem .75rem;padding-left:.25rem;}
.history-list{list-style:none;padding:0;margin:0;}
.history-item{display:flex;justify-content:space-between;align-items:center;padding:.4rem .75rem;border-radius:6px;font-size:.85rem;color:var(--dark-text);margin:0 .75rem;cursor:pointer;transition:background .2s;}
.history-item:hover{background:var(--gray-200);}
.history-item-title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:160px;flex:1;}
.history-actions{display:none;gap:.25rem;}
.history-item:hover .history-actions{display:flex;}
.sidebar-footer{padding:.75rem 1rem;border-top:1px solid var(--gray-300);position:relative;}
.user-section{display:flex;align-items:center;gap:.75rem;margin-bottom:.5rem;}
.user-avatar{width:32px;height:32px;border-radius:50%;background:var(--primary-color);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.85rem;transition:all .2s;margin-left:1rem;}
.user-avatar:hover{transform:scale(1.05);}
.user-info{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.user-name{font-size:.85rem;font-weight:500;color:var(--dark-text);}
.user-menu-btn{background:0 0;border:none;color:#718096;cursor:pointer;width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;position:relative;}
.user-menu-btn:hover{background:var(--gray-300);}
.shortcut-icons{display:flex;gap:2rem;justify-content:center;}
.shortcut-btn{width:32px;height:32px;border-radius:8px;border:1px solid var(--gray-300);background:#fff;display:flex;align-items:center;justify-content:center;color:#718096;cursor:pointer;transition:all .2s;font-size:.9rem;}
.shortcut-btn:hover{background:var(--primary-color);color:#fff;border-color:var(--primary-color);}
#userDropdown{position:absolute;top:auto;bottom:100%;right:0;background:#fff;border-radius:8px;box-shadow:var(--shadow-lg);border:1px solid var(--gray-300);padding:.5rem 0;z-index:1000;display:none;}
.dropdown-item{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;color:var(--dark-text);text-decoration:none;font-size:.9rem;transition:background .2s;}
.dropdown-item:hover{background:var(--primary-light);color:var(--primary-color);}
.dropdown-item i{font-size:1rem;min-width:20px;text-align:center;}
#sidebar.collapsed .logo,#sidebar.collapsed .user-info,#sidebar.collapsed .quick-btn span,#sidebar.collapsed .history-item-title,#sidebar.collapsed .user-avatar,#sidebar.collapsed .history-title{display:none;}
#sidebar.collapsed .quick-btn,#sidebar.collapsed .history-item{justify-content:center;padding:.75rem 0;}
#sidebar.collapsed .user-section{justify-content:center;}
#sidebar.collapsed .shortcut-icons{display:none;}

/* ============================================================
   3. 主内容区
   ============================================================ */
#main-content{flex:1;display:flex;flex-direction:column;overflow:hidden;background:#f7fafc;transition:margin-left .3s ease;}
#main-content.sidebar-collapsed{margin-left:calc(var(--sidebar-collapsed-width) - var(--sidebar-width));}
.chat-container{flex:1;display:flex;flex-direction:column;max-width:var(--chat-max-width);width:100%;margin:0 auto;overflow:hidden;padding:0 1rem;gap:1rem;}
.chat-messages-container{flex:1;overflow-y:auto;padding:1.5rem 0;display:flex;flex-direction:column;gap:1rem;-ms-overflow-style:none;scrollbar-width:none;}
.chat-messages-container::-webkit-scrollbar{display:none;}
.fixed-disclaimer{text-align:center;font-size:.75rem;color:#718096;padding:1rem .5rem 0;background:rgba(247,250,252,.8);z-index:150;}
.welcome-container{flex:1;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:3.5rem 2rem 2rem;}
.welcome-box{text-align:center;color:#4a5568;max-width:500px;width:100%;animation:fadeIn .5s ease forwards;}
@keyframes fadeIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
.welcome-title{font-size:2rem;font-weight:800;margin-bottom:1rem;color:var(--primary-color);}
.welcome-subtitle{font-size:1rem;color:#718096;line-height:1.5;}
.message{padding:.75rem 1rem;line-height:1.6;position:relative;}
.message-u{border-radius:18px 18px 4px 18px;}
.message-a{border-radius:18px;}
.message-width{width:100%;}
.message.user{align-self:flex-end;background:var(--primary-color);color:#fff;}
.message.assistant{align-self:flex-start;background:#fff;color:var(--dark-text);box-shadow:var(--shadow-sm);position:relative;}
.message-content{font-size:.95rem;}

/* ============================================================
   4. 输入区
   ============================================================ */
.input-center{width:100%;margin-bottom:2rem;}
.input-card{background:#fff;border-radius:30px;box-shadow:var(--shadow);padding:1rem;border:1px solid var(--gray-300);}
.input-container{display:flex;flex-direction:column;gap:.5rem;}
.file-chips{display:flex;flex-wrap:wrap;gap:.5rem;padding:0 .5rem;}
.file-chip{display:flex;align-items:center;gap:.5rem;padding:.4rem .6rem;background:var(--light-bg);border:1px solid var(--gray-300);border-radius:6px;font-size:.8rem;color:var(--dark-text);position:relative;padding-right:1.5rem;}
.file-chip-close{position:absolute;top:2px;right:4px;background:0 0;border:none;color:#718096;cursor:pointer;font-size:.7rem;width:16px;height:16px;display:flex;align-items:center;justify-content:center;border-radius:50%;}
.file-chip-close:hover{background:var(--gray-300);color:var(--danger-color);}
.file-chip.success{border-color:var(--success-color);color:var(--success-color);}
.file-chip.failed{border-color:var(--danger-color);color:var(--danger-color);}
.file-chip i{font-size:.8rem;}
.message-input{width:100%;min-height:100px;max-height:300px;padding:0.75rem;border:1px solid #fff;border-radius:8px;resize:none;font-family:inherit;font-size:.95rem;line-height:1.5;margin-bottom:.5rem;transition:border-color .2s,box-shadow .2s;}
.message-input:focus{outline:none;}
.input-row{display:flex;gap:.5rem;align-items:center;background:#fff;border-radius:8px;padding:.25rem;}
.upload-btn{background:0 0;border:1px solid var(--gray-300);color:#718096;cursor:pointer;width:36px;height:36px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:1.1rem;}
.upload-btn:hover{background:var(--gray-200);}
input[type=file]{display:none;}
.quick-mode-btn{padding:.4rem .75rem;border:1px solid var(--gray-300);border-radius:8px;background:#fff;font-size:.85rem;color:var(--dark-text);cursor:pointer;display:flex;align-items:center;gap:.3rem;transition:all .2s;}
.quick-mode-btn.active{background:var(--success-color);color:#fff;border-color:var(--success-color);}
.quick-mode-btn:hover{background:var(--gray-200);border-color:var(--gray-300);}
.input-controls{display:flex;align-items:center;gap:.5rem;margin-left:auto;}
.model-select{padding:.4rem .75rem;border:1px solid var(--gray-300);border-radius:8px;background:#fff;font-size:.85rem;color:var(--dark-text);cursor:pointer;min-width:120px;text-align:center;position:relative;transition:all .2s;display:flex;align-items:center;justify-content:center;gap:.3rem;}
.model-select:hover{background:var(--gray-200);border-color:var(--gray-300);}
.model-select.active{background:var(--primary-color);color:#fff;border-color:var(--primary-color);}
.common-phrases-btn{padding:.4rem .75rem;border:1px solid var(--gray-300);border-radius:8px;background:#fff;font-size:.85rem;color:var(--dark-text);cursor:pointer;display:flex;align-items:center;gap:.3rem;transition:all .2s;}
.common-phrases-btn:hover{background:var(--gray-200);border-color:var(--gray-300);}
.send-btn{width:40px;height:40px;border-radius:50%;background:var(--primary-color);color:#fff;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:1.1rem;transition:all .2s;box-shadow:var(--shadow);}
.send-btn:hover:not(:disabled){background:#3d5d90;transform:translateY(-1px);box-shadow:var(--shadow-lg);}
.send-btn:disabled{background:var(--gray-300);color:#718096;cursor:not-allowed;transform:none;box-shadow:none;}
#sendBtn.sending{background:var(--gray-300)!important;color:#718096!important;cursor:not-allowed!important;transform:none!important;box-shadow:none!important;}
#sendBtn.sending:hover{background:var(--gray-300)!important;color:#718096!important;}

/* ============================================================
   5. 思考过程
   ============================================================ */
.thinking-process{background:#f8fafc;border-radius:12px;border:1px solid var(--gray-300);margin-bottom:.5rem;overflow:hidden;box-shadow:var(--shadow-sm);transition:max-height .5s ease-out;max-height:300px;max-width:var(--chat-max-width);flex-shrink:0!important;}
.thinking-process.collapsed{max-height:50px;}
.thinking-steps{display:flex;background:#f1f5f9;padding:.75rem 1rem;border-bottom:1px solid var(--gray-300);position:relative;align-items:center;}
.step-btn{display:flex;align-items:center;padding:.5rem 1rem;border-radius:8px;background:#e2e8f0;color:#718096;font-size:.8rem;transition:all .3s ease;position:relative;margin:0 .25rem;flex:1;justify-content:center;white-space:nowrap;}
.step-btn.active{background:#c6f6d5;color:var(--success-color);}
.step-btn.completed{background:#c6f6d5;color:var(--success-color);}
.step-btn .step-number{display:inline-block;width:24px;height:24px;border-radius:50%;background:#a0aec0;color:#fff;font-size:.8rem;margin-right:.5rem;text-align:center;line-height:24px;}
.step-btn.active .step-number,.step-btn.completed .step-number{background:var(--success-color);color:#fff;}
.step-btn .step-text{font-size:.75rem;font-weight:500;}
.thinking-panel{background:#fff;}
.panel-header{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1rem;background:#f1f5f9;border-bottom:1px solid var(--gray-300);}
.panel-title{font-weight:500;color:#4a5568;font-size:.9rem;display:flex;align-items:center;gap:.5rem;}
.panel-status{font-size:.7rem;color:var(--primary-color);display:flex;align-items:center;gap:.25rem;}
.panel-status .status-spinner{width:10px;height:10px;border:1.5px solid transparent;border-top:1.5px solid var(--primary-color);border-radius:50%;animation:spin 1s linear infinite;}
.panel-status .status-check{color:var(--success-color);font-size:.8rem;}
.toggle-btn{background:0 0;border:none;color:#718096;cursor:pointer;width:32px;height:32px;border-radius:8px;display:flex;align-items:center;justify-content:center;transition:all .2s;}
.toggle-btn:hover{background:var(--gray-200);color:var(--primary-color);}
.collapse-btn{background:0 0;border:none;color:#718096;cursor:pointer;width:32px;height:32px;border-radius:8px;display:flex;align-items:center;justify-content:center;transition:all .2s;margin-left:auto;}
.collapse-btn:hover{background:var(--gray-200);color:var(--primary-color);}
.panel-content{padding:1rem;font-size:.85rem;line-height:1.5;overflow-y:auto;transition:max-height .5s ease-out,opacity .5s ease-out;max-height:250px;opacity:1;}
.panel-content.collapsed{max-height:0;opacity:0;padding-top:0;padding-bottom:0;overflow:hidden;margin:0;}
.thinking-step-content{margin-bottom:1rem;padding-bottom:1rem;border-bottom:1px solid var(--gray-200);}
.thinking-step-content:last-child{border-bottom:none;margin-bottom:0;}
.thinking-step-content h5{color:var(--primary-color);margin-top:0;margin-bottom:.5rem;font-size:.9rem;}
.thinking-step-content p{margin:.25rem 0;color:#4a5568;}
.thinking-button{background:#e2e8f0;border:1px solid var(--gray-300);border-radius:8px;padding:.5rem 1rem;display:flex;align-items:center;gap:.5rem;cursor:pointer;margin-bottom:.5rem;transition:all .2s;width:auto;max-width:200px;align-self:flex-start;}
.thinking-button.collapsed{width:0;opacity:0;padding-left:0;padding-right:0;margin:0;max-width:0;}
.thinking-button:hover{background:#cbd5e0;}
.thinking-button .btn-text{font-size:.85rem;color:#4a5568;}
.thinking-button .btn-icon{color:var(--primary-color);}
.panel-content::-webkit-scrollbar{width:6px;}
.panel-content::-webkit-scrollbar-track{background:#f1f1f1;border-radius:3px;}
.panel-content::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:3px;}
.panel-content::-webkit-scrollbar-thumb:hover{background:#a8a8a8;}
.thinking-process.animate__animated{--animate-duration:.5s;}
#historicalThinkingStream{scrollbar-width: none;-ms-overflow-style: none;}
#historicalThinkingStream::-webkit-scrollbar {display: none;}
#thinkingStream{scrollbar-width: none;-ms-overflow-style: none;}
#thinkingStream::-webkit-scrollbar {display: none;}
.step-btn.animate__animated{--animate-duration:.3s;}

/* ============================================================
   6. 快速模式加载动画
   ============================================================ */
.quick-mode-spinner{display:flex;align-items:center;gap:.5rem;padding:.75rem 1rem;background:#fff;border:1px solid var(--gray-300);border-radius:12px;box-shadow:var(--shadow-sm);align-self:flex-start;max-width:80%;margin-bottom:.5rem;}
.spinner{width:20px;height:20px;border:2px solid #e2e8f0;border-top:2px solid var(--primary-color);border-radius:50%;animation:spin 1s linear infinite;}
@keyframes spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}
.spinner-text{color:#718096;font-size:.85rem;}
.thinking-button{height:40px!important;min-height:40px!important;max-height:40px!important;overflow:hidden!important;display:flex!important;align-items:center!important;justify-content:center!important;margin:10px 0!important;cursor:pointer!important;}

/* ============================================================
   7. 消息操作按钮
   ============================================================ */
.message-actions{display:flex;gap:.25rem;margin-top:.5rem;}
.action-btn{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#718096;cursor:pointer;transition:all .2s;font-size:.9rem;background:0 0;border:none;}
.action-btn:hover{color:var(--primary-color);background:var(--gray-200);}
.action-btn.active{color:var(--primary-color);}

/* ============================================================
   8. 错误/空状态
   ============================================================ */
.loading-wrapper,.error-wrapper,.notfound-wrapper{display:flex;justify-content:center;align-items:center;height:100vh;flex-direction:column;}
.loading-wrapper .spinner-border{width:3rem;height:3rem;}
.error-wrapper .alert,.notfound-wrapper .text-center{max-width:420px;width:90%;}
.notfound-wrapper h1{font-size:6rem;color:#6c757d;}
.error-bubble{color:#e53e3e;background:#fed7d7;border-radius:4px;padding:1rem;}

/* ============================================================
   9. 公式 & 代码
   ============================================================ */
.katex-display{display:block!important;margin:1em auto!important;text-align:center!important;padding:.5em;overflow-x:auto;overflow-y:hidden;}
.katex:not(.katex-display){font-size:1.05em;}
table .katex{font-size:1em;}
.katex-error{color:#e53e3e;background:#fed7d7;padding:2px 4px;border-radius:2px;font-family:monospace;}
.message-content .katex-display{margin:.5em auto;}
.code-block-container{background:#f8f9fa;border:1px solid #e9ecef;border-radius:6px;margin:1em 0;overflow:hidden;}
.code-language{background:#495057;color:#fff;padding:4px 8px;font-size:.8em;font-family:'Courier New',monospace;}
.code-content{padding:1em;margin:0;overflow-x:auto;font-family:'Courier New',monospace;font-size:.9em;line-height:1.4;}

/* ============================================================
   10. 响应式
   ============================================================ */
@media(max-width:768px){:root{--sidebar-width:60px}#sidebar{width:var(--sidebar-width)}#main-content.sidebar-collapsed{margin-left:0}}

/* 11. AI消息内容(.message.assistant>.message-content)生产压缩版 */
.message.assistant .message-content{font-size:.95rem;line-height:1.65;color:var(--dark-text);word-break:break-word}
.message.assistant .message-content h1,.message.assistant .message-content h2,.message.assistant .message-content h3,.message.assistant .message-content h4,.message.assistant .message-content h5,.message.assistant .message-content h6{margin:.8em 0 .4em;font-weight:600;line-height:1.25}
.message.assistant .message-content h1{font-size:1.5em;border-bottom:1px solid var(--gray-300);padding-bottom:.3em}
.message.assistant .message-content h2{font-size:1.3em;border-bottom:1px solid var(--gray-300);padding-bottom:.3em}
.message.assistant .message-content h3{font-size:1.2em}
.message.assistant .message-content h4{font-size:1.1em}
.message.assistant .message-content h5{font-size:1em}
.message.assistant .message-content h6{font-size:.9em;color:#6a737d}
.message.assistant .message-content p{margin:.5em 0}
.message.assistant .message-content ul,.message.assistant .message-content ol{margin:.5em 0;padding-left:2em}
.message.assistant .message-content li{margin:.25em 0}
.message.assistant .message-content blockquote{margin:1em 0;padding:0 1em;border-left:4px solid #dfe2e5;background:#f8f9fa;color:#6a737d}
.message.assistant .message-content table{border-collapse:collapse;width:100%;margin:1em 0}
.message.assistant .message-content th,.message.assistant .message-content td{border:1px solid #dfe2e5;padding:.5em .75em;text-align:left}
.message.assistant .message-content th{background:#f6f8fa;font-weight:600}
.message.assistant .message-content tr:nth-child(even){background:#f8f9fa}
.message.assistant .message-content hr{height:1px;background:#e1e4e8;border:0;margin:1.5em 0}
.message.assistant .message-content code{background:rgba(175,184,193,.2);border-radius:3px;padding:.2em .4em;font-size:.9em;font-family:'SFMono-Regular',Consolas,'Liberation Mono',Menlo,monospace}
.message.assistant .message-content pre{background:#f8f9fa;border-radius:6px;padding:1em;overflow:auto;margin:1em 0}
.message.assistant .message-content pre code{background:none;padding:0;border-radius:0}
.message.assistant .message-content .katex-display{margin:1em auto;text-align:center;overflow-x:auto;overflow-y:hidden}
.message.assistant .message-content .katex-inline{font-size:1.05em}

.thinking-step-content div {scrollbar-width: none;-ms-overflow-style: none;}
.thinking-step-content div::-webkit-scrollbar {display: none;}