/* ============ 工单助手模式 ============ */
body.wo-active .sidebar,
body.wo-active .sidebar-toggle-btn,
body.wo-active .chat-area-wrapper,
body.wo-active .chat-messages,
body.wo-active .welcome-container,
body.wo-active .chat-input,
body.wo-active .footer {
    display: none !important;
}
body.wo-active .chat-container {
    display: flex;
    flex-direction: column;
}
#woApp {
    position: fixed;
    inset: 0;
    display: none;
    z-index: 900;
    width: 100%;
    background: var(--bg, #ffffff);
    color: var(--tc, #1a1a1a);
}
body.wo-active #woApp {
    display: flex;
}
#woApp.hidden, #woApp .hidden {
    display: none !important;
}
[data-theme="dark"] #woApp {
    --hbg: #26262c;
    --bg2: #1e1e24;
    --bd: #3a3a44;
}
#woApp, #woApp * { box-sizing: border-box; }
#woApp .wo-disabled { opacity: .45; pointer-events: none; }

/* ---- 侧栏 ---- */
.wo-sidebar {
    width: 280px;
    min-width: 280px;
    background: var(--hbg, #f6f7f9);
    border-right: 1px solid var(--bd, #e3e5ea);
    display: flex;
    flex-direction: column;
    min-height: 0;
}
.wo-sidebar-head {
    display: flex; align-items: center;
    padding: 12px 14px; gap: 4px;
}
.wo-sidebar-head .wo-sidebar-title { font-weight: 600; font-size: 15px; }
.wo-new-order-btn {
    border: none; background: #2d6cdf; color: #fff; border-radius: 6px;
    padding: 0; font-size: 13px; cursor: pointer;
    margin-left: 4px; /* 紧贴「工单与会话」 */
}
.wo-back-btn {
    margin: 0 14px 8px; border: 1px solid var(--bd, #e3e5ea); background: transparent;
    color: var(--tc, #333); border-radius: 6px; padding: 5px 10px; cursor: pointer; font-size: 13px;
}
.wo-sidebar-scroll { flex: 1; overflow-y: auto; padding: 4px 8px 16px; }
.wo-order {
    border: 1px solid var(--bd, #e3e5ea); border-radius: 8px; margin-bottom: 8px;
    background: var(--bg2, #fff);
}
.wo-order-head {
    display: flex; align-items: center; gap: 6px; padding: 9px 10px; cursor: pointer;
}
.wo-order-head.active { background: rgba(45,108,223,.1); }
.wo-order-title {
    flex: 1; font-size: 13.5px; font-weight: 500;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.wo-order-icon {
    border: none; background: transparent; color: var(--tc, #555);
    cursor: pointer; font-size: 14px; padding: 2px 4px; border-radius: 4px;
}
.wo-order-icon:hover { background: rgba(0,0,0,.08); }
.wo-session-list { padding: 0 8px 6px; }
.wo-session-item {
    display: flex; align-items: center; gap: 6px; padding: 7px 8px; border-radius: 6px;
    cursor: pointer; font-size: 13px;
}
.wo-session-item:hover { background: rgba(0,0,0,.06); }
.wo-session-item.active { background: #2d6cdf; color: #fff; }
.wo-session-item .wo-session-title { flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.wo-session-del { border: none; background: transparent; color: inherit; cursor: pointer; font-size: 12px; }
.wo-archived-group { margin-top: 12px; }
.wo-archived-toggle {
    width: 100%; text-align: left; padding: 8px 10px; border: none; background: transparent;
    cursor: pointer; color: var(--tc3, #888); font-size: 13px; font-weight: 600;
}
.wo-archived-toggle .wo-arrow { display: inline-block; transition: transform .15s; margin-right: 4px; }
.wo-archived-group.open .wo-arrow { transform: rotate(90deg); }
.wo-archived-list { display: none; }
.wo-archived-group.open .wo-archived-list { display: block; }

/* ---- 主区 ---- */
.wo-main { flex: 1; display: flex; flex-direction: column; min-width: 0; min-height: 0; }
.wo-welcome {
    flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center;
    padding: 24px; text-align: center; gap: 10px;
}
.wo-welcome h2 { margin: 0; }
.wo-welcome p { color: var(--tc3, #888); margin: 0; }
.wo-messages { flex: 1; overflow-y: auto; padding: 16px; display: flex; flex-direction: column; gap: 10px; }
.wo-msg { max-width: 78%; padding: 9px 12px; border-radius: 10px; font-size: 14px; line-height: 1.6;
    white-space: pre-wrap; word-break: break-word; }
.wo-msg.user { align-self: flex-end; background: #2d6cdf; color: #fff; border-bottom-right-radius: 3px; }
.wo-msg.assistant { align-self: flex-start; background: var(--bg2, #f1f2f4); border-bottom-left-radius: 3px;
    color: var(--tc, #222); }
.wo-msg.error { align-self: flex-start; background: #fdecea; color: #b42318; }
.wo-msg .wo-msg-time { display: block; font-size: 11px; color: var(--tc3, #999); margin-top: 4px; }
.wo-attach-select {
    display: flex; flex-wrap: wrap; gap: 6px; padding: 6px 12px;
    border-top: 1px dashed var(--bd, #e3e5ea); max-height: 84px; overflow-y: auto;
}
.wo-attach-select label {
    display: inline-flex; align-items: center; gap: 4px; font-size: 12px;
    border: 1px solid var(--bd, #e3e5ea); border-radius: 12px; padding: 2px 8px; cursor: pointer;
}
.wo-input-row { display: flex; align-items: flex-end; gap: 8px; padding: 8px 12px; }
.wo-input-row textarea {
    flex: 1; resize: none; border: 1px solid var(--bd, #e3e5ea); border-radius: 8px;
    padding: 8px 10px; min-height: 42px; max-height: 120px; font-size: 14px;
    background: var(--bg2, #fff); color: var(--tc, #222);
}
.wo-attach-btn, .wo-send-btn {
    border: none; border-radius: 8px; padding: 9px 14px; cursor: pointer; font-size: 14px;
}
.wo-attach-btn { background: var(--bg2, #eee); color: var(--tc, #333); }
.wo-send-btn { background: #2d6cdf; color: #fff; }
.wo-actions {
    display: flex; flex-wrap: wrap; gap: 8px; padding: 8px 12px;
    border-top: 1px solid var(--bd, #e3e5ea);
}
.wo-action-chip {
    border: 1px solid var(--bd, #e3e5ea); background: var(--bg2, #fff); color: var(--tc, #444);
    padding: 5px 12px; border-radius: 14px; cursor: pointer; font-size: 13px;
}
.wo-action-chip.active { background: #2d6cdf; border-color: #2d6cdf; color: #fff; }
.wo-action-note { font-size: 12px; color: var(--tc3, #999); align-self: center; }

/* ---- 右侧信息区 ---- */
.wo-info {
    width: 360px; min-width: 340px; border-left: 1px solid var(--bd, #e3e5ea);
    display: flex; flex-direction: column; min-height: 0; background: var(--hbg, #fafbfc);
    overflow-y: auto;
}
.wo-info-head {
    display: flex; align-items: center; justify-content: space-between; padding: 12px 14px;
    font-weight: 600; border-bottom: 1px solid var(--bd, #e3e5ea);
}
.wo-export-btn {
    border: 1px solid var(--bd, #e3e5ea); background: transparent; color: var(--tc, #333);
    border-radius: 6px; padding: 4px 10px; cursor: pointer; font-size: 12px;
}
.wo-info-form { padding: 12px 14px; display: flex; flex-direction: column; gap: 8px; }
.wo-info-form label { font-size: 12px; color: var(--tc3, #777); display: block; margin-bottom: 2px; }
.wo-info-form input, .wo-info-form textarea {
    width: 100%; border: 1px solid var(--bd, #e3e5ea); border-radius: 6px;
    padding: 6px 8px; font-size: 13px; background: var(--bg2, #fff); color: var(--tc, #222);
}
.wo-info-btns { display: flex; gap: 8px; padding: 0 14px 10px; }
.wo-info-btns button {
    flex: 1; border: none; border-radius: 6px; padding: 7px; cursor: pointer; font-size: 13px;
}
.wo-save-info-btn { background: #2d6cdf; color: #fff; }
.wo-ai-fill-btn { background: var(--bg2, #ececec); color: var(--tc, #333); border: 1px solid var(--bd,#d5d8de) !important; }

.wo-attach-area { border-top: 1px solid var(--bd, #e3e5ea); padding: 10px 14px; }
.wo-attach-area-title { font-size: 13px; font-weight: 600; margin-bottom: 8px; }
.wo-attach-item {
    border: 1px solid var(--bd, #e3e5ea); border-radius: 8px; padding: 8px 10px; margin-bottom: 8px;
    font-size: 12.5px; background: var(--bg2, #fff);
}
.wo-attach-item .wo-att-name { font-weight: 500; word-break: break-all; }
.wo-attach-item .wo-att-meta { color: var(--tc3, #888); margin: 2px 0 6px; }
.wo-att-badge {
    display: inline-block; border-radius: 10px; padding: 1px 8px; font-size: 11px; margin-left: 6px;
}
.wo-att-badge.done { background: #e6f6ec; color: #1a7f37; }
.wo-att-badge.running { background: #fff5e0; color: #b7791f; }
.wo-att-badge.failed { background: #fdecea; color: #b42318; }
.wo-att-badge.none { background: #eee; color: #666; }
.wo-att-actions { display: flex; gap: 6px; flex-wrap: wrap; }
.wo-att-actions button {
    border: 1px solid var(--bd, #d5d8de); background: var(--bg2, #f5f6f8); color: var(--tc, #333);
    border-radius: 5px; padding: 3px 9px; font-size: 12px; cursor: pointer;
}
.wo-att-actions button.primary { background: #2d6cdf; border-color: #2d6cdf; color: #fff; }

/* 预览区（覆盖附件区） */
.wo-preview-area {
    display: none; border-top: 1px solid var(--bd, #e3e5ea); padding: 10px 14px; position: relative;
}
.wo-preview-area.open { display: block; }
.wo-preview-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; }
.wo-preview-head .wo-preview-title { font-size: 13px; font-weight: 600; max-width: 260px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.wo-preview-close { border: none; background: transparent; font-size: 18px; cursor: pointer; color: var(--tc,#555); }
.wo-preview-body { max-height: 320px; overflow-y: auto; }
.wo-preview-body pre { white-space: pre-wrap; word-break: break-word; font-size: 12.5px; margin: 0; }
.wo-preview-body img { max-width: 100%; cursor: zoom-in; border-radius: 6px; }
.wo-preview-body audio { width: 100%; }

/* 大屏图片 */
.wo-lightbox {
    position: fixed; inset: 0; background: rgba(0,0,0,.88); display: none; z-index: 9999;
    align-items: center; justify-content: center;
}
.wo-lightbox.open { display: flex; }
.wo-lightbox img { max-width: 92vw; max-height: 92vh; }
.wo-lightbox .wo-lightbox-close {
    position: absolute; top: 16px; right: 20px; color: #fff; font-size: 30px;
    cursor: pointer; background: none; border: none;
}
.wo-toast {
    position: fixed; bottom: 90px; left: 50%; transform: translateX(-50%);
    background: rgba(0,0,0,.8); color: #fff; padding: 8px 18px; border-radius: 8px;
    font-size: 13px; z-index: 10000; display: none;
}
/* ---- 侧栏搜索 ---- */
.wo-search-row { display: flex; gap: 6px; padding: 0 14px 10px; }
.wo-search-row input {
    flex: 1; border: 1px solid var(--bd, #d5d8de); border-radius: 6px; padding: 6px 9px;
    font-size: 13px; background: var(--bg2, #fff); color: var(--tc, #222); min-width: 0;
}
.wo-search-row button {
    border: none; background: #2d6cdf; color: #fff; border-radius: 6px; padding: 0 12px;
    font-size: 13px; cursor: pointer; flex-shrink: 0;
}
.wo-search-result-note { padding: 2px 14px 8px; font-size: 12px; color: var(--tc3, #999); }

/* ---- 输入行（仿经典 UI） ---- */
.wo-input-row { display: flex; align-items: flex-end; gap: 8px; padding: 8px 12px; }
.wo-input-row .textarea-wrapper { flex: 1; min-width: 0; }
.wo-input-row .char-counter { color: var(--text-muted, #999); }
.wo-att-btn { width: 38px; height: 38px; }
.wo-send-btn2 { width: 48px; height: 38px; border-radius: 10px; }

/* ---- 信息区布局 ---- */
.wo-info-row { display: flex; gap: 8px; }
.wo-info-row > div { flex: 1; min-width: 0; }
.wo-info-name-phone .wo-col-name { flex: 2; }
.wo-info-name-phone .wo-col-phone { flex: 3; }
.wo-info-form input:disabled, .wo-info-form textarea:disabled {
    background: var(--bg2, #f2f3f5); color: var(--tc, #333); cursor: default;
}
.wo-modify-btn, .wo-copy-btn, .wo-cancel-btn {
    flex: 1; border: 1px solid var(--bd, #d5d8de); background: var(--bg2, #ececec);
    color: var(--tc, #333); border-radius: 6px; padding: 7px; cursor: pointer; font-size: 13px;
}
.wo-modify-btn { background: #2d6cdf; border-color: #2d6cdf; color: #fff; }

/* ---- 附件区：清单式两行布局（V1.2） ---- */
.wo-att-item { font-size: 12px; }
.wo-att-line1 { display: flex; align-items: center; gap: 8px; min-width: 0; }
.wo-att-name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.wo-att-size { color: var(--tc3, #888); flex-shrink: 0; }
.wo-att-ic { width: 16px; height: 16px; flex-shrink: 0; }
.ic-word { color: #2b579a; }
.ic-text { color: #7a7f87; }
.ic-audio { color: #1a7f37; }
.ic-image { color: #7d3ac1; }
.wo-att-line2 { display: flex; align-items: center; gap: 6px; margin-top: 6px; flex-wrap: wrap; }
.wo-att-line2 button {
    border: 1px solid var(--bd, #d5d8de); background: var(--bg2, #f5f6f8); color: var(--tc, #333);
    border-radius: 5px; padding: 2px 9px; font-size: 12px; cursor: pointer; line-height: 1.6;
}
.wo-att-line2 button.primary { background: #2d6cdf; border-color: #2d6cdf; color: #fff; }
.wo-att-line2 button:disabled { opacity: .55; cursor: not-allowed; }
.wo-att-line2 .wo-att-badge { font-size: 11px; }
.wo-att-placeholder { width: 52px; flex-shrink: 0; }
.wo-att-err { color: #b42318; font-size: 11px; margin-top: 4px; }
.wo-att-item { display: flex; flex-direction: column; }

/* ---- 预览区：音频播放器 + 转写文字（占满剩余） ---- */
.wo-preview-body { max-height: calc(100vh - 430px); min-height: 300px; }
.wo-preview-audio { display: flex; flex-direction: column; min-height: 280px; }
.wo-preview-audio audio { width: 100%; }
.wo-audio-note { font-size: 11.5px; color: var(--tc3, #888); margin-top: 4px; line-height: 1.6; }
.wo-audio-note.warn { color: #b42318; }
.wo-transcript-title { font-size: 12px; color: var(--tc3, #888); margin-top: 10px; }
.wo-transcript {
    flex: 1; overflow-y: auto; white-space: pre-wrap; word-break: break-word; font-size: 12.5px;
    line-height: 1.8; margin-top: 6px; padding: 8px 10px; border: 1px solid var(--bd, #e3e5ea);
    border-radius: 6px; background: var(--bg2, #fff); min-height: 180px;
}
.wo-transcript-empty { color: var(--tc3, #999); font-size: 12.5px; margin-top: 10px; }

/* ---- 附件全选/清空切换按钮 ---- */
.wo-toggle-all {
    border: 1px solid var(--bd, #d5d8de); background: var(--bg2, #f5f6f8); color: var(--tc, #333);
    border-radius: 12px; padding: 2px 12px; font-size: 12px; cursor: pointer; flex-shrink: 0;
}
.wo-toggle-all.on { background: #2d6cdf; border-color: #2d6cdf; color: #fff; }
.wo-attach-select .wo-toggle-all { order: -1; }

/* ---- V1.5 设置面板 / 模式区 / 禁用 ---- */
.wo-gear-btn {
    border: 1px solid var(--bd, #d5d8de); background: var(--bg2, #f5f6f8); color: var(--tc, #333);
    border-radius: 6px; padding: 2px 8px; font-size: 14px; cursor: pointer; flex-shrink: 0;
    margin-left: auto; /* 靠右 */
}
#woSettingBackBtn {
    width: auto; height: auto; min-width: 48px; padding: 3px 14px; font-size: 12px;
}
.wo-gear-save { background: #2d6cdf; border-color: #2d6cdf; color: #fff; font-size: 12px; }
.wo-action-note { padding: 4px 12px 8px; font-size: 12px; color: var(--tc3, #999); }
.wo-editor { flex: 1; display: flex; flex-direction: column; padding: 14px 16px; overflow-y: auto; gap: 10px; }
.wo-editor.hidden { display: none !important; }
.wo-editor-title { font-size: 15px; font-weight: 600; }
.wo-editor-field label { font-size: 12px; color: var(--tc3, #777); display: block; margin-bottom: 4px; }
.wo-editor-field input, .wo-editor-field textarea {
    width: 100%; border: 1px solid var(--bd, #d5d8de); border-radius: 6px; padding: 7px 9px;
    font-size: 13px; background: var(--bg2, #fff); color: var(--tc, #222); font-family: inherit;
}
.wo-editor-field textarea { resize: vertical; line-height: 1.7; }
.wo-editor-note { font-size: 12px; color: var(--tc3, #999); }
.wo-editor-btns { display: flex; gap: 8px; }
.wo-editor-btns button {
    border: 1px solid var(--bd, #d5d8de); background: var(--bg2, #f5f6f8); color: var(--tc, #333);
    border-radius: 6px; padding: 6px 14px; font-size: 13px; cursor: pointer;
}
.wo-editor-btns button.primary { background: #2d6cdf; border-color: #2d6cdf; color: #fff; }

.wo-settings-item {
    display: flex; align-items: center; gap: 6px; padding: 9px 10px; margin-bottom: 6px;
    border: 1px solid var(--bd, #e3e5ea); border-radius: 8px; background: var(--bg2, #fff);
    font-size: 13px; cursor: pointer;
}
.wo-settings-item:hover { background: rgba(0,0,0,.04); }
.wo-settings-item.active { border-color: #2d6cdf; }
.wo-settings-item .wo-st-label { flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.wo-settings-item .wo-st-tag { font-size: 11px; color: var(--tc3, #999); }
.wo-settings-item .wo-st-btn {
    border: none; background: transparent; color: var(--tc, #555); cursor: pointer; font-size: 13px; padding: 2px 4px;
}
.wo-settings-item .wo-st-btn:disabled { opacity: .3; cursor: not-allowed; }
.wo-settings-add {
    width: 100%; text-align: left; border: 1px dashed var(--bd, #c5c9d0); background: transparent;
    color: var(--tc, #555); border-radius: 8px; padding: 8px 10px; font-size: 13px; cursor: pointer; margin-bottom: 6px;
}
.wo-settings-sep { height: 1px; background: var(--bd, #e3e5ea); margin: 8px 0; }

.wo-att-disabled { opacity: .45; }
.wo-att-disabled input { cursor: not-allowed; }

/* V1.6：+ 与 ⚙ 同为正方形 */
.wo-new-order-btn, .wo-gear-btn {
    width: 26px; height: 26px; padding: 0;
    display: inline-flex; align-items: center; justify-content: center;
}

/* ---- 拖拽上传高亮 ---- */
.wo-drop-active { outline: 2px dashed #2d6cdf; outline-offset: -2px; }
#woAttachArea.wo-drop-active { border-radius: 8px; }

/* ---- 设置：API KEY 面板 ---- */
.wo-apikeys-panel { padding: 4px 10px 10px; }
.wo-api-block { margin-bottom: 12px; }
.wo-api-title { font-size: 12.5px; margin-bottom: 6px; }
.wo-api-title a { color: #2d6cdf; text-decoration: none; }
.wo-api-title a:hover { text-decoration: underline; }
.wo-api-row { display: flex; gap: 6px; margin-bottom: 6px; }
.wo-api-row input {
    flex: 1; border: 1px solid var(--bd, #d5d8de); border-radius: 6px; padding: 6px 8px;
    font-size: 13px; background: var(--bg2, #fff); color: var(--tc, #222); min-width: 0;
}
.wo-api-row button {
    border: 1px solid var(--bd, #d5d8de); background: var(--bg2, #f5f6f8); color: var(--tc, #333);
    border-radius: 6px; padding: 0 10px; font-size: 12px; cursor: pointer; flex-shrink: 0;
}
.wo-api-save {
    width: 100%; border: none; background: #2d6cdf; color: #fff; border-radius: 6px;
    padding: 6px; font-size: 13px; cursor: pointer;
}
.wo-api-note { font-size: 11.5px; color: var(--tc3, #999); line-height: 1.6; }

/* ---- API KEY 保存（行内，位于显示按钮右侧） ---- */
.wo-api-row .wo-api-save {
    width: auto; padding: 0 12px; background: #2d6cdf; color: #fff; flex-shrink: 0;
}
.wo-api-save { width: auto; }

/* ---- 设置：数据管理 ---- */
.wo-data-mgmt { padding: 4px 10px 12px; display: flex; flex-direction: column; gap: 6px; }
.wo-data-btn {
    border: 1px solid var(--bd, #d8b8b4); background: var(--bg2, #fdf3f2); color: #b42318;
    border-radius: 6px; padding: 7px 8px; font-size: 12.5px; cursor: pointer; text-align: center;
}
.wo-data-btn:hover { background: #fbe4e2; }

/* ---- 输入区上拉/下拉箭头（V2.9.2） ---- */
.wo-input-row { position: relative; }
.wo-expand-arrow, .wo-collapse-arrow {
    position: absolute; top: -16px; left: 50%; transform: translateX(-50%);
    border: 1px solid var(--bd, #d5d8de); background: var(--bg2, #fff); color: var(--tc, #555);
    border-radius: 50%; width: 24px; height: 24px; line-height: 1; font-size: 12px;
    cursor: pointer; z-index: 6; display: none; padding: 0;
}
.wo-expand-arrow:hover, .wo-collapse-arrow:hover { border-color: #2d6cdf; color: #2d6cdf; }

/* 设置栏：导入/导出紧挨「设置」，返回按钮靠右 */
#woSettingImportBtn, #woSettingExportBtn {
    margin-left: 4px;
    width: auto; min-width: 40px; padding: 2px 8px; font-size: 12px;
}

/* ---- 会话侧栏底部：30 天保留提示（红色小字） ---- */
.wo-expiry-note {
    padding: 8px 12px 10px;
    font-size: 12px;
    line-height: 1.5;
    color: #c0392b;
    background: rgba(192, 57, 43, 0.06);
    border-top: 1px dashed var(--bd, #e3e5ea);
    flex: 0 0 auto;
}


/* ================= 公共知识库（V3.0） ================= */
.wo-attach-head {
    display: flex; align-items: center; gap: 8px; margin-bottom: 8px; flex-wrap: wrap;
}
.wo-attach-area-title { margin-bottom: 0; }

/* 滑块式切换（附件区 / 公共知识库） */
.wo-kb-switch {
    display: inline-flex; align-items: center; gap: 6px; cursor: pointer; user-select: none;
    font-size: 12px; color: var(--tc, #555); margin: 0;
}
.wo-kb-switch-txt { line-height: 1; }
.wo-kb-switch input { position: absolute; opacity: 0; width: 0; height: 0; }
.wo-kb-switch-track {
    position: relative; width: 34px; height: 18px; border-radius: 10px;
    background: var(--bd, #cdd2da); transition: background .18s; flex-shrink: 0;
}
.wo-kb-switch-track::after {
    content: ''; position: absolute; top: 2px; left: 2px; width: 14px; height: 14px;
    border-radius: 50%; background: #fff; transition: left .18s; box-shadow: 0 1px 2px rgba(0,0,0,.25);
}
.wo-kb-switch input:checked + .wo-kb-switch-track { background: #2d9e46; }
.wo-kb-switch input:checked + .wo-kb-switch-track::after { left: 18px; }

.wo-kb-upload-btn {
    border: 1px solid #2d9e46; background: #2d9e46; color: #fff; border-radius: 6px;
    padding: 2px 10px; font-size: 12px; cursor: pointer; flex-shrink: 0;
}
.wo-kb-upload-btn:disabled { opacity: .5; cursor: not-allowed; }

.wo-attach-list, .wo-kb-list { display: flex; flex-direction: column; }

/* 知识库文件项（两行式，与附件一致 + 状态徽标） */
.wo-kb-item {
    border: 1px solid var(--bd, #e3e5ea); border-radius: 8px; padding: 8px 10px; margin-bottom: 8px;
    font-size: 12.5px; background: var(--bg2, #fff);
}
.wo-kb-item .wo-kb-line1 { display: flex; align-items: center; gap: 8px; min-width: 0; }
.wo-kb-item .wo-kb-name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 500; }
.wo-kb-item .wo-kb-size { color: var(--tc3, #888); flex-shrink: 0; }
.wo-kb-item .wo-kb-line2 { display: flex; align-items: center; gap: 6px; margin-top: 6px; flex-wrap: wrap; }
.wo-kb-item .wo-kb-line2 button {
    border: 1px solid var(--bd, #d5d8de); background: var(--bg2, #f5f6f8); color: var(--tc, #333);
    border-radius: 5px; padding: 2px 9px; font-size: 12px; cursor: pointer; line-height: 1.6;
}
.wo-kb-item .wo-kb-line2 button.primary { background: #2d9e46; border-color: #2d9e46; color: #fff; }
.wo-kb-item .wo-kb-line2 button.danger { background: #fdecea; border-color: #f2b8b5; color: #b42318; }
.wo-kb-item .wo-kb-line2 button:disabled { opacity: .55; cursor: not-allowed; }
.wo-kb-item .wo-kb-line2 .wo-kb-badge {
    display: inline-block; border-radius: 10px; padding: 1px 8px; font-size: 11px; margin-left: 6px;
}
.wo-kb-badge.done { background: #e6f6ec; color: #1a7f37; }
.wo-kb-badge.running { background: #fff5e0; color: #b7791f; }
.wo-kb-badge.failed { background: #fdecea; color: #b42318; }
.wo-kb-badge.none { background: #eee; color: #666; }
.wo-kb-err { color: #b42318; font-size: 11px; margin-top: 4px; word-break: break-all; }
.wo-kb-note { color: var(--tc3, #888); font-size: 11.5px; margin-top: 4px; }
.wo-kb-empty { color: #999; font-size: 12px; padding: 8px 0; }

/* xlsx 绿色表格图标 */
.wo-kb-ic { color: #2d9e46; flex-shrink: 0; width: 16px; height: 16px; }
.wo-kb-ic-sm { width: 14px; height: 14px; }

/* 知识库设置小页（临时占用右侧区域） */
.wo-kb-settings { padding: 2px 2px 10px; }
.wo-kb-settings-title { font-size: 13px; font-weight: 600; margin-bottom: 8px; }
.wo-kb-settings label { font-size: 12px; color: var(--tc3, #777); display: block; margin: 10px 0 4px; }
.wo-kb-settings input[type=text], .wo-kb-settings textarea, .wo-kb-settings input[type=number] {
    width: 100%; border: 1px solid var(--bd, #d5d8de); border-radius: 6px; padding: 7px 9px;
    font-size: 13px; background: var(--bg2, #fff); color: var(--tc, #222); font-family: inherit; box-sizing: border-box;
}
.wo-kb-settings textarea { resize: vertical; line-height: 1.7; }
.wo-kb-settings-btns { display: flex; gap: 8px; margin-top: 12px; }
.wo-kb-settings-btns button {
    border: 1px solid var(--bd, #d5d8de); background: var(--bg2, #f5f6f8); color: var(--tc, #333);
    border-radius: 6px; padding: 6px 16px; font-size: 13px; cursor: pointer;
}
.wo-kb-settings-btns button.primary { background: #2d6cdf; border-color: #2d6cdf; color: #fff; }
.wo-kb-settings-btns button.vec { background: #2d9e46; border-color: #2d9e46; color: #fff; }
.wo-kb-meta-line { font-size: 11.5px; color: var(--tc3, #888); margin-top: 8px; line-height: 1.8; }

/* 勾选行中知识库条目（与附件同选框，图标另色区分） */
.wo-attach-select label.wo-kb-ref { background: #f0faf2; border-color: #bfe3c8; }
.wo-attach-select label.wo-kb-ref .wo-kb-ic-sm { vertical-align: -2px; }

/* 回复气泡中的步骤进度提示 */
.wo-msg.assistant.progress {
    color: var(--tc3, #8a8f98); font-size: 13px; font-style: italic;
}

.wo-app .hidden { display: none !important; }

/* ============ V3.1 滑块切换（复刻首页 mode-switcher） ============ */
.wo-kb-switcher {
    display: inline-flex;
    background: #eceef1;
    border-radius: 16px;
    padding: 3px;
    position: relative;
    box-shadow: inset 0 1px 2px rgba(0,0,0,.06);
    flex-shrink: 0;
}
.wo-kb-switcher-bg {
    position: absolute;
    height: calc(100% - 6px);
    top: 3px;
    background: var(--primary-color, #2d6cdf);
    border-radius: 13px;
    box-shadow: 0 2px 5px rgba(45,108,223,.35);
    transition: all .28s cubic-bezier(.4,0,.2,1);
    z-index: 0;
}
.wo-kb-switcher-opt {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 4px;
    padding: 4px 14px;
    border: none;
    background: transparent;
    border-radius: 13px;
    cursor: pointer;
    font-size: 12px;
    color: var(--tc3, #8a8f98);
    transition: color .25s ease;
    position: relative;
    z-index: 1;
    white-space: nowrap;
}
.wo-kb-switcher-opt:hover { color: var(--tc, #333); }
.wo-kb-switcher-opt.active { color: #fff; font-weight: 600; }

/* 引用=绿 / 撤回=红（知识库列表按钮） */
.wo-kb-item .wo-kb-line2 button.quote { background: #e6f6ec; border-color: #bfe3c8; color: #1a7f37; }
.wo-kb-item .wo-kb-line2 button.quote:hover { background: #d3efdd; }
.wo-kb-item .wo-kb-line2 button.unquote { background: #fdecea; border-color: #f2b8b5; color: #b42318; }
.wo-kb-item .wo-kb-line2 button.unquote:hover { background: #fadcd8; }

/* 气泡末端「知识库引用切片」折叠区 */
.wo-msg.assistant .wo-kb-cite {
    margin-top: 8px; border-top: 1px dashed var(--bd, #d5d8de); padding-top: 6px;
}
.wo-kb-cite-toggle {
    border: 1px solid var(--bd, #c5c9d0); background: rgba(255,255,255,.7);
    color: var(--tc, #3c4043); border-radius: 12px; padding: 2px 10px;
    font-size: 12px; cursor: pointer; line-height: 1.8;
}
.wo-kb-cite-toggle:hover { border-color: #2d6cdf; color: #2d6cdf; }
.wo-kb-cite-body { margin-top: 6px; background: rgba(0,0,0,.03); border-radius: 8px; padding: 8px 10px; }
.wo-kb-cite-bar { display: flex; align-items: center; gap: 8px; font-size: 11.5px; color: var(--tc3, #888); margin-bottom: 4px; }
.wo-kb-cite-seg { display: inline-flex; background: #e5e7eb; border-radius: 10px; padding: 1px; }
.wo-kb-cite-mode {
    border: none; background: transparent; padding: 1px 12px; border-radius: 9px;
    font-size: 12px; cursor: pointer; color: var(--tc3, #666);
}
.wo-kb-cite-mode.on { background: var(--primary-color, #2d6cdf); color: #fff; }
.wo-kb-cite-content { font-size: 12px; line-height: 1.75; color: var(--tc, #3c4043);
    max-height: 260px; overflow-y: auto; }
.wo-kb-cite-content.txt { white-space: pre-wrap; word-break: break-word; font-family: monospace; }
.wo-kb-cite-content .wo-md-h { font-weight: 700; font-size: 12.5px; margin: 6px 0 4px; }
.wo-kb-cite-content p { margin: 4px 0; }
.wo-kb-cite-content ul { margin: 4px 0; padding-left: 18px; }
.wo-kb-cite-content li { margin: 3px 0; }
.wo-kb-cite-content blockquote { margin: 4px 0; padding: 2px 8px; border-left: 3px solid #d99a2b;
    background: rgba(217,154,43,.08); color: var(--tc3, #7a5b1e); }
.wo-kb-cite-content code { background: rgba(0,0,0,.07); border-radius: 3px; padding: 0 3px; }
.wo-kb-cite-content b { color: #2d6cdf; }

/* ============ 气泡复制按钮（气泡下方，左侧靠左/右侧靠右） ============ */
.wo-msg-row { display: flex; flex-direction: column; }
.wo-msg-col { display: flex; flex-direction: column; max-width: 100%; min-width: 0; }
.wo-msg-col .wo-msg { max-width: 78%; margin: 0; }
/* 用户气泡原有 align-self:flex-end（.wo-msg.user）继续使其靠右 */
.wo-copy-btn {
    margin-top: 3px; align-self: flex-start;
    display: inline-flex; align-items: center; justify-content: center;
    border: none; background: transparent; cursor: pointer;
    padding: 3px 6px; border-radius: 5px; opacity: .45; line-height: 1;
}
.wo-msg-row.user .wo-copy-btn { align-self: flex-end; }
.wo-copy-btn:hover { opacity: 1; background: rgba(0,0,0,.06); }
.wo-copy-ic { display: block; }

/* ============ V3.3 UI 优化 ============ */
/* 侧栏头部右侧操作区（返回图标 + 设置 + 导入/导出/返回） */
.wo-head-actions {
    margin-left: auto; display: flex; align-items: center; gap: 4px; flex-shrink: 0;
}
.wo-sidebar-head .wo-head-actions .wo-gear-btn { margin-left: 0; }
.wo-back-icon-btn { display: inline-flex; align-items: center; justify-content: center; }
.wo-back-icon-btn svg { display: block; }

/* 滑块：滑到「公共知识库」时用上传按钮的绿色（附件区仍为蓝色） */
.wo-kb-switcher.kb-on .wo-kb-switcher-bg {
    background: #2d9e46;
    box-shadow: 0 2px 5px rgba(45,158,70,.4);
}

/* 蓝色按钮 hover（与发送按钮同风格） */
.wo-new-order-btn:hover,
.wo-search-row button:hover,
.wo-modify-btn:hover,
.wo-save-info-btn:hover,
.wo-send-btn2:hover,
.wo-api-save:hover,
.wo-kb-upload-btn:hover:not(:disabled),
.wo-settings-add:hover {
    filter: brightness(1.08);
    transform: translateY(-1px);
    box-shadow: 0 3px 10px rgba(45,108,223,.32);
}
.wo-kb-upload-btn {
    transition: filter .15s ease, transform .15s ease, box-shadow .15s ease;
}
.wo-new-order-btn, .wo-search-row button, .wo-modify-btn, .wo-save-info-btn,
.wo-send-btn2, .wo-api-save, .wo-settings-add {
    transition: filter .15s ease, transform .15s ease, box-shadow .15s ease;
}
.wo-kb-upload-btn:hover:not(:disabled) {
    box-shadow: 0 3px 10px rgba(45,158,70,.35);
}

/* 附件区的「上传」按钮：与该视图滑块同色（蓝色）；知识库视图的上传按钮保持绿色 */
.wo-kb-upload-btn.wo-attach-upload-btn {
    background: #2d6cdf;
    border-color: #2d6cdf;
}
.wo-kb-upload-btn.wo-attach-upload-btn:hover:not(:disabled) {
    box-shadow: 0 3px 10px rgba(45,108,223,.35);
}

/* 白色/描边按钮 hover（设置、导出工单、导入/导出/返回、取消、复制信息等） */
.wo-gear-btn:hover,
.wo-export-btn:hover,
.wo-copy-btn:hover,
.wo-cancel-btn:hover,
.wo-editor-btns button:not(.primary):hover,
.wo-kb-settings-btns button:not(.primary):not(.vec):hover,
.wo-kb-item .wo-kb-line2 button:not(.danger):not(.quote):not(.unquote):hover,
.wo-att-line2 button:not(.primary):hover,
.wo-kb-cite-toggle:hover,
.wo-toggle-all:hover {
    background: #e9edf3;
    border-color: #b7c0cd;
    color: #1f3b66;
    box-shadow: 0 2px 6px rgba(31,59,102,.12);
    transition: background .15s ease, box-shadow .15s ease, color .15s ease;
}
