        /* ----- 模型切换器新样式 ----- */
        .custom-model-dropdown { position: relative; z-index: 99999; }
        .model-trigger {
            display: inline-flex; align-items: center; gap: 7px; min-height: 36px; max-width: 220px;
            padding: 6px 10px 6px 12px; border-radius: 10px; cursor: pointer;
            transition: background-color 0.18s ease, color 0.18s ease, transform 0.12s ease;
            font-size: 15px; font-weight: 600; color: var(--text-primary);
            outline: none; user-select: none;
        }
        .model-trigger:hover { background: var(--hover-bg); }
        .model-trigger:focus-visible { box-shadow: 0 0 0 3px var(--primary-soft); }
        .model-trigger:active { transform: translateY(1px); }
        .model-trigger .edit-icon { width: 18px; height: 18px; color: var(--text-primary); }
        .model-trigger .chevron-icon { width: 16px; height: 16px; color: var(--text-tertiary); transition: transform 0.2s ease, color 0.2s ease; }
        .custom-model-dropdown.active .chevron-icon { transform: rotate(180deg); color: var(--primary-color); }
        .custom-model-dropdown.active .model-trigger { background: var(--primary-soft); }


        .model-menu {
            position: fixed; left: 0px; top: 0px; width: 336px; max-width: min(92vw, 360px);
            background: var(--bg-main); border-radius: 14px; border: 1px solid var(--border-color);
            box-shadow: var(--shadow-pop); padding: 14px; z-index: 99999;
            display: none; flex-direction: column;
        }
        .model-menu.active { display: flex; }

        .menu-header { font-size: 11px; font-weight: 700; color: var(--text-tertiary); margin-bottom: 9px; padding: 0 4px; letter-spacing: .08em; text-transform: uppercase; }
        .model-router-slot { flex: 0 0 auto; margin-bottom: 10px; padding-bottom: 9px; border-bottom: 1px solid var(--border-color); }
        .model-router-slot .model-item[data-model-id="auto-router"] { margin-bottom: 0; }
        .model-menu-search {
            height: 38px; display: flex; align-items: center; gap: 8px; padding: 0 11px;
            border: 1px solid var(--border-color); border-radius: 10px; background: var(--bg-primary);
            transition: border-color 0.15s, box-shadow 0.15s; margin-bottom: 8px;
        }
        .model-menu-search:focus-within { border-color: var(--primary-color); box-shadow: 0 0 0 3px rgba(99,102,241,0.1); }
        .model-menu-search svg { width: 16px; height: 16px; fill: none; stroke: var(--text-tertiary); stroke-width: 2; flex: 0 0 auto; }
        .model-menu-search input { width: 100%; min-width: 0; border: 0; outline: 0; background: transparent; color: var(--text-primary); font-size: 13px; -webkit-appearance: none; appearance: none; }
        .model-menu-search input::-webkit-search-cancel-button { cursor: pointer; }
        .model-type-filters {
            display: flex; gap: 5px; overflow-x: auto; overflow-y: hidden; padding: 0 0 9px;
            scrollbar-width: none; -ms-overflow-style: none;
            overscroll-behavior-x: contain; scroll-snap-type: x proximity; touch-action: pan-x;
            -webkit-overflow-scrolling: touch;
        }
        .model-type-filters::-webkit-scrollbar { display: none; width: 0; height: 0; }
        .model-type-filters.dragging { cursor: grabbing; user-select: none; scroll-snap-type: none; }
        .model-type-filter {
            flex: 0 0 auto; border: 1px solid var(--border-color); border-radius: 999px; padding: 4px 9px;
            background: transparent; color: var(--text-secondary); font-size: 11px; cursor: pointer; transition: 0.15s;
            scroll-snap-align: start;
        }
        .model-type-filter:hover { background: var(--hover-bg); color: var(--text-primary); }
        .model-type-filter.active { background: var(--text-primary); border-color: var(--text-primary); color: var(--bg-main); }
.model-type-filter[data-type="chat"].active { background: #3b82f6; border-color: #3b82f6; color: #fff; }
.model-type-filter[data-type="video"].active { background: #f59e0b; border-color: #f59e0b; color: #fff; }
.model-type-filter[data-type="image"].active { background: #22c55e; border-color: #22c55e; color: #fff; }
.model-type-filter[data-type="audio"].active { background: #ec4899; border-color: #ec4899; color: #fff; }
.model-type-filter[data-type="tool"].active { background: #8b5cf6; border-color: #8b5cf6; color: #fff; }
.model-type-filter[data-type="3d"].active { background: #06b6d4; border-color: #06b6d4; color: #fff; }
        .model-list-empty { padding: 26px 12px; color: var(--text-tertiary); font-size: 12px; text-align: center; }
        .model-filter-row { display: flex; gap: 8px; padding: 0 0 8px; align-items: center; }
        .model-filter-select-wrap {
            flex: 1; position: relative; display: flex; align-items: center;
        }
        .model-filter-icon {
            position: absolute; left: 9px; top: 50%; transform: translateY(-50%);
            color: var(--text-tertiary); pointer-events: none; flex-shrink: 0;
        }
        .model-filter-select {
            width: 100%; padding: 6px 26px 6px 28px; border: 1px solid var(--border-color);
            border-radius: 10px; background: var(--bg-primary); color: var(--text-primary);
            font-size: 12px; outline: none; cursor: pointer;
            -webkit-appearance: none; appearance: none;
            background-image: url('data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 width=%2210%22 height=%2210%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22currentColor%22 stroke-width=%222.5%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22><polyline points=%226 9 12 15 18 9%22/></svg>');
            background-repeat: no-repeat; background-position: right 8px center;
            transition: border-color 0.15s, box-shadow 0.15s;
        }
        .model-filter-select:hover { border-color: var(--text-tertiary); }
        .model-filter-select:focus { border-color: var(--primary-color); box-shadow: 0 0 0 3px rgba(99,102,241,0.1); }
        .model-vendor-filters {
            display: flex; gap: 5px; overflow-x: auto; overflow-y: hidden; padding: 0 0 6px;
            scrollbar-width: none; -ms-overflow-style: none; -webkit-overflow-scrolling: touch;
        }
        .model-vendor-filters::-webkit-scrollbar { display: none; width: 0; height: 0; }
        .model-vendor-filter:hover { background: var(--hover-bg); color: var(--text-primary); }
        .plaza-type-tab { flex: 0 0 auto; }

        .model-list { max-height: 280px; overflow-y: auto; margin-bottom: 8px; transition: max-height 0.3s ease; position: relative; }
        .model-list.expanded { max-height: 600px; overflow-y: auto; }
        .model-list::-webkit-scrollbar { width: 4px; }
        .model-list::-webkit-scrollbar-thumb { background: var(--border-color); border-radius: 2px; }

        .model-expand-btn {
            padding: 2px 12px 0;
            text-align: left;
            font-size: 13px;
            color: var(--text-tertiary);
            cursor: pointer;
            border-top: none;
            display: flex;
            align-items: center;
            justify-content: flex-start;
            gap: 6px;
            transition: 0.2s;
        }
        .model-expand-btn:hover { color: var(--primary-color); }
        .model-expand-btn::after { content: none !important; display: none !important; }
        .model-expand-btn svg { width: 28px; height: 28px; transition: transform 0.3s; stroke-width: 2px; }
        .model-list.expanded + .model-expand-btn svg { transform: rotate(180deg); }

        .model-menu-actions {
            display: flex; gap: 8px; padding: 8px 4px 0;
            border: none; margin-top: 8px; background: transparent; box-shadow: none;
        }
        .model-menu-actions .action-btn-mm {
            flex: 1; min-height: 34px; padding: 7px 10px; border-radius: 8px; font-size: 12px; font-weight: 600;
            border: 1px solid var(--border-color); background: transparent; color: var(--text-secondary);
            cursor: pointer; transition: color 0.15s ease, transform 0.12s ease; text-align: center;
        }
        .model-menu-actions .action-btn-mm:hover { background: var(--hover-bg); color: var(--text-primary); }
        .model-menu-actions .action-btn-mm.active,
        .model-menu-actions .action-btn-mm.primary { background: var(--primary-color); color: #fff; border-color: var(--primary-color); }
        .model-menu-actions .action-btn-mm.primary:hover { background: var(--primary-hover); border-color: var(--primary-hover); }
        /* 对比/会议入口：图标在前、文字在后；外层容器与按钮层均保持无框无底 */
        .model-menu #model-menu-actions,
        .model-menu #model-menu-actions .action-btn-mm.model-mode-action {
            border: none !important; background: transparent !important; box-shadow: none !important;
        }
        .model-menu-actions .model-mode-action,
        .model-menu-actions .model-mode-action:hover,
        .model-menu-actions .model-mode-action.active {
            display: inline-flex; align-items: center; justify-content: center; gap: 6px;
            border: none !important; background: transparent !important; box-shadow: none !important;
            color: var(--text-secondary); transform: none;
        }
        .model-menu-actions .model-mode-action:hover { color: var(--primary-color); }
        .model-menu-actions .model-mode-action.active { color: var(--primary-color); }
        .model-mode-action svg { width: 15px; height: 15px; flex: 0 0 15px; stroke-width: 1.8; }
        .model-mode-action:active { transform: translateY(1px); }
        .engine-version-badge {
            display: none !important;
        }

        .model-item {
            display: flex; align-items: center; justify-content: flex-start; min-height: 27px;
            height: 27px; padding: 3px 8px; border-radius: 6px; cursor: pointer;
            transition: background-color 0.16s ease, transform 0.12s ease; margin-bottom: 1px;
            outline: none;
        }
        .model-item:hover { background: var(--hover-bg); }
        .model-item:focus-visible { box-shadow: inset 0 0 0 2px var(--primary-color); }
        .model-item:active { transform: scale(.992); }
        .model-item.active { background: var(--primary-soft); }
        .model-item.model-filter-hidden,
        .model-list-heading.model-filter-hidden,
        .model-list-meta.model-filter-hidden { display: none !important; }
        .model-list-heading { padding: 6px 12px 3px; font-size: 10px; color: var(--text-tertiary); text-transform: uppercase; letter-spacing: 1px; }
        .model-list-meta { padding: 6px 12px 2px; font-size: 10px; color: var(--text-tertiary); }
        .model-item-info { flex: 1; min-width: 0; }
        .model-item-title {
            font-size: 13px;
            font-weight: 600;
            color: var(--text-primary);
            margin-bottom: 0px;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
            text-align: left;
        }
        .model-item-desc { display: none !important; }
        /* ★ 2026-08-22 同步思洋：模型标签独立行（原拼在 title 单行被 ellipsis 截断）——flex-wrap 可换行完整展示 */
        .model-item-tags { display: flex; flex-wrap: wrap; gap: 3px; margin-top: 3px; }
        .model-item-check {
            display: flex; align-items: center; justify-content: center; flex: 0 0 16px;
            width: 16px; height: 16px; margin-left: 6px; color: var(--primary-color);
            opacity: 0; transform: scale(.8); transition: opacity .16s ease, transform .16s ease;
        }
        .model-item.active .model-item-check { opacity: 1; transform: scale(1); }
        .model-item-check svg { width: 13px; height: 13px; }

        /* 多模型对比选择 */
        .agent-multi-check,
        .model-multi-check {
            width: 18px; height: 18px; border-radius: 50%;
            border: 1.5px solid var(--border-color); background: transparent;
            cursor: pointer; transition: all 0.18s ease; flex-shrink: 0;
            display: flex; align-items: center; justify-content: center;
            margin-right: 7px;
        }
        .agent-multi-check:hover,
        .model-multi-check:hover { border-color: var(--primary-color); }
        .agent-multi-check.checked,
        .model-multi-check.checked {
            border-color: var(--primary-color);
            background: var(--primary-color);
        }
        .agent-multi-check.checked::after,
        .model-multi-check.checked::after {
            content: '';
            width: 8px; height: 8px;
            background: #fff;
            -webkit-mask: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpolyline points='20 6 9 17 4 12' fill='none' stroke='%23fff' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat;
            mask: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpolyline points='20 6 9 17 4 12' fill='none' stroke='%23fff' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat;
            border-radius: 0;
        }
        .model-multi-check.disabled { opacity: 0.4; cursor: not-allowed; }
        /* 多选模式下隐藏非语言类（图像/视频/音频/3D）模型项 */
        .model-item.multi-select-hidden { display: none !important; }

        /* 已选模型标签区 — 移到 top-nav 右侧横向排列 */
        .compare-models-bar {
            display: none; align-items: center; gap: 6px;
            flex-wrap: nowrap; width: 100%;
            overflow-x: auto; overflow-y: hidden;
            padding-left: 20px;
        }
        .compare-models-bar.active { display: flex; }
        .compare-models-bar::-webkit-scrollbar { display: none; }
        .compare-model-tag {
            display: flex; align-items: center; gap: 3px;
            padding: 3px 8px 3px 8px; border-radius: 10px;
            background: var(--hover-bg); border: 1px solid var(--border-color);
            font-size: 11px; color: var(--text-secondary); font-weight: 500;
            white-space: nowrap; cursor: pointer; transition: all 0.2s; flex-shrink: 0;
        }
        .compare-model-tag:hover { border-color: var(--primary-color, #5c5ce6); background: rgba(92,92,230,0.05); }
        .compare-model-tag .tag-close {
            width: 14px; height: 14px; border-radius: 50%;
            display: none; align-items: center; justify-content: center;
            cursor: pointer; color: var(--text-tertiary); font-size: 10px;
            transition: all 0.15s; margin-left: 2px;
        }
        .compare-model-tag:hover .tag-close { display: flex; }
        .compare-model-tag .tag-close:hover { background: rgba(239,68,68,0.08); color: #dc2626; }
        .compare-model-tag .tag-dot {
            width: 6px; height: 6px; border-radius: 50%; flex-shrink: 0;
        }
        .compare-mode-badge {
            display: none; align-items: center; gap: 4px;
            padding: 3px 8px; border-radius: 10px; font-size: 10px; font-weight: 600;
            background: rgba(92,92,230,0.1); color: #5c5ce6; border: 1px solid rgba(92,92,230,0.2);
            white-space: nowrap; cursor: pointer; flex-shrink: 0;
        }
        .compare-mode-badge.active { display: flex; }
        .compare-mode-badge:hover { background: rgba(92,92,230,0.2); }
        .compare-mode-clear {
            display: flex; align-items: center; justify-content: center;
            width: 18px; height: 18px; border-radius: 50%;
            background: rgba(239,68,68,0.08); color: #dc2626;
            cursor: pointer; transition: all 0.15s; flex-shrink: 0;
        }
        .compare-mode-clear:hover { background: rgba(239,68,68,0.25); transform: scale(1.1); }

        /* 对比模式浮动输入 */
        .compare-float-input {
            position: fixed; bottom: 32px; right: 32px; z-index: 100;
            display: none; align-items: center; gap: 0;
            transition: all 0.35s cubic-bezier(0.4, 0, 0.2, 1);
        }
        .compare-float-input.active { display: flex; }
        .compare-float-input.expanded {
            width: min(560px, calc(100vw - 64px));
            background: var(--bg-main); border: 1px solid var(--border-color);
            border-radius: 28px; box-shadow: 0 8px 32px rgba(0,0,0,0.12);
            padding: 6px 6px 6px 18px;
        }
        .compare-float-input.expanded .compare-float-field {
            display: block;
        }
        .compare-float-field {
            display: none; flex: 1; border: none; outline: none;
            background: transparent; font-size: 14px; line-height: 1.5;
            color: var(--text-primary); font-family: inherit;
            min-width: 0; resize: none; max-height: 80px;
        }
        .compare-float-field::placeholder { color: var(--text-tertiary); }
        .compare-float-btn {
            width: 48px; height: 48px; border-radius: 50%; border: none;
            background: var(--primary-color);
            color: #fff; cursor: pointer; display: flex;
            align-items: center; justify-content: center;
            box-shadow: 0 4px 16px rgba(92,92,230,0.3);
            transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
            flex-shrink: 0;
        }
        .compare-float-btn:hover { transform: scale(1.08); box-shadow: 0 6px 24px rgba(92,92,230,0.4); }
        .compare-float-btn:active { transform: scale(0.95); }
        .compare-float-btn.sending {
            background: var(--border-color); cursor: default;
            animation: floatPulse 1.2s ease-in-out infinite;
        }
        @keyframes floatPulse {
            0%, 100% { opacity: 0.6; } 50% { opacity: 1; }
        }
        .compare-float-btn svg { width: 22px; height: 22px; transition: transform 0.2s; }
        .compare-float-input.expanded .compare-float-btn svg { transform: rotate(0deg); }

        /* 多模型响应区域 — 多窗口模式 */
        .multi-response-container {
            display: none; flex: 1; padding: 12px; overflow: hidden;
        }
        .multi-response-container.active { display: flex; overflow-x: auto; }
        .multi-response-container::-webkit-scrollbar { height: 6px; }
        .multi-response-container::-webkit-scrollbar-thumb { background: var(--border-color); border-radius: 3px; }
        .multi-response-container::-webkit-scrollbar-track { background: transparent; }
        .multi-response-grid {
            display: flex; gap: 12px; flex: 1; min-width: 0;
            background: transparent;
        }
        .multi-response-panel {
            display: flex; flex-direction: column;
            background: transparent; overflow: hidden;
            min-width: 320px; flex: 1;
        }
        .multi-response-header {
            padding: 6px 12px; font-size: 12px; font-weight: 600;
            color: var(--text-primary); background: transparent;
            display: flex; align-items: center; gap: 6px;
            flex-shrink: 0; user-select: none;
            cursor: grab;
        }
        .multi-response-header:active { cursor: grabbing; }
        .multi-response-header .dot {
            width: 6px; height: 6px; border-radius: 50%;
        }
        .multi-response-header .panel-title { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; cursor: pointer; }
        .multi-response-header .panel-title:hover { color: var(--primary-color); }
        .multi-response-header .panel-actions {
            display: flex; align-items: center; gap: 2px;
        }
        .multi-response-header .panel-action-btn {
            width: 24px; height: 24px; border-radius: 6px; border: none;
            background: transparent; color: var(--text-tertiary); cursor: pointer;
            display: flex; align-items: center; justify-content: center;
            transition: all 0.15s;
        }
        .multi-response-header .panel-action-btn:hover {
            background: var(--hover-bg); color: var(--text-primary);
        }
        .multi-response-header .panel-action-btn svg { width: 14px; height: 14px; }
        .multi-response-body {
            flex: 1; padding: 16px 20px; font-size: 13px; color: var(--text-secondary);
            line-height: 1.7; overflow-y: auto;
            border: 1px solid var(--border-color);
            border-radius: 12px;
            background: var(--bg-primary);
        }
        .multi-response-body::-webkit-scrollbar { width: 4px; }
        .multi-response-body::-webkit-scrollbar-thumb { background: var(--border-color); border-radius: 2px; }
        .compare-user-msg {
            margin: 12px 0 4px auto; padding: 8px 14px;
            background: rgba(92,92,230,0.1); border-radius: 14px 14px 4px 14px;
            font-size: 13px; color: var(--text-primary); max-width: 85%;
            text-align: right; white-space: pre-wrap; word-break: break-word;
        }
        .compare-assistant-msg {
            margin: 4px 0 8px 0; padding: 8px 14px;
            background: var(--hover-bg); border-radius: 14px 14px 14px 4px;
            font-size: 13px; color: var(--text-secondary); max-width: 90%;
            line-height: 1.6;
        }
        .compare-assistant-msg + .compare-assistant-msg {
            margin-top: 2px;
        }

        .multi-response-header { position: relative; }

        /* 对比设置菜单 */
        .compare-settings-btn {
            width: 24px; height: 24px; border-radius: 6px;
            border: none; background: rgba(92,92,230,0.08);
            color: var(--text-tertiary); cursor: pointer;
            display: flex; align-items: center; justify-content: center;
            transition: all 0.15s; flex-shrink: 0;
        }
        .compare-settings-btn:hover {
            background: rgba(92,92,230,0.18); color: var(--text-primary);
        }
        .compare-settings-btn svg { width: 14px; height: 14px; }
        .compare-settings-menu {
            position: absolute; top: 100%; right: 0;
            background: var(--bg-secondary, #fff);
            border: 1px solid var(--border-color);
            border-radius: 10px;
            padding: 6px 0;
            min-width: 200px;
            box-shadow: 0 8px 24px rgba(0,0,0,0.12);
            z-index: 100;
            display: none;
        }
        .compare-settings-menu.open { display: block; }
        .compare-settings-item {
            display: flex; align-items: center; justify-content: space-between;
            padding: 8px 14px;
            font-size: 12px; color: var(--text-secondary);
            cursor: pointer; transition: background 0.15s;
            user-select: none;
        }
        .compare-settings-item:hover {
            background: var(--hover-bg);
        }
        .compare-settings-item .item-label { flex: 1; }
        .compare-settings-item .item-toggle {
            width: 32px; height: 18px; border-radius: 9px;
            background: var(--border-color); position: relative;
            transition: background 0.2s; flex-shrink: 0;
        }
        .compare-settings-item .item-toggle.on {
            background: #5c5ce6;
        }
        .compare-settings-item .item-toggle::after {
            content: ''; position: absolute;
            top: 2px; left: 2px;
            width: 14px; height: 14px; border-radius: 50%;
            background: #fff; transition: transform 0.2s;
        }
        .compare-settings-item .item-toggle.on::after {
            transform: translateX(14px);
        }
        .compare-settings-divider {
            height: 1px; background: var(--border-color);
            margin: 4px 0;
        }

        /* 独立滚动模式 */
        .multi-response-container.scrollable-mode .multi-response-grid {
            flex-direction: column;
            overflow-y: auto;
        }
        .multi-response-container.scrollable-mode .multi-response-panel {
            min-height: 300px;
            max-height: none;
        }
        .multi-response-container.scrollable-mode .multi-response-body {
            max-height: 60vh;
        }

        /* 拖拽状态 */
        .multi-response-panel.dragging {
            opacity: 0.5;
            border: 2px dashed var(--primary-color, #5c5ce6);
            border-radius: 12px;
        }
        .multi-response-panel.drag-over {
            border-left: 3px solid var(--primary-color, #5c5ce6);
        }

        /* ===== 会议辩论模式 ===== */
        .meeting-toggle {
            display: flex; align-items: center; gap: 4px;
            padding: 3px 10px; border-radius: 14px;
            border: 1.5px solid var(--border-color);
            background: var(--bg-primary);
            color: var(--text-tertiary); font-size: 11px; font-weight: 600;
            cursor: pointer; transition: all 0.2s; white-space: nowrap; flex-shrink: 0;
            user-select: none;
        }
        .meeting-toggle:hover { border-color: var(--primary-color); color: var(--primary-color); }
        .meeting-toggle.active { background: #5c5ce6; color: #fff; border-color: #5c5ce6; }
        .meeting-toggle.disabled { opacity: 0.35; cursor: not-allowed; }

        /* ===== 会议/对比模式全屏覆盖层 ===== */
        /* ===== 全屏模式：直接position:fixed，不克隆DOM ===== */
        .multi-response-container.hf-fullscreen {
            position: fixed !important; inset: 0 !important;
            z-index: 99999 !important;
            background: var(--bg-main) !important;
            padding: 24px !important;
            display: flex !important;
            overflow: hidden !important;
        }
        .multi-response-container.hf-fullscreen .multi-response-grid {
            height: 100%; overflow: hidden;
        }
        .multi-response-container.hf-fullscreen .multi-response-panel {
            min-width: 0;
        }
        .multi-response-container.hf-fullscreen .multi-response-body {
            max-height: none; min-height: 0;
        }

        .meeting-container.hf-fullscreen {
            position: fixed !important; inset: 0 !important;
            z-index: 99999 !important;
            background: var(--bg-main) !important;
            padding: 24px !important;
            display: flex !important;
            flex: 1 !important;
            max-width: none !important;
            width: auto !important;
            margin: 0 !important;
            height: 100% !important;
        }
        .meeting-container.hf-fullscreen .meeting-messages {
            height: 0; flex: 1;
        }

        /* 全屏关闭按钮（共用） */
        .hf-fullscreen-close {
            position: fixed; top: 20px; right: 20px; z-index: 2147483646;
            width: 44px; height: 44px; border-radius: 50%;
            border: none; background: rgba(239,68,68,0.08);
            color: var(--error-color); cursor: pointer;
            display: flex; align-items: center; justify-content: center;
            transition: all 0.2s; box-shadow: 0 2px 12px rgba(0,0,0,0.1);
        }
        .hf-fullscreen-close:hover {
            background: var(--error-color); color: #fff;
            transform: scale(1.05); box-shadow: 0 4px 16px rgba(239,68,68,0.4);
        }
        .hf-fullscreen-close svg {
            width: 20px; height: 20px; stroke-width: 2.5;
        }

        .meeting-container {
            display: none; flex-direction: column; flex: 1; min-height: 0;
            width: 100%;
        }
        .meeting-container.active { display: flex; }
        .meeting-container-inner {
            max-width: 900px; width: 100%; margin: 0 auto;
            padding: 0 16px; display: flex; flex-direction: column; flex: 1;
            min-height: 0;
        }
        .meeting-header {
            display: flex; align-items: center; gap: 10px;
            padding: 12px 0; border-bottom: 1px solid var(--border-color);
            flex-shrink: 0;
        }
        .meeting-header-title {
            font-size: 15px; font-weight: 700; color: var(--text-primary);
        }
        .meeting-header-models {
            display: flex; gap: 6px; flex: 1; flex-wrap: wrap;
        }
        .meeting-model-chip {
            display: flex; align-items: center; gap: 4px;
            padding: 2px 8px; border-radius: 10px;
            font-size: 11px; font-weight: 600;
            background: var(--hover-bg); color: var(--text-secondary);
        }
        .meeting-model-chip .dot { width: 6px; height: 6px; border-radius: 50%; }
        .meeting-messages {
            flex: 1; overflow-y: auto; padding: 16px 0 100px;
            display: flex; flex-direction: column; gap: 16px;
        }
        .meeting-messages::-webkit-scrollbar { display: none; }
        .meeting-messages { scrollbar-width: none; -ms-overflow-style: none; }

        .meeting-msg {
            display: flex; gap: 10px; max-width: 85%;
            animation: meetingFadeIn 0.3s ease;
            align-items: flex-start;
        }
        @keyframes meetingFadeIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }
        .meeting-msg.host { align-self: flex-end; flex-direction: row-reverse; max-width: 60%; }
        .meeting-msg.host .msg-content { max-width: none; }
        .meeting-msg .msg-avatar {
            width: 32px; height: 32px; border-radius: 50%;
            display: flex; align-items: center; justify-content: center;
            font-size: 14px; flex-shrink: 0; font-weight: 700;
            color: #fff;
        }
        .meeting-msg.host .msg-avatar { background: #5c5ce6; }
        .meeting-msg .msg-body {
            flex: 1; min-width: 0;
            display: flex; flex-direction: column; gap: 4px;
        }
        .meeting-msg .msg-content {
            padding: 8px 12px; border-radius: 14px;
            font-size: 13px; line-height: 1.7;
            background: var(--bg-primary); border: 1px solid var(--border-color);
            color: var(--text-primary);
            word-break: break-word;
            /* ★ 2026-08-12 颜色加固：任何主题下不出现白字白底（老板反馈浅色模式会议 AI 总结文字白色） */
            color: var(--text-primary) !important;
        }
        .meeting-msg .msg-content :not(code):not(pre):not(.chat-img-blocked) {
            color: inherit !important;
        }
        .meeting-msg .msg-content code,
        .meeting-msg .msg-content pre { color: #111 !important; }
        :root[data-theme="dark"] .meeting-msg .msg-content code,
        :root[data-theme="dark"] .meeting-msg .msg-content pre { color: #e8e8ed !important; }
        .meeting-msg .msg-content.markdown-body { padding: 10px 14px; }
        .meeting-msg .msg-content.markdown-body p { margin: 0 0 6px; }
        .meeting-msg .msg-content.markdown-body p:last-child { margin-bottom: 0; }
        .meeting-msg .msg-content.markdown-body pre { margin: 6px 0; border-radius: 8px; font-size: 12px; }
        .meeting-msg .msg-content.markdown-body code { font-size: 12px; }
        .meeting-msg .msg-content.markdown-body ul, .meeting-msg .msg-content.markdown-body ol { padding-left: 18px; margin: 4px 0; }
        .meeting-msg .msg-content.markdown-body blockquote { margin: 6px 0; padding: 4px 10px; border-left: 3px solid var(--border-color); }
        .meeting-msg .msg-content.markdown-body table { font-size: 12px; margin: 6px 0; }
        .meeting-msg.host .msg-content {
            /* ★ 2026-08-25 统一窗口对话样式:会议主持人(用户)消息改用普通对话用户气泡同款配色(浅灰底深字),去掉蓝底黑字 */
            background: var(--user-bubble); color: var(--text-primary); border-color: var(--border-color);
        }
        .meeting-msg .msg-name {
            font-size: 11px; font-weight: 600;
            color: var(--text-tertiary);
        }
        .meeting-msg.host .msg-name { color: var(--text-tertiary); text-align: right; }


        .meeting-input-area {
            flex-shrink: 0; padding: 12px 0;
            display: flex; align-items: center;
            position: relative;
        }
        .meeting-input {
            flex: 1; resize: none; border: 1px solid transparent;
            border-radius: 999px; padding: 10px 48px 10px 16px;
            font-size: 13px; line-height: 1.5;
            background: var(--hover-bg); color: var(--text-primary);
            outline: none; min-height: 40px; max-height: 120px;
            font-family: inherit; transition: all 0.2s;
        }
        .meeting-input:focus { background: var(--border-color); border-color: var(--border-color); }
        .meeting-send-btn {
            position: absolute; right: 4px; top: 50%; transform: translateY(-50%);
            width: 32px; height: 32px; border-radius: 50%;
            border: none; background: var(--text-primary); color: var(--bg-primary);
            cursor: pointer; display: flex; align-items: center; justify-content: center;
            transition: all 0.15s;
        }
        .meeting-send-btn:hover { opacity: 0.8; transform: translateY(-50%) scale(1.05); }
        .meeting-send-btn:disabled { opacity: 0.3; cursor: not-allowed; transform: translateY(-50%); }
        .meeting-send-btn svg { width: 16px; height: 16px; }

        .meeting-thinking {
            color: var(--text-tertiary); font-size: 13px;
            display: inline-flex; align-items: center; gap: 2px;
        }
        .meeting-dots {
            display: inline-block;
            animation: meetingDots 1.4s steps(4, end) infinite;
            width: 1.5em;
            text-align: left;
        }
        @keyframes meetingDots {
            0% { content: ''; opacity: 0.3; }
            25% { opacity: 0.5; }
            50% { opacity: 0.7; }
            75% { opacity: 1; }
        }
        .meeting-cursor {
            display: inline-block;
            width: 2px; height: 14px;
            background: var(--primary-color, #5c5ce6);
            margin-left: 2px;
            vertical-align: text-bottom;
            animation: meetingCursorBlink 0.8s infinite;
        }
        @keyframes meetingCursorBlink {
            0%, 100% { opacity: 1; }
            50% { opacity: 0; }
        }
        /* e5e-Lens 意图模型（auto-router）- 灰色无边框统一风格 */
        .model-item[data-model-id="auto-router"] {
            background: var(--bg-primary);
            border: none;
            margin-bottom: 8px;
            border-radius: 9px;
            position: relative;
        }
        .model-item[data-model-id="auto-router"]:hover { background: var(--hover-bg); transform: none; box-shadow: none; }
        .model-item[data-model-id="auto-router"].active { background: var(--primary-soft); box-shadow: none; }
        .model-item[data-model-id="auto-router"] .model-item-title {
            color: #4b5563;
            font-weight: 500;
            font-size: 13px;
        }
        .model-item[data-model-id="auto-router"] .model-item-title::before {
            content: '';
        }
        .model-item[data-model-id="auto-router"] .model-item-desc {
            color: #6b7280;
            font-size: 11px;
            font-weight: 400;
            margin-top: 2px;
        }

        .menu-footer { display: flex; gap: 8px; margin-top: 12px; padding-top: 16px; border-top: none; }

        /* 兼容移动端 */
        /* ----- CSS 变量：亮色/暗色模式（★ 2026-08-11 UI 全面优化：清爽配色/统一灰调/克制的单一主色） ----- */
        :root {
            /* ★ 2026-08-18 P0令牌统一：所有主色/文字/背景/边框/阴影alias到ui-kit.css的--xk-*权威源，消除三套令牌冲突 */
            --bg-main: var(--xk-bg-card, #ffffff);
            --bg-primary: var(--xk-bg-card, #ffffff);
            --bg-sidebar: #f6f6f8;
            --hover-bg: var(--xk-bg-hover, #f1f1f5);
            --text-primary: var(--xk-text-1, #17181c);
            --text-secondary: var(--xk-text-2, #4b4d55);
            --text-tertiary: var(--xk-text-3, #8b8d97);
            --border-color: var(--xk-border, #e8e8ee);
            --border-focus: #c6c8d2;
            --input-bg: var(--xk-bg-card, #ffffff);
            --input-shadow: 0 4px 20px rgba(47,111,237,0.05);
            --user-bubble: #f1f1f5;
            --btn-black: #1a1a1e;
            --btn-black-text: #ffffff;
            --code-bg: #f5f5f8;
            --font-family: var(--font-ui);
            --font-display: var(--font-display, 'XuanKunSans', 'Inter', sans-serif);
            --success-color: var(--xk-success, #0f9d7a);
            --error-color: var(--xk-danger, #e5484d);
            --warning-color: var(--xk-warning, #e8871e);
            --primary-color: var(--xk-primary, #2f6fed);
            --primary-hover: var(--xk-primary-hover, #2457c9);
            --primary-soft: var(--xk-primary-light, rgba(47,111,237,0.08));
            --like-color: var(--xk-success, #0f9d7a);
            --dislike-color: var(--xk-danger, #e5484d);
            --share-color: #7c5cf0;
            --border-focus-dark: #d4d4dc;
            --shadow-card: var(--xk-shadow-card, 0 1px 2px rgba(23,24,28,0.04), 0 4px 12px rgba(23,24,28,0.04));
            --shadow-pop: var(--xk-shadow-pop, 0 8px 28px rgba(23,24,28,0.1));
            color-scheme: light;
        }
        :root[data-theme="dark"] {
            --bg-main: var(--xk-bg-card, #1b1c20);
            --bg-primary: var(--xk-bg-card, #1b1c20);
            --bg-sidebar: #141518;
            --hover-bg: var(--xk-bg-hover, #2a2c33);
            --text-primary: var(--xk-text-1, #eef0f4);
            --text-secondary: var(--xk-text-2, #b6b9c3);
            --text-tertiary: var(--xk-text-3, #767a87);
            --border-color: var(--xk-border, rgba(255,255,255,0.09));
            --border-focus: rgba(255,255,255,0.28);
            --input-bg: var(--xk-bg-hover, #2a2c33);
            --input-shadow: 0 4px 20px rgba(91,141,245,0.15);
            --user-bubble: #2a2c33;
            --btn-black: #eef0f4;
            --btn-black-text: #17181c;
            --code-bg: #121317;
            --primary-color: var(--xk-primary, #5b8df5);
            --primary-hover: var(--xk-primary-hover, #7ba4f8);
            --primary-soft: var(--xk-primary-light, rgba(91,141,245,0.14));
            --border-focus-dark: #1a1b1f;
            --shadow-card: var(--xk-shadow-card, 0 1px 2px rgba(0,0,0,0.2), 0 4px 12px rgba(0,0,0,0.16));
            --shadow-pop: var(--xk-shadow-pop, 0 8px 28px rgba(0,0,0,0.4));
            color-scheme: dark;
        }
        /* 登录按钮修正样式 - 完美垂直水平居中对齐，无投影，悬停背景变浅 */
        .login-btn-primary {
            background-color: var(--btn-black);
            color: var(--btn-black-text);
            border: none;
            height: 32px;
            padding: 0 16px;
            border-radius: 16px;
            font-size: 14px;
            font-weight: 600;
            cursor: pointer;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            line-height: 1;
            margin-right: 8px;
            /* 移除所有投影效果 */
            box-shadow: none;
            transition: background-color 0.2s ease;
        }

        .login-btn-primary:hover {
            /* 悬停效果：背景变浅，无位移，无投影 */
            background-color: var(--hover-bg);
            color: var(--btn-black-text);
            transform: none;
            box-shadow: none;
        }

        /* 关于我们 - 全页样式 */
        .about-page-overlay {
            display: none; position: fixed; inset: 0; z-index: 30000;
            background: var(--bg-main); overflow: hidden;
        }
        .about-page-overlay.active { display: flex; flex-direction: column; }
        .about-page {
            width: 100%; height: 100%; display: flex; flex-direction: column;
            animation: aboutSlideIn 0.3s ease;
        }
        @keyframes aboutSlideIn {
            from { opacity: 0; transform: translateY(20px); }
            to { opacity: 1; transform: translateY(0); }
        }
        .about-header {
            display: flex; align-items: center; justify-content: space-between;
            padding: 12px 24px; border-bottom: 1px solid var(--border-color);
            background: var(--bg-main); flex-shrink: 0;
        }
        .about-header-left { display: flex; align-items: center; gap: 10px; }
        .about-logo {
            width: 32px; height: 32px; border-radius: 8px;
            background: linear-gradient(135deg, var(--success-color, #10b981), #059669);
            display: flex; align-items: center; justify-content: center;
        }
        .about-header-title { font-size: 16px; font-weight: 700; color: var(--text-primary); }
        .about-header-badge {
            padding: 2px 8px; border-radius: 10px; font-size: 11px; font-weight: 600;
            background: var(--hover-bg); color: var(--text-secondary);
        }
        .about-page-close {
            display: flex; align-items: center; gap: 6px;
            padding: 6px 14px; border-radius: 8px; border: 1px solid var(--border-color);
            background: transparent; color: var(--text-secondary); cursor: pointer;
            font-size: 13px; transition: all 0.2s;
        }
        .about-page-close:hover { background: var(--hover-bg); color: var(--text-primary); }
        .about-main {
            flex: 1; overflow-y: auto; padding: 0 24px 40px;
            max-width: 860px; margin: 0 auto; width: 100%;
        }
        .about-hero {
            text-align: center; padding: 48px 0 36px;
        }
        .about-hero-title {
            font-size: 36px; font-weight: 800; color: var(--text-primary);
            margin: 0 0 8px;
        }
        .about-hero-subtitle {
            font-size: 16px; color: var(--text-tertiary); margin: 0 0 16px;
        }
        .about-hero-desc {
            font-size: 14px; color: var(--text-secondary); line-height: 1.8;
            max-width: 600px; margin: 0 auto;
        }
        .about-stats {
            display: flex; justify-content: center; gap: 32px;
            margin-top: 28px; padding-top: 24px;
            border-top: 1px solid var(--border-color);
        }
        .about-stat { text-align: center; }
        .about-stat-value {
            font-size: 28px; font-weight: 800; color: var(--text-primary);
        }
        .about-stat-label {
            font-size: 12px; color: var(--text-tertiary); margin-top: 2px;
        }
        .about-intro-section { margin-bottom: 32px; }
        .about-intro-grid {
            display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px;
        }
        .about-intro-card {
            padding: 20px; border-radius: 12px;
            border: 1px solid var(--border-color); background: var(--bg-primary);
        }
        .about-intro-icon { font-size: 24px; margin-bottom: 10px; }
        .about-intro-card h3 {
            font-size: 15px; font-weight: 700; color: var(--text-primary); margin: 0 0 8px;
        }
        .about-intro-card p {
            font-size: 13px; color: var(--text-secondary); line-height: 1.7; margin: 0;
        }
        .about-feature-section {
            margin-bottom: 32px;
        }
        .about-feature-section-header {
            display: flex; align-items: flex-start; gap: 14px;
            margin-bottom: 16px;
        }
        .about-feature-section-icon { font-size: 28px; line-height: 1; flex-shrink: 0; }
        .about-feature-section-title {
            font-size: 18px; font-weight: 700; color: var(--text-primary); margin: 0 0 4px;
        }
        .about-feature-section-desc {
            font-size: 13px; color: var(--text-tertiary); margin: 0;
        }
        .about-card-grid {
            display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px;
        }
        .about-card {
            padding: 20px; border-radius: 12px; border: 1px solid var(--border-color);
            background: var(--bg-primary); transition: all 0.2s;
        }
        .about-card:hover { border-color: var(--success-color); box-shadow: 0 2px 12px rgba(0,0,0,0.06); }
        .about-card-icon {
            width: 40px; height: 40px; border-radius: 10px;
            display: flex; align-items: center; justify-content: center;
            font-size: 20px; margin-bottom: 12px;
        }
        .about-card h3 {
            font-size: 14px; font-weight: 600; color: var(--text-primary); margin: 0 0 6px;
        }
        .about-card p {
            font-size: 12px; color: var(--text-tertiary); line-height: 1.6; margin: 0;
        }
        .about-tech-section {
            padding: 24px 0; border-top: 1px solid var(--border-color); margin-top: 8px;
        }
        .about-tech-section h2 {
            font-size: 16px; font-weight: 700; color: var(--text-primary); margin: 0 0 12px;
        }
        .about-tech-tags { display: flex; flex-wrap: wrap; gap: 8px; }
        .about-tech-tag {
            padding: 6px 14px; border-radius: 20px; font-size: 12px; font-weight: 500;
            background: var(--hover-bg); color: var(--text-secondary);
        }
        .about-footer {
            text-align: center; padding: 20px 0 0; font-size: 12px;
            color: var(--text-tertiary); border-top: 1px solid var(--border-color); margin-top: 16px;
        }
        .login-btn-primary:active {
            transform: none;
            background-color: var(--border-color);
        }

        /* 兼容移动端的微调 + #4 顶部优化 */
        /* 暗色模式原生控件适配 */
        :root {
            color-scheme: light dark;
        }

        * { margin: 0; padding: 0; box-sizing: border-box; font-family: var(--font-family); }
        * { -webkit-tap-highlight-color: transparent; }
        /* 全局光标：按钮/链接显示手型，文字显示文字光标 */
        button, [role="button"], a, .btn, .nav-item, .model-item, .history-item,
                button, [role="button"], a, .btn, .nav-item, .model-item, .history-item,
        .model-trigger, .action-btn, .icon-btn, .tab-btn, .close-btn,
        .sidebar-item, .app-card, .app-tab, .settings-item, .user-profile-card,
        .page-action-btn, .add-row-btn, .custom-provider-submit, .close-modal-btn,
        .writer-btn, .writer-back-btn, .voice-footer-btn-cancel, .btn-cancel,
        .btn-primary, .model-expand-btn, .cp-action-btn, .panel-action-btn,
        .agent-selector-item, .agent-selector-trigger, .fs-header-btn,
        .meeting-toggle, .compare-mode-badge, .compare-mode-clear,
        .compare-settings-btn, .multi-response-header .panel-title,
        .model-multi-check, .agent-multi-check, .tag-close { cursor: pointer; }
        button span, button label, [role="button"] span, a span { cursor: pointer !important; }
        /* 全局安全区域与移动端优化 */
        html {
            /* iOS 安全区域环境变量 */
            --sat: env(safe-area-inset-top, 0px);
            --sar: env(safe-area-inset-right, 0px);
            --sab: env(safe-area-inset-bottom, 0px);
            --sal: env(safe-area-inset-left, 0px);
            -webkit-text-size-adjust: 100%;
            -webkit-tap-highlight-color: transparent;
        }
        body { background: linear-gradient(180deg, #f8fafc 0%, #f1f5f9 100%); color: var(--text-primary); display: flex; height: 100vh; height: 100dvh; overflow: hidden; font-size: 15px; transition: background 0.3s ease; -webkit-overflow-scrolling: touch; }
        html { scroll-behavior: smooth; }

        .mobile-overlay { display: none; position: fixed; inset: 0; background: rgba(0,0,0,0.5); z-index: 90; opacity: 0; transition: 0.3s; }
        /* ----- 左侧边栏新样式 ----- */
        .sidebar {
            width: 260px; background: rgba(255, 255, 255, .55); backdrop-filter: blur(24px) saturate(1.3); -webkit-backdrop-filter: blur(24px) saturate(1.3); display: flex; flex-direction: column;
            transition: margin-left 0.3s cubic-bezier(0.4, 0, 0.2, 1); z-index: 100;
            flex-shrink: 0; padding: 16px 12px; padding-top: calc(16px + env(safe-area-inset-top, 0px)); padding-bottom: calc(16px + env(safe-area-inset-bottom, 0px)); padding-left: calc(12px + env(safe-area-inset-left, 0px));
            height: 100vh; height: 100dvh;
        }
        .sidebar.collapsed {
            display: none !important;
        }
        :root[data-theme="dark"] .sidebar {
            background: rgba(18, 18, 18, .55);
        }
        :root[data-theme="dark"] .main-content {
            background: transparent;
        }
        :root[data-theme="dark"] body {
            background: linear-gradient(135deg, #101926 0%, #171627 48%, #10221f 100%);
        }

        /* ★ 全局规则：Coder模式/写作模式下侧边栏默认折叠（非移动端），对话窗口左边紧贴设备边缘 */
        .sidebar-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px; padding: 0 4px; }
        .sidebar-logo { display: flex; align-items: center; }
        .sidebar-logo img { height: 33px; width: auto; }

        .collapse-btn {
            background: transparent; border: none; color: var(--text-secondary);
            cursor: pointer; display: flex; align-items: center; justify-content: center;
            width: 32px; height: 32px; border-radius: 8px; transition: 0.2s;
        }
        .collapse-btn:hover { background: var(--hover-bg); color: var(--text-primary); }
        .collapse-btn svg { width: 18px; height: 18px; }
        .sidebar:hover #close-sidebar-btn { opacity: 1 !important; }
        .sidebar { position: relative; }

        .sidebar-nav { display: flex; flex-direction: column; gap: 1px; margin-bottom: 24px; }
        .nav-item {
            display: flex; align-items: center; gap: 12px; width: 100%; padding: 10px 12px;
            background: transparent; border: none; color: var(--text-primary);
            font-size: 14px; font-weight: 500; border-radius: 10px; cursor: pointer;
            text-align: left; transition: 0.2s;
        }
        /* ★ 2026-08-01 菜单 hover 灰色背景加 10% 透明度（老板指令） */
        .nav-item:hover { background: rgba(229, 229, 235, .9); }
        .nav-item.active { background: rgba(229, 229, 235, .9); }
        :root[data-theme="dark"] .nav-item:hover { background: rgba(47, 47, 47, .9); }
        :root[data-theme="dark"] .nav-item.active { background: rgba(47, 47, 47, .9); }
        .nav-item svg { width: 18px; height: 18px; color: var(--text-secondary); }
        .nav-item:hover svg { color: var(--text-primary); }

        /* ★ 2026-08-25 创作分类菜单：完全复用「更多功能」浮层样式（.sidebar-more-menu/.sidebar-more-item）——仅补 chevron 旋转与父级 active 态 */
        #creation-nav-btn.active .sidebar-more-chevron { transform: rotate(180deg); }

        /* 无限画布按钮图标扁平化 */
        #canvas-mode-btn svg {
            stroke-width: 1.5px !important;
            stroke-linecap: round !important;
            stroke-linejoin: round !important;
        }
        #canvas-mode-btn:hover svg {
            stroke: var(--primary-color) !important;
        }

        /* 无限画布 AI 工具栏 - 与 Tldraw 原生 UI 风格统一 */
        .ai-tool-btn {
            width: 40px !important;
            height: 40px !important;
            border-radius: 0 !important;
            border: none !important;
            background: transparent !important;
            transition: background 0.15s ease !important;
            cursor: pointer !important;
            display: flex !important;
            align-items: center !important;
            justify-content: center !important;
            color: #5c5c5c !important;
        }
        .ai-tool-btn:hover {
            background: var(--hover-bg) !important;
            color: #1d1d1f !important;
            transform: none !important;
            box-shadow: none !important;
        }
        .ai-tool-btn:active {
            background: var(--border-color) !important;
        }
        .ai-tool-btn svg {
            stroke-width: 1.75px !important;
            width: 20px !important;
            height: 20px !important;
        }
        /* 测试按钮隐藏 */
        .ai-tool-btn.test-btn {
            display: none !important;
        }
        /* 暗色模式下的工具栏 */
        :root[data-theme="dark"] .ai-tool-btn {
            color: #a0a0a0 !important;
        }
        :root[data-theme="dark"] .ai-tool-btn:hover {
            background: rgba(255, 255, 255, 0.06) !important;
            color: #e0e0e0 !important;
        }

        .sidebar-section { margin-bottom: 20px; }
        #chats-section { flex: 1; display: flex; flex-direction: column; min-height: 0; margin-bottom: 0; }
        .section-header {
            display: flex; align-items: center; justify-content: space-between;
            padding: 8px 12px 6px; font-size: 10.5px; font-weight: 700; letter-spacing: .12em; color: var(--text-tertiary);
            cursor: pointer; border-radius: 8px; transition: 0.2s;
        }
        .section-header:hover { color: var(--text-secondary); }
        .section-header .chevron { width: 14px; height: 14px; transition: transform 0.2s; }
        .sidebar-section.collapsed .chevron { transform: rotate(-90deg); }
        .section-content { display: flex; flex-direction: column; gap: 1px; margin-top: 4px; }
        #chats-section .section-content { flex: 1; overflow-y: auto; min-height: 0; }
        .sidebar-section.collapsed .section-content { display: none; }

        .history-group-title {
            padding: 12px 12px 6px; font-size: 12px; font-weight: 600;
            color: var(--text-tertiary);
        }
        .history-item-wrapper { position: relative; margin: 0 4px; }
        .history-item-wrapper .nav-item { padding: 8px 8px; font-size: 13.5px; border-radius: 8px; }
        .history-item-wrapper .more-btn {
            position: absolute; right: 8px; top: 50%; transform: translateY(-50%);
            display: none; background: transparent; border: none; color: var(--text-tertiary);
            width: 24px; height: 24px; border-radius: 6px; cursor: pointer;
            align-items: center; justify-content: center;
        }
        .history-item-wrapper:hover .more-btn { display: flex; }
        .more-btn:hover { background: var(--border-color); color: var(--text-primary); }

        .sidebar-footer { margin-top: auto; padding-top: 10px; position: relative; border-top: none; }

        /* 侧边栏栏目移至主内容区顶部 */
        .sidebar-items-bar { display: flex; align-items: center; gap: 2px; padding: 0 12px 4px; width: 100%; max-width: 800px; margin: 0 auto; box-sizing: border-box; }
        /* ★ 2026-08-15 快捷工具栏实心背景+边框（老板：不能透明，要有边框）——半透明白底+毛玻璃改实心主题色，保留边框 */
        .sidebar-item-btn { display: flex; align-items: center; gap: 6px; padding: 5px 12px; border: 1px solid var(--border-color, #e5e5ea); background: var(--bg-primary); color: var(--text-tertiary); border-radius: 6px; cursor: pointer; font-size: 12.5px; font-weight: 500; transition: all 0.2s; white-space: nowrap; }
        .sidebar-item-btn:hover { background: rgba(92, 92, 230, 0.05); color: var(--primary-color); border-color: var(--text-tertiary); }
        :root[data-theme="dark"] .sidebar-item-btn { background: var(--bg-primary); border-color: rgba(255, 255, 255, .08); }
        :root[data-theme="dark"] .sidebar-item-btn:hover { background: rgba(30, 41, 59, .68); border-color: rgba(255, 255, 255, .14); color: var(--primary-color); }
        .sidebar-item-btn svg { width: 16px; height: 16px; }
        .sidebar-item-btn.active { background: rgba(59, 130, 246, 0.1); color: var(--accent-color, var(--primary-color)); }
        .sidebar-item-btn.active svg { color: var(--accent-color, var(--primary-color)); }
        @media (max-width: 768px) {
            .sidebar-items-bar { padding: 4px 8px; gap: 1px; overflow-x: auto; }
            .sidebar-item-btn { padding: 6px 12px; font-size: 12px; }
        }
        /* ========== 侧边栏底部用户区（2026-07-28 重构：与工作台玻璃拟态统一） ========== */
        .user-profile-card {
            margin: 4px 2px 2px; padding: 9px 10px; border-radius: 14px; cursor: pointer; transition: background .18s, border-color .18s, box-shadow .18s;
            position: relative; border: 1px solid rgba(255,255,255,.55);
            background: rgba(255,255,255,.34);
        }
        .user-profile-card:hover { background: rgba(255,255,255,.66); border-color: rgba(255,255,255,.85); box-shadow: 0 6px 18px rgba(56,73,102,.10); }
        .user-profile-card.active { background: rgba(255,255,255,.66); border-color: rgba(255,255,255,.85); }
        :root[data-theme="dark"] .user-profile-card { background: rgba(30,43,61,.45); border-color: rgba(255,255,255,.07); }
        :root[data-theme="dark"] .user-profile-card:hover, :root[data-theme="dark"] .user-profile-card.active { background: rgba(48,65,88,.62); border-color: rgba(255,255,255,.10); }
        .user-info-row { display: flex; align-items: center; gap: 10px; width: 100%; }
        .user-avatar { width: 32px; height: 32px; border-radius: 50%; background: linear-gradient(135deg, var(--primary-color), var(--primary-hover)); color: #fff; display: flex; align-items: center; justify-content: center; font-weight: 600; font-size: 13px; flex-shrink: 0; box-shadow: 0 2px 8px rgba(99,102,241,.28); overflow: hidden; position: relative; }
        .user-avatar img { width: 100%; height: 100%; object-fit: cover; position: absolute; inset: 0; display: none; }
        .user-details { flex: 1; display: flex; flex-direction: column; min-width: 0; gap: 2px; }
        .user-name-line { display: flex; align-items: center; gap: 6px; min-width: 0; width: 100%; white-space: nowrap; }
        .user-name-text { min-width: 0; font-size: 13.5px; font-weight: 600; color: var(--text-primary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
        .user-plan-text { flex-shrink: 0; font-size: 10px; color: var(--text-secondary); display: inline-flex; align-items: center; padding: 1.5px 8px; border-radius: 999px; background: rgba(125,140,160,.14); line-height: 1.5; white-space: nowrap; }
        .chevron-icon { color: var(--text-tertiary); transition: transform 0.25s; flex-shrink: 0; }
        .user-profile-card.active .chevron-icon { transform: rotate(180deg); }

        /* 统一用户菜单 */
        .user-settings-dropdown {
            position: absolute; bottom: calc(100% + 10px); left: 0; right: 0;
            width: 100%;
            background: #ffffff; /* ★ 2026-08-27 老板要求:头像弹出层不透明 */
            border: 1px solid var(--border-color, rgba(15,23,42,.10));
            border-radius: 16px;
            box-shadow: 0 18px 48px rgba(31,45,71,.18);
            display: none; flex-direction: column; padding: 8px; z-index: 100;
            animation: slideUp 0.2s ease-out;
            max-height: min(64vh, 560px); overflow-y: auto;
        }
        :root[data-theme="dark"] .user-settings-dropdown {
            background: #141e2e; /* 不透明深色 */ border-color: rgba(255,255,255,.10);
            box-shadow: 0 18px 48px rgba(0,0,0,.45);
        }
        .user-profile-card.active .user-settings-dropdown { display: flex; }
        @keyframes slideUp { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }
        @keyframes menuFadeIn { from { opacity: 0; transform: translateY(6px) scale(.98); } to { opacity: 1; transform: translateY(0) scale(1); } }

        /* 菜单头部：用户身份卡 */
        .um-head {
            display: flex; align-items: center; gap: 10px; padding: 10px 10px 12px;
            border-bottom: 1px solid var(--border-color); margin-bottom: 6px;
        }
        .um-head-avatar { width: 38px; height: 38px; border-radius: 50%; background: linear-gradient(135deg, var(--primary-color), var(--primary-hover)); color: #fff; display: flex; align-items: center; justify-content: center; font-weight: 700; font-size: 15px; flex-shrink: 0; overflow: hidden; position: relative; box-shadow: 0 2px 10px rgba(99,102,241,.30); }
        .um-head-avatar img { width: 100%; height: 100%; object-fit: cover; position: absolute; inset: 0; }
        .um-head-info { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
        .um-head-name { font-size: 14px; font-weight: 700; color: var(--text-primary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: flex; align-items: center; gap: 6px; }
        .um-badge { font-size: 10px; font-weight: 700; padding: 2px 8px; border-radius: 999px; background: rgba(59,130,246,.12); color: var(--accent-color, #3b82f6); letter-spacing: .02em; flex-shrink: 0; }
        .um-badge.enterprise { background: rgba(59,130,246,.16); }
        .um-head-sub { font-size: 11px; color: var(--text-tertiary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

        /* 菜单分组与项（kicker 标签风格对齐工作台 wb-card-kicker） */
        .um-group { padding: 2px 0; }
        .um-group + .um-group { border-top: 1px solid var(--border-color); margin-top: 6px; padding-top: 6px; }
        .um-label { font-size: 10px; font-weight: 700; letter-spacing: .12em; color: var(--text-tertiary); padding: 6px 10px 4px; user-select: none; }
        .um-item {
            display: flex; align-items: center; gap: 10px; padding: 8px 10px;
            border-radius: 10px; font-size: 13px; font-weight: 500; color: var(--text-primary);
            transition: background .15s; cursor: pointer; min-height: 36px; position: relative;
        }
        .um-item:hover { background: rgba(255,255,255,.72); }
        :root[data-theme="dark"] .um-item:hover { background: rgba(48,65,88,.55); }
        .um-item:active { background: var(--hover-bg); }
        .um-item svg { width: 16px; height: 16px; color: var(--text-secondary); flex-shrink: 0; }
        .um-item:hover svg { color: var(--text-primary); }
        .um-item.primary { color: var(--accent-color, #3b82f6); font-weight: 600; }
        .um-item.primary svg { color: var(--accent-color, #3b82f6); }
        .um-item.primary:hover { background: rgba(59,130,246,.10); }
        .um-item.danger { color: var(--error-color); }
        .um-item.danger:hover { background: rgba(239, 68, 68, .08); }
        .um-item.danger svg { color: var(--error-color); }
        .um-item .um-right { margin-left: auto; display: flex; align-items: center; gap: 6px; }
        .um-item .um-badge-num { background: var(--accent-color, #3b82f6); color: #fff; font-size: 10.5px; font-weight: 600; padding: 1px 7px; border-radius: 10px; }
        .um-item .um-ver { font-size: 11.5px; color: var(--text-tertiary); font-weight: 400; }
        .um-item.static { cursor: default; }
        .um-item.static:hover { background: transparent; }

        /* 兼容旧类名（移动端 media query 仍引用 .settings-item/.settings-divider） */
        .settings-item {
            display: flex; align-items: center; gap: 10px; padding: 10px 12px;
            border-radius: 8px; font-size: 13px; color: var(--text-primary);
            transition: 0.2s; cursor: pointer;
            min-height: 40px;
        }
        .settings-item:hover { background: var(--hover-bg); }
        .settings-item:active { background: var(--hover-bg); }
        .settings-item svg { width: 16px; height: 16px; color: var(--text-secondary); flex-shrink: 0; }
        .settings-item.danger { color: var(--error-color); }
        .settings-item.danger:hover { background: rgba(239, 68, 68, 0.05); }
        .settings-item.danger svg { color: var(--error-color); }
        .settings-divider { height: 1px; background: var(--border-color); margin: 6px 0; }

        .claim-discount-btn {
            display: flex; align-items: center; justify-content: center; gap: 8px;
            width: 100%; padding: 8px 0; border-radius: 20px;
            background: transparent; border: 1px solid var(--border-color);
            color: var(--text-primary); font-size: 13px; font-weight: 500;
            cursor: pointer; transition: 0.2s;
        }
        .claim-discount-btn:hover { background: var(--hover-bg); }
        .claim-discount-btn svg { width: 16px; height: 16px; }


        .api-key-link { font-size: 16px; color: var(--text-secondary); text-decoration: none; display: flex; align-items: center; margin-right: 5px; font-weight: 600; transition: color 0.2s; }
        .api-key-link:hover { color: var(--primary-color); }

        /* PC 端输入框底角模型名称：保持原来的灰度样式位置不动 */
        .model-name-display { font-size: 13px; color: var(--text-tertiary); margin-right: 12px; font-weight: 400; white-space: nowrap; user-select: none; }

        /* 思考模式样式 - 灰色无边框统一风格 */
        /* 思考模式样式 - DeepSeek 风格 */
        .thinking-wrapper {
            margin-bottom: 8px;
            overflow: hidden;
        }
        .thinking-wrapper.collapsed .thinking-content {
            /* ★ 2026-08-24 workbuddy 模式：折叠态显示最新几行（限高+底部渐变遮罩+滚动到最新），
               不整段隐藏也不全文展开——GLM-5.2 等深度思考模型思考长且含答案，全文展开会与正文重复 */
            display: block;
            max-height: 88px;
            overflow-y: auto;
            overscroll-behavior: contain;
            -webkit-mask-image: linear-gradient(to bottom, black 0, black calc(100% - 24px), transparent 100%);
            mask-image: linear-gradient(to bottom, black 0, black calc(100% - 24px), transparent 100%);
        }
        .thinking-header {
            display: flex;
            align-items: center;
            justify-content: space-between;
            padding: 8px 0;
            cursor: pointer;
            user-select: none;
        }
        .thinking-header:hover .thinking-toggle-text {
            color: #333;
        }
        .thinking-title {
            display: flex;
            align-items: center;
            gap: 6px;
            font-size: 14px;
            font-weight: 400;
        }
        /* 思考中状态 - 蓝色旋转图标 */
        .thinking-title .think-icon-loading {
            width: 18px;
            height: 18px;
            border: 2px solid #e0e0e0;
            border-top-color: #4d6bfe;
            border-radius: 50%;
            animation: think-spin 0.8s linear infinite;
            flex-shrink: 0;
        }
        @keyframes think-spin {
            to { transform: rotate(360deg); }
        }
        /* 已思考状态 - 绿色勾选图标 */
        .thinking-title .think-icon-done {
            width: 18px;
            height: 18px;
            border-radius: 50%;
            background: #52c41a;
            display: flex;
            align-items: center;
            justify-content: center;
            flex-shrink: 0;
        }
        .thinking-title .think-icon-done svg {
            width: 10px;
            height: 10px;
            color: white;
            stroke-width: 3;
        }
        .thinking-title .think-text-loading {
            color: #999;
        }
        .thinking-title .think-text-done {
            color: #333;
            font-weight: 500;
        }
        .thinking-title .think-duration {
            color: #999;
            font-size: 12px;
            margin-left: 2px;
        }
        /* 收起/展开按钮 */
        .thinking-toggle-text {
            font-size: 13px;
            color: #999;
            transition: color 0.2s;
        }
        .thinking-wrapper.collapsed .thinking-toggle-text-collapsed { display: inline; }
        .thinking-wrapper:not(.collapsed) .thinking-toggle-text-collapsed { display: none; }
        .thinking-wrapper.collapsed .thinking-toggle-text-expanded { display: none; }
        .thinking-wrapper:not(.collapsed) .thinking-toggle-text-expanded { display: inline; }

        .thinking-content {
            padding: 4px 0 8px 24px;
            font-size: 14px;
            color: #8c8c8c;
            line-height: 1.8;
            border-left: 2px solid #e8e8e8;
            margin-left: 8px;
        }
        .thinking-wrapper.collapsed .thinking-content {
            border-left: none;
            /* workbuddy 折叠态内容区右移（无左边线时保留缩进） */
            padding-left: 12px;
        }
        .thinking-content p {
            margin: 4px 0;
            color: #8c8c8c;
        }
        .thinking-content .system-status-group {
            margin-bottom: 12px;
            padding-bottom: 8px;
        }
        .thinking-content .system-status-item {
            display: flex;
            align-items: center;
            gap: 6px;
            padding: 2px 0;
            color: #aaa;
            font-size: 12px;
            line-height: 1.5;
        }
        .thinking-content .system-status-item .status-dot {
            width: 4px;
            height: 4px;
            border-radius: 50%;
            background: #ccc;
            flex-shrink: 0;
        }
        .thinking-content .system-status-item:last-child .status-dot {
            background: #52c41a;
        }
        .thinking-content pre {
            margin: 8px 0;
            background: #f5f5f5;
            padding: 10px 12px;
            border-radius: 6px;
            border: none;
            font-size: 13px;
        }
        .thinking-content code {
            background: #f5f5f5;
            color: #555;
            padding: 1px 4px;
            border-radius: 3px;
            font-size: 13px;
        }

        /* #new-chat-btn { background-color: var(--input-bg); border: 1px solid var(--border-color); color: var(--text-primary); font-weight: 600; margin-top: 20px; margin-bottom: 16px; padding: 10px 14px; border-radius: 12px; box-shadow: none; transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1); }
        #new-chat-btn svg { stroke-width: 2; transition: all 0.2s ease; }
        #new-chat-btn:hover svg { color: var(--primary-color); animation: iconBreathing 1.5s infinite alternate ease-in-out; } */
        @keyframes iconBreathing { 0% { filter: drop-shadow(0 0 2px rgba(59, 130, 246, 0.4)); transform: scale(1); } 100% { filter: drop-shadow(0 0 8px rgba(59, 130, 246, 0.8)); transform: scale(1.1); } }

        .history-list { flex: 1; overflow-y: auto; overflow-x: hidden; scrollbar-width: none; -ms-overflow-style: none; }
        .history-list::-webkit-scrollbar { display: none; }
        .history-item-wrapper { position: relative; display: flex; align-items: center; margin-bottom: 2px; }
        .history-item-wrapper .nav-item.active { background: var(--hover-bg); font-weight: 500; }
        .history-item-actions { display: none; }
        .history-item-wrapper:hover .history-item-actions { display: flex; opacity: 1 !important; }
.sidebar-task-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#22c55e;margin-left:6px;vertical-align:middle;animation:sidebarTaskPulse 1.2s ease-in-out infinite;flex-shrink:0}
.history-dup-badge{display:inline-block;min-width:16px;height:16px;line-height:16px;text-align:center;border-radius:8px;background:var(--hover-bg);color:var(--text-secondary);font-size:10px;font-weight:600;margin-left:4px;vertical-align:middle;padding:0 4px}
.history-item-wrapper.history-grouped-child .nav-item{padding-left:22px;opacity:.85}
.history-item-wrapper.history-grouped-child .nav-item:hover{opacity:1}
.history-item-wrapper.history-grouped-parent .nav-item{border-left:2px solid transparent}
.history-item-wrapper.history-grouped-expanded .nav-item{border-left-color:var(--primary-color,#5c5ce6)}
@keyframes sidebarTaskPulse{0%,100%{opacity:1;box-shadow:0 0 0 0 rgba(34,197,94,.4)}50%{opacity:.6;box-shadow:0 0 0 4px rgba(34,197,94,0)}}
        .action-icon-btn { background: transparent; border: none; color: var(--text-tertiary); width: 26px; height: 26px; border-radius: 6px; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: 0.2s; }
        .action-icon-btn:hover { background: var(--border-color); color: var(--text-primary); }
        .action-icon-btn.delete-btn:hover { color: var(--error-color); }
        .action-icon-btn svg { width: 14px; height: 14px; stroke: currentColor; }

        .main-content { flex: 1; display: flex; flex-direction: column; position: relative; min-width: 0; height: 100vh; height: 100dvh; padding-top: env(safe-area-inset-top, 0px); background: transparent; }
        .top-nav { height: 60px; padding: 0 16px; padding-top: env(safe-area-inset-top, 0px); display: flex; align-items: center; justify-content: space-between; flex-shrink: 0; z-index: 10; position: absolute; top: 0; width: 100%; background-color: transparent; }
        .top-left { display: flex; align-items: center; gap: 8px; min-width: 0; overflow: hidden; }
        .toggle-sidebar-btn { background: transparent; border: none; color: var(--text-secondary); width: 40px; height: 40px; border-radius: 8px; display: flex; align-items: center; justify-content: center; cursor: pointer; transition: 0.2s; margin-left: -8px;}
        .toggle-sidebar-btn:hover { background: var(--hover-bg); color: var(--text-primary); }
        .sidebar:not(.collapsed) ~ .main-content .toggle-sidebar-btn { display: none; }

        .new-chat-top-btn { background: transparent; border: none; color: var(--text-secondary); width: 40px; height: 40px; border-radius: 8px; display: flex; align-items: center; justify-content: center; cursor: pointer; transition: 0.2s; }
        .new-chat-top-btn:hover { background: var(--hover-bg); color: var(--text-primary); }
        .new-chat-top-btn svg { width: 20px; height: 20px; }

        .model-selector { background-color: transparent; color: var(--text-primary); border: none; font-size: 18px; font-weight: 600; cursor: pointer; outline: none; padding: 8px 28px 8px 12px; border-radius: 8px; transition: 0.2s; appearance: none; background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23666666' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6 9 12 15 18 9'%3e%3c/polyline%3e%3c/svg%3e"); background-repeat: no-repeat; background-position: right 8px center; background-size: 16px; }
        .model-selector:hover { background-color: var(--hover-bg); }
        :root[data-theme="dark"] .model-selector { background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23b4b4b4' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6 9 12 15 18 9'%3e%3c/polyline%3e%3c/svg%3e"); }

        .top-right { display: flex; align-items: center; gap: 8px; }
        .icon-btn { background: transparent; border: 1px solid transparent; color: var(--text-secondary); height: 28px; padding: 0 6px; border-radius: 14px; display: flex; align-items: center; justify-content: center; gap: 6px; cursor: pointer; font-size: 14px; transition: 0.2s; }
        .icon-btn:hover { background: var(--hover-bg); color: var(--text-primary); border-color: var(--border-color); }
        .icon-btn svg { width: 18px; height: 18px; fill: none; stroke: currentColor; }

        /* ----- 聊天区 ----- */
        /* 默认聊天模式：content-wrapper 收起（flex:0），仅保留 padding-top 给 fixed top-nav 让位；chat-container 独占剩余空间可滚动，input-panel 被推至底部
           ★ 2026-08-01 修复：原 flex:1 1 0% 导致聊天态下 content-wrapper（空壳，欢迎页已隐藏）与 chat-container 平分高度，对话内容被挤压只剩一半 */
        .content-wrapper { display: flex; flex-direction: column; min-height: 0; padding-top: calc(60px + env(safe-area-inset-top, 0px)); flex: 0 0 0%; overflow: visible; background: transparent !important; }
        .state-empty .content-wrapper { flex: 1 1 0%; overflow: visible; }
        /* ★ 2026-08-12 对比/会议模式：content-wrapper 只含模型框，不撑满——否则响应区被挤到 700px 以下（老板反馈「模型框下方、响应区上方大片空白」） */
        #main-content-wrapper.state-compare > .content-wrapper,
        #main-content-wrapper.state-meeting > .content-wrapper {
            flex: 0 0 auto !important;
            height: auto !important;
            min-height: 0 !important;
            overflow: visible;
        }
        #main-content-wrapper.state-apps .content-wrapper,
        #main-content-wrapper.state-kb .content-wrapper,
        #main-content-wrapper.state-cloud .content-wrapper,
        #main-content-wrapper.state-skills .content-wrapper,
        #main-content-wrapper.state-agent .content-wrapper,
        #main-content-wrapper.state-talk .content-wrapper,
        #main-content-wrapper.state-calendar .content-wrapper { flex: 1 1 0%; overflow: visible; }
        .empty-welcome { display: none; flex: 1; align-items: center; justify-content: center; flex-direction: column; text-align: center; }
        .welcome-center { display: flex; align-items: center; gap: 16px; animation: welcomeFade 1s ease; }
        .welcome-logo { width: 44px; height: 44px; color: var(--primary-color); opacity: 0.9; }
        .welcome-text { display: flex; flex-direction: column; align-items: flex-start; text-align: left; }
        .welcome-text h1 { font-size: 26px; font-weight: 600; color: var(--text-primary); margin: 0; letter-spacing: -0.5px; }
        .welcome-text p { font-size: 18px; font-weight: 500; color: var(--text-tertiary); margin: 2px 0 0 0; }
        @keyframes welcomeFade { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }
        @keyframes pulse { 0% { box-shadow: 0 0 0 0 rgba(59, 130, 246, 0.3); } 70% { box-shadow: 0 0 0 10px rgba(59, 130, 246, 0); } 100% { box-shadow: 0 0 0 0 rgba(59, 130, 246, 0); } }

        /* 细滚动条：保留可见性但保持简洁 */
        ::-webkit-scrollbar { width: 4px; height: 4px; }
        ::-webkit-scrollbar-track { background: transparent; }
        ::-webkit-scrollbar-thumb { background: var(--border-color); border-radius: 2px; }
        ::-webkit-scrollbar-thumb:hover { background: var(--text-tertiary); }
        * { -ms-overflow-style: auto; scrollbar-width: thin; scrollbar-color: var(--border-color) transparent; }

        .chat-container { flex: 1; overflow-y: scroll; padding-bottom: 60px; scroll-behavior: smooth; display: flex; flex-direction: column; align-items: center; min-height: 0; }

        /* ★ 2026-08-15 系统公告：右侧主区域顶部独立悬浮条（fixed 定位，不占文档流不依赖布局）——
           ★ 显示时 JS 给 content-wrapper/chat-container 加 padding-top 补偿（内容下移），关闭后移除（内容上移），绝不遮对话内容、不会被 flex 压缩 */
        #announcement-banner{
          display:none;align-items:center;gap:10px;padding:10px 16px;
          /* 悬浮定位：右侧内容区顶部（sidebar 右侧 + 留白），top-nav 下方 */
          position:fixed;top:calc(60px + env(safe-area-inset-top, 0px) + 10px);left:calc(260px + 12px);right:12px;z-index:2600;
          width:auto;min-width:0;overflow:hidden;
          border-radius:10px;font-size:12.5px;line-height:1.4;cursor:pointer;
          /* 独立布局：渐变实色卡片感 + 微阴影，与对话/欢迎内容明显区分 */
          background:linear-gradient(90deg,color-mix(in srgb,var(--primary-color,#3b82f6) 15%,transparent),color-mix(in srgb,var(--primary-color,#3b82f6) 6%,transparent));
          border:1px solid color-mix(in srgb,var(--primary-color,#3b82f6) 24%,transparent);
          border-left:3px solid var(--primary-color,#3b82f6);
          box-shadow:0 2px 10px rgba(0,0,0,.06);
          transition:opacity .25s,background .2s;
        }
        #announcement-banner:hover{background:linear-gradient(90deg,color-mix(in srgb,var(--primary-color,#3b82f6) 20%,transparent),color-mix(in srgb,var(--primary-color,#3b82f6) 9%,transparent));}
        #announcement-banner .ann-icon{flex:none;width:22px;height:22px;border-radius:7px;display:inline-flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--primary-color,#3b82f6) 18%,transparent);color:var(--primary-color,#3b82f6);}
        #announcement-banner .ann-body{flex:1;min-width:0;overflow:hidden;height:22px;max-width:100%;}
        .ann-marquee{overflow:hidden;white-space:nowrap;height:22px;position:relative;}
        /* ★ 慢速轮播：内容横向滚动循环（40s 一轮，比可视区版 18s 慢一倍以上） */
        .ann-track{display:inline-block;white-space:nowrap;padding-left:100%;animation:annMarquee 40s linear infinite;will-change:transform;}
        .ann-track .ann-item{display:inline-block;margin-right:48px;font-size:12.5px;color:var(--text-secondary);}
        .ann-track .ann-item b{color:var(--text-primary);font-weight:700;margin-right:6px;}
        /* ★ 2026-08-08 公告类型徽标：系统公告=蓝、企业公告=紫 */
        .ann-type-badge{display:inline-block;padding:1px 6px;border-radius:5px;font-size:10.5px;font-weight:600;line-height:1.5;margin-right:6px;vertical-align:1px;flex:none;}
        .ann-type-badge.sys{background:color-mix(in srgb,#3b82f6 12%,transparent);color:#3b82f6;border:1px solid color-mix(in srgb,#3b82f6 28%,transparent);}
        .ann-type-badge.ent{background:color-mix(in srgb,#8b5cf6 12%,transparent);color:#8b5cf6;border:1px solid color-mix(in srgb,#8b5cf6 28%,transparent);}
        @keyframes annMarquee{0%{transform:translateX(0);}100%{transform:translateX(-100%);}}
        #announcement-banner .ann-close{flex:none;width:20px;height:20px;border-radius:5px;border:none;background:transparent;color:var(--text-tertiary);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;opacity:.7;margin:0 -4px 0 0;}
        #announcement-banner .ann-close:hover{opacity:1;background:var(--hover-bg);color:var(--text-primary);}
        #announcement-banner.lv-important{border-left-color:#e35151;}
        #announcement-banner.lv-important .ann-icon{background:color-mix(in srgb,#e35151 12%,transparent);color:#e35151;}
        #announcement-banner.lv-warning{border-left-color:#f59e0b;}
        #announcement-banner.lv-warning .ann-icon{background:color-mix(in srgb,#f59e0b 14%,transparent);color:#d97706;}
        #announcement-banner.lv-info{border-left-color:#3b82f6;}
        #announcement-banner.lv-info .ann-icon{background:color-mix(in srgb,#3b82f6 12%,transparent);color:#3b82f6;}
        @media (max-width:768px){
          /* 手机端：sidebar 折叠，公告悬浮条占满宽度 */
          #announcement-banner{padding:8px 12px;gap:6px;top:calc(52px + env(safe-area-inset-top, 0px) + 8px);left:10px;right:10px;}
          #announcement-banner .ann-body{height:20px;flex:1;min-width:0;}
          .ann-marquee{height:20px;}
          .ann-track .ann-item{font-size:12px;}
          #announcement-banner .ann-close{width:22px;height:22px;margin:0 -2px 0 0;padding:6px;background-clip:content-box;box-sizing:content-box;}
          /* 压缩 model/agent 选择器 */
          /* ★ 2026-08-15 修复：手机端模型名显示不全——64px 上限太窄被截断；放宽到 48vw、可收缩、超长省略号 */
          .top-nav .custom-model-dropdown{max-width:48vw;min-width:0;}
          .top-nav .model-trigger{min-width:0;flex-shrink:1;padding:6px 8px;}
          .top-nav .model-trigger span{font-size:11.5px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;max-width:100%;min-width:0;}
          .top-nav .agent-selector-trigger span{font-size:11.5px;}
        }

        /* 应用页面状态 */
                /* ★ 2026-08-11 修复：state-apps 只显示应用中心本页（原 .app-page 通配会把无内联 display:none 的页全放出来——日历页内联被 closeAllPages 清成 '' 后在应用中心漏出，双窗口重叠/挤压） */
        #main-content-wrapper.state-apps #app-page { display: flex; }
        #main-content-wrapper.state-apps .empty-welcome { display: none !important; }
        #main-content-wrapper.state-apps .chat-container { display: none !important; }
        #main-content-wrapper.state-apps .input-panel { display: none !important; }

        /* 云盘页面状态 */
        #main-content-wrapper.state-cloud #cloud-drive-page { display: flex !important; }
        #main-content-wrapper.state-cloud .empty-welcome { display: none !important; }
        /* 子页面通用状态（KB/记忆/感知/图谱） */
        #main-content-wrapper.state-kb .empty-welcome { display: none !important; }
        #main-content-wrapper.state-kb .chat-container { display: none !important; }
        #main-content-wrapper.state-cloud .chat-container { display: none !important; }

        #main-content-wrapper.state-skills #skills-page { display: flex !important; }
        #main-content-wrapper.state-skills .empty-welcome { display: none !important; }
        #main-content-wrapper.state-skills .chat-container { display: none !important; }

        /* 日程页面 */
        #main-content-wrapper.state-calendar #calendar-page { display: flex !important; }
        #main-content-wrapper.state-calendar .empty-welcome { display: none !important; }
        #main-content-wrapper.state-calendar .chat-container { display: none !important; }
        #main-content-wrapper.state-calendar .input-panel { display: none !important; }
        #main-content-wrapper.state-calendar .sidebar-items-bar { display: none !important; }
        #main-content-wrapper.state-calendar #calendar-page .app-page-content { max-width: none; margin: 0; flex: 1; padding: 0; overflow: hidden; }
        #main-content-wrapper.state-calendar #calendar-page .app-page-header { padding: 12px 20px; display: flex; align-items: center; justify-content: space-between; }

        /* 知识库/技能/云盘页面：隐藏输入框和工具栏 */
        #main-content-wrapper.state-kb .input-panel { display: none !important; }
        #main-content-wrapper.state-kb .sidebar-items-bar { display: none !important; }

        .kb-item-card { padding:14px; border-radius:14px; background:var(--bg-primary); border:1px solid transparent; cursor:pointer; box-shadow:0 2px 10px rgba(15,23,42,.06); transition:box-shadow .18s,background .18s; }
        .kb-item-card:hover { box-shadow:0 10px 30px rgba(15,23,42,.13); }

        .cloud-asset-card { transition:all 0.2s; }
        .cloud-asset-card, .cloud-thumb-card, .skill-card, .skill-card-icon, [data-folder-path] { border: none !important; box-shadow: none !important; }
        .cloud-asset-card:hover { border-color:var(--primary-color) !important; }
        /* 手机端列表模式两列 */
        @media(max-width:768px){ .cloud-list-grid { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; gap: 8px !important; } }
        .kb-action-btn { padding:4px 6px; border-radius:5px; border:none; background:transparent; color:var(--text-tertiary); cursor:pointer; transition:all 0.15s; display:inline-flex; align-items:center; justify-content:center; }
        .kb-action-btn:hover { color:var(--primary-color); }
        .kb-action-btn-danger:hover { color:var(--error-color) !important; }
        .kb-at-item.active { background:var(--hover-bg); }
        #kb-ref-cards:empty { display:none; }
        .kb-ctx-item { padding:8px 14px; border-radius:6px; font-size:13px; cursor:pointer; transition:background 0.1s; white-space:nowrap; }
        .kb-ctx-item:hover { background:var(--hover-bg); }
        #main-content-wrapper.state-cloud .input-panel { display: none !important; }
        #main-content-wrapper.state-cloud .sidebar-items-bar { display: none !important; }
        #main-content-wrapper.state-skills .input-panel { display: none !important; }
        #main-content-wrapper.state-skills .sidebar-items-bar { display: none !important; }

        /* 工具栏只在普通对话模式显示，其他模式隐藏 */
        body.writer-mode-active .sidebar-items-bar,
        body.coder-mode .sidebar-items-bar,
        body.canvas-mode .sidebar-items-bar,
        #main-content-wrapper.state-talk .sidebar-items-bar { display: none !important; }

        /* 知识库/技能/云盘页面：隐藏右上角菜单，只显示操作按钮和关闭按钮 */
        #main-content-wrapper.state-kb .top-right > *:not(.page-action-btn):not(.page-close-btn):not(input[type="file"]),
        #main-content-wrapper.state-cloud .top-right > *:not(.page-action-btn):not(.page-close-btn):not(input[type="file"]),
        #main-content-wrapper.state-skills .top-right > *:not(.page-action-btn):not(.page-close-btn):not(input[type="file"]),
        #main-content-wrapper.state-apps .top-right > *:not(.page-action-btn):not(.page-close-btn):not(input[type="file"]) { display: none !important; }

        /* 隐藏模型列表 */
        #main-content-wrapper.state-kb .model-trigger,
        #main-content-wrapper.state-cloud .model-trigger,
        #main-content-wrapper.state-skills .model-trigger { display: none !important; }

        /* 页面操作按钮 */
        .page-action-btn {
            display: none;
            padding: 6px 14px;
            border-radius: 8px;
            border: none;
            background: var(--text-primary);
            color: var(--bg-main);
            cursor: pointer;
            font-size: 12px;
            font-weight: 500;
            transition: all 0.2s;
        }
        .page-action-btn:hover { opacity: 0.9; }
        .page-action-btn-secondary {
            border: 1px solid var(--border-color);
            background: transparent;
            color: var(--text-secondary);
        }
        .page-action-btn-secondary:hover {
            background: var(--hover-bg);
            opacity: 1;
        }
        #main-content-wrapper.state-cloud #cloud-upload-btn { display: block !important; }
        #main-content-wrapper.state-skills #skills-import-btn,
        #main-content-wrapper.state-skills #skills-create-btn { display: block !important; }

        /* 页面关闭按钮 */
        .page-close-btn {
            display: none;
            width: 36px;
            height: 36px;
            border-radius: 8px;
            border: none;
            background: transparent;
            color: var(--text-secondary);
            cursor: pointer;
            align-items: center;
            justify-content: center;
            transition: all 0.2s;
        }
        .page-close-btn:hover {
            background: var(--hover-bg);
            color: var(--text-primary);
        }
        #main-content-wrapper.state-kb .page-close-btn,
        #main-content-wrapper.state-cloud .page-close-btn,
        #main-content-wrapper.state-skills .page-close-btn,
        #main-content-wrapper.state-apps .page-close-btn { display: flex !important; }

        /* 知识库/技能/云盘页面：内容居中对齐 */
        #main-content-wrapper.state-kb .app-page-header,
        #main-content-wrapper.state-cloud .app-page-header,
        #main-content-wrapper.state-skills .app-page-header {
            max-width: 1200px;
            margin: 0 auto;
            width: 100%;
        }
        #main-content-wrapper.state-kb .app-page-content,
        #main-content-wrapper.state-cloud .app-page-content,
        #main-content-wrapper.state-skills .app-page-content {
            max-width: 1200px;
            margin: 0 auto;
            width: 100%;
        }

        #main-content-wrapper.state-talk #e5e-talk-page { display: flex !important; }
        #main-content-wrapper.state-talk .empty-welcome { display: none !important; }
        #main-content-wrapper.state-talk .chat-container { display: none !important; }

        /*======== Agent智能体页面 ========*/
        #main-content-wrapper.state-agent #agent-page { display: flex !important; }
        #main-content-wrapper.state-agent .empty-welcome { display: none !important; }
        #main-content-wrapper.state-agent .chat-container { display: none !important; }
        #main-content-wrapper.state-agent .input-panel { display: none !important; }
        #main-content-wrapper.state-agent .sidebar-items-bar { display: none !important; }
        #main-content-wrapper.state-agent .top-right > *:not(.page-action-btn):not(.page-close-btn) { display: none !important; }
        #main-content-wrapper.state-agent .model-trigger { display: none !important; }
        #main-content-wrapper.state-agent .page-close-btn { display: flex !important; }
        #main-content-wrapper.state-agent #agent-import-btn { display: flex !important; }
        #main-content-wrapper.state-agent #agent-create-dropdown { display: inline-block !important; }
        #main-content-wrapper.state-agent #agent-create-top-btn { display: inline-flex !important; }
        #main-content-wrapper.state-agent .app-page-header { max-width: 1200px; margin: 0 auto; width: 100%; }
        #main-content-wrapper.state-agent .app-page-content { max-width: 1200px; margin: 0 auto; width: 100%; }

        /* Agent 表单 - 搜索框风格输入 */
        .agent-create-modal .form-group input[type="text"]:not(#agent-form-icon),
        .agent-create-modal .form-group input[type="number"] { padding: 8px 12px; border: 1px solid var(--border-color); border-radius: 10px; font-size: 13px; background: var(--bg-main); color: var(--text-primary); outline: none; transition: all 0.2s; width: 100%; box-sizing: border-box; }
        .agent-create-modal .form-group input[type="text"]:focus:not(#agent-form-icon),
        .agent-create-modal .form-group input[type="number"]:focus { border-color: var(--primary-color); background: var(--bg-primary); box-shadow: 0 0 0 3px rgba(59,130,246,0.08); }
        #main-content-wrapper.state-agent #agent-create-btn { display: block !important; }

        /* 智能体模块：与模型列表统一的轻量化页面骨架 */
        .agent-module-header { padding-bottom: 14px !important; text-align: center; }
        .agent-module-heading { text-align: center; }
        .agent-module-heading .app-page-title { margin: 0 0 6px; font-size: 28px; letter-spacing: .5px; }
        .agent-module-subtitle { margin: 0; color: var(--text-tertiary); font-size: 12px; line-height: 1.5; }
        .agent-page-stats { display: block; margin-top: 8px; text-align: center; font-size: 11px; color: var(--text-tertiary); min-height: 14px; }
        .agent-category-filters,.ux-chips { display: flex; justify-content: center; gap: 6px; flex-wrap: nowrap; overflow-x: auto; overflow-y: hidden; margin-top: 12px; padding: 0 4px 2px; scrollbar-width: none; -ms-overflow-style: none; -webkit-overflow-scrolling: touch; }
        .agent-category-filters::-webkit-scrollbar,.ux-chips::-webkit-scrollbar { display: none; }
        .agent-category-filter,.ux-chip { flex: 0 0 auto; border: 1px solid var(--border-color); border-radius: 999px; padding: 5px 12px; background: transparent; color: var(--text-secondary); font-size: 11px; cursor: pointer; transition: .15s; }
        .agent-category-filter:hover,.ux-chip:hover { background: var(--hover-bg); color: var(--text-primary); }
        .agent-category-filter.active,.ux-chip.active { background: var(--text-primary); border-color: var(--text-primary); color: var(--bg-main); }
        .agent-state-btn { display: inline-flex; align-items: center; gap: 6px; margin-top: 10px; padding: 8px 18px; border-radius: 999px; border: 1px solid var(--border-color); background: transparent; color: var(--text-primary); font-size: 12px; font-weight: 600; cursor: pointer; transition: .15s; }
        .agent-state-btn:hover { background: var(--hover-bg); border-color: var(--text-tertiary); }
        .agent-state-btn.primary { background: var(--text-primary); border-color: var(--text-primary); color: var(--bg-main); }
        .agent-state-btn.primary:hover { opacity: .88; }
        .agent-skeleton { pointer-events: none; }
        .agent-skeleton .sk-avatar { width: 44px; height: 44px; border-radius: 50%; }
        .agent-skeleton .sk-avatar,.agent-skeleton .sk-line { background: linear-gradient(90deg,var(--hover-bg) 25%,var(--bg-main) 50%,var(--hover-bg) 75%); background-size: 200% 100%; animation: agentSkShimmer 1.2s ease infinite; }
        .agent-skeleton .sk-lines { flex: 1; display: flex; flex-direction: column; gap: 8px; padding-top: 3px; }
        .agent-skeleton .sk-line { height: 11px; border-radius: 6px; }
        .agent-skeleton .sk-line.w40 { width: 40%; }
        .agent-skeleton .sk-line.w60 { width: 60%; }
        .agent-skeleton .sk-line.w90 { width: 90%; }
        @keyframes agentSkShimmer { from { background-position: 200% 0; } to { background-position: -200% 0; } }
        .agent-module-toolbar { display: flex; justify-content: center; margin-top: 14px; }
        .agent-module-tabrow { display: flex; align-items: center; justify-content: center; gap: 12px; margin-top: 12px; }
        .agent-module-search,.ux-search { width: min(440px,100%); height: 42px; display: flex; align-items: center; gap: 9px; padding: 0 16px; border: 1px solid var(--border-color); border-radius: 999px; background: var(--bg-primary); transition: border-color .15s,box-shadow .15s; }
        .agent-module-search:focus-within,.ux-search:focus-within { border-color: var(--primary-color); box-shadow: 0 0 0 3px rgba(99,102,241,.1); }
        .agent-module-search svg,.ux-search svg { width: 17px; height: 17px; fill: none; stroke: var(--text-tertiary); stroke-width: 2; flex: 0 0 auto; }
        .agent-module-search input,.ux-search input { flex: 1; min-width: 0; border: 0; outline: 0; background: transparent; color: var(--text-primary); font-size: 13px; -webkit-appearance: none; appearance: none; }
        .agent-module-tabs { margin: 0 !important; padding: 3px !important; gap: 2px !important; background: var(--hover-bg); border-radius: 10px; }
        .agent-module-tabs .app-tab { border: 0 !important; border-radius: 8px !important; padding: 7px 14px !important; font-size: 12px !important; transition: background .15s,color .15s; }
        .agent-module-tabs .app-tab.active { background: var(--text-primary) !important; color: var(--bg-main) !important; box-shadow: none; }
        .agent-module-content { padding-top: 12px !important; }
        .agent-grid { display: grid; grid-template-columns: repeat(auto-fill,minmax(280px,1fr)); gap: 12px; }
        .agent-card { min-height: 128px; padding: 16px 18px 14px; border-radius: 14px; background: var(--bg-primary); border: none; cursor: pointer; box-shadow: 0 2px 10px rgba(15,23,42,.06); transition: box-shadow .18s,background .18s; position: relative; display: flex; flex-direction: column; }
        .agent-card:hover,.agent-card:focus-visible { background: var(--bg-primary); box-shadow: 0 10px 30px rgba(15,23,42,.13); }
        .agent-card-main { display: flex; align-items: flex-start; gap: 12px; padding-right: 44px; }
        .agent-card-icon { width: 44px; height: 44px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 19px; background: var(--hover-bg); overflow: hidden; flex: 0 0 auto; }
        .agent-card-icon img { width: 100%; height: 100%; object-fit: cover; }
        .agent-card-copy { min-width: 0; flex: 1; }
        .agent-card-name { font-size: 14px; font-weight: 650; color: var(--text-primary); margin: 2px 0 4px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
        .agent-card-desc { font-size: 12px; color: var(--text-tertiary); line-height: 1.55; min-height: 37px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
        .agent-card-meta { margin-top: auto; padding-top: 12px; font-size: 11px; color: var(--text-tertiary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
        .agent-card-badge { font-size: 9px; padding: 3px 7px; border-radius: 999px; background: var(--hover-bg); color: var(--text-tertiary); }
        .agent-card-badge.builtin { background: rgba(59,130,246,.09); color: var(--primary-color); }
        .agent-card-badge.workflow { background: rgba(139,92,246,.1); color: #8b5cf6; }
        .agent-card-badges { position: absolute; top: 16px; right: 18px; display: flex; gap: 4px; }
        .agent-card-actions { position: absolute; right: 14px; bottom: 10px; display: flex; gap: 3px; padding: 4px; border: 1px solid var(--border-color); border-radius: 8px; background: var(--bg-main); opacity: 0; visibility: hidden; transform: translateY(3px); transition: .15s; box-shadow: 0 5px 18px rgba(15,23,42,.08); }
        .agent-card:hover .agent-card-actions,.agent-card:focus-within .agent-card-actions { opacity: 1; visibility: visible; transform: translateY(0); }
        .agent-card-action-btn { min-width: 28px; height: 26px; padding: 0 7px; border-radius: 6px; border: 0; background: transparent; color: var(--text-tertiary); cursor: pointer; font-size: 10px; transition: .15s; }
        .agent-card-action-btn:hover { background: var(--hover-bg); color: var(--text-primary); }
        .agent-card-action-btn.danger:hover { background: rgba(239,68,68,.08); color: var(--error-color) !important; }
        .agent-page-state { grid-column: 1/-1; min-height: 240px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px; color: var(--text-tertiary); font-size: 13px; text-align: center; }
        .agent-page-state strong { color: var(--text-primary); font-size: 15px; }
        .agent-page-state svg { width: 32px; height: 32px; fill: none; stroke: currentColor; stroke-width: 1.7; }
        .agent-state-spinner { width: 22px; height: 22px; border: 2px solid var(--border-color); border-top-color: var(--primary-color); border-radius: 50%; animation: agentStateSpin .8s linear infinite; }
        @keyframes agentStateSpin { to { transform: rotate(360deg); } }

        /* Agent 对话面板 */
        .agent-chat-panel { display: none; flex-direction: column; height: 100%; }
        .agent-chat-panel.active { display: flex; }
        .agent-chat-header { display: flex; align-items: center; gap: 8px; padding: 10px 16px; border-bottom: 1px solid var(--border-color); }
        .agent-chat-header .back-btn { background: none; border: none; cursor: pointer; color: var(--text-secondary); padding: 6px; border-radius: 8px; display: flex; align-items: center; justify-content: center; transition: all 0.15s; }
        .agent-chat-header .back-btn:hover { background: var(--hover-bg); color: var(--text-primary); }
        .agent-chat-header .agent-info { flex: 1; }
        .agent-chat-header .agent-info .name { font-size: 15px; font-weight: 600; color: var(--text-primary); }
        .agent-chat-header .agent-info .desc { font-size: 12px; color: var(--text-tertiary); }
        .agent-chat-messages { flex: 1; overflow-y: auto; padding: 16px; display: flex; flex-direction: column; gap: 8px; }
        .agent-msg { max-width: 88%; padding: 10px 14px; border-radius: 14px; font-size: 14px; line-height: 1.7; word-break: break-word; }
        .agent-msg.user { align-self: flex-end; background: linear-gradient(135deg, var(--text-primary), var(--text-secondary)); color: var(--bg-main); border-bottom-right-radius: 4px; }
        .agent-msg.assistant { align-self: flex-start; background: var(--hover-bg); color: var(--text-primary); border-bottom-left-radius: 4px; }
        /* ★ 2026-08-01 智能体消息气泡内 markdown 样式 */
        .agent-msg.assistant pre { background: var(--bg-primary); border: 1px solid var(--border-color); border-radius: 8px; padding: 10px; overflow-x: auto; font-size: 12.5px; margin: 8px 0; }
        .agent-msg.assistant code { background: var(--bg-primary); padding: 1px 5px; border-radius: 4px; font-size: 12.5px; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; }
        .agent-msg.assistant pre code { background: none; padding: 0; }
        .agent-msg.assistant p { margin: 6px 0; }
        .agent-msg.assistant ul, .agent-msg.assistant ol { margin: 6px 0 6px 18px; }
        .agent-msg.assistant h1, .agent-msg.assistant h2, .agent-msg.assistant h3, .agent-msg.assistant h4 { margin: 10px 0 6px; font-weight: 600; }
        .agent-msg.assistant blockquote { border-left: 3px solid var(--border-color); padding-left: 10px; color: var(--text-tertiary); margin: 6px 0; }
        .agent-msg.assistant a { color: var(--primary-color); text-decoration: underline; }
        .agent-msg.assistant table { border-collapse: collapse; margin: 8px 0; font-size: 13px; }
        .agent-msg.assistant th, .agent-msg.assistant td { border: 1px solid var(--border-color); padding: 6px 10px; }
        .agent-chat-action { height: 32px; display: inline-flex; align-items: center; justify-content: center; gap: 5px; padding: 0 9px; border-radius: 8px; border: 1px solid var(--border-color); background: transparent; color: var(--text-secondary); cursor: pointer; font-size: 11px; transition: .15s; }
        .agent-chat-action:hover { background: var(--hover-bg); color: var(--text-primary); }
        .agent-chat-action.danger { border-color: rgba(239,68,68,.35); color: var(--error-color); }
        .agent-chat-action svg { width: 14px; height: 14px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
        .agent-chat-empty { min-height: 300px; display: flex; flex-direction: column; align-items: center; justify-content: center; color: var(--text-tertiary); text-align: center; }
        .agent-chat-empty-icon { width: 48px; height: 48px; border-radius: 14px; display: flex; align-items: center; justify-content: center; margin-bottom: 12px; background: var(--hover-bg); color: var(--text-secondary); }
        .agent-chat-empty-icon svg { width: 24px; height: 24px; fill: none; stroke: currentColor; stroke-width: 1.7; }
        .agent-chat-empty-title { color: var(--text-primary); font-size: 15px; font-weight: 600; }
        .agent-chat-empty-desc { margin-top: 5px; font-size: 12px; }
        .agent-chat-input-area { padding: 12px 16px; display: flex; position: relative; }
        .agent-chat-input-area textarea { flex: 1; border: none; padding: 6px 4px; font-size: 14px; resize: none; min-height: 24px; max-height: 120px; background: transparent; color: var(--text-primary); font-family: inherit; outline: none; }
        #agent-input-wrapper:focus-within { border-color: var(--text-secondary) !important; }

        /* Agent 工具调用卡片 */
        .tool-call-card { background: transparent; border: 1px solid var(--border-color); border-radius: 8px; padding: 10px 14px; margin: 8px 0; font-size: 13px; }
        .tool-call-card .tool-header { display: flex; align-items: center; gap: 8px; margin-bottom: 6px; }
        .tool-call-card .tool-status { display: inline-flex; align-items: center; gap: 4px; font-size: 11px; padding: 2px 8px; border-radius: 10px; }
        .tool-call-card .tool-status.running { background: rgba(245,158,11,0.08); color: #d97706; }
        .tool-call-card .tool-status.success { background: rgba(16,185,129,0.08); color: #059669; }
        .tool-call-card .tool-status.error { background: rgba(239,68,68,0.08); color: #dc2626; }
        .tool-call-card .tool-result { font-size: 12px; color: var(--text-secondary); white-space: pre-wrap; max-height: 200px; overflow-y: auto; margin-top: 6px; padding: 6px 8px; background: var(--bg-primary); border-radius: 4px; font-family: monospace; }

        /* Agent 状态栏 */
        .agent-status-bar { display: flex; align-items: center; gap: 16px; padding: 6px 16px; font-size: 11px; color: var(--text-tertiary); }
        .agent-status-bar span { display: flex; align-items: center; gap: 4px; }

        /* Agent 创建/编辑弹窗 — 对齐现有弹窗风格 */
        .agent-create-overlay { display: none; position: fixed; inset: 0; background: rgba(0,0,0,0.15); z-index: 10000; justify-content: center; align-items: center; }
        .agent-create-overlay.active { display: flex; }
        .agent-create-modal { background: var(--bg-primary); border-radius: 16px; width: 90%; max-width: 560px; max-height: 85vh; overflow-y: auto; padding: 24px; box-shadow: none; }
        .agent-create-modal h2 { margin: 0 0 20px; font-size: 18px; font-weight: 600; color: var(--text-primary); }
        .agent-create-modal .form-group { margin-bottom: 14px; }
        .agent-create-modal .form-group label { display: block; font-size: 12px; font-weight: 500; margin-bottom: 5px; color: var(--text-secondary); }
        .agent-create-modal .form-group input, .agent-create-modal .form-group textarea, .agent-create-modal .form-group select { width: 100%; padding: 8px 12px; border: 1px solid var(--border-color); border-radius: 8px; font-size: 13px; background: var(--bg-primary); color: var(--text-primary); box-sizing: border-box; outline: none; transition: border-color 0.2s; }
        .agent-create-modal .form-group input:focus, .agent-create-modal .form-group textarea:focus, .agent-create-modal .form-group select:focus { border-color: var(--primary-color); }
        .agent-create-modal .form-group textarea { min-height: 100px; font-family: monospace; font-size: 12px; resize: vertical; }
        .agent-create-modal .form-actions { display: flex; gap: 8px; justify-content: flex-end; margin-top: 20px; }
        .agent-create-modal .form-actions button { padding: 8px 18px; border-radius: 8px; font-size: 13px; font-weight: 500; cursor: pointer; transition: all 0.15s; }
        .agent-create-modal .btn-primary { background: var(--text-primary); color: var(--bg-main); border: none; }
        .agent-create-modal .btn-primary:hover { opacity: 0.9; }
        .agent-create-modal .btn-secondary { background: transparent; color: var(--text-secondary); border: 1px solid var(--border-color); }
        .agent-create-modal .btn-secondary:hover { background: var(--hover-bg); }

        /* 表单行 */
        .form-row { display: flex; gap: 12px; }
        .form-row .form-group { flex: 1; }

        /* Agent 圆形图标选择器 */
        .agent-avatar-option { width: 38px; height: 38px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 20px; cursor: pointer; border: 2px solid transparent; background: var(--hover-bg); transition: all 0.15s; }
        .agent-avatar-option:hover { background: var(--border-color); transform: scale(1.1); }
        .agent-avatar-option.selected { border-color: var(--primary-color, var(--primary-color)); background: rgba(59,130,246,0.1); }

        /* Agent 选择器 (top-nav 中，模型选择器旁边) */
        .agent-selector { position: relative; margin-left: 6px; z-index: 99998; }
        .agent-selector-trigger {
            display: flex; align-items: center; gap: 6px; padding: 4px 10px;
            border-radius: 8px; color: var(--text-primary); cursor: pointer;
            font-size: 12px; font-weight: 500; transition: all 0.2s;
            background: none; border: 0.5px solid var(--border-color);
            white-space: nowrap; user-select: none;
        }
        .agent-selector-trigger:hover { background: var(--hover-bg); }
        .agent-selector-trigger.active { background: rgba(16,163,127,0.08); border-color: rgba(16,163,127,0.25); }
        .agent-selector-trigger .agent-lock-icon { width: 12px; height: 12px; color: var(--text-tertiary); flex-shrink: 0; }
        .agent-selector-trigger .chevron-icon { width: 12px; height: 12px; color: var(--text-tertiary); flex-shrink: 0; transition: transform 0.25s; }
        .agent-selector-trigger.active .chevron-icon { transform: rotate(180deg); }
        .agent-selector-menu { display: none; position: fixed; left: 0px; top: 0px; width: 340px; max-width: 90vw; background: var(--bg-main); border: 1px solid var(--border-color); border-radius: 16px; box-shadow: 0 10px 40px rgba(0,0,0,0.1); z-index: 100001; padding: 16px; }
        .agent-selector-menu.show { display: flex; flex-direction: column; }
        .agent-menu-header { font-size: 12px; color: var(--text-tertiary); margin-bottom: 10px; padding-left: 4px; }
        .agent-default-slot { flex: 0 0 auto; margin-bottom: 8px; }
        .agent-menu-search { height: 38px; display: flex; align-items: center; gap: 8px; padding: 0 11px; border: 1px solid var(--border-color); border-radius: 10px; background: var(--bg-primary); transition: border-color .15s,box-shadow .15s; margin-bottom: 8px; }
        .agent-menu-search:focus-within { border-color: var(--primary-color); box-shadow: 0 0 0 3px rgba(99,102,241,.1); }
        .agent-menu-search svg { width: 16px; height: 16px; fill: none; stroke: var(--text-tertiary); stroke-width: 2; flex: 0 0 auto; }
        .agent-menu-search input { width: 100%; min-width: 0; border: 0; outline: 0; background: transparent; color: var(--text-primary); font-size: 13px; -webkit-appearance: none; appearance: none; }
        .agent-selector-scroll { overflow-y: auto; max-height: 280px; padding: 0; margin-bottom: 8px; scrollbar-width: thin; scrollbar-color: var(--border-color) transparent; }
        .agent-selector-scroll::-webkit-scrollbar { width: 4px; }
        .agent-selector-scroll::-webkit-scrollbar-thumb { background: var(--border-color); border-radius: 2px; }
        .agent-selector-bottom { flex-shrink: 0; display: flex; gap: 6px; padding: 8px 4px 0; margin-top: 0; border-top: none; }
        .agent-selector-item { display: flex; align-items: center; gap: 10px; padding: 7px 10px; min-height: 42px; border-radius: 10px; cursor: pointer; color: var(--text-primary); transition: background .18s,color .18s; margin-bottom: 2px; }
        .agent-selector-item:hover { background: var(--hover-bg); }
        .agent-selector-item.selected { background: rgba(59,130,246,.06); color: var(--text-primary); }
        .agent-avatar { width: 32px; height: 32px; border-radius: 50%; display: flex; align-items: center; justify-content: center; flex: 0 0 auto; color: #fff; font-size: 14px; font-weight: 700; overflow: hidden; }
        .agent-avatar svg { width: 17px; height: 17px; }
        .agent-avatar-default { background: var(--text-secondary); }
        .agent-item-info { flex: 1; min-width: 0; text-align: left; }
        .agent-item-title { font-size: 13px; font-weight: 600; line-height: 1.35; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: var(--text-primary); }
        .agent-item-desc { margin-top: 2px; font-size: 11px; line-height: 1.35; color: var(--text-tertiary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
        .agent-item-meta { flex: 0 0 auto; font-size: 10px; color: var(--text-tertiary); padding: 2px 5px; border-radius: 5px; background: var(--hover-bg); }
        .agent-item-selected { width: 18px; height: 18px; flex: 0 0 auto; display: none; align-items: center; justify-content: center; color: var(--primary-color); }
        .agent-item-selected svg { width: 15px; height: 15px; }
        .agent-selector-item.selected .agent-item-selected { display: flex; }
        .agent-selector-empty { padding: 26px 12px; color: var(--text-tertiary); font-size: 12px; text-align: center; }
        .agent-menu-action { flex: 1; min-width: 0; display: flex; align-items: center; justify-content: center; gap: 6px; padding: 8px 10px; border: 1px solid var(--border-color); border-radius: 8px; background: transparent; color: var(--text-secondary); font-size: 12px; font-weight: 600; cursor: pointer; transition: .15s; }
        .agent-menu-action:hover { background: var(--hover-bg); color: var(--text-primary); }
        .agent-menu-action.primary { background: #5c5ce6; border-color: #5c5ce6; color: #fff; }
        .agent-menu-action:disabled { opacity: .5; cursor: not-allowed; background: transparent; color: var(--text-tertiary); }
        .agent-menu-action svg { width: 14px; height: 14px; }
        .agent-multi-check { width: 24px; height: 24px; margin-right: 0; }

        /* Agent 状态栏 (主聊天中) */
        .chat-agent-status-bar { display: none; align-items: center; gap: 10px; padding: 6px 16px; font-size: 11px; color: var(--text-tertiary); border-bottom: 1px solid var(--border-color); background: var(--bg-primary); flex-shrink: 0; }
        .chat-agent-status-bar.active { display: flex; }

        /* Agent 消息容器（与普通对话统一） */
        .agent-body-wrapper { padding: 8px 0; }
        .agent-body-wrapper .thinking-wrapper { margin-bottom: 6px; }
        .agent-answer-box { font-size: 14px; line-height: 1.65; color: var(--text-primary); }
        .agent-answer-box pre { background: var(--code-bg); border-radius: 8px; padding: 12px; overflow-x: auto; font-size: 13px; }
        .agent-answer-box code { font-family: 'JetBrains Mono', 'Fira Code', monospace; font-size: 13px; }
        .agent-action-bar { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 8px 0; margin-top: 8px; border-top: 1px solid var(--border-color); font-size: 11px; color: var(--text-tertiary); }
        .agent-running-indicator { display: flex; align-items: center; gap: 6px; font-size: 12px; color: var(--text-tertiary); padding: 4px 0; }
        /* ★ 2026-08-12 智能体执行中加载态（旋转图标 + 思考中提示，老板反馈执行过程空白无感知） */
        .agent-thinking-loading { display: flex; align-items: center; gap: 10px; color: var(--text-tertiary); font-size: 14px; padding: 6px 0; animation: fadeIn 0.3s ease; }
        .agent-thinking-loading .thinking-loading-ring { width: 18px; height: 18px; border: 2px solid var(--border-color); border-top-color: var(--primary-color); border-radius: 50%; animation: ring-spin 1s linear infinite; flex-shrink: 0; }
        .agent-thinking-text { display: inline-flex; align-items: center; gap: 2px; }
        .agent-think-icon { flex-shrink: 0; }

        /* 主聊天中的 Agent 工具卡片 */
        .chat-tool-card { background: var(--bg-primary); border: 1px solid var(--border-color); border-radius: 8px; padding: 10px 14px; margin: 6px 0; font-size: 12px; max-width: 520px; }
        .chat-tool-card .tool-card-header { display: flex; align-items: center; gap: 8px; margin-bottom: 4px; font-weight: 500; color: var(--text-primary); }
        .chat-tool-card .tool-card-badge { display: inline-flex; align-items: center; gap: 3px; font-size: 10px; padding: 1px 6px; border-radius: 8px; font-weight: 500; }
        .chat-tool-card .tool-card-badge.running { background: rgba(245,158,11,0.1); color: #d97706; }
        .chat-tool-card .tool-card-badge.success { background: rgba(16,185,129,0.1); color: #059669; }
        .chat-tool-card .tool-card-badge.error { background: rgba(239,68,68,0.1); color: #dc2626; }
        .chat-tool-card .tool-card-args { font-size: 11px; color: var(--text-tertiary); font-family: monospace; max-height: 60px; overflow-y: auto; }
        .chat-tool-card .tool-card-result { font-size: 11px; color: var(--text-secondary); font-family: monospace; max-height: 120px; overflow-y: auto; margin-top: 4px; padding: 4px 6px; background: var(--hover-bg); border-radius: 4px; white-space: pre-wrap; word-break: break-all; }

        /* Lens 工具调用：参数与结果多行完整展示，默认展开，可折叠 */
        .lens-tool-detail { max-width: 720px; margin: 8px 0; border: 1px solid var(--border-color); border-radius: 10px; background: var(--bg-secondary); overflow: hidden; }
        .lens-tool-detail summary { display: flex; align-items: center; gap: 9px; padding: 9px 12px; cursor: pointer; list-style: none; user-select: none; }
        .lens-tool-detail summary::-webkit-details-marker { display: none; }
        .lens-tool-detail summary::before { content: ''; width: 7px; height: 7px; border-right: 1.5px solid var(--text-tertiary); border-bottom: 1.5px solid var(--text-tertiary); transform: rotate(-45deg); transition: transform .16s; }
        .lens-tool-detail[open] summary::before { transform: rotate(45deg); }
        .lens-tool-name { flex: 1; min-width: 0; font-size: 12px; font-weight: 600; color: var(--text-primary); overflow-wrap: anywhere; }
        .lens-tool-state { flex: none; padding: 2px 7px; border-radius: 999px; font-size: 10px; }
        .lens-tool-state.running { color: #b45309; background: rgba(245,158,11,.12); }
        .lens-tool-state.done { color: #047857; background: rgba(16,185,129,.12); }
        .lens-tool-state.failed { color: #b91c1c; background: rgba(220,38,38,.12); }
        .lens-tool-args, .lens-tool-result { box-sizing: border-box; width: 100%; margin: 0; padding: 9px 12px; border: 0; border-top: 1px solid var(--border-color); background: var(--bg-primary); color: var(--text-secondary); font: 11px/1.55 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace; white-space: pre-wrap; overflow-wrap: anywhere; word-break: break-word; overflow: auto; }
        .lens-tool-args { max-height: 160px; }
        .lens-tool-result { max-height: 360px; }
        /* ★ 2026-09-03 老板指令：信息流分区（WorkBuddy 式）——思考/工具调用等流程输出收进独立「执行过程」区，
           与正文区分离。区级 details 折叠：进行中展开，本轮结束自动收起成一行 summary。 */
        .xk-proc-pane { margin: 4px 0 10px; border: 1px solid var(--border-color); border-radius: 10px; background: var(--bg-secondary); overflow: hidden; max-width: 720px; }
        .xk-proc-pane summary { display: flex; align-items: center; gap: 8px; padding: 7px 12px; cursor: pointer; list-style: none; user-select: none; }
        .xk-proc-pane summary::-webkit-details-marker { display: none; }
        .xk-proc-pane summary::before { content: ''; width: 7px; height: 7px; border-right: 1.5px solid var(--text-tertiary); border-bottom: 1.5px solid var(--text-tertiary); transform: rotate(-45deg); transition: transform .16s; flex: none; }
        .xk-proc-pane[open] summary::before { transform: rotate(45deg); }
        .xk-proc-pane-title { font-size: 12px; font-weight: 600; color: var(--text-primary); }
        .xk-proc-pane-hint { font-size: 10px; color: var(--text-tertiary); }
        .xk-proc-pane-body { padding: 2px 10px 8px; display: flex; flex-direction: column; gap: 2px; }
        .xk-proc-pane-body .thinking-wrapper { margin-bottom: 2px; }
        .xk-proc-pane-body .lens-tool-detail { margin: 2px 0; max-width: none; }

        /* ★ 2026-08-06 老板反馈：思考进度逐行展示（每个进度独立一行，不接着后面显示） */
        .think-progress-line { margin: 3px 0; line-height: 1.7; }
        .think-progress-code { margin: 3px 0; font-family: ui-monospace,SFMono-Regular,Menlo,Consolas,monospace; font-size: 11.5px; background: var(--bg-primary); border-radius: 6px; padding: 4px 8px; overflow-x: auto; white-space: pre-wrap; }

        /* 主聊天中的 Agent 审批卡片 */
        .chat-approval-card { background: #fffbeb; border: 1px solid #fcd34d; border-radius: 10px; padding: 12px 14px; margin: 8px 0; font-size: 12px; max-width: 460px; }
        .chat-approval-card .approval-header { font-weight: 600; margin-bottom: 4px; color: #92400e; }
        .chat-approval-card .approval-args { font-size: 11px; color: var(--text-tertiary); margin-bottom: 6px; font-family: var(--font-ui); max-height: 80px; overflow-y: auto; }
        .chat-approval-card .approval-hint { font-size: 11px; color: #dc2626; margin-bottom: 8px; }
        .chat-approval-card .approval-btns { display: flex; gap: 8px; }
        .chat-approval-card .approval-btns button { padding: 5px 14px; border-radius: 6px; cursor: pointer; font-size: 11px; font-weight: 500; transition: all 0.15s; }
        .chat-approval-card .approve-btn { background: #10b981; color: #fff; border: none; }
        .chat-approval-card .approve-btn:hover { opacity: 0.9; }
        .chat-approval-card .reject-btn { background: transparent; color: var(--text-secondary); border: 1px solid var(--border-color); }
        .chat-approval-card .reject-btn:hover { background: var(--hover-bg); }

        /* 手机端 */
        @media (max-width: 768px) {
            .agent-module-toolbar { padding: 0; }
            .agent-module-search { width: 100%; box-sizing: border-box; }
            .agent-module-tabrow { flex-direction: column; gap: 6px; }
            .agent-module-tabs { width: 100%; overflow-x: auto; }
            .agent-module-tabs .app-tab { flex: 1 0 auto; min-height: 36px; font-size: 13px; }
            .agent-category-filter, .ux-chip { min-height: 32px; font-size: 12px; }
            /* ★ 2026-08-01 手机版分类菜单左对齐 + 左右滑动查看更多（居中会裁掉开头分类） */
            .agent-category-filters, .ux-chips {
                justify-content: flex-start !important;
                margin-left: 4px !important;
                margin-right: 4px !important;
                padding: 0 8px 4px 4px !important;
                scroll-snap-type: x proximity;
                -webkit-overflow-scrolling: touch;
            }
            .agent-category-filter, .ux-chip {
                scroll-snap-align: start;
                padding: 6px 14px !important;
            }
            .agent-grid { grid-template-columns: 1fr; }
            .agent-card { min-height: 124px; }
            .agent-card-actions { position: static; opacity: 1; visibility: visible; transform: none; box-shadow: none; margin-left: auto; }
            .agent-chat-action span { display: none; }
            .agent-chat-action { width: 32px; padding: 0; }
            .agent-create-modal { width: 95%; padding: 16px; border-radius: 16px 16px 0 0; align-self: flex-end; max-height: 90vh; }
            .form-row { flex-direction: column; gap: 0; }
            #agent-create-overlay .form-group [style*="grid-template-columns:1fr 1fr"] { grid-template-columns: 1fr !important; }
            .agent-chat-header { padding: 8px 12px; }
            .agent-chat-messages { padding: 8px 12px; }
            .agent-chat-input-area { padding: 8px 10px; }
            #agent-input-wrapper { border-radius: 20px; }
            /* 2026-07-31 老板反馈：工具栏按钮被挤压 + 空间使用量独占一行 */
            #cloud-toolbar button, #kb-toolbar button { min-height: 36px; }
        #cloud-toolbar > button { background: #fff !important; border: none !important; }
            #cloud-usage-bar { flex-basis: 100%; order: 10; margin-top: 4px; justify-content: flex-start; }
            /* 2026-07-31 KB 文档操作按钮 21px→32px 手机触控 */
            .kb-action-btn { padding: 6px; min-height: 32px; min-width: 32px; }
            /* 2026-07-31 技能中心手机版：操作行隐藏后，内容区上移并保持 10px 间距 */
            #skills-action-row { display: none !important; }
            #skills-content { margin-top: 10px; }
            /* 技能/云盘卡片双列 */
            .skill-grid { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; gap: 8px !important; }
            .cloud-list-grid { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; gap: 8px !important; }
            #cloud-load-more-sentinel { grid-column: 1 / -1 !important; display: block !important; width: 100% !important; }
            /* 卡片操作按钮统一：无边框、SVG 图标、防挤压 */
            .skill-action-btn { padding: 4px !important; min-width: 30px !important; min-height: 30px !important; border: none !important; }
            .skill-card-actions { flex-wrap: wrap !important; gap: 0 !important; }
            /* 云盘卡片内操作按钮去边框 */
            .cloud-asset-card button { border: none !important; }
            #kb-doc-list { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; gap: 8px !important; }
            #kb-doc-list > * { min-width: 0 !important; }
            /* ★ 2026-08-02 模块页卡片移动端质感统一（对齐工作台玻璃，覆盖 1355 遗留 box-shadow:none） */
            .skill-card, .cloud-asset-card, .cloud-thumb-card, #kb-doc-list > * {
                background: rgba(255,255,255,.55) !important;
                backdrop-filter: blur(18px) saturate(1.3) !important;
                -webkit-backdrop-filter: blur(18px) saturate(1.3) !important;
                border: 1px solid rgba(255,255,255,.6) !important;
                box-shadow: 0 8px 24px rgba(56,73,102,.08), inset 0 1px 0 rgba(255,255,255,.5) !important;
            }
            :root[data-theme="dark"] .skill-card,
            :root[data-theme="dark"] .cloud-asset-card,
            :root[data-theme="dark"] .cloud-thumb-card,
            :root[data-theme="dark"] #kb-doc-list > * {
                background: rgba(30,43,61,.55) !important;
                border-color: rgba(120,170,220,.2) !important;
                box-shadow: 0 10px 28px rgba(0,0,0,.22), inset 0 1px 0 rgba(255,255,255,.05) !important;
            }
        }
        
/* 2026-08-01 14:41 双列卡片仅手机版生效（老板澄清）；PC 版保持 auto-fill 自适应排列 */
#cloud-toolbar > button, #kb-toolbar > button { background: #fff !important; border: none !important; }
#main-content-wrapper.state-talk .input-panel { display: none !important; }
        #main-content-wrapper.state-talk .app-page:not(#e5e-talk-page) { display: none !important; }

        /* ----- Assistant Avatar & Thinking Ring ----- */
        .assistant-avatar {
            width: 24px;
            height: 24px;
            position: absolute;
            left: -40px;
            top: 4px;
            display: flex;
            align-items: center;
            justify-content: center;
            z-index: 5;
        }
        .assistant-icon-wrapper {
            width: 20px;
            height: 20px;
            background: var(--primary-color);
            border-radius: 6px;
            display: flex;
            align-items: center;
            justify-content: center;
            color: white;
            position: relative;
            z-index: 2;
        }

        .assistant-icon-wrapper svg {
            width: 14px;
            height: 14px;
        }

        /* The thinking ring */
        .assistant-avatar .thinking-ring {
            position: absolute;
            width: 32px;
            height: 32px;
            border-radius: 50%;
            border: 2px solid transparent;
            border-top-color: var(--primary-color);
            animation: ring-spin 1s linear infinite;
            display: none; /* Hidden by default */
            z-index: 1;
        }

        .assistant-avatar.loading .thinking-ring {
            display: block;
        }

        .reply-thinking-loading {
            display: flex;
            align-items: center;
            gap: 12px;
            color: var(--text-tertiary);
            font-size: 15px;
            padding: 8px 0;
            animation: fadeIn 0.3s ease;
        }

        .thinking-loading-ring {
            width: 18px;
            height: 18px;
            border: 2px solid var(--border-color);
            border-top-color: var(--primary-color);
            border-radius: 50%;
            animation: ring-spin 1s linear infinite;
        }

        .welcome-v2 {
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            padding: 48px 20px 32px;
            width: 100%;
            max-width: 800px;
            margin: 0 auto;
            text-align: center;
            animation: fadeIn 0.6s ease-out;
        }

        .welcome-v2-header, .welcome-v2-desc, .upgrade-prompt, .sphere-avatar {
            align-self: center;
        }

        .sphere-avatar {
            width: 66px;
            height: 66px;
            background: #6366f1;
            border-radius: 50%;
            position: relative;
            box-shadow: 0 6px 20px rgba(99, 102, 241, 0.4);
            margin-bottom: 20px;
            display: flex;
            align-items: center;
            justify-content: center;
            animation: sphereFloat 4s ease-in-out infinite;
            cursor: pointer;
            border: none;
        }

        .sphere-eyes {
            display: flex;
            gap: 12px;
            position: relative;
            top: -5px;
        }

        .sphere-eye {
            width: 30px;
            height: 30px;
            background: white;
            border-radius: 50%;
            position: relative;
            overflow: hidden;
        }

        .sphere-pupil {
            width: 16px;
            height: 16px;
            background: #6366f1;
            border-radius: 50%;
            position: absolute;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
            animation: lookAround 8s infinite cubic-bezier(0.4, 0, 0.2, 1);
        }

        @keyframes sphereFloat {
            0%, 100% { transform: translateY(0) scale(1); }
            50% { transform: translateY(-12px) scale(1.02); }
        }

        @keyframes lookAround {
            0%, 10%, 90%, 100% { transform: translate(-50%, -50%); }
            15%, 30% { transform: translate(-10%, -50%); }
            35%, 50% { transform: translate(-90%, -50%); }
            55%, 70% { transform: translate(-50%, -90%); }
            75%, 85% { transform: translate(-50%, -10%); }
        }

        .welcome-v2-header {
            font-size: 34px;
            font-weight: 800;
            color: var(--text-primary);
            letter-spacing: -0.02em;
            margin: 4px 0 6px;
            line-height: 1.25;
            text-wrap: balance;
        }

        .welcome-v2-desc {
            font-size: 13px;
            color: var(--text-secondary);
            margin-bottom: 24px;
            max-width: 520px;
            line-height: 1.6;
        }

        .welcome-quick-actions {
            display: grid;
            grid-template-columns: repeat(4, 1fr);
            gap: 12px;
            width: 100%;
            max-width: 640px;
            margin: 0 auto 24px;
        }

        .welcome-action-card {
            display: flex;
            flex-direction: column;
            align-items: center;
            gap: 6px;
            padding: 18px 10px 14px;
            border: 1px solid rgba(255,255,255,.6);
            border-radius: 16px;
            background: rgba(255,255,255,.55);
            backdrop-filter: blur(18px) saturate(1.3);
            -webkit-backdrop-filter: blur(18px) saturate(1.3);
            box-shadow: 0 8px 24px rgba(56,73,102,.08), inset 0 1px 0 rgba(255,255,255,.5);
            cursor: pointer;
            transition: transform 0.18s ease, box-shadow 0.18s ease;
            font-family: inherit;
        }

        .welcome-action-card:hover {
            transform: translateY(-3px);
            box-shadow: 0 14px 34px rgba(56,73,102,.12), inset 0 1px 0 rgba(255,255,255,.6);
        }

        .welcome-action-card svg {
            width: 22px;
            height: 22px;
            color: var(--primary-color);
            margin-bottom: 2px;
        }

        .welcome-action-card .wac-name {
            font-size: 13px;
            font-weight: 600;
            color: var(--text-primary);
        }

        .welcome-action-card .wac-desc {
            font-size: 11px;
            color: var(--text-tertiary);
            line-height: 1.3;
        }

        @media (max-width: 640px) {
            .welcome-quick-actions {
                grid-template-columns: repeat(2, 1fr);
                max-width: 340px;
            }
        }

        .upgrade-prompt {
            display: flex;
            align-items: center;
            gap: 10px;
            padding: 10px 20px;
            background: rgba(59, 130, 246, 0.1);
            border: 1px solid rgba(59, 130, 246, 0.2);
            border-radius: 12px;
            color: var(--primary-color);
            font-weight: 600;
            font-size: 14px;
            margin-bottom: 10px;
            cursor: pointer;
            transition: all 0.2s;
            width: fit-content;
        }

        .upgrade-prompt:hover {
            background: rgba(59, 130, 246, 0.2);
            transform: translateY(-2px);
            box-shadow: 0 4px 12px rgba(59, 130, 246, 0.1);
        }

        .suggestion-section {
            display: flex;
            flex-direction: column;
            gap: 0;
            width: 100%;
            text-align: left;
            padding-top: 0;
            border-top: none;
            margin-top: 0;
        }

        .suggestion-title {
            font-size: 14px;
            color: var(--text-tertiary);
            font-weight: 600;
            margin-bottom: 4px;
            display: flex;
            align-items: center;
            gap: 8px;
            border: none;
            outline: none;
            background: transparent;
            padding: 0;
            letter-spacing: 0;
            text-transform: none;
        }

        .suggestion-chips {
            display: flex;
            flex-direction: column;
            gap: 0;
            width: 100%;
        }

        .suggestion-chip {
            padding: 4px 0;
            background: transparent;
            border: none;
            border-radius: 0;
            font-size: 15px;
            color: var(--text-secondary);
            cursor: pointer;
            text-align: left;
            transition: color 0.15s;
            display: block;
            line-height: 1.5;
        }
        .suggestion-chip:hover {
            color: var(--primary-color);
        }

        /* 最新应用 - 横向滚动 */
        .template-section {
            width: 100%;
            max-width: 680px;
            margin-top: 16px;
        }
        .template-title {
            display: flex;
            align-items: center;
            gap: 6px;
            font-size: 12px;
            font-weight: 600;
            color: var(--text-tertiary);
            margin-bottom: 12px;
            text-transform: uppercase;
            letter-spacing: 0.5px;
        }
        .latest-apps-row {
            display: flex;
            gap: 12px;
            overflow-x: auto;
            padding-bottom: 4px;
            scrollbar-width: none;
        }
        .latest-apps-row::-webkit-scrollbar { display: none; }
        .latest-app-item {
            flex-shrink: 0;
            width: 160px;
            cursor: pointer;
            transition: transform 0.15s;
        }
        .latest-app-item:hover { transform: translateY(-2px); }
        .latest-app-thumb {
            width: 160px;
            height: 90px;
            border-radius: 8px;
            overflow: hidden;
            background: #f8f9fa;
            position: relative;
        }
        .latest-app-thumb iframe {
            width: 640px;
            height: 360px;
            border: none;
            transform: scale(0.25);
            transform-origin: top left;
            pointer-events: none;
            position: absolute;
            top: 0;
            left: 0;
        }
        .latest-app-thumb-fallback {
            width: 100%;
            height: 100%;
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: 24px;
            color: var(--text-tertiary);
            background: var(--hover-bg);
        }
        .latest-app-name {
            font-size: 12px;
            font-weight: 500;
            color: var(--text-primary);
            margin-top: 6px;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }

        @keyframes ring-spin {
            0% { transform: rotate(0deg); }
            100% { transform: rotate(360deg); }
        }

        /* ========== 流式响应状态动画系统 ========== */

        /* 1. 初始加载状态 - 脉冲点动画 */
        .reply-thinking-loading {
            display: flex;
            align-items: center;
            gap: 12px;
            color: var(--text-tertiary);
            font-size: 15px;
            padding: 8px 0;
            animation: fadeIn 0.3s ease;
        }
        .thinking-loading-ring {
            width: 18px;
            height: 18px;
            border: 2px solid var(--border-color);
            border-top-color: var(--primary-color);
            border-radius: 50%;
            animation: ring-spin 1s linear infinite;
        }
        /* 三点跳跃动画 */
        .thinking-dots {
            display: inline-flex;
            align-items: center;
            gap: 3px;
            margin-left: 2px;
        }
        .thinking-dots span {
            width: 4px;
            height: 4px;
            border-radius: 50%;
            background: var(--text-tertiary);
            animation: dotBounce 1.4s ease-in-out infinite;
        }
        .thinking-dots span:nth-child(2) { animation-delay: 0.2s; }
        .thinking-dots span:nth-child(3) { animation-delay: 0.4s; }
        @keyframes dotBounce {
            0%, 80%, 100% { transform: scale(0.6); opacity: 0.4; }
            40% { transform: scale(1); opacity: 1; }
        }

        /* 2. 思考中状态 - 进度指示 */
        .thinking-phase-indicator {
            display: flex;
            align-items: center;
            gap: 8px;
            padding: 6px 0;
            animation: fadeIn 0.3s ease;
        }
        .thinking-phase-dot {
            width: 6px;
            height: 6px;
            border-radius: 50%;
            background: var(--primary-color);
            animation: phasePulse 1.5s ease-in-out infinite;
        }
        .thinking-phase-text {
            font-size: 13px;
            color: var(--text-tertiary);
            font-weight: 400;
        }
        .video-progress-container {
            display: flex;
            align-items: center;
            gap: 12px;
            padding: 12px 16px;
            background: var(--hover-bg);
            border-radius: 10px;
            margin: 8px 0;
        }
        .video-progress-icon {
            font-size: 24px;
            flex-shrink: 0;
            animation: videoIconPulse 2s infinite;
        }
        @keyframes videoIconPulse { 0%,100% { opacity:1; } 50% { opacity:0.5; } }
        .video-progress-info {
            flex: 1;
            min-width: 0;
        }
        .video-progress-label {
            font-size: 13px;
            font-weight: 500;
            color: var(--text-primary);
            margin-bottom: 6px;
        }
        .video-progress-bar {
            height: 6px;
            background: var(--border-color);
            border-radius: 3px;
            overflow: hidden;
        }
        .video-progress-bar-fill {
            height: 100%;
            background: linear-gradient(90deg, #6366f1, #8b5cf6, #a78bfa);
            border-radius: 3px;
            transition: width 0.5s ease;
        }
        .video-progress-percent {
            font-size: 13px;
            font-weight: 600;
            color: var(--accent-color, #6366f1);
            flex-shrink: 0;
            min-width: 36px;
            text-align: right;
        }
        @keyframes phasePulse {
            0%, 100% { transform: scale(1); opacity: 0.5; }
            50% { transform: scale(1.3); opacity: 1; }
        }

        /* 3. 流式省略号动画 - 飘动效果 */
        .streaming-dots {
            display: inline-flex;
            align-items: center;
            gap: 4px;
            margin-left: 4px;
            vertical-align: baseline;
        }
        .streaming-dots span {
            display: inline-block;
            font-size: 14px;
            font-weight: 700;
            color: var(--primary-color);
            animation: floatDot 1.6s ease-in-out infinite;
        }
        .streaming-dots span:nth-child(1) { animation-delay: 0s; }
        .streaming-dots span:nth-child(2) { animation-delay: 0.25s; }
        .streaming-dots span:nth-child(3) { animation-delay: 0.5s; }
        @keyframes floatDot {
            0%, 100% { transform: translateY(0); opacity: 0.4; }
            50% { transform: translateY(-4px); opacity: 1; }
        }

        /* 4. 思考完成过渡动画 */
        .thinking-wrapper.done-transition .thinking-header {
            animation: thinkDoneSlide 0.4s ease-out;
        }
        @keyframes thinkDoneSlide {
            0% { transform: translateX(-4px); opacity: 0.6; }
            100% { transform: translateX(0); opacity: 1; }
        }

        /* 5. 正文出现动画 */
        .answer-appear {
            animation: answerFadeIn 0.4s ease-out;
        }
        @keyframes answerFadeIn {
            from { opacity: 0; transform: translateY(6px); }
            to { opacity: 1; transform: translateY(0); }
        }

        /* 6. 思考内容流式效果 */
        .thinking-content.streaming-think {
            position: relative;
        }
        .thinking-content.streaming-think::after {
            content: ' ...';
            color: var(--primary-color);
            animation: floatDot 1.6s ease-in-out infinite;
        }

        /* ========== /流式响应状态动画系统 ========== */

        /* Adjust message content padding to make space for absolute avatar on desktop */
        .assistant-row {
            position: relative;
        }

        .message-row {
            display: flex; flex-direction: column; padding: 14px 0;
            animation: fadeIn 0.3s ease; width: 100%; align-items: center;
        }
        .message-content { width: 100%; max-width: 760px; display: flex; flex-direction: column; padding: 0 16px; position: relative; }
        .message-row.user-row .message-content { align-items: flex-end; }

        /* API Error Card — ★ 2026-08-25 优化：统一纵向卡片结构 + 分类配色（quota 琥珀/引导升级，network/model 红，auth 蓝等） */
        .api-error-card {
            margin-top: 8px;
            padding: 14px 16px;
            background: var(--bg-secondary, #fafafa);
            border: 1px solid var(--border-color, #e2e8f0);
            border-radius: 12px;
            animation: errorFadeIn 0.3s ease;
            max-width: 100%;
            box-sizing: border-box;
            display: block;
        }
        .api-error-card[data-error-category="quota"] {
            background: rgba(245, 158, 11, 0.06);
            border-color: rgba(245, 158, 11, 0.25);
        }
        .api-error-card[data-error-category="network"],
        .api-error-card[data-error-category="model"] {
            background: rgba(239, 68, 68, 0.05);
            border-color: rgba(239, 68, 68, 0.2);
        }
        .api-error-card[data-error-category="auth"] {
            background: rgba(59, 130, 246, 0.05);
            border-color: rgba(59, 130, 246, 0.22);
        }
        .api-error-card[data-error-category="rate_limit"],
        .api-error-card[data-error-category="timeout"] {
            background: rgba(249, 115, 22, 0.05);
            border-color: rgba(249, 115, 22, 0.2);
        }
        .api-error-card[data-error-category="permission"] {
            background: rgba(139, 92, 246, 0.05);
            border-color: rgba(139, 92, 246, 0.2);
        }
        .error-header {
            display: flex;
            align-items: center;
            gap: 8px;
            color: var(--error-color, #dc2626);
            font-size: 13.5px;
            font-weight: 600;
        }
        .api-error-card[data-error-category="quota"] .error-header { color: #b45309; }
        .api-error-card[data-error-category="auth"] .error-header { color: #2563eb; }
        .api-error-card[data-error-category="permission"] .error-header { color: #7c3aed; }
        .api-error-card[data-error-category="rate_limit"] .error-header,
        .api-error-card[data-error-category="timeout"] .error-header { color: #ea580c; }
        .error-header svg { width: 16px; height: 16px; flex-shrink: 0; }
        .error-body { display: none; }
        .error-footer { margin: 0; }
        .retry-btn {
            display: inline-flex;
            align-items: center;
            gap: 5px;
            padding: 6px 12px;
            background: transparent;
            color: var(--error-color, #dc2626);
            border: 1px solid rgba(239, 68, 68, 0.3);
            border-radius: 8px;
            font-size: 12px;
            font-weight: 500;
            cursor: pointer;
            transition: all 0.2s;
            flex-shrink: 0;
        }
        .retry-btn:hover { background: rgba(239, 68, 68, 0.08); }
        .retry-btn.secondary { border-color: var(--border-color, #d0d7de); color: var(--text-secondary, #57606a); margin-left: 8px; }
        .retry-btn.secondary:hover { background: rgba(37, 99, 235, 0.08); }
        /* ★ 2026-08-17 余额不足错误卡片的「去充值」快捷按钮（金色高亮，与错误红区分） */
        /* ★ 2026-08-25 quota 类按钮统一金色实心（升级/充值引导更突出） */
        .api-error-card[data-error-category="quota"] .retry-btn {
            border-color: rgba(245, 158, 11, 0.5);
            color: #b45309;
            font-weight: 600;
        }
        .api-error-card[data-error-category="quota"] .retry-btn:hover { background: rgba(245, 158, 11, 0.12); border-color: rgba(245, 158, 11, 0.7); }
        .retry-btn.recharge-btn {
            background: linear-gradient(135deg, #f59e0b, #f97316);
            border-color: transparent;
            color: #fff;
            box-shadow: 0 1px 4px rgba(245, 158, 11, 0.3);
        }
        .retry-btn.recharge-btn:hover { background: linear-gradient(135deg, #d97706, #ea580c); color: #fff; }
        /* ★ 2026-08-25 「升级会员」按钮（紫色渐变，与金色充值区分） */
        .retry-btn.upgrade-btn {
            background: linear-gradient(135deg, #6366f1, #8b5cf6);
            border-color: transparent;
            color: #fff;
            box-shadow: 0 1px 4px rgba(99, 102, 241, 0.3);
        }
        .retry-btn.upgrade-btn:hover { background: linear-gradient(135deg, #4f46e5, #7c3aed); color: #fff; }
        .error-footer { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-top: 12px; }
        .retry-btn.recharge-btn + .retry-btn { margin-left: 0; }
        .chat-run-status { margin-top: 8px; padding: 6px 10px; border-radius: 8px; font-size: 12px; }
        .chat-run-status.stopped { color: #b45309; background: rgba(180, 83, 9, 0.08); border: 1px solid rgba(180, 83, 9, 0.25); display: inline-block; }
        .error-detail { padding: 8px 12px; font-size: 12px; color: var(--text-secondary, #57606a); white-space: pre-wrap; word-break: break-all; }
        .message-row [data-run-status="reconnecting"]::after { content: '网络中断，正在续接...'; display: block; margin-top: 6px; font-size: 12px; color: #2563eb; }
        .lens-tool-state.failed { color: #dc2626; }
        .retry-btn svg { width: 13px; height: 13px; }

        @keyframes errorFadeIn {
            from { opacity: 0; transform: translateY(4px); }
            to { opacity: 1; transform: translateY(0); }
        }
        .message-row.user-row .bubble { max-width: 70%; align-self: flex-end; background-color: var(--user-bubble); color: var(--text-primary); padding: 12px 20px; border-radius: 24px; line-height: 1.6; word-wrap: break-word; font-size: 15px; position: relative; }
        .user-row .bubble .markdown-body { background: transparent; font-size: inherit; color: inherit; }
        .user-row .bubble .markdown-body p { margin-bottom: 8px; }
        .user-row .bubble .markdown-body p:last-child { margin-bottom: 0; }

        .chat-img-preview { max-width: 100%; max-height: 240px; height: auto; width: auto; border-radius: 12px; margin-bottom: 8px; border: 1px solid var(--border-color); display: block; cursor: zoom-in; transition: transform 0.2s cubic-bezier(0.4, 0, 0.2, 1); }
        .chat-img-preview:hover { transform: scale(1.01); box-shadow: 0 4px 12px rgba(0,0,0,0.1); }

        /* Agent 步骤流可视化 */
        .agent-flow { display: flex; flex-direction: column; gap: 0; margin: 8px 0 16px; position: relative; }
        .agent-flow-step { display: flex; align-items: flex-start; gap: 10px; position: relative; padding: 6px 0; animation: stepIn 0.3s ease; }
        @keyframes stepIn { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: translateY(0); } }
        .agent-flow-step .step-connector { position: absolute; left: 14px; top: 28px; width: 2px; height: calc(100% - 20px); background: var(--border-color); }
        .agent-flow-step:last-child .step-connector { display: none; }
        .agent-flow-step .step-dot { width: 28px; height: 28px; min-width: 28px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 700; z-index: 1; background: var(--hover-bg); border: 2px solid var(--border-color); color: var(--text-secondary); transition: all 0.3s; }
        .agent-flow-step .step-dot.done { background: rgba(16, 185, 129, 0.1); border-color: #10b981; color: #10b981; }
        .agent-flow-step .step-dot.active { background: rgba(59, 130, 246, 0.12); border-color: var(--primary-color); color: var(--primary-color); animation: pulseDot 1.5s infinite; }
        .agent-flow-step .step-dot.error { background: rgba(239, 68, 68, 0.1); border-color: var(--error-color); color: var(--error-color); }
        @keyframes pulseDot { 0%,100% { box-shadow: 0 0 0 0 rgba(59,130,246,0.3); } 50% { box-shadow: 0 0 0 6px rgba(59,130,246,0); } }
        .agent-flow-step .step-body { flex: 1; min-width: 0; }
        .agent-flow-step .step-title { font-size: 13px; font-weight: 600; color: var(--text-primary); display: flex; align-items: center; gap: 6px; }
        .agent-flow-step .step-desc { font-size: 11px; color: var(--text-tertiary); margin-top: 2px; }
        .agent-flow-step .step-code { font-size: 11px; background: var(--code-bg); border-radius: 4px; padding: 4px 8px; margin-top: 4px; color: var(--text-secondary); font-family: monospace; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 100%; }

        /* 媒体生成卡片 */
        .media-card { display: flex; gap: 12px; padding: 12px; border-radius: 14px; background: var(--code-bg); border: 1px solid var(--border-color); margin: 4px 0; max-width: 480px; transition: all 0.2s; cursor: pointer; }
        .media-card:hover { border-color: var(--primary-color); box-shadow: 0 2px 12px rgba(0,0,0,0.06); }
        .media-card-thumb { width: 100px; height: 100px; flex-shrink: 0; border-radius: 10px; overflow: hidden; cursor: zoom-in; display: flex; align-items: center; justify-content: center; background: var(--bg-main); border: 1px solid var(--border-color); }
        .media-card-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
        .media-card-thumb video { width: 100%; height: 100%; object-fit: cover; display: block; }
        .media-card-thumb .media-play-icon { position: absolute; width: 28px; height: 28px; border-radius: 50%; background: rgba(0,0,0,0.5); display: flex; align-items: center; justify-content: center; color: #fff; }
        .media-card-info { flex: 1; display: flex; flex-direction: column; justify-content: center; gap: 4px; min-width: 0; }
        .media-card-title { font-size: 13px; font-weight: 600; color: var(--text-primary); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
        .media-card-meta { font-size: 11px; color: var(--text-tertiary); display: flex; gap: 8px; flex-wrap: wrap; }
        .media-card-prompt { font-size: 12px; color: var(--text-secondary); line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
        .media-card-actions { display: flex; gap: 4px; margin-top: 4px; }
        .media-card-actions .mini-btn { font-size: 11px; padding: 3px 8px; border-radius: 6px; border: 1px solid var(--border-color); background: transparent; color: var(--text-tertiary); cursor: pointer; transition: all 0.15s; display: inline-flex; align-items: center; gap: 3px; }
        .media-card-actions .mini-btn:hover { border-color: var(--primary-color); color: var(--primary-color); }
        .media-card-actions .mini-btn svg { width: 12px; height: 12px; }
        @media (max-width: 520px) {
            .media-card { max-width: 100%; flex-direction: column; }
            .media-card-thumb { width: 100%; height: 140px; }
        }

        /* ★ v8.0.1: 视频结果卡片 — 与图片卡片保持一致的左对齐宽幅设计 */
        .video-result-card {
            display: flex;
            flex-direction: column;
            gap: 8px;
            padding: 10px;
            border-radius: 14px;
            background: var(--code-bg);
            border: 1px solid var(--border-color);
            margin: 4px 0;
            max-width: 640px;
            transition: all 0.2s;
        }
        .video-result-card:hover { border-color: var(--primary-color); box-shadow: 0 2px 12px rgba(0,0,0,0.06); }
        .video-result-card video {
            width: 100%;
            display: block;
            border-radius: 8px;
            background: #000;
            outline: none;
            max-height: 420px;
        }
        .video-result-meta {
            display: flex;
            align-items: center;
            gap: 8px;
            padding: 0 2px;
            flex-wrap: wrap;
        }
        .video-result-meta .vr-label {
            font-size: 12px;
            color: var(--text-secondary);
            display: inline-flex;
            align-items: center;
            gap: 4px;
            font-weight: 500;
        }
        .video-result-meta .vr-info {
            font-size: 11px;
            color: var(--text-tertiary);
        }
        .video-result-meta .vr-dl-btn {
            margin-left: auto;
            font-size: 11px;
            padding: 3px 10px;
            border-radius: 6px;
            border: 1px solid var(--border-color);
            background: transparent;
            color: var(--text-tertiary);
            cursor: pointer;
            transition: all 0.15s;
            display: inline-flex;
            align-items: center;
            gap: 3px;
            text-decoration: none;
        }
        .video-result-meta .vr-dl-btn:hover {
            border-color: var(--primary-color);
            color: var(--primary-color);
        }
        .video-result-prompt {
            font-size: 12px;
            color: var(--text-secondary);
            line-height: 1.4;
            padding: 0 2px;
            display: -webkit-box;
            -webkit-line-clamp: 2;
            -webkit-box-orient: vertical;
            overflow: hidden;
        }
        @media (max-width: 520px) {
            .video-result-card { max-width: 100%; }
            .video-result-card video { max-height: 240px; }
        }

        /* ★ v8.0.1: 视频生成加载卡片 */
        .video-pending-card {
            display: flex;
            align-items: center;
            gap: 12px;
            padding: 14px 16px;
            border-radius: 14px;
            background: var(--code-bg);
            border: 1px solid var(--border-color);
            margin: 4px 0;
            max-width: 480px;
        }
        .video-pending-icon {
            width: 36px;
            height: 36px;
            border-radius: 50%;
            background: rgba(139,92,246,0.1);
            display: flex;
            align-items: center;
            justify-content: center;
            flex-shrink: 0;
        }
        .video-pending-info {
            flex: 1;
            min-width: 0;
        }
        .video-pending-title {
            font-size: 13px;
            font-weight: 600;
            color: var(--text-primary);
        }
        .video-pending-status {
            font-size: 12px;
            color: var(--text-tertiary);
            margin-top: 2px;
        }
        .video-pending-progress {
            width: 100%;
            height: 4px;
            background: var(--bg-main);
            border-radius: 2px;
            overflow: hidden;
            margin-top: 6px;
        }
        .video-pending-progress-fill {
            height: 100%;
            background: linear-gradient(90deg, #8b5cf6, #6366f1);
            border-radius: 2px;
            transition: width 0.5s ease;
            animation: vp-gradient-shift 2s linear infinite;
            background-size: 200% 100%;
        }
        @keyframes vp-gradient-shift {
            0% { background-position: 200% 0; }
            100% { background-position: -200% 0; }
        }
        @media (max-width: 520px) {
            .video-pending-card { max-width: 100%; }
        }

        /* ★ v8.0.1: media-gen 通用卡片（图片/视频/音频生成结果） */
        .media-gen-card {
            max-width: 480px;
            margin: 4px 0;
        }
        .media-gen-card .media-gen-video {
            width: 100%;
            display: block;
            border-radius: 12px;
            background: #000;
            outline: none;
            max-height: 420px;
        }
        .media-gen-images {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
            gap: 6px;
        }
        .media-gen-images img {
            width: 100%;
            border-radius: 10px;
            cursor: pointer;
            display: block;
            height: auto;
            object-fit: contain;
            aspect-ratio: auto;
            background: var(--bg-main);
            border: 1px solid var(--border-color);
            transition: all 0.2s;
        }
        .media-gen-images img:hover {
            border-color: var(--primary-color);
            box-shadow: 0 2px 8px rgba(99,102,241,0.15);
        }
        .media-gen-meta {
            display: flex;
            align-items: center;
            gap: 8px;
            margin-top: 6px;
            padding: 0 2px;
            font-size: 11px;
            color: var(--text-tertiary);
            flex-wrap: wrap;
        }
        .media-gen-meta > * { display: inline-flex; align-items: center; gap: 3px; }
        .media-gen-pending {
            display: flex;
            align-items: center;
            gap: 12px;
            padding: 14px 16px;
            border-radius: 14px;
            background: var(--code-bg);
            border: 1px solid var(--border-color);
        }
        .media-gen-pending-info { flex: 1; min-width: 0; }
        .media-gen-progress {
            width: 100%;
            height: 4px;
            background: var(--bg-main);
            border-radius: 2px;
            overflow: hidden;
            margin-top: 6px;
        }
        .media-gen-progress-fill {
            height: 100%;
            background: linear-gradient(90deg, #8b5cf6, #6366f1);
            border-radius: 2px;
            transition: width 0.5s ease;
            background-size: 200% 100%;
            animation: vp-gradient-shift 2s linear infinite;
        }
        .media-gen-status {
            font-size: 12px;
            color: var(--text-tertiary);
            margin-top: 2px;
        }
        .media-gen-error {
            padding: 12px 16px;
            border-radius: 10px;
            background: rgba(239,68,68,0.06);
            border: 1px solid rgba(239,68,68,0.15);
            font-size: 12px;
            color: var(--error-color);
            display: flex;
            align-items: center;
            gap: 6px;
        }
        .media-dl-btn {
            font-size: 11px;
            padding: 3px 10px;
            border-radius: 6px;
            border: 1px solid var(--border-color);
            background: transparent;
            color: var(--text-tertiary);
            cursor: pointer;
            transition: all 0.15s;
            display: inline-flex;
            align-items: center;
            gap: 3px;
            text-decoration: none;
            margin-left: auto;
        }
        .media-dl-btn:hover {
            border-color: var(--primary-color);
            color: var(--primary-color);
        }
        .media-gen-audio audio {
            width: 100%;
            border-radius: 10px;
            outline: none;
        }
        @media (max-width: 520px) {
            .media-gen-card { max-width: 100%; }
            .media-gen-card .media-gen-video { max-height: 240px; }
            .media-gen-images { grid-template-columns: repeat(auto-fit, minmax(100px, 1fr)); }
        }

        /* Lightbox styles */
        /* v6.4.13: 专业图片查看器 */
        .lightbox-modal { position: fixed; inset: 0; background: rgba(0, 0, 0, 0.92); z-index: 40000; display: none; align-items: center; justify-content: center; cursor: zoom-out; opacity: 0; transition: opacity 0.25s ease; backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); }
        .lightbox-modal.active { display: flex; opacity: 1; }
        .lightbox-wrapper { position: relative; max-width: 92vw; max-height: 92vh; display: flex; flex-direction: column; align-items: center; }
        .lightbox-content { max-width: 92vw; max-height: 88vh; object-fit: contain; border-radius: 6px; box-shadow: 0 8px 48px rgba(0, 0, 0, 0.5); animation: lightboxIn 0.3s cubic-bezier(0.34, 1.56, 0.64, 1); transition: transform 0.12s ease-out; will-change: transform; }
        @keyframes lightboxIn { from { transform: scale(0.92); opacity: 0; } to { transform: scale(1); opacity: 1; } }
        .lightbox-toolbar { position: fixed; top: 20px; left: 50%; transform: translateX(-50%); display: flex; gap: 8px; align-items: center; background: rgba(30, 30, 30, 0.85); border: 1px solid rgba(255, 255, 255, 0.1); border-radius: 12px; padding: 6px 10px; backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); z-index: 40001; }
        .lightbox-btn { width: 36px; height: 36px; border-radius: 8px; border: none; background: transparent; color: rgba(255, 255, 255, 0.7); cursor: pointer; display: flex; align-items: center; justify-content: center; transition: 0.2s; }
        .lightbox-btn:hover { background: rgba(255, 255, 255, 0.1); color: #fff; }
        .lightbox-btn.close:hover { background: rgba(239, 68, 68, 0.6); color: #fff; }
        .lightbox-btn.download { width: auto; padding: 0 14px; font-size: 13px; gap: 6px; }
        .lightbox-counter { color: rgba(255, 255, 255, 0.5); font-size: 13px; padding: 0 8px; min-width: 50px; text-align: center; }
        .lightbox-info { position: fixed; bottom: 24px; left: 50%; transform: translateX(-50%); color: rgba(255, 255, 255, 0.4); font-size: 12px; z-index: 40001; pointer-events: none; }

        .message-row.assistant-row .message-content { align-items: flex-start; }
        .msg-body-wrapper { width: 100%; }

        /* ----- Markdown ----- */
        .markdown-body { line-height: 1.75; font-size: 15px; color: var(--text-primary); width: 100%; word-break: break-word; }
        .markdown-body video { max-width: 100%; border-radius: 12px; margin: 8px 0; }
        .video-player-wrapper { position: relative; display: inline-block; max-width: 100%; margin: 8px 0; border-radius: 12px; overflow: hidden; background: #000; }
        .video-player-wrapper video { display: block; max-width: 100%; border-radius: 12px; }
        .video-player-badge { position: absolute; top: 8px; right: 8px; background: rgba(0,0,0,0.6); color: #fff; font-size: 12px; padding: 2px 8px; border-radius: 10px; }
        .video-saved-toast { font-size: 13px; color: var(--text-tertiary); margin-top: 4px; }
        .markdown-body p { margin-bottom: 16px; }
        .markdown-body p:last-child { margin-bottom: 0; }
        .markdown-body h1, .markdown-body h2, .markdown-body h3, .markdown-body h4 { margin-top: 32px; margin-bottom: 16px; font-weight: 600; line-height: 1.4; color: var(--text-primary); }
        .markdown-body h1 { font-size: 24px; padding-bottom: 8px; }
        .markdown-body h2 { font-size: 20px; padding-bottom: 6px; }
        .markdown-body ul, .markdown-body ol { margin-bottom: 16px; padding-left: 24px; }
        .markdown-body li { margin-bottom: 8px; }
        .markdown-body code { font-family: 'Fira Code', Consolas, Monaco, monospace; font-size: 14px; background: var(--code-bg); padding: 3px 6px; border-radius: 6px; color: #000000; font-weight: 500; }
        :root[data-theme="dark"] .markdown-body code { color: #ffffff; }
        .markdown-body blockquote { border-left: 4px solid #c8c8c8; padding-left: 16px; color: var(--text-secondary); margin: 16px 0; }
        :root[data-theme="dark"] .markdown-body blockquote { border-left-color: #4b4b4b; }
        .markdown-body table { width: 100%; border-collapse: collapse; margin-bottom: 16px; }
        .markdown-body th, .markdown-body td { border: 1px solid var(--border-color); padding: 10px 14px; text-align: left; }
        .markdown-body th { background-color: var(--code-bg); font-weight: 600; }

        .code-wrapper {
            background-color: #fafafa !important;
            border-radius: 12px;
            margin: 20px 0;
            overflow: hidden;
            border: 1px solid #f0f0f0;
            transition: all 0.3s ease;
        }
        :root[data-theme="dark"] .code-wrapper {
            background-color: #161b22 !important;
            border: 1px solid rgba(255, 255, 255, 0.05);
        }
        .code-header {
            display: flex;
            align-items: center;
            justify-content: space-between;
            padding: 8px 16px;
            background: transparent;
        }
        :root[data-theme="dark"] .code-header {
            border-bottom: none;
        }
        .code-lang {
            display: flex;
            align-items: center;
            gap: 6px;
            font-size: 13px;
            color: #495057;
            font-family: var(--font-family);
            text-transform: uppercase;
            font-weight: 600;
            letter-spacing: 0.5px;
        }
        :root[data-theme="dark"] .code-lang { color: #8b949e; }
        .code-lang svg { width: 14px; height: 14px; stroke-width: 2.5; }

        .code-actions { display: flex; gap: 4px; align-items: center; }
        /* 流式期间隐藏代码块操作按钮 */
        .markdown-body.streaming .code-action-btn { display: none !important; }
        .markdown-body.streaming .code-header { pointer-events: none; }

        .code-action-btn {
            display: flex; align-items: center; justify-content: center;
            width: 28px; height: 28px; background: transparent; border: none;
            border-radius: 6px; cursor: pointer; color: var(--text-secondary);
            transition: all 0.2s; padding: 0;
        }
        .code-action-btn svg { width: 16px; height: 16px; stroke-width: 1.5; }
        .code-action-btn:hover {
            background: var(--hover-bg);
            color: var(--text-primary);
        }
        :root[data-theme="dark"] .code-action-btn:hover {
            background: #21262d;
            color: #c9d1d9;
        }
        .runnable-btn {
            position: relative;
            color: var(--text-secondary) !important;
            background: transparent !important;
            border: none !important;
        }
        .runnable-btn:hover {
            background: var(--hover-bg) !important;
            color: var(--text-primary) !important;
        }
        :root[data-theme="dark"] .runnable-btn:hover {
            background: #21262d !important;
            color: #c9d1d9 !important;
        }
        .run-badge {
            display: none; /* Hide in default view to match image */
        }

        /* Artifact Card Enhanced Styles */
        .artifact-card {
            display: flex;
            align-items: center;
            padding: 16px;
            border: 1px solid var(--border-color);
            border-radius: 12px;
            margin: 12px 0;
            cursor: pointer;
            transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
            position: relative;
            overflow: hidden;
            background: #ffffff;
        }
        .artifact-card:hover {
            transform: translateY(-2px);
            box-shadow: 0 12px 24px -10px rgba(0,0,0,0.1);
            border-color: #10b981;
        }
        .artifact-icon {
            width: 44px;
            height: 44px;
            border-radius: 10px;
            display: flex;
            align-items: center;
            justify-content: center;
            margin-right: 16px;
            flex-shrink: 0;
        }
        .artifact-info { flex: 1; min-width: 0; }
        .artifact-title {
            font-size: 15px;
            font-weight: 600;
            color: #1a202c;
            margin-bottom: 2px;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }
        .artifact-meta { font-size: 12px; color: #718096; }
        .artifact-action-hint {
            font-size: 10px;
            color: #10b981;
            font-weight: 700;
            text-transform: uppercase;
            letter-spacing: 0.5px;
            margin-left: 12px;
        }
        .artifact-card::after {
            content: '';
            position: absolute;
            left: 0;
            top: 0;
            height: 100%;
            width: 4px;
            background: #10b981;
            opacity: 0;
            transition: opacity 0.2s;
        }
        .artifact-card:hover::after { opacity: 1; }
        .editor-overlay {
            position: absolute;
            inset: 0;
            background: var(--bg-main);
            z-index: 2000;
            display: none;
            flex-direction: column;
            animation: slideInRight 0.3s cubic-bezier(0.16, 1, 0.3, 1);
        }
        .editor-overlay.active { display: flex; }
        @keyframes slideInRight {
            from { transform: translateX(100%); }
            to { transform: translateX(0); }
        }

        /* 版本历史面板 */
        .version-panel {
            position: absolute;
            top: 0;
            right: 0;
            bottom: 0;
            width: 420px;
            max-width: 90vw;
            background: var(--bg-main);
            border-left: 1px solid var(--border-color);
            z-index: 2100;
            display: none;
            flex-direction: column;
            animation: slideInRight 0.25s ease;
            box-shadow: -4px 0 20px rgba(0,0,0,0.08);
        }
        .version-panel.active { display: flex; }
        .version-panel-header {
            display: flex;
            align-items: center;
            justify-content: space-between;
            padding: 16px 20px;
            border-bottom: 1px solid var(--border-color);
            flex-shrink: 0;
        }
        .version-panel-title {
            display: flex;
            align-items: center;
            gap: 8px;
            font-size: 15px;
            font-weight: 600;
            color: var(--text-primary);
        }
        .version-panel-close {
            background: transparent;
            border: none;
            color: var(--text-tertiary);
            cursor: pointer;
            padding: 4px;
            border-radius: 6px;
            transition: 0.2s;
            display: flex;
            align-items: center;
        }
        .version-panel-close:hover { background: var(--hover-bg); color: var(--text-primary); }
        .version-panel-actions {
            padding: 12px 20px;
            border-bottom: 1px solid var(--border-color);
            flex-shrink: 0;
        }
        .version-save-btn {
            display: flex;
            align-items: center;
            gap: 8px;
            width: 100%;
            padding: 10px 16px;
            background: var(--primary-color);
            color: #fff;
            border: none;
            border-radius: 10px;
            font-size: 13px;
            font-weight: 600;
            cursor: pointer;
            transition: 0.2s;
            justify-content: center;
        }
        .version-save-btn:hover { opacity: 0.9; transform: translateY(-1px); }
        .version-save-btn:active { transform: translateY(0); }
        .version-more-apps-btn {
            display: flex;
            align-items: center;
            gap: 8px;
            width: 100%;
            padding: 10px 16px;
            background: transparent;
            color: var(--text-secondary);
            border: 1px solid var(--border-color);
            border-radius: 10px;
            font-size: 13px;
            font-weight: 500;
            cursor: pointer;
            transition: 0.2s;
            justify-content: center;
            margin-top: 8px;
        }
        .version-more-apps-btn:hover { background: var(--hover-bg); color: var(--text-primary); }
        .version-panel-list {
            flex: 1;
            overflow-y: auto;
            padding: 12px;
        }
        .version-panel-list::-webkit-scrollbar { width: 4px; }
        .version-panel-list::-webkit-scrollbar-thumb { background: var(--border-color); border-radius: 2px; }
        .version-empty {
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            gap: 12px;
            padding: 60px 20px;
            text-align: center;
        }
        .version-empty p {
            font-size: 14px;
            font-weight: 500;
            color: var(--text-secondary);
            margin: 0;
        }
        .version-empty span {
            font-size: 12px;
            color: var(--text-tertiary);
            line-height: 1.5;
        }
        .version-card {
            background: var(--bg-sidebar);
            border: 1px solid var(--border-color);
            border-radius: 10px;
            padding: 0;
            margin-bottom: 8px;
            transition: 0.2s;
            cursor: default;
            display: flex;
            overflow: hidden;
        }
        .version-card:hover { border-color: var(--primary-color); }
        .version-card-thumb {
            width: 120px;
            min-height: 75px;
            flex-shrink: 0;
            background: var(--hover-bg);
            display: flex;
            align-items: center;
            justify-content: center;
            cursor: pointer;
            overflow: hidden;
            position: relative;
            border-right: 1px solid var(--border-color);
        }
        .version-card-thumb img {
            width: 100%;
            height: 100%;
            object-fit: cover;
        }
        .version-card-thumb-placeholder {
            width: 100%;
            height: 100%;
            align-items: center;
            justify-content: center;
            background: var(--hover-bg);
        }
        .version-card-info {
            flex: 1;
            padding: 12px 14px;
            min-width: 0;
        }
        .version-card-header {
            display: flex;
            align-items: center;
            justify-content: space-between;
            margin-bottom: 8px;
        }
        .version-card-time {
            font-size: 13px;
            font-weight: 600;
            color: var(--text-primary);
        }
        .version-card-badge {
            font-size: 10px;
            padding: 2px 6px;
            border-radius: 4px;
            background: rgba(59, 130, 246, 0.1);
            color: var(--primary-color);
            font-weight: 500;
        }
        .version-card-desc {
            font-size: 12px;
            color: var(--text-tertiary);
            margin-bottom: 10px;
            line-height: 1.4;
        }
        .version-card-meta {
            font-size: 11px;
            color: var(--text-tertiary);
            margin-bottom: 10px;
        }
        .version-card-actions {
            display: flex;
            gap: 6px;
        }
        .version-card-btn {
            flex: 1;
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 4px;
            padding: 8px 4px;
            border-radius: 8px;
            border: 1px solid var(--border-color);
            background: transparent;
            color: var(--text-secondary);
            font-size: 12px;
            font-weight: 500;
            cursor: pointer;
            transition: 0.15s;
        }
        .version-card-btn:hover { background: var(--hover-bg); color: var(--text-primary); }
        .version-card-btn.restore { border-color: var(--primary-color); color: var(--primary-color); }
        .version-card-btn.restore:hover { background: rgba(59, 130, 246, 0.05); }
        .version-card-btn.delete:hover { border-color: var(--error-color); color: var(--error-color); }
        .version-card-btn svg { width: 12px; height: 12px; }

        .editor-top-bar {
            height: 56px;
            display: flex;
            align-items: center;
            justify-content: space-between;
            padding: 0 16px;
            border-bottom: 1px solid var(--border-color);
            flex-shrink: 0;
            margin-top: 8px;
        }
        .editor-top-left { display: flex; align-items: center; gap: 1px; }
        .editor-top-right { display: flex; align-items: center; gap: 1px; }

        .editor-btn {
            background: transparent;
            border: none;
            color: var(--text-secondary);
            cursor: pointer;
            display: flex;
            align-items: center;
            justify-content: center;
            padding: 8px;
            border-radius: 8px;
            transition: 0.2s;
            font-size: 14px;
            font-weight: 500;
            gap: 6px;
        }
        .editor-btn:hover { background: var(--hover-bg); color: var(--text-primary); }
        .editor-btn svg { width: 18px; height: 18px; }

        .editor-main {
            flex: 1;
            display: flex;
            overflow: hidden;
            position: relative;
        }
        .editor-pane {
            width: 50%; /* Initial width */
            display: flex;
            flex-direction: column;
            position: relative;
            min-width: 100px;
            transition: width 0.3s cubic-bezier(0.16, 1, 0.3, 1);
        }
        .resizer {
            width: 16px;
            margin: 0 -8px;
            cursor: col-resize;
            z-index: 10;
            flex-shrink: 0;
            display: flex;
            align-items: center;
            justify-content: center;
            position: relative;
        }
        .resizer::before {
            content: '';
            position: absolute;
            left: 50%;
            top: 0;
            bottom: 0;
            width: 1px;
            background: var(--border-color);
            transform: translateX(-50%);
            transition: all 0.2s;
        }
        .resizer:hover::before, .resizer.dragging::before {
            background: var(--primary-color);
            width: 2px;
        }
        .resizer-handle {
            width: 12px;
            height: 24px;
            background: var(--bg-main);
            border: 1px solid var(--border-color);
            border-radius: 4px;
            z-index: 11;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            gap: 2px;
            transition: all 0.2s;
        }
        .resizer:hover .resizer-handle {
            border-color: var(--primary-color);
            box-shadow: 0 2px 8px rgba(0,0,0,0.05);
        }
        .resizer-handle span {
            width: 2px;
            height: 2px;
            background: var(--text-tertiary);
            border-radius: 50%;
        }
        .editor-textarea {
            flex: 1;
            width: 100%;
            padding: 24px;
            background: #f6f8fa;
            color: #24292e;
            border: none;
            font-family: 'Fira Code', Consolas, Monaco, monospace;
            font-size: 16px;
            line-height: 26px;
            resize: none;
            outline: none;
        }
        :root[data-theme="dark"] .editor-textarea {
            background: #0d1117 !important;
            color: #c9d1d9 !important;
            -webkit-text-fill-color: #c9d1d9 !important;
            caret-color: #fff;
        }
        :root[data-theme="dark"] .editor-highlight {
            background: #0d1117;
        }
        :root[data-theme="dark"] .line-numbers {
            background: #0d1117;
            border-right: 1px solid #30363d;
            color: #6e7681;
        }
        :root[data-theme="dark"] .editor-container {
            background: #0d1117;
        }
        .preview-pane {
            flex: 1;
            background: transparent; /* Remove hardcoded black */
            display: flex;
            align-items: center;
            justify-content: center;
            position: relative;
            min-width: 100px;
        }
        .preview-pane iframe {
            width: 100%;
            height: 100%;
            border: none;
            background: #fff;
        }
        .markdown-body .code-wrapper pre { background: transparent !important; margin: 0; padding: 16px 20px; border: none; overflow-x: auto; }

        .markdown-body .code-wrapper pre::-webkit-scrollbar { height: 4px; width: 4px; }
        .markdown-body .code-wrapper pre::-webkit-scrollbar-track { background: transparent; }
        .markdown-body .code-wrapper pre::-webkit-scrollbar-thumb { background: rgba(0, 0, 0, 0.1); border-radius: 10px; }
        :root[data-theme="dark"] .markdown-body .code-wrapper pre::-webkit-scrollbar-thumb { background: rgba(255, 255, 255, 0.1); }
        .markdown-body .code-wrapper pre::-webkit-scrollbar-thumb:hover { background: rgba(0, 0, 0, 0.2); }
        :root[data-theme="dark"] .markdown-body .code-wrapper pre::-webkit-scrollbar-thumb:hover { background: rgba(255, 255, 255, 0.2); }

        .markdown-body .code-wrapper code {
            background: transparent !important;
            padding: 0;
            font-family: 'Fira Code', Consolas, Monaco, monospace;
            font-size: 14px;
            line-height: 1.6;
            color: #d1d5db !important; /* Force a readable light-gray for dark mode / base */
        }
        :root[data-theme="dark"] .markdown-body .code-wrapper code { color: #e5e7eb !important; }
        :root:not([data-theme="dark"]) .markdown-body .code-wrapper code { color: #1f2937 !important; }

        /* Ensure syntax tags override the base color */
        .hljs-keyword, .hljs-operator, .hljs-string, .hljs-comment, .hljs-title, .hljs-built_in, .hljs-number { color: inherit; } /* Reset inherit to allow theme to work */
        .hljs-keyword { color: #ff7b72 !important; }
        :root:not([data-theme="dark"]) .hljs-keyword { color: #d73a49 !important; }
        .hljs-string { color: #a5d6ff !important; }
        :root:not([data-theme="dark"]) .hljs-string { color: #032f62 !important; }

        /* GitHub Style Syntax Highlighting */
        .hljs-keyword, .hljs-selector-tag, .hljs-operator { color: #cf222e; font-weight: 600; }
        .hljs-built_in, .hljs-type { color: #0550ae; }
        .hljs-string, .hljs-regexp { color: #0a3069; }
        .hljs-title, .hljs-section { color: #8250df; }
        .hljs-variable, .hljs-template-variable, .hljs-name, .hljs-attr { color: #953800; }
        .hljs-comment, .hljs-quote { color: #6e7781; font-style: italic; }
        .hljs-addition { color: #116329; background-color: #dafbe1; display: inline-block; width: 100%; padding: 0 4px; margin: 0 -4px; }
        .hljs-deletion { color: #82071e; background-color: #ffebe9; display: inline-block; width: 100%; padding: 0 4px; margin: 0 -4px; }
        .hljs-number, .hljs-literal { color: #0550ae; }

        :root[data-theme="dark"] .hljs-keyword, :root[data-theme="dark"] .hljs-selector-tag, :root[data-theme="dark"] .hljs-operator { color: #ff7b72; }
        :root[data-theme="dark"] .hljs-built_in, :root[data-theme="dark"] .hljs-type { color: #ffa657; }
        :root[data-theme="dark"] .hljs-string, :root[data-theme="dark"] .hljs-regexp { color: #a5d6ff; }
        :root[data-theme="dark"] .hljs-title, :root[data-theme="dark"] .hljs-section { color: #d2a8ff; }
        :root[data-theme="dark"] .hljs-variable, :root[data-theme="dark"] .hljs-template-variable, :root[data-theme="dark"] .hljs-name, :root[data-theme="dark"] .hljs-attr { color: #79c0ff; }
        :root[data-theme="dark"] .hljs-comment, :root[data-theme="dark"] .hljs-quote { color: #8b949e; }
        :root[data-theme="dark"] .hljs-addition { color: #3fb950; background-color: rgba(46, 160, 67, 0.15); display: inline-block; width: 100%; padding: 0 4px; margin: 0 -4px; }
        :root[data-theme="dark"] .hljs-deletion { color: #f85149; background-color: rgba(248, 81, 73, 0.15); display: inline-block; width: 100%; padding: 0 4px; margin: 0 -4px; }
        :root[data-theme="dark"] .hljs-number, :root[data-theme="dark"] .hljs-literal { color: #79c0ff; }
        .hljs-symbol, .hljs-bullet, .hljs-link { color: #d69d85; }

        :root:not([data-theme="dark"]) .editor-highlight code.hljs { color: inherit; }
        :root:not([data-theme="dark"]) .hljs-comment { color: #666 !important; }
        :root:not([data-theme="dark"]) .hljs-keyword { color: #d73a49 !important; }
        :root:not([data-theme="dark"]) .hljs-string { color: #032f62 !important; }

        /* 常驻操作栏 */
        .action-bar { display: flex; gap: 4px; margin-top: 8px; margin-bottom: 4px; opacity: 1 !important; visibility: visible !important; justify-content: flex-start; flex-wrap: wrap; }
        .action-btn { display: flex; align-items: center; justify-content: center; width: 32px; height: 32px; border: none; background: transparent; border-radius: 6px; cursor: pointer; color: var(--text-tertiary); transition: all 0.2s; padding: 6px; }
        .action-btn:hover { background: var(--hover-bg); color: var(--primary-color); transform: translateY(-1px); }
        .action-btn svg { width: 18px; height: 18px; stroke: currentColor; fill: none; }
        .action-btn.copy-success { color: var(--primary-color); }
        .action-btn.like-btn:hover, .action-btn.like-btn.active { color: var(--primary-color); }
        .action-btn.dislike-btn:hover, .action-btn.dislike-btn.active { color: var(--primary-color); }
        .action-btn.share-btn:hover { color: var(--primary-color); }
        .action-btn.delete-msg-btn:hover { color: var(--primary-color); }
        .action-btn.edit-btn:hover { color: var(--primary-color); }
        .action-btn.play-btn:hover { color: var(--primary-color); }

        .action-btn.create-app-btn { color: var(--text-tertiary); }
        .action-btn.create-app-btn:hover { background: var(--hover-bg); color: var(--primary-color); }
        .action-btn.play-btn.speaking { color: var(--primary-color); animation: ttsPulse 1.5s infinite; }
        .action-btn.tts-btn.active { color: var(--primary-color); animation: ttsPulse 1.5s infinite; }
        @keyframes ttsPulse { 0% { transform: scale(1); opacity: 1; } 50% { transform: scale(1.1); opacity: 0.7; } 100% { transform: scale(1); opacity: 1; } }

        /* File Card Styling */
        .file-card {
            display: flex;
            align-items: center;
            background: var(--bg-sidebar);
            border: 1px solid var(--border-color);
            border-radius: 10px;
            padding: 8px 12px;
            min-width: 180px;
            max-width: 260px;
            gap: 12px;
            position: relative;
            transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
            box-shadow: 0 1px 2px rgba(0,0,0,0.02);
            margin-bottom: 4px;
        }
        .file-card:hover {
            border-color: var(--primary-color);
            background: var(--hover-bg);
            box-shadow: 0 4px 12px rgba(0,0,0,0.05);
            transform: translateY(-1px);
        }
        .file-card .file-icon {
            width: 36px;
            height: 36px;
            display: flex;
            align-items: center;
            justify-content: center;
            background: rgba(92, 92, 230, 0.08);
            color: var(--primary-color);
            border-radius: 8px;
            flex-shrink: 0;
        }
        .file-card .file-info {
            flex: 1;
            min-width: 0;
            display: flex;
            flex-direction: column;
            gap: 2px;
        }
        .file-card .file-name {
            font-size: 13px;
            font-weight: 500;
            color: var(--text-primary);
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }
        .file-card .file-size {
            font-size: 11px;
            color: var(--text-tertiary);
        }
        .file-card .remove-file-btn {
            position: absolute;
            top: -6px;
            right: -6px;
            width: 20px;
            height: 20px;
            background: #ff4d4f;
            color: #fff;
            border: none;
            border-radius: 50%;
            display: none;
            align-items: center;
            justify-content: center;
            cursor: pointer;
            font-size: 12px;
            box-shadow: 0 2px 6px rgba(255, 77, 79, 0.3);
            z-index: 5;
            transition: 0.2s;
        }
        .file-card:hover .remove-file-btn {
            display: flex;
        }
        .file-card .remove-file-btn:hover {
            background: #ff7875;
            transform: scale(1.1);
        }

        .user-row .action-bar { margin-top: 6px; background: transparent; padding: 0; box-shadow: none; border: none; justify-content: flex-end; width: 100%; opacity: 0 !important; visibility: hidden !important; transition: opacity 0.2s, visibility 0.2s; }
        .user-row:hover .action-bar { opacity: 1 !important; visibility: visible !important; }

        .suggestions-container { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 16px; margin-bottom: 8px; animation: fadeIn 0.5s ease; }
        .suggestion-btn { background-color: var(--user-bubble); color: var(--text-primary); border: none; border-radius: 20px; padding: 8px 16px; font-size: 15px; cursor: pointer; transition: all 0.2s; white-space: nowrap; max-width: 100%; overflow: hidden; text-overflow: ellipsis; }
        .suggestion-btn:hover { background: var(--hover-bg); transform: translateY(-1px); }

        /* 断网全局重试专属气泡提示层（Toast） */
        #toast-message {
            position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%);
            background: rgba(0, 0, 0, 0.75); color: #fff; padding: 10px 20px;
            border-radius: 24px; font-size: 14px; z-index: 50000;
            display: none; opacity: 0; pointer-events: none;
            box-shadow: 0 4px 12px rgba(0,0,0,0.15); font-weight: 500;
            transition: opacity 0.3s ease;
        }
        #toast-message.show { display: block; opacity: 1; }

        .error-message { color: var(--error-color); padding: 16px; background-color: rgba(239, 68, 68, 0.1); border-radius: 8px; margin: 8px 0; font-size: 14.5px; line-height: 1.6; }

        /* ----- 输入区 ----- */
        /* Coder mode refinements */
        body.coder-mode .disclaimer-text { display: none !important; }
        body.coder-mode .agent-selector { display: none !important; }

        .input-panel { padding: 8px 12px 12px; padding-bottom: calc(12px + var(--sab)); display: flex; flex-direction: column; align-items: center; width: 100%; flex-shrink: 0; transition: margin 0.3s; }

        /* 页面上下文工具栏（豆包风格） */
        .context-toolbar {
            display: none; width: 100%; max-width: 760px;
            padding: 0 0 8px 0; gap: 6px;
            flex-wrap: wrap; align-items: center;
        }
        .context-toolbar.active { display: flex; }
        .context-toolbar .ctx-btn {
            display: inline-flex; align-items: center; gap: 5px;
            padding: 6px 14px; border-radius: 18px;
            border: none; background: rgba(255, 255, 255, .42);
            backdrop-filter: blur(20px) saturate(1.25); -webkit-backdrop-filter: blur(20px) saturate(1.25);
            color: var(--text-secondary); font-size: 13px; font-weight: 500;
            cursor: pointer; transition: all 0.2s; white-space: nowrap;
        }
        .context-toolbar .ctx-btn:hover {
            color: var(--primary-color);
            background: rgba(92, 92, 230, 0.05);
        }
        :root[data-theme="dark"] .context-toolbar .ctx-btn {
            background: rgba(30, 41, 59, .52);
        }
        :root[data-theme="dark"] .context-toolbar .ctx-btn:hover {
            background: rgba(30, 41, 59, .68);
            color: var(--primary-color);
        }
        .context-toolbar .ctx-btn svg { width: 15px; height: 15px; flex-shrink: 0; }
        .context-toolbar .ctx-divider {
            width: 1px; height: 20px; background: var(--border-color); margin: 0 2px;
        }

        /* 文件引用卡片 */
        .file-ref-cards { display: none; flex-wrap: wrap; gap: 6px; padding: 0 12px 6px; max-width: 800px; width: 100%; }
        .file-ref-cards.has-cards { display: flex; }
        .file-ref-card { display: inline-flex; align-items: center; gap: 5px; padding: 4px 10px; background: var(--hover-bg); border: 1px solid var(--border-color); border-radius: 8px; font-size: 12px; color: var(--text-primary); max-width: 200px; cursor: pointer; transition: all 0.2s; animation: fileRefCardIn 0.2s ease; }
        .file-ref-card:hover { border-color: var(--accent, #6366f1); background: rgba(99, 102, 241, 0.08); }
        .file-ref-card .file-ref-icon { width: 14px; height: 14px; flex-shrink: 0; }
        .file-ref-card .file-ref-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
        .file-ref-card .file-ref-close { width: 16px; height: 16px; display: flex; align-items: center; justify-content: center; border-radius: 50%; cursor: pointer; color: var(--text-tertiary); flex-shrink: 0; transition: all 0.15s; font-size: 14px; line-height: 1; }
        .file-ref-card .file-ref-close:hover { background: rgba(239, 68, 68, 0.15); color: var(--error-color); }
        .file-ref-card .file-ref-size { color: var(--text-tertiary); font-size: 11px; flex-shrink: 0; }
        @keyframes fileRefCardIn { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: translateY(0); } }
        @keyframes agentPulse { 0%,100% { box-shadow: none; } 50% { box-shadow: 0 0 0 4px rgba(16, 163, 127, 0.3); } }

        .input-box-wrapper {
            width: 100%; max-width: 760px;
            background: rgba(255, 255, 255, .42);
            backdrop-filter: blur(20px) saturate(1.25); -webkit-backdrop-filter: blur(20px) saturate(1.25);
            border-radius: 26px; display: flex; flex-direction: column;
            border: 1px solid rgba(255, 255, 255, .65); box-shadow: 0 8px 32px rgba(56, 73, 102, .08), inset 0 1px 0 rgba(255, 255, 255, .5);
            transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1); padding: 4px 12px;
        }
        /* ★ 2026-08-01 输入框激活加深：投影颜色深度/边框各加深 20%（老板指令，PC/手机同步） */
        .input-box-wrapper:focus-within {
            border-color: rgba(255, 255, 255, 1);
            box-shadow: 0 12px 40px rgba(56, 73, 102, .1584), inset 0 1px 0 rgba(255, 255, 255, .6);
            background: rgba(255, 255, 255, .58);
        }
        /* ========== @ 引用两级菜单（2026-08-06） ========== */
        .at-ref-panel {
            position: absolute; bottom: calc(100% + 10px); left: 8px; z-index: 300;
            width: 280px; max-height: 320px; overflow: hidden;
            background: rgba(255, 255, 255, .92); backdrop-filter: blur(20px) saturate(1.3); -webkit-backdrop-filter: blur(20px) saturate(1.3);
            border: 1px solid rgba(99, 102, 241, .16); border-radius: 16px;
            box-shadow: 0 16px 48px rgba(56, 73, 102, .16), inset 0 1px 0 rgba(255, 255, 255, .6);
            display: flex; flex-direction: column; overflow-y: auto;
        }
        :root[data-theme="dark"] .at-ref-panel {
            background: rgba(30, 41, 59, .94);
            border-color: rgba(255, 255, 255, .1);
            box-shadow: 0 16px 48px rgba(0, 0, 0, .4);
        }
        .at-ref-level1 { padding: 6px; display: flex; flex-direction: column; gap: 2px; }
        .at-ref-cat {
            display: flex; align-items: center; gap: 10px; width: 100%; text-align: left;
            padding: 9px 12px; border: none; background: none; border-radius: 10px; cursor: pointer;
            color: var(--text-primary); font-size: 13px; font-weight: 600; transition: background .15s;
        }
        .at-ref-cat svg { color: var(--primary); opacity: .85; flex-shrink: 0; }
        .at-ref-cat:hover { background: rgba(99, 102, 241, .08); }
        :root[data-theme="dark"] .at-ref-cat:hover { background: rgba(99, 102, 241, .16); }
        .at-ref-level2 { display: flex; flex-direction: column; min-height: 0; }
        .at-ref-l2-header {
            display: flex; align-items: center; gap: 8px; padding: 8px 10px;
            border-bottom: 1px solid rgba(99, 102, 241, .1); flex-shrink: 0;
        }
        .at-ref-back {
            display: flex; align-items: center; justify-content: center; width: 26px; height: 26px;
            border: none; background: none; border-radius: 8px; cursor: pointer; color: var(--text-secondary);
        }
        .at-ref-back:hover { background: rgba(99, 102, 241, .1); color: var(--primary); }
        .at-ref-l2-title { font-size: 12.5px; font-weight: 700; color: var(--text-primary); white-space: nowrap; }
        .at-ref-search {
            flex: 1; min-width: 0; border: none; outline: none; background: rgba(99, 102, 241, .06);
            border-radius: 8px; padding: 5px 10px; font-size: 12px; color: var(--text-primary);
        }
        :root[data-theme="dark"] .at-ref-search { background: rgba(255, 255, 255, .07); }
        .at-ref-list { overflow-y: auto; padding: 4px; max-height: 250px; }
        .at-ref-item {
            display: flex; align-items: center; gap: 9px; width: 100%; text-align: left;
            padding: 8px 10px; border: none; background: none; border-radius: 9px; cursor: pointer;
            color: var(--text-primary); font-size: 12.5px; transition: background .13s;
        }
        .at-ref-item:hover { background: rgba(99, 102, 241, .08); }
        :root[data-theme="dark"] .at-ref-item:hover { background: rgba(99, 102, 241, .16); }
        .at-ref-item .at-ref-ico {
            width: 26px; height: 26px; border-radius: 8px; background: rgba(99, 102, 241, .1);
            display: flex; align-items: center; justify-content: center; color: var(--primary); flex-shrink: 0; font-size: 12px; overflow: hidden;
        }
        .at-ref-item .at-ref-ico img { width: 100%; height: 100%; object-fit: cover; }
        .at-ref-item .at-ref-name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 600; }
        .at-ref-item .at-ref-meta { font-size: 10.5px; color: var(--text-tertiary); max-width: 90px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; flex-shrink: 0; }
        .at-ref-empty { padding: 22px 12px; text-align: center; color: var(--text-tertiary); font-size: 12px; }
        /* 输入框内 @引用 高亮（渲染用，纯文本发送） */
        .at-token { color: var(--primary); font-weight: 600; }
        /* ========== @ 引用两级菜单 END ========== */
        :root[data-theme="dark"] .input-box-wrapper {
            background: rgba(30, 41, 59, .52);
            border-color: rgba(255, 255, 255, .08);
            box-shadow: 0 8px 32px rgba(0, 0, 0, .2), inset 0 1px 0 rgba(255, 255, 255, .04);
        }
        :root[data-theme="dark"] .input-box-wrapper:focus-within {
            background: rgba(30, 41, 59, .68);
            border-color: rgba(255, 255, 255, .168);
            box-shadow: 0 12px 40px rgba(0, 0, 0, .264), inset 0 1px 0 rgba(255, 255, 255, .04);
        }

        .scroll-btn {
            position: absolute;
            bottom: calc(100% + 12px);
            left: 50%;
            transform: translateX(-50%);
            width: 32px;
            height: 32px;
            border-radius: 50%;
            background: var(--bg-main);
            border: 1px solid var(--border-color);
            display: flex;
            align-items: center;
            justify-content: center;
            cursor: pointer;
            z-index: 100;
            color: var(--text-tertiary);
            transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
            opacity: 0;
            visibility: hidden;
            pointer-events: none;
        }
        .scroll-btn.visible {
            opacity: 1;
            visibility: visible;
            pointer-events: auto;
        }
        .scroll-btn svg {
            width: 16px;
            height: 16px;
            transition: transform 0.3s ease;
        }
        .scroll-btn.to-top svg {
            transform: rotate(180deg);
        }

        .disclaimer-text { font-size: 12px; color: var(--text-tertiary); text-align: center; margin-top: 8px; user-select: none; width: 100%; max-width: 800px; }

        .upload-preview-area { display: flex; gap: 10px; flex-wrap: wrap; margin-bottom: 4px; }
        .upload-preview-item { position: relative; width: 56px; height: 56px; border-radius: 8px; background-size: cover; background-position: center; border: 1px solid var(--border-color); }
        .draft-media-item { display: flex; align-items: flex-end; justify-content: center; background-color: var(--hover-bg); }
        .draft-video-item { display: flex; align-items: center; justify-content: center; background-color: #000; }
        .draft-media-label { font-size: 9px; color: var(--text-tertiary); background: rgba(0,0,0,0.5); padding: 1px 4px; border-radius: 3px; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
        .upload-preview-item.draft-video-item video { width: 100%; height: 100%; object-fit: cover; }
        .remove-img-btn { position: absolute; top: -6px; right: -6px; background: rgba(0,0,0,0.7); color: white; border: none; border-radius: 50%; width: 20px; height: 20px; display: flex; align-items: center; justify-content: center; cursor: pointer; font-size: 14px; }

        #message-input { width: 100%; background: transparent; border: none; color: var(--text-primary); font-size: 15px; resize: none; outline: none; line-height: 1.5; padding: 10px 0; min-height: 24px; max-height: 200px; overflow-y: auto; scrollbar-width: none; }
        #message-input::-webkit-scrollbar { display: none; }
        #message-input::placeholder { color: var(--text-tertiary); }
        #message-input.drag-over {
            background-color: var(--hover-bg);
            border: 2px dashed var(--primary-color) !important;
            transform: scale(1.005);
            transition: all 0.2s ease;
        }

        .input-tools-row { display: flex; justify-content: space-between; align-items: center; width: 100%; margin-top: 0px; }
        .input-tools-left { display: flex; align-items: center; gap: 4px; }
        .input-tools-right { display: flex; align-items: center; gap: 8px; }
        .attach-btn { background: transparent; border: none; color: var(--text-tertiary); cursor: pointer; display: flex; align-items: center; justify-content: center; transition: 0.2s; padding: 2px; border-radius: 6px; }
        .attach-btn svg { width: 18px; height: 18px; stroke: currentColor; }

        .agent-toggle-btn { background: var(--hover-bg); border: none; color: var(--text-tertiary); padding: 2px 8px; border-radius: 12px; font-size: 12px; font-weight: 500; cursor: pointer; display: flex; align-items: center; gap: 4px; transition: all 0.2s; }
        .agent-toggle-btn svg { width: 14px; height: 14px; }
        .agent-toggle-btn.active { background: var(--primary-color) !important; color: #fff !important; box-shadow: 0 2px 8px rgba(59, 130, 246, 0.38); }

        .mic-btn svg { width: 18px; height: 18px; }

        /* ★ 2026-07-27 输入框工具图标选中态强化：实心填充+投影，统一圆角方形语言 */
        .think-switch-btn, .search-switch-btn, .font-switch-btn, .review-guard-btn {
            width: 30px;
            height: 30px;
            border-radius: 8px;
            display: flex;
            align-items: center;
            justify-content: center;
            transition: all 0.18s cubic-bezier(0.4, 0, 0.2, 1);
        }
        .think-switch-btn:hover, .search-switch-btn:hover, .font-switch-btn:hover, .review-guard-btn:hover {
            background: var(--hover-bg);
            color: var(--text-secondary);
        }
        .think-switch-btn:active, .search-switch-btn:active, .font-switch-btn:active, .review-guard-btn:active {
            transform: scale(0.9);
        }
        .think-switch-btn.active, .search-switch-btn.active, .font-switch-btn.active, .review-guard-btn.active {
            background: var(--primary-color) !important;
            color: #fff !important;
            border-radius: 8px !important;
            box-shadow: 0 2px 8px rgba(59, 130, 246, 0.38), inset 0 1px 0 rgba(255, 255, 255, 0.18);
        }

        .think-switch-btn .think-text, .search-switch-btn .search-text { display: none !important; }

        .counter-row { display: flex; align-items: baseline; white-space: nowrap; gap: 4px; }
        .input-counter { font-size: 12px; color: var(--text-tertiary); margin: 0; padding: 0; }
        .input-counter.warning { color: var(--warning-color); }
        .input-counter.danger { color: var(--error-color); }

        .input-tools-right { display: flex; align-items: center; gap: 12px; }

        .mic-btn-wrapper { position: relative; }
        .mic-menu {
            position: absolute; bottom: calc(100% + 16px); right: -10px;
            background: var(--bg-main); border: 1px solid var(--border-color);
            border-radius: 16px; box-shadow: 0 4px 20px rgba(0,0,0,0.08);
            padding: 8px 0; display: none; flex-direction: column; min-width: 140px;
            z-index: 100;
        }
        .mic-menu.show { display: flex; animation: fadeIn 0.2s ease; }
        .mic-menu-item {
            display: flex; align-items: center; gap: 12px; padding: 12px 20px;
            cursor: pointer; color: var(--text-primary); font-size: 14px;
            transition: background 0.2s;
        }
        .mic-menu-item:hover { background: var(--hover-bg); }
        .mic-menu-item:first-child { }
        .mic-menu-item svg { width: 18px; height: 18px; color: var(--text-secondary); }

        .send-btn {
            width: 40px; height: 40px; border-radius: 50%; display: flex;
            align-items: center; justify-content: center; cursor: pointer; border: none;
            background: var(--primary-color);
            color: #fff; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
            transform: translateY(-5px); /* 上移 5px */
        }
        /* ★ 2026-08-02 GSAP 动效期间禁用 CSS 过渡（避免双引擎冲突，mobile-motion.js 使用） */
        .send-btn.xk-gsap-anim, .send-btn.xk-gsap-anim:hover, .send-btn.xk-gsap-anim:active {
            transition: none !important;
        }
        .send-btn:hover { transform: translateY(-5px) scale(1.1); }
        .send-btn:active { transform: translateY(-5px) scale(0.95); }
        .send-btn:disabled {
            cursor: not-allowed;
        }
        .send-btn svg { width: 20px; height: 20px; stroke: currentColor; fill: none; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }

        .send-btn.stop-btn {
            background: var(--primary-color) !important;
        }
        .send-btn.typing {
            background: var(--border-focus); /* Grayish color like in Image 2 */
        }
        .send-btn.typing:hover {
            background: var(--primary-color); /* Turns primary color on hover */
        }
        .sidebar-logo {
            display: flex;
            align-items: center;
            font-size: 16px;
            font-weight: 700;
            color: var(--text-primary);
        }

        .sidebar-logo img {
            height: 45px;
            width: auto;
            object-fit: contain;
        }

        .sidebar-search-container { margin-bottom: 4px; }
        .search-input-wrapper {
            display: flex; align-items: center; gap: 8px; padding: 8px 12px;
            background: var(--hover-bg); border-radius: 10px; margin: 0 4px;
            border: 1px solid var(--border-color);
            animation: slideIn 0.2s ease;
        }
        @keyframes slideIn {
            from { opacity: 0; transform: translateY(-5px); }
            to { opacity: 1; transform: translateY(0); }
        }
        .search-input-wrapper input {
            flex: 1; background: transparent; border: none; color: var(--text-primary);
            font-size: 14px; outline: none; width: 100%;
        }
        .search-icon-small { width: 16px; height: 16px; color: var(--text-tertiary); flex-shrink: 0; }
        .clear-search-btn {
            background: transparent; border: none; color: var(--text-tertiary);
            cursor: pointer; display: flex; align-items: center; justify-content: center;
            padding: 2px; border-radius: 4px;
        }
        .clear-search-btn:hover { background: var(--border-color); color: var(--text-primary); }
        .clear-search-btn svg { width: 14px; height: 14px; }

        .search-highlight { background-color: rgba(59, 130, 246, 0.2); color: var(--primary-color); border-radius: 2px; padding: 0 2px; }
        .search-snippet { font-size: 11px; color: var(--text-tertiary); margin-top: 2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

        .search-results { max-height: 300px; overflow-y: auto; margin-top: 16px; display: flex; flex-direction: column; gap: 4px; }
        .search-result-item {
            padding: 10px 12px; border-radius: 10px; cursor: pointer; transition: 0.2s;
            display: flex; flex-direction: column; gap: 4px; border: 1px solid transparent;
        }
        .search-result-item:hover { background: var(--hover-bg); border-color: var(--border-color); }
        .search-result-title { font-size: 14px; font-weight: 600; color: var(--text-primary); }
        .search-result-preview { font-size: 12px; color: var(--text-tertiary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
        .no-results { text-align: center; padding: 20px; color: var(--text-tertiary); font-size: 14px; }

        /* ================= 现代化弹窗统一样式 (ChatGPT 风格) ================= */
        .modal-overlay {
            display: none; position: fixed; inset: 0; background: rgba(0,0,0,0.5);
            z-index: 30000; align-items: center; justify-content: center;
            opacity: 0; backdrop-filter: blur(3px); transition: opacity 0.3s ease;
        }
        .modal-overlay.active { display: flex; opacity: 1; }

        .modal-content {
            background: var(--bg-main); width: 90%; max-width: 400px;
            border-radius: 16px; padding: 32px; box-shadow: 0 20px 40px rgba(0,0,0,0.15);
            transform: scale(0.95) translateY(10px);
            transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1); position: relative;
        }
        .modal-overlay.active .modal-content { transform: scale(1) translateY(0); }

        .modal-header { display: flex; justify-content: center; align-items: center; margin-bottom: 24px; position: relative; }
        .modal-header h3 { margin: 0; font-size: 24px; color: var(--text-primary); font-weight: 600; text-align: center; }
        .close-modal-btn {
            position: absolute; right: -8px; top: -8px; background: transparent;
            border: none; color: var(--text-secondary); cursor: pointer;
            display: flex; align-items: center; justify-content: center;
            padding: 4px; border-radius: 50%; width: 32px; height: 32px; transition: 0.2s;
        }
        .close-modal-btn:hover { background: var(--hover-bg); color: var(--text-primary); }

        .form-group { margin-bottom: 20px; display: flex; flex-direction: column; gap: 8px; }
        .form-group label { font-size: 13px; color: var(--text-secondary); font-weight: 500; }
        .form-group input {
            width: 100%; box-sizing: border-box;
            padding: 14px 16px; border: 1px solid var(--border-color); border-radius: 12px;
            background: var(--input-bg); color: var(--text-primary); outline: none;
            font-size: 15px; transition: border-color 0.2s, box-shadow 0.2s;
        }
        .form-group input:focus { border-color: var(--success-color); box-shadow: 0 0 0 2px rgba(16, 163, 127, 0.2); }
        .form-group input::placeholder { color: var(--text-tertiary); }

        .captcha-row { display: flex; gap: 12px; align-items: stretch; }
        .captcha-row input { flex: 1; min-width: 0; }
        .captcha-row img { height: 48px; border-radius: 12px; cursor: pointer; border: 1px solid var(--border-color); object-fit: cover; }

        /* 弹窗中的全宽主操作按钮 */
        .btn-submit-full {
            width: 100%; padding: 14px; border-radius: 12px; border: none;
            background: var(--success-color); color: #fff; font-size: 16px;
            font-weight: 600; cursor: pointer; transition: all 0.2s; margin-top: 8px;
        }
        .btn-submit-full:hover { background: #000000; transform: translateY(-1px); box-shadow: 0 4px 12px rgba(141, 141, 141, 0.2); }
        .btn-submit-full:active { transform: translateY(0); }
        .quick-login-btn {
            display: inline-flex;
            align-items: center;
            gap: 8px;
            padding: 10px 24px;
            background: transparent;
            border: 1px solid var(--border-color);
            border-radius: 10px;
            color: var(--text-secondary);
            font-size: 14px;
            font-weight: 500;
            cursor: pointer;
            transition: 0.2s;
        }
        .quick-login-btn:hover {
            background: var(--hover-bg);
            border-color: var(--primary-color);
            color: var(--primary-color);
        }
        /* 我的应用 - Kimi 风格网格 */
        .my-apps-grid {
            display: grid;
            grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
            gap: 16px;
        }
        .my-app-card {
            background: var(--bg-primary);
            border: 1px solid transparent;
            border-radius: 14px;
            overflow: hidden;
            cursor: pointer;
            box-shadow: 0 2px 10px rgba(15,23,42,.06);
            transition: box-shadow .18s,background .18s;
            position: relative;
        }
        .my-app-card:hover {
            box-shadow: 0 10px 30px rgba(15,23,42,.13);
        }
        .my-app-thumb {
            width: 100%;
            height: 140px;
            background: var(--hover-bg);
            overflow: hidden;
            position: relative;
        }
        .my-app-thumb iframe {
            width: 1280px;
            height: 800px;
            border: none;
            transform: scale(0.18);
            transform-origin: top left;
            pointer-events: none;
            position: absolute;
            top: 0;
            left: 0;
        }
        .my-app-thumb-fallback {
            width: 100%;
            height: 100%;
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: 36px;
            background: linear-gradient(135deg, #f0f4ff 0%, #e8f0fe 100%);
        }
        .my-app-info {
            padding: 12px 14px;
        }
        .my-app-name {
            font-size: 13px;
            font-weight: 600;
            color: var(--text-primary);
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
            margin-bottom: 4px;
        }
        .my-app-meta {
            font-size: 11px;
            color: var(--text-tertiary);
        }
        .my-app-card-actions {
            position: absolute;
            top: 8px;
            right: 8px;
            display: flex;
            gap: 4px;
            opacity: 0;
            transition: 0.15s;
        }
        .my-app-card:hover .my-app-card-actions { opacity: 1; }
        .my-app-action-btn {
            width: 28px;
            height: 28px;
            border-radius: 8px;
            border: none;
            background: rgba(255,255,255,0.9);
            backdrop-filter: blur(4px);
            cursor: pointer;
            display: flex;
            align-items: center;
            justify-content: center;
            color: var(--text-secondary);
            transition: 0.15s;
        }
        .my-app-action-btn:hover { background: #fff; color: var(--text-primary); }
        .my-app-action-btn.danger:hover { color: var(--error-color); }
        .my-app-action-btn svg { width: 14px; height: 14px; }

        /* ==================== 应用页面 ==================== */
        .app-page {
            display: none;
            flex-direction: column;
            height: 100%;
            overflow: hidden;
        }
        .app-page.active {
            display: flex;
        }
        .app-page-header {
            padding: 20px 24px 0;
            flex-shrink: 0;
            text-align: center;
            transition: max-height 0.25s ease, opacity 0.25s ease, padding 0.25s ease, margin 0.25s ease;
            max-height: 500px;
            overflow: hidden;
        }
        /* ★ 滚动时隐藏 header */
        .cloud-header-hidden {
            max-height: 0 !important;
            opacity: 0 !important;
            padding-top: 0 !important;
            padding-bottom: 0 !important;
            margin: 0 !important;
        }
        .app-page-title {
            font-size: 28px;
            font-weight: 700;
            color: var(--text-primary);
            letter-spacing: .5px;
            margin: 0 0 6px;
        }
        .ux-page-subtitle { margin: 0 0 14px; color: var(--text-tertiary); font-size: 12px; line-height: 1.5; }
        .app-page-search-row {
            display: flex;
            gap: 8px;
            margin-bottom: 14px;
            justify-content: center;
        }
        .app-page-search {
            position: relative;
            flex: 1;
            max-width: 420px;
        }
        .app-page-search input {
            width: 100%;
            height: 42px;
            padding: 0 44px 0 18px;
            border-radius: 999px;
            border: 1px solid var(--border-color);
            background: var(--bg-primary);
            color: var(--text-primary);
            font-size: 13px;
            outline: none;
            transition: border-color .15s,box-shadow .15s;
            box-sizing: border-box;
        }
        .app-page-search input:focus {
            border-color: var(--primary-color);
            box-shadow: 0 0 0 3px rgba(99,102,241,.1);
        }
        .app-page-search input::placeholder {
            color: var(--text-tertiary);
        }
        .app-search-icon-btn {
            position: absolute;
            right: 6px;
            top: 50%;
            transform: translateY(-50%);
            width: 30px;
            height: 30px;
            aspect-ratio: 1;
            border-radius: 50%;
            border: none;
            background: var(--text-primary);
            color: var(--bg-main);
            cursor: pointer;
            display: flex;
            align-items: center;
            justify-content: center;
            transition: opacity 0.15s;
            flex-shrink: 0;
        }
        .app-search-icon-btn:hover { opacity: 0.8; }
        .app-tabs {
            display: flex;
            gap: 2px;
            justify-content: center;
            overflow-x: auto;
            -webkit-overflow-scrolling: touch;
            scrollbar-width: none;
            flex-shrink: 0;
            width: fit-content;
            max-width: 100%;
            margin: 0 auto;
            padding: 3px;
            background: var(--hover-bg);
            border-radius: 10px;
        }
        .app-tabs::-webkit-scrollbar { display: none; }
        .app-tab {
            padding: 7px 14px;
            font-size: 12px;
            font-weight: 500;
            color: var(--text-secondary);
            background: transparent;
            border: none;
            border-radius: 8px;
            cursor: pointer;
            transition: background .15s,color .15s;
            white-space: nowrap;
            flex-shrink: 0;
        }
        .app-tab:hover { color: var(--text-primary); }
        .app-tab.active {
            background: var(--text-primary);
            color: var(--bg-main);
        }
        .app-page-content {
            flex: 1;
            overflow-y: auto;
            padding: 20px 24px;
        }
        .app-grid {
            display: grid;
            grid-template-columns: repeat(5, 1fr);
            gap: 16px;
            max-width: 1200px;
            margin: 0 auto;
        }
        .app-card {
            background: var(--bg-primary);
            border: 1px solid transparent;
            border-radius: 14px;
            overflow: hidden;
            cursor: pointer;
            box-shadow: 0 2px 10px rgba(15,23,42,.06);
            transition: box-shadow .18s,background .18s;
            position: relative;
        }
        .app-card:hover {
            box-shadow: 0 10px 30px rgba(15,23,42,.13);
        }
        .app-card-thumb {
            width: 100%;
            aspect-ratio: 16 / 9;
            background: var(--hover-bg);
            overflow: hidden;
            position: relative;
        }
        .app-card-thumb iframe {
            width: 640px;
            height: 360px;
            border: none;
            transform: scale(0.5);
            transform-origin: top left;
            pointer-events: none;
            position: absolute;
            top: 0;
            left: 0;
        }
        .app-card-thumb-fallback {
            width: 100%;
            height: 100%;
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: 36px;
            color: var(--text-tertiary);
            background: var(--hover-bg);
        }
        .app-card-body {
            padding: 8px 10px;
            background: rgba(128, 128, 128, 0.06);
        }
        .app-card-name {
            font-size: 13px;
            font-weight: 600;
            color: var(--text-primary);
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 8px;
        }
        .app-card-name-text {
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
            min-width: 0;
        }
        .app-card-date {
            font-size: 10px;
            color: var(--text-tertiary);
            flex-shrink: 0;
        }
        /* ★ 2026-08-02 公共应用上锁徽标 */
        .app-card-lock-badge {
            display: inline-flex;
            align-items: center;
            gap: 3px;
            margin-top: 6px;
            padding: 2px 8px;
            border-radius: 6px;
            font-size: 10px;
            font-weight: 500;
            color: var(--primary-color);
            background: color-mix(in srgb, var(--primary-color, #5c5ce6) 10%, transparent);
            border: 1px solid color-mix(in srgb, var(--primary-color, #5c5ce6) 25%, transparent);
        }
        .app-card-actions-bar {
            position: absolute;
            top: 8px;
            right: 8px;
            display: flex;
            gap: 4px;
            opacity: 0;
            transition: 0.15s;
        }
        .app-card:hover .app-card-actions-bar { opacity: 1; }
        .app-action-btn {
            width: 28px;
            height: 28px;
            border-radius: 8px;
            border: none;
            background: rgba(255,255,255,0.92);
            backdrop-filter: blur(4px);
            cursor: pointer;
            display: flex;
            align-items: center;
            justify-content: center;
            color: var(--text-secondary);
            transition: 0.15s;
            padding: 0;
        }
        .app-action-btn:hover {
            background: #fff;
            color: var(--primary-color);
        }
        .app-action-btn.danger:hover {
            color: var(--error-color);
        }
        /* ★ 2026-08-29 应用卡操作区优化：主操作带字突出、次级柔和、hover 反馈、危险隔离
           ★ 2026-08-29 老板指令「不要用透明底色」：全部改实底 */
        .app-card-actions-bar .app-action-btn { border: 1px solid var(--border-color); background: #ffffff; }
        .app-card-actions-bar .app-action-btn span { font-size: 11px; font-weight: 600; line-height: 1; white-space: nowrap; }
        .app-card-actions-bar .app-action-btn.primary {
            width: auto; flex: 1; justify-content: flex-start; gap: 5px; padding: 0 10px;
            color: #ffffff; border-color: var(--primary-color, #5c5ce6); background: var(--primary-color, #5c5ce6); font-weight: 600;
        }
        .app-card-actions-bar .app-action-btn.primary:hover { filter: brightness(0.9); }
        .app-card-actions-bar .app-action-btn.soft {
            width: auto; gap: 5px; padding: 0 10px;
            color: var(--text-secondary, #6b7280); border-color: var(--border-color, #e5e7eb); background: #eef0f4;
        }
        .app-card-actions-bar .app-action-btn.soft:hover { color: var(--primary-color, #5c5ce6); border-color: var(--primary-color, #5c5ce6); background: #e4e7f2; }
        .app-card-actions-bar .app-action-btn:not(.primary):not(.soft):hover { border-color: var(--primary-color, #5c5ce6); color: var(--primary-color, #5c5ce6); }
        :root[data-theme="dark"] .app-card-actions-bar .app-action-btn { background: #29303d; }
        :root[data-theme="dark"] .app-card-actions-bar .app-action-btn.soft { background: #2a3242; color: #aeb6c4; }
        :root[data-theme="dark"] .app-card-actions-bar .app-action-btn.soft:hover { color: #ffffff; background: #323a4c; }
        @media (max-width: 768px) {
            .app-card-actions-bar .app-action-btn.soft span { display: none; }
            .app-card-actions-bar .app-action-btn.soft { width: 28px; padding: 0; }
        }
        .app-published-badge {
            display: inline-block;
            font-size: 9px;
            padding: 1px 5px;
            border-radius: 4px;
            background: rgba(16, 185, 129, 0.1);
            color: #10b981;
            font-weight: 500;
            margin-left: 4px;
        }
        .app-empty-hint {
            text-align: center;
            padding: 48px 20px;
            color: var(--text-tertiary);
            font-size: 14px;
            grid-column: 1 / -1;
        }
        .app-empty-hint svg {
            display: block;
            margin: 0 auto 10px;
            opacity: 0.4;
        }

        /* 技能卡片 */
        .skill-card {
            background: var(--bg-primary);
            border: 1px solid transparent;
            border-radius: 14px;
            padding: 16px;
            cursor: pointer;
            box-shadow: 0 2px 10px rgba(15,23,42,.06);
            transition: box-shadow .18s,background .18s;
            display: flex;
            flex-direction: column;
            gap: 8px;
            position: relative;
        }
        .skill-card:hover {
            box-shadow: 0 10px 30px rgba(15,23,42,.13);
        }
        .skill-card-header {
            display: flex;
            align-items: center;
            gap: 10px;
        }
        .skill-card-icon {
            width: 40px;
            height: 40px;
            display: flex;
            align-items: center;
            justify-content: center;
            border-radius: 50%;
            flex-shrink: 0;
            background: rgba(92, 92, 230, 0.1);
            color: #5c5ce6;
        }
        .skill-card-icon.system {
            background: rgba(16, 185, 129, 0.1);
            color: #10b981;
        }
        .skill-card-name {
            font-size: 14px;
            font-weight: 600;
            color: var(--text-primary);
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
        }
        .skill-card-desc {
            font-size: 12px;
            color: var(--text-secondary);
            line-height: 1.5;
            display: -webkit-box;
            -webkit-line-clamp: 2;
            -webkit-box-orient: vertical;
            overflow: hidden;
            min-height: 36px;
        }
        .skill-card-footer {
            display: flex;
            justify-content: flex-end;
            align-items: center;
            margin-top: auto;
            padding-top: 8px;
            border-top: 1px solid var(--border-color);
        }
        .skill-card-source {
            font-size: 10px;
            padding: 2px 8px;
            border-radius: 10px;
            font-weight: 500;
        }
        .skill-card-source.user {
            background: rgba(92, 92, 230, 0.1);
            color: #5c5ce6;
        }
        .skill-card-source.global {
            background: rgba(16, 185, 129, 0.1);
            color: #10b981;
        }
        .skill-card-files {
            font-size: 11px;
            color: var(--text-tertiary);
            display: flex;
            align-items: center;
            gap: 4px;
        }
        .skill-card-action-btn-shim { opacity: 0; }
        .skill-action-btn {
            padding: 4px;
            border-radius: 6px;
            border: none;
            background: transparent;
            cursor: pointer;
            color: var(--text-tertiary);
            transition: 0.15s;
            font-size: 11px;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            min-width: 28px;
            min-height: 28px;
        }
        .skill-action-btn:hover {
            background: var(--hover-bg);
            color: var(--text-primary);
        }
        .skill-action-btn.danger:hover {
            color: var(--error-color);
        }
        .skill-card-actions { display: flex; align-items: center; gap: 0; flex-shrink: 0; flex-wrap: wrap; }
        .skill-grid {
            display: grid;
            grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
            gap: 12px;
        }
        .skill-detail-modal {
            position: fixed;
            inset: 0;
            z-index: 10000;
            display: none;
            align-items: center;
            justify-content: center;
            background: rgba(0,0,0,0.5);
            backdrop-filter: blur(4px);
        }
        .skill-detail-modal.active { display: flex; }
        .skill-detail-content {
            background: var(--bg-main);
            border-radius: 16px;
            width: 90vw;
            max-width: 600px;
            max-height: 80vh;
            overflow: hidden;
            padding: 24px;
            display: flex;
            flex-direction: column;
        }
        .skill-detail-title {
            font-size: 20px;
            font-weight: 700;
            margin-bottom: 8px;
        }
        .skill-detail-desc {
            font-size: 14px;
            color: var(--text-secondary);
            margin-bottom: 16px;
        }
        .skill-detail-body {
            font-size: 14px;
            line-height: 1.6;
            color: var(--text-primary);
            white-space: pre-wrap;
        }
        .skill-detail-files {
            margin-top: 16px;
            border-top: 1px solid var(--border-color);
            padding-top: 12px;
        }
        .skill-detail-file {
            padding: 8px 12px;
            background: var(--hover-bg);
            border-radius: 8px;
            margin-bottom: 4px;
            font-size: 13px;
            font-family: var(--font-ui);
        }

        /* 技能创建弹窗 */
        .skill-create-modal {
            position: fixed; inset: 0; z-index: 10001;
            display: none; align-items: center; justify-content: center;
            background: rgba(0,0,0,0.5);
        }
        .skill-create-modal.active { display: flex; }
        .skill-create-content {
            background: var(--bg-main); border-radius: 16px;
            width: 90vw; max-width: 680px; max-height: 85vh;
            overflow-y: auto; padding: 28px;
        }
        .skill-create-title { font-size: 20px; font-weight: 700; margin-bottom: 20px; }
        .skill-create-group { margin-bottom: 16px; }
        .skill-create-label { font-size: 13px; font-weight: 600; color: var(--text-secondary); margin-bottom: 6px; display: block; }
        .skill-create-input, .skill-create-textarea {
            width: 100%; padding: 12px 14px; border-radius: 10px;
            border: 1px solid var(--border-color); background: var(--bg-primary);
            color: var(--text-primary); font-size: 14px; font-family: inherit;
            transition: border-color 0.2s; box-sizing: border-box;
        }
        .skill-create-input:focus, .skill-create-textarea:focus {
            outline: none; border-color: var(--primary-color, #5c5ce6);
        }
        .skill-create-textarea { resize: vertical; min-height: 80px; line-height: 1.6; }
        .skill-create-body { min-height: 200px; font-family: monospace; font-size: 13px; }
        .skill-create-actions { display: flex; gap: 10px; margin-top: 20px; justify-content: flex-end; }
        .skill-create-btn {
            padding: 10px 20px; border-radius: 10px; font-size: 14px; font-weight: 600;
            cursor: pointer; transition: 0.2s; border: 1px solid var(--border-color);
            background: transparent; color: var(--text-primary);
        }
        .skill-create-btn:hover { background: var(--hover-bg); }
        .skill-create-btn.primary {
            background: var(--primary-color, #5c5ce6); color: #fff; border-color: transparent;
        }
        .skill-create-btn.primary:hover { opacity: 0.9; }
        .skill-create-btn.ai-btn {
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            color: #fff; border-color: transparent;
            display: flex; align-items: center; gap: 6px;
        }
        .skill-create-btn.ai-btn:hover { opacity: 0.9; }
        .skill-create-btn.ai-btn:disabled { opacity: 0.5; cursor: not-allowed; }
        .skill-create-hint { font-size: 12px; color: var(--text-tertiary); margin-top: 6px; }

        /* 模式提示卡片 */
        .mode-tips-message { animation: fadeInUp 0.25s ease; }
        .mode-tips-card {
            background: transparent;
            border: none;
            border-radius: 0;
            padding: 8px 0;
            max-width: 100%;
        }
        .mode-tips-title {
            font-size: 14px;
            font-weight: 600;
            color: var(--text-primary);
            margin-bottom: 4px;
        }
        .mode-tips-desc {
            font-size: 13px;
            color: var(--text-secondary);
            margin-bottom: 10px;
        }
        .mode-tips-label {
            font-size: 12px;
            color: var(--text-tertiary);
            margin-bottom: 6px;
            font-weight: 500;
        }
        .mode-tips-list {
            display: flex;
            flex-direction: column;
            gap: 4px;
        }
        .mode-tip-example {
            font-size: 13px;
            color: var(--primary-color);
            padding: 6px 10px;
            background: transparent;
            border-radius: 6px;
            cursor: pointer;
            transition: background 0.15s;
            border: none;
            text-align: left;
        }
        .mode-tip-example:hover {
            background: var(--hover-bg);
        }
        .modal-switch-text { text-align: center; margin-top: 24px; font-size: 14px; color: var(--text-secondary); }
        .modal-switch-text a { color: var(--success-color); text-decoration: none; font-weight: 500; transition: color 0.2s; }
        .modal-switch-text a:hover { text-decoration: underline; }

        /* ---------------- 顶部登录/退出按钮区域 ---------------- */
        .user-info-area { display: flex; align-items: center; gap: 12px; margin-right: 8px; }
        .username-display { font-size: 14px; font-weight: 600; color: var(--text-primary); max-width: 100px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
        .logout-btn-subtle {
            background: transparent; border: 1px solid var(--border-color); color: var(--text-secondary);
            height: 32px; padding: 0 16px; border-radius: 16px; font-size: 14px;
            font-weight: 500; cursor: pointer; transition: all 0.2s ease;
            display: flex; align-items: center; justify-content: center;
        }
        .logout-btn-subtle:hover { border-color: var(--error-color); color: var(--error-color); background: rgba(239, 68, 68, 0.05); }

        /* 个人信息弹窗底部按钮复写 */
        #profile-modal .modal-footer { display: flex; justify-content: flex-end; gap: 12px; margin-top: 24px; }
        #profile-modal .modal-footer button { padding: 12px 24px; border-radius: 12px; border: none; cursor: pointer; font-size: 15px; font-weight: 500; transition: 0.2s; }
        #profile-modal .btn-cancel { background: var(--hover-bg); color: var(--text-primary); }
        #profile-modal .btn-cancel:hover { background: var(--border-color); }
        #profile-modal .btn-save { background: var(--success-color); color: #fff; }
        #profile-modal .btn-save:hover { background: #0d8c6b; }

        /* 任务中心样式 — v6.4.13 重新设计；2026-08-01 弹窗尺寸对齐模型市场（老板反馈全屏太大） */
        #task-center-modal .modal-overlay,
        #task-center-modal.modal-overlay { background: rgba(15, 23, 42, 0.5); backdrop-filter: blur(3px); }
        #task-center-modal .modal-content,
        #task-center-modal.modal-overlay .modal-content {
            width: 90%; max-width: 800px; max-height: 85vh;
            border-radius: 16px; padding: 0;
            box-shadow: 0 20px 60px rgba(0, 0, 0, 0.2);
            display: flex; flex-direction: column;
            background: var(--bg-main); overflow: hidden;
            transform: scale(0.95) translateY(10px);
            transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1);
        }
        #task-center-modal.modal-overlay.active .modal-content { transform: scale(1) translateY(0); }
        .tc-header {
            display: flex; align-items: center; justify-content: space-between;
            padding: 16px 24px; border-bottom: 1px solid var(--border-color);
            background: var(--bg-sidebar); flex-shrink: 0;
        }
        .tc-header-left { display: flex; align-items: center; gap: 12px; }
        .tc-header h3 { margin: 0; font-size: 18px; font-weight: 600; color: var(--text-primary); }
        .tc-close-btn {
            width: 36px; height: 36px; border-radius: 50%; border: 1px solid var(--border-color);
            background: transparent; color: var(--text-secondary); cursor: pointer;
            display: flex; align-items: center; justify-content: center; transition: 0.2s;
        }
        .tc-close-btn:hover { background: var(--hover-bg); color: var(--text-primary); }
        .tc-tabs {
            display: flex; gap: 0; border-bottom: 1px solid var(--border-color);
            padding: 0 24px; background: var(--bg-sidebar); flex-shrink: 0;
            overflow-x: auto; -webkit-overflow-scrolling: touch;
        }
        .tc-tabs::-webkit-scrollbar { display: none; }
        .task-filter-btn {
            padding: 12px 18px; border: none; background: transparent; color: var(--text-secondary);
            cursor: pointer; font-size: 14px; border-bottom: 2px solid transparent;
            transition: 0.2s; white-space: nowrap; flex-shrink: 0;
        }
        .task-filter-btn:hover { color: var(--text-primary); }
        .task-filter-btn.active { color: var(--accent-color, var(--primary-color)); border-bottom-color: var(--accent-color, var(--primary-color)); font-weight: 500; }
        .task-filter-btn .filter-count {
            font-size: 11px; background: var(--border-color); color: var(--text-secondary);
            padding: 1px 6px; border-radius: 10px; margin-left: 4px;
        }
        .task-filter-btn.active .filter-count { background: rgba(59,130,246,0.15); color: var(--accent-color, var(--primary-color)); }
        .tc-body { flex: 1; overflow-y: auto; padding: 20px 24px; }
        .task-empty {
            display: flex; flex-direction: column; align-items: center; justify-content: center;
            padding: 80px 20px; color: var(--text-tertiary); gap: 16px;
        }
        .task-empty-icon { font-size: 48px; opacity: 0.3; }
        .task-empty-text { font-size: 14px; }
        /* v6.4.13: 任务卡片重新设计 */
        .task-card {
            display: flex; align-items: flex-start; gap: 14px; padding: 16px 18px;
            border: 1px solid var(--border-color); border-radius: 14px; margin-bottom: 12px;
            transition: 0.2s; background: var(--hover-bg);
        }
        .task-card:hover { border-color: var(--accent-color, var(--primary-color)); box-shadow: 0 2px 12px rgba(0,0,0,0.06); }
        .task-card-icon {
            width: 42px; height: 42px; border-radius: 10px; display: flex; align-items: center; justify-content: center;
            font-size: 18px; flex-shrink: 0; color: var(--text-secondary);
        }
        .task-card-icon.video { background: rgba(168,85,247,0.12); color: #a855f7; }
        .task-card-icon.image { background: rgba(59,130,246,0.12); color: var(--primary-color); }
        .task-card-icon.deploy { background: rgba(16,185,129,0.12); color: #10b981; }
        .task-card-icon.agent { background: rgba(245,158,11,0.12); color: #f59e0b; }
        .task-card-icon.other { background: rgba(107,114,128,0.12); color: #6b7280; }
        .task-card-body { flex: 1; min-width: 0; }
        .task-card-title { font-size: 14px; font-weight: 500; color: var(--text-primary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
        .task-card-meta { font-size: 12px; color: var(--text-tertiary); margin-top: 4px; display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
        .task-card-meta .meta-sep { color: var(--border-color); }
        .task-progress-bar { height: 4px; background: var(--border-color); border-radius: 2px; margin-top: 10px; overflow: hidden; }
        .task-progress-fill { height: 100%; background: var(--accent-color, var(--primary-color)); border-radius: 2px; transition: width 0.5s ease; }
        .task-progress-fill.failed { background: var(--error-color); }
        /* v6.4.13: 缩略图网格 */
        .task-card-thumbs { display: flex; gap: 6px; margin-top: 10px; flex-wrap: wrap; }
        .task-card-thumbs img { width: 56px; height: 56px; object-fit: cover; border-radius: 8px; cursor: pointer; border: 1px solid var(--border-color); transition: 0.2s; }
        .task-card-thumbs img:hover { transform: scale(1.05); border-color: var(--accent-color, var(--primary-color)); }
        .task-card-actions { display: flex; gap: 4px; flex-shrink: 0; align-items: center; }
        .task-action-btn {
            width: 32px; height: 32px; border-radius: 8px; border: 1px solid var(--border-color);
            background: transparent; color: var(--text-secondary); cursor: pointer; display: flex;
            align-items: center; justify-content: center; transition: 0.2s; text-decoration: none;
        }
        .task-action-btn:hover { background: var(--hover-bg); color: var(--text-primary); }
        .task-action-btn.danger:hover { background: rgba(239,68,68,0.08); color: var(--error-color); border-color: var(--error-color); }
        .task-status-dot { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; }
        .task-status-dot.pending { background: var(--text-tertiary); }
        .task-status-dot.running { background: #f59e0b; animation: taskPulse 1.5s infinite; }
        .task-status-dot.completed { background: #10b981; }
        .task-status-dot.failed { background: var(--error-color); }
        .task-status-dot.cancelled { background: var(--text-tertiary); }
        @keyframes taskPulse { 0%,100% { opacity:1; } 50% { opacity:0.4; } }
        .tc-footer {
            display: flex; align-items: center; justify-content: space-between;
            padding: 12px 24px; border-top: 1px solid var(--border-color);
            background: var(--bg-sidebar); flex-shrink: 0;
        }
        .tc-footer-btn {
            padding: 8px 16px; border-radius: 8px; border: 1px solid var(--border-color);
            background: transparent; color: var(--text-secondary); cursor: pointer;
            font-size: 13px; transition: 0.2s;
        }
        .tc-footer-btn:hover { background: var(--hover-bg); color: var(--text-primary); }
        .tc-footer-btn.primary {
            background: var(--accent-color, var(--primary-color)); color: #fff; border-color: transparent;
        }
        .tc-footer-btn.primary:hover { opacity: 0.9; }
        /* v6.4.13: 任务详情 — 预览为主 */
        #task-detail-modal .modal-content { max-width: 676px !important; max-height: 88vh !important; border-radius: 20px !important; display: flex !important; flex-direction: column !important; overflow: hidden !important; padding: 0 !important; position: relative !important; }
        #task-detail-body { padding: 0 !important; font-size: 14px; flex: 1; overflow-y: auto; }
        .td-preview-area { position: relative; background: #0a0a0a; display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 234px; max-height: 442px; overflow: hidden; }
        .td-preview-main { max-width: 100%; max-height: 442px; object-fit: contain; cursor: zoom-in; display: block; }
        .td-preview-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(208px, 1fr)); gap: 3px; width: 100%; }
        .td-preview-cell { cursor: zoom-in; overflow: hidden; }
        .td-preview-cell img { width: 100%; height: 221px; object-fit: cover; display: block; transition: transform 0.3s; }
        .td-preview-cell:hover img { transform: scale(1.04); }
        .td-preview-video { max-width: 100%; max-height: 442px; width: 100%; display: block; background: #000; }
        .td-preview-audio { min-height: 208px; }
        .td-preview-loading { color: var(--text-tertiary); min-height: 234px; }
        .td-preview-error { color: var(--error-color); min-height: 234px; }
        .td-audio-player { display: flex; flex-direction: column; align-items: center; gap: 13px; padding: 31px 26px; width: 100%; max-width: 416px; }
        .td-toolbar { display: flex; align-items: center; gap: 10px; padding: 8px 14px; border-bottom: 1px solid var(--border-color); }
        .td-dl-btn { display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 36px; border-radius: 9px; border: 1px solid var(--border-color); background: var(--bg-primary); color: var(--text-secondary); cursor: pointer; transition: 0.2s; flex-shrink: 0; margin-left: auto; text-decoration: none; }
        .td-dl-btn:hover { border-color: var(--accent-color, var(--primary-color)); color: var(--accent-color, var(--primary-color)); }
        .td-toolbar-info { font-size: 12px; color: var(--text-tertiary); }
        .td-info-bar { display: flex; align-items: center; gap: 10px; padding: 10px 18px; border-bottom: 1px solid var(--border-color); flex-wrap: wrap; }
        .td-info-sep { width: 1px; height: 14px; background: var(--border-color); }
        .td-info-text { font-size: 13px; color: var(--text-tertiary); }
        .td-status-badge { display: inline-flex; align-items: center; gap: 6px; padding: 4px 13px; border-radius: 20px; font-size: 13px; font-weight: 500; }
        .td-status-badge.completed { background: rgba(16,185,129,0.1); color: #10b981; }
        .td-status-badge.failed { background: rgba(239,68,68,0.1); color: var(--error-color); }
        .td-status-badge.running { background: rgba(245,158,11,0.1); color: #f59e0b; }
        .td-status-badge.pending { background: rgba(107,114,128,0.1); color: #6b7280; }
        .td-status-badge.cancelled { background: rgba(107,114,128,0.1); color: #6b7280; }
        .td-prompt-box { padding: 10px 18px; border-bottom: 1px solid var(--border-color); }
        .td-prompt-label { font-size: 12px; font-weight: 600; color: var(--text-tertiary); text-transform: uppercase; letter-spacing: 0.5px; display: block; margin-bottom: 5px; }
        .td-prompt-text { font-size: 14px; color: var(--text-primary); line-height: 1.5; }
        .td-collapsible { padding: 10px 18px; font-size: 14px; color: var(--text-secondary); cursor: pointer; display: flex; align-items: center; gap: 8px; border-bottom: 1px solid var(--border-color); transition: 0.2s; user-select: none; }
        .td-collapsible:hover { background: var(--hover-bg); }
        .td-collapsible svg { transition: transform 0.2s; }
        .td-collapsible.expanded svg { transform: rotate(180deg); }
        .td-collapsible-content { max-height: 0; overflow: hidden; transition: max-height 0.3s ease; }
        .td-collapsible.expanded + .td-collapsible-content { max-height: 400px; overflow-y: auto; }
        .td-output-text { padding: 10px 14px; font-size: 13px; line-height: 1.5; white-space: pre-wrap; color: var(--text-secondary); background: var(--hover-bg); }
        .td-step-item { padding: 4px 14px; font-size: 12px; color: var(--text-tertiary); display: flex; align-items: center; gap: 8px; }
        .td-step-icon { width: 16px; height: 16px; border-radius: 4px; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
        .td-step-icon.ok { background: rgba(16,185,129,0.1); color: #10b981; }
        .td-step-icon.fail { background: rgba(239,68,68,0.1); color: var(--error-color); }
        .td-file-item { padding: 5px 14px; font-size: 12px; display: flex; align-items: center; gap: 8px; border-bottom: 1px solid var(--border-color); }
        .td-file-item:last-child { border-bottom: none; }
        .td-file-dl { margin-left: auto; padding: 2px 8px; border-radius: 6px; border: 1px solid var(--border-color); color: var(--text-secondary); font-size: 11px; text-decoration: none; transition: 0.2s; }
        .td-file-dl:hover { border-color: var(--accent-color, var(--primary-color)); color: var(--accent-color, var(--primary-color)); }
        .user-menu-item { position: relative; display: flex; align-items: center; gap: 10px; padding: 8px 10px; border-radius: 10px; font-size: 13px; color: var(--text-primary); cursor: pointer; }
        .user-menu-item svg { width: 16px; height: 16px; color: var(--text-secondary); flex-shrink: 0; }
        @media (max-width: 768px) {
            #task-center-modal {
                align-items: center !important;
                justify-content: center !important;
            }
            #task-center-modal .modal-content,
            #task-center-modal.modal-overlay .modal-content {
                width: 100vw !important; height: 100vh !important; max-width: 100vw !important;
                max-height: 100vh !important;
                padding: 0 !important; border-radius: 0 !important;
                position: relative !important;
            }
            .tc-header { padding: 12px 16px; }
            .tc-header h3 { font-size: 16px; }
            .tc-tabs { padding: 0 12px; }
            .task-filter-btn { padding: 10px 12px; font-size: 13px; }
            .tc-body { padding: 12px; }
            .task-card { padding: 12px; gap: 10px; }
            .task-card-icon { width: 36px; height: 36px; font-size: 16px; border-radius: 8px; }
            .task-card-title { font-size: 13px; }
            .task-card-meta { font-size: 11px; gap: 6px; }
            .task-action-btn { width: 28px; height: 28px; }
            .tc-footer { padding: 10px 12px; }
            .tc-footer-btn { padding: 6px 12px; font-size: 12px; }
        }
        @media (max-width: 480px) {
            #task-center-modal .modal-content,
            #task-center-modal.modal-overlay .modal-content {
                width: 100vw !important; height: 100vh !important; max-width: 100vw !important;
                padding: 0 !important; border-radius: 0 !important;
            }
            .tc-header { padding: 10px 12px; }
            .task-filter-btn { padding: 8px 10px; font-size: 12px; }
            .tc-body { padding: 8px; }
            .task-card { padding: 10px; gap: 8px; border-radius: 10px; }
            .task-card-icon { width: 32px; height: 32px; font-size: 14px; }
        }

        .sidebar-theme-btn { display: none; }
        /* ==================== 移动端专属样式深度定制 ==================== */
        /* ★ v8.4: 手机端对话窗口统一优化 */
        @media (max-width: 768px) {
            /* 顶栏：紧凑高度、去除多余间距 */
            .top-nav { height: 52px; padding: 0 12px; padding-top: env(safe-area-inset-top, 0px); }
            /* 模型选择器：缩窄、不挤占空间 */
            .model-trigger { max-width: 130px; font-size: 12px; }
            .model-trigger .edit-icon { width: 16px; height: 16px; }
            .model-trigger .chevron-icon { width: 14px; height: 14px; }
            /* 输入面板：减少内边距 */
            .input-panel { padding: 6px 8px 10px; padding-bottom: calc(10px + var(--sab)); }
            /* 输入框：圆角缩小、内边距紧凑 */
            .input-box-wrapper { border-radius: 20px; padding: 4px 10px; max-width: 100%; }
            /* 输入框文本：16px 防止 iOS 自动放大 */
            #message-input { font-size: 16px; padding: 8px 0; min-height: 22px; max-height: 160px; }
            /* 工具按钮：44px 触控目标、统一间距 */
            .input-tools-row { gap: 2px; margin-top: 2px; }
            .input-tools-left { gap: 2px; }
            .input-tools-right { gap: 6px; }
            .attach-btn { width: 40px !important; height: 40px !important; border-radius: 10px !important; }
            .attach-btn svg { width: 20px !important; height: 20px !important; }
            .think-switch-btn, .search-switch-btn, .font-switch-btn, .review-guard-btn { width: 36px !important; height: 36px !important; border-radius: 10px !important; }
            .think-switch-btn svg, .search-switch-btn svg, .font-switch-btn svg { width: 19px !important; height: 19px !important; }
            /* Agent 按钮：手机端隐藏文字只留图标，触控高度 ≥32px */
            .agent-toggle-btn { padding: 8px 10px; font-size: 11px; border-radius: 10px; min-height: 32px; }
            /* 发送按钮：适中大小 */
            #send-button { width: 38px; height: 38px; }
            #send-button svg { width: 18px; height: 18px; }
            /* 快捷工具栏：紧凑 */
            .sidebar-bar-wrapper { padding: 2px 0 4px; }
            .sidebar-item-btn { padding: 5px 10px; font-size: 11px; }
            .sidebar-item-btn svg { width: 15px; height: 15px; }
            /* 上下文工具栏按钮：触控高度 ≥32px */
            .context-toolbar .ctx-btn { padding: 8px 14px; font-size: 13px; min-height: 32px; box-sizing: border-box; }
            /* 媒体参数条：手机端紧凑 */
            #media-param-bar { padding: 8px 10px; border-radius: 14px; }
            .media-param-header { font-size: 11px; }
            .media-param-row { gap: 4px; margin-top: 6px; }
            .media-param-label { font-size: 10px; min-width: 26px; }
            .media-chip { padding: 4px 10px; font-size: 11px; border-radius: 14px; }
            .media-chip.ref-chip { padding: 6px 14px; font-size: 12px; }
            .media-param-hint { font-size: 10px; }
            /* 消息气泡：手机端减少内边距 */
            .message-content { max-width: 88% !important; }
            .message-bubble { padding: 10px 14px; border-radius: 16px; }
            /* 媒体预览卡片：手机端全宽 */
            .media-preview-card { max-width: 100% !important; }
            .media-preview-media-wrap model-viewer { height: 240px !important; }
            /* 免责声明文字：隐藏 */
            .disclaimer-text { font-size: 10px; margin-top: 4px; }
            /* 历史侧栏：手机端全屏 */
            #sidebar { width: 100% !important; max-width: 100% !important; }
            /* 欢迎页提示卡片 */
            .suggestion-chip { font-size: 11px; padding: 5px 12px; max-width: 160px; }
            /* ★ 2026-08-06 老板微调：电话图标右移 15px / Agent 选择框左移 15px / 卡通球上移 20px */
            #quick-voice-call-btn { transform: translateX(15px); }
            /* ★ 2026-08-15 修复：原 -15px 会把 Agent 选择器压到模型选择器上方造成重叠遮挡（模型名被盖/点不到）；调为 -4px 保留左移感且互不遮挡 */
            .agent-selector { margin-left: -4px; }
            #omni-sphere-avatar { margin-top: -20px; }
            /* model-viewer 3D 预览高度 */
            model-viewer { height: 260px !important; }
            /* 输入框上传预览区紧凑 */
            .upload-preview-area { gap: 6px; }
            .upload-preview-item { width: 48px; height: 48px; border-radius: 6px; }
            /* 参考附件预览条紧凑 */
            .media-ref-strip { gap: 6px; padding: 4px 2px 6px; }
            .media-ref-card { width: 48px; height: 48px; }
            .media-ref-card .media-ref-thumb { width: 48px; height: 48px; }
        }
        /* ★ v8.4: 超窄屏(≤390px)进一步优化 */
        @media (max-width: 390px) {
            .model-trigger { max-width: 110px; font-size: 11px; }
            .attach-btn { width: 36px; height: 36px; }
            .attach-btn svg { width: 18px; height: 18px; }
            .think-switch-btn, .search-switch-btn, .font-switch-btn, .review-guard-btn { width: 32px; height: 32px; }
            #send-button { width: 34px; height: 34px; }
            .media-chip.ref-chip { padding: 5px 10px; font-size: 11px; }
            .media-chip.ref-chip svg { width: 10px; height: 10px; }
        }
        /* ==================== 声音选择模态框 (Aliyun 风格) ==================== */
        .voice-selection-modal {
            position: fixed;
            inset: 0;
            background: rgba(0, 0, 0, 0.4);
            z-index: 3000;
            display: none;
            align-items: center;
            justify-content: center;
            opacity: 0;
            transition: opacity 0.3s ease;
            /* ★ v3.4：顶部 44px 安全区占位，整体内容下移（app 内被信号/时间遮挡根修——
               原仅 header 内补 padding 不够，面板盒本身仍在状态栏下） */
            padding-top: max(env(safe-area-inset-top, 0px), 44px);
            box-sizing: border-box;
        }
        .voice-selection-modal.active {
            display: flex;
            opacity: 1;
        }
        .voice-selection-content {
            background: var(--bg-primary, #fff);
            width: 600px;
            max-width: 90vw;
            max-height: 85vh;
            border-radius: 24px;
            border: 1px solid var(--border-color, #f0f0f0);
            display: flex;
            flex-direction: column;
            overflow: hidden;
            box-shadow: 0 20px 60px rgba(0, 0, 0, 0.15);
            animation: modalPopUp 0.3s cubic-bezier(0.16, 1, 0.3, 1);
        }
        @keyframes modalPopUp {
            from { transform: scale(0.95) translateY(20px); opacity: 0; }
            to { transform: scale(1) translateY(0); opacity: 1; }
        }
        .voice-selection-header {
            /* ★ v3.4：安全区占位移至 .voice-selection-modal 容器（整体下移），header 恢复正常 */
            padding: 20px 24px;
            display: flex;
            align-items: center;
            justify-content: space-between;
            border-bottom: 1px solid var(--border-color, #f0f0f0);
        }
        .voice-selection-header h3 {
            font-size: 18px;
            font-weight: 600;
            color: var(--text-primary, #1c1c1e);
            margin: 0 auto;
        }
        .voice-selection-close {
            background: transparent;
            border: none;
            color: var(--text-tertiary, #8e8e93);
            cursor: pointer;
            padding: 4px;
            border-radius: 50%;
            transition: 0.2s;
            position: absolute;
            right: 20px;
        }
        .voice-selection-close:hover { background: var(--hover-bg, #f2f2f7); color: var(--text-primary, #1c1c1e); }

        .voice-selection-search-bar {
            padding: 16px 24px;
            display: flex;
            gap: 12px;
            align-items: center;
        }
        .voice-search-input-wrapper {
            flex: 1;
            position: relative;
            background: var(--hover-bg, #f2f2f7);
            border-radius: 20px;
            display: flex;
            align-items: center;
            padding: 0 16px;
        }
        .voice-search-input-wrapper svg {
            width: 18px;
            height: 18px;
            color: var(--text-tertiary, #8e8e93);
            margin-right: 8px;
            flex-shrink: 0;
        }
        .voice-search-input {
            flex: 1;
            background: transparent;
            border: none;
            height: 40px;
            font-size: 15px;
            outline: none;
            color: var(--text-primary, #1c1c1e);
            min-width: 0;
        }
        .voice-search-input::placeholder { color: var(--text-tertiary, #8e8e93); }
        .voice-filter-btn {
            display: flex;
            align-items: center;
            gap: 6px;
            padding: 0 16px;
            height: 40px;
            background: var(--hover-bg, #f2f2f7);
            border: none;
            border-radius: 20px;
            font-size: 14px;
            font-weight: 500;
            color: var(--text-primary, #1c1c1e);
            cursor: pointer;
            transition: 0.2s;
            flex-shrink: 0;
        }
        .voice-filter-btn:hover { background: var(--border-color, #e5e5ea); }

        /* ★ 2026-08-06 v3：列表项卡片式——去负 margin/去分隔线/圆角背景/固定高度，杜绝挤压 */
        .voice-list-container {
            flex: 1;
            overflow-y: auto;
            padding: 8px 16px 20px;
        }
        .voice-item {
            display: flex;
            align-items: center;
            padding: 12px;
            border-radius: 12px;
            margin-bottom: 4px;
            cursor: pointer;
            transition: background 0.2s ease;
            position: relative;
            box-sizing: border-box;
        }
        .voice-item:hover { background: var(--hover-bg, #f2f2f7); }
        .voice-item.active {
            background: rgba(92, 92, 230, 0.08);
            border: 1px solid rgba(92, 92, 230, 0.2);
            padding: 11px; /* border 1px 时内容区对齐（border-box 下总高一致） */
        }
        .voice-item-avatar {
            width: 44px;
            height: 44px;
            border-radius: 12px;
            background: var(--hover-bg, #f2f2f7);
            display: flex;
            align-items: center;
            justify-content: center;
            margin-right: 14px;
            font-size: 18px;
            color: #5c5ce6;
            flex-shrink: 0;
            transition: 0.2s;
            font-weight: 600;
        }
        .voice-item.active .voice-item-avatar { background: #5c5ce6; color: #fff; }
        .voice-item-info { flex: 1; min-width: 0; }
        .voice-item-name {
            font-size: 15px;
            font-weight: 600;
            color: var(--text-primary, #1c1c1e);
            margin-bottom: 3px;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }
        .voice-item-desc {
            font-size: 12px;
            color: var(--text-tertiary, #8e8e93);
            line-height: 1.4;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis; /* 单行统一高度 */
        }
        .voice-item-actions {
            display: flex;
            align-items: center;
            gap: 12px;
            margin-left: 12px;
            flex-shrink: 0;
        }
        .voice-preview-btn {
            display: flex; align-items: center; justify-content: center;
            width: 32px; height: 32px; border-radius: 8px;
            border: 1px solid var(--border-color); background: var(--bg-primary);
            color: var(--text-secondary); cursor: pointer; transition: all 0.2s;
            flex-shrink: 0;
        }
        /* 无试听音色时的固定占位（防止各行宽度不一造成挤压/不对齐） */
        .voice-preview-placeholder {
            width: 32px;
            height: 32px;
            flex-shrink: 0;
        }
        .voice-preview-btn:hover { border-color: var(--primary-color, #5c5ce6); color: var(--primary-color, #5c5ce6); background: rgba(92, 92, 230, 0.05); }
        .voice-preview-btn.playing { border-color: var(--primary-color, #5c5ce6); color: #fff; background: var(--primary-color, #5c5ce6); animation: ttsPulse 1.5s infinite; }
        .voice-preview-btn.playing .play-icon { display: none; }
        .voice-preview-btn.playing .stop-icon { display: block !important; }
        @keyframes ttsPulse {
            0% { transform: scale(1); opacity: 1; }
            50% { transform: scale(1.1); opacity: 0.8; }
            100% { transform: scale(1); opacity: 1; }
        }
        /* 勾选图标：常驻占位（opacity 切换，不再 display:none 引起 actions 宽度跳动） */
        .voice-check-icon {
            width: 20px;
            height: 20px;
            color: #5c5ce6;
            opacity: 0;
            transition: opacity 0.2s ease;
        }
        .voice-item.active .voice-check-icon { opacity: 1; }

        .voice-selection-footer {
            padding: 20px 24px;
            display: flex;
            justify-content: flex-end;
            gap: 12px;
            border-top: 1px solid var(--border-color, #f0f0f0);
        }
        .voice-footer-btn-cancel {
            padding: 0 24px;
            height: 40px;
            border-radius: 20px;
            border: 1px solid var(--border-color, #e5e5ea);
            background: var(--bg-primary, #fff);
            color: var(--text-primary, #1c1c1e);
            font-size: 14px;
            font-weight: 500;
            cursor: pointer;
            transition: 0.2s;
        }
        .voice-footer-btn-cancel:hover { background: var(--hover-bg, #f2f2f7); }
        .voice-footer-btn-confirm {
            padding: 0 24px;
            height: 40px;
            border-radius: 20px;
            border: none;
            background: #5c5ce6;
            color: #fff;
            font-size: 14px;
            font-weight: 600;
            cursor: pointer;
            transition: 0.2s;
        }
        .voice-footer-btn-confirm:hover { opacity: 0.9; }
        /* Typing cursor animation */
        .markdown-body.streaming p:last-child::after,
        .markdown-body.streaming > :last-child::after {
            content: "";
            display: none;
        }
        @keyframes blink { 0%, 100% { opacity: 1; } 50% { opacity: 0; } }
        .markdown-body.streaming {
            animation: streamFadeIn 0.15s ease;
        }
        @keyframes streamFadeIn { from { opacity: 0.85; } to { opacity: 1; } }

        /* ==================== 专业写作助手 UI ==================== */
        /* ★ 2026-08-02 写作模式独立语音：红色麦克风按钮 + 录音状态小浮层 */
        #writer-voice-btn { color: #ef4444 !important; }
        #writer-voice-btn.recording {
            border-radius: 50% !important;
            background: #ef4444 !important;
            color: #fff !important;
            border-color: #ef4444 !important;
            /* ★ 2026-08-02 修复：内联 padding:4px 6px + width:32px height:32px + content-box 导致非正方形→椭圆；
               flex 容器内 flex-shrink:1 会压缩 width→椭圆 */
            width: 34px !important;
            height: 34px !important;
            min-width: 34px !important;
            flex-shrink: 0 !important;
            padding: 0 !important;
            box-sizing: border-box !important;
            display: flex !important;
            align-items: center !important;
            justify-content: center !important;
            animation: writerVoiceBtnPulse 1.4s ease-in-out infinite;
            cursor: pointer;
        }
        /* 录音中 hover 变关闭麦克风图标 */
        #writer-voice-btn.recording .wvb-off { display: none; }
        #writer-voice-btn.recording:hover .wvb-on { display: none !important; }
        #writer-voice-btn.recording:hover .wvb-off { display: flex !important; }
        #writer-voice-btn .wvb-on { display: flex; }
        #writer-voice-btn .wvb-off { display: none; }
        @keyframes writerVoiceBtnPulse {
            0%, 100% { box-shadow: 0 0 0 0 rgba(239, 68, 68, 0.45); transform: scale(1); }
            50% { box-shadow: 0 0 0 9px rgba(239, 68, 68, 0); transform: scale(1.12); }
        }
        /* 录音状态小浮层（贴按钮正下方，小巧不遮挡） */
        .writer-voice-mini {
            position: fixed;
            z-index: 40;
            display: none;
            align-items: center;
            gap: 6px;
            padding: 5px 10px;
            background: rgba(239, 68, 68, 0.08);
            border: 1px solid rgba(239, 68, 68, 0.3);
            border-radius: 16px;
            backdrop-filter: blur(8px);
            pointer-events: none;
        }
        /* ★ 2026-08-02 老板反馈：胶囊上方加箭头指向麦克风按钮 */
        .writer-voice-mini::before {
            content: '';
            position: absolute;
            top: -5px;
            left: 50%;
            transform: translateX(-50%);
            width: 0; height: 0;
            border-left: 5px solid transparent;
            border-right: 5px solid transparent;
            border-bottom: 5px solid rgba(239, 68, 68, 0.3);
        }
        .wvm-dot {
            width: 7px; height: 7px;
            border-radius: 50%;
            background: #ef4444;
            animation: wvmDotPulse 1.2s ease-in-out infinite;
            flex-shrink: 0;
        }
        @keyframes wvmDotPulse {
            0%, 100% { opacity: 1; transform: scale(1); }
            50% { opacity: 0.35; transform: scale(0.65); }
        }
        .wvm-wave { display: flex; align-items: center; gap: 2px; height: 14px; }
        .wvm-wave i {
            width: 2px;
            border-radius: 1px;
            background: #ef4444;
            height: 5px;
            animation: wvmWave 0.9s ease-in-out infinite;
        }
        .wvm-wave i:nth-child(2) { animation-delay: 0.2s; }
        .wvm-wave i:nth-child(3) { animation-delay: 0.4s; }
        @keyframes wvmWave {
            0%, 100% { height: 4px; }
            50% { height: 13px; }
        }
        .wvm-time { font-size: 12px; font-weight: 600; color: #dc2626; font-variant-numeric: tabular-nums; white-space: nowrap; }
        body.dark-mode .writer-voice-mini, body[data-theme="dark"] .writer-voice-mini { background: rgba(239, 68, 68, 0.12); }
        /* ★ 2026-08-03 老板指令：写作区所见即所得元素编辑（点击/长按选中，拖拽移动，控制点缩放） */
        /* ★ 2026-08-03 老板指令：悬停不显示放大镜，鼠标移到媒体元素上光标变移动箭头（提示可拖拽） */
        #writer-content-body img,
        #writer-content-body video,
        #writer-content-body table,
        #writer-content-body iframe,
        #writer-content-body [data-wvb] {
            cursor: move;
        }
        #writer-content-body .writer-el-selected {
            outline: 2px dashed #3b82f6 !important;
            outline-offset: 2px !important;
            position: relative !important;
            cursor: move !important;
        }
        /* 浮动控制点层（img 等 replaced 元素不渲染子节点，控制点放 body 层跟随元素） */
        .writer-el-handles-layer {
            position: fixed !important;
            inset: 0 !important;
            pointer-events: none !important;
            z-index: 3000 !important;
        }
        .writer-el-handle {
            position: absolute !important;
            width: 10px !important;
            height: 10px !important;
            background: #fff !important;
            border: 2px solid #3b82f6 !important;
            border-radius: 2px !important;
            box-sizing: border-box !important;
            pointer-events: all !important;
            z-index: 3001 !important;
        }
        .writer-el-handle[data-corner="nw"] { cursor: nwse-resize !important; }
        .writer-el-handle[data-corner="n"]  { cursor: ns-resize !important; }
        .writer-el-handle[data-corner="ne"] { cursor: nesw-resize !important; }
        .writer-el-handle[data-corner="e"]  { cursor: ew-resize !important; }
        .writer-el-handle[data-corner="se"] { cursor: nwse-resize !important; }
        .writer-el-handle[data-corner="s"]  { cursor: ns-resize !important; }
        .writer-el-handle[data-corner="sw"] { cursor: nesw-resize !important; }
        .writer-el-handle[data-corner="w"]  { cursor: ew-resize !important; }
        .writer-draft-bar {
            position: sticky;
            top: 8px;
            z-index: 20;
            margin: 0 0 12px;
            padding: 8px 14px;
            display: flex;
            align-items: center;
            gap: 10px;
            background: linear-gradient(135deg, rgba(59,130,246,0.08), rgba(16,185,129,0.08));
            border: 1px solid rgba(59,130,246,0.25);
            border-radius: 12px;
            font-size: 13px;
            color: var(--text-primary);
            backdrop-filter: blur(8px);
        }
        .writer-draft-bar svg { color: var(--primary-color); flex-shrink: 0; }
        .writer-draft-bar span { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
        .writer-draft-bar button {
            flex-shrink: 0;
            padding: 4px 12px;
            border: none;
            border-radius: 8px;
            background: var(--primary-color);
            color: #fff;
            font-size: 12px;
            font-weight: 600;
            cursor: pointer;
        }
        .writer-draft-bar button.discard {
            background: transparent;
            color: var(--text-tertiary);
            border: 1px solid var(--border-color);
        }
        .writer-sync-tip {
            position: sticky;
            top: 8px;
            z-index: 20;
            margin: 0 0 12px;
            padding: 8px 14px;
            display: flex;
            align-items: center;
            gap: 10px;
            background: linear-gradient(135deg, rgba(16,185,129,0.1), rgba(59,130,246,0.1));
            border: 1px solid rgba(16,185,129,0.3);
            border-radius: 12px;
            font-size: 13px;
            color: var(--text-primary);
            backdrop-filter: blur(8px);
        }
        .writer-sync-tip span { flex: 1; min-width: 0; }
        .writer-sync-tip button {
            flex-shrink: 0;
            padding: 4px 12px;
            border: none;
            border-radius: 8px;
            background: #10b981;
            color: #fff;
            font-size: 12px;
            font-weight: 600;
            cursor: pointer;
        }
        .writer-tools-toolbar {
            display: none;
            position: absolute;
            bottom: calc(100% + 6px); /* 10px lower than previous 16px */
            left: 50%;
            transform: translateX(-50%);
            z-index: 1;
            background: rgba(255, 255, 255, 0.85);
            padding: 8px;
            border-radius: 20px;
            border: 1px solid rgba(0,0,0,0.06);
            box-shadow: none;
            width: max-content;
            backdrop-filter: blur(12px);
            gap: 8px;
        }
        .writer-tool-group {
            display: flex;
            gap: 8px;
            align-items: center;
            position: relative;
        }
        .writer-tool-btn {
            background: transparent;
            border: none;
            border-radius: 12px;
            padding: 6px 12px;
            display: flex;
            align-items: center;
            gap: 6px;
            font-size: 13px;
            font-weight: 500;
            color: #333;
            cursor: pointer;
            transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
            box-shadow: none;
        }
        .writer-tool-btn:hover {
            background: rgba(0,0,0,0.04);
            transform: translateY(-1px);
        }
        /* Dropdown Menus */
        .writer-dropdown-menu {
            display: none;
            position: absolute;
            bottom: calc(100% + 12px);
            left: 0;
            z-index: 1002;
            background: #fff;
            border: 1px solid rgba(0,0,0,0.08);
            border-radius: 12px;
            box-shadow: none;
            width: max-content;
            padding: 4px;
            flex-direction: column;
            gap: 2px;
            text-align: left;
        }
        .writer-dropdown-menu.active {
            display: flex;
        }
        .writer-dropdown-item {
            padding: 6px 14px;
            font-size: 12px;
            color: #333;
            border-radius: 8px;
            cursor: pointer;
            display: flex;
            align-items: center;
            gap: 8px;
            transition: background 0.2s;
            white-space: nowrap;
        }
        .writer-dropdown-item:hover {
            background: #f4f6f8;
            color: var(--primary-color);
        }
        .writer-dropdown-item svg {
            width: 14px;
            height: 14px;
            opacity: 0.6;
        }

        /* Artifact Card / Doc Card */
        .artifact-card {
            background: #ffffff;
            border: 1px solid var(--border-color);
            border-radius: 12px;
            padding: 16px;
            margin: 12px 0;
            display: flex;
            align-items: center;
            gap: 16px;
            cursor: pointer;
            transition: transform 0.2s;
            max-width: 320px;
        }
        .artifact-card:hover {
            transform: translateY(-2px);
            border-color: var(--primary-color);
        }
        .artifact-icon {
            width: 40px;
            height: 40px;
            border-radius: 10px;
            background: rgba(59, 130, 246, 0.08);
            display: flex;
            align-items: center;
            justify-content: center;
            color: var(--primary-color);
        }
        .artifact-info {
            flex: 1;
        }
        .artifact-title {
            font-size: 14px;
            font-weight: 600;
            color: var(--text-primary);
            margin-bottom: 2px;
        }
        .artifact-meta {
            font-size: 12px;
            color: var(--text-tertiary);
        }

        /* Message Footer */
        .msg-footer {
            font-size: 11px;
            color: var(--text-tertiary);
            margin-left: 8px;
            display: flex;
            gap: 12px;
            align-items: center;
        }
        .msg-footer-item {
            display: flex;
            align-items: center;
            gap: 4px;
        }
        /* 路由信息：与 token 文本同一字号、颜色和布局 */
        .action-bar .route-feedback-bar.msg-footer-item {
            font-size: 11px !important;
            line-height: normal !important;
            color: var(--text-tertiary) !important;
            display: flex !important;
            align-items: center !important;
            justify-content: flex-start !important;
            gap: 4px !important;
            margin: 0 !important;
            padding: 0 !important;
            min-width: auto !important;
            min-height: auto !important;
            flex-wrap: nowrap !important;
        }
        .action-bar .route-feedback-bar.msg-footer-item > span {
            font-size: 11px !important;
            line-height: normal !important;
            font-weight: normal !important;
            color: var(--text-tertiary) !important;
            opacity: 1 !important;
        }
        .action-bar .route-feedback-bar.msg-footer-item > button {
            display: inline-flex !important;
            align-items: center !important;
            justify-content: center !important;
            width: 16px !important;
            height: 16px !important;
            min-width: 16px !important;
            min-height: 16px !important;
            padding: 0 !important;
            font-size: 11px !important;
            color: var(--text-tertiary) !important;
        }
        .action-bar .route-feedback-bar.msg-footer-item > button svg {
            width: 12px !important;
            height: 12px !important;
        }
        /* Suggestion Chips - 简洁无边框风格 */
        .suggestion-chips {
            display: flex;
            flex-direction: column;
            gap: 0;
            margin-top: 4px;
            align-items: flex-start;
        }
        .suggestion-chip {
            background: transparent;
            border: none;
            border-radius: 0;
            padding: 4px 0;
            font-size: 15px;
            color: var(--text-secondary);
            cursor: pointer;
            transition: color 0.15s;
            display: block;
            text-align: left;
            max-width: 100%;
            line-height: 1.5;
        }
        .suggestion-chip:hover {
            background: transparent;
            color: var(--text-primary);
            transform: none;
        }

        /* Writer Mode Adjustments */
        body.writer-mode-active .message-assistant {
            background: transparent !important;
            padding-left: 0 !important;
            box-shadow: none !important;
        }
        body.writer-mode-active .bubble {
            max-width: 95% !important;
            background: transparent !important;
            border: none !important;
        }
        body.writer-mode-active .message-user .bubble {
            background: var(--bg-sidebar) !important;
            border: 1px solid var(--border-color) !important;
            color: var(--text-primary) !important;
            border-radius: 12px !important;
            padding: 8px 16px !important;
            box-shadow: none !important;
        }

        body.writer-mode-active .disclaimer-text {
            display: none !important;
        }
        body.writer-mode-active .agent-selector { display: none !important; }

        /* 写作模式/代码模式：输入框自适应窗口宽度 */
        body.writer-mode-active .input-panel,
        body.coder-mode .input-panel {
            align-items: stretch !important; /* 取消居中，拉伸到全宽 */
        }
        body.writer-mode-active .input-panel {
            padding-right: 5px !important; /* 输入框蓝线外框右边距离编辑区5px */
        }
        body.writer-mode-active .input-box-wrapper,
        body.coder-mode .input-box-wrapper {
            max-width: none !important; /* 移除 760px 限制 */
            border-radius: 16px; /* 稍小圆角更协调 */
        }

        .switch-to-standard-link {
            display: inline-block;
            margin: 12px 0;
            font-size: 13px;
            color: var(--text-tertiary);
            text-decoration: none;
            cursor: pointer;
        }
        .switch-to-standard-link:hover {
            color: var(--primary-color);
        }

        /* ----- 语音通话全屏覆盖层 -----
         * 2026-08-06 UI 重构：display 直切改为 visibility+opacity 过渡（关闭动画完整播放）；
         * 背景统一深色毛玻璃（与视频通话一致）；状态圆环去 CSS animation 硬切，由 GSAP 平滑驱动。
         */
        .voice-overlay {
            position: fixed;
            inset: 0;
            background: rgba(13, 14, 20, 0.88);
            backdrop-filter: blur(28px) saturate(140%);
            -webkit-backdrop-filter: blur(28px) saturate(140%);
            z-index: 2000;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: space-between;
            padding: 0 20px 40px;
            opacity: 0;
            visibility: hidden;
            pointer-events: none;
            transition: opacity 0.35s cubic-bezier(0.4, 0, 0.2, 1), visibility 0s linear 0.35s;
        }
        .voice-overlay.active {
            opacity: 1;
            visibility: visible;
            pointer-events: auto;
            transition: opacity 0.35s cubic-bezier(0.4, 0, 0.2, 1), visibility 0s linear 0s;
        }
        /* ★ 2026-08-06 v3：顶部安全区占位条——app 内状态栏（信号/时间）遮挡修复，
         *   计时器顶部中央、切换按钮右上；padding-top 至少 44px */
        .voice-top-bar {
            position: relative;
            width: 100%;
            flex-shrink: 0;
            padding-top: max(env(safe-area-inset-top, 0px), 44px);
            height: calc(max(env(safe-area-inset-top, 0px), 44px) + 44px);
            display: flex;
            align-items: center;
            justify-content: center;
        }
        .voice-container {
            position: relative;
            flex: 1;
            width: 100%;
            display: flex;
            flex-direction: column;
            align-items: center;
        }
        .omni-task-preview {
            position: absolute;
            inset: 0;
            z-index: 99;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            background: rgba(0,0,0,0.65);
            backdrop-filter: blur(12px);
            -webkit-backdrop-filter: blur(12px);
            border-radius: 0;
        }
        .omni-task-preview img {
            width: min(280px, 72vw);
            max-height: 340px;
            object-fit: contain;
            border-radius: 16px;
            border: 1px solid rgba(255,255,255,.15);
            box-shadow: 0 12px 48px rgba(0,0,0,.5);
            background: rgba(0,0,0,.3);
        }
        .omni-task-preview .close-preview {
            margin-top: 14px;
            padding: 10px 28px;
            background: rgba(255,255,255,.12);
            border: 1px solid rgba(255,255,255,.2);
            border-radius: 24px;
            color: #fff;
            font-size: 13px;
            cursor: pointer;
            pointer-events: auto;
        }
        /* ★ 2026-08-06 v2：圆环+计时器固定在独立层（不参与文字文档流，动画放大不再被文字挤压/不遮计时器） */
        .voice-circle-wrap {
            position: relative;
            width: 280px;
            height: 280px;
            margin-top: auto;
            display: flex;
            align-items: center;
            justify-content: center;
        }
        .voice-overlay .gradient-circle {
            position: absolute;
            inset: 0;
            border-radius: 50%;
            background: transparent;
            will-change: transform;
        }
        /* 渐变/光晕在 ::before 层（CSS class 过渡 0.6s 平滑衔接） */
        .voice-overlay .gradient-circle::before {
            content: '';
            position: absolute;
            inset: 0;
            border-radius: inherit;
            background: linear-gradient(135deg, #c084fc 0%, #e879f9 50%, #f472b6 100%);
            box-shadow: 0 20px var(--glow-blur, 60px) rgba(217, 70, 239, var(--glow-alpha, 0.35));
            transition: background 0.6s ease, box-shadow 0.6s ease;
        }
        /* ::after 承载呼吸/morph（CSS animation）；主元素 transform 由 GSAP 驱动音量/旋转，互不冲突 */
        .voice-overlay .gradient-circle::after {
            content: '';
            position: absolute;
            inset: 0;
            border-radius: inherit;
            animation: omniCircleBreath 2.2s infinite ease-in-out;
        }
        .voice-overlay .gradient-circle.state-listening::after { animation-duration: 1.1s; }
        .voice-overlay .gradient-circle.state-processing::after { animation-duration: 1.2s; }
        .voice-overlay .gradient-circle.state-speaking::after { animation-duration: 0.8s; }
        @keyframes omniCircleBreath {
            0%, 100% { transform: scale(1); border-radius: 50%; }
            50% { transform: scale(1.05); border-radius: 46% 54% 50% 50%; }
        }

        /* 状态色（背景/光晕过渡 0.6s 平滑衔接） */
        .voice-overlay .gradient-circle.state-listening::before {
            background: linear-gradient(135deg, #34d399 0%, #06b6d4 100%);
            box-shadow: 0 20px var(--glow-blur, 60px) rgba(52, 211, 153, var(--glow-alpha, 0.45));
        }
        .voice-overlay .gradient-circle.state-processing::before {
            background: linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%);
            box-shadow: 0 20px var(--glow-blur, 60px) rgba(99, 102, 241, var(--glow-alpha, 0.45));
        }
        .voice-overlay .gradient-circle.state-speaking::before {
            background: linear-gradient(135deg, #d946ef 0%, #8b5cf6 100%);
            box-shadow: 0 20px var(--glow-blur, 80px) rgba(217, 70, 239, var(--glow-alpha, 0.55));
        }
        /* 计时器：顶部中央（★ v3 从圆环内移到顶部；放大动画永远遮不住） */
        .voice-overlay .call-timer {
            background: rgba(0, 0, 0, 0.28);
            backdrop-filter: blur(10px);
            -webkit-backdrop-filter: blur(10px);
            padding: 5px 14px;
            border-radius: 20px;
            color: #fff;
            font-size: 13px;
            font-weight: 500;
            letter-spacing: 0.5px;
            text-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
            white-space: nowrap;
            pointer-events: none;
        }
        .voice-overlay .status-area {
            margin-top: 56px; /* ★ v3：整体下移 30px（原 26px） */
            display: flex;
            flex-direction: column;
            align-items: center;
            gap: 14px;
            max-width: 86%;
            margin-bottom: auto;
        }
        .voice-overlay .pagination-dots {
            display: flex;
            gap: 8px;
        }
        .voice-overlay .dot {
            width: 5px;
            height: 5px;
            border-radius: 50%;
            background-color: rgba(255, 255, 255, 0.35);
            transition: background-color 0.3s;
        }
        .voice-overlay .dot.active {
            background-color: #fff;
        }
        .voice-overlay .status-text {
            font-size: 15px;
            font-weight: 500;
            color: #fff;
            letter-spacing: 0.5px;
            text-shadow: 0 1px 2px rgba(0, 0, 0, 0.4);
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
            max-width: 100%;
        }
        .voice-overlay .controls-area {
            width: 100%;
            max-width: 320px;
            display: flex;
            align-items: center;
            justify-content: space-between;
            margin-bottom: 30px;
        }
        .voice-overlay .control-btn {
            background: rgba(255, 255, 255, 0.08);
            backdrop-filter: blur(10px);
            -webkit-backdrop-filter: blur(10px);
            border: none;
            cursor: pointer;
            display: flex;
            align-items: center;
            justify-content: center;
            transition: background 0.2s ease, transform 0.15s ease;
            width: 44px;
            height: 44px;
            border-radius: 50%;
            box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25);
        }
        .voice-overlay .control-btn:hover {
            background-color: rgba(255, 255, 255, 0.16);
        }
        .voice-overlay .control-btn:active {
            transform: scale(0.92);
        }
        .voice-overlay .control-btn svg {
            width: 24px;
            height: 24px;
            color: #fff;
            stroke-width: 1.5;
        }
        .voice-overlay .close-btn {
            width: 56px;
            height: 56px;
            border-radius: 50%;
            background: linear-gradient(135deg, #ef4444 0%, #dc2626 100%);
            color: #fff;
            box-shadow: 0 8px 24px rgba(239, 68, 68, 0.35);
        }
        .voice-overlay .close-btn:hover {
            background: linear-gradient(135deg, #f87171 0%, #dc2626 100%);
        }
        .voice-overlay .close-btn svg {
            width: 28px;
            height: 28px;
            color: #fff;
            stroke-width: 2;
        }
        .voice-overlay .footer-info {
            font-size: 12px;
            color: rgba(255, 255, 255, 0.55);
            font-weight: 400;
            margin-bottom: 10px;
        }
        .voice-mode-switch-btn {
            position: absolute;
            top: 46px; /* ★ v3.1：下移 30px（原 16px），避开状态栏占位区、与顶部计时器对齐 */
            right: 16px;
            z-index: 10;
            width: 44px;
            height: 44px;
            border-radius: 50%;
            border: 1px solid rgba(255, 255, 255, 0.15);
            background: rgba(255, 255, 255, 0.08);
            backdrop-filter: blur(10px);
            -webkit-backdrop-filter: blur(10px);
            color: #ececf1;
            cursor: pointer;
            display: flex;
            align-items: center;
            justify-content: center;
            transition: background 0.2s;
        }
        .voice-mode-switch-btn:hover {
            background: rgba(255, 255, 255, 0.16);
        }
        .voice-mode-switch-btn svg {
            width: 20px;
            height: 20px;
            flex-shrink: 0;
        }
        /* ----- 视频通话全屏覆盖层 ----- */
        .video-overlay {
            position: fixed;
            inset: 0;
            background: rgba(10, 10, 14, 0.94);
            z-index: 2100;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: space-between;
            opacity: 0;
            visibility: hidden;
            pointer-events: none;
            transition: opacity 0.35s cubic-bezier(0.4, 0, 0.2, 1), visibility 0s linear 0.35s;
            overflow: hidden;
        }
        .video-overlay.active {
            opacity: 1;
            visibility: visible;
            pointer-events: auto;
            transition: opacity 0.35s cubic-bezier(0.4, 0, 0.2, 1), visibility 0s linear 0s;
        }
        .video-overlay video {
            position: absolute;
            inset: 0;
            width: 100%;
            height: 100%;
            object-fit: cover;
            z-index: 1;
            /* 镜像显示前置摄像头 */
            transform: scaleX(-1);
        }
        .video-overlay video.back-camera {
            transform: scaleX(1);
        }
        .video-overlay .overlay-content {
            position: relative;
            z-index: 2;
            width: 100%;
            height: 100%;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: space-between;
            pointer-events: none;
            background: linear-gradient(to bottom, rgba(0,0,0,0.3) 0%, transparent 15%, transparent 70%, rgba(0,0,0,0.6) 100%);
        }
        /* ★ v3.1：视频页中部布局抽类（原内联 style）——内容区贴底、底部安全区留白 */
        .video-overlay .video-body {
            flex: 1;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: flex-end;
            width: 100%;
            padding-bottom: 32px;
        }
        .voice-selector-container {
            position: relative;
        }
        .video-overlay .top-controls {
            width: 100%;
            display: flex;
            justify-content: space-between;
            align-items: center;
            pointer-events: auto;
            /* ★ v3.4：顶部控件再上移 20px（老板实测要求）——44px 占位 - 10px */
            padding: calc(max(env(safe-area-inset-top, 0px), 44px) - 10px) 16px 0;
        }
        .video-overlay .top-controls .top-right-btns {
            display: flex;
            gap: 8px;
            align-items: center;
        }
        .video-overlay .call-timer {
            background: rgba(0, 0, 0, 0.3);
            backdrop-filter: blur(10px);
            padding: 6px 16px;
            border-radius: 20px;
            color: #fff;
            font-size: 14px;
            font-weight: 500;
            letter-spacing: 0.5px;
            flex-shrink: 0;
        }
        .video-overlay .switch-camera-btn {
            /* ★ v3.3：固定 44×44 圆钮（1:1），防 flex 压缩压扁 */
            width: 44px;
            height: 44px;
            padding: 0;
            flex-shrink: 0;
            display: flex;
            align-items: center;
            justify-content: center;
            background: rgba(0, 0, 0, 0.3);
            backdrop-filter: blur(10px);
            border: none;
            color: #fff;
            cursor: pointer;
            border-radius: 50%;
            transition: background 0.2s ease, transform 0.15s ease;
        }
        .video-overlay .switch-camera-btn:active {
            transform: scale(0.92);
        }
        .video-overlay .switch-camera-btn:hover {
            background: rgba(255, 255, 255, 0.15);
        }
        .video-overlay .switch-camera-btn svg {
            width: 24px;
            height: 24px;
            flex-shrink: 0;
        }
        .video-overlay .status-area {
            display: flex;
            flex-direction: column;
            align-items: center;
            gap: 12px;
            margin-bottom: 24px;
        }
        /* ★ 2026-08-06 14:32 老板指令：视频页麦克风音量检查动画（说话时声波跳动） */
        .video-overlay .mic-volume {
            display: flex;
            align-items: flex-end;
            gap: 4px;
            height: 26px;
            margin-bottom: 4px;
            padding: 4px 10px;
            border-radius: 12px;
            background: rgba(0, 0, 0, 0.25);
            backdrop-filter: blur(4px);
            -webkit-backdrop-filter: blur(4px);
            pointer-events: none;
        }
        .video-overlay .mic-volume i {
            width: 3px;
            border-radius: 2px;
            background: rgba(255, 255, 255, 0.85);
            height: 4px;
            transition: height 0.08s ease-out;
        }
        .video-overlay .pagination-dots {
            display: flex;
            gap: 6px;
        }
        .video-overlay .dot {
            width: 5px;
            height: 5px;
            border-radius: 50%;
            background-color: rgba(255, 255, 255, 0.3);
        }
        .video-overlay .dot.active {
            background-color: #fff;
        }
        .video-overlay .status-text {
            color: #fff;
            font-size: 15px;
            font-weight: 500;
            text-shadow: 0 1px 2px rgba(0,0,0,0.5);
        }
        .video-overlay .controls-area {
            width: 100%;
            max-width: 280px;
            display: flex;
            align-items: center;
            justify-content: space-between;
            pointer-events: auto;
            margin-bottom: 20px;
        }
        .video-overlay .control-btn {
            width: 56px;
            height: 56px;
            border-radius: 50%;
            background: rgba(255, 255, 255, 0.08);
            backdrop-filter: blur(10px);
            -webkit-backdrop-filter: blur(10px);
            border: 1px solid rgba(255, 255, 255, 0.1);
            color: #fff;
            display: flex;
            align-items: center;
            justify-content: center;
            cursor: pointer;
            transition: background 0.2s ease, transform 0.15s ease;
            box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25);
        }
        .video-overlay .control-btn:hover {
            background: rgba(255, 255, 255, 0.16);
        }
        .video-overlay .control-btn:active {
            transform: scale(0.92);
        }
        .video-overlay .control-btn svg {
            width: 24px;
            height: 24px;
        }
        .video-overlay .close-btn {
            width: 64px;
            height: 64px;
            background: linear-gradient(135deg, #ef4444 0%, #dc2626 100%);
            box-shadow: 0 8px 24px rgba(239, 68, 68, 0.35);
        }
        .video-overlay .close-btn:hover {
            background: linear-gradient(135deg, #f87171 0%, #dc2626 100%);
        }
        .video-overlay .close-btn svg {
            width: 28px;
            height: 28px;
        }
        .video-overlay .footer-info {
            color: rgba(255, 255, 255, 0.55);
            font-size: 12px;
            pointer-events: none;
            margin-bottom: 20px;
        }
        /* ----- 录音覆盖层 (微信风格) ----- */
        .record-overlay {
            position: fixed;
            inset: 0;
            background: rgba(0, 0, 0, 0.6);
            z-index: 3000;
            display: none;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            opacity: 0;
            transition: opacity 0.2s ease;
        }
        .record-overlay.active {
            display: flex;
            opacity: 1;
        }
        .record-card {
            background: var(--bg-main);
            padding: 30px;
            border-radius: 20px;
            display: flex;
            flex-direction: column;
            align-items: center;
            gap: 20px;
            box-shadow: 0 10px 30px rgba(0,0,0,0.2);
            width: 200px;
        }
        .record-wave {
            display: flex;
            align-items: center;
            gap: 4px;
            height: 40px;
        }
        .record-wave span {
            width: 4px;
            height: 10px;
            background: var(--primary-color);
            border-radius: 2px;
            animation: wave 1s infinite ease-in-out;
        }
        .record-wave span:nth-child(2) { animation-delay: 0.1s; }
        .record-wave span:nth-child(3) { animation-delay: 0.2s; }
        .record-wave span:nth-child(4) { animation-delay: 0.3s; }
        .record-wave span:nth-child(5) { animation-delay: 0.4s; }

        @keyframes wave {
            0%, 100% { height: 10px; }
            50% { height: 30px; }
        }
        .record-status {
            font-size: 14px;
            color: var(--text-secondary);
            font-weight: 500;
        }
        .record-hint {
            font-size: 12px;
            color: var(--text-tertiary);
        }

        /* ----- 发送按钮菜单定位修正 ----- */
        .send-btn-wrapper {
            position: relative;
        }
        .send-btn-wrapper .mic-menu {
            bottom: 100%;
            right: 0;
            margin-bottom: 10px;
        }
        /* ----- 发送按钮波纹动画 ----- */
        .icon-waveform {
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 2px;
            width: 20px;
            height: 20px;
        }
        .icon-waveform span {
            width: 2px;
            height: 8px;
            background: currentColor;
            border-radius: 1px;
            animation: waveform-jump 1.5s infinite ease-in-out;
        }
        .icon-waveform span:nth-child(2) { animation-delay: 0.2s; }
        .icon-waveform span:nth-child(3) { animation-delay: 0.4s; }
        .icon-waveform span:nth-child(4) { animation-delay: 0.6s; }
        .icon-waveform span:nth-child(5) { animation-delay: 0.8s; }

        @keyframes waveform-jump {
            0%, 100% { height: 6px; }
            50% { height: 16px; }
        }

        /* ----- 生成中液态呼吸停止按钮 ----- */
        .liquid-loader {
            width: 20px;
            height: 20px;
            background: #fff;
            position: relative;
            display: flex;
            align-items: center;
            justify-content: center;
            animation: liquid-morph 4s ease-in-out infinite, liquid-spin 8s linear infinite;
            box-shadow: 0 0 10px rgba(255, 255, 255, 0.4);
        }
        .liquid-loader::after {
            content: '';
            width: 6px;
            height: 6px;
            background: var(--primary-color); /* 核心停止小方块 */
            border-radius: 1px;
            animation: liquid-inner-pulse 2s ease-in-out infinite;
        }

        @keyframes liquid-morph {
            0%, 100% { border-radius: 60% 40% 30% 70% / 60% 30% 70% 40%; }
            33% { border-radius: 30% 60% 70% 40% / 50% 60% 30% 60%; }
            66% { border-radius: 40% 40% 50% 50% / 40% 60% 40% 60%; }
        }
        @keyframes liquid-spin {
            from { transform: rotate(0deg); }
            to { transform: rotate(360deg); }
        }
        @keyframes liquid-inner-pulse {
            0%, 100% { transform: scale(1); opacity: 1; }
            50% { transform: scale(0.8); opacity: 0.7; }
        }

        .send-btn.stop-btn {
            background-color: var(--primary-color) !important;
            border-color: var(--text-secondary) !important;
            box-shadow: 0 0 15px rgba(59, 130, 246, 0.3);
        }

        /* ----- 语音输入面板 (新样式) ----- */
        .voice-input-panel {
            width: 100%;
            max-width: 800px;
            background: var(--input-bg);
            padding: 8px 20px;
            display: none;
            flex-direction: row;
            align-items: center;
            gap: 15px;
            z-index: 3000;
            border-radius: 32px;
            box-shadow: var(--input-shadow);
            border: 1px solid var(--border-color);
            transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
            min-height: 56px;
        }
        .voice-input-panel.active {
            display: flex;
        }
        .voice-input-main {
            flex: 1;
            display: flex;
            flex-direction: column;
            justify-content: center;
            gap: 2px;
            overflow: hidden;
        }
        .voice-input-header {
            font-size: 13px;
            font-weight: 500;
            color: var(--text-tertiary);
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }
        .voice-recognized-text {
            color: var(--text-primary);
            margin-left: 6px;
            font-size: 13px;
            font-weight: 400;
        }
        .voice-input-content {
            display: contents;
        }
        .voice-close-btn, .voice-confirm-btn {
            width: 34px;
            height: 34px;
            border-radius: 50%;
            display: flex;
            align-items: center;
            justify-content: center;
            border: 1px solid var(--border-color);
            cursor: pointer;
            transition: all 0.2s;
            flex-shrink: 0;
        }
        .voice-close-btn {
            background: #fff;
            color: var(--text-secondary);
        }
        .voice-confirm-btn {
            background: #fff;
            color: var(--primary-color);
        }
        .voice-close-btn:hover { background: var(--hover-bg); }
        .voice-confirm-btn:hover { transform: scale(1.05); }

        .voice-visualizer {
            width: 100%;
            height: 20px;
            display: flex;
            align-items: center;
            justify-content: flex-start;
            gap: 2px;
            overflow: hidden;
        }
        .visualizer-bar {
            width: 3px;
            height: 4px;
            background: var(--text-primary);
            border-radius: 2px;
            transition: height 0.08s ease;
        }

        @keyframes slideUp {
            from { transform: translateY(100%) scale(0.95); opacity: 0; }
            to { transform: translateY(0) scale(1); opacity: 1; }
        }
        /* Coder 模式样式优化 */
        body.coder-mode .main-content {
            flex: none;
            width: 400px; /* 与写作模式保持一致 */
            min-width: 200px;
            border-right: none;
            background: transparent; /* 2026-08-01 编程模式顶栏透明化：不再强加白底，露出对话区渐变背景 */
            display: flex;
            flex-direction: column;
            overflow: hidden;
            position: relative;
        }
        #chat-editor-resizer {
            display: none !important;
        }
        body.coder-mode #chat-editor-resizer {
            display: flex !important;
            width: 24px !important;
            margin: 0 -12px !important;
            cursor: col-resize;
            z-index: 1001 !important;
            position: fixed !important;
            top: 0 !important;
            bottom: 0 !important;
            align-items: center;
            justify-content: center;
            flex-shrink: 0;
            background: transparent !important;
            transition: background 0.2s;
        }
        body.coder-mode #chat-editor-resizer::before {
            content: '';
            position: absolute;
            left: 50%;
            top: 0;
            bottom: 0;
            width: 1px;
            background: var(--border-color);
            transform: translateX(-50%);
            transition: all 0.2s;
        }
        body.coder-mode #chat-editor-resizer:hover::before,
        body.coder-mode #chat-editor-resizer.dragging::before {
            background: var(--primary-color);
            width: 2px;
        }
        body.coder-mode #chat-editor-resizer .resizer-handle {
            width: 12px;
            height: 24px;
            background: var(--bg-main);
            border: 1px solid var(--border-color);
            border-radius: 4px;
            z-index: 11;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            gap: 2px;
            transition: all 0.2s;
        }
        body.coder-mode #chat-editor-resizer:hover .resizer-handle,
        body.coder-mode #chat-editor-resizer.dragging .resizer-handle {
            border-color: var(--primary-color);
            box-shadow: 0 2px 8px rgba(0,0,0,0.05);
        }
        body.coder-mode #chat-editor-resizer .resizer-handle span {
            width: 2px;
            height: 2px;
            background: var(--text-tertiary);
            border-radius: 50%;
            transition: background 0.2s;
        }
        body.coder-mode #chat-editor-resizer:hover .resizer-handle span,
        body.coder-mode #chat-editor-resizer.dragging .resizer-handle span {
            background: var(--primary-color);
        }

        body.coder-mode .sidebar:not(.collapsed) ~ .main-content + #chat-editor-resizer {
            left: calc(260px + 400px + 5px);
            margin-left: 0;
        }
        body.coder-mode .sidebar.collapsed ~ .main-content + #chat-editor-resizer {
            left: calc(400px + 5px);
            margin-left: 0;
        }
        body.coder-mode .sidebar:not(.collapsed) ~ .editor-overlay {
            left: calc(260px + 400px + 5px + 1px);
        }
        body.coder-mode .sidebar.collapsed ~ .editor-overlay {
            left: calc(400px + 5px + 1px);
        }
        body.coder-mode.chat-collapsed .main-content {
            display: none !important;
        }
        body.coder-mode.chat-collapsed #chat-editor-resizer {
            display: none !important;
        }
        body.coder-mode.chat-collapsed .sidebar:not(.collapsed) ~ .editor-overlay {
            left: 280px !important;
        }
        body.coder-mode.chat-collapsed .sidebar.collapsed ~ .editor-overlay {
            left: 0 !important;
        }
        body.coder-mode .editor-overlay {
            position: fixed;
            right: 0;
            top: 0;
            bottom: 0;
            z-index: 1000;
            display: flex;
            animation: none;
            background: var(--bg-main);
            border-left: none;
            padding-top: env(safe-area-inset-top, 20px);
            overflow: hidden;
        }

        /* 编辑器增强样式 */
        .editor-container {
            position: relative;
            flex: 1;
            display: flex;
            overflow: hidden;
            background: #fafafa;
        }
        #ace-editor {
            flex: 1;
            width: 100%;
            height: 100%;
        }
        #ace-editor *,
        #ace-editor .ace_content,
        #ace-editor .ace_text-layer,
        #ace-editor .ace_line,
        #ace-editor .ace_gutter {
            font-family: Monaco, Menlo, 'Ubuntu Mono', Consolas, 'Source Code Pro', monospace !important;
        }
        #ace-editor .ace_text-input {
            font-size: 16px !important;
        }
        .line-numbers {
            width: 45px;
            padding: 16px 8px;
            text-align: right;
            font-family: 'Fira Code', Consolas, Monaco, 'Courier New', monospace;
            font-size: 14px;
            line-height: 26px;
            color: #999;
            background: #f8f9fa;
            border-right: 1px solid #eee;
            user-select: none;
            overflow: hidden;
            line-height: 1.6;
        }
        /* Ace Editor 模式下隐藏旧元素 */
        body.coder-mode .editor-textarea-wrapper { display: none; }
        body.coder-mode .editor-highlight { display: none; }
        .editor-textarea, .editor-highlight {
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            padding: 16px;
            margin: 0;
            border: none;
            outline: none;
            font-family: 'Fira Code', Consolas, Monaco, 'Courier New', monospace;
            font-size: 16px;
            line-height: 26px;
            white-space: pre;
            overflow: auto;
            tab-size: 4;
            box-sizing: border-box;
            -webkit-appearance: none;
            appearance: none;
            letter-spacing: normal;
            word-spacing: normal;
            font-variant-ligatures: none;
            font-feature-settings: normal;
            text-rendering: optimizeSpeed;
        }
        /* 旧 textarea/highlight 样式已移除，使用 Ace Editor */
        .editor-highlight {
            z-index: 1;
            pointer-events: none;
            background: #fafafa;
            color: #24292e;
            scrollbar-width: none;
            display: none;
        }
        :root[data-theme="dark"] .editor-highlight {
            background: #0d1117;
            color: #c9d1d9;
            display: none;
        }
        .editor-highlight::-webkit-scrollbar { display: none; }
        .line-numbers::-webkit-scrollbar { display: none; }
        .line-numbers {
            scrollbar-width: none;
        }
        .editor-highlight code {
            font-family: inherit !important;
            font-size: inherit !important;
            background: transparent !important;
            padding: 0 !important;
        }

        .editor-pane {
            display: flex;
            flex-direction: column;
            position: relative;
        }
        .editor-copy-btn {
            position: absolute;
            top: 45px;
            right: 10px;
            z-index: 10;
            background: var(--bg-main);
            border: 1px solid var(--border-color);
            border-radius: 6px;
            padding: 6px;
            cursor: pointer;
            color: var(--text-tertiary);
            transition: all 0.2s;
            display: flex;
            align-items: center;
            justify-content: center;
        }
        .editor-copy-btn:hover {
            color: var(--primary-color);
            background: var(--hover-bg);
        }
        .editor-copy-btn svg { width: 16px; height: 16px; }
        body.coder-mode .api-key-link,
        body.coder-mode #login-btn,
        body.coder-mode #user-info-area {
            display: none !important;
        }
        body.coder-mode .model-selector {
            font-size: 13px !important;
        }
        body.coder-mode .input-box-wrapper {
            width: 100% !important; /* 自适应窗口宽度，不固定 */
            max-width: none !important;
            border-radius: 16px;
        }
        body.coder-mode .file-ref-cards {
            max-width: none !important;
        }
        body.coder-mode .input-panel {
            /* ★ 2026-08-01 与写作模式输入框样式保持一致：去掉白底与 12px 内边距，沿用公共 8px 12px 12px */
            padding-right: 5px; /* 输入框蓝线外框右边距离编辑区5px（覆盖上方公共规则） */
        }
        body.coder-mode .input-container {
            width: 100% !important;
            max-width: 100% !important;
            margin: 0 !important;
        }
        body.coder-mode .top-nav {
            padding: 0 8px;
            height: 40px;
            justify-content: space-between;
            gap: 4px;
        }
        body.coder-mode .top-nav .custom-model-dropdown {
            margin: 0;
        }
        body.coder-mode .top-nav .model-trigger {
            padding: 6px 10px; /* 2026-08-01 与写作模式一致：不再压缩到 12px/2px 8px */
            font-size: 15px;
        }
        body.coder-mode .new-chat-top-btn {
            display: none; /* 空间有限，隐藏顶部新建按钮 */
        }
        body.coder-mode .content-wrapper {
            padding-top: 0 !important;  /* top-nav 是 absolute，padding 移到子元素 */
        }
        body.coder-mode .chat-container {
            padding: 12px 12px 12px;  /* 顶部 top-nav 已占文档流（relative），无需额外留白 */
            padding-right: 5px;
        }
        body.coder-mode .message {
            max-width: 95%;
            font-size: 14px;
        }
        body.coder-mode .message-content {
            padding: 10px 12px;
            max-width: 100% !important;
        }
        /* Coder 模式 AI 回复文字协调缩小 */
        body.coder-mode .markdown-body { font-size: 13px; line-height: 1.55; }
        body.coder-mode .markdown-body p { font-size: 13px; }
        body.coder-mode .markdown-body li { font-size: 13px; }
        body.coder-mode .markdown-body h1 { font-size: 18px; }
        body.coder-mode .markdown-body h2 { font-size: 15px; }
        body.coder-mode .markdown-body h3 { font-size: 14px; }
        body.coder-mode .markdown-body code { font-size: 12px; }
        body.coder-mode .markdown-body pre { font-size: 12px; }

        /* 使用说明模态框 */
        .manual-modal {
            display: none;
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background: rgba(0,0,0,0.5);
            z-index: 3000;
            justify-content: center;
            align-items: center;
            backdrop-filter: blur(4px);
        }
        /* 文本审查增强样式 */
        .review-layout {
            display: flex;
            height: 520px;
            overflow: hidden;
            background: #ffffff;
            border-radius: 0 0 16px 16px;
        }
        .review-sidebar {
            width: 220px;
            border-right: 1px solid var(--border-color);
            background: #ffffff;
            display: flex;
            flex-direction: column;
            border-radius: 16px 0 0 16px;
        }
        .review-skill-list {
            flex: 1;
            overflow-y: auto;
            padding: 12px;
        }
        .review-skill-item {
            padding: 12px;
            border-radius: 12px;
            cursor: pointer;
            transition: all 0.2s;
            margin-bottom: 6px;
            border: 1px solid transparent;
            background: var(--bg-sidebar);
        }
        .review-skill-item:hover {
            background: var(--bg-hover);
            transform: translateY(-1px);
        }
        .review-skill-item.active {
            background: rgba(59, 130, 246, 0.08);
            color: var(--primary-color);
            border-color: rgba(59, 130, 246, 0.2);
            box-shadow: 0 2px 4px rgba(59, 130, 246, 0.05);
        }
        .review-skill-name {
            font-size: 13px;
            font-weight: 600;
            display: block;
            margin-bottom: 4px;
        }
        .review-skill-desc {
            font-size: 11px;
            color: var(--text-tertiary);
            line-height: 1.4;
        }
        .review-main {
            flex: 1;
            display: flex;
            flex-direction: column;
            padding: 24px;
            background: #ffffff;
        }
        .review-editor-header {
            display: flex;
            justify-content: space-between;
            align-items: center;
            margin-bottom: 16px;
        }
        .review-upload-zone {
            padding: 16px;
            border: 2px dashed var(--border-color);
            border-radius: 12px;
            text-align: center;
            cursor: pointer;
            transition: all 0.2s;
            margin-bottom: 20px;
            color: var(--text-secondary);
            font-size: 13px;
            background: #fcfdfe;
        }
        .review-upload-zone:hover {
            background: rgba(59, 130, 246, 0.02);
            border-color: var(--primary-color);
            color: var(--primary-color);
        }
        .review-footer {
            display: flex;
            justify-content: flex-end;
            gap: 12px;
            padding-top: 20px;
        }
        .manual-modal.active { display: flex; }
        .review-skill-group-title {
            font-size: 11px;
            text-transform: uppercase;
            letter-spacing: 0.08em;
            color: var(--text-tertiary);
            padding: 12px 12px 6px 16px;
            font-weight: 700;
        }
        .review-close-btn {
            background: transparent;
            border: none;
            color: var(--text-tertiary);
            cursor: pointer;
            padding: 4px;
            border-radius: 50%;
            display: flex;
            align-items: center;
            justify-content: center;
            transition: all 0.2s;
        }
        .review-close-btn:hover {
            background: var(--hover-bg);
            color: var(--error-color);
        }

        /* Input Shield Button & Popover */
        .quick-review-menu {
            position: absolute;
            bottom: calc(100% + 12px);
            left: 0;
            width: 240px;
            background: #ffffff;
            border-radius: 12px;
            box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1);
            border: 1px solid var(--border-color);
            z-index: 9999999;
            display: none;
            flex-direction: column;
            overflow: hidden;
            animation: popIn 0.2s cubic-bezier(0.16, 1, 0.3, 1);
        }
        @keyframes popIn {
            from { opacity: 0; transform: translateY(10px) scale(0.95); }
            to { opacity: 1; transform: translateY(0) scale(1); }
        }
        .quick-review-menu.active { display: flex; }
        .quick-review-header {
            padding: 12px 16px;
            font-size: 11px;
            font-weight: 700;
            text-transform: uppercase;
            letter-spacing: 0.05em;
            color: var(--text-tertiary);
            background: var(--bg-sidebar);
            border-bottom: 1px solid var(--border-color);
        }
        .quick-review-list {
            max-height: 300px;
            overflow-y: auto;
            padding: 6px;
        }
        .quick-review-item {
            padding: 10px 12px;
            border-radius: 8px;
            cursor: pointer;
            transition: all 0.2s;
            display: flex;
            align-items: center;
            gap: 10px;
            font-size: 13px;
            color: var(--text-secondary);
        }
        .quick-review-item:hover {
            background: var(--hover-bg);
            color: var(--primary-color);
        }
        .quick-review-item.selected {
            background: rgba(59, 130, 246, 0.08);
            color: var(--primary-color);
            font-weight: 600;
        }
        .quick-review-footer {
            padding: 8px;
            border-top: 1px solid var(--border-color);
            display: flex;
            flex-direction: column;
            gap: 4px;
        }
        .quick-review-action {
            width: 100%;
            padding: 8px;
            border: none;
            background: transparent;
            color: var(--text-secondary);
            font-size: 12px;
            cursor: pointer;
            border-radius: 6px;
            transition: 0.2s;
            text-align: left;
            display: flex;
            align-items: center;
            gap: 6px;
        }
        .quick-review-action:hover {
            background: var(--bg-sidebar);
            color: var(--primary-color);
        }

        body.writer-mode-active #review-popover-wrapper {
            display: block !important;
        }
        .manual-content {
            background: var(--bg-main);
            width: 90%;
            max-width: 700px;
            max-height: 85vh;
            border-radius: 20px;
            padding: 32px;
            overflow-y: auto;
            position: relative;
            box-shadow: 0 20px 50px rgba(0,0,0,0.2);
        }
        .manual-header {
            display: flex;
            justify-content: space-between;
            align-items: center;
            margin-bottom: 24px;
            border-bottom: 1px solid var(--border-color);
            padding-bottom: 16px;
        }
        .manual-title { font-size: 24px; font-weight: 700; color: var(--text-primary); }
        .manual-close { cursor: pointer; color: var(--text-tertiary); }
        .manual-section { margin-bottom: 24px; }
        .manual-section h3 { font-size: 18px; font-weight: 600; margin-bottom: 12px; color: var(--primary-color); }
        .manual-section p { font-size: 15px; color: var(--text-secondary); line-height: 1.6; margin-bottom: 8px; }
        .manual-section ul { padding-left: 20px; }
        .manual-section li { font-size: 14px; color: var(--text-secondary); margin-bottom: 6px; line-height: 1.5; }
        body.coder-mode #close-editor-btn { display: none; }
        body.coder-mode #ide-mode-tabs { display: flex !important; }
        body.coder-mode.chat-collapsed #expand-chat-btn { display: flex !important; }
        body.coder-mode .old-action-btn { display: none; }
        body.coder-mode #browser-toolbar { display: flex !important; }
        body.coder-mode #ide-fullscreen-btn { display: flex !important; }
        /* 电脑版：所有操作按钮直接展示，不折叠到三点菜单 */
        body.coder-mode #ide-refresh-btn { display: flex !important; }
        body.coder-mode #ide-copy-btn { display: flex !important; }
        body.coder-mode #ide-download-btn { display: flex !important; }
        body.coder-mode #ide-publish-btn { display: flex !important; }
        body.coder-mode #ide-more-btn { display: none !important; }
        body.coder-mode #ide-resume-btn { display: flex !important; }
        /* ★ 2026-09-10 老板指令（去重）：隐藏顶栏重复的「版本历史」按钮——桌面端用代码面板 tab「历史」，移动端用「更多」菜单里的「版本历史」（#ide-more-btn 手机端可见） */
        body.coder-mode #ide-history-btn { display: none !important; }
        body.coder-mode #ide-ref-btn { display: flex !important; }
        body.coder-mode #ide-save-btn { display: flex !important; }
        body.coder-mode #ide-undo-btn { display: flex !important; }
        body.coder-mode #ide-redo-btn { display: flex !important; }
        body.coder-mode #ide-close-coder-btn { display: flex !important; }
        body.coder-mode #coder-model-selector { display: block !important; }

        body.coder-mode #toggle-preview-btn { display: none; }
        .ide-mode-tabs { display: flex; gap: 4px; background: var(--hover-bg); padding: 4px; border-radius: 8px; }
        .ide-tab-btn { background: transparent; border: none; color: var(--text-tertiary); padding: 6px 12px; border-radius: 6px; cursor: pointer; display: flex; align-items: center; justify-content: center; gap: 6px; transition: 0.2s; }
        .ide-tab-btn:hover { color: var(--text-primary); }
        .ide-tab-btn.active { background: var(--bg-main); color: var(--text-primary); box-shadow: 0 1px 3px rgba(0,0,0,0.1); }
        .ide-tab-btn svg { width: 14px; height: 14px; }
        /* ★ 2026-08-27 老板指令：四个 tab 图标加文字（文件/代码/预览/历史）；窄屏自动回退纯图标防挤爆顶栏 */
        .ide-tab-btn .ide-tab-label { font-size: 12px; font-weight: 500; line-height: 1; white-space: nowrap; }
        @media (max-width: 1100px) {
            body.coder-mode .ide-tab-btn .ide-tab-label { display: none; }
            body.coder-mode .ide-mode-tabs { position: static !important; }
            body.coder-mode #ide-mode-tabs { gap: 2px; }
            body.coder-mode .ide-tab-btn { padding: 6px 8px; }
        }

        /* 编程模式模型选择器 */
        .coder-model-option { display: flex; align-items: center; gap: 8px; padding: 6px 8px; border-radius: 6px; cursor: pointer; font-size: 12px; color: var(--text-primary); transition: 0.15s; }
        .coder-model-option:hover { background: var(--hover-bg); }
        .coder-model-option.active { background: var(--hover-bg); color: var(--primary-color); }

        /* 文件树 Tab 导航 */
        .tree-tab-btn:hover { color: var(--text-primary) !important; }

        /* 文件树面板切换 */
        .tree-pane-hidden { display: none; }

        /* 分享按钮脉冲提示 */
        .pulse-hint { animation: pulseHint 1.5s ease-in-out infinite; }
        @keyframes pulseHint { 0%, 100% { transform: scale(1); opacity: 1; } 50% { transform: scale(1.15); opacity: 0.8; } }

        /* 技能/云盘树项目 */
        .tree-item { display: flex; align-items: center; gap: 6px; padding: 6px 8px; border-radius: 6px; cursor: pointer; font-size: 12px; color: var(--text-primary); transition: 0.15s; }
        .tree-item:hover { background: var(--hover-bg); }
        .tree-item-icon { font-size: 14px; flex-shrink: 0; width: 14px; height: 14px; display: flex; align-items: center; justify-content: center; }
        .tree-item-name { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
        .tree-item-action { opacity: 0; transition: 0.15s; font-size: 10px; color: var(--text-tertiary); flex-shrink: 0; display: flex; align-items: center; }
        .tree-item:hover .tree-item-action { opacity: 1; }


        .device-btn {
            background: transparent;
            border: none;
            padding: 4px 8px;
            cursor: pointer;
            color: var(--text-secondary);
            border-radius: 4px;
            display: flex;
            align-items: center;
            justify-content: center;
            transition: all 0.2s;
        }
        .device-btn:hover { color: var(--text-primary); }
        .device-btn.active {
            background: #fff;
            color: var(--primary-color);
            box-shadow: 0 1px 3px rgba(0,0,0,0.1);
        }
        [data-theme="dark"] .device-btn.active {
            background: #333;
        }

        /* Device Preview Container Styles */
        .preview-pane {
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            background: var(--hover-bg);
            transition: all 0.3s ease;
            position: relative;
        }
        .preview-container {
            width: 100%;
            height: 100%;
            transition: all 0.3s ease;
            box-shadow: 0 4px 20px rgba(0,0,0,0.05);
            background: #fff;
            border-radius: 0;
            overflow: hidden;
            display: flex;
            position: relative;
        }
        #editor-preview-console {
            position: absolute;
            bottom: 0;
            left: 0;
            right: 0;
            height: 40%;
            background: #1e1e1e;
            color: #d4d4d4;
            font-family: 'Fira Code', Consolas, Monaco, 'Courier New', monospace;
            font-size: 12px;
            padding: 10px;
            overflow-y: auto;
            border-top: 2px solid #333;
            display: none;
            z-index: 100;
        }
        .console-line { margin-bottom: 4px; border-bottom: 1px solid #333; padding-bottom: 4px; line-height: 1.4; white-space: pre-wrap; word-break: break-all; }
        .console-log { color: #85d7ff; }
        .console-error { color: #f48771; }
        .console-success { color: #89d185; }
        .console-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; border-bottom: 1px solid #444; padding-bottom: 4px; font-weight: 800; font-size: 10px; color: #888; }
        .preview-pane.device-mobile .preview-container {
            width: 375px;
            height: 812px;
            max-height: 90%;
            border-radius: 36px;
            border: 12px solid #222;
        }
        .preview-pane.device-tablet .preview-container {
            width: 768px;
            height: 1024px;
            max-height: 90%;
            max-width: 90%;
            border-radius: 24px;
            border: 12px solid #222;
        }
        .preview-pane.fullscreen-active {
            position: fixed !important;
            top: 0 !important;
            left: 0 !important;
            right: 0 !important;
            bottom: 0 !important;
            width: 100vw !important;
            height: 100vh !important;
            height: 100dvh !important;
            z-index: 99999 !important;
            display: flex !important;
            align-items: center !important;
            justify-content: center !important;
        }
        /* 全屏预览时隐藏编辑器顶栏和侧边栏 */
        .preview-pane.fullscreen-active ~ .editor-top-bar,
        body:has(.preview-pane.fullscreen-active) .editor-top-bar,
        .preview-pane.fullscreen-active ~ .editor-top-right,
        body:has(.preview-pane.fullscreen-active) .editor-top-right { display: none !important; }
        /* 全屏预览时隐藏顶部导航栏 */
        body:has(.preview-pane.fullscreen-active) .top-nav { display: none !important; }
        .preview-pane.fullscreen-active .preview-container {
            width: 100% !important;
            height: 100% !important;
            max-width: 100% !important;
            max-height: 100% !important;
            border-radius: 0 !important;
            border: none !important;
        }
        .preview-pane.fullscreen-active .preview-container {
            width: 100%;
            height: 100%;
            border-radius: 0;
            border: none;
            max-width: none;
            max-height: none;
        }


        .ide-action-btn { padding: 3px 10px; border-radius: 6px; font-size: 13px; font-weight: 500; cursor: pointer; display: flex; align-items: center; transition: 0.2s; }
        .ide-action-btn.secondary { background: var(--bg-main); border: 1px solid var(--border-color); color: var(--text-primary); }
        .ide-action-btn.secondary:hover { background: var(--hover-bg); }
        .ide-action-btn.primary { background: #1a1a1a; border: 1px solid #1a1a1a; color: #fff; margin-left: 8px; }
        .ide-action-btn.primary:hover { background: #333; }
        :root[data-theme="dark"] .ide-action-btn.primary { background: #fff; color: #000; border-color: #fff; }
        :root[data-theme="dark"] .ide-action-btn.primary:hover { background: #eee; }
        .ide-icon-btn { background: transparent !important; border: none !important; padding: 6px !important; cursor: pointer; color: var(--text-secondary); }
        .ide-icon-btn:hover { background: transparent !important; color: var(--text-primary); }

        .file-tree-pane { width: 220px; border-right: 1px solid var(--border-color); display: flex; flex-direction: column; background: var(--bg-sidebar); flex-shrink: 0; transition: width 0.3s; }
        .file-tree-pane.collapsed { width: 0; overflow: hidden; border-right: none; }
        .file-tree-header { display: flex; align-items: center; justify-content: space-between; padding: 12px 16px; }
        .file-tree-title { font-size: 14px; font-weight: 500; color: var(--text-primary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
        .file-tree-actions { display: flex; align-items: center; gap: 2px; }
        .file-tree-action-btn { background: transparent; border: none; color: var(--text-secondary); padding: 4px; cursor: pointer; border-radius: 6px; display: flex; align-items: center; justify-content: center; transition: 0.2s; }
        .file-tree-action-btn:hover { background: var(--hover-bg); color: var(--text-primary); }
        .file-tree-action-btn svg { width: 16px; height: 16px; }

        .file-add-menu { display: none; position: absolute; top: 100%; right: 0; margin-top: 4px; background: var(--bg-main); border: 1px solid var(--border-color); border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); z-index: 100; width: 180px; flex-direction: column; padding: 4px; }
        .file-add-menu.active { display: flex; }
        .file-add-menu-item { display: flex; align-items: center; gap: 8px; padding: 8px 12px; font-size: 13px; color: var(--text-primary); cursor: pointer; border-radius: 6px; transition: 0.2s; }
        .file-add-menu-item:hover { background: var(--hover-bg); }
        .file-add-menu-item svg { width: 16px; height: 16px; color: var(--text-secondary); }

        .file-search-container { display: none; padding: 8px; }
        .file-search-container.active { display: block; }
        .file-search-input { width: 100%; height: 38px; padding: 0 12px; border-radius: 10px; border: 1px solid var(--border-color); background: var(--bg-main); color: var(--text-primary); font-size: 13px; outline: none; box-sizing: border-box; }

        .file-tree-content { padding: 8px; overflow-y: auto; flex: 1; }
        /* ★ 2026-08-27 老板反馈「文件管理没有滚动条」：tree-pane-files 中间层未约束高度，
         flex 子项默认 min-height:auto 被内容撑破 → file-tree-content 的 overflow-y 失效。补 min-height:0+overflow */
        #tree-pane-files { display: flex; flex-direction: column; flex: 1; min-height: 0; overflow: hidden; }
        /* ★ 2026-08-27 修复：上条 ID 选择器优先级(1-0-0)压过 .tree-pane-hidden(class,0-1-0)，
           导致文件面板永远显示——切到技能/云盘 tab 文件内容仍堆在下面（老板实测）。
           补同等优先级隐藏规则，保持滚动条修复不变 */
        #tree-pane-files.tree-pane-hidden { display: none; }
        .file-item { display: flex; align-items: center; justify-content: space-between; padding: 6px 12px; font-size: 13px; color: var(--text-secondary); cursor: pointer; border-radius: 6px; margin-bottom: 2px; }
        .file-folder { display: flex; align-items: center; gap: 6px; padding: 6px 12px; font-size: 13px; color: var(--text-secondary); cursor: pointer; border-radius: 6px; margin-bottom: 2px; }
        /* ★ 2026-08-27 老板指令：选中文件夹高亮——新建/上传落点跟随 */
        .file-folder.folder-selected { background: rgba(59,130,246,.14); color: var(--text-primary); box-shadow: inset 2px 0 0 var(--primary-color,#3b82f6); }
        /* ★ 2026-08-16 文件夹操作按钮（删除）同文件行：hover 显示、靠右对齐 */
        .file-folder .file-item-actions { margin-left: auto; }
        .file-item-left { display: flex; align-items: center; gap: 6px; flex: 1; overflow: hidden; }
        .file-item-icon { width: 14px; height: 14px; flex-shrink: 0; display: flex; align-items: center; justify-content: center; }
        .file-item-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
        .file-item-actions { display: none; align-items: center; gap: 4px; }
        .file-item:hover .file-item-actions, .file-folder:hover .file-item-actions { display: flex; }
        .file-action-btn { background: transparent; border: none; color: var(--text-tertiary); padding: 2px; cursor: pointer; border-radius: 4px; display: flex; align-items: center; justify-content: center; }
        .file-action-btn:hover { color: var(--text-primary); background: var(--border-color); }
        .file-item:hover, .file-folder:hover { background: var(--hover-bg); color: var(--text-primary); }
        .file-item svg, .file-folder svg { width: 14px; height: 14px; color: var(--text-tertiary); flex-shrink: 0; }

        .file-item.active { background: var(--hover-bg); color: var(--text-primary); }
        .folder-content { display: none; }
        .folder-icon { transition: transform 0.2s; }

        .editor-tabs { display: flex; border-bottom: 1px solid var(--border-color); background: var(--bg-sidebar); overflow-x: auto; }
        .editor-tab { padding: 10px 20px; font-size: 13px; color: var(--text-secondary); cursor: pointer; display: flex; align-items: center; gap: 10px; border-right: 1px solid var(--border-color); background: var(--bg-sidebar); white-space: nowrap; }
        .editor-tab.active { background: var(--bg-main); color: var(--text-primary); border-bottom: 1px solid var(--bg-main); margin-bottom: -1px; }
        .close-tab { color: var(--text-tertiary); font-size: 16px; line-height: 1; margin-left: 4px; }
        .close-tab:hover { color: var(--text-primary); }

        .terminal-pane { height: 240px; border-top: 1px solid var(--border-color); display: flex; flex-direction: column; background: #1e1e1e; flex-shrink: 0; }
        .terminal-tabs { display: flex; border-bottom: 1px solid #333; background: #252526; }
        .term-tab { padding: 8px 20px; font-size: 12px; color: #969696; cursor: pointer; }
        .term-tab.active { color: #fff; border-bottom: 2px solid var(--primary-color); background: #1e1e1e; }
        .terminal-content { flex: 1; padding: 12px; font-family: 'Fira Code', monospace; font-size: 12px; color: #cccccc; overflow-y: auto; line-height: 1.5; }

        .cursor {
            display: inline-block;
            width: 8px;
            height: 15px;
            background: #4ade80;
            animation: blink 1s step-end infinite;
            vertical-align: middle;
        }
        @keyframes blink {
            from, to { opacity: 1; }
            50% { opacity: 0; }
        }

        /* 隐藏非 Coder 模式下的元素 */
        .editor-overlay:not(.coder-mode-active) .file-tree-pane,
        .editor-overlay:not(.coder-mode-active) .editor-tabs,
        .editor-overlay:not(.coder-mode-active) .terminal-pane {
            display: none;
        }
        .editor-overlay.coder-mode-active .file-tree-pane { display: flex; }
        .editor-overlay.coder-mode-active .editor-tabs { display: flex; }
        .editor-overlay.coder-mode-active .terminal-pane { display: flex; }

        .history-dropdown { position: absolute; top: 100%; left: 0; margin-top: 8px; width: 300px; background: var(--bg-main); border: 1px solid var(--border-color); border-radius: 12px; box-shadow: 0 10px 30px rgba(0,0,0,0.1); z-index: 3000; overflow: hidden; }
        .history-dropdown-header { padding: 16px; }
        .history-dropdown-title { font-size: 14px; font-weight: 600; color: var(--text-primary); margin-bottom: 4px; }
        .history-dropdown-subtitle { font-size: 12px; color: var(--text-tertiary); }
        .history-dropdown-list { max-height: 300px; overflow-y: auto; padding: 8px; }
        .history-dropdown-item { display: flex; align-items: center; justify-content: space-between; padding: 12px; border-radius: 8px; cursor: pointer; transition: 0.2s; }
        .history-dropdown-item:hover { background: var(--hover-bg); }
        .history-dropdown-item.active { background: var(--hover-bg); border-left: 3px solid var(--primary-color); }
        .history-item-name { font-size: 13px; font-weight: 500; color: var(--text-primary); margin-bottom: 4px; }
        .history-item-time { font-size: 11px; color: var(--text-tertiary); }
        .history-item-hash { font-family: var(--font-ui); font-size: 12px; color: var(--text-tertiary); background: var(--border-color); padding: 2px 6px; border-radius: 4px; }
        .custom-provider-group {
            margin-bottom: 15px;
        }
        .custom-provider-group label {
            display: block;
            margin-bottom: 5px;
            font-size: 13px;
            color: var(--text-secondary);
        }
        .custom-provider-group input {
            width: 100%;
            padding: 8px 12px;
            border: 1px solid var(--border-color);
            border-radius: 6px;
            background: transparent;
            color: var(--text-primary);
            box-sizing: border-box;
        }
        .custom-provider-group input:focus {
            border-color: #10a37f;
            outline: none;
            box-shadow: 0 0 0 2px rgba(16, 163, 127, 0.1);
        }
        .custom-provider-help {
            font-size: 12px;
            color: var(--text-tertiary);
            margin-top: 4px;
        }
        /* Custom Checkbox Slider */
        .switch input:checked + .slider {
            background-color: #10a37f;
        }
        .switch input:focus + .slider {
            box-shadow: 0 0 1px #10a37f;
        }
        .switch input:checked + .slider:before {
            transform: translateX(20px);
        }
        .slider.round:before {
            border-radius: 50%;
            position: absolute;
            content: "";
            height: 16px;
            width: 16px;
            left: 2px;
            bottom: 2px;
            background-color: white;
            transition: .4s;
        }
        .dynamic-list-container {
            display: flex;
            flex-direction: column;
            gap: 8px;
            margin-bottom: 8px;
        }
        .dynamic-list-row {
            display: flex;
            gap: 8px;
            align-items: center;
        }
        .dynamic-list-row input {
            flex: 1;
        }
        .remove-row-btn {
            background: transparent;
            border: none;
            color: var(--text-tertiary);
            cursor: pointer;
            padding: 4px;
            display: flex;
        }
        .remove-row-btn:hover {
            color: var(--danger-color, var(--error-color));
        }
        /* ===== 自定义模型能力开关 ===== */
        .dynamic-list-row.model-cap-row {
            flex-wrap: wrap;
        }
        .model-cap-toggles {
            display: flex;
            gap: 4px;
            flex-wrap: nowrap;
            flex-shrink: 0;
        }
        .model-cap-tag {
            display: inline-flex;
            align-items: center;
            padding: 3px 8px;
            border-radius: 12px;
            font-size: 10px;
            font-weight: 600;
            cursor: pointer;
            border: 1px solid var(--border-color);
            background: transparent;
            color: var(--text-tertiary);
            transition: all 0.15s;
            user-select: none;
            white-space: nowrap;
        }
        .model-cap-tag.on {
            background: var(--cap-color, var(--primary-color));
            color: #fff;
            border-color: var(--cap-color, var(--primary-color));
        }
        .model-cap-tag:hover {
            opacity: 0.8;
        }
        .add-row-btn {
            background: transparent;
            border: none;
            color: var(--text-secondary);
            font-size: 13px;
            cursor: pointer;
            padding: 4px 0;
            display: flex;
            align-items: center;
            gap: 4px;
        }
        .add-row-btn:hover {
            color: var(--text-primary);
        }
        .cp-list-item {
            display: flex;
            align-items: center;
            justify-content: space-between;
            padding: 12px;
            border: 1px solid var(--border-color);
            border-radius: 8px;
            margin-bottom: 10px;
            background: var(--bg-color);
        }
        .cp-list-info {
            display: flex;
            flex-direction: column;
            gap: 4px;
        }
        .cp-list-name {
            font-size: 14px;
            font-weight: 500;
            color: var(--text-primary);
        }
        .cp-list-url {
            font-size: 12px;
            color: var(--text-tertiary);
        }
        .cp-list-actions {
            display: flex;
            gap: 8px;
        }
        .cp-action-btn {
            background: transparent;
            border: 1px solid var(--border-color);
            border-radius: 6px;
            padding: 6px 10px;
            font-size: 12px;
            color: var(--text-secondary);
            cursor: pointer;
            transition: all 0.2s;
        }
        .cp-action-btn:hover {
            background: var(--hover-bg);
            color: var(--text-primary);
        }
        .cp-action-btn.danger:hover {
            border-color: rgba(239, 68, 68, 0.3);
            color: var(--error-color);
            background: rgba(239, 68, 68, 0.05);
        }

        /* ==================== 移动端/平板端系统化适配 (全面优化) ==================== */

        /* P0修复: iOS状态栏透明遮罩 - 保持状态栏透明以统一页面风格 */
        @supports (padding-top: env(safe-area-inset-top)) {
            .main-content::before {
                content: '';
                position: fixed;
                top: 0;
                left: 0;
                right: 0;
                height: env(safe-area-inset-top);
                background: transparent;
                z-index: 90;
                pointer-events: none;
            }
        }
        :root[data-theme="light"] .main-content::before {
            background: transparent !important;
        }
        :root[data-theme="dark"] .main-content::before {
            background: transparent !important;
        }

        /* ★ P1修复: 防止双击缩放 - 仅应用于交互元素,不禁止画布手势 */
        button, a, .nav-item, .model-item, .history-item, .model-trigger,
        .input-box-wrapper, .sidebar, .settings-item, .user-profile-card,
        .section-header, .collapse-btn, .close-sidebar-btn, .mobile-overlay,
        .modal-overlay, .modal-content, .form-group input, .captcha-row img,
        .btn-submit-full, .logout-btn-subtle, .login-btn, .new-chat-btn,
        .scroll-to-bottom-btn, .attach-btn, .send-btn, .writing-mode-btn,
        .input-write-btn, .canvas-top-bar button, .ai-tool-btn,
        .user-menu-item, .menu-item, .model-expand-btn, .claim-discount-btn,
        .history-item-wrapper, .more-btn, .close-modal-btn, .search-input-wrapper,
        .sidebar-search-container button, .captcha-row button {
            touch-action: manipulation;
        }

        /* 交互元素触摸优化 */
        button, a, .nav-item, .model-item, .history-item {
            -webkit-touch-callout: none;
            -webkit-tap-highlight-color: transparent;
        }

        /* ★ P0修复: 聊天消息允许文本选择 (覆盖全局限制) */
        .message-content, .message-content * {
            -webkit-user-select: text;
            user-select: text;
            -webkit-touch-callout: default;
        }
        .message-content pre, .message-content code {
            -webkit-user-select: text;
            user-select: text;
        }

        /* ★ P0修复: 画布覆盖层允许所有手势 */
        #canvas-overlay, #canvas-overlay iframe {
            touch-action: none !important;
            overscroll-behavior: none !important;
            overscroll-behavior-x: none !important;
            overscroll-behavior-y: none !important;
        }
        /* 画布覆盖层的交互按钮恢复 manipulation */
        #canvas-overlay button, .canvas-top-bar button, .ai-tool-btn {
            touch-action: manipulation !important;
        }

        /* P0修复: 全局阻止弹性滚动和下拉刷新 (所有设备) */
        body {
            overscroll-behavior: none;
            overscroll-behavior-x: none;
            overscroll-behavior-y: none;
            /* 移除 position:fixed - 使用 overscroll-behavior 阻止弹性滚动和右滑返回 */
            -webkit-overflow-scrolling: touch;
            /* iOS 15.5+ 原生支持 overscroll-behavior，无需 fixed */
            position: relative;
            width: 100%;
            height: 100vh;
            height: 100dvh;
            overflow: hidden;
        }

        /* 滚动容器允许纵向滚动但阻止弹性效果和水平滑动 */
        .chat-container, .history-list, .model-list, .sidebar {
            -webkit-overflow-scrolling: touch;
            overscroll-behavior: contain;
            overscroll-behavior-x: none;
        }

        /* ==================== iOS 键盘优化 ==================== */
        /* 输入框获得焦点时不触发整页滚动（仅移动端生效；PC 聚焦字号保持 15px 不变，避免输入框被放大） */
        @media (max-width: 768px) {
            .message-input:focus, #message-input:focus, textarea:focus {
                /* 阻止 iOS 自动缩放 */
                font-size: 16px !important;
            }
        }
        /* 键盘弹出时固定底部输入栏 */
        .input-panel {
            position: sticky;
            bottom: 0;
            z-index: 50;
        }

        /* iOS 键盘弹起时的布局修复 (所有触摸设备) */
        /* ==================== 各尺寸设备专项优化 ==================== */

        /* 小屏手机 (iPhone SE 等) */
        /* 平板端优化 (iPad / Android 平板) */
        /* iPad Split View / Slide Over 适配 */
        /* 横屏模式优化 (所有设备) */
        /* 大屏 iPad Pro 优化 */
        /* ==================== P0-P2 移动端体验修复 ==================== */

        /* P0: 代码块操作按钮 ≥44px 触摸目标 (Apple HIG) */
        /* P0: 平板端也加大代码按钮 */
        /* P1: 模型菜单左偏移修正 - 小屏居中 */
        /* P1: 消息操作按钮移动端加大触摸目标 */
        /* P1: Toast 安全区适配 */
        /* P2: 滚动到底部按钮安全区适配 */
        /* P0: Coder模式移动端 - 底部Tab切换替代三栏布局 */
        /* 桌面端隐藏移动Coder切换栏 */
        /* P2: 侧边栏iOS返回手势冲突修复 - 使用overscroll-behavior-x */
        /* P2: 横屏模式更高效利用空间 */
        /* P1: 移动端写作模式全屏覆盖 */
        /* P2: 暗色模式下select/input原生控件样式 */
        /* 暗色模式下画布顶栏适配 */
        :root[data-theme="dark"] .canvas-top-bar {
            background: rgba(30, 30, 30, 0.92) !important;
            border-bottom-color: rgba(255,255,255,0.1) !important;
        }

        /* Agent Step Cards */
        .agent-step-card {
            background: var(--card-bg, #fff);
            border: 1px solid var(--border-color, #e5e7eb);
            border-radius: 12px;
            padding: 14px 16px;
            margin: 8px 0;
            transition: all 0.2s;
        }
        .agent-step-card:hover { box-shadow: 0 2px 8px rgba(0,0,0,0.06); }
        .agent-step-header {
            display: flex;
            align-items: center;
            gap: 8px;
            font-weight: 500;
            font-size: 14px;
        }
        .agent-step-icon { font-size: 16px; }
        .agent-step-title { flex: 1; color: var(--text-primary, #1f2937); }
        .agent-step-status { font-size: 14px; }
        .agent-step-desc {
            font-size: 12px;
            color: var(--text-secondary, #6b7280);
            margin-top: 6px;
            padding-left: 24px;
        }
        .agent-step-code {
            margin-top: 8px;
            background: var(--code-bg, #f3f4f6);
            border-radius: 8px;
            padding: 12px;
            font-size: 12px;
            overflow-x: auto;
            max-height: 200px;
        }
        .agent-step-actions {
            margin-top: 10px;
            display: flex;
            gap: 8px;
        }
        .agent-btn {
            padding: 6px 16px;
            border-radius: 8px;
            border: 1px solid var(--border-color, #e5e7eb);
            background: var(--card-bg, #fff);
            color: var(--text-primary, #1f2937);
            cursor: pointer;
            font-size: 13px;
            transition: all 0.15s;
        }
        .agent-btn:hover { background: var(--hover-bg, #f3f4f6); }
        .agent-btn.primary {
            background: var(--primary-color, var(--primary-color));
            color: #fff;
            border-color: transparent;
        }
        .agent-step-card[data-type="create"] { border-left: 3px solid #10b981; }
        .agent-step-card[data-type="modify"] { border-left: 3px solid #f59e0b; }
        .agent-step-card[data-type="analyze"] { border-left: 3px solid #6366f1; }
        .agent-step-card[data-type="command"] { border-left: 3px solid var(--error-color); }
        .agent-step-card[data-type="question"] { border-left: 3px solid #8b5cf6; }

        /* ==================== 合并后的响应式样式 ==================== */
        @media (max-width: 375px) {
            .model-menu {
                width: calc(100vw - 24px) !important;
                left: 50% !important;
                transform: translateX(-50%);
            }
            .input-box-wrapper { border-radius: 18px !important; }
        }
        @media (max-width: 768px) {
            /* 手机端应用中心 — 操作按钮默认显示（无hover） */
            .my-app-card-actions { opacity: 1 !important; }
            .app-card-actions-bar { opacity: 1 !important; }
            .my-app-card:hover { transform: none !important; box-shadow: none !important; }
            /* 手机端预览返回按钮 */
            body.coder-mode.mobile-pane-preview #preview-back-btn { display: flex !important; }
            .file-ref-cards { padding: 0 8px 4px; gap: 4px; }
            .file-ref-card { padding: 3px 8px; font-size: 11px; max-width: 160px; gap: 3px; }
            .file-ref-card .file-ref-icon { width: 12px; height: 12px; }
            .file-ref-card .file-ref-size { font-size: 10px; }
            .file-ref-card .file-ref-close { width: 14px; height: 14px; font-size: 12px; }

            .multi-response-container { padding: 8px; }
            .multi-response-grid { flex-direction: column !important; }
            .multi-response-body {
                font-size: 13px !important;
                padding: 10px 12px !important;
            }
            /* model-menu now uses bottom-sheet styles below */
            /* 手机端：菜单改为底部弹出面板 */
            .model-menu,
            .agent-selector-menu {
                position: fixed !important;
                left: 50% !important;
                top: 40px !important;
                transform: translateX(-50%) !important;
                z-index: 2147483646 !important;
                width: 90% !important;
                max-width: 400px !important;
                max-height: 80vh !important;
                border-radius: 16px !important;
                padding: 20px 16px !important;
                background: var(--bg-main) !important;
                border: 1px solid var(--border-color) !important;
                box-shadow: 0 10px 40px rgba(0,0,0,0.3) !important;
                /* 默认隐藏 */
                display: none;
            }
            .model-menu.active,
            .agent-selector-menu.show {
                display: flex;
                flex-direction: column;
            }
            /* 拖动条 */
            .model-menu::before,
            .agent-selector-menu::before {
                content: '';
                display: block;
                width: 36px;
                height: 4px;
                border-radius: 2px;
                background: var(--border-color);
                margin: -8px auto 16px;
                flex-shrink: 0;
            }
            .agent-selector-scroll { max-height: 50vh; }
            /* 手机端底部弹出遮罩 */
            .mobile-sheet-backdrop {
                display: none;
                position: fixed;
                inset: 0;
                background: rgba(0,0,0,0.4);
                z-index: 99999;
                opacity: 0;
                transition: opacity 0.3s;
            }
            .mobile-sheet-backdrop.active {
                display: block;
                opacity: 1;
            }
            .menu-header { display: none; }
            .input-panel {
                padding: 6px 10px 10px !important;
                padding-bottom: calc(10px + env(safe-area-inset-bottom, 0px)) !important;
                margin-bottom: 0 !important;
            }
            .input-box-wrapper {
                border-radius: 22px !important;
                padding: 2px 10px !important;
            }
            #message-input {
                font-size: 16px !important; /* 防止 iOS 自动缩放 */
                min-height: 24px;
                padding: 8px 0 !important;
                max-height: 120px !important;
            }
            .user-settings-dropdown {
                position: fixed !important;
                border-radius: 16px 16px 0 0 !important;
                max-height: 75vh !important;
                max-width: 100vw !important;
                padding: 12px;
                box-shadow: 0 -10px 30px rgba(0,0,0,0.15);
                bottom: 0 !important;
                left: 0 !important;
                right: 0 !important;
                overflow-y: auto !important;
                -webkit-overflow-scrolling: touch !important;
            }
            .user-profile-card.active .user-settings-dropdown { display: flex !important; animation: slideUpMobile 0.25s ease-out; }
            .settings-item {
                padding: 12px 14px;
                font-size: 14px;
                min-height: 44px;
            }
            .settings-item svg { width: 18px; height: 18px; }
            .about-header { padding: 10px 16px; }
            .about-main { padding: 0 16px 32px; }
            .about-hero { padding: 32px 0 24px; }
            .about-hero-title { font-size: 28px; }
            .about-card-grid { grid-template-columns: 1fr; }
            .about-intro-grid { grid-template-columns: 1fr; }
            .about-stats { gap: 20px; }
            .about-stat-value { font-size: 22px; }
            .about-feature-section-icon { font-size: 24px; }
            .about-feature-section-title { font-size: 16px; }
            .login-btn-primary {
                height: 30px;
                padding: 0 12px;
                font-size: 13px;
            }
            .sidebar-footer {
                border-top: none !important;
                padding-top: 4px !important;
            }
            .main-content {
                padding-top: env(safe-area-inset-top, 20px) !important;
                width: 100% !important;
                max-width: 100% !important;
                min-width: 100% !important;
                flex: 1 1 100% !important;
                position: relative !important;
                z-index: 1 !important;
                overflow: hidden !important;
            }
            .top-nav {
                padding: 0 10px !important;
                padding-top: calc(4px + env(safe-area-inset-top, 20px)) !important;
                height: 50px !important;
            }
            .content-wrapper { padding-top: calc(50px + env(safe-area-inset-top, 0px)) !important; }
            .top-right { gap: 4px !important; }
            .top-left { gap: 4px !important; }
            #login-btn {
                height: 28px !important;
                padding: 0 10px !important;
                font-size: 12px !important;
                margin-right: 4px !important;
            }
            .user-info-area { gap: 4px !important; }
            .username-display {
                font-size: 12px !important;
                max-width: 80px !important;
            }
            .logout-btn-subtle {
                font-size: 11px !important;
                padding: 2px 8px !important;
            }
            .user-profile-card { margin: 4px 4px calc(4px + var(--sab)) 4px !important; }
            .mobile-overlay.active { display: block; opacity: 1; }
            .app-grid {
                grid-template-columns: repeat(2, 1fr) !important;
                gap: 10px !important;
            }
            .app-card-thumb iframe { transform: scale(0.35) !important; }
            .app-page-header { padding: 12px 14px 0 !important; }
            .app-page-content { padding: 12px 14px !important; }
            .app-page-search { max-width: 100%; }
            .sidebar-theme-btn { display: flex; }
            .sidebar {
                position: fixed !important;
                inset: 0 80px 0 0 !important;
                width: 85vw !important;
                max-width: 320px !important;
                z-index: 10001 !important;
                transform: translateX(-100%) !important;
                margin-left: 0 !important;
                overscroll-behavior-x: contain;
                touch-action: pan-y;
            }
            .sidebar:not(.collapsed) { transform: translateX(0) !important; }
            .sidebar.collapsed {
                display: flex !important; /* 覆盖基础 CSS 的 display:none，移动端用 transform 动画 */
                transform: translateX(-100%) !important;
                margin-left: -85vw !important;
            }
            .mobile-overlay { z-index: 10000; }

            .send-btn {
                width: 38px !important;
                height: 38px !important;
                border-radius: 50% !important;
                flex-shrink: 0 !important;
                flex-grow: 0 !important;
                aspect-ratio: 1 !important;
            }
            .send-btn-wrapper {
                flex-shrink: 0 !important;
                flex-grow: 0 !important;
            }
            .input-tools-right {
                flex-shrink: 0 !important;
                flex-grow: 0 !important;
            }
            .attach-btn {
                width: 40px !important;
                height: 40px !important;
                border-radius: 10px !important;
                flex-shrink: 0 !important;
                flex-grow: 0 !important;
                aspect-ratio: auto !important;
            }
            .toggle-sidebar-btn {
                width: 40px !important;
                height: 40px !important;
                border-radius: 8px !important;
                flex-shrink: 0 !important;
                flex-grow: 0 !important;
            }
            .model-trigger {
                border-radius: 8px !important;
                flex-shrink: 0 !important;
                flex-grow: 0 !important;
                font-size: 13px; font-weight: 500; padding: 6px 10px;
            }
            .message-row { padding: 8px 0 !important; }
            .code-wrapper { margin: 12px 0; }
            .chat-container { padding-bottom: 60px; }
            #profile-modal .modal-content {
                max-width: 100%;
                border-radius: 16px 16px 0 0;
                margin: auto 0 0 0;
                max-height: 90vh;
            }
            #profile-modal .modal-body { max-height: 70vh; }
            #profile-modal .modal-footer button { flex: 1; }
            #profile-modal .modal-footer {
                padding: 12px 16px calc(12px + var(--sab));
                gap: 12px;
            }
            #profile-modal .btn-cancel, #profile-modal .btn-save {
                padding: 14px 20px !important;
                font-size: 15px !important;
                text-align: center;
            }
            .api-key-link, #theme-toggle-btn { display: none !important; }
            .model-name-display { display: none !important; }
            .input-tools-left { gap: 2px !important; }
            .think-switch-btn, .search-switch-btn {
                padding: 0 !important;
                margin: 0 !important;
                min-width: unset !important;
                width: 34px !important;
                height: 34px !important;
                border: none !important;
                background: transparent !important;
                border-radius: 50% !important;
            }
            .font-switch-btn, .review-guard-btn { display: none !important; }
            /* ★ 2026-08-09 手机版 Agent 按钮显示在 +号右边、放大镜左边（老板指令：左下角按钮把 agent 移到 + 右边、放大镜左边） */
            #agent-toggle-btn { display: flex !important; }
            /* ★ 2026-08-10 手机版思考按钮折叠进「更多工具」菜单（老板指令：只折叠思考模式，搜索/斜杠保留） */
            .input-tools-left .think-switch-btn { display: none !important; }
            .mobile-more-tools-wrapper { display: block !important; }
            /* #coder-mode-btn — 移动端已启用 */

            /* 手机端 Coder 模式编辑器 — 已启用 */
            body.coder-mode #editor-overlay,
            body.coder-mode #editor-overlay.active,
            body.coder-mode #editor-overlay.coder-mode-active,
            body.coder-mode .editor-overlay,
            body.coder-mode .editor-overlay.active,
            body.coder-mode .editor-overlay.coder-mode-active {
                display: flex !important;
                visibility: visible !important;
                opacity: 1 !important;
                pointer-events: auto !important;
                position: fixed !important;
                left: 0 !important;
                top: 0 !important;
                width: 100vw !important;
                height: calc(100dvh - 50px - env(safe-area-inset-bottom, 0px)) !important;
                overflow: hidden !important;
                z-index: 2500 !important;
                flex-direction: column !important;
            }
            body.coder-mode #collapse-chat-btn { display: none !important; }
            .mobile-more-menu {
                display: none;
                position: absolute;
                bottom: calc(100% + 12px);
                left: -8px;
                background: var(--bg-main);
                border: 1px solid var(--border-color);
                border-radius: 14px;
                box-shadow: 0 4px 20px rgba(0,0,0,0.12);
                padding: 6px;
                z-index: 1000;
                min-width: 160px;
                flex-direction: column;
                gap: 2px;
            }
            .mobile-more-menu.show { display: flex; }
            .mobile-more-item {
                display: flex;
                align-items: center;
                gap: 10px;
                padding: 10px 14px;
                border-radius: 10px;
                font-size: 14px;
                color: var(--text-primary);
                cursor: pointer;
                transition: background 0.15s;
            }
            .mobile-more-item:hover, .mobile-more-item:active { background: var(--hover-bg); }
            .assistant-avatar { display: none !important; }
            .assistant-row .message-content {
                padding-left: 0 !important;
                margin-left: 0 !important;
            }
            #input-write-btn.active {
                background: rgba(59, 130, 246, 0.1) !important;
                color: var(--primary-color) !important;
            }
            .quick-review-menu {
                width: 280px !important;
                left: 50% !important;
                transform: translateX(-50%) !important;
                bottom: calc(100% + 16px) !important;
            }
            .review-layout {
                flex-direction: column !important;
                height: auto !important;
                max-height: calc(85vh - 60px) !important;
                overflow-y: auto !important;
            }
            .review-sidebar {
                width: 100% !important;
                height: 120px !important;
                border-right: none !important;
                border-bottom: 1px solid var(--border-color) !important;
                border-radius: 16px 16px 0 0 !important;
                flex-shrink: 0 !important;
            }
            .review-main {
                padding: 16px 12px 24px 12px !important;
                flex: none !important;
                height: auto !important;
            }
            .review-upload-zone {
                padding: 10px !important;
                margin-bottom: 10px !important;
            }
            .review-upload-zone svg { width: 18px!important; height: 18px!important; margin-bottom: 2px!important; }
            .review-upload-zone div { font-size: 12px!important; }
            #review-rules-input {
                padding: 12px !important;
                min-height: 120px !important;
                flex: none !important;
            }
            .review-footer { margin-top: 12px !important; }
            .review-footer button {
                padding: 0 16px !important;
                font-size: 13px !important;
                height: 38px !important;
            }
            .review-modal .manual-content {
                width: 95% !important;
                padding: 0 !important;
            }
            .writer-tools-toolbar {
                top: auto !important;
                z-index: 1 !important;
                width: 85% !important;
                max-width: 100vw !important;
                overflow: visible !important; /* Extremely important for dropdown to show */
                border: none !important;
                box-shadow: none !important;
                background: transparent !important;
                padding: 0 !important;
                gap: 2px !important;
                justify-content: center !important;
                flex-wrap: nowrap !important;
                bottom: 100% !important; /* Move it closer to the input box */
                margin-bottom: 8px !important;
            }
            .writer-tool-group { flex-shrink: 0; }
            .writer-dropdown-menu {
                bottom: calc(100% + 5px) !important; /* Bring tighter towards the button on mobile */
                width: max-content !important;
                max-width: none !important;
                left: 50% !important;
                transform: translateX(-50%) !important;
            }
            .writer-tool-btn {
                padding: 4px 6px !important;
                font-size: 13px !important;
                white-space: nowrap !important;
                border: none !important;
                background: transparent !important;
                box-shadow: none !important;
                color: var(--text-primary) !important;
                display: flex !important;
                align-items: center !important;
                gap: 4px !important;
            }
            .writer-tool-btn span { white-space: nowrap !important; }
            .writer-tool-btn svg { width: 14px !important; height: 14px !important; }
            .review-sidebar > div:first-child { display: none !important; /* 手机端暂时隐藏侧边栏的单独新建按钮以腾出位置排满标签，可以通过主界面外部添加，或者缩为一个图标 */ }
            .review-skill-group-title { display: none !important; }
            .review-skill-list {
                display: flex !important;
                flex-wrap: wrap !important;
                gap: 6px !important;
                padding: 12px !important;
                align-content: flex-start !important;
            }
            .review-skill-item {
                padding: 6px 12px !important;
                border-radius: 16px !important;
                margin-bottom: 0 !important;
                width: auto !important;
                display: inline-flex !important;
                align-items: center !important;
            }
            .review-skill-name {
                margin-bottom: 0 !important;
                font-size: 13px !important;
                white-space: nowrap !important;
            }
            .review-skill-desc { display: none !important; }
            .scroll-btn {
                left: auto !important;
                right: 12px !important;
                transform: none !important;
                z-index: 1000 !important; /* 调整层级到最前 */
                bottom: calc(100% + 16px + var(--sab));
                width: 36px;
                height: 36px;
            }
            .message-row.user-row .bubble {
                font-size: 14px !important;
                background-color: var(--primary-color) !important;
                color: #ffffff !important;
                padding: 10px 14px !important;
            }
            .markdown-body { font-size: 14px !important; }
            .welcome-text h1 { font-size: 20px !important; }
            .welcome-text p { font-size: 14px !important; }
            .welcome-logo { width: 60px !important; height: 60px !important; }
            .nav-item {
                font-size: 13px !important; padding: 8px 10px !important;
                padding: 12px 10px;
            }
            .user-name-text { font-size: 13px !important; }
            .user-plan-text { font-size: 11px !important; }
            .message-row.user-row .bubble .user-text-content,
            .message-row.user-row .bubble .markdown-body,
            .message-row.user-row .bubble .markdown-body p { color: #ffffff !important; }
            .message-row.user-row .bubble .markdown-body a {
                color: #bfdbfe !important;
                text-decoration: underline !important;
            }
            .message-row.user-row .bubble .markdown-body code {
                background: rgba(255,255,255,0.18) !important;
                color: #e0e7ff !important;
                padding: 1px 5px;
                border-radius: 4px;
            }
            .message-row.user-row .bubble .markdown-body pre code {
                background: rgba(0,0,0,0.2) !important;
                color: #f0f0f0 !important;
                display: block;
                padding: 8px;
            }
            .assistant-row .action-bar {
                display: flex !important;
                opacity: 1 !important;
                visibility: visible !important;
                gap: 5px !important;
                margin-top: 8px !important;
                align-items: center !important;
            }
            .assistant-row .action-bar .action-btn {
                width: 30px !important; /* 进一步优化紧凑型图标布局 */
                height: 28px !important;
                background: transparent !important;
                border: none !important;
                color: var(--text-tertiary) !important;
                opacity: 0.8;
                padding: 4px !important; /* 减小内边距，使图标间距感更接近视觉 5px */
            }
            .assistant-row .msg-footer {
                margin-left: 0 !important;
                gap: 5px !important;
            }
            .assistant-row .msg-footer-item {
                gap: 5px !important; /* 统一所有图标与元素间距为5px */
                min-width: 40px !important;
                min-height: 38px !important;
                padding: 6px !important;
            }
            .user-row .action-bar { display: none !important; }
            .model-trigger .chevron-icon { width: 11px; height: 11px; stroke-width: 1.5; }
            .model-selector {
                font-size: 15px !important;
                padding: 6px 24px 6px 8px !important;
            }
            .user-profile { padding: 12px 10px; }
            .history-item-wrapper .nav-item {
                position: relative;
                z-index: 2;
                transition: transform 0.25s ease;
                background: var(--bg-sidebar);
                width: 100%;
            }
            .history-item-wrapper .history-item-actions {
                display: flex !important; /* 强制预渲染以确保滑动立现 */
                position: absolute;
                right: 0;
                top: 0;
                bottom: 0;
                width: 80px;
                height: 100%;
                background-color: var(--error-color) !important; /* 大红色背景 */
                color: #ffffff !important;
                border-radius: 0 8px 8px 0;
                z-index: 1;
                justify-content: center;
                align-items: center;
                border: none;
                opacity: 0;
                transition: opacity 0.1s;
            }
            .history-item-wrapper .history-item-actions .action-icon-btn { color: #fff; width: 30px; }
            .history-item-wrapper .history-item-actions .action-icon-btn:hover { background: transparent; }
            .history-item-wrapper .history-item-actions svg { width: 16px; height: 16px; stroke: #ffffff !important; }
            .history-item-wrapper.swiped .nav-item { transform: translateX(-80px); }
            .history-item-wrapper.swiped .history-item-actions { opacity: 1; /* 滑动后清晰呈现 */; }
            .archive-item {
                display: flex;
                justify-content: space-between;
                align-items: center;
                padding: 12px 16px;
                background: var(--bg-secondary);
                border-radius: 8px;
                margin-bottom: 10px;
                transition: background 0.2s;
            }
            .archive-item:hover { background: var(--bg-hover); }
            .archive-item-info {
                flex: 1;
                overflow: hidden;
            }
            .archive-item-title {
                font-weight: 500;
                color: var(--text-primary);
                margin-bottom: 4px;
                white-space: nowrap;
                overflow: hidden;
                text-overflow: ellipsis;
            }
            .archive-item-date {
                font-size: 12px;
                color: var(--text-secondary);
            }
            .archive-item-actions {
                display: flex;
                gap: 8px;
                margin-left: 16px;
            }
            .archive-action-btn {
                background: transparent;
                border: none;
                color: var(--text-secondary);
                cursor: pointer;
                padding: 6px;
                border-radius: 6px;
                transition: all 0.2s;
                display: flex;
                align-items: center;
                justify-content: center;
            }
            .archive-action-btn:hover {
                background: var(--bg-hover);
                color: var(--primary-color);
            }
            .archive-action-btn.delete-btn:hover { color: var(--error-color); }
            #archive-list {
                max-height: 400px;
                overflow-y: auto;
                padding-right: 4px;
            }
            #archive-list::-webkit-scrollbar { width: 4px; }
            #archive-list::-webkit-scrollbar-thumb {
                background: var(--border-color);
                border-radius: 2px;
            }
            .sidebar-header, .sidebar-nav { transition: transform 0.3s ease, opacity 0.3s ease, margin-top 0.3s ease; }
            .sidebar.header-hidden .sidebar-header {
                transform: translateY(-20px);
                opacity: 0;
                pointer-events: none;
                margin-top: -40px;
                height: 0;
                margin-bottom: 0;
                padding: 0;
                overflow: hidden;
            }
            .voice-selection-content {
                width: 100%;
                max-width: 100%;
                height: 100%;
                max-height: 100%;
                border-radius: 0;
            }
            .voice-selection-header h3 { margin: 0; }
            .voice-selection-footer {
                padding: 16px;
                position: fixed;
                bottom: 0;
                left: 0;
                right: 0;
                background: #fff;
                z-index: 10;
            }
            .voice-footer-btn-confirm { flex: 1; }
            .voice-footer-btn-cancel { display: none; }
            .voice-selection-header { padding: 16px 20px; }
            .voice-selection-search-bar { padding: 12px 20px; }
            .voice-list-container { padding: 0 20px 100px; }
            body.coder-mode #chat-editor-resizer { display: none !important; }
            .code-actions { gap: 6px; }
            .code-action-btn {
                width: 44px !important;
                height: 44px !important;
                border-radius: 10px !important;
            }
            .code-action-btn svg { width: 20px !important; height: 20px !important; }
            .code-header { padding: 8px 10px; }
            .code-lang { font-size: 12px; gap: 4px; }
            .code-lang svg { width: 12px; height: 12px; }
            .msg-footer { gap: 10px !important; }
            .msg-footer-item {
                min-width: 44px !important;
                min-height: 44px !important;
                display: flex !important;
                align-items: center !important;
                justify-content: center !important;
                gap: 6px !important;
            }
            .msg-footer-item svg { width: 18px !important; height: 18px !important; }
            #toast-message {
                /* 2026-08-01：位置统一由文件末尾规则控制（底部居中，老板要求不要顶部） */
                max-width: calc(100vw - 32px);
                white-space: normal;
                text-align: center;
            }
            /* ===== 手机端 Coder 模式 UI 重构 ===== */

            /* 默认：只显示代码编辑器面板，其他面板通过底部 tab 切换 */
            body.coder-mode .editor-main { flex: 1; min-height: 0; height: 0; }
            body.coder-mode .editor-overlay .file-tree-pane { display: none !important; }
            body.coder-mode .editor-overlay .editor-pane { flex: 1; width: 100% !important; height: 0 !important; }
            body.coder-mode .editor-overlay .preview-pane { display: none !important; }
            body.coder-mode .editor-overlay .terminal-pane { display: none !important; }
            body.coder-mode .editor-overlay .editor-tabs { display: flex !important; overflow-x: auto; -webkit-overflow-scrolling: touch; }
            body.coder-mode .editor-overlay .resizer { display: none !important; }
            body.coder-mode #chat-editor-resizer { display: none !important; }

            /* Tab 切换时面板显示控制 */
            body.coder-mode.mobile-pane-files .editor-overlay .file-tree-pane { display: flex !important; width: 100% !important; height: 100% !important; }
            body.coder-mode.mobile-pane-files .editor-overlay .editor-pane { display: none !important; }
            body.coder-mode.mobile-pane-files .editor-overlay .preview-pane { display: none !important; }
            body.coder-mode.mobile-pane-code .editor-overlay .editor-pane { display: flex !important; flex: 1 !important; width: 100% !important; height: 100% !important; }
            body.coder-mode.mobile-pane-code .editor-overlay .file-tree-pane { display: none !important; }
            body.coder-mode.mobile-pane-code .editor-overlay .preview-pane { display: none !important; }
            body.coder-mode.mobile-pane-preview .editor-overlay .preview-pane { display: flex !important; width: 100% !important; height: 100% !important; }
            body.coder-mode.mobile-pane-preview .editor-overlay .editor-pane { display: none !important; }
            body.coder-mode.mobile-pane-preview .editor-overlay .file-tree-pane { display: none !important; }
            body.coder-mode.mobile-pane-version .editor-overlay .editor-pane { display: none !important; }
            body.coder-mode.mobile-pane-version .editor-overlay .file-tree-pane { display: none !important; }
            body.coder-mode.mobile-pane-version .editor-overlay .preview-pane { display: none !important; }
            /* 对话页面时隐藏所有编辑器面板 */
            body.coder-mode.mobile-pane-chat .editor-overlay { display: none !important; }

            /* 顶部栏精简 */
            body.coder-mode .editor-top-bar {
                height: 44px !important;
                padding: 0 6px !important;
                margin-top: 0 !important;
                gap: 0;
            }
            body.coder-mode .editor-top-left { gap: 0 !important; flex: 1; min-width: 0; overflow-x: auto; overflow-y: hidden; scrollbar-width: none; }
            body.coder-mode .editor-top-left::-webkit-scrollbar { display: none; }
            body.coder-mode .editor-top-right { gap: 0 !important; flex-shrink: 0; margin-left: auto !important; display: flex !important; align-items: center !important; padding-right: 47px !important; }
            /* 手机端三点菜单按钮 — 覆盖桌面端 hidden */
            body.coder-mode #ide-more-btn {
                display: flex !important;
                flex-shrink: 0 !important;
                width: 36px !important; height: 36px !important;
                border-radius: 50% !important;
                min-width: 36px !important;
            }
            /* 手机端模型选择器 — 使用 coder-model-selector 统一 */
            body.coder-mode #coder-model-selector { display: block !important; }
            body.coder-mode .coder-model-btn { padding: 2px 6px !important; font-size: 10px !important; }
            #coder-model-selector-name { max-width: 50px !important; }
            /* 退回按钮 — 固定右上角 */
            body.coder-mode #ide-close-coder-btn {
                position: fixed !important;
                top: 6px !important;
                right: 6px !important;
                z-index: 2600 !important;
                width: 32px !important;
                height: 32px !important;
                border-radius: 50% !important;
                margin: 0 !important;
                flex-shrink: 0 !important;
            }
            /* 设备工具栏缩短 */
            body.coder-mode .browser-toolbar {
                max-width: 140px !important;
            }
            body.coder-mode #current-device-text {
                max-width: 36px !important;
            }
            /* 编程模式三点菜单面板 */
            .coder-more-panel-overlay {
                position: fixed; top: 0; left: 0; right: 0; bottom: 0;
                background: rgba(0,0,0,0.4); z-index: 9999;
            }
            .coder-more-panel-body {
                position: fixed; left: 10px; top: 50px;
                background: var(--bg-main); border-radius: 12px;
                box-shadow: 0 4px 24px rgba(0,0,0,0.15); z-index: 10000;
                min-width: 180px; overflow: hidden;
            }
            .coder-more-item {
                display: flex; align-items: center; gap: 10px;
                padding: 12px 16px; cursor: pointer; transition: background 0.15s;
                font-size: 14px; color: var(--text-primary);
            }
            .coder-more-item:hover, .coder-more-item:active { background: var(--hover-bg); }
            .coder-more-item svg { width: 16px; height: 16px; flex-shrink: 0; color: var(--text-secondary); }
            .coder-more-item span { flex: 1; }

            /* 手机端隐藏顶部栏中不需要的按钮 */
            body.coder-mode .editor-top-bar #toggle-preview-btn { display: none !important; }
            body.coder-mode .editor-top-bar #ide-mode-tabs,
            body.coder-mode #ide-mode-tabs { display: none !important; }
            body.coder-mode .editor-top-bar .browser-toolbar { display: flex !important; }
            body.coder-mode .editor-top-bar .old-action-btn { display: none !important; }
            body.coder-mode .editor-top-bar #expand-chat-btn { display: none !important; }
            body.coder-mode .editor-top-bar #editor-run-sandbox-btn { font-size: 12px !important; padding: 0 8px !important; }
            body.coder-mode .editor-top-bar .ide-tab-btn[title="使用说明"] { display: none !important; }

            /* 手机端隐藏电脑版直接展示的按钮（这些在手机端三点菜单中） */
            body.coder-mode #ide-undo-btn { display: none !important; }
            body.coder-mode #ide-redo-btn { display: none !important; }
            body.coder-mode #ide-refresh-btn { display: none !important; }
            body.coder-mode #ide-ref-btn { display: none !important; }
            body.coder-mode #ide-save-btn { display: none !important; }
            body.coder-mode #ide-download-btn { display: none !important; }
            body.coder-mode #ide-resume-btn { display: none !important; } /* 同类去重：「继续上次」在手机端由「更多」菜单提供 */

            /* 手机端右侧按钮更紧凑 */
            body.coder-mode .editor-top-right .ide-action-btn,
            body.coder-mode .editor-top-right .ide-icon-btn {
                min-width: 28px !important;
                width: 28px !important;
                height: 28px !important;
                padding: 0 !important;
                margin: 0 !important;
                border-radius: 4px !important;
            }
            body.coder-mode .editor-top-right .ide-action-btn svg,
            body.coder-mode .editor-top-right .ide-icon-btn svg {
                width: 14px !important;
                height: 14px !important;
            }
            /* 手机端隐藏使用说明（框内已有） */
            body.coder-mode .editor-top-right .ide-tab-btn { display: none !important; }

            /* 编辑器 textarea 字体和间距 — 手机端必须保证 textarea 与 highlight 完全一致 */
            body.coder-mode #editor-textarea {
                font-size: 16px !important;
                line-height: 26px !important;
                padding: 12px !important;
                font-family: 'Fira Code', Consolas, Monaco, 'Courier New', monospace !important;
                white-space: pre !important;
                word-wrap: normal !important;
                overflow-wrap: normal !important;
                tab-size: 4 !important;
                letter-spacing: normal !important;
                word-spacing: normal !important;
                -webkit-text-size-adjust: none !important;
                text-size-adjust: none !important;
                font-variant-ligatures: none !important;
                font-feature-settings: normal !important;
                border: none !important;
                margin: 0 !important;
                -webkit-appearance: none !important;
                appearance: none !important;
                -webkit-rtl-ordering: logical !important;
                resize: none !important;
                outline: none !important;
                -webkit-text-fill-color: initial !important;
                background: #f6f8fa !important;
                color: #24292e !important;
                text-rendering: optimizeSpeed !important;
            }
            body.coder-mode #editor-textarea::selection {
                background: rgba(59, 130, 246, 0.35) !important;
            }
            :root[data-theme="dark"] body.coder-mode #editor-textarea {
                -webkit-text-fill-color: #c9d1d9 !important;
                background: #0d1117 !important;
                color: #c9d1d9 !important;
                caret-color: #fff !important;
            }
            :root[data-theme="dark"] body.coder-mode #editor-textarea::selection {
                background: rgba(59, 130, 246, 0.4) !important;
            }
            /* 手机端代码高亮层与 textarea 必须像素级一致 */
            body.coder-mode #editor-highlight {
                font-size: 16px !important;
                line-height: 26px !important;
                padding: 12px !important;
                font-family: 'Fira Code', Consolas, Monaco, 'Courier New', monospace !important;
                white-space: pre !important;
                word-wrap: normal !important;
                overflow-wrap: normal !important;
                tab-size: 4 !important;
                letter-spacing: normal !important;
                word-spacing: normal !important;
                -webkit-text-size-adjust: none !important;
                text-size-adjust: none !important;
                font-variant-ligatures: none !important;
                font-feature-settings: normal !important;
                border: none !important;
                margin: 0 !important;
                text-rendering: optimizeSpeed !important;
            }
            /* code 元素继承 pre 的所有字体属性，不能有自己的 padding/margin */
            /* 手机端 hljs span 不能改变字体度量 */
            body.coder-mode #editor-highlight code span,
            body.coder-mode #editor-highlight code.hljs span {
                font-size: inherit !important;
                line-height: inherit !important;
                font-family: inherit !important;
                letter-spacing: inherit !important;
                word-spacing: inherit !important;
                font-variant-ligatures: inherit !important;
            }
            body.coder-mode #editor-highlight code,
            body.coder-mode #editor-highlight code.hljs {
                font-size: inherit !important;
                line-height: inherit !important;
                font-family: inherit !important;
                white-space: inherit !important;
                word-wrap: inherit !important;
                overflow-wrap: inherit !important;
                tab-size: inherit !important;
                letter-spacing: inherit !important;
                word-spacing: inherit !important;
                font-variant-ligatures: inherit !important;
                font-feature-settings: inherit !important;
                padding: 0 !important;
                margin: 0 !important;
                border: none !important;
                background: transparent !important;
            }
            body.coder-mode .editor-tabs {
                height: 36px !important;
            }
            body.coder-mode .editor-tab {
                padding: 4px 8px !important;
                font-size: 12px !important;
                min-width: auto !important;
                gap: 4px !important;
            }
            /* 手机端 tab 图标尺寸 */
            body.coder-mode .editor-tab > span:first-child {
                width: 12px !important;
                height: 12px !important;
                flex-shrink: 0;
            }
            body.coder-mode .editor-tab > span:first-child svg {
                width: 100% !important;
                height: 100% !important;
            }
            /* 手机端隐藏编辑器内浮动按钮（保存/复制），避免遮挡代码编辑区域 */
            body.coder-mode .editor-pane .editor-copy-btn { display: none !important; }
            /* 手机端 textarea-wrapper 不裁切内容，确保触摸事件正常传递 */
            body.coder-mode .editor-textarea-wrapper { overflow: visible !important; }
            /* 手机端 editor-container 确保不遮挡 textarea */
            body.coder-mode .editor-container { overflow: hidden !important; position: relative !important; }
            body.coder-mode .line-numbers {
                font-size: 11px !important;
                line-height: 26px !important;
                padding: 12px 4px !important;
                width: 28px !important;
                min-width: 28px !important;
                pointer-events: none !important;
                font-family: 'Fira Code', Consolas, Monaco, 'Courier New', monospace !important;
            }

            /* 底部切换栏 */
            body.coder-mode .coder-mobile-tabs {
                display: flex !important;
                position: fixed;
                bottom: 0;
                left: 0;
                right: 0;
                z-index: 2600;
                background: var(--bg-main, #fff);
                border-top: none;
                padding: 0;
                padding-bottom: env(safe-area-inset-bottom, 0px);
                height: calc(50px + env(safe-area-inset-bottom, 0px));
            }
            .coder-mobile-tab {
                flex: 1;
                display: flex;
                flex-direction: column;
                align-items: center;
                justify-content: center;
                gap: 2px;
                font-size: 11px;
                color: var(--text-secondary);
                background: transparent;
                border: none;
                cursor: pointer;
                transition: 0.2s;
                height: 50px;
                position: relative;
            }
            .coder-mobile-tab.active {
                color: var(--primary-color);
                font-weight: 600;
            }
            .coder-mobile-tab.active::after {
                content: '';
                position: absolute;
                top: 0;
                left: 50%;
                transform: translateX(-50%);
                width: 24px;
                height: 2px;
                background: var(--primary-color);
                border-radius: 1px;
            }
            .coder-mobile-tab svg { width: 20px; height: 20px; }

            /* 编辑器面板切换过渡动画 */
            body.coder-mode .editor-overlay .file-tree-pane,
            body.coder-mode .editor-overlay .editor-pane,
            body.coder-mode .editor-overlay .preview-pane {
                transition: opacity 0.2s ease, transform 0.2s ease;
            }
            body.coder-mode .editor-overlay .file-tree-pane[style*="display: flex"],
            body.coder-mode .editor-overlay .editor-pane[style*="display: flex"],
            body.coder-mode .editor-overlay .preview-pane[style*="display: flex"] {
                animation: fadeSlideIn 0.2s ease;
            }
            @keyframes fadeSlideIn {
                from { opacity: 0; transform: translateX(8px); }
                to { opacity: 1; transform: translateX(0); }
            }

            /* 手机端 Coder 模式：隐藏对话区和顶栏（输入框方案待定） */
            body.coder-mode .chat-container { display: none !important; }
            body.coder-mode .top-nav { display: none !important; }
            body.coder-mode .writer-tools-toolbar { display: none !important; }
            /* 手机端编程模式强制收起侧边栏 */
            body.coder-mode .sidebar { margin-left: -260px !important; position: fixed !important; z-index: 0 !important; }
            /* 手机端 Coder 模式输入框固定在底部 tab 栏上方 */
            /* 手机端编程模式：隐藏输入框区域 */
            /* 输入框由下方统一规则控制 */

            /* 文件树手机端全宽 */
            body.coder-mode .editor-overlay .file-tree-pane .file-tree-header { padding: 8px; }
            body.coder-mode .editor-overlay .file-tree-pane .file-tree-content { padding: 4px; }

            /* 手机端预览区 - 仅在预览 Tab 下显示设备尺寸模拟 */
            body.coder-mode.mobile-pane-preview .editor-overlay .preview-pane {
                display: flex !important;
                align-items: center !important;
                justify-content: center !important;
                background: #1a1a2e !important;
            }
            /* desktop 设备：全宽 */
            body.coder-mode.mobile-pane-preview .editor-overlay .preview-pane.device-desktop .preview-container,
            body.coder-mode.mobile-pane-preview .editor-overlay .preview-pane:not(.device-mobile):not(.device-tablet) .preview-container {
                width: 100% !important; height: 100% !important; border-radius: 0 !important; border: none !important;
            }
            /* 手机设备模拟：竖屏 375×812, 横屏 812×375 */
            body.coder-mode.mobile-pane-preview .editor-overlay .preview-pane.device-mobile .preview-container {
                width: 375px !important; height: 812px !important;
                max-width: 95vw !important; max-height: 85vh !important;
                border-radius: 36px !important; border: 8px solid #222 !important;
            }
            body.coder-mode.mobile-pane-preview .editor-overlay .preview-pane.device-mobile.landscape-preview .preview-container {
                width: 812px !important; height: 375px !important;
                max-width: 95vw !important; max-height: 85vh !important;
                border-radius: 28px !important; border: 8px solid #222 !important;
            }
            /* 平板设备模拟：竖屏 768×1024, 横屏 1024×768 */
            body.coder-mode.mobile-pane-preview .editor-overlay .preview-pane.device-tablet .preview-container {
                width: 768px !important; height: 1024px !important;
                max-width: 95vw !important; max-height: 85vh !important;
                border-radius: 24px !important; border: 8px solid #222 !important;
            }
            body.coder-mode.mobile-pane-preview .editor-overlay .preview-pane.device-tablet.landscape-preview .preview-container {
                width: 1024px !important; height: 768px !important;
                max-width: 95vw !important; max-height: 85vh !important;
                border-radius: 18px !important; border: 8px solid #222 !important;
            }

            /* 版本面板手机端适配 — 充满画布 */
            body.coder-mode .version-panel,
            body.coder-mode .editor-overlay .version-panel {
                position: fixed !important;
                left: 0 !important;
                right: 0 !important;
                top: 0 !important;
                bottom: 0 !important;
                width: 100% !important;
                max-width: 100% !important;
                max-height: 100vh !important;
                max-height: 100dvh !important;
                border-radius: 0 !important;
                border-left: none !important;
                z-index: 2700 !important;
                box-shadow: none !important;
                display: none !important;
                padding-top: env(safe-area-inset-top, 0px) !important;
            }
            body.coder-mode.mobile-pane-version .version-panel,
            body.coder-mode.mobile-pane-version .editor-overlay .version-panel {
                display: flex !important;
            }
            .version-panel-header { padding: 14px 16px !important; }
            .version-panel-title { font-size: 14px !important; }
            .version-panel-actions { padding: 8px 16px !important; }
            .version-save-btn { font-size: 13px !important; padding: 6px 14px !important; }
            .version-item { padding: 10px 16px !important; }
            .version-item-info { font-size: 12px !important; }
            .version-item-actions button { font-size: 11px !important; padding: 4px 8px !important; }
            /* 手机端版本卡片操作按钮：小屏下更紧凑 */
            .version-card-actions { gap: 6px !important; }
            .version-card-btn { font-size: 12px !important; padding: 4px 10px !important; }
            .version-card-btn svg { width: 13px !important; height: 13px !important; }
            .version-empty { padding: 24px 16px !important; }
            .version-empty p { font-size: 14px !important; }
            .version-empty span { font-size: 12px !important; }

            /* 对话面板手机端全屏 */

            .history-list {
                overscroll-behavior-x: contain;
                touch-action: pan-y;
            }
            body.writer-mode-active .writer-overlay {
                position: fixed !important;
                left: 0 !important;
                right: 0 !important;
                top: env(safe-area-inset-top, 0px) !important;
                bottom: env(safe-area-inset-bottom, 0px) !important;
                width: 100% !important;
                z-index: 1500 !important;
                padding-top: 0 !important;
            }
            body.writer-mode-active .main-content {
                width: 100vw !important;
                min-width: unset !important;
            }
            body.ppt-mode-active .main-content {
                display: none !important;
            }
            body.writer-mode-active .writer-top-bar {
                padding: 8px 12px;
                padding-top: calc(8px + env(safe-area-inset-top, 0px));
            }
            body.writer-mode-active .writer-close-btn {
                width: 44px !important;
                height: 44px !important;
                border-radius: 12px !important;
                background: var(--hover-bg) !important;
                display: flex !important;
                align-items: center;
                justify-content: center;
            }
            body.writer-mode-active .writer-close-btn svg {
                width: 22px !important;
                height: 22px !important;
            }
            body.writer-mode-active .writer-back-btn { display: flex !important; }
            body.writer-mode-active .writer-content-area {
                padding: 0 12px 48px;
                padding-bottom: calc(48px + env(safe-area-inset-bottom, 0px));
            }
            #model-plaza-modal {
                align-items: center !important;
                justify-content: center !important;
            }
            #model-plaza-modal .plaza-modal-wrapper {
                width: 100% !important;
                max-width: 100% !important;
                max-height: 100% !important;
                height: 100% !important;
                border-radius: 0 !important;
                position: relative !important;
                bottom: auto !important;
            }
            #plaza-vendor-tabs { display: none !important; }
            #plaza-vendor-select { display: block !important; }
            #model-plaza-modal .plaza-modal-wrapper > div:nth-child(2) {
                padding: 8px 14px;
                gap: 6px;
            }
            #plaza-search-input {
                font-size: 14px;
                padding: 8px 12px;
                border-radius: 8px;
            }
            #plaza-model-list {
                padding: 6px 14px 12px;
                max-height: none !important;
                flex: 1 !important;
                overflow-y: auto !important;
            }
            #model-plaza-modal .plaza-model-card {
                padding: 10px 12px;
                margin-bottom: 4px;
                min-height: 48px;
                border-radius: 8px;
                gap: 10px;
            }
            #model-plaza-modal .plaza-model-name { font-size: 14px; }
            #model-plaza-modal .plaza-model-card .plaza-check {
                width: 22px;
                height: 22px;
                border-radius: 6px;
            }
            #model-plaza-modal .plaza-modal-wrapper > div:first-child { padding: 12px 14px; }
            #model-plaza-modal .plaza-modal-wrapper > div:first-child h3 { font-size: 17px; }
            #model-plaza-modal .plaza-modal-wrapper > div:last-child { padding: 10px 14px; }
            #model-plaza-modal .plaza-modal-wrapper > div:last-child button:first-child {
                border-color: #ccc;
                color: #555;
            }
            #model-plaza-modal .plaza-modal-wrapper > div:last-child button:last-child {
                background: #111;
                color: #fff;
                font-weight: 600;
            }
            .app-page-title {
                font-size: 18px !important;
                margin-bottom: 10px !important;
            }
            .app-page-search input {
                padding: 9px 40px 9px 14px !important;
                font-size: 13px !important;
            }
            .app-tab {
                padding: 8px 14px !important;
                font-size: 13px !important;
            }
            .model-item { padding: 10px 12px !important; }
            .model-item-title { font-size: 13px !important; }
            .agent-step-card {
                padding: 10px 12px !important;
                margin: 6px 0 !important;
                border-radius: 10px !important;
            }
            .agent-step-header { font-size: 13px !important; }
            .agent-step-code {
                font-size: 11px !important;
                padding: 8px !important;
                max-height: 150px !important;
            }
            .agent-step-desc { font-size: 11px !important; }
            .message-bubble {
                max-width: 92vw !important;
                padding: 10px 14px !important;
                font-size: 14px !important;
            }
            .markdown-body pre {
                font-size: 12px !important;
                padding: 10px !important;
            }
            .markdown-body code { font-size: 12px !important; }
            .thinking-wrapper { margin: 4px 0 !important; }
            .thinking-header { padding: 8px 12px !important; }
            .thinking-content {
                padding: 8px 12px !important;
                font-size: 12px !important;
            }
            .cloud-asset-card { padding: 10px !important; }
            .cloud-asset-name { font-size: 12px !important; }
            .cloud-asset-meta { font-size: 10px !important; }
            .empty-welcome { padding: 20px 16px !important; }
            .welcome-title { font-size: 22px !important; }
            .welcome-desc { font-size: 14px !important; }
            .guess-questions { padding: 0 8px !important; }
            .guess-item {
                padding: 10px 12px !important;
                font-size: 13px !important;
            }
            .action-bar { gap: 2px !important; }
            .action-btn {
                width: 28px !important;
                height: 28px !important;
            }
            #writer-resizer { display: none !important; }
            .writer-overlay { display: none !important; }
            body.writer-mode-active .chat-container { max-width: 100% !important; }
            body.writer-mode-active .input-box-wrapper { margin-right: 0 !important; }
            body.coder-mode .coder-mobile-tabs { display: flex !important; }
            .cp-modal {
                width: 95vw !important;
                max-height: 85vh !important;
            }
            .cp-form-group input,
    .cp-form-group textarea { font-size: 14px !important; }
            /* 触摸友好最小高度 — 仅限导航和列表项，排除内联圆形按钮 */
            .nav-item, .model-item, .settings-item { min-height: 44px; }
            .message-content { padding: 0 16px !important; }
            .voice-overlay, .video-overlay {
                padding-left: 0 !important;
                padding-right: 0 !important;
                padding-bottom: 0 !important;
            }
            /* ★ v3：视频通话底部安全区占位（语音顶部由 .voice-top-bar 处理） */
            .video-overlay {
                padding-bottom: max(env(safe-area-inset-bottom, 0px), 12px) !important;
            }
            .voice-circle-wrap {
                width: 220px !important;
                height: 220px !important;
            }
            .voice-overlay .status-area { margin-top: 52px !important; } /* ★ v3：整体下移 30px */
            .modal-content {
                width: 92vw !important;
                padding: 24px !important;
                border-radius: 14px !important;
            }
            .modal-content h3 { font-size: 20px !important; }
            .modal-content input {
                font-size: 15px !important;
                padding: 12px 14px !important;
                min-height: 44px !important;
            }
            .btn-submit-full {
                min-height: 46px !important;
                font-size: 15px !important;
            }
            .meeting-container { padding: 0 8px !important; }
            .meeting-msg { max-width: 95% !important; }
            .meeting-msg .msg-avatar {
                width: 28px !important;
                height: 28px !important;
                font-size: 12px !important;
            }
            .meeting-msg .msg-content {
                font-size: 13px !important;
                padding: 6px 10px !important;
            }
            .meeting-input {
                font-size: 15px !important;
                padding: 8px 40px 8px 14px !important;
            }
            .multi-response-header {
                padding: 6px 10px !important;
                font-size: 12px !important;
            }
            .compare-models-bar {
                padding: 4px 8px 4px 18px !important;
                gap: 4px 6px !important;
                overflow-x: visible !important;
                flex-wrap: wrap !important;
                margin-top: 0 !important;
            }
            .compare-model-tag {
                font-size: 11px !important;
                padding: 3px 10px !important;
                min-height: auto !important;
                border-radius: 14px !important;
                white-space: nowrap !important;
                flex-shrink: 0 !important;
            }
            .action-btn svg {
                width: 14px !important;
                height: 14px !important;
            }
            body { overflow-x: hidden !important; }
            /* 仅页面根容器负责横向裁切。不要对所有后代强加 max-width，
               否则 fixed 弹层、下拉菜单、SVG/Canvas 与代码编辑器都会被误裁。 */
            #main-content-wrapper,
            .content-wrapper,
            .chat-container { max-width: 100vw; }
            #ace-editor *, #ace-editor div { max-width: none !important; }
            #editor-overlay,
    #editor-overlay.active,
    #editor-overlay.coder-mode-active,
    .editor-overlay,
    .editor-overlay.active,
    .editor-overlay.coder-mode-active {
                display: none !important;
                visibility: hidden !important;
                opacity: 0 !important;
                pointer-events: none !important;
                position: absolute !important;
                left: -9999px !important;
                top: -9999px !important;
                width: 0 !important;
                height: 0 !important;
                overflow: hidden !important;
                z-index: -1 !important;
            }
            /* 编程模式例外：显示编辑器 */
            body.coder-mode #editor-overlay,
            body.coder-mode #editor-overlay.active,
            body.coder-mode #editor-overlay.coder-mode-active,
            body.coder-mode .editor-overlay,
            body.coder-mode .editor-overlay.active,
            body.coder-mode .editor-overlay.coder-mode-active {
                display: flex !important;
                visibility: visible !important;
                opacity: 1 !important;
                pointer-events: auto !important;
                position: fixed !important;
                left: 0 !important;
                right: 0 !important;
                top: 0 !important;
                width: 100% !important;
                height: calc(100dvh - 50px - env(safe-area-inset-bottom, 0px)) !important;
                z-index: 1000 !important;
                overflow: hidden !important;
                flex-direction: column !important;
            }
            #writer-overlay,
    .writer-overlay,
    body.writer-mode-active #writer-overlay,
    body.writer-mode-active .writer-overlay,
    #ppt-overlay,
    .ppt-overlay,
    body.ppt-mode-active #ppt-overlay,
    body.ppt-mode-active .ppt-overlay {
                display: none !important;
                visibility: hidden !important;
                opacity: 0 !important;
                pointer-events: none !important;
            }
            /* 编程模式：隐藏对话区域 */
            body.coder-mode .main-content {
                display: none !important;
            }
            @keyframes slideUpMobile {
            from { opacity: 0; transform: translateY(100%); }
            to { opacity: 1; transform: translateY(0); }
            }

            /* ============================================= */
            /* ===  Gemini 风格移动端 UI 重构 (Phase 2)  === */
            /* ============================================= */

            /* --- 1. 顶栏：简洁三段式布局 --- */
            .top-nav {
                display: flex !important;
                align-items: center !important;
                justify-content: space-between !important;
                height: 48px !important;
                padding: 0 12px !important;
                padding-top: env(safe-area-inset-top, 0px) !important;
                background: transparent !important;
                background-color: transparent !important;
                border: 0 !important;
                box-shadow: none !important;
                backdrop-filter: none !important;
                -webkit-backdrop-filter: none !important;
                position: sticky !important;
                top: 0 !important;
                z-index: 100 !important;
            }
            .top-left {
                display: flex !important;
                align-items: center !important;
                gap: 4px !important;
                flex-shrink: 0 !important;
            }
            /* compare-bar 已移入 model-menu 内部 */
            .model-trigger {
                font-size: 15px !important;
                font-weight: 600 !important;
                padding: 6px 8px !important;
                border-radius: 8px !important;
                max-width: 180px !important;
                overflow: hidden !important;
                text-overflow: ellipsis !important;
                white-space: nowrap !important;
            }
            #current-model-display {
                font-size: 15px !important;
                max-width: 140px !important;
                overflow: hidden !important;
                text-overflow: ellipsis !important;
                white-space: nowrap !important;
                display: inline-block !important;
            }
            .model-trigger .chevron-icon {
                width: 12px !important;
                height: 12px !important;
                flex-shrink: 0 !important;
            }
            .top-right {
                display: flex !important;
                align-items: center !important;
                gap: 4px !important;
                flex-shrink: 0 !important;
            }
            .top-right .api-key-link,
            .top-right #theme-toggle-btn,
            .top-right #login-btn,
            .top-right #user-info-area,
            .top-right #collapse-chat-btn,
            .top-right #skills-top-actions,
            .top-right #kb-top-actions,
            .top-right #cloud-top-actions { display: none !important; }
            .new-chat-top-btn {
                display: flex !important;
                width: 40px !important;
                height: 40px !important;
                border-radius: 50% !important;
                align-items: center !important;
                justify-content: center !important;
                background: transparent !important;
                color: var(--text-secondary) !important;
            }
            .new-chat-top-btn svg {
                width: 20px !important;
                height: 20px !important;
            }

            /* --- 2. 输入框：Gemini 胶囊风格 --- */
            /* 圆形按钮保护：强制 1:1 宽高比，重置 min-height */
            .send-btn,
            .attach-btn,
            .mic-btn,
            .think-switch-btn,
            .search-switch-btn,
            .toggle-sidebar-btn,
            .new-chat-top-btn,
            .mobile-more-tools-btn,
            .action-btn {
                min-height: auto !important;
                aspect-ratio: auto !important;
                box-sizing: border-box !important;
            }
            .input-panel {
                padding: 6px 12px !important;
                padding-bottom: calc(8px + env(safe-area-inset-bottom, 0px)) !important;
                background: var(--bg-main) !important;
            }
            /* ★ 2026-08-01 输入框与 PC 配置统一（老板指令：手机版不要黑色边框，与 PC 一致） */
            .input-box-wrapper {
                border-radius: 26px !important;
                padding: 4px 12px !important;
                background: rgba(255, 255, 255, .42) !important;
                backdrop-filter: blur(20px) saturate(1.25) !important;
                -webkit-backdrop-filter: blur(20px) saturate(1.25) !important;
                border: 1px solid rgba(255, 255, 255, .65) !important;
                box-shadow: 0 8px 32px rgba(56, 73, 102, .08), inset 0 1px 0 rgba(255, 255, 255, .5) !important;
                transition: all .3s cubic-bezier(.16, 1, .3, 1) !important;
                max-width: 100% !important;
            }
            .input-box-wrapper:focus-within {
                background: rgba(255, 255, 255, .58) !important;
                border-color: rgba(255, 255, 255, 1) !important;
                box-shadow: 0 12px 40px rgba(56, 73, 102, .1584), inset 0 1px 0 rgba(255, 255, 255, .6) !important;
            }
            :root[data-theme="dark"] .input-box-wrapper {
                background: rgba(30, 41, 59, .52) !important;
                border-color: rgba(255, 255, 255, .08) !important;
                box-shadow: 0 8px 32px rgba(0, 0, 0, .2), inset 0 1px 0 rgba(255, 255, 255, .04) !important;
            }
            :root[data-theme="dark"] .input-box-wrapper:focus-within {
                background: rgba(30, 41, 59, .68) !important;
                border-color: rgba(255, 255, 255, .168) !important;
                box-shadow: 0 12px 40px rgba(0, 0, 0, .264), inset 0 1px 0 rgba(255, 255, 255, .04) !important;
            }
            #message-input {
                font-size: 16px !important;
                padding: 8px 0 !important;
                min-height: 24px !important;
                max-height: 120px !important;
                line-height: 1.5 !important;
            }
            .input-tools-row {
                margin-top: 2px !important;
                padding-bottom: 2px !important;
            }
            .input-tools-left {
                gap: 1px !important;
            }
            .attach-btn {
                width: 40px !important;
                height: 40px !important;
                border-radius: 10px !important;
                padding: 0 !important;
                display: flex !important;
                align-items: center !important;
                justify-content: center !important;
            }
            /* ★ 2026-08-04 手机审计修复：桌面壳专用「浏览本地文件」按钮必须隐藏
               （上方 .attach-btn{display:flex!important} 覆盖了其内联 display:none，
               导致手机浏览器上出现死按钮并把右侧发送按钮挤出屏幕 10px） */
            #local-file-btn { display: none !important; }
            .attach-btn svg {
                width: 18px !important;
                height: 18px !important;
            }
            .send-btn {
                width: 36px !important;
                height: 36px !important;
                border-radius: 50% !important;
                background: var(--primary-color) !important;
                transform: none !important;
                flex-shrink: 0 !important;
            }
            .send-btn:hover,
            .send-btn:active {
                transform: none !important;
            }
            .send-btn svg {
                width: 18px !important;
                height: 18px !important;
            }
            .mic-btn {
                width: 32px !important;
                height: 32px !important;
            }
            .mic-btn svg {
                width: 18px !important;
                height: 18px !important;
            }
            .think-switch-btn,
            .search-switch-btn {
                width: 32px !important;
                height: 32px !important;
            }
            .disclaimer-text {
                font-size: 11px !important;
                margin-top: 4px !important;
                padding: 0 12px !important;
            }

            /* --- 3. 消息气泡：Gemini 风格 --- */
            .message-row {
                padding: 10px 0 !important;
            }
            .message-content {
                padding: 0 16px !important;
                max-width: 100% !important;
                box-sizing: border-box !important;
            }
            .message-row.user-row .bubble {
                background-color: #1a73e8 !important;
                color: #ffffff !important;
                padding: 10px 16px !important;
                border-radius: 20px 20px 4px 20px !important;
                font-size: 15px !important;
                line-height: 1.5 !important;
                max-width: 85% !important;
                box-shadow: none !important;
            }
            .message-row.user-row .bubble,
            .message-row.user-row .bubble .user-text-content,
            .message-row.user-row .bubble .markdown-body,
            .message-row.user-row .bubble .markdown-body p,
            .message-row.user-row .bubble .markdown-body li,
            .message-row.user-row .bubble .markdown-body span {
                color: #ffffff !important;
            }
            .message-row.user-row .bubble .markdown-body a {
                color: #bfdbfe !important;
                text-decoration: underline !important;
            }
            .message-row.user-row .bubble .markdown-body code {
                background: rgba(255,255,255,0.15) !important;
                color: #e0e7ff !important;
                padding: 1px 5px !important;
                border-radius: 4px !important;
            }
            .message-row.user-row .bubble .markdown-body pre {
                background: rgba(0,0,0,0.2) !important;
            }
            .message-row.user-row .bubble .markdown-body pre code {
                color: #f0f0f0 !important;
                background: transparent !important;
            }
            .assistant-row .msg-body-wrapper {
                background: transparent !important;
                padding: 2px 4px 2px 20px !important;
                border: none !important;
                box-shadow: none !important;
            }
            .assistant-row .markdown-body {
                font-size: 15px !important;
                line-height: 1.75 !important;
                color: var(--text-primary) !important;
            }
            .assistant-row .markdown-body p {
                margin-bottom: 12px !important;
            }
            .assistant-avatar {
                display: none !important;
            }
            .assistant-row .action-bar {
                display: flex !important;
                opacity: 0.7 !important;
                gap: 4px !important;
                margin-top: 4px !important;
                padding: 0 !important;
            }
            .assistant-row .action-bar .action-btn {
                width: 28px !important;
                height: 28px !important;
                border-radius: 50% !important;
                padding: 4px !important;
                background: transparent !important;
            }
            .assistant-row .action-bar .action-btn svg {
                width: 14px !important;
                height: 14px !important;
            }
            .user-row .action-bar {
                display: none !important;
            }

            /* --- 4. 欢迎页：简洁问候 --- */
            .empty-welcome {
                padding: 40px 20px 20px !important;
                justify-content: flex-start !important;
                padding-top: calc(12vh) !important;
            }
            .welcome-v2 {
                text-align: center !important;
            }
            .welcome-v2-header {
                font-size: 22px !important;
                font-weight: 600 !important;
                margin-bottom: 8px !important;
            }
            .welcome-v2-desc {
                font-size: 14px !important;
                line-height: 1.6 !important;
                color: var(--text-secondary) !important;
                max-width: 300px !important;
                margin: 0 auto !important;
            }
            .sphere-avatar {
                width: 48px !important;
                height: 48px !important;
                margin-bottom: 16px !important;
            }

            /* --- 5. 对话区域优化 --- */
            .chat-container {
                padding: 8px 0 60px !important;
            }
            .content-wrapper {
                padding-top: calc(48px + env(safe-area-inset-top, 0px)) !important;
            }

            /* --- 6. 模型菜单：屏幕居中弹窗 --- */
            .model-menu {
                position: fixed !important;
                left: 50% !important;
                top: 40px !important;
                transform: translateX(-50%) !important;
                z-index: 2147483646 !important;
                width: 90% !important;
                max-width: 400px !important;
                max-height: 80vh !important;
                /* ★ 2026-08-15 修复：内容超高（模型列表展开等）时面板整体可滚动，底部不截断 */
                overflow-y: auto !important;
                -webkit-overflow-scrolling: touch;
                border-radius: 16px !important;
                padding: 20px 16px !important;
                background: var(--bg-main) !important;
                border: 1px solid var(--border-color) !important;
                box-shadow: 0 10px 40px rgba(0,0,0,0.3) !important;

                display: none;
            }
            .model-menu.active {
                display: flex;
                flex-direction: column;
            }
            .model-menu .menu-header {
                font-size: 16px !important;
                font-weight: 600 !important;
                padding: 12px 20px 8px !important;
                text-align: center !important;
            }
            .model-list {
                padding: 0 8px !important;
            }
            .model-item,
            .agent-selector-item {
                padding: 8px 12px !important;
                border-radius: 10px !important;
                min-height: 28px !important;
            }
            .model-expand-btn {
                padding: 8px !important;
                justify-content: center !important;
            }


            /* 隐藏悬浮输入按钮（手机端用原有输入框） */
            .compare-float-input,
            .compare-float-input.active,
            .compare-float-input.expanded {
                display: none !important;
            }

            /* 对比模式：输入框缩小 30%，对话区可滚动 */
            .multi-response-container.active ~ .input-panel #message-input {
                min-height: 18px !important;
                max-height: 60px !important;
                padding: 5px 0 !important;
            }
            .multi-response-container.active ~ .input-panel .input-box-wrapper {
                padding: 1px 10px !important;
            }
            .multi-response-container.active ~ .input-panel {
                padding: 4px 10px 6px !important;
                padding-bottom: calc(6px + env(safe-area-inset-bottom, 0px)) !important;
            }
            /* 对比面板内容区：可滚动查看多轮对话 */
            .multi-response-body {
                overflow-y: auto !important;
                -webkit-overflow-scrolling: touch !important;
            }

            /* 会议模式：隐藏标题栏模型名称 + 隐藏自带输入框（用原有输入框） */
            .meeting-header-models {
                display: none !important;
            }
            .meeting-input-area {
                display: none !important;
            }

            /* ============================================= */
            /* ===  Phase 3: 侧边栏 + 欢迎页改造         === */
            /* ============================================= */

            /* --- 7. 侧边栏：Gemini 风格（最大 80% 宽度） --- */
            .sidebar {
                position: fixed !important;
                top: 0 !important;
                left: 0 !important;
                bottom: 0 !important;
                right: auto !important;
                width: 80vw !important;
                max-width: 320px !important;
                z-index: 10001 !important;
                transform: translateX(-100%) !important;
                margin-left: 0 !important;
                transition: none !important; /* JS 加载后启用动画 */
                background: var(--bg-sidebar) !important;
                padding-top: env(safe-area-inset-top, 0px) !important;
                padding-bottom: env(safe-area-inset-bottom, 0px) !important;
                display: flex !important;
                flex-direction: column !important;
                overscroll-behavior: contain !important;
                overflow-y: auto !important;
                -webkit-overflow-scrolling: touch !important;
            }
            .sidebar.animated {
                transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1) !important;
            }
            .sidebar:not(.collapsed) {
                transform: translateX(0) !important;
            }
            .sidebar.collapsed {
                display: flex !important; /* 覆盖基础 CSS 的 display:none */
                transform: translateX(-100%) !important;
                margin-left: 0 !important;
            }
            /* 侧边栏头部 */
            .sidebar-header {
                display: flex !important;
                align-items: center !important;
                justify-content: space-between !important;
                padding: 12px 16px !important;
                padding-top: calc(12px + env(safe-area-inset-top, 0px)) !important;
                flex-shrink: 0 !important;
            }
            .sidebar-logo {
                font-size: 14px !important;
                font-weight: 700 !important;
                min-width: 0 !important;
                flex: 1 1 auto !important;
                overflow: hidden !important;
            }
            /* 2026-07-31 老板反馈：logo 文字过长顶出主题/关闭按钮且显示不完整，缩小并保护按钮区 */
            .sidebar-logo img { height: 26px !important; width: auto !important; margin-right: 6px !important; flex-shrink: 0 !important; }
            .sidebar-logo span { white-space: nowrap !important; overflow: hidden !important; text-overflow: ellipsis !important; }
            .sidebar-header > div:last-child { flex-shrink: 0 !important; }
            .collapse-btn {
                width: 40px !important;
                height: 40px !important;
                min-height: auto !important;
                aspect-ratio: 1 !important;
            }
            /* 导航区域 */
            .sidebar-nav {
                padding: 8px 12px !important;
                flex-shrink: 0 !important;
            }
            .sidebar-nav .nav-item {
                border-radius: 10px !important;
                padding: 8px 12px !important;
                font-size: 14px !important;
                font-weight: 500 !important;
                gap: 10px !important;
                min-height: 34px !important;
            }
            .sidebar-nav .nav-item svg {
                width: 20px !important;
                height: 20px !important;
                flex-shrink: 0 !important;
            }
            /* 对话历史列表 */
            .history-list {
                flex: 1 !important;
                overflow-y: auto !important;
                padding: 4px 12px !important;
                -webkit-overflow-scrolling: touch !important;
            }
            .history-list .nav-item {
                border-radius: 10px !important;
                padding: 12px 14px !important;
                font-size: 14px !important;
                min-height: 44px !important;
            }
            /* 侧边栏底部用户区 */
            .sidebar-footer {
                flex-shrink: 0 !important;
                padding: 8px 12px !important;
                padding-bottom: calc(8px + env(safe-area-inset-bottom, 0px)) !important;
                border-top: 1px solid var(--border-color) !important;
            }
            .user-profile-card {
                border-radius: 12px !important;
                padding: 10px 12px !important;
                margin: 0 !important;
            }
            /* 遮罩层 */
            .mobile-overlay {
                z-index: 10000 !important;
                background: rgba(0,0,0,0.5) !important;
            }

            /* --- 8. 欢迎页快捷提示卡片 --- */
            .empty-welcome {
                padding: 0 16px !important;
                padding-top: calc(12vh) !important;
            }
            .sphere-avatar {
                width: 44px !important;
                height: 44px !important;
                margin-bottom: 12px !important;
            }
            .welcome-v2-header {
                font-size: 20px !important;
                font-weight: 600 !important;
                margin-bottom: 6px !important;
                letter-spacing: -0.3px !important;
            }
            .welcome-v2-desc {
                font-size: 13px !important;
                line-height: 1.5 !important;
                color: var(--text-tertiary) !important;
                max-width: 280px !important;
                margin: 0 auto 24px !important;
            }
            /* 猜你想问 卡片 */
            .guess-questions {
                display: flex !important;
                flex-direction: column !important;
                gap: 8px !important;
                width: 100% !important;
                max-width: 360px !important;
                padding: 0 !important;
            }
            .guess-item {
                background: var(--hover-bg, #f0f0f4) !important;
                border: 1px solid var(--border-color) !important;
                border-radius: 16px !important;
                padding: 14px 16px !important;
                font-size: 14px !important;
                color: var(--text-primary) !important;
                cursor: pointer !important;
                transition: all 0.15s !important;
                text-align: left !important;
                line-height: 1.4 !important;
            }
            .guess-item:active {
                background: var(--bg-secondary) !important;
                transform: scale(0.98) !important;
            }

            /* --- 9. 侧边栏主题切换 --- */
            .sidebar-theme-btn {
                display: flex !important;
                width: 40px !important;
                height: 40px !important;
                min-height: auto !important;
                aspect-ratio: 1 !important;
                border-radius: 50% !important;
                align-items: center !important;
                justify-content: center !important;
            }

            /* --- 10. 对话区域间距微调 --- */
            .message-row:first-child {
                padding-top: 12px !important;
            }
            .message-row:last-child {
                padding-bottom: 12px !important;
            }
        }
        @media (max-width: 900px) {
            .assistant-avatar {
                position: relative;
                left: 0;
                top: 0;
                margin-left: 0;
                margin-bottom: 8px;
            }
        }
        @media (max-width: 1024px) {
            .editor-main { flex-direction: column; }
            .editor-pane { border-right: none; border-bottom: 1px solid var(--border-color); width: 100% !important; height: 50%; }
            .preview-pane { width: 100% !important; height: 50%; }
            .resizer { width: 100%; height: 16px; margin: -8px 0; cursor: row-resize; }
            .resizer-handle { width: 24px; height: 12px; flex-direction: row; }
            .icon-sidebar-panel { display: none !important; }
            .icon-hamburger { display: block !important; }
            .message-input, #message-input, textarea { font-size: 16px !important; /* 防止 iOS 缩放 */ }
            body {
                height: 100vh;
                height: 100dvh;
                height: -webkit-fill-available;
                /* ★ 确保 flex 子元素填满高度，消除底部留白 */
                min-height: 100vh;
                min-height: 100dvh;
            }
            .sidebar {
                padding-top: calc(16px + env(safe-area-inset-top, 0px)) !important;
                padding-bottom: calc(16px + env(safe-area-inset-bottom, 0px)) !important;
            }
            .input-panel { padding-bottom: calc(10px + env(safe-area-inset-bottom, 0px)) !important; }
            .modal-overlay {
                padding-top: env(safe-area-inset-top, 0px);
                padding-bottom: env(safe-area-inset-bottom, 0px);
            }
            .chat-container { padding-bottom: calc(60px + env(safe-area-inset-bottom, 0px)); }
            /* ★ v3：顶部安全区占位已由 .voice-top-bar（语音）/.top-controls padding（视频）承担，移除旧 env 规则避免冲突 */
            #canvas-overlay {
                top: env(safe-area-inset-top, 0px) !important;
                bottom: env(safe-area-inset-bottom, 0px) !important;
            }
            #canvas-ai-toolbar { top: calc(50% + env(safe-area-inset-top, 0px) / 2) !important; }
        }
        @media (max-width: 1200px) {
            .app-grid { grid-template-columns: repeat(4, 1fr); max-width: 960px; }
        }
        @media (min-width: 769px) and (max-width: 1024px) {
            html {
                --sat: max(env(safe-area-inset-top), 24px);
                --sab: max(env(safe-area-inset-bottom), 20px);
                --sar: max(env(safe-area-inset-right), 0px);
                --sal: max(env(safe-area-inset-left), 0px);
            }
            body {
                height: auto !important;
                min-height: 100vh;
                min-height: 100dvh;
            }
            .main-content {
                height: auto !important;
                min-height: 100dvh;
                padding-top: max(env(safe-area-inset-top), 24px) !important;
            }
            .sidebar {
                width: 280px;
                padding-top: calc(16px + max(env(safe-area-inset-top), 24px));
            }
            .top-nav { padding-top: max(env(safe-area-inset-top), 24px) !important; }
            .content-wrapper { padding-top: calc(60px + max(env(safe-area-inset-top), 24px)) !important; }
            .chat-container {
                min-height: 0;
                padding-bottom: max(env(safe-area-inset-bottom), 20px);
            }
            .input-panel { padding-bottom: calc(10px + max(env(safe-area-inset-bottom), 20px)) !important; }
            /* ★ 2026-08-08 修复：欢迎页只在空会话（state-empty）显示——原 `.main-content .empty-welcome` 无条件 flex，
               iPad 竖屏（769-1024px）下打开历史对话/云盘/技能都叠着欢迎页（各 state-xxx 隐藏规则在 ≤768px 媒体查询内不适用） */
            .state-empty .empty-welcome { display: flex; }
            #main-content-wrapper.state-apps .empty-welcome,
            #main-content-wrapper.state-cloud .empty-welcome,
            #main-content-wrapper.state-kb .empty-welcome,
            #main-content-wrapper.state-skills .empty-welcome,
            #main-content-wrapper.state-agent .empty-welcome,
            #main-content-wrapper.state-talk .empty-welcome,
            #main-content-wrapper.state-calendar .empty-welcome { display: none !important; }
            /* iPad 触摸友好 - 仅导航/列表项 */
            .nav-item, .history-item-wrapper .nav-item, .model-item, .settings-item { min-height: 44px; padding: 12px 14px; }
            .sidebar.collapsed { display: none !important; }
            body.writer-mode-active .writer-overlay {
                top: -5px;
                padding-top: calc(env(safe-area-inset-top, 20px) - 5px);
            }
            .app-grid {
                grid-template-columns: repeat(3, 1fr) !important;
                gap: 14px !important;
            }
            .app-card-thumb iframe { transform: scale(0.45) !important; }
            .code-action-btn {
                width: 38px !important;
                height: 38px !important;
            }
            @supports (padding-top: env(safe-area-inset-top)) {
            .main-content::before {
            height: max(env(safe-area-inset-top), 24px);
            }
            }
            /* iPad: coder/writer 模式下折叠侧边栏完全隐藏 */
            body.coder-mode .sidebar.collapsed,
            body.writer-mode-active .sidebar.collapsed { display: none !important; }
            /* iPad 编程模式：电脑版三栏布局（侧边栏 280px） */
            body.coder-mode .sidebar.collapsed ~ .main-content + #chat-editor-resizer {
                left: calc(400px + 5px) !important;
            }
            body.coder-mode .sidebar.collapsed ~ .editor-overlay {
                left: calc(400px + 5px + 1px) !important;
            }
            body.coder-mode.chat-collapsed .sidebar.collapsed ~ .editor-overlay {
                left: 0 !important;
            }
            body.coder-mode #collapse-chat-btn { display: flex !important; }
            /* iPad 编程模式：覆盖 max-width:1024px 的单栏布局，恢复电脑版左右排列 */
            .editor-main { flex-direction: row !important; align-items: stretch !important; }
            .editor-pane { width: 50% !important; height: 100% !important; flex: none !important; border-right: 1px solid var(--border-color) !important; border-bottom: none !important; }
            .preview-pane { width: 50% !important; height: 100% !important; flex: none !important; }
            .resizer { width: 8px !important; height: 100% !important; margin: 0 !important; cursor: col-resize !important; flex-direction: column !important; }
            .resizer-handle { width: 12px !important; height: 24px !important; flex-direction: column !important; }
            .icon-sidebar-panel { display: flex !important; }
            .icon-hamburger { display: none !important; }
            /* iPad 文件树显示 */
            body.coder-mode .editor-overlay .file-tree-pane { display: flex !important; width: 220px !important; }
            body.coder-mode .editor-overlay .terminal-pane { display: flex !important; }
            /* iPad 写作模式 */
            body.writer-mode-active .writer-overlay {
                display: flex !important;
                visibility: visible !important;
                opacity: 1 !important;
                pointer-events: auto !important;
                position: fixed !important;
                left: 0 !important;
                right: 0 !important;
                top: 0 !important;
                width: 100% !important;
                height: calc(100dvh - 50px - env(safe-area-inset-bottom, 0px)) !important;
                z-index: 1500 !important;
            }
            /* iPad 多模型标签优化 */
            .compare-models-bar {
                flex-wrap: wrap !important;
                padding: 6px 16px 6px 35px !important;
                overflow: visible !important;
                gap: 8px 8px !important;
                width: auto !important;
                max-width: 100% !important;
            }
            .compare-model-tag {
                font-size: 12px !important;
                padding: 5px 12px !important;
                border-radius: 12px !important;
            }
            .compare-model-tag .tag-dot {
                width: 7px !important;
                height: 7px !important;
            }
        }
        @media (min-width: 500px) and (max-width: 700px) {
            .sidebar { width: 240px; }
            .model-menu { width: 280px; }
        }
        @media (min-width: 769px) {
            .mobile-overlay { display: none !important; }
            .sidebar-theme-btn { display: none !important; }
            body.coder-mode .top-nav {
                top: 0 !important;
                padding-top: 0 !important;
                height: 56px !important;
                border-bottom: 1px solid transparent;
                background: transparent;
            }
            body.coder-mode .content-wrapper { padding-top: 0 !important; }
            body.coder-mode .editor-overlay {
                top: -10px !important;
                padding-top: calc(env(safe-area-inset-top, 20px)) !important;
            }
            body.coder-mode .sidebar:not(.collapsed) ~ .editor-overlay,
            body.coder-mode .sidebar.collapsed ~ .editor-overlay,
            body.coder-mode.chat-collapsed .sidebar:not(.collapsed) ~ .editor-overlay,
            body.coder-mode.chat-collapsed .sidebar.collapsed ~ .editor-overlay { top: -10px !important; }
            body.writer-mode-active .writer-overlay {
                top: -5px !important;
                padding-top: calc(env(safe-area-inset-top, 20px) - 5px) !important;
            }
            .new-chat-top-btn { display: none; }
            .coder-mobile-tabs { display: none !important; }
        }
        @media (orientation: landscape) and (max-height: 500px) {
            .chat-container {
                padding-bottom: 20px !important;
                padding-right: 5px !important;
                padding: 8px 5px 8px 16px !important;
            }
            .input-panel {
                padding: 2px 5px calc(2px + var(--sab)) 12px !important;
                padding-bottom: calc(4px + var(--sab)) !important;
            }
            .message-row { padding: 4px 16px !important; }
            .main-content { padding-top: calc(0px + var(--sat)); }
            .input-box-wrapper { border-radius: 20px !important; padding: 2px 10px !important; }
            #message-input { font-size: 14px !important; padding: 4px 0 !important; min-height: 32px !important; }
            .top-nav { height: 44px !important; padding: 0 12px !important; }
            .empty-welcome { padding: 20px 16px !important; }
            .welcome-v2-header { font-size: 20px !important; margin-bottom: 6px !important; }
            .welcome-v2-desc { font-size: 13px !important; }
        }
        @media (min-width: 1025px) and (max-width: 1366px) {
            .sidebar { width: 280px; }
            .sidebar.collapsed { display: none !important; }
            /* 编程模式：侧边栏 280px 定位 */
            body.coder-mode .sidebar:not(.collapsed) ~ .editor-overlay { left: calc(280px + 400px + 5px + 1px) !important; }
            body.coder-mode .sidebar:not(.collapsed) ~ .main-content + #chat-editor-resizer { left: calc(280px + 400px + 5px) !important; }
            body.coder-mode.chat-collapsed .sidebar:not(.collapsed) ~ .editor-overlay { left: 280px !important; }
            .chat-container {
                max-width: 900px;
                margin: 0 auto;
            }
        }
        @media (prefers-color-scheme: dark) {
            select, input[type="text"], input[type="password"], textarea { color-scheme: dark; }
        }


/* === Extracted from index.html style blocks === */
                body.coder-mode #collapse-chat-btn { display: flex !important; }

        .ai-rewrite-toolbar {
            position: absolute;
            background: var(--bg-primary, #ffffff);
            border: 1px solid var(--border-color);
            border-radius: 12px;
            box-shadow: 0 10px 25px rgba(0,0,0,0.1);
            display: none;
            align-items: center;
            padding: 4px 8px;
            z-index: 5000;
            transition: all 0.2s cubic-bezier(0.16, 1, 0.3, 1);
            pointer-events: auto;
        }
        .ai-rewrite-toolbar button {
            background: transparent;
            border: none;
            padding: 6px 12px;
            font-size: 13px;
            cursor: pointer;
            border-radius: 8px;
            transition: all 0.2s;
            color: var(--text-secondary);
            font-weight: 500;
        }
        .ai-rewrite-toolbar button:hover {
            background: var(--hover-bg, #eff6ff);
            color: var(--primary-color);
        }
        .ai-toolbar-btn-group button {
            background: var(--bg-secondary, #fff) !important;
            border: 1px solid var(--border-color) !important;
            color: var(--text-secondary) !important;
        }
        .ai-toolbar-divider {
            width: 1px;
            height: 20px;
            background: var(--border-color);
            margin: 0 8px;
        }
        .ai-rewrite-toolbar input {
            border: none;
            outline: none;
            padding: 6px 8px;
            font-size: 13px;
            background: transparent;
            width: 160px;
            color: var(--text-primary);
        }

        /* Writer Mode Layout Updates */
        body.writer-mode-active .main-content {
            flex: none !important;
            width: 400px; /* Default sidebar width for chat when writing */
            min-width: 390px !important;
            border-right: none !important;
            transition: width 0.05s linear;
        }

        /* PPT Mode Layout Updates */
        body.ppt-mode-active .main-content {
            display: none !important;
        }

        body.writer-mode-active .content-wrapper {
            padding-top: 40px !important; /* Move up by 20px from default 60px */
        }

        body.writer-mode-active .chat-container {
            padding-bottom: 40px !important; /* Extra padding at bottom to prevent being obscured */
            padding-right: 5px !important; /* 对话区域与输入框宽度一致，保持与编辑区5px距离 */
        }

        body.writer-mode-active .api-key-link {
            display: none !important;
        }

        /* Infinite Canvas Layout */
        .canvas-overlay {
            user-select: none;
            cursor: default;
            /* ★ P0修复: 全面阻止所有方向的浏览器导航手势 */
            overscroll-behavior: none !important;
            overscroll-behavior-x: none !important;
            overscroll-behavior-y: none !important;
            -webkit-overflow-scrolling: touch;
            /* 允许全部手势 (Tldraw需要双指缩放/旋转/平移) */
            touch-action: none !important;
        }
        /* ★ P0修复: 画布内所有元素允许完整手势,阻止系统导航 */
        .canvas-overlay * {
            touch-action: none; /* 允许全部手势，包含双指旋转 */
        }
        /* 画布内的按钮恢复正常交互 */
        .canvas-overlay button,
        .canvas-overlay input,
        .canvas-overlay label,
        .canvas-overlay select {
            touch-action: manipulation;
        }
        .canvas-node {
            transition: border-color 0.2s, box-shadow 0.2s;
            overflow: visible !important;
            user-select: none;
        }
        .canvas-node:hover {
            border-color: var(--primary-color) !important;
            box-shadow: 0 10px 35px rgba(59, 130, 246, 0.15) !important;
        }
        .node-port {
            transition: all 0.2s;
            z-index: 20;
        }
        .node-port:hover {
            transform: translateX(-50%) scale(1.4);
            background: var(--primary-color) !important;
            box-shadow: 0 0 12px rgba(59, 130, 246, 0.4);
        }
        .canvas-top-bar { box-shadow: 0 2px 10px rgba(0,0,0,0.02); }

        .writer-resizer {
            position: fixed;
            top: 0;
            bottom: 0;
            left: 0; /* Positioned by JS */
            width: 1px;
            cursor: col-resize;
            background: var(--border-color);
            z-index: 1001;
            display: none;
            transition: background 0.2s, width 0.1s;
        }
        /* Create a wider invisible hit area around the 1px line */
        .writer-resizer::after {
            content: '';
            position: absolute;
            top: 0;
            bottom: 0;
            left: -4px;
            right: -4px;
            z-index: 1;
        }
        .writer-resizer:hover, .writer-resizer.dragging {
            background: var(--primary-color);
            width: 3px;
            z-index: 1002;
        }
        .writer-resizer .resizer-handle {
            display: flex;
            flex-direction: column;
            gap: 4px;
            position: absolute;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
            z-index: 2;
        }
        .writer-resizer .resizer-handle span {
            width: 3px;
            height: 3px;
            background: rgba(0,0,0,0.3);
            border-radius: 50%;
            transition: background 0.2s;
        }
        .writer-resizer:hover .resizer-handle span, .writer-resizer.dragging .resizer-handle span {
            background: #ffffff;
        }

        body.writer-mode-active #writer-overlay {
            display: flex;
        }

        body.writer-mode-active .writer-resizer {
            display: block;
        }

        .writer-overlay {
            position: fixed;
            left: 0; /* Positioned by JS */
            right: 0;
            top: 0;
            bottom: 0;
            z-index: 1000;
            display: none;
            flex-direction: column;
            background: #ffffff;
            border-left: 1px solid var(--border-color);
            padding-top: env(safe-area-inset-top, 20px);
        }

        @page {
            size: A4;
            margin: 20mm;
        }

        .markdown-body table {
            border-collapse: collapse;
            width: 100%;
            margin-bottom: 16px;
        }
        .markdown-body table th, .markdown-body table td {
            border: 1px solid var(--border-color);
            padding: 8px 12px;
            text-align: left;
        }
        .markdown-body table th {
            background-color: var(--bg-sidebar);
            font-weight: 600;
        }

        /* Rest of existing writer styles... */
        .writer-top-bar {
            height: 56px;
            display: flex;
            align-items: center;
            justify-content: space-between;
            padding: 0 20px;
            border-bottom: 1px solid var(--border-color);
            background: #fdfdfd;
            min-width: 0;
        }
        /* ★ 2026-08-02 写作模块优化：标题不被右侧工具栏挤压（此前标题被压成竖排） */
        .writer-top-left {
            display: flex;
            align-items: center;
            gap: 8px;
            flex-shrink: 0;
            min-width: 0;
        }
        .writer-title {
            font-size: 16px;
            font-weight: 500;
            color: #333;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
            max-width: 240px;
        }
        .writer-top-right {
            display: flex;
            align-items: center;
            gap: 16px;
            flex-shrink: 1;
            min-width: 0;
        }
        .writer-format-group {
            overflow-x: auto;
            scrollbar-width: none;
            flex-shrink: 1;
            min-width: 0;
        }
        .writer-format-group::-webkit-scrollbar { display: none; }
        .writer-action-group {
            display: flex;
            gap: 1px;
            background: var(--border-color);
            border-radius: 8px;
            padding: 1px;
            overflow: hidden;
            border: 1px solid var(--border-color);
        }
        .writer-btn {
            background: #fff;
            border: 1px solid var(--border-color);
            width: 32px;
            height: 32px;
            display: flex;
            align-items: center;
            justify-content: center;
            border-radius: 4px;
            cursor: pointer;
            color: var(--text-secondary);
            transition: all 0.2s;
            padding: 0;
        }
        .writer-btn:hover {
            background: #f5f5f5;
            color: var(--primary-color);
        }
        .writer-btn svg {
            width: 18px;
            height: 18px;
        }
        .writer-btn-text {
            font-size: 10px;
            font-weight: 800;
            text-transform: uppercase;
            line-height: 1;
        }
        /* ★ 2026-08-20 保存到云盘按钮组：主题色背景 + 白字，置于标题栏末尾醒目位置 */
        .writer-save-cloud-group {
            display: flex;
            gap: 6px;
            align-items: center;
            flex-shrink: 0;
        }
        .writer-save-cloud-btn {
            background: #2563EB;
            color: #ffffff;
            border: none;
            border-radius: 6px;
            padding: 7px 12px;
            font-size: 12px;
            font-weight: 600;
            cursor: pointer;
            display: inline-flex;
            align-items: center;
            gap: 4px;
            transition: background 0.2s;
            white-space: nowrap;
            line-height: 1;
        }
        .writer-save-cloud-btn:hover {
            background: #1d4ed8;
        }
        .writer-save-cloud-btn svg {
            width: 14px;
            height: 14px;
        }
        .writer-close-btn {
            background: #fff;
            width: 34px;
            height: 34px;
            display: flex;
            align-items: center;
            justify-content: center;
            border-radius: 50%;
            border: 1px solid var(--border-color);
            color: var(--text-secondary);
            transition: all 0.2s;
            cursor: pointer;
        }
        .writer-close-btn:hover {
            background: #fee2e2;
            color: var(--error-color);
            border-color: #fca5a5;
        }
        .writer-close-btn svg { width: 18px; height: 18px; }
        .writer-content-area {
            flex: 1;
            padding: 40px 60px;
            overflow-y: auto;
            font-size: 16px;
            line-height: 1.8;
            color: #1a1a1a;
            max-width: 850px;
            margin: 0 auto;
            width: 100%;
        }
        /* 写作区空白文档占位 */
        #writer-content-body[data-placeholder]:empty:before {
            content: attr(data-placeholder);
            color: var(--text-tertiary);
            pointer-events: none;
        }
        #writer-content-body:focus {
            outline: none;
        }
        body.writer-mode-active #input-write-btn {
            background: rgba(59, 130, 246, 0.1) !important;
            color: var(--primary-color) !important;
        }
        body.writer-mode-active #writing-mode-btn {
            background:#ffffff; color:var(--primary-color); box-shadow:0 1px 3px rgba(0,0,0,0.1);
        }

/* ==================== PPT 模式样式 (白底左右结构) ==================== */

@keyframes pptSpin { from{transform:rotate(0deg)} to{transform:rotate(360deg)} }
@keyframes pptSlideIn { from{opacity:0;transform:translateY(10px)} to{opacity:1;transform:translateY(0)} }

body.ppt-mode-active #ppt-overlay { display: flex; }
body.ppt-mode-active #input-ppt-btn { background: rgba(59,130,246,0.1) !important; color: var(--primary-color) !important; }
body.ppt-mode-active #ppt-mode-btn { background:var(--bg-primary); color:var(--primary-color); box-shadow:0 1px 3px rgba(0,0,0,0.1); }
body.ppt-mode-active .main-content { display: none !important; }
body.ppt-mode-active .sidebar { margin-left: 0 !important; }
body.ppt-mode-active .sidebar.collapsed { display: none !important; }

.ppt-overlay {
    position:fixed; left:0; right:0; top:0; bottom:0; z-index:1000;
    display:none; flex-direction:column;
    background:var(--bg-primary); color:var(--text-primary);
    transition:left 0.3s cubic-bezier(0.4,0,0.2,1);
}
body.ppt-mode-active .sidebar:not(.collapsed) ~ .ppt-overlay { left:260px; }

.ppt-close-btn {
    position:absolute; top:16px; right:16px; width:32px; height:32px;
    display:flex; align-items:center; justify-content:center;
    border:0; border-radius:8px; background:transparent; color:var(--text-tertiary);
    cursor:pointer; transition:0.15s; z-index:10;
}
.ppt-close-btn:hover { background:var(--hover-bg); color:var(--text-primary); }
.ppt-close-btn svg { width:18px; height:18px; }

/* 顶栏 */
.ppt-top-bar {
    height:48px; display:flex; align-items:center; justify-content:space-between;
    padding:0 20px; border-bottom:1px solid var(--border-color); background:var(--bg-sidebar);
    flex-shrink:0;
}
.ppt-top-left { display:flex; align-items:center; gap:12px; }
.ppt-title { font-size:14px; font-weight:600; color:var(--text-primary); }
.ppt-top-center { display:flex; align-items:center; }
.ppt-top-right { display:flex; align-items:center; gap:6px; }
.ppt-top-btn {
    display:flex; align-items:center; gap:4px; padding:6px 10px;
    border:1px solid var(--border-color); border-radius:6px; background:var(--bg-primary);
    color:var(--text-secondary); font-size:12px; cursor:pointer; transition:all 0.15s;
}
.ppt-top-btn:hover { background:var(--hover-bg); color:var(--text-primary); }
.ppt-dl-btn { background:var(--primary-color); color:#fff; border-color:var(--primary-color); }
.ppt-dl-btn:hover { background:var(--primary-color); color:#fff; }
.ppt-close-btn {
    width:32px; height:32px; border-radius:50%; border:1px solid var(--border-color);
    background:var(--bg-primary); color:var(--text-tertiary); cursor:pointer; display:flex;
    align-items:center; justify-content:center; transition:all 0.15s;
}
.ppt-close-btn:hover { background:rgba(239,68,68,0.08); color:var(--error-color); border-color:rgba(239,68,68,0.3); }

/* 主区域 */
.ppt-main-area { flex:1; display:flex; overflow:hidden; }

/* 输入阶段 */
.ppt-input-stage {
    flex:1; display:flex; align-items:center; justify-content:center;
    padding:28px 40px; overflow-y:auto;
}
.ppt-input-card {
    width:100%; max-width:720px; text-align:center;
}
.ppt-input-card h2 { font-size:28px; font-weight:700; color:var(--text-primary); margin:0 0 6px; letter-spacing:.5px; }
.ppt-input-card > p { font-size:13px; color:var(--text-tertiary); margin:0 0 22px; }
.ppt-input-card textarea {
    width:100%; padding:14px 16px; border:1px solid var(--border-color); border-radius:14px;
    font-size:14px; font-family:inherit; resize:none; outline:none;
    box-sizing:border-box; transition:border-color 0.2s, box-shadow 0.2s;
    background:var(--bg-primary); color:var(--text-primary);
}
.ppt-input-card textarea:focus { border-color:var(--primary-color); box-shadow:0 0 0 3px rgba(59,130,246,0.15); }
.ppt-input-card textarea::placeholder { color:var(--text-tertiary); }
.ppt-input-section { margin-top:18px; text-align:left; }
.ppt-input-label { font-size:12px; font-weight:600; color:var(--text-secondary); margin-bottom:8px; }
.ppt-theme-strip {
    display:grid; grid-template-columns:repeat(auto-fill,minmax(118px,1fr));
    gap:10px; max-height:212px; overflow-y:auto; padding:2px;
}
.ppt-strip-card {
    border:2px solid var(--border-color); border-radius:10px; overflow:hidden; cursor:pointer;
    background:var(--bg-primary); transition:all 0.15s; position:relative;
}
.ppt-strip-card:hover { border-color:rgba(59,130,246,0.3); transform:translateY(-2px); box-shadow:0 6px 16px rgba(15,23,42,0.08); }
.ppt-strip-card.active { border-color:var(--primary-color); box-shadow:0 0 0 3px rgba(37,99,235,0.12); }
.ppt-strip-thumb { width:100%; aspect-ratio:16/9; overflow:hidden; position:relative; background:var(--hover-bg); pointer-events:none; }
.ppt-strip-name { font-size:11px; font-weight:600; color:var(--text-secondary); padding:6px 8px; text-align:center; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ppt-strip-card.active .ppt-strip-name { color:var(--primary-color); }
.ppt-strip-upload {
    border:2px dashed var(--border-focus); border-radius:10px; cursor:pointer; background:transparent;
    display:flex; flex-direction:column; align-items:center; justify-content:center;
    min-height:92px; transition:all 0.15s; font-family:inherit;
}
.ppt-strip-upload:hover { border-color:rgba(99,102,241,0.4); background:rgba(99,102,241,0.06); }
/* 创作简报向导 */
/* ★ 2026-07-27 引导模式步骤条重设计：当前步实心+光环，已完成步打勾，连接线填充 */
.ppt-wizard-steps { display:flex; align-items:center; justify-content:center; gap:0; margin-bottom:28px; padding:0 20px; }
.ppt-wizard-step { display:flex; align-items:center; gap:8px; font-size:12px; color:var(--text-tertiary); font-weight:500; transition:color 0.25s; }
.ppt-wizard-step.active { color:var(--primary-color); font-weight:600; }
.ppt-wizard-dot { width:28px; height:28px; border-radius:50%; background:var(--bg-primary); border:1.5px solid var(--border-color); display:flex; align-items:center; justify-content:center; font-size:12px; font-weight:600; color:var(--text-tertiary); transition:all 0.25s cubic-bezier(0.4,0,0.2,1); flex-shrink:0; box-sizing:border-box; }
.ppt-wizard-step.active:not(.done) .ppt-wizard-dot { background:var(--primary-color); border-color:var(--primary-color); color:#fff; box-shadow:0 0 0 4px rgba(59,130,246,0.15), 0 2px 6px rgba(59,130,246,0.3); }
.ppt-wizard-step.done .ppt-wizard-dot { background:rgba(59,130,246,0.1); border-color:var(--primary-color); color:transparent; position:relative; }
.ppt-wizard-step.done .ppt-wizard-dot::after { content:''; position:absolute; width:12px; height:12px; background:var(--primary-color); -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 12 4 4L19 6'/%3E%3C/svg%3E") center/contain no-repeat; mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='3.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 12 4 4L19 6'/%3E%3C/svg%3E") center/contain no-repeat; }
.ppt-wizard-line { width:36px; height:2px; background:var(--border-color); border-radius:1px; flex-shrink:0; margin:0 6px; transition:background 0.3s; }
.ppt-wizard-step.done + .ppt-wizard-line { background:var(--primary-color); }
/* 选项卡 chips：胶囊+悬浮提升+选中实心投影 */
.ppt-wizard-chips { display:flex; flex-wrap:wrap; gap:8px; }
.ppt-wiz-chip { padding:7px 16px; border:1.5px solid var(--border-color); border-radius:999px; background:var(--bg-primary); font-size:12.5px; color:var(--text-secondary); cursor:pointer; transition:all 0.18s cubic-bezier(0.4,0,0.2,1); font-weight:500; }
.ppt-wiz-chip:hover { border-color:rgba(59,130,246,0.45); color:var(--primary-color); transform:translateY(-1px); }
.ppt-wiz-chip.active { background:var(--primary-color); color:#fff; border-color:var(--primary-color); box-shadow:0 2px 8px rgba(59,130,246,0.32); }
/* 场景卡片：图标盒+描边+选中光环+右上勾标 */
.ppt-scene-grid { display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.ppt-scene-card { position:relative; display:flex; align-items:center; gap:10px; padding:12px 14px; border-radius:12px; border:1.5px solid var(--border-color); background:var(--bg-primary); cursor:pointer; font-size:13px; font-weight:500; color:var(--text-primary); transition:all 0.18s cubic-bezier(0.4,0,0.2,1); text-align:left; }
.ppt-scene-card:hover { border-color:rgba(59,130,246,0.45); transform:translateY(-1px); box-shadow:0 4px 12px rgba(16,24,40,0.06); }
.ppt-scene-card.active { border-color:var(--primary-color); background:rgba(59,130,246,0.06); color:var(--primary-color); box-shadow:0 0 0 3px rgba(59,130,246,0.1); }
.ppt-scene-icon { width:32px; height:32px; border-radius:8px; background:var(--hover-bg); color:var(--text-secondary); display:flex; align-items:center; justify-content:center; flex-shrink:0; transition:all 0.18s; }
.ppt-scene-icon svg { width:16px; height:16px; }
.ppt-scene-card.active .ppt-scene-icon { background:var(--primary-color); color:#fff; box-shadow:0 2px 6px rgba(59,130,246,0.35); }
.ppt-scene-card.active::after { content:''; position:absolute; top:8px; right:8px; width:16px; height:16px; border-radius:50%; background:var(--primary-color) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 12 4 4L19 6'/%3E%3C/svg%3E") center/10px no-repeat; }
/* 面板切换动效 + 输入框聚焦 + 摘要卡片 */
.ppt-wizard-panel { animation:pptWizPanelIn 0.3s cubic-bezier(0.4,0,0.2,1); }
@keyframes pptWizPanelIn { from { opacity:0; transform:translateY(10px); } to { opacity:1; transform:translateY(0); } }
#ppt-wiz-topic { transition:border-color 0.18s, box-shadow 0.18s; }
#ppt-wiz-topic:focus { border-color:var(--primary-color) !important; box-shadow:0 0 0 3px rgba(59,130,246,0.12); }
.ppt-brief-summary { border:1px solid var(--border-color) !important; border-radius:12px !important; }
/* 导航按钮：主按钮投影提升，次按钮描边 */
.ppt-wizard-nav { display:flex; justify-content:space-between; align-items:center; margin-top:24px; padding-top:16px; border-top:1px solid var(--hover-bg); }
.ppt-wiz-next, .ppt-wiz-back { padding:9px 24px; border-radius:10px; font-size:13px; font-weight:600; cursor:pointer; transition:all 0.18s cubic-bezier(0.4,0,0.2,1); }
.ppt-wiz-next { background:var(--primary-color); color:#fff; border:none; box-shadow:0 2px 8px rgba(59,130,246,0.3); }
.ppt-wiz-next:hover { transform:translateY(-1px); box-shadow:0 4px 14px rgba(59,130,246,0.42); }
.ppt-wiz-back { background:var(--bg-primary); color:var(--text-secondary); border:1.5px solid var(--border-color); }
.ppt-wiz-back:hover { border-color:var(--text-tertiary); color:var(--text-primary); }
.ppt-mode-switch { display:inline-flex; align-items:center; gap:6px; padding:6px 16px; border-radius:8px; background:var(--hover-bg); border:none; color:var(--text-secondary); font-size:12px; cursor:pointer; font-weight:500; transition:all 0.15s; }
.ppt-mode-switch:hover { background:rgba(59,130,246,0.08); color:var(--primary-color); }
.ppt-mode-switch svg { width:14px; height:14px; flex-shrink:0; }

.ppt-seg { display:inline-flex; background:var(--hover-bg); border-radius:8px; padding:3px; gap:2px; }
.ppt-seg-item {
    border:none; background:transparent; padding:6px 16px; font-size:12px;
    border-radius:6px; cursor:pointer; color:var(--text-secondary); font-weight:600; font-family:inherit;
    transition:all 0.15s;
}
.ppt-seg-item:hover { color:var(--text-primary); }
.ppt-seg-item.active { background:var(--text-primary); color:#fff; }
.ppt-input-selects { display:flex; gap:8px; margin-top:16px; }
.ppt-input-selects select {
    flex:1; padding:9px 12px; border:1px solid var(--border-color); border-radius:10px;
    font-size:12px; color:var(--text-secondary); background:var(--bg-primary); cursor:pointer; outline:none;
    font-family:inherit;
}
.ppt-input-selects select:focus { border-color:var(--primary-color); box-shadow:0 0 0 3px rgba(59,130,246,0.15); }
.ppt-input-opts { display:flex; gap:8px; margin-top:12px; }
.ppt-input-opts select {
    flex:1; padding:8px 10px; border:1px solid var(--border-color); border-radius:8px;
    font-size:12px; color:var(--text-secondary); background:var(--bg-primary); cursor:pointer; outline:none;
}
.ppt-input-foot { display:flex; align-items:center; gap:10px; margin-top:18px; }
.ppt-ref-link {
    background:none; border:none; color:var(--primary-color); font-size:12px; cursor:pointer;
    text-decoration:underline; text-underline-offset:2px;
}
.ppt-generate-btn {
    padding:12px 34px; background:var(--primary-color); color:#fff; border:none;
    border-radius:12px; font-size:14px; font-weight:600; cursor:pointer;
    transition:all 0.15s; margin-left:auto;
    display:flex; align-items:center; gap:8px;
}
.ppt-generate-btn:hover { background:var(--primary-color); transform:translateY(-1px); box-shadow:0 6px 16px rgba(37,99,235,0.25); }
.ppt-generate-btn:disabled { opacity:0.5; cursor:not-allowed; transform:none; box-shadow:none; }
@media (max-width: 768px) {
    /* 2026-07-31 老板反馈：PPT 页内容太靠顶，恢复垂直居中（保留滚动防矮屏裁切） */
    .ppt-input-stage { padding:20px 16px; align-items:center; }
    .ppt-input-card h2 { font-size:22px; }
    .ppt-scene-grid { grid-template-columns:repeat(2,1fr); }
    .ppt-theme-strip { grid-template-columns:repeat(auto-fill,minmax(100px,1fr)); max-height:180px; }
    .ppt-input-selects { flex-direction:column; }
}

/* 编辑阶段 */
.ppt-editor-stage { flex:1; display:flex; overflow:hidden; position:relative; }

/* 左：缩略图面板 */
.ppt-slide-panel {
    width:200px; border-right:1px solid var(--border-color); background:var(--bg-sidebar);
    display:flex; flex-direction:column; flex-shrink:0;
}
.ppt-slide-panel-head {
    display:flex; align-items:center; justify-content:space-between;
    padding:12px 14px; font-size:12px; font-weight:600; color:var(--text-secondary);
    /* ★ 2026-07-27 09:16 老板指示：删除 head 底部横线 */
}
.ppt-slide-list { flex:1; overflow-y:auto; padding:10px; }
.ppt-slide-list::-webkit-scrollbar { width:4px; }
.ppt-slide-list::-webkit-scrollbar-thumb { background:var(--border-focus); border-radius:2px; }

/* 缩略图拖拽分割线 */
.ppt-thumb-resizer { width:1px; flex:0 0 1px; background:#d8dee8; cursor:col-resize; touch-action:none; position:relative; z-index:10; transition:background 0.15s; }
.ppt-thumb-resizer::before { content:''; position:absolute; inset:0 -5px; }
.ppt-thumb-resizer:hover, .ppt-thumb-resizer.dragging { background:var(--primary-color); }
.ppt-thumb-toggle { position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); width:18px; height:36px; border:1px solid #d8dee8; border-radius:4px; background:var(--bg-primary); color:var(--text-tertiary); cursor:pointer; display:flex; align-items:center; justify-content:center; z-index:11; transition:0.15s; }
.ppt-thumb-toggle:hover { background:var(--hover-bg); color:var(--text-primary); border-color:var(--border-color); }
.ppt-thumb-toggle svg { width:10px; height:10px; transition:transform 0.2s; }
.ppt-slide-panel.collapsed { width:0!important; flex:0 0 0!important; overflow:hidden; border:0!important; padding:0; }
.ppt-slide-panel.collapsed + .ppt-thumb-resizer .ppt-thumb-toggle svg { transform:rotate(180deg); }
.ppt-slide-panel.collapsed + .ppt-thumb-resizer #ppt-add-slide-btn { display:none; }

/* ★ 2026-07-27 15:23 PPT 编辑区局部删除确认框 */
.ppt-delete-confirm-overlay { position:absolute; inset:0; z-index:1000; display:flex; align-items:center; justify-content:center; background:rgba(15,23,42,.18); backdrop-filter:blur(1px); }
.ppt-delete-confirm-box { width:300px; max-width:calc(100% - 40px); padding:22px; border-radius:12px; background:var(--bg-primary); border:1px solid var(--border-color); box-shadow:0 18px 50px rgba(15,23,42,.25); }
.ppt-delete-confirm-title { font-size:16px; line-height:1.4; font-weight:650; color:var(--text-primary); }
.ppt-delete-confirm-desc { margin-top:7px; font-size:13px; color:var(--text-tertiary); }
.ppt-delete-confirm-actions { display:flex; justify-content:flex-end; gap:8px; margin-top:20px; }
.ppt-delete-confirm-actions button { height:34px; padding:0 16px; border-radius:7px; font-size:13px; cursor:pointer; }
.ppt-delete-confirm-cancel { border:1px solid var(--border-color); background:var(--bg-primary); color:var(--text-secondary); }
.ppt-delete-confirm-ok { border:1px solid #dc2626; background:#dc2626; color:#fff; }

/* AI 重写弹窗 */
.ppt-regen-overlay { position:fixed; inset:0; z-index:10000; background:rgba(0,0,0,0.4); display:flex; align-items:center; justify-content:center; backdrop-filter:blur(4px); }
.ppt-regen-modal { width:520px; max-width:90vw; background:var(--bg-primary); border-radius:20px; box-shadow:0 20px 60px rgba(0,0,0,0.25); overflow:hidden; }
.ppt-regen-header { display:flex; align-items:flex-start; justify-content:space-between; padding:24px 24px 16px; }
.ppt-regen-header h3 { font-size:18px; font-weight:700; color:var(--text-primary); margin:0 0 4px; }
.ppt-regen-header p { font-size:13px; color:var(--text-tertiary); margin:0; }
.ppt-regen-close { background:none; border:0; cursor:pointer; color:var(--text-tertiary); width:32px; height:32px; display:flex; align-items:center; justify-content:center; border-radius:8px; transition:0.15s; }
.ppt-regen-close:hover { background:var(--hover-bg); color:var(--text-primary); }
.ppt-regen-close svg { width:18px; height:18px; }
.ppt-regen-body { padding:0 24px 16px; }
.ppt-regen-body textarea:focus { border-color:var(--primary-color); box-shadow:0 0 0 3px rgba(37,99,235,0.08); }
.ppt-regen-quick { display:flex; flex-wrap:wrap; gap:8px; margin-top:12px; }
.ppt-regen-chip { padding:6px 14px; border:1px solid var(--border-color); border-radius:20px; background:transparent; color:var(--text-secondary); font-size:12px; cursor:pointer; transition:0.15s; font-family:inherit; }
.ppt-regen-chip:hover { border-color:var(--primary-color); color:var(--primary-color); background:rgba(37,99,235,0.04); }
.ppt-regen-actions { display:flex; justify-content:flex-end; gap:10px; padding:0 24px 24px; }
.ppt-regen-cancel { padding:10px 20px; border:1px solid var(--border-color); border-radius:10px; background:transparent; color:var(--text-secondary); font-size:14px; cursor:pointer; font-family:inherit; transition:0.15s; }
.ppt-regen-cancel:hover { background:var(--hover-bg); color:var(--text-primary); }
.ppt-regen-confirm { padding:10px 24px; border:0; border-radius:10px; background:var(--primary-color); color:#fff; font-size:14px; font-weight:600; cursor:pointer; font-family:inherit; transition:0.15s; }
.ppt-regen-confirm:hover { background:#1d4ed8; transform:translateY(-1px); }
.ppt-regen-confirm:disabled { opacity:0.5; cursor:not-allowed; transform:none; }

/* 缩略图卡片 */
.ppt-slide-item {
    aspect-ratio:16/9; margin-bottom:10px; margin-left:0; margin-right:0; border-radius:8px; cursor:pointer;
    border:2px solid transparent; overflow:hidden; position:relative;
    background:var(--bg-primary); box-shadow:0 2px 10px rgba(15,23,42,.10), 0 1px 3px rgba(15,23,42,.06);
    transition:all 0.15s; user-select:none;
}
.ppt-slide-item:hover { border-color:rgba(59,130,246,0.3); box-shadow:0 4px 16px rgba(59,130,246,.18), 0 1px 4px rgba(15,23,42,.08); }
.ppt-slide-item.active { border-color:var(--primary-color); box-shadow:0 4px 18px rgba(59,130,246,.25), 0 1px 4px rgba(15,23,42,.08); }
.ppt-slide-item.dragging { opacity:0.5; transform:scale(0.95); }
.ppt-slide-item.drag-over { border-color:var(--primary-color); border-style:dashed; background:rgba(59,130,246,0.06); }
.ppt-slide-item .ppt-item-num {
    position:absolute; top:4px; left:6px; font-size:9px; color:var(--text-tertiary); font-weight:700;
    background:rgba(255,255,255,0.8); padding:0 4px; border-radius:3px;
    display:flex; align-items:center; gap:2px;
}
.ppt-warn-badge {
    display:inline-flex; align-items:center; justify-content:center;
    min-width:14px; height:14px; border-radius:7px;
    background:var(--warning-color); color:#fff; font-size:8px; font-weight:700;
    cursor:help;
}
.ppt-slide-item .ppt-item-preview {
    width:100%; height:100%; position:relative; overflow:hidden; pointer-events:none;
}
.ppt-slide-item .ppt-item-title {
    position:absolute; bottom:2px; left:4px; right:4px; font-size:8px; color:var(--text-secondary);
    text-align:center; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
    background:rgba(255,255,255,0.85); padding:1px 4px; border-radius:2px;
}
.ppt-slide-item .ppt-item-actions {
    position:absolute; top:4px; right:4px; display:none; gap:2px;
}
.ppt-film-section-label { position:absolute; top:-14px; left:12px; font-size:9px; font-weight:700; color:#fff; background:#6366f1; padding:1px 8px; border-radius:4px; z-index:5; white-space:nowrap; }
.ppt-slide-item:hover .ppt-item-actions { display:flex; }
.ppt-item-act {
    width:18px; height:18px; border-radius:4px; border:1px solid rgba(0,0,0,0.1);
    background:rgba(255,255,255,0.9); cursor:pointer; display:flex;
    align-items:center; justify-content:center; font-size:9px; color:var(--text-tertiary);
}
.ppt-item-act:hover { background:var(--bg-primary); color:var(--error-color); }

/* 右：主视图 */
.ppt-view-panel { flex:1; display:flex; flex-direction:column; overflow:hidden; position:relative; }

/* 大纲视图 */
.ppt-outline-view {
    flex:1; overflow-y:auto; padding:24px 32px; animation:pptSlideIn 0.3s ease;
    display:flex; flex-direction:column; align-items:center; justify-content:center;
}
.ppt-outline-view > * { max-width:720px; width:100%; }
.ppt-outline-view h3 { font-size:16px; font-weight:600; color:var(--text-primary); margin:0 0 4px; }
.ppt-outline-view .ol-subtitle { font-size:13px; color:var(--text-secondary); margin:0 0 16px; }
.ppt-outline-stats {
    display:flex; gap:24px; margin-bottom:20px; padding:14px;
    background:rgba(59,130,246,0.08); border-radius:10px;
}
.ppt-outline-stat { text-align:center; }
.ppt-outline-stat .stat-num { font-size:28px; font-weight:700; color:var(--primary-color); }
.ppt-outline-stat .stat-label { font-size:11px; color:var(--text-secondary); }
.ppt-outline-item {
    /* ★ 2026-07-27 08:47 老板指示：要点文字放标题下面——item 改纵向布局（原 flex-row 会把要点挤到标题右边） */
    display:flex; flex-direction:column; align-items:stretch; gap:2px; padding:10px 12px;
    border-radius:8px; margin:3px 0; cursor:default;
}
.ppt-outline-item.key-page { background:rgba(59,130,246,0.06); border-left:3px solid var(--primary-color); }
.ppt-outline-item .ol-num {
    background:var(--primary-color); color:#fff; min-width:24px; height:24px; border-radius:12px;
    display:flex; align-items:center; justify-content:center; font-size:11px; font-weight:700;
    flex-shrink:0;
}
.ppt-outline-item .ol-info { flex:1; min-width:0; }
.ppt-outline-item .ol-title { font-size:13px; font-weight:500; color:var(--text-primary); margin-bottom:2px; }
.ppt-outline-item .ol-meta { display:flex; gap:6px; align-items:center; font-size:10px; color:var(--text-tertiary); }
.ppt-outline-item .ol-tag { padding:1px 6px; border-radius:3px; background:var(--border-color); color:var(--text-secondary); }

/* 加载视图 */
.ppt-loading-view {
    flex:1; display:flex; flex-direction:column; align-items:center; justify-content:center;
    gap:16px; color:var(--text-secondary);
}
.ppt-spinner {
    width:32px; height:32px; border:2px solid var(--border-color);
    border-top-color:var(--primary-color); border-radius:50%; animation:pptSpin 0.8s linear infinite;
}

/* Canvas 预览视图 */
.ppt-canvas-view {
    flex:1; display:flex; align-items:center; justify-content:center;
    /* ★ 2026-07-27 09:05 老板指示：工作区背景减淡 20%（--hover-bg 混白 20%），突出画布 */
    padding:20px; background:color-mix(in srgb, var(--hover-bg) 80%, #ffffff); overflow:auto;
}
.ppt-canvas-slide {
    /* 尺寸由 JS pptFitSlide 直接设定像素值，不依赖 CSS aspect-ratio */
    border-radius:8px; overflow:hidden;
    /* ★ 2026-07-27 09:05 老板指示：增强画布投影（双层阴影，悬浮感） */
    box-shadow:0 18px 45px rgba(15,23,42,.18), 0 3px 10px rgba(15,23,42,.10);
    animation:pptSlideIn 0.3s ease; background:var(--bg-primary); position:relative;
    display:flex; align-items:center; justify-content:center;
    margin:0 auto;
}
/* :empty 规则已移除——与 JS 设定 viewport 尺寸冲突，导致空画布量不到尺寸 */
.ppt-slide-inner {
    width:1920px; height:1080px; transform-origin:0 0;
    position:absolute; top:0; left:0;
}

/* 底部导航 */
.ppt-view-nav {
    display:flex; align-items:center; justify-content:center; gap:16px;
    padding:10px; border-top:1px solid var(--border-color); background:var(--bg-primary);
}
.ppt-nav-btn {
    width:32px; height:32px; border-radius:50%; border:1px solid var(--border-color);
    background:var(--bg-primary); cursor:pointer; display:flex; align-items:center;
    justify-content:center; color:var(--text-secondary); transition:all 0.15s;
}
.ppt-nav-btn:hover { background:var(--hover-bg); color:var(--primary-color); border-color:var(--primary-color); }
#ppt-slide-indicator { font-size:13px; color:var(--text-secondary); min-width:50px; text-align:center; font-variant-numeric:tabular-nums; }

/* 主题面板 */
.ppt-theme-panel {
    position:absolute; top:52px; right:80px; width:320px;
    background:var(--bg-primary); border:1px solid var(--border-color); border-radius:12px;
    box-shadow:0 8px 32px rgba(0,0,0,0.1); z-index:1100; padding:16px;
}
.ppt-theme-panel-header { display:flex; justify-content:space-between; font-size:13px; font-weight:600; margin-bottom:12px; }
.ppt-theme-grid { display:flex; flex-direction:column; gap:10px; max-height:60vh; overflow-y:auto; }
.ppt-theme-card {
    padding:12px; border-radius:8px; cursor:pointer; border:2px solid transparent;
    display:flex; flex-direction:column; gap:6px; transition:all 0.15s;
}
.ppt-theme-card:hover { background:var(--bg-sidebar); }
.ppt-theme-card.active { border-color:var(--primary-color); background:rgba(59,130,246,0.1); }
.ppt-theme-card .ppt-theme-color-dots { display:flex; gap:4px; }
.ppt-theme-card .ppt-theme-color-dot { width:12px; height:12px; border-radius:50%; }
.ppt-theme-thumb { width:100%; aspect-ratio:16/9; border-radius:6px; overflow:hidden; background:var(--hover-bg); position:relative; border:1px solid var(--border-color); margin-bottom:8px; pointer-events:none; }
.ppt-theme-card .ppt-theme-name { font-size:12px; color:var(--text-secondary); }

/* 编辑面板 */
.ppt-edit-panel {
    position:absolute; top:0; right:0; width:300px; bottom:0;
    background:var(--bg-primary); border-left:1px solid var(--border-color); box-shadow:-4px 0 20px rgba(0,0,0,0.06);
    z-index:1100; display:flex; flex-direction:column; overflow-y:auto;
}
.ppt-edit-header {
    display:flex; justify-content:space-between; align-items:center;
    padding:14px 16px; font-size:13px; font-weight:600; border-bottom:1px solid var(--border-color);
}
.ppt-edit-body { padding:14px; display:flex; flex-direction:column; gap:12px; }
.ppt-edit-field label {
    display:block; font-size:11px; font-weight:600; color:var(--text-secondary);
    margin-bottom:4px; text-transform:uppercase; letter-spacing:0.5px;
}
.ppt-edit-field input, .ppt-edit-field textarea, .ppt-edit-field select {
    width:100%; padding:8px 10px; border:1px solid var(--border-color); border-radius:6px;
    font-size:13px; font-family:inherit; outline:none; resize:vertical; box-sizing:border-box;
    background:var(--input-bg); color:var(--text-primary);
}
.ppt-edit-field input:focus, .ppt-edit-field textarea:focus { border-color:var(--primary-color); box-shadow:0 0 0 2px rgba(59,130,246,0.1); }
.ppt-edit-actions { display:flex; gap:8px; padding-top:8px; border-top:1px solid var(--border-color); }
.ppt-ai-btn {
    flex:1; padding:8px; background:linear-gradient(135deg,#6366f1,#8b5cf6);
    border:none; border-radius:6px; color:#fff; font-size:12px; cursor:pointer;
}

/* 编辑面板 Tabs */
.ppt-edit-tabs {
    display:flex; gap:4px; margin-bottom:12px; background:var(--hover-bg); border-radius:8px; padding:3px;
}
.ppt-edit-tab {
    flex:1; padding:6px 0; border:none; background:transparent; border-radius:6px;
    font-size:12px; font-weight:600; color:var(--text-tertiary); cursor:pointer; transition:all 0.15s;
}
.ppt-edit-tab.active { background:var(--bg-primary); color:var(--text-primary); box-shadow:0 1px 3px rgba(0,0,0,0.1); }

.ppt-edit-el { position:relative; }
.ppt-edit-el-label { font-size:10px; font-weight:600; color:var(--text-tertiary); text-transform:uppercase; letter-spacing:0.5px; margin-bottom:4px; }
.ppt-edit-el-input {
    width:100%; padding:8px 10px; border:1px solid var(--border-color); border-radius:6px;
    font-size:13px; font-family:inherit; outline:none; box-sizing:border-box;
    background:var(--input-bg); color:var(--text-primary);
}
.ppt-edit-el-input:focus { border-color:var(--primary-color); box-shadow:0 0 0 2px rgba(59,130,246,0.1); }
.ppt-edit-el-textarea { background:var(--input-bg); color:var(--text-primary); border:1px solid var(--border-color); }
.ppt-edit-el-textarea:focus { border-color:var(--primary-color); box-shadow:0 0 0 2px rgba(59,130,246,0.1); }
.ppt-edit-add-btn:hover { background:var(--hover-bg); border-color:var(--primary-color); color:var(--primary-color); }

/* 密度分段控件 */
.ppt-density-seg .ppt-seg-item {
    flex:1; padding:5px 0; border:1px solid var(--border-color); border-radius:6px;
    background:var(--bg-primary); font-size:11px; color:var(--text-secondary); cursor:pointer; font-weight:500;
    transition:all 0.15s;
}
.ppt-density-seg .ppt-seg-item.active { background:var(--primary-color); color:#fff; border-color:var(--primary-color); }

/* 图表编辑抽屉 */
.ppt-chart-editor-overlay {
    position:fixed; inset:0; background:rgba(0,0,0,0.4); z-index:1200;
    display:flex; align-items:center; justify-content:center;
}
.ppt-chart-editor {
    width:480px; max-height:80vh; background:var(--bg-primary); border-radius:12px;
    box-shadow:0 20px 60px rgba(0,0,0,0.2); display:flex; flex-direction:column; overflow:hidden;
}
.ppt-chart-editor-header {
    display:flex; justify-content:space-between; align-items:center;
    padding:16px 20px; font-size:14px; font-weight:600; border-bottom:1px solid var(--border-color);
}
.ppt-chart-editor-body { padding:16px 20px; overflow-y:auto; flex:1; }
.ppt-chart-editor-actions {
    padding:14px 20px; border-top:1px solid var(--border-color); display:flex; gap:8px;
}
.ppt-chart-save-btn {
    flex:1; padding:10px; background:var(--primary-color); border:none; border-radius:8px;
    color:#fff; font-size:13px; font-weight:600; cursor:pointer;
}
.ppt-chart-save-btn:hover { background:var(--primary-color); }
#ppt-chart-title, #ppt-chart-unit, #ppt-chart-data { background:var(--input-bg); color:var(--text-primary); }

.ppt-icon-btn {
    width:28px; height:28px; border-radius:6px; border:1px solid var(--border-color);
    background:var(--bg-primary); cursor:pointer; display:flex; align-items:center;
    justify-content:center; color:var(--text-tertiary);
}
.ppt-icon-btn:hover { background:var(--hover-bg); color:var(--primary-color); }

/* 移动端 */
@media (max-width:768px) {
    body.ppt-mode-active #ppt-overlay,
    body.ppt-mode-active .ppt-overlay {
        position:fixed!important; left:0!important; right:0!important; top:0!important;
        bottom:0!important; width:100%!important; z-index:1500!important;
        display:flex!important; visibility:visible!important; opacity:1!important;
        pointer-events:auto!important;
    }
    .ppt-slide-panel { display:none; }
    .ppt-input-opts { flex-wrap:wrap; }
    .ppt-input-opts select { flex:none; min-width:calc(50% - 4px); }
    .ppt-canvas-view { padding:10px; }
    .ppt-edit-panel { width:100%; }
    .ppt-theme-panel { right:10px; }
    .ppt-input-card { padding:0 16px; }
}
/* ==================== 模型广场样式 ==================== *//* ==================== 模型广场样式 ==================== */

/* 桌面端: 供应商标签 */
#model-plaza-modal .plaza-vendor-tab {
    padding: 6px 14px; border-radius: 20px; border: 1px solid var(--border-color);
    background: var(--bg-primary); color: var(--text-secondary); cursor: pointer;
    font-size: 13px; transition: all 0.2s; white-space: nowrap;
}
#model-plaza-modal .plaza-vendor-tab:hover { background: var(--hover-bg); }
#model-plaza-modal .plaza-vendor-tab.active { background: #111; color: #fff; border-color: #111; }
[data-theme="dark"] .model-type-filter.active { background: var(--bg-sidebar); border-color: var(--bg-sidebar); color: var(--text-primary); }
[data-theme="dark"] #model-plaza-modal .plaza-vendor-tab.active { background: var(--bg-sidebar); border-color: var(--bg-sidebar); color: var(--text-primary); }

/* 模型卡片 - 信息丰富风格 */
#model-plaza-modal .plaza-model-card {
    display: flex; align-items: flex-start; padding: 14px 16px; margin-bottom: 8px;
    border: 1px solid #e0e0e0; border-radius: 12px; cursor: pointer;
    transition: border-color 0.12s, background 0.12s; gap: 12px; background: #fff;
    contain: layout style;
}
#model-plaza-modal .plaza-model-card:hover { background: #f8f8f8; border-color: #ccc; }
#model-plaza-modal .plaza-model-card.selected { border-color: #111; background: #fafafa; }
#model-plaza-modal .plaza-model-card.maintenance { opacity: 0.55; }
[data-theme="dark"] #model-plaza-modal .plaza-model-card { background: var(--bg-primary); border-color: var(--border-color); }
[data-theme="dark"] #model-plaza-modal .plaza-model-card:hover,
[data-theme="dark"] #model-plaza-modal .plaza-model-card.selected { background: var(--hover-bg); border-color: var(--text-tertiary); }
[data-theme="dark"] #model-plaza-modal .plaza-model-name,
[data-theme="dark"] #model-plaza-modal .plaza-price-now { color: var(--text-primary); }
[data-theme="dark"] #model-plaza-modal .plaza-model-vendor { color: var(--text-secondary); background: var(--hover-bg); border-color: var(--border-color); }

#model-plaza-modal .plaza-model-card .plaza-check {
    width: 22px; height: 22px; border-radius: 6px; border: 2px solid #ccc;
    display: flex; align-items: center; justify-content: center; flex-shrink: 0; transition: background 0.12s, border-color 0.12s; margin-top: 2px;
}
#model-plaza-modal .plaza-model-card.selected .plaza-check {
    background: #111; border-color: #111;
}
#model-plaza-modal .plaza-model-card.selected .plaza-check svg { display: block; }
#model-plaza-modal .plaza-model-card .plaza-check svg { display: none; }

#model-plaza-modal .plaza-model-info { flex: 1; min-width: 0; }
#model-plaza-modal .plaza-model-row { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
#model-plaza-modal .plaza-model-name { font-size: 14px; color: #111; font-weight: 600; }
#model-plaza-modal .plaza-model-vendor {
    font-size: 11px; color: #666; margin-left: auto;
    padding: 2px 10px; background: #f5f5f5; border-radius: 10px; border: 1px solid #e0e0e0;
}
#model-plaza-modal .plaza-model-desc { font-size: 12px; color: #888; margin-top: 4px; line-height: 1.4; }
#model-plaza-modal .plaza-model-pricing {
    display: flex; align-items: center; gap: 4px; margin-top: 6px; font-size: 12px; flex-wrap: wrap;
}
#model-plaza-modal .plaza-price-label { color: #999; font-size: 11px; }
#model-plaza-modal .plaza-price-orig { color: #bbb; text-decoration: line-through; font-size: 11px; }
#model-plaza-modal .plaza-price-now { color: #111; font-weight: 600; }
#model-plaza-modal .plaza-price-sep { color: #ddd; margin: 0 4px; }
#model-plaza-modal .plaza-price-unit { color: #999; font-size: 10px; }
#model-plaza-modal .plaza-discount-badge {
    font-size: 10px; padding: 1px 6px; border-radius: 4px;
    background: #fff0f0; color: #e74c3c; font-weight: 600; border: 1px solid #fdd;
}
#model-plaza-modal .plaza-maint-badge {
    font-size: 10px; padding: 1px 6px; border-radius: 4px;
    background: #f5f5f5; color: #999; border: 1px solid #e0e0e0;
}

/* ==================== 移动端模型广场 ==================== */



/* === Performance: CSS Contain (V4.21.1) === */
.chat-container { contain: layout style; }
.chat-message, .assistant-row, .user-row { contain: layout style paint; }
.msg-content, .assistant-content { contain: layout style; }
.model-trigger, .custom-model-dropdown { contain: layout style; }
.sidebar { contain: layout style paint; }
.input-panel, .input-box-wrapper { contain: layout style; }
.top-nav { contain: layout style; }
.search-results-panel { contain: layout style; }

/* ============================================
   Agent 创建下拉菜单 (V4.22.0)
   ============================================ */
.agent-create-dropdown { position: relative; }
.agent-create-menu {
    animation: wfMenuIn 0.15s ease;
}
@keyframes wfMenuIn {
    from { opacity: 0; transform: translateY(-4px); }
    to { opacity: 1; transform: translateY(0); }
}

/* 全屏 Agent 编辑器 */
.agent-create-overlay.fullscreen {
    align-items: flex-start !important;
    justify-content: center !important;
    padding: 64px 24px 40px !important;
    overflow-y: auto !important;
    z-index: 10000 !important;
    background: var(--bg-main) !important;
}
.agent-create-overlay.fullscreen .agent-create-modal {
    max-width: 860px !important;
    width: 100% !important;
    max-height: none !important;
    overflow: visible !important;
}
.agent-create-overlay.fullscreen #agent-fullscreen-back {
    display: flex !important;
}

/* 全屏模式下隐藏原来的页面关闭按钮 */
#main-content-wrapper.state-agent .agent-create-overlay.fullscreen ~ .page-close-btn,
#main-content-wrapper.state-agent .agent-create-overlay.fullscreen ~ * > .page-close-btn {
    display: none !important;
}

@media (max-width: 768px) {
    .agent-create-overlay.fullscreen {
        padding: 56px 8px 20px !important;
    }
    .agent-create-overlay.fullscreen #agent-fullscreen-back {
        top: 8px;
        left: 6px;
        padding: 6px 10px;
        font-size: 12px;
    }
    .agent-create-overlay.fullscreen .agent-create-modal {
        border-radius: 12px;
    }
}
@keyframes wfSpin { to { transform:rotate(360deg); } }

:root[data-theme="dark"] #wf-canvas-v2 { background: #2a2a2a !important; background-image: radial-gradient(circle, #3a3a3a 1px, transparent 1px) !important; background-size: 20px 20px !important; }

/* ===== 智能体画布暗色主题 (基于 #2a2a2a) ===== */
:root[data-theme="dark"] #agent-workflow-overlay {
    --wf-canvas-bg: #2a2a2a;
    --wf-surface: #323232;
    --wf-surface-hover: #3a3a3a;
    --wf-elevated: #383838;
    --wf-border: #404040;
    --wf-text: #e0e0e0;
    --wf-text-secondary: #a8a8a8;
    --wf-text-muted: #787878;
}
:root[data-theme="dark"] #agent-workflow-overlay #wf-canvas-v2 {
    background: #2a2a2a !important;
    background-image: radial-gradient(circle, #3a3a3a 1px, transparent 1px) !important;
}
:root[data-theme="dark"] #agent-workflow-overlay #wf-canvas-v2 > div {
    background: transparent;
}
/* 顶部栏 */
:root[data-theme="dark"] #agent-workflow-overlay > div:last-child {
    background: #323232 !important;
    border-color: #3a3a3a !important;
}
/* 浮动面板 */
:root[data-theme="dark"] #agent-workflow-overlay #wf-node-panel-v2,
:root[data-theme="dark"] #agent-workflow-overlay #wf-settings-card {
    background: #333333 !important;
    border-color: #404040 !important;
}
/* 属性面板 */
:root[data-theme="dark"] #agent-workflow-overlay #wf-props-panel {
    background: #303030 !important;
    border-color: #3a3a3a !important;
}
:root[data-theme="dark"] #agent-workflow-overlay #wf-props-panel > div:first-child,
:root[data-theme="dark"] #agent-workflow-overlay #wf-props-panel > div:last-child {
    border-color: #3a3a3a !important;
}
/* 节点 */
:root[data-theme="dark"] #agent-workflow-overlay .wf-node-el-v2 {
    background: #383838 !important;
    box-shadow: 0 2px 8px rgba(0,0,0,0.25) !important;
}
:root[data-theme="dark"] #agent-workflow-overlay .wf-node-body-v2 {
    background: #343434;
}
/* 输入框/选择框 */
:root[data-theme="dark"] #agent-workflow-overlay input,
:root[data-theme="dark"] #agent-workflow-overlay select,
:root[data-theme="dark"] #agent-workflow-overlay textarea {
    background: #2a2a2a !important;
    color: #e0e0e0 !important;
    border-color: #404040 !important;
}
:root[data-theme="dark"] #agent-workflow-overlay .wf-inline-text {
    background: transparent !important;
    border: none !important;
}
/* 节点头部保留彩色 */
:root[data-theme="dark"] #agent-workflow-overlay .wf-node-header-v2 {
    box-shadow: 0 1px 0 rgba(255,255,255,0.06);
}

/* ===== V4.44.4: 统一对话字体大小 ===== */
/* 猜你想问 - 与 AI 回复内容字体一致 */
.suggestions-container .suggestion-btn,
.suggestion-chips .suggestion-chip {
    font-size: 14px !important;
    line-height: 1.6 !important;
    color: var(--text-secondary) !important;
}
.suggestions-container .suggestion-btn:hover {
    color: var(--primary-color) !important;
}
/* 用户消息 - 与 AI 回复内容字体一致 */
.user-row .message-content {
    font-size: 14px !important;
    line-height: 1.7 !important;
}
/* Coder 模式下的对话区域一致 */
body.coder-mode .suggestions-container .suggestion-btn,
body.coder-mode .user-row .message-content {
    font-size: 14px !important;
    line-height: 1.7 !important;
}

/* ===== V4.44.6: 模型菜单始终在最上层 ===== */
/* 确保 top-nav（含模型选择器）在所有模式下高于其他元素 */
body.coder-mode .top-nav { z-index: 99999 !important; position: relative !important; }
/* 输入面板降到最底层，不遮挡模型菜单 */
body.coder-mode .input-panel { z-index: 0 !important; }

/* 智能体菜单置顶 */
@media (max-width: 768px) { .agent-selector-menu { z-index: 2147483647 !important; } }

.app-page-search input { height: 28px !important; }
.app-page-search button { height: 26px !important; }
.app-page-search .kb-upload-btn { height: 26px !important; }
/* 2026-07-31 手机端恢复触控高度 */
@media (max-width: 768px) {
    .app-page-search input { height: 42px !important; font-size: 16px !important; }
    .app-page-search button { height: auto !important; min-height: 36px !important; }
}

/* 输入页视觉风格选择器：轻量单行入口 + 共享弹窗 */
.ppt-theme-trigger {
    width:100%; min-height:60px; display:flex; align-items:center; gap:12px; padding:7px 8px;
    border:0; border-radius:10px; background:transparent; color:var(--text-primary); cursor:pointer;
    text-align:left; font-family:inherit; transition:background .16s ease;
}
.ppt-theme-trigger:hover { background:var(--hover-bg); }
.ppt-theme-trigger:focus-visible { outline:2px solid var(--primary-color); outline-offset:2px; }
.ppt-theme-trigger-preview { width:76px; height:43px; flex:0 0 76px; overflow:hidden; border-radius:6px; background:var(--hover-bg); pointer-events:none; }
.ppt-theme-trigger-copy { min-width:0; flex:1; display:flex; flex-direction:column; gap:3px; }
.ppt-theme-trigger-copy strong { font-size:13px; line-height:1.2; font-weight:600; color:var(--text-primary); }
.ppt-theme-trigger-copy small { overflow:hidden; color:var(--text-tertiary); font-size:11px; line-height:1.25; text-overflow:ellipsis; white-space:nowrap; }
.ppt-theme-trigger-chevron { width:17px; height:17px; flex:0 0 17px; color:var(--text-tertiary); }

.ppt-theme-modal {
    position:fixed; z-index:10050; inset:0; display:flex; align-items:center; justify-content:center;
    padding:20px; background:rgba(15,23,42,.36); backdrop-filter:blur(5px); -webkit-backdrop-filter:blur(5px);
}
.ppt-theme-modal-card {
    width:min(100%, 880px); max-height:min(760px, calc(100vh - 40px)); overflow:auto;
    border:1px solid rgba(148,163,184,.22); border-radius:16px; background:var(--bg-primary);
    box-shadow:0 24px 72px rgba(15,23,42,.22); padding:20px;
}
.ppt-theme-modal-head { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; padding:0 2px 15px; }
.ppt-theme-modal-head h3 { margin:0; color:var(--text-primary); font-size:16px; line-height:1.3; font-weight:650; }
.ppt-theme-modal-head p { margin:5px 0 0; color:var(--text-tertiary); font-size:12px; line-height:1.45; }
.ppt-theme-modal-close { width:30px; height:30px; display:flex; align-items:center; justify-content:center; border:0; border-radius:8px; background:transparent; color:var(--text-tertiary); cursor:pointer; }
.ppt-theme-modal-close:hover { background:var(--hover-bg); color:var(--text-primary); }
.ppt-theme-modal-close svg { width:17px; height:17px; }
/* ★ 2026-07-27 模板弹窗改竖向卡片网格：宽屏一行 4 个（老板指示） */
.ppt-theme-modal-list { display:grid; grid-template-columns:repeat(4, 1fr); gap:12px; }
.ppt-theme-modal-item {
    min-width:0; position:relative; display:flex; flex-direction:column; align-items:stretch; gap:8px; padding:10px; border:1.5px solid var(--border-color); border-radius:12px;
    background:var(--bg-primary); color:var(--text-primary); text-align:left; cursor:pointer; font-family:inherit; transition:all .18s cubic-bezier(0.4,0,0.2,1);
}
.ppt-theme-modal-item:hover { border-color:rgba(59,130,246,.45); transform:translateY(-2px); box-shadow:0 6px 16px rgba(16,24,40,.08); }
.ppt-theme-modal-item.active { border-color:var(--primary-color); background:rgba(59,130,246,.06); box-shadow:0 0 0 3px rgba(59,130,246,.1); }
.ppt-theme-modal-item:focus-visible { outline:2px solid var(--primary-color); outline-offset:1px; }
.ppt-theme-modal-thumb { width:100%; height:auto; aspect-ratio:16/9; flex:none; overflow:hidden; border-radius:8px; background:var(--hover-bg); pointer-events:none; }
.ppt-theme-modal-copy { min-width:0; flex:1; display:flex; flex-direction:column; gap:3px; }
.ppt-theme-modal-copy strong { overflow:hidden; color:var(--text-primary); font-size:12.5px; line-height:1.25; font-weight:600; text-overflow:ellipsis; white-space:nowrap; }
.ppt-theme-modal-copy small { overflow:hidden; color:var(--text-tertiary); font-size:10.5px; line-height:1.35; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; }
.ppt-theme-modal-badge { display:inline-block; margin-left:5px; padding:1px 4px; border-radius:3px; background:rgba(124,58,237,.12); color:#7c3aed; font-size:9px; font-weight:600; vertical-align:1px; }
.ppt-theme-modal-check { position:absolute; top:16px; right:16px; width:18px; height:18px; border-radius:50%; background:var(--primary-color); color:#fff; display:flex; align-items:center; justify-content:center; opacity:0; transition:opacity .15s ease; box-shadow:0 2px 6px rgba(59,130,246,.4); }
.ppt-theme-modal-item.active .ppt-theme-modal-check { opacity:1; }
.ppt-theme-modal-check svg { display:block; width:12px; height:12px; }
/* 响应式：中屏 3 个、小屏 2 个 */
@media (max-width:1100px) { .ppt-theme-modal-list { grid-template-columns:repeat(3, 1fr); } }
@media (max-width:860px) { .ppt-theme-modal-list { grid-template-columns:repeat(2, 1fr); } }
.ppt-theme-modal-upload { width:100%; display:flex; align-items:center; justify-content:center; gap:7px; margin-top:12px; padding:10px; border:0; border-radius:9px; background:transparent; color:var(--text-secondary); font-size:12px; font-family:inherit; cursor:pointer; }
.ppt-theme-modal-upload:hover { background:var(--hover-bg); color:var(--primary-color); }
.ppt-theme-modal-upload svg { width:16px; height:16px; }
body.ppt-theme-modal-open { overflow:hidden; }
@media (max-width:560px) {
    .ppt-theme-modal { align-items:flex-end; padding:0; }
    .ppt-theme-modal-card { width:100%; max-height:82vh; border-radius:16px 16px 0 0; padding:18px 14px calc(18px + env(safe-area-inset-bottom)); }
    .ppt-theme-modal-list { grid-template-columns:1fr; }
    .ppt-theme-modal-item { flex-direction:row; align-items:center; }
    .ppt-theme-modal-thumb { width:104px; height:59px; flex-basis:104px; aspect-ratio:auto; }
    .ppt-theme-modal-check { position:static; background:transparent; color:var(--primary-color); box-shadow:none; }
}

/* PPT 输入页：主输入、字号与主题预览校正 */
.ppt-input-card { max-width:780px; }
.ppt-input-card h2 { font-size:32px; letter-spacing:.2px; }
.ppt-input-card > p { font-size:15px; line-height:1.55; margin-bottom:26px; }
.ppt-prompt-composer { position:relative; width:100%; }
.ppt-input-card .ppt-prompt-composer textarea { min-height:88px; padding:17px 62px 17px 18px; border-radius:16px; font-size:16px; line-height:1.65; }
.ppt-input-card .ppt-prompt-composer textarea::placeholder { color:var(--text-tertiary); opacity:.9; }
.ppt-prompt-send-btn { position:absolute; right:12px; bottom:12px; width:40px; height:40px; display:flex; align-items:center; justify-content:center; border:0; border-radius:11px; background:var(--primary-color); color:#fff; cursor:pointer; box-shadow:0 4px 12px rgba(37,99,235,.25); transition:transform .15s ease, box-shadow .15s ease, opacity .15s ease; }
.ppt-prompt-send-btn:hover { transform:translateY(-1px); box-shadow:0 7px 16px rgba(37,99,235,.30); }
.ppt-prompt-send-btn:active { transform:translateY(0); }
.ppt-prompt-send-btn:disabled { opacity:.48; cursor:not-allowed; box-shadow:none; transform:none; }
.ppt-prompt-send-btn svg { width:19px; height:19px; margin-left:1px; }
.ppt-input-label { font-size:13px; margin-bottom:9px; }
.ppt-theme-trigger { min-height:68px; gap:14px; padding:8px 10px; }
.ppt-theme-trigger-preview { width:94px; height:53px; flex-basis:94px; position:relative; isolation:isolate; }
.ppt-theme-trigger-copy { gap:4px; }
.ppt-theme-trigger-copy strong { font-size:15px; }
.ppt-theme-trigger-copy small { font-size:12px; }
.ppt-theme-trigger-chevron { width:19px; height:19px; flex-basis:19px; }
.ppt-input-row { margin-top:2px; }
.ppt-seg-item { padding:8px 18px; font-size:13px; }
.ppt-input-row select { min-height:36px; font-size:13px !important; }
.ppt-input-foot { margin-top:20px; }
.ppt-ref-link { font-size:13px; }
.ppt-generate-btn { padding:13px 30px; font-size:15px; }
.ppt-mode-switch { font-size:13px; padding:7px 16px; }
.ppt-wizard-step { font-size:12px; }
.ppt-wizard-dot { width:24px; height:24px; font-size:11px; }
.ppt-wiz-chip, .ppt-scene-card { font-size:13px; }

/* pptFitSlide 输出是固定 1920×1080，所有主题预览必须裁切并固定定位 */
.ppt-theme-trigger-preview .ppt-slide-inner,
.ppt-theme-modal-thumb .ppt-slide-inner {
    position:absolute !important; inset:0 auto auto 0 !important; width:1920px !important; height:1080px !important;
    transform-origin:0 0 !important;
}
.ppt-theme-modal-thumb { position:relative; isolation:isolate; }
.ppt-theme-modal-thumb .ppt-slide-inner { overflow:hidden; }
.ppt-theme-modal-copy strong { font-size:12.5px; }
.ppt-theme-modal-copy small { font-size:10.5px; }
.ppt-theme-modal-head h3 { font-size:18px; }
.ppt-theme-modal-head p { font-size:13px; }

@media (max-width:768px) {
    .ppt-input-card { max-width:100%; }
    .ppt-input-card h2 { font-size:28px; }
    .ppt-input-card > p { font-size:14px; }
    .ppt-input-card .ppt-prompt-composer textarea { min-height:82px; font-size:15px; }
}

/* PPT 智脑默认：自动推荐页数与视觉风格 */
.ppt-prompt-send-btn { width:42px; height:42px; border-radius:50%; background:#2563eb; color:#fff; box-shadow:none; }
.ppt-prompt-send-btn:hover { background:#1d4ed8; box-shadow:none; transform:none; }
.ppt-prompt-send-btn:active { background:#1e40af; box-shadow:none; transform:none; }
.ppt-prompt-send-btn:disabled { box-shadow:none; }
.ppt-prompt-send-btn svg { display:block; width:20px; height:20px; margin:0; color:#fff; stroke:#fff; fill:none; visibility:visible; opacity:1; }
.ppt-input-card .ppt-prompt-composer textarea { border-radius:20px; }
.ppt-smart-note { display:inline-flex; align-items:center; margin-left:6px; color:var(--primary-color); font-size:11px; font-weight:600; vertical-align:1px; }
.ppt-smart-note::before { content:''; width:5px; height:5px; margin-right:4px; border-radius:50%; background:currentColor; }
.ppt-seg-item[data-v="auto"] { min-width:50px; }

/* PPT 输入页精简：中性发送按钮、清晰焦点与快速风格选择 */
.ppt-input-card .ppt-prompt-composer textarea {
    border-radius:28px;
    background:var(--bg-primary);
    color:var(--text-primary);
    border:1px solid #a8afb8;
    box-shadow:none;
    transition:border-color .16s ease, box-shadow .16s ease;
}
.ppt-input-card .ppt-prompt-composer textarea:focus {
    border-color:#3f4651;
    box-shadow:0 0 0 3px rgba(63,70,81,.14);
    outline:none;
}
.ppt-prompt-send-btn,
.ppt-prompt-send-btn:hover,
.ppt-prompt-send-btn:active {
    width:42px;
    height:42px;
    border-radius:50%;
    background:#6b7280;
    color:#fff;
    box-shadow:none;
    transform:none;
}
.ppt-prompt-send-btn:hover { background:#4b5563; }
.ppt-prompt-send-btn:active { background:#374151; }
.ppt-prompt-send-btn svg { color:#fff; stroke:#fff; }
.ppt-style-section { margin-top:18px; }
.ppt-style-section-head { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:9px; }
.ppt-style-section-head .ppt-input-label { margin:0; }
.ppt-style-more { border:0; padding:3px 0; background:transparent; color:var(--text-secondary); font:inherit; font-size:12px; cursor:pointer; }
.ppt-style-more:hover { color:var(--text-primary); }
.ppt-theme-quick-list { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:8px; }
.ppt-theme-quick-item { min-width:0; overflow:hidden; display:flex; flex-direction:column; gap:6px; padding:0; border:1px solid transparent; border-radius:10px; background:transparent; color:var(--text-secondary); font:inherit; font-size:12px; line-height:1.35; text-align:left; cursor:pointer; }
.ppt-theme-quick-item:hover { color:var(--text-primary); }
.ppt-theme-quick-item.active { color:var(--text-primary); border-color:#9ca3af; }
.ppt-theme-quick-thumb { position:relative; display:block; width:100%; aspect-ratio:16 / 9; overflow:hidden; border-radius:8px; background:var(--hover-bg); pointer-events:none; }
.ppt-theme-quick-thumb .ppt-slide-inner { position:absolute !important; inset:0 auto auto 0 !important; width:1920px !important; height:1080px !important; transform-origin:0 0 !important; }
.ppt-theme-quick-item > span:last-child { overflow:hidden; padding:0 2px 2px; text-overflow:ellipsis; white-space:nowrap; }
@media (max-width:560px) { .ppt-theme-quick-list { grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; } }

/* PPT 输入框工具区：等距上送按钮与低噪声生成选项 */
.ppt-input-card .ppt-prompt-composer textarea { padding-right:188px; }
.ppt-prompt-send-btn,
.ppt-prompt-send-btn:hover,
.ppt-prompt-send-btn:active { right:14px; bottom:14px; background:#9ca3af; }
.ppt-prompt-send-btn:hover { background:#6b7280; }
.ppt-prompt-send-btn:active { background:#4b5563; }
.ppt-prompt-send-btn svg { width:21px; height:21px; }
.ppt-composer-model-wrap { position:absolute; right:66px; bottom:17px; z-index:15; }
.ppt-composer-model { display:flex; align-items:center; gap:4px; padding:5px 10px; border:0; border-radius:7px; background:transparent; color:var(--text-secondary); font:12px inherit; cursor:pointer; outline:none; max-width:130px; overflow:hidden; }
.ppt-composer-model:hover, .ppt-composer-model:focus { color:var(--text-primary); background:rgba(148,163,184,.10); }
.ppt-composer-model span { white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ppt-model-dropdown { position:absolute; bottom:calc(100% + 6px); right:0; width:280px; max-height:360px; background:var(--bg-primary); border:1px solid var(--border-color); border-radius:12px; box-shadow:0 8px 32px rgba(0,0,0,0.15); z-index:20; overflow:hidden; display:flex; flex-direction:column; }
.ppt-model-search { padding:8px; border-bottom:1px solid var(--border-color); flex-shrink:0; }
.ppt-model-list { flex:1; overflow-y:auto; padding:4px; }
.ppt-model-list::-webkit-scrollbar { width:4px; }
.ppt-model-list::-webkit-scrollbar-thumb { background:var(--border-focus); border-radius:2px; }
.ppt-model-item { display:flex; align-items:center; gap:8px; padding:8px 10px; border-radius:8px; cursor:pointer; transition:background 0.1s; }
.ppt-model-item:hover { background:var(--hover-bg); }
.ppt-model-item.active { background:rgba(37,99,235,0.08); color:var(--primary-color); }
.ppt-model-item-name { font-size:12px; font-weight:500; flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ppt-model-item-vendor { font-size:10px; color:var(--text-tertiary); flex-shrink:0; }
.ppt-model-item.active .ppt-model-item-name { color:var(--primary-color); font-weight:600; }
.ppt-generation-options { display:flex; align-items:center; flex-wrap:wrap; gap:8px 16px; margin:15px 0 2px; }
.ppt-option-switch { display:inline-flex; align-items:center; gap:7px; color:var(--text-secondary); font-size:13px; line-height:1.3; cursor:pointer; user-select:none; }
.ppt-option-switch input { width:14px; height:14px; margin:0; accent-color:#6b7280; cursor:pointer; }
.ppt-generation-options p { flex-basis:100%; margin:0; color:var(--text-tertiary); font-size:11px; line-height:1.45; }
@media (max-width:560px) {
    .ppt-input-card .ppt-prompt-composer textarea { padding-right:18px; padding-bottom:58px; }
    .ppt-prompt-send-btn,.ppt-prompt-send-btn:hover,.ppt-prompt-send-btn:active { right:14px; bottom:14px; }
    .ppt-composer-model { right:66px; bottom:18px; }
}
/* 快速主题只用文字色表达选中状态，不添加卡片边框 */
.ppt-theme-quick-item.active { border-color:transparent; }

/* PPT 附件与自动风格：输入区内聚、低干扰展示 */
.ppt-input-card .ppt-prompt-composer textarea { padding-left:54px; }
.ppt-composer-attach { position:absolute; left:14px; bottom:14px; width:28px; height:28px; display:flex; align-items:center; justify-content:center; border:0; border-radius:7px; background:transparent; color:var(--text-tertiary); cursor:pointer; z-index:3; }
.ppt-composer-attach:hover { color:var(--text-primary); background:rgba(148,163,184,.10); }
.ppt-composer-attach svg { width:18px; height:18px; }
.ppt-ref-composer-card { display:flex; align-items:center; gap:9px; max-width:100%; margin:10px 0 -4px; padding:8px 10px; border-radius:10px; background:var(--hover-bg); color:var(--text-secondary); }
.ppt-ref-composer-icon { width:25px; height:25px; display:flex; align-items:center; justify-content:center; flex:0 0 25px; color:var(--text-tertiary); }
.ppt-ref-composer-icon svg { width:17px; height:17px; }
.ppt-ref-composer-copy { display:flex; min-width:0; flex:1; flex-direction:column; gap:2px; }
.ppt-ref-composer-copy strong { overflow:hidden; color:var(--text-primary); font-size:12px; line-height:1.25; text-overflow:ellipsis; white-space:nowrap; }
.ppt-ref-composer-copy small { color:var(--text-tertiary); font-size:11px; }
.ppt-ref-composer-remove { width:24px; height:24px; padding:0; border:0; border-radius:6px; background:transparent; color:var(--text-tertiary); font-size:18px; line-height:1; cursor:pointer; }
.ppt-ref-composer-remove:hover { color:var(--text-primary); background:rgba(148,163,184,.12); }
.ppt-theme-quick-auto { justify-content:flex-start; }
.ppt-theme-quick-auto-mark { display:flex; align-items:center; justify-content:center; width:100%; aspect-ratio:16 / 9; border-radius:8px; background:linear-gradient(135deg,#f1f5f9,#e2e8f0); color:#64748b; }
.ppt-theme-quick-auto-mark svg { width:28px; height:28px; }
.ppt-theme-quick-item.active .ppt-theme-quick-auto-mark { color:#475569; background:#e2e8f0; }
@media (max-width:560px) { .ppt-input-card .ppt-prompt-composer textarea { padding-left:50px; } }

/* 与主页对话框一致的左下工具图标：附件、联网和插图 */
.ppt-input-card .ppt-prompt-composer textarea { padding-left:118px; }
.ppt-composer-tool { position:absolute; bottom:14px; width:28px; height:28px; display:flex; align-items:center; justify-content:center; border-radius:7px; color:var(--text-tertiary); cursor:pointer; z-index:3; }
.ppt-composer-tool input { position:absolute; opacity:0; pointer-events:none; }
.ppt-composer-tool svg { width:18px; height:18px; }
.ppt-composer-tool:hover { color:var(--text-primary); background:rgba(148,163,184,.10); }
.ppt-composer-tool:has(input:checked) { color:#fff; background:var(--primary-color); }
.ppt-composer-tool:has(input:checked):hover { background:var(--primary-color); opacity:0.9; }
.ppt-composer-attach { left:14px; }
.ppt-composer-tool[title="联网检索"] { left:48px; }
.ppt-composer-tool[title="生成插图"] { left:82px; }
.ppt-mode-toggle-btn { position:absolute; bottom:14px; left:116px; height:28px; min-width:28px; padding:0 8px; display:flex; align-items:center; justify-content:center; border-radius:7px; border:none; background:transparent; color:var(--text-tertiary); font-size:11px; font-weight:700; cursor:pointer; letter-spacing:0.5px; z-index:5; transition:all .15s ease; }
.ppt-mode-toggle-btn:hover { color:var(--primary-color); background:rgba(59,130,246,0.10); }
.ppt-mode-toggle-btn.active { color:#fff; background:var(--primary-color); }
.ppt-mode-toggle-btn.active:hover { background:var(--primary-color); opacity:0.9; }
.sr-only { position:absolute !important; width:1px !important; height:1px !important; padding:0 !important; margin:-1px !important; overflow:hidden !important; clip:rect(0,0,0,0) !important; white-space:nowrap !important; border:0 !important; }
@media (max-width:560px) { .ppt-input-card .ppt-prompt-composer textarea { padding-left:118px; } }

/* 编辑预览翻页控件：固定于画布下方，首尾页明确禁用 */
.ppt-view-nav { flex:0 0 auto; min-height:52px; padding:10px 14px; }
.ppt-nav-btn:disabled { cursor:not-allowed; opacity:.36; color:var(--text-tertiary); background:transparent; border-color:var(--border-color); }
.ppt-nav-btn:disabled:hover { color:var(--text-tertiary); background:transparent; border-color:var(--border-color); }

/* 生成期间保持画布可见：逐页预览而不是空白等待 */
.ppt-canvas-view { position:relative; flex-direction:column; gap:14px; }
.ppt-canvas-placeholder { width:100%; height:100%; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:12px; color:var(--text-secondary); font-size:13px; }

.ppt-generation-status { width:min(900px,100%); padding:10px 12px; box-sizing:border-box; border:1px solid var(--border-color); border-radius:10px; background:color-mix(in srgb, var(--bg-primary) 92%, transparent); box-shadow:0 4px 16px rgba(15,23,42,.05); }
.ppt-generation-status-head { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:7px; font-size:12px; }
#ppt-generation-stage { color:var(--text-primary); font-weight:600; }
#ppt-generation-page { overflow:hidden; color:var(--text-tertiary); text-overflow:ellipsis; white-space:nowrap; }
.ppt-generation-status-track { height:3px; overflow:hidden; border-radius:999px; background:var(--border-color); }
.ppt-generation-status-fill { width:0; height:100%; border-radius:inherit; background:#64748b; transition:width .35s ease; }

/* PPT 生成过程体验升级：持续反馈、明确阶段和可恢复操作 */
.ppt-canvas-view { flex-direction:column; gap:16px; }
.ppt-canvas-placeholder { background:linear-gradient(145deg,#f8fafc,#eef2ff); }
.ppt-generation-status { width:min(900px,100%); padding:18px 20px; border:1px solid color-mix(in srgb,var(--primary-color) 20%,var(--border-color)); border-radius:16px; background:var(--bg-primary); box-shadow:0 12px 40px rgba(15,23,42,.08); }
.ppt-generation-status-head { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; margin-bottom:14px; }
.ppt-generation-status-copy { display:flex; flex-direction:column; gap:4px; min-width:0; }
.ppt-generation-status-copy span { color:var(--primary-color); font-size:12px; font-weight:700; letter-spacing:.04em; }
.ppt-generation-status-copy strong { overflow:hidden; color:var(--text-primary); font-size:16px; font-weight:650; text-overflow:ellipsis; white-space:nowrap; }
#ppt-generation-elapsed { flex:none; padding:5px 9px; border-radius:999px; background:var(--hover-bg); color:var(--text-secondary); font-size:11px; font-variant-numeric:tabular-nums; }
.ppt-generation-status-track { height:6px; margin-bottom:15px; background:var(--border-color); }
.ppt-generation-status-fill { background:linear-gradient(90deg,#2563eb,#7c3aed); }
.ppt-generation-steps { display:grid; grid-template-columns:repeat(5,1fr); gap:7px; margin-bottom:15px; }
.ppt-generation-steps span { position:relative; padding-top:12px; color:var(--text-tertiary); font-size:11px; text-align:center; }
.ppt-generation-steps span::before { content:""; position:absolute; top:0; left:50%; width:7px; height:7px; border:2px solid var(--border-color); border-radius:50%; background:var(--bg-primary); transform:translateX(-50%); }
.ppt-generation-steps span.active,.ppt-generation-steps span.done { color:var(--text-primary); font-weight:600; }
.ppt-generation-steps span.active::before { border-color:var(--primary-color); box-shadow:0 0 0 4px color-mix(in srgb,var(--primary-color) 13%,transparent); }
.ppt-generation-steps span.done::before { border-color:var(--primary-color); background:var(--primary-color); }
.ppt-generation-status-foot { display:flex; align-items:center; justify-content:space-between; gap:12px; color:var(--text-secondary); font-size:12px; }
.ppt-generation-status-foot>div { display:flex; gap:8px; }
.ppt-generation-secondary,.ppt-generation-primary { padding:7px 11px; border-radius:8px; font:600 12px inherit; cursor:pointer; }
.ppt-generation-secondary { border:1px solid var(--border-color); background:transparent; color:var(--text-secondary); }
.ppt-generation-primary { border:1px solid var(--primary-color); background:var(--primary-color); color:#fff; }
.ppt-generation-status.is-error { border-color:color-mix(in srgb,var(--error-color) 45%,var(--border-color)); }
.ppt-generation-status.is-error .ppt-generation-status-copy span { color:var(--error-color); }
.ppt-generation-status.is-error .ppt-generation-status-fill { background:var(--error-color); }
@media(max-width:768px){.ppt-generation-status{padding:14px}.ppt-generation-steps{grid-template-columns:repeat(5,minmax(58px,1fr));overflow-x:auto}.ppt-generation-status-foot{align-items:flex-start;flex-direction:column}.ppt-generation-status-foot>div{width:100%}.ppt-generation-status-foot button{flex:1}}

/* 2026-07-24 PPT 生成工作区：写作模式式左右分栏 */
.ppt-editor-stage { min-width:0; background:#f8fafc; }
.ppt-generation-chat { width:280px; min-width:240px; max-width:470px; display:flex; flex-direction:column; flex:none; border-right:1px solid var(--border-color); background:var(--bg-primary); }
.ppt-generation-chat-head { height:58px; padding:0 18px; display:flex; align-items:center; justify-content:space-between; border-bottom:1px solid var(--border-color); }
.ppt-generation-chat-head>div { display:flex; flex-direction:column; gap:2px; }
.ppt-generation-chat-head strong { color:var(--text-primary); font-size:14px; font-weight:650; }
.ppt-generation-chat-head span:not(.ppt-chat-live-dot) { color:var(--text-tertiary); font-size:11px; }
.ppt-chat-live-dot { width:8px; height:8px; border-radius:50%; background:#94a3b8; box-shadow:0 0 0 4px rgba(148,163,184,.12); }
.ppt-generation-chat.is-live .ppt-chat-live-dot { background:#2563eb; box-shadow:0 0 0 4px rgba(37,99,235,.12); animation:pptChatPulse 1.8s ease-in-out infinite; }
.ppt-generation-chat.is-error .ppt-chat-live-dot { background:#dc2626; box-shadow:0 0 0 4px rgba(220,38,38,.1); animation:none; }
.ppt-generation-chat:not(.is-live):not(.is-error) .ppt-chat-live-dot { background:#10b981; box-shadow:0 0 0 4px rgba(16,185,129,.12); animation:none; }
.ppt-generation-status.is-complete .ppt-generation-status-fill { width:100%!important; background:#10b981; }
.ppt-generation-status.is-complete .ppt-generation-status-track { opacity:0.5; }
@keyframes pptChatPulse { 50% { opacity:.45; transform:scale(.78); } }
.ppt-generation-chat-list { flex:1; min-height:0; overflow-y:auto; padding:18px 16px 28px; display:flex; flex-direction:column; gap:14px; scroll-behavior:smooth; }
.ppt-chat-turn { display:flex; align-items:flex-start; gap:9px; animation:pptChatIn .22s ease; }
.ppt-chat-turn.user { flex-direction:row-reverse; }
@keyframes pptChatIn { from { opacity:0; transform:translateY(5px); } }
.ppt-chat-avatar { width:28px; height:28px; flex:none; display:grid; place-items:center; border-radius:9px; background:#eff6ff; color:#2563eb; font-size:11px; font-weight:750; }
.ppt-chat-turn.user .ppt-chat-avatar { background:#e2e8f0; color:#475569; }
.ppt-chat-bubble { max-width:calc(100% - 42px); padding:10px 12px; border:1px solid var(--border-color); border-radius:4px 14px 14px 14px; background:#fff; color:var(--text-primary); font-size:13px; line-height:1.65; box-shadow:0 2px 8px rgba(15,23,42,.035); }
.ppt-chat-turn.user .ppt-chat-bubble { border-color:#2563eb; border-radius:14px 4px 14px 14px; background:#2563eb; color:#fff; }
.ppt-chat-bubble strong { display:block; margin-bottom:3px; font-size:12px; }
.ppt-chat-bubble p { margin:0; white-space:pre-wrap; }
.ppt-chat-meta { margin-top:5px; color:var(--text-tertiary); font-size:10px; }
.ppt-chat-turn.user .ppt-chat-meta { color:rgba(255,255,255,.72); }
.ppt-chat-streaming::after { content:""; display:inline-block; width:5px; height:13px; margin-left:4px; vertical-align:-2px; background:#2563eb; animation:pptChatCursor .8s step-end infinite; }
@keyframes pptChatCursor { 50% { opacity:0; } }
.ppt-generation-chat-actions { padding:12px 16px; display:flex; gap:8px; border-top:1px solid var(--border-color); background:var(--bg-primary); }
.ppt-generation-chat-actions button { flex:1; }
.ppt-editor-workspace { flex:1; min-width:0; display:flex; overflow:hidden; }
.ppt-editor-workspace .ppt-slide-panel { width:178px; }
.ppt-editor-workspace .ppt-view-panel { background:#f8fafc; }
.ppt-editor-workspace .ppt-generation-status { width:100%; padding:12px 18px 10px; flex:none; border:0; border-bottom:1px solid var(--border-color); border-radius:0; box-shadow:none; background:rgba(255,255,255,.92); }
.ppt-editor-workspace .ppt-generation-status-head { margin-bottom:9px; align-items:center; }
.ppt-editor-workspace .ppt-generation-status-copy { flex-direction:row; align-items:center; gap:10px; }
.ppt-editor-workspace .ppt-generation-status-copy strong { font-size:13px; font-weight:550; }
.ppt-editor-workspace .ppt-generation-status-track { height:4px; margin:0; }
.ppt-editor-workspace>.ppt-view-panel>.ppt-generation-steps { flex:none; margin:0; padding:9px 18px 8px; background:#fff; border-bottom:1px solid var(--border-color); }
.ppt-editor-workspace .ppt-canvas-view { flex:1; min-height:0; padding:22px 28px; justify-content:center; align-items:center; background:linear-gradient(145deg,#f8fafc,#eef2f7); overflow:hidden; }
.ppt-editor-workspace .ppt-canvas-slide { max-width:100%; max-height:100%; }
.ppt-editor-footer { min-height:46px; flex:none; padding:0 18px; display:flex; align-items:center; justify-content:space-between; border-top:1px solid var(--border-color); background:#fff; color:var(--text-secondary); font-size:12px; }
.ppt-editor-footer .ppt-view-nav { position:static; transform:none; margin-left:auto; padding:0; border:0; box-shadow:none; background:transparent; }
@media(max-width:980px){.ppt-generation-chat{width:300px;min-width:280px}.ppt-editor-workspace .ppt-slide-panel{width:138px}.ppt-editor-workspace .ppt-canvas-view{padding:16px}}
@media(max-width:768px){.ppt-editor-stage{flex-direction:column}.ppt-generation-chat{width:100%;max-width:none;min-width:0;height:34%;min-height:190px;border-right:0;border-bottom:1px solid var(--border-color)}.ppt-generation-chat-head{height:44px}.ppt-generation-chat-list{padding:10px 12px;gap:9px}.ppt-generation-chat-actions{padding:8px 12px}.ppt-editor-workspace{height:66%}.ppt-editor-workspace .ppt-slide-panel{width:104px}.ppt-editor-workspace>.ppt-view-panel>.ppt-generation-steps{display:none}.ppt-editor-workspace .ppt-generation-status{padding:8px 10px}.ppt-editor-workspace .ppt-generation-status-copy strong{max-width:180px}.ppt-editor-workspace .ppt-canvas-view{padding:10px}.ppt-editor-footer{min-height:40px;padding:0 10px}}

/* 2026-07-24 PPT 需求输入框：整块可输入、无外边框、柔和焦点投影 */
.ppt-input-card .ppt-prompt-composer {
    border:0;
    border-radius:28px;
    background:var(--bg-primary);
    box-shadow:0 5px 18px rgba(15,23,42,.10), 0 1px 4px rgba(15,23,42,.06);
    transition:box-shadow .18s ease;
}
.ppt-input-card .ppt-prompt-composer:focus-within {
    box-shadow:0 7px 24px rgba(37,99,235,.098), 0 2px 8px rgba(15,23,42,.07);
}
.ppt-input-card .ppt-prompt-composer textarea,
.ppt-input-card .ppt-prompt-composer textarea:focus {
    position:relative;
    z-index:1;
    border:0;
    outline:0;
    box-shadow:none;
    background:transparent;
}
.ppt-input-card .ppt-prompt-composer textarea { padding:17px 188px 60px 18px; }
.ppt-composer-attach,
.ppt-composer-tool,
.ppt-composer-model,
.ppt-prompt-send-btn { z-index:2; }
@media (max-width:560px) {
    .ppt-input-card .ppt-prompt-composer textarea { padding:17px 18px 60px; }
}

/* 2026-07-24 PPT 左侧持续输入框：保留完整输入能力用于修改和二次生成 */
.ppt-followup-composer { position:relative; flex:none; margin:0 14px 12px; border-radius:16px; background:var(--bg-primary); box-shadow:0 5px 18px rgba(15,23,42,.10),0 1px 4px rgba(15,23,42,.06); transition:box-shadow .18s ease; }
.ppt-followup-composer:focus-within { box-shadow:0 7px 24px rgba(37,99,235,.098),0 2px 8px rgba(15,23,42,.07); }
.ppt-followup-composer textarea { display:block; width:100%; min-height:92px; box-sizing:border-box; resize:none; border:0; outline:0; border-radius:16px; padding:13px 48px 13px 14px; background:transparent; color:var(--text-primary); font:13px/1.6 inherit; }
.ppt-followup-composer textarea::placeholder { color:var(--text-tertiary); }
.ppt-followup-composer button { position:absolute; right:10px; bottom:10px; width:34px; height:34px; display:grid; place-items:center; border:0; border-radius:50%; background:#9ca3af; color:#fff; cursor:pointer; }
.ppt-followup-composer button:hover { background:#6b7280; }
.ppt-followup-composer button svg { width:17px; height:17px; }
@media(max-width:768px){.ppt-generation-chat{height:42%;min-height:260px}.ppt-editor-workspace{height:58%}.ppt-followup-composer{margin:0 12px 8px}.ppt-followup-composer textarea{min-height:70px}}

/* 2026-07-24 PPT 流程收敛、精致步骤条与可拖拽双栏 */
.ppt-generation-chat { width:var(--ppt-chat-width,280px); border-right:0; }
.ppt-workspace-resizer { position:relative; z-index:12; width:1px; flex:0 0 1px; background:#d8dee8; cursor:col-resize; touch-action:none; }
.ppt-workspace-resizer::before { content:""; position:absolute; inset:0 -8px; }
.ppt-workspace-resizer:hover,.ppt-resizing .ppt-workspace-resizer { background:#94a3b8; }
body.ppt-resizing { cursor:col-resize; user-select:none; }
body.ppt-resizing iframe { pointer-events:none; }
.ppt-editor-workspace .ppt-slide-panel { border-right:1px solid #d8dee8; }
.ppt-editor-workspace .ppt-generation-status { padding:11px 18px 9px; border-bottom:1px solid #e2e8f0; }
.ppt-editor-workspace>.ppt-view-panel>.ppt-generation-steps { position:relative; display:flex; align-items:center; justify-content:center; gap:16px; padding:12px 22px 11px; }
.ppt-editor-workspace>.ppt-view-panel>.ppt-generation-steps span { position:relative; display:inline-flex; align-items:center; gap:6px; min-width:0; padding:0; font-size:12px; white-space:nowrap; letter-spacing:.01em; }
.ppt-editor-workspace>.ppt-view-panel>.ppt-generation-steps span::before { content:""; position:static; transform:none; margin:0; flex:none; z-index:2; width:10px; height:10px; border:1px solid #cbd5e1; border-radius:50%; background:var(--bg-primary); box-shadow:none; }
.ppt-editor-workspace>.ppt-view-panel>.ppt-generation-steps span:not(:first-child)::after { content:""; position:absolute; top:50%; right:calc(100% + 3px); width:10px; height:2px; background:#dbe3ed; transform:translateY(-50%); }
.ppt-editor-workspace>.ppt-view-panel>.ppt-generation-steps span.done::after { background:#6f9ee8; }
.ppt-editor-workspace>.ppt-view-panel>.ppt-generation-steps span.active::before { border-color:#6f9ee8; background:#fff; box-shadow:0 0 0 4px rgba(111,158,232,.13); }
.ppt-editor-workspace>.ppt-view-panel>.ppt-generation-steps span.done::before { border-color:var(--primary-color); background:var(--primary-color); }
.ppt-chat-live-dot { display:none!important; }
.ppt-editor-workspace>.ppt-view-panel>.ppt-generation-steps span.done::before { border-color:#6f9ee8; background:#6f9ee8; }
.ppt-stage-waiting { flex:1; max-width:560px; margin:auto; padding:42px 44px; box-sizing:border-box; text-align:center; border:0; border-radius:18px; background:#fff; box-shadow:0 12px 38px rgba(15,23,42,.08); }
.ppt-stage-waiting-index { display:grid; place-items:center; width:42px; height:42px; margin:0 auto 17px; border-radius:13px; background:#eff5ff; color:#5d88ce; font-size:13px; font-weight:750; }
.ppt-stage-waiting strong { display:block; margin-bottom:9px; color:var(--text-primary); font-size:18px; }
.ppt-stage-waiting p { margin:0; color:var(--text-secondary); font-size:13px; line-height:1.75; }
.ppt-stage-waiting-actions { display:flex; justify-content:center; gap:10px; margin-top:24px; }
.ppt-stage-waiting-actions button { padding:9px 15px; border:1px solid #d8dee8; border-radius:9px; background:#fff; color:#64748b; font:600 12px inherit; cursor:pointer; }
.ppt-stage-waiting-actions button.primary { border-color:#6f9ee8; background:#6f9ee8; color:#fff; }
@media(max-width:768px){.ppt-workspace-resizer{display:none}.ppt-generation-chat{width:100%!important;max-width:none!important}.ppt-stage-waiting{margin:12px;padding:24px 18px}.ppt-editor-workspace>.ppt-view-panel>.ppt-generation-steps{display:none}}

/* 2026-07-24 PPT 极简画布：16:9 contain、合并进度、状态内操作和悬浮翻页 */
.ppt-overlay { --ppt-toolbar-height:0px; }
.ppt-main-area { min-height:0; }
.ppt-generation-chat-actions { display:none!important; }
/* ★ 2026-08-26 老板指令：PPT 生成完成操作按钮（保存到云盘 / 保存到本地） */
.ppt-chat-actions-bubble { display:flex; flex-direction:column; gap:8px; }
.ppt-chat-actions-row { display:flex; gap:8px; flex-wrap:wrap; }
.ppt-chat-action-btn { flex:1; min-width:112px; padding:9px 12px; display:flex; align-items:center; justify-content:center; gap:6px; border:1px solid #d8dee8; border-radius:9px; background:#fff; color:#334155; font:600 12px inherit; cursor:pointer; transition:background .15s; }
.ppt-chat-action-btn:hover { background:#f1f5f9; }
.ppt-chat-action-btn.primary { border-color:#2563EB; background:#2563EB; color:#fff; }
.ppt-chat-action-btn.primary:hover { background:#1d4ed8; }
.ppt-chat-action-btn svg { width:14px; height:14px; flex-shrink:0; }
.ppt-chat-actions-hint { color:#94a3b8; font-size:11px; line-height:1.6; }
@media(max-width:768px){ .ppt-chat-action-btn { min-width:0; padding:8px; font-size:11px; } }
.ppt-chat-retry { flex:none; margin:0 14px 12px; }
.ppt-editor-workspace .ppt-generation-status { min-height:42px; padding:5px 10px 5px 14px; display:flex!important; align-items:center; gap:12px; background:#fff; }
.ppt-editor-workspace .ppt-generation-status-head { order:2; flex:0 0 auto; margin:0 0 0 auto; }
.ppt-editor-workspace .ppt-generation-status-head>#ppt-generation-elapsed { margin-right:2px; padding:0; background:transparent; color:#94a3b8; }
.ppt-generation-status-actions { display:flex; align-items:center; gap:2px; }
.ppt-status-action { height:30px; padding:0 8px; display:flex; align-items:center; gap:5px; border:0; border-radius:7px; background:transparent; color:#64748b; font:500 11px inherit; cursor:pointer; }
.ppt-status-action:hover { background:#f1f5f9; color:#334155; }
.ppt-status-action svg { width:15px; height:15px; }
.ppt-status-action.icon-only { width:30px; padding:0; justify-content:center; }
.ppt-progress-mini { order:1; flex:1; height:2px; overflow:hidden; border-radius:999px; background:#e7ebf1; }
#ppt-progress-bar-fill { width:0; height:100%; background:#6f9ee8; transition:width .35s ease; }
.ppt-editor-workspace .ppt-generation-status-track { display:none; }
.ppt-editor-workspace>.ppt-view-panel>.ppt-generation-steps { padding:9px 18px 8px; }
.ppt-editor-workspace>.ppt-view-panel>.ppt-generation-steps span { min-width:82px; padding-top:20px; }
.ppt-editor-workspace .ppt-canvas-view { position:relative; display:flex; flex-direction:row; align-items:center; justify-content:center; padding:16px 54px 16px 16px; overflow:hidden; background:#f5f6f8; }
.ppt-view-nav { position:absolute!important; top:50%; right:10px; transform:translateY(-50%)!important; z-index:30; display:flex; flex-direction:column; align-items:center; gap:4px; min-height:0; padding:8px 5px!important; border:1px solid rgba(15,23,42,0.12)!important; border-radius:999px; background:rgba(255,255,255,0.94)!important; box-shadow:0 6px 24px rgba(15,23,42,0.14)!important; backdrop-filter:blur(6px); }
.ppt-nav-btn { width:28px; height:28px; border:0; border-radius:50%; background:transparent; color:#334155; display:flex; align-items:center; justify-content:center; }
.ppt-nav-btn svg { width:14px; height:14px; }
.ppt-nav-btn:hover { border:0; background:rgba(15,23,42,0.07); color:#0f172a; }
#ppt-slide-indicator { min-width:30px; font-size:11px; font-weight:600; color:#475569; writing-mode:horizontal-tb; text-align:center; font-variant-numeric:tabular-nums; }
.ppt-editor-footer { display:none!important; }
.ppt-theme-panel { top:48px; right:12px; }
@media(max-width:768px){.ppt-status-action span{display:none}.ppt-editor-workspace .ppt-generation-status{padding-left:8px}.ppt-editor-workspace .ppt-canvas-view{padding:8px 38px 8px 8px}.ppt-view-nav{right:4px}}

/* 2026-07-24 PPT 阶段线即进度：取消独立进度条 */
.ppt-progress-mini { display:none!important; }
.ppt-editor-workspace .ppt-generation-status { justify-content:flex-end; }
.ppt-editor-workspace .ppt-generation-status-head { margin-left:0; }
.ppt-editor-workspace>.ppt-view-panel>.ppt-generation-steps { overflow:hidden; }
.ppt-editor-workspace>.ppt-view-panel>.ppt-generation-steps::before { content:""; position:absolute; top:14px; left:calc(50% - 164px); width:328px; height:1px; background:#dbe3ed; }
.ppt-generation-steps-progress { position:absolute; z-index:1; top:14px; left:calc(50% - 164px); width:calc(328px * var(--ppt-step-progress,0) / 100); height:1px; background:#6f9ee8; transition:width .35s ease; }
.ppt-editor-workspace>.ppt-view-panel>.ppt-generation-steps span { z-index:2; }
.ppt-editor-workspace>.ppt-view-panel>.ppt-generation-steps span:not(:first-child)::after { display:none; }

/* 2026-07-24 PPT 当前页实时生成反馈 */
.ppt-live-building { width:100%; height:100%; box-sizing:border-box; display:flex; flex-direction:column; align-items:center; justify-content:center; padding:10%; background:#fff; color:#64748b; text-align:center; }
.ppt-live-building>span { margin-bottom:20px; color:#cbd5e1; font-size:54px; font-weight:750; letter-spacing:-.04em; }
.ppt-live-building strong { max-width:78%; color:#334155; font-size:30px; line-height:1.35; }
.ppt-live-building p { margin:12px 0 28px; font-size:18px; }
.ppt-live-building i { width:180px; height:2px; overflow:hidden; border-radius:999px; background:#e2e8f0; }
.ppt-live-building i::after { content:""; display:block; width:45%; height:100%; background:#6f9ee8; animation:pptLiveBuild 1.3s ease-in-out infinite; }
@keyframes pptLiveBuild { from{transform:translateX(-110%)} to{transform:translateX(330%)} }

/* 2026-07-24 PPT 右侧单行顶栏：阶段进度与操作合栏，扩大画布空间 */
.ppt-workspace-topbar { position:relative; z-index:20; min-height:48px; flex:none; display:flex; align-items:center; gap:10px; padding:0 8px 0 16px; border-bottom:1px solid #e2e8f0; background:#fff; }
.ppt-workspace-topbar>.ppt-generation-steps { flex:1; min-width:390px; height:47px; margin:0; padding:7px 6px 5px; border:0; overflow:hidden; }
.ppt-workspace-topbar>.ppt-generation-steps span { min-width:74px; padding:19px 4px 0; font-size:10px; white-space:nowrap; }
.ppt-workspace-topbar>.ppt-generation-steps span::before { width:8px; height:8px; top:0; }
.ppt-workspace-topbar>.ppt-generation-steps::before { top:11px; left:calc(50% - 148px); width:296px; }
.ppt-workspace-topbar .ppt-generation-steps-progress { top:11px; left:calc(50% - 148px); width:calc(296px * var(--ppt-step-progress,0) / 100); }
.ppt-workspace-topbar>.ppt-generation-status { width:auto; min-width:max-content; min-height:47px; flex:0 0 auto; padding:0; border:0; background:transparent; }
.ppt-workspace-topbar .ppt-generation-status-head { margin:0; }
.ppt-workspace-topbar #ppt-generation-elapsed { font-size:10px; white-space:nowrap; }
@media(max-width:1100px){.ppt-workspace-topbar{padding-left:8px;gap:4px}.ppt-workspace-topbar>.ppt-generation-steps{min-width:310px}.ppt-workspace-topbar>.ppt-generation-steps span{min-width:62px}.ppt-workspace-topbar>.ppt-generation-steps::before{left:calc(50% - 124px);width:248px}.ppt-workspace-topbar .ppt-generation-steps-progress{left:calc(50% - 124px);width:calc(248px * var(--ppt-step-progress,0) / 100)}.ppt-workspace-topbar #ppt-generation-elapsed{display:none}}
@media(max-width:768px){.ppt-workspace-topbar{min-height:42px;justify-content:flex-end;padding:0 5px;border-bottom:1px solid #e2e8f0}.ppt-workspace-topbar>.ppt-generation-steps{display:none}.ppt-workspace-topbar>.ppt-generation-status{min-height:41px}}

/* 2026-07-24 PPT 顶栏精修：完整保留原阶段线样式，透明融入整体 */
.ppt-workspace-topbar { min-height:44px; gap:8px; padding:0 6px 0 12px; border-bottom:0; background:transparent; }
.ppt-workspace-topbar>.ppt-generation-steps { height:44px; min-width:420px; padding:6px 4px 4px; background:transparent; }
.ppt-workspace-topbar>.ppt-generation-steps span { min-width:82px; padding:20px 5px 0; font-size:10px; }
.ppt-workspace-topbar>.ppt-generation-steps span::before { top:0; width:10px; height:10px; border-width:1px; box-shadow:0 0 0 4px #f8fafc; }
.ppt-workspace-topbar>.ppt-generation-steps::before { top:11px; left:calc(50% - 164px); width:328px; height:1px; background:#dbe3ed; }
.ppt-workspace-topbar .ppt-generation-steps-progress { top:11px; left:calc(50% - 164px); width:calc(328px * var(--ppt-step-progress,0) / 100); height:1px; }
.ppt-workspace-topbar>.ppt-generation-status { min-height:44px; }
.ppt-workspace-topbar .ppt-generation-status,
.ppt-editor-workspace .ppt-generation-status { background:transparent; }
.ppt-workspace-topbar .ppt-status-action:hover { background:rgba(148,163,184,.12); }
/* 编辑抽屉出现时给工作区预留真实宽度，画布在余下区域内保持最大 16:9 */
.ppt-editing .ppt-editor-stage { padding-right:300px; box-sizing:border-box; transition:padding-right .18s ease; }
.ppt-editor-stage { transition:padding-right .18s ease; }
.ppt-editor-workspace .ppt-canvas-view { padding:10px 44px 10px 10px; }
@media(max-width:1100px){.ppt-workspace-topbar>.ppt-generation-steps{min-width:340px}.ppt-workspace-topbar>.ppt-generation-steps span{min-width:68px}.ppt-workspace-topbar>.ppt-generation-steps::before{left:calc(50% - 136px);width:272px}.ppt-workspace-topbar .ppt-generation-steps-progress{left:calc(50% - 136px);width:calc(272px * var(--ppt-step-progress,0) / 100)}}
@media(max-width:768px){.ppt-editing .ppt-editor-stage{padding-right:0}.ppt-edit-panel{width:100%}.ppt-workspace-topbar{min-height:40px;background:transparent;border-bottom:0}.ppt-workspace-topbar>.ppt-generation-status{min-height:40px}.ppt-editor-workspace .ppt-canvas-view{padding:6px 34px 6px 6px}}

/* 2026-07-24 PPT 双模式下载 */
.ppt-export-wrap{position:relative;display:flex;align-items:center}
.ppt-export-menu{position:absolute;z-index:1200;top:calc(100% + 8px);right:0;width:286px;flex-direction:column;padding:6px;background:#fff;border:1px solid rgba(148,163,184,.22);border-radius:12px;box-shadow:0 14px 40px rgba(15,23,42,.14)}
.ppt-export-menu button{display:flex;flex-direction:column;align-items:flex-start;gap:4px;width:100%;padding:11px 12px;border:0;border-radius:8px;background:transparent;text-align:left;cursor:pointer;color:#334155}
.ppt-export-menu button:hover{background:#f1f5f9}
.ppt-export-menu strong{font-size:13px;font-weight:650}
.ppt-export-menu small{font-size:11px;line-height:1.45;color:#94a3b8}
.ppt-fidelity-stage{position:fixed;left:-10000px;top:0;width:1920px;height:1080px;overflow:hidden;pointer-events:none;z-index:-1}
.ppt-fidelity-stage>div{width:1920px!important;height:1080px!important;transform:none!important}
.ppt-status-action:disabled{opacity:.45;cursor:wait}
@media(max-width:768px){.ppt-export-menu{position:fixed;left:12px;right:12px;top:auto;bottom:16px;width:auto}}

/* 2026-07-24 PPT 策划占位页与阶段进度精修 */
.ppt-planning-placeholder{position:relative;isolation:isolate;overflow:hidden;gap:0!important;background:linear-gradient(145deg,#fbfdff 0%,#f5f8ff 48%,#f8f6ff 100%)!important;color:#475569!important}
.ppt-planning-placeholder::before,.ppt-planning-placeholder::after{content:"";position:absolute;z-index:-1;border-radius:50%;filter:blur(2px);pointer-events:none}
.ppt-planning-placeholder::before{width:420px;height:420px;top:-250px;right:-130px;background:radial-gradient(circle,rgba(99,102,241,.12),rgba(99,102,241,0) 70%)}
.ppt-planning-placeholder::after{width:360px;height:360px;bottom:-230px;left:-120px;background:radial-gradient(circle,rgba(59,130,246,.1),rgba(59,130,246,0) 70%)}
.ppt-planning-orbit{position:relative;width:76px;height:76px;margin-bottom:26px;border:1px solid rgba(99,102,241,.16);border-radius:50%;animation:pptPlanningOrbit 8s linear infinite}
.ppt-planning-orbit::before,.ppt-planning-orbit::after{content:"";position:absolute;border-radius:50%}
.ppt-planning-orbit::before{inset:12px;border:1px solid rgba(59,130,246,.2)}
.ppt-planning-orbit::after{inset:25px;background:linear-gradient(135deg,#3b82f6,#7c3aed);box-shadow:0 8px 24px rgba(79,70,229,.25)}
.ppt-planning-orbit i,.ppt-planning-orbit b,.ppt-planning-orbit em,.ppt-planning-orbit span{position:absolute;display:block;border-radius:50%;background:#fff;box-shadow:0 0 0 2px rgba(99,102,241,.12)}
.ppt-planning-orbit i{width:8px;height:8px;top:-4px;left:34px}.ppt-planning-orbit b{width:6px;height:6px;top:34px;right:-3px}.ppt-planning-orbit em{width:7px;height:7px;bottom:1px;left:7px}.ppt-planning-orbit span{width:5px;height:5px;top:14px;left:4px}
.ppt-planning-kicker{margin-bottom:9px;color:#6366f1;font-size:11px;font-weight:700;letter-spacing:.16em;text-transform:uppercase}
.ppt-planning-placeholder>strong{max-width:80%;color:#172033;font-size:29px;font-weight:680;line-height:1.28;letter-spacing:-.025em}
.ppt-planning-placeholder>p{max-width:70%;margin:11px 0 28px;color:#64748b;font-size:14px;line-height:1.55}
.ppt-planning-progress{width:min(420px,62%);height:5px;padding:1px;overflow:hidden;border-radius:999px;background:rgba(148,163,184,.18);box-shadow:inset 0 1px 2px rgba(15,23,42,.05)}
.ppt-planning-progress i{display:block;width:var(--ppt-placeholder-progress,4%);height:100%;border-radius:inherit;background:linear-gradient(90deg,#60a5fa,#6366f1 55%,#8b5cf6);box-shadow:0 0 14px rgba(99,102,241,.3);transition:width .5s cubic-bezier(.2,.8,.2,1)}
.ppt-planning-meta{width:min(420px,62%);display:flex;justify-content:space-between;margin-top:9px;color:#94a3b8;font-size:11px;font-variant-numeric:tabular-nums}.ppt-planning-meta span{font-weight:600;color:#64748b}.ppt-planning-meta b{color:#6366f1}
.ppt-planning-hint{position:absolute;bottom:28px;max-width:72%;color:#a1aabb;font-size:11px}
@keyframes pptPlanningOrbit{to{transform:rotate(360deg)}}
.ppt-workspace-topbar>.ppt-generation-steps::before{height:2px;border-radius:999px;background:linear-gradient(90deg,#dbe3ed,#e8edf4)}
.ppt-workspace-topbar .ppt-generation-steps-progress{height:2px;border-radius:999px;background:linear-gradient(90deg,#60a5fa,#6366f1 65%,#8b5cf6);box-shadow:0 0 8px rgba(99,102,241,.35);transition:width .5s cubic-bezier(.2,.8,.2,1)}
.ppt-generation-steps-head{position:absolute;z-index:3;top:7px;left:calc(50% - 164px + (328px * var(--ppt-step-progress,0) / 100));width:8px;height:8px;border:2px solid #fff;border-radius:50%;background:#6366f1;box-shadow:0 0 0 3px rgba(99,102,241,.14),0 0 12px rgba(99,102,241,.45);transform:translate(-50%,0);transition:left .5s cubic-bezier(.2,.8,.2,1);pointer-events:none}
.ppt-generation-steps:not(.is-running) .ppt-generation-steps-head{opacity:0}
.ppt-workspace-topbar>.ppt-generation-steps span::before{background:#f8fafc;border-color:#cbd5e1;transition:.25s ease}
.ppt-workspace-topbar>.ppt-generation-steps span.done::before{border-color:#6366f1;background:#6366f1;box-shadow:0 0 0 4px #f8fafc,0 0 10px rgba(99,102,241,.2)}
.ppt-workspace-topbar>.ppt-generation-steps span.active::before{border-color:#6366f1;background:#fff;box-shadow:0 0 0 4px #f8fafc,0 0 0 7px rgba(99,102,241,.12),0 0 14px rgba(99,102,241,.25)}
@media(max-width:1100px){.ppt-generation-steps-head{left:calc(50% - 136px + (272px * var(--ppt-step-progress,0) / 100))}}
@media(max-width:768px){.ppt-planning-placeholder>strong{font-size:22px}.ppt-planning-placeholder>p,.ppt-planning-progress,.ppt-planning-meta{max-width:none;width:80%}.ppt-planning-hint{bottom:18px}}

/* 2026-07-24 主对话发送按钮样式恢复：限定主输入区，避免被模块样式覆盖 */
.input-panel .send-btn-wrapper {
    position: relative;
    width: 40px;
    height: 40px;
    flex: 0 0 40px;
}
.input-panel #send-button.send-btn {
    appearance: none;
    -webkit-appearance: none;
    width: 40px;
    height: 40px;
    min-width: 40px;
    min-height: 40px;
    margin: 0;
    padding: 0;
    border: 0;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    color: #fff;
    background: linear-gradient(135deg, #8b5cf6 0%, var(--primary-color) 100%);
    box-shadow: 0 6px 16px rgba(59, 130, 246, 0.24);
    cursor: pointer;
    opacity: 1;
    transform: translateY(-5px);
    transition: transform .18s ease, box-shadow .18s ease, background .18s ease, opacity .18s ease;
}
.input-panel #send-button.send-btn:hover {
    transform: translateY(-5px) scale(1.06);
    box-shadow: 0 8px 20px rgba(59, 130, 246, 0.32);
}
.input-panel #send-button.send-btn:active {
    transform: translateY(-5px) scale(.96);
}
.input-panel #send-button.send-btn:focus-visible {
    outline: 3px solid rgba(59, 130, 246, .24);
    outline-offset: 2px;
}
.input-panel #send-button.send-btn.typing,
.input-panel #send-button.send-btn.stop-btn {
    color: #fff;
    background: var(--primary-color);
}
.input-panel #send-button.send-btn .icon-waveform,
.input-panel #send-button.send-btn .icon-send,
.input-panel #send-button.send-btn .liquid-loader {
    display: flex;
    color: inherit;
    visibility: visible;
    opacity: 1;
}
.input-panel #send-button.send-btn .icon-send {
    width: 20px;
    height: 20px;
}
@media (max-width: 768px) {
    .input-panel .send-btn-wrapper {
        width: 36px;
        height: 36px;
        flex-basis: 36px;
    }
    .input-panel #send-button.send-btn,
    .input-panel #send-button.send-btn:hover,
    .input-panel #send-button.send-btn:active {
        width: 36px !important;
        height: 36px !important;
        min-width: 36px !important;
        min-height: 36px !important;
        transform: none !important;
    }
}

/* 2026-07-24 19:05 PPT 八项需求复核最终覆盖：防止旧规则后置覆盖 */
/* 大纲确认卡严格位于右侧主视图中央 */
.ppt-editor-workspace .ppt-outline-view {
    display:flex; align-items:center; justify-content:center;
    padding:24px 32px; box-sizing:border-box;
}
.ppt-editor-workspace .ppt-outline-view > .ppt-stage-waiting {
    flex:0 1 560px; width:min(560px,100%); margin:0;
}
/* 两类竖向分割线保持 1px，可抓取范围分别扩大为 17px / 13px */
.ppt-workspace-resizer,.ppt-thumb-resizer { width:1px; flex-basis:1px; }
/* 缩略图折叠箭头稳定置于 1px 分割线中央 */
.ppt-thumb-toggle { display:flex; }
.ppt-slide-panel.collapsed { width:0!important; min-width:0!important; flex:0 0 0!important; }
/* 顶部流程节点：原距离减半、2px 灰线、完成态蓝色 */
.ppt-workspace-topbar>.ppt-generation-steps { min-width:230px; }
.ppt-workspace-topbar>.ppt-generation-steps span { min-width:41px; padding-left:2px; padding-right:2px; }
.ppt-workspace-topbar>.ppt-generation-steps::before {
    left:calc(50% - 82px); width:164px; height:2px; background:#cbd5e1;
}
.ppt-workspace-topbar .ppt-generation-steps-progress {
    left:calc(50% - 82px); width:calc(164px * var(--ppt-step-progress,0) / 100); height:2px; background:#6f9ee8; box-shadow:none;
}
.ppt-generation-steps-head { left:calc(50% - 82px + (164px * var(--ppt-step-progress,0) / 100)); }
.ppt-workspace-topbar>.ppt-generation-steps span.done { color:#2563eb; }
.ppt-workspace-topbar>.ppt-generation-steps span.done::before { border-color:#2563eb; background:#2563eb; }
/* PPT 首页输入框：高度约缩小 30%，静态/激活边框透明度 20%/30% */
.ppt-input-card .ppt-prompt-composer { border:1px solid rgba(15,23,42,0.2); min-height:88px; }
.ppt-input-card .ppt-prompt-composer:focus-within { border-color:rgba(15,23,42,0.3); }
.ppt-input-card .ppt-prompt-composer textarea,
.ppt-input-card .ppt-prompt-composer textarea:focus { min-height:88px; border:0; }
/* PPT 模态弹窗统一固定在当前页面正中心 */
.ppt-theme-modal,.ppt-chart-editor-overlay,.ppt-regen-overlay {
    align-items:center!important; justify-content:center!important; padding:20px; box-sizing:border-box;
}
@media(max-width:1100px) {
    .ppt-workspace-topbar>.ppt-generation-steps { min-width:230px; }
    .ppt-workspace-topbar>.ppt-generation-steps span { min-width:41px; }
    .ppt-workspace-topbar>.ppt-generation-steps::before { left:calc(50% - 82px); width:164px; }
    .ppt-workspace-topbar .ppt-generation-steps-progress { left:calc(50% - 82px); width:calc(164px * var(--ppt-step-progress,0) / 100); }
    .ppt-generation-steps-head { left:calc(50% - 82px + (164px * var(--ppt-step-progress,0) / 100)); }
}
@media(max-width:560px) {
    .ppt-input-card .ppt-prompt-composer,
    .ppt-input-card .ppt-prompt-composer textarea,
    .ppt-input-card .ppt-prompt-composer textarea:focus { min-height:82px; }
}

/* 两条分割线的视觉宽度固定为 1px，伪元素只负责扩大命中区域。 */
.ppt-workspace-resizer,
.ppt-thumb-resizer {
    width:1px!important;
    min-width:1px!important;
    flex:0 0 1px!important;
    background:rgba(15,23,42,0.1);
}
.ppt-workspace-resizer::before { inset:0 -8px; }
.ppt-thumb-resizer::before { inset:0 -6px; }
/* 折叠状态覆盖拖拽产生的行内 width/flex，展开时由 JS 恢复上次宽度。 */
.ppt-editor-workspace .ppt-slide-panel.collapsed {
    width:0!important;
    min-width:0!important;
    flex:0 0 0!important;
    opacity:0;
    pointer-events:none;
}
.ppt-thumb-toggle { touch-action:manipulation; }
/* 顶部五阶段导航最终几何值：节点间距约为原 82px 的一半，轨道 2px。 */
.ppt-workspace-topbar>.ppt-generation-steps {
    flex:0 1 230px;
    width:230px;
    min-width:230px;
    max-width:230px;
}
.ppt-workspace-topbar>.ppt-generation-steps span {
    flex:0 0 41px;
    width:41px;
    min-width:41px;
}
.ppt-workspace-topbar>.ppt-generation-steps::before {
    top:11px;
    left:calc(50% - 82px);
    width:164px;
    height:2px;
    background:#cbd5e1;
}
.ppt-workspace-topbar .ppt-generation-steps-progress {
    top:11px;
    left:calc(50% - 82px);
    width:calc(164px * var(--ppt-step-progress,0) / 100);
    height:2px;
    background:#6f9ee8;
}
.ppt-workspace-topbar .ppt-generation-steps-head {
    top:7px;
    left:calc(50% - 82px + (164px * var(--ppt-step-progress,0) / 100));
}
.ppt-workspace-topbar>.ppt-generation-steps span.done,
.ppt-workspace-topbar>.ppt-generation-steps span.done::before { color:#2563eb; border-color:#2563eb; }
.ppt-workspace-topbar>.ppt-generation-steps span.done::before { background:#2563eb; }
/* 所有 PPT 模态弹窗（主题、图表、表格、重新生成）均以视口中心为锚点。 */
#ppt-theme-modal,
#ppt-chart-editor-overlay,
#ppt-table-editor-overlay,
#ppt-regen-overlay {
    position:fixed!important;
    inset:0!important;
    align-items:center!important;
    justify-content:center!important;
    padding:20px!important;
    box-sizing:border-box;
}
#ppt-theme-modal>.ppt-theme-modal-card,
#ppt-chart-editor-overlay>.ppt-chart-editor,
#ppt-table-editor-overlay>.ppt-chart-editor,
#ppt-regen-overlay>.ppt-regen-modal {
    margin:auto;
    max-height:calc(100vh - 40px);
}
/* 首页输入区最终高度与边框：边框置于容器（默认 20% 透明度，激活 30%），textarea 保持透明。 */
.ppt-input-card .ppt-prompt-composer {
    min-height:88px;
    border:1px solid rgba(15,23,42,0.2)!important;
}
.ppt-input-card .ppt-prompt-composer:focus-within { border-color:rgba(15,23,42,0.3)!important; }
.ppt-input-card .ppt-prompt-composer textarea,
.ppt-input-card .ppt-prompt-composer textarea:focus {
    min-height:86px;
    border:0!important;
}
@media(max-width:768px) {
    .ppt-editor-workspace .ppt-canvas-slide { width:100%; max-width:100%; height:auto; max-height:85%; aspect-ratio:16/9; }
}
@media(max-width:560px) {
    .ppt-input-card .ppt-prompt-composer { min-height:82px; }
    .ppt-input-card .ppt-prompt-composer textarea,
    .ppt-input-card .ppt-prompt-composer textarea:focus { min-height:80px; }
}

/* 2026-07-24 19:49 PPT 侧栏恢复、缩略图按钮与顶部布局最终覆盖 */
/* PPT 覆盖层内常驻侧栏恢复按钮：侧栏折叠后仍可重新打开。 */
.ppt-sidebar-restore {
    position:fixed; top:10px; left:10px; z-index:1040;
    width:32px; height:32px; padding:0;
    display:none; align-items:center; justify-content:center;
    border:1px solid #d8dee8; border-radius:8px;
    background:#fff; color:#64748b; cursor:pointer;
    box-shadow:0 2px 8px rgba(15,23,42,.08);
}
.ppt-sidebar-restore:hover { background:#f8fafc; color:#334155; border-color:#cbd5e1; }
.ppt-sidebar-restore svg { width:17px; height:17px; }
body.ppt-mode-active .sidebar.collapsed ~ #ppt-overlay .ppt-sidebar-restore { display:flex; }

/* 缩略图折叠后，按钮向主画布方向移动 10px，避免紧贴页面边缘。 */
.ppt-thumb-toggle.is-panel-collapsed,
.ppt-slide-panel.collapsed + .ppt-thumb-resizer .ppt-thumb-toggle {
    left:calc(50% + 10px);
}

/* 2026-07-24 23:00 PPT 工作区六项精修 */
.ppt-panel-tabs { justify-content:center; }
.ppt-slide-panel-head { position:relative; justify-content:center; }
/* ★ 2026-07-27 15:36 新增空白页按钮：位于折叠箭头右侧，改为圆形 */
#ppt-add-slide-btn { position:absolute; top:50%; left:50%; transform:translate(13px,-50%); width:28px; height:28px; min-width:28px; padding:0; border:1px solid #d8dee8; border-radius:50%; background:var(--bg-primary); color:var(--text-secondary); cursor:pointer; display:flex; align-items:center; justify-content:center; z-index:12; box-shadow:0 2px 8px rgba(15,23,42,.12); transition:background .15s,color .15s,border-color .15s,box-shadow .15s,transform .15s; }
#ppt-add-slide-btn:hover { background:var(--primary-color); color:#fff; border-color:var(--primary-color); box-shadow:0 4px 12px rgba(59,130,246,.28); transform:translate(13px,-50%) scale(1.05); }
#ppt-add-slide-btn svg { width:14px; height:14px; }
.ppt-slide-list, .ppt-outline-list { scrollbar-width:none; -ms-overflow-style:none; }
.ppt-slide-list::-webkit-scrollbar, .ppt-outline-list::-webkit-scrollbar { width:0; height:0; display:none; }
.ppt-nav-zoom { width:24px!important; height:24px!important; }
.ppt-nav-zoom svg { width:12px; height:12px; }
.ppt-thumb-toggle { top:24px; left:calc(50% + 16px); transform:translate(-50%,-50%); width:auto; height:auto; padding:5px; border:0!important; background:transparent!important; box-shadow:none!important; border-radius:6px; }
.ppt-thumb-toggle:hover { background:var(--hover-bg)!important; }
.ppt-thumb-toggle svg { width:12px; height:12px; }
.ppt-generation-chat-head { display:none!important; }

/* 顶部进度节点严格居中；其余工具组成右侧操作组。 */
.ppt-slide-list, .ppt-outline-list { scrollbar-width:none; -ms-overflow-style:none; }
.ppt-slide-list::-webkit-scrollbar, .ppt-outline-list::-webkit-scrollbar { width:0; height:0; display:none; }
.ppt-nav-zoom { width:24px!important; height:24px!important; }
.ppt-nav-zoom svg { width:12px; height:12px; }
.ppt-thumb-toggle { top:24px; left:calc(50% + 16px); transform:translate(-50%,-50%); width:auto; height:auto; padding:5px; border:0!important; background:transparent!important; box-shadow:none!important; border-radius:6px; }
.ppt-thumb-toggle:hover { background:var(--hover-bg)!important; }
.ppt-thumb-toggle svg { width:12px; height:12px; }
.ppt-generation-chat-head { display:none!important; }
.ppt-workspace-topbar {
    position:relative;
    display:grid!important;
    grid-template-columns:minmax(0,1fr) 230px minmax(0,1fr);
    align-items:center;
    gap:0!important;
    padding:0 6px 0 12px!important;
}
.ppt-workspace-topbar>.ppt-generation-steps {
    grid-column:2;
    justify-self:center;
    position:relative;
    overflow:visible!important;
    z-index:2;
}
.ppt-workspace-topbar>.ppt-generation-status {
    grid-column:3;
    justify-self:end;
    width:auto!important;
    min-width:0!important;
    justify-content:flex-end!important;
}
.ppt-workspace-topbar .ppt-generation-status-head,
.ppt-workspace-topbar .ppt-generation-status-actions {
    justify-content:flex-end;
}
/* 每一对相邻节点由明确的 2px 灰色连线连接，完成段变蓝。 */
.ppt-workspace-topbar>.ppt-generation-steps::before,
.ppt-workspace-topbar .ppt-generation-steps-progress,
.ppt-workspace-topbar .ppt-generation-steps-head { display:none!important; }
.ppt-workspace-topbar>.ppt-generation-steps span { overflow:visible; }
.ppt-workspace-topbar>.ppt-generation-steps span:not(:first-of-type)::after {
    content:""!important;
    display:block!important;
    position:absolute;
    z-index:0;
    top:5px;
    right:50%;
    width:41px;
    height:2px;
    border-radius:0;
    background:#cbd5e1;
}
.ppt-workspace-topbar>.ppt-generation-steps span.done::after,
.ppt-workspace-topbar>.ppt-generation-steps span.active::after { background:#6f9ee8; }
.ppt-workspace-topbar>.ppt-generation-steps span::before { z-index:2; }

/* 2026-07-24 23:15 五阶段进度单排重构（终极覆盖）：圆点在前、两字文字随后、短线连接 */
.ppt-workspace-topbar>.ppt-generation-steps,
.ppt-editor-workspace>.ppt-view-panel>.ppt-generation-steps { display:flex!important; align-items:center; justify-content:center; gap:16px!important; }
.ppt-workspace-topbar>.ppt-generation-steps span,
.ppt-editor-workspace>.ppt-view-panel>.ppt-generation-steps span {
    display:inline-flex!important; align-items:center; gap:6px;
    min-width:0!important; padding:0!important; margin:0;
    font-size:12px; white-space:nowrap; overflow:visible;
}
.ppt-workspace-topbar>.ppt-generation-steps span::before,
.ppt-editor-workspace>.ppt-view-panel>.ppt-generation-steps span::before {
    position:static!important; transform:none!important; margin:0!important; flex:none;
    width:10px!important; height:10px!important; border-radius:50%;
    border:1px solid #cbd5e1!important; background:#fff!important; box-shadow:none!important;
}
.ppt-workspace-topbar>.ppt-generation-steps span.done::before,
.ppt-editor-workspace>.ppt-view-panel>.ppt-generation-steps span.done::before { border-color:#2563eb!important; background:#2563eb!important; }
.ppt-workspace-topbar>.ppt-generation-steps span.active::before,
.ppt-editor-workspace>.ppt-view-panel>.ppt-generation-steps span.active::before { border-color:#2563eb!important; background:#fff!important; box-shadow:0 0 0 4px rgba(37,99,235,.13)!important; }
.ppt-workspace-topbar>.ppt-generation-steps span:not(:first-of-type)::after,
.ppt-editor-workspace>.ppt-view-panel>.ppt-generation-steps span:not(:first-of-type)::after {
    content:""!important; display:block!important; position:absolute!important;
    top:50%!important; right:calc(100% + 3px)!important; left:auto!important;
    width:10px!important; height:2px!important; background:#cbd5e1!important; transform:translateY(-50%)!important;
}
.ppt-workspace-topbar>.ppt-generation-steps span.done::after,
.ppt-editor-workspace>.ppt-view-panel>.ppt-generation-steps span.done::after,
.ppt-workspace-topbar>.ppt-generation-steps span.active::after,
.ppt-editor-workspace>.ppt-view-panel>.ppt-generation-steps span.active::after { background:#6f9ee8!important; }

/* 2026-07-24 23:25 PPT 悬浮按钮统一与模型下拉精修 */
.ppt-view-nav .ppt-nav-zoom,
.ppt-view-nav #ppt-present-btn { width:24px!important; height:24px!important; border:0!important; background:transparent!important; box-shadow:none!important; border-radius:50%; color:#334155; }
.ppt-view-nav .ppt-nav-zoom svg,
.ppt-view-nav #ppt-present-btn svg { width:13px; height:13px; }
.ppt-view-nav .ppt-nav-zoom:hover,
.ppt-view-nav #ppt-present-btn:hover { background:rgba(15,23,42,0.07)!important; color:#0f172a!important; }
.ppt-thumb-resizer { z-index:25!important; }
.ppt-model-dropdown { top:calc(100% + 6px)!important; bottom:auto!important; }
.ppt-model-item { justify-content:flex-start!important; text-align:left; }
.ppt-model-item-name { flex:0 1 auto!important; }

@media(max-width:900px) {
    .ppt-workspace-topbar { grid-template-columns:minmax(0,1fr) 230px minmax(0,1fr); }
    .ppt-workspace-topbar #ppt-generation-elapsed { display:none; }
    .ppt-status-action span { display:none; }
}
@media(max-width:768px) {
    .ppt-sidebar-restore { top:6px; left:6px; }
    .ppt-workspace-topbar { display:flex!important; justify-content:flex-end; }
}

/* 2026-07-24 21:00 PPT 输入、大纲与基础可视化编辑 */
.ppt-input-card .ppt-prompt-composer { min-height:120px!important; cursor:default; caret-color:transparent; }
.ppt-input-card .ppt-prompt-composer textarea,
.ppt-input-card .ppt-prompt-composer textarea:focus { height:120px!important; min-height:120px!important; max-height:120px!important; caret-color:auto; resize:none; scrollbar-width:none; -ms-overflow-style:none; }
.ppt-input-card .ppt-prompt-composer textarea::-webkit-scrollbar { width:0; height:0; display:none; }
.ppt-workspace-topbar>.ppt-generation-steps { transform:translateY(15px); }
/* 顶栏操作按钮只留图标 */
.ppt-generation-status-actions .ppt-status-action span { display:none; }
.ppt-generation-status-actions .ppt-status-action { padding:6px; min-width:0; }
.ppt-generation-status-actions .ppt-status-action svg { width:16px; height:16px; }
/* 幻灯片/大纲 面板标签页（分段控件式） ★ 2026-07-27 09:05 老板指示：删下划线，改选项卡模式 */
.ppt-panel-tabs { display:flex; gap:3px; flex:1; min-width:0; background:var(--hover-bg); border-radius:9px; padding:3px; }
.ppt-panel-tab { flex:1; border:0; background:transparent; border-radius:7px; padding:4px 10px; font:inherit; font-size:12px; color:var(--text-tertiary); cursor:pointer; transition:background .15s, color .15s; }
.ppt-panel-tab:hover { color:var(--text-primary); }
.ppt-panel-tab.active { background:#fff; color:var(--text-primary); font-weight:600; box-shadow:0 1px 3px rgba(15,23,42,.14); }
.ppt-outline-list { flex:1; overflow-y:auto; padding:8px; }
.ppt-outline-item { padding:8px 10px; border-radius:8px; cursor:pointer; margin-bottom:2px; border-left:2px solid transparent; }
.ppt-outline-item:hover { background:var(--hover-bg); }
.ppt-outline-item.active { background:rgba(59,130,246,0.08); border-left-color:var(--primary-color); }
.ppt-outline-item-title { display:flex; align-items:baseline; gap:7px; font-size:12.5px; font-weight:600; color:var(--text-primary); line-height:1.4; }
.ppt-outline-item-num { color:var(--primary-color); font-size:11px; font-weight:700; flex-shrink:0; font-variant-numeric:tabular-nums; }
.ppt-outline-item-points { margin:4px 0 2px 20px; font-size:11px; color:var(--text-tertiary); line-height:1.55; }
.ppt-outline-item-points div { overflow:hidden; white-space:nowrap; text-overflow:ellipsis; }
.ppt-editor-workspace .ppt-outline-view { align-items:stretch!important; justify-content:center!important; overflow:auto; padding:28px clamp(18px,4vw,64px)!important; }
.ppt-outline-board { width:min(920px,100%); margin:auto; border:1px solid #e2e8f0; border-radius:16px; background:#fff; box-shadow:0 12px 36px rgba(15,23,42,.07); overflow:hidden; }
.ppt-outline-board>header { display:flex; align-items:flex-start; justify-content:space-between; gap:20px; padding:24px 26px 18px; border-bottom:1px solid #eef2f6; }
.ppt-outline-board>header span { color:#2563eb; font-size:11px; font-weight:700; letter-spacing:.12em; }
.ppt-outline-board>header h3 { margin:5px 0 4px; color:#0f172a; font-size:21px; }
.ppt-outline-board>header p { margin:0; color:#64748b; font-size:12px; }
.ppt-outline-board button { border:1px solid #dbe3ed; border-radius:8px; background:#fff; color:#475569; padding:7px 11px; cursor:pointer; font:inherit; }
.ppt-outline-board button:hover { border-color:#94a3b8; color:#0f172a; }
.ppt-outline-logic-list { max-height:calc(100vh - 290px); overflow:auto; padding:12px 26px 8px; }
.ppt-outline-logic-card { display:grid; grid-template-columns:45px minmax(0,1fr); position:relative; }
.ppt-outline-order { display:flex; flex-direction:column; align-items:center; color:#2563eb; font-size:11px; font-weight:700; }
.ppt-outline-order span { display:flex; align-items:center; justify-content:center; width:30px; height:30px; border:2px solid #93c5fd; border-radius:50%; background:#eff6ff; }
.ppt-outline-order i { width:2px; flex:1; min-height:16px; background:#dbeafe; }
.ppt-outline-logic-card:last-child .ppt-outline-order i { display:none; }
.ppt-outline-card-body { margin:0 0 12px; padding:12px 14px; border:1px solid #e5eaf1; border-radius:10px; background:#fbfdff; }
.ppt-outline-card-head { display:flex; align-items:center; gap:10px; }
.ppt-outline-card-head input { flex:1; min-width:0; border:0; outline:0; background:transparent; color:#172033; font-size:14px; font-weight:650; }
.ppt-outline-card-head button { padding:4px 8px; color:#2563eb; font-size:10px; }
.ppt-outline-card-body textarea { width:100%; min-height:54px; margin-top:7px; resize:vertical; border:0; outline:0; background:transparent; color:#64748b; font:12px/1.55 inherit; }
.ppt-outline-card-tools { display:flex; justify-content:flex-end; gap:6px; opacity:.65; }
.ppt-outline-card-tools button { padding:3px 8px; font-size:10px; }
.ppt-outline-card-tools .danger { color:#dc2626; }
.ppt-outline-card-tools button:disabled { opacity:.35; cursor:not-allowed; }
.ppt-outline-board>footer { display:flex; justify-content:flex-end; gap:10px; padding:16px 26px 20px; border-top:1px solid #eef2f6; }
.ppt-outline-board>footer .primary { border-color:#2563eb; background:#2563eb; color:#fff; }
.ppt-status-action.active { background:#e8f1ff!important; color:#2563eb!important; }
#ppt-canvas-slide.ppt-visual-editing .ppt-slide-inner>* { cursor:move; }
#ppt-canvas-slide.ppt-visual-editing .ppt-slide-inner img,
#ppt-canvas-slide.ppt-visual-editing .ppt-slide-inner table { pointer-events:auto; }
#ppt-canvas-slide .ppt-wysiwyg-selected { outline:2px solid #3b82f6!important; outline-offset:2px; border-radius:2px; }
#ppt-canvas-slide.ppt-visual-editing .ppt-slide-inner *:hover { outline:1px dashed rgba(59,130,246,.45); outline-offset:1px; cursor:move; }
#ppt-canvas-slide.ppt-visual-editing .ppt-slide-inner [contenteditable="true"],
#ppt-canvas-slide.ppt-visual-editing .ppt-slide-inner [contenteditable="true"]:hover { cursor:text; outline:2px solid #3b82f6; }
#ppt-canvas-slide.ppt-visual-editing [contenteditable=true] { cursor:text!important; }
/* ★ 2026-07-27 13:22 resize 手柄 */
#ppt-canvas-slide .ppt-wysiwyg-selected .ppt-resize-handle { display:block; }
.ppt-resize-handle { display:none; position:absolute; width:10px; height:10px; background:#3b82f6; border:2px solid #fff; border-radius:50%; z-index:100; box-shadow:0 1px 4px rgba(15,23,42,.3); }
.ppt-resize-handle[data-corner="tl"] { top:-5px; left:-5px; cursor:nwse-resize; }
.ppt-resize-handle[data-corner="tr"] { top:-5px; right:-5px; cursor:nesw-resize; }
.ppt-resize-handle[data-corner="bl"] { bottom:-5px; left:-5px; cursor:nesw-resize; }
.ppt-resize-handle[data-corner="br"] { bottom:-5px; right:-5px; cursor:nwse-resize; }
/* ★ 2026-07-27 13:22 浮动操作条 */
#ppt-edit-toolbar-floating { animation:pptBarFade .15s ease; }
@keyframes pptBarFade { from { opacity:0; transform:translateY(4px); } to { opacity:1; transform:translateY(0); } }
@media(max-width:768px){.ppt-workspace-topbar>.ppt-generation-steps{transform:none}.ppt-outline-board>header{padding:18px}.ppt-outline-logic-list{padding:10px 14px}.ppt-outline-board>footer{padding:14px}}

/* 2026-07-24 21:12 PPT 聊天历史预览卡片 */
.ppt-chat-preview-card{display:grid;grid-template-columns:180px minmax(0,1fr);width:min(100%,620px);margin:8px 0;border:1px solid #dfe6ef;border-radius:14px;background:#fff;overflow:hidden;box-shadow:0 8px 28px rgba(15,23,42,.07)}
.ppt-chat-preview-visual{display:flex;align-items:center;justify-content:center;padding:18px;background:linear-gradient(145deg,#eef4ff,#e6edf8)}
.ppt-chat-preview-slide{display:flex;flex-direction:column;width:145px;aspect-ratio:16/9;padding:12px;box-sizing:border-box;border-radius:5px;background:linear-gradient(135deg,#172554,#2563eb);color:#fff;box-shadow:0 6px 18px rgba(30,64,175,.24)}
.ppt-chat-preview-slide span{font-size:8px;letter-spacing:.12em;opacity:.7}.ppt-chat-preview-slide strong{flex:1;display:flex;align-items:center;font-size:13px;line-height:1.25}.ppt-chat-preview-slide i{font-style:normal;font-size:8px;opacity:.75}
.ppt-chat-preview-info{padding:18px 20px}.ppt-chat-preview-info>span{color:#2563eb;font-size:11px;font-weight:700}.ppt-chat-preview-info h4{margin:5px 0 4px;color:var(--text-primary);font-size:16px}.ppt-chat-preview-info p{margin:0 0 16px;color:#64748b;font-size:12px}.ppt-chat-preview-info>div{display:flex;flex-wrap:wrap;gap:8px}.ppt-chat-preview-info button{padding:7px 11px;border:1px solid #d7dee8;border-radius:8px;background:#fff;color:#334155;font-size:12px;cursor:pointer}.ppt-chat-preview-info button:hover{border-color:#94a3b8}.ppt-chat-preview-info button.primary{border-color:#2563eb;background:#2563eb;color:#fff}
@media(max-width:600px){.ppt-chat-preview-card{grid-template-columns:1fr}.ppt-chat-preview-visual{padding:14px}.ppt-chat-preview-info{padding:15px}}

/* === 2026-07-26 输入框精简：低频工具收进“更多”菜单（全端生效） === */
.input-tools-left .font-switch-btn { display: none !important; }
.mobile-more-tools-wrapper { display: block !important; position: relative; }
.mobile-more-menu {
    display: none;
    position: absolute;
    bottom: calc(100% + 12px);
    left: -8px;
    background: var(--bg-main);
    border: 1px solid var(--border-color);
    border-radius: 14px;
    box-shadow: 0 4px 20px rgba(0,0,0,0.12);
    padding: 6px;
    z-index: 1000;
    min-width: 160px;
    flex-direction: column;
    gap: 2px;
}
.mobile-more-menu.show { display: flex; }
.mobile-more-item {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 14px;
    border-radius: 10px;
    font-size: 14px;
    color: var(--text-primary);
    cursor: pointer;
    transition: background 0.15s;
    white-space: nowrap;
}
.mobile-more-item:hover, .mobile-more-item:active { background: var(--hover-bg); }
@media (min-width: 769px) { .mm-mobile-only { display: none !important; } }

/* === 2026-07-26 欢迎页减负：空状态隐藏输入框上方快捷栏（与欢迎页快捷卡入口重复） === */
/* 欢迎页：wrapper 由 :has 空态规则统一控制（有自定义按钮时显示，全空隐藏） */

/* === 2026-08-01 toast 位置：老板多次强调不要顶部——从顶部 72px 改回底部居中（与全站其他页面 bottom 一致，避开底部输入区） === */
#toast-message {
    top: auto !important;
    bottom: 90px !important;
    transform: translateX(-50%) !important;
}
@media (max-width: 768px) {
    #toast-message { top: auto !important; bottom: 100px !important; transform: translateX(-50%) !important; }
}

/* === 2026-07-26 长文排版与移动触控优化 === */
.markdown-body { line-height: 1.8; }
.markdown-body h3 { font-size: 17px; }
.markdown-body h4 { font-size: 15px; }
@media (max-width: 768px) {
    .attach-btn { width: 40px !important; height: 40px !important; }
    .sidebar-item-btn { min-height: 40px; padding: 6px 12px; }
}

/* === 2026-07-26 侧边栏「更多功能」折叠面板（低频功能 + 原输入框上方快捷入口统一收纳） === */
.sidebar-more-wrapper { position: relative; }
#sidebar-more-btn { justify-content: flex-start; }
#sidebar-more-btn > span { min-width: 0; }
.sidebar-more-btn.active, #sidebar-more-btn.active { background: var(--hover-bg); color: var(--text-primary); }
.sidebar-more-chevron { flex: 0 0 14px; margin-left: auto; transition: transform 0.2s; pointer-events: none; }
#sidebar-more-btn.active .sidebar-more-chevron { transform: rotate(180deg); }
.sidebar-more-menu {
    display: none;
    flex-direction: column;
    position: fixed;  /* 脱离 sidebar stacking context（z-index:100），浮于主内容之上；JS 按按钮位置动态定位 */
    width: 216px;
    height: max-content;
    max-height: min(70vh, 480px);
    overflow-x: hidden;
    overflow-y: auto;
    margin: 0;
    padding: 6px 8px 8px;
    background: #fff;
    -webkit-backdrop-filter: blur(24px) saturate(1.35); backdrop-filter: blur(24px) saturate(1.35);
    border: 1px solid rgba(255,255,255,.85);
    border-radius: 16px;
    box-shadow: 0 18px 48px rgba(31,45,71,.18), inset 0 1px 0 rgba(255,255,255,.55);
    z-index: 10000;
    animation: menuFadeIn 0.18s ease;
}
/* 更多功能菜单统一浅色白底；深色模式不再覆盖成灰黑色。 */
:root[data-theme="dark"] .sidebar-more-menu {
    background: #fff;
    border-color: rgba(15,23,42,.10);
    box-shadow: 0 18px 48px rgba(31,45,71,.18), inset 0 1px 0 rgba(255,255,255,.55);
}
.sidebar-more-menu.show { display: flex; }
.sidebar-more-close {
    position: absolute;
    top: 8px;
    right: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 26px;
    height: 26px;
    padding: 0;
    border: 0;
    border-radius: 7px;
    color: #64748b;
    background: transparent;
    cursor: pointer;
    z-index: 2;
    transition: color .15s, background .15s;
}
.sidebar-more-close:hover { color: #0f172a; background: #f1f5f9; }
.sidebar-more-close:focus-visible { outline: 2px solid var(--primary-color); outline-offset: 1px; }
.sidebar-more-close svg { width: 15px; height: 15px; }

/* 移动端只负责将桌面菜单定位到视口正中；所有视觉规格继承上方 PC 规则。 */
@media (max-width: 768px) {
    .sidebar-more-menu,
    .sidebar-more-menu.show {
        left: 0 !important;
        right: 0 !important;
        top: 0 !important;
        bottom: 0 !important;
        margin: auto !important;
        transform: none !important;
        z-index: 10050;
    }
}
.sidebar-more-group-label {
    font-size: 10px; color: var(--text-tertiary); font-weight: 700;
    padding: 6px 10px 3px; letter-spacing: .12em; user-select: none;
}
.sidebar-more-close + .sidebar-more-group-label { padding-right: 34px; }
.sidebar-more-item {
    display: flex; align-items: center; gap: 10px;
    padding: 6px 10px; border: none; background: transparent;
    color: var(--text-secondary); border-radius: 10px; cursor: pointer;
    font-size: 13px; font-weight: 500; transition: all 0.15s;
    width: 100%; text-align: left; min-height: 32px;
}
.sidebar-more-item:hover { background: rgba(255,255,255,.72); color: var(--text-primary); }
:root[data-theme="dark"] .sidebar-more-item:hover { background: rgba(48,65,88,.55); }
.sidebar-more-item > svg { width: 17px; height: 17px; flex-shrink: 0; }
.sidebar-more-item.active { background: rgba(59, 130, 246, 0.1); color: var(--accent-color, var(--primary-color)); }
/* 快捷添加按钮不再伪装成下级箭头，避免与「更多功能」折叠箭头混淆。 */
.sidebar-more-pin {
    margin-left: auto;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    opacity: 0;
    transition: opacity 0.15s, background 0.15s;
    cursor: pointer;
    padding: 0;
    border-radius: 6px;
    color: var(--text-tertiary);
}
.sidebar-more-pin svg { width: 14px; height: 14px; transform: rotate(0deg); }
.sidebar-more-item:hover .sidebar-more-pin, .sidebar-more-item:focus-within .sidebar-more-pin { opacity: 0.65; }
.sidebar-more-pin:hover { opacity: 1 !important; background: rgba(59,130,246,0.1); color: var(--primary-color); }
@media (max-width: 768px) { .sidebar-more-pin { opacity: 0.65; } }

/* 输入框上方栏：技能引用卡 + 用户自定义快捷按钮，两者皆空时整条隐藏 */
.sidebar-bar-wrapper:has(.skill-ref-cards:empty):has(#sidebar-custom-btns:empty) { display: none !important; }
#sidebar-items-bar { max-width: 800px; }

/* === 2026-07-26 品牌名改为 SIYANG思洋-Ai智脑!，左上角略微缩小 === */
.sidebar-logo { font-size: 13px; font-weight: 700; letter-spacing: 0.2px; }
.sidebar-logo img { height: 30px; }
.sidebar-logo span { white-space: nowrap; }

/* 2026-07-26 23:58 PPT 编辑工作区：三栏色块分区、大纲单列、无竖线 */
@media(min-width:769px) {
    /* 左侧对话固定 320px；拖拽后仍可由 --ppt-chat-width 覆盖。 */
    .ppt-generation-chat {
        width:var(--ppt-chat-width,320px);
        min-width:280px;
        background:#f4f7fb;
    }
    /* 第二列用浅灰蓝，主预览用白色卡片形成层级，不依赖分割线。 */
    .ppt-editor-workspace .ppt-slide-panel {
        background:#eef3f8;
        border-right:0!important;
    }
    /* ★ 2026-07-27 09:05 老板指示：中间画布区背景减淡 20%（#e8edf3 混白 20%），画布投影增强 */
    .ppt-editor-workspace .ppt-view-panel { background:color-mix(in srgb, #e8edf3 80%, #ffffff); }
    .ppt-editor-workspace .ppt-canvas-view {
        background:color-mix(in srgb, #e8edf3 80%, #ffffff)!important;
        padding:24px 58px 24px 24px;
    }
    .ppt-editor-workspace .ppt-canvas-slide {
        background:#fff;
        border:0;
        border-radius:6px;
        box-shadow:0 22px 55px rgba(15,23,42,.22),0 4px 14px rgba(15,23,42,.12)!important;
    }
    /* 删除两条可见竖线；DOM 和透明热区保留，拖拽调宽能力不受影响。 */
    .ppt-workspace-resizer,
    .ppt-thumb-resizer {
        width:0!important;
        min-width:0!important;
        flex:0 0 0!important;
        background:transparent!important;
        border:0!important;
    }
    .ppt-workspace-resizer::before { inset:0 -9px; }
    .ppt-thumb-resizer::before { inset:0 -7px; }
    /* ★ 2026-07-27 08:47 老板指示：大纲改为 PowerPoint 式左侧栏（加宽），不再独占主视图、不关闭右侧画布编辑窗口。
       （原设计：slide-panel 100% 占满 + view-panel display:none，用户反馈不符合习惯） */
    .ppt-editor-workspace.ppt-outline-mode .ppt-slide-panel {
        width:320px!important;
        min-width:260px!important;
        max-width:480px!important;
        opacity:1;
    }
    .ppt-editor-workspace.ppt-outline-mode .ppt-outline-list {
        padding:6px 8px 16px;
        box-sizing:border-box;
    }
    .ppt-editor-workspace.ppt-outline-mode .ppt-outline-item {
        padding:10px 12px;
        margin-bottom:4px;
        border-left-width:3px;
    }
    .ppt-editor-workspace.ppt-outline-mode .ppt-outline-item-title { font-size:13px; }
    .ppt-editor-workspace.ppt-outline-mode .ppt-outline-item-points {
        font-size:11.5px;
        white-space:normal;
    }
    .ppt-editor-workspace.ppt-outline-mode .ppt-outline-item-points div {
        white-space:normal;
        overflow:visible;
        text-overflow:clip;
    }
}

/* === 2026-07-27 PPT 输入区精简（老板指示）：引导模式按钮全圆角 === */
.ppt-mode-switch { border-radius: 999px; padding: 8px 22px; }

/* 2026-07-27 00:18 PPT UI 三项优化：专注预览、大纲拖拽、属性浮动抽屉 */

/* === 1. 专注预览模式 === */
.ppt-editor-stage.ppt-focus-mode .ppt-generation-chat,
.ppt-editor-stage.ppt-focus-mode .ppt-workspace-resizer { display:none!important; }
.ppt-editor-stage.ppt-focus-mode .ppt-editor-workspace { width:100%; }
.ppt-editor-stage.ppt-focus-mode .ppt-canvas-view {
    background:color-mix(in srgb, #e8edf3 80%, #ffffff)!important;
    padding:32px 64px;
}
.ppt-editor-stage.ppt-focus-mode .ppt-canvas-slide {
    max-width:96%;
    max-height:92%;
    height:auto;
    width:auto;
    aspect-ratio:16/9;
}
.ppt-status-action#ppt-focus-btn.active {
    background:#e8f1ff!important;
    color:#2563eb!important;
}

/* === 2. 大纲拖拽排序 === */
.ppt-outline-logic-card[draggable="true"] { cursor:grab; }
.ppt-outline-logic-card[draggable="true"] .ppt-outline-card-body { transition:box-shadow .15s, opacity .15s; }
.ppt-outline-logic-card.ppt-dragging { opacity:.4; }
.ppt-outline-logic-card.ppt-dragging .ppt-outline-card-body {
    box-shadow:0 8px 24px rgba(37,99,235,.18);
    border-color:#93c5fd!important;
}
.ppt-outline-drag-placeholder {
    height:52px;
    margin:0 0 12px;
    border:2px dashed #93c5fd;
    border-radius:10px;
    background:rgba(147,197,253,.08);
    flex-shrink:0;
}
.ppt-outline-logic-card[draggable="true"]:hover .ppt-outline-card-body {
    box-shadow:0 4px 14px rgba(15,23,42,.06);
}

/* === 3. 属性面板浮动抽屉（不挤压画布） === */
@media(min-width:769px) {
    .ppt-edit-panel {
        position:fixed;
        top:80px;
        right:24px;
        bottom:auto;
        max-height:calc(100vh - 120px);
        width:300px;
        border-radius:14px;
        box-shadow:0 16px 48px rgba(15,23,42,.14),0 4px 12px rgba(15,23,42,.06);
        border:1px solid rgba(148,163,184,.18);
        z-index:1150;
        animation:pptDrawerIn .18s ease-out;
    }
    /* 不再给编辑区加 padding-right */
    .ppt-editing .ppt-editor-stage { padding-right:0!important; }
    .ppt-edit-panel[style*="display:none"] { animation:none; }
}
@keyframes pptDrawerIn {
    from { opacity:0; transform:translateX(16px); }
    to { opacity:1; transform:translateX(0); }
}
@media(max-width:768px) {
    .ppt-edit-panel {
        position:fixed;
        inset:0;
        width:100%;
        max-height:100vh;
        border-radius:0;
        z-index:1150;
    }
}

/* 2026-07-27 16:30 软件化光标语义：壳层箭头、交互控件手型、真实编辑区文字光标 */
html, body,
.app-container, .sidebar, .main-content, .content-area,
.modal-overlay, .modal-content,
#ppt-overlay, #ppt-editor-stage, #ppt-canvas-slide,
table, thead, tbody, tfoot, tr, th, td {
    cursor:default;
}
button, a, label[for], summary, select,
[role="button"], [role="tab"], [role="menuitem"],
[onclick], [data-action] {
    cursor:pointer;
}
input:not([type="button"]):not([type="submit"]):not([type="reset"]):not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]),
textarea,
[contenteditable="true"],
[role="textbox"],
.ace_text-input {
    cursor:text;
}
input[type="checkbox"], input[type="radio"], input[type="range"], input[type="color"] { cursor:pointer; }
button:disabled, input:disabled, select:disabled, textarea:disabled, [aria-disabled="true"] { cursor:not-allowed; }
/* PPT 表格只在当前单元格真正进入编辑态后显示文字光标。 */
#ppt-canvas-slide table,
#ppt-canvas-slide table * { cursor:default!important; }
#ppt-canvas-slide th[data-ppt-cell-editing="1"],
#ppt-canvas-slide td[data-ppt-cell-editing="1"],
#ppt-canvas-slide th[data-ppt-cell-editing="1"] *,
#ppt-canvas-slide td[data-ppt-cell-editing="1"] * { cursor:text!important; }

/* 2026-07-27 15:58 PPT 首页输入框：外部区域不显示文字光标，点击外部由 stage 主动 blur */
#ppt-input-stage,
#ppt-input-stage .ppt-input-card,
#ppt-input-stage #ppt-quick-mode { cursor:default; }
#ppt-input-stage .ppt-prompt-composer { cursor:default!important; caret-color:transparent!important; }
#ppt-input-stage #ppt-prompt-input { cursor:text; caret-color:auto; }

/* 2026-07-27 00:35 PPT 编辑工具栏 */
.ppt-editor-toolbar {
    display:flex;
    align-items:center;
    gap:8px;
    padding:6px 14px;
    background:transparent;
    border-bottom:1px solid rgba(148,163,184,.15);
    box-shadow:none;
    z-index:20;
    position:relative;
    flex-wrap:nowrap;
    scrollbar-width:none;
}
.ppt-editor-toolbar::-webkit-scrollbar { display:none; }
/* 左弹性占位：与右组共同把中央药丸真居中 */
.ppt-toolbar-spacer { flex:1; min-width:0; }
/* ★ 2026-07-27 08:30 老板指示：插入工具组做成药丸形悬浮工具栏居中（原进度条位置），精致紧凑 */
/* ★ 2026-07-27 09:21 老板指示：药丸工具栏更紧凑（减少分散感） */
/* ★ 2026-07-27 15:45 药丸工具栏左右各增加 10px 留白，并统一为系统轻盈悬浮质感 */
.ppt-toolbar-pill {
    display:flex;
    align-items:center;
    gap:1px;
    background:linear-gradient(180deg,rgba(255,255,255,.98),rgba(248,250,252,.96));
    border:1px solid rgba(148,163,184,.26);
    border-radius:999px;
    padding:7px 15px;
    box-shadow:0 6px 20px rgba(15,23,42,.09),0 1px 3px rgba(15,23,42,.06),inset 0 1px 0 rgba(255,255,255,.8);
    flex-shrink:0;
}
.ppt-toolbar-pill .ppt-tb-btn {
    border-radius:999px;
    padding:8px 7px;
    gap:3px;
    font-size:11px;
    color:var(--text-secondary);
    transition:background-color .16s ease,color .16s ease,transform .16s ease;
}
.ppt-toolbar-pill .ppt-tb-btn:hover {
    background:rgba(59,130,246,.08);
    color:var(--primary-color);
    transform:translateY(-1px);
}
.ppt-toolbar-pill .ppt-tb-btn:active { transform:translateY(0); }
.ppt-toolbar-pill .ppt-tb-btn svg { width:14px; height:14px; }
/* 右侧功能图标组：依然右对齐 */
.ppt-toolbar-right { flex:1; min-width:0; display:flex; align-items:center; justify-content:flex-end; gap:2px; }
.ppt-toolbar-right .ppt-tb-btn { padding:5px; }
.ppt-toolbar-right .ppt-tb-btn svg { width:16px; height:16px; }
.ppt-toolbar-group { display:flex; align-items:center; gap:3px; }
.ppt-toolbar-divider { width:1px; height:22px; background:rgba(148,163,184,.2); margin:0 4px; flex-shrink:0; }
.ppt-tb-btn {
    display:flex;
    align-items:center;
    gap:5px;
    padding:6px 10px;
    border:0;
    border-radius:8px;
    background:transparent;
    color:#475569;
    font:inherit;
    font-size:12px;
    font-weight:500;
    cursor:pointer;
    white-space:nowrap;
    transition:background .12s,color .12s;
}
.ppt-tb-btn svg { width:16px; height:16px; flex-shrink:0; }
.ppt-tb-btn:hover { background:#f1f5f9; color:#0f172a; }
.ppt-tb-btn:active { background:#e2e8f0; }
.ppt-tb-btn:disabled { opacity:0.5; cursor:not-allowed; pointer-events:none; }
.ppt-tb-btn.active { background:#e8f1ff; color:#2563eb; }
.ppt-tb-btn.icon-only { padding:6px; }
.ppt-tb-btn.icon-only span { display:none; }

/* 工具弹出面板 */
.ppt-tool-panels { position:relative; z-index:15; }
.ppt-tool-panel {
    position:absolute;
    top:0;
    left:50%;
    transform:translateX(-50%);
    background:#fff;
    border:1px solid rgba(148,163,184,.18);
    border-radius:12px;
    box-shadow:0 12px 36px rgba(15,23,42,.12);
    padding:16px 20px;
    min-width:280px;
    max-width:480px;
    animation:pptPanelIn .15s ease-out;
}
@keyframes pptPanelIn {
    from { opacity:0; transform:translateX(-50%) translateY(-6px); }
    to { opacity:1; transform:translateX(-50%) translateY(0); }
}
.ppt-tool-panel-head {
    display:flex;
    align-items:center;
    justify-content:space-between;
    margin-bottom:12px;
    font-size:13px;
    font-weight:600;
    color:#0f172a;
}
.ppt-tool-panel-close {
    border:0;
    background:transparent;
    color:#94a3b8;
    cursor:pointer;
    font-size:18px;
    padding:2px 6px;
    border-radius:6px;
}
.ppt-tool-panel-close:hover { background:#f1f5f9; color:#0f172a; }
.ppt-tool-grid {
    display:grid;
    grid-template-columns:repeat(auto-fill,minmax(72px,1fr));
    gap:8px;
}
.ppt-tool-item {
    display:flex;
    flex-direction:column;
    align-items:center;
    gap:6px;
    padding:12px 6px;
    border:1px solid rgba(148,163,184,.15);
    border-radius:10px;
    background:#fafbfc;
    cursor:pointer;
    transition:border-color .12s,background .12s;
    font-size:11px;
    color:#475569;
    text-align:center;
}
.ppt-tool-item:hover { border-color:#93c5fd; background:#eff6ff; color:#2563eb; }
.ppt-tool-item svg { width:24px; height:24px; }
.ppt-tool-item.active { border-color:#2563eb; background:#e8f1ff; color:#2563eb; }

/* 形状选择网格 */
.ppt-shape-preview { width:32px; height:32px; }

/* 格式面板 */
.ppt-format-row {
    display:flex;
    align-items:center;
    gap:8px;
    margin-bottom:8px;
}
.ppt-format-row label { font-size:11px; color:#64748b; min-width:48px; }
.ppt-format-row input[type="color"] {
    width:32px; height:24px; border:1px solid #d8dee8; border-radius:6px; cursor:pointer; padding:0;
}
.ppt-format-row input[type="range"] { flex:1; }
.ppt-format-row select {
    padding:4px 8px; border:1px solid #d8dee8; border-radius:6px; font-size:12px;
    background:#fff; color:#475569; outline:none;
}
.ppt-format-row input[type="text"] {
    padding:4px 8px; border:1px solid #d8dee8; border-radius:6px; font-size:12px;
    width:56px; text-align:center;
}

/* 动画面板 */
.ppt-anim-item {
    display:flex; align-items:center; gap:10px;
    padding:8px 12px; border:1px solid rgba(148,163,184,.15);
    border-radius:8px; margin-bottom:5px; cursor:pointer;
    font-size:12px; color:#475569; transition:all .12s;
}
.ppt-anim-item:hover { border-color:#93c5fd; background:#eff6ff; }
.ppt-anim-item.active { border-color:#2563eb; background:#e8f1ff; color:#2563eb; font-weight:600; }
.ppt-anim-item svg { width:16px; height:16px; flex-shrink:0; }

/* 绘图画布覆盖 */
.ppt-draw-overlay {
    position:absolute; inset:0; z-index:30; cursor:crosshair;
}
.ppt-draw-canvas { position:absolute; inset:0; pointer-events:none; }

/* 图片上传拖拽区 */
.ppt-upload-zone {
    border:2px dashed #cbd5e1; border-radius:12px; padding:28px 16px;
    text-align:center; color:#94a3b8; font-size:13px; cursor:pointer;
    transition:border-color .12s, background .12s;
}
.ppt-upload-zone:hover, .ppt-upload-zone.dragover {
    border-color:#93c5fd; background:#f0f7ff; color:#2563eb;
}
.ppt-upload-zone svg { width:32px; height:32px; margin-bottom:8px; }

/* 生成阶段隐藏工具栏，编辑阶段隐藏进度条 */
.ppt-view-panel[data-mode="editing"] #ppt-gen-topbar { display:none!important; }
.ppt-view-panel[data-mode="generating"] #ppt-editor-toolbar { display:none!important; }
.ppt-view-panel[data-mode="generating"] #ppt-tool-panels { display:none!important; }

/* 移动端工具栏适配 */
@media(max-width:768px) {
    .ppt-editor-toolbar { padding:5px 8px; gap:2px; }
    .ppt-tb-btn { padding:5px 6px; }
    .ppt-tb-btn span { display:none; }
    .ppt-tb-btn.icon-only span { display:none; }
    .ppt-tb-btn svg { width:18px; height:18px; }
}

/* 2026-07-27 00:45 工具栏动画效果 */
.ppt-user-anim[data-ppt-anim="fade"] {
  animation: pptToolFadeIn .5s cubic-bezier(.22,.8,.24,1) both;
}
.ppt-user-anim[data-ppt-anim="slide-left"] {
  animation: pptToolSlideLeft .5s cubic-bezier(.22,.8,.24,1) both;
}
.ppt-user-anim[data-ppt-anim="slide-up"] {
  animation: pptToolSlideUp .5s cubic-bezier(.22,.8,.24,1) both;
}
.ppt-user-anim[data-ppt-anim="zoom"] {
  animation: pptToolZoomIn .5s cubic-bezier(.22,.8,.24,1) both;
}
.ppt-user-anim[data-ppt-anim="rotate"] {
  animation: pptToolRotateIn .6s cubic-bezier(.22,.8,.24,1) both;
}
.ppt-user-anim[data-ppt-anim="bounce"] {
  animation: pptToolBounceIn .65s cubic-bezier(.22,.8,.24,1) both;
}
@keyframes pptToolFadeIn { from { opacity:0 } to { opacity:1 } }
@keyframes pptToolSlideLeft { from { opacity:0; transform:translateX(60px) } to { opacity:1; transform:translateX(0) } }
@keyframes pptToolSlideUp { from { opacity:0; transform:translateY(40px) } to { opacity:1; transform:translateY(0) } }
@keyframes pptToolZoomIn { from { opacity:0; transform:scale(.7) } to { opacity:1; transform:scale(1) } }
@keyframes pptToolRotateIn { from { opacity:0; transform:rotate(-12deg) scale(.85) } to { opacity:1; transform:rotate(0) scale(1) } }
@keyframes pptToolBounceIn { 0%{opacity:0;transform:translateY(30px)} 40%{opacity:1;transform:translateY(-8px)} 60%{transform:translateY(4px)} 80%{transform:translateY(-2px)} 100%{transform:translateY(0)} }

/* ★ 2026-07-27 工作台统一使用侧边栏入口 */
#sidebar-workbench-btn {
    display: flex;
    visibility: visible;
    opacity: 1;
}

/* ★ 2026-09-07 工作台被侧边栏遮住修复（用户反馈「工作台页面侧边栏遮住右边内容，有些分辨率会出现」）：
   根因——#workbench-view 的 left 用 var(--sidebar-width, 260px)，但 --sidebar-width 从未定义，永远兜底 260px；
   而 .sidebar 在 769-1366px 区间实际为 280px（iPad/笔记本档），>1366px 回落基础 260px。
   于是 769-1366px（1366×768 笔记本/1280/1024 等）侧边栏右缘悬空 20px 压住工作台左缘；≥1440px 恰好对齐 →「有些分辨率会出现」。
   修复：此处定义 --sidebar-width 并与 .sidebar 宽度档位同步（基础 260 / 769-1366 为 280）。 */
:root { --sidebar-width: 260px; }
@media (min-width: 769px) and (max-width: 1366px) { :root { --sidebar-width: 280px; } }

/* ★ 组织智慧工作台：只占侧边栏右侧的主工作区域 */
#workbench-view {
    position: fixed !important;
    left: var(--sidebar-width, 260px) !important;
    right: 0 !important;
    top: 0 !important;
    bottom: 0 !important;
    width: auto !important;
    height: auto !important;
}
.sidebar.collapsed ~ #workbench-view,
body.sidebar-collapsed #workbench-view { left: 0 !important; }
@media (max-width: 768px) { #workbench-view { left: 0 !important; } }

/* ★ 2026-07-27 对话欢迎页背景 = 组织智慧工作台背景（照抄 #workbench-view 线性渐变 + .wb-desktop-bg 三团光晕；深色模式光晕按工作台 opacity .7 折算）
   2026-08-01 编程模式顶栏透明化：渐变同时作用于 main-content 本身，覆盖 top-nav 区域（y0-56 不再露白底）
   2026-08-01 14:24 老板指示：state-empty/state-new-chat 背景色删除，全透明 */
.state-empty#main-content-wrapper,
.state-empty#main-content-wrapper .content-wrapper {
    background: transparent !important;
    background-color: transparent !important;
}
:root[data-theme="dark"] .state-empty#main-content-wrapper,
:root[data-theme="dark"] .state-empty#main-content-wrapper .content-wrapper {
    background: transparent !important;
    background-color: transparent !important;
}


/* 2026-07-28 主聊天交互审计 C-12/C-18/P2/P3：错误语义、键盘焦点、移动端触控 */
.sr-only { position:absolute!important; width:1px!important; height:1px!important; padding:0!important; margin:-1px!important; overflow:hidden!important; clip:rect(0,0,0,0)!important; white-space:nowrap!important; border:0!important; }
.api-error-card .error-hint { margin:10px 0 4px; color:var(--text-secondary); line-height:1.6; font-size:13px; }
.api-error-card .error-tech { margin:8px 0 0; color:var(--text-tertiary); font-size:12px; }
.api-error-card .error-tech summary { cursor:pointer; min-height:30px; display:flex; align-items:center; gap:6px; color:var(--text-tertiary); user-select:none; }
.api-error-card .error-tech summary::before { content:'▸'; display:inline-block; transition:transform .2s; font-size:10px; }
.api-error-card .error-tech[open] summary::before { transform:rotate(90deg); }
.api-error-card .error-detail { margin-top:6px; padding:8px; border-radius:8px; background:var(--hover-bg); overflow-wrap:anywhere; }
.suggestion-btn:focus-visible, .suggestion-chip:focus-visible, .msg-action-btn:focus-visible, .attach-btn:focus-visible {
  outline:3px solid color-mix(in srgb, var(--primary-color) 35%, transparent); outline-offset:2px;
}
@media (pointer: coarse), (max-width: 768px) {
  .input-panel .send-btn-wrapper, .input-panel #send-button.send-btn { width:44px; height:44px; min-width:44px; min-height:44px; flex-basis:44px; }
  .input-panel .attach-btn, .suggestion-btn, .suggestion-chip, .msg-action-btn { min-width:44px; min-height:44px; }
  .suggestion-btn, .suggestion-chip { display:inline-flex; align-items:center; justify-content:center; padding:10px 16px; }
}

/* ★ 2026-07-29 统一媒体预览卡片：生成页 / 历史记录 / 进度状态同一结构
   设计原则：媒体按原始比例展示，只约束宽度；少边框、少留白、少包装。 */
.media-preview-card {
    width: min(100%, 420px);
    max-width: 100%;
    margin: 6px 0;
    background: transparent;
    border: none;
    box-shadow: none;
    box-sizing: border-box;
}
.media-preview-media-wrap {
    position: relative;
    width: 100%;
}
.media-preview-media {
    width: 100%;
    height: auto;
    display: block;
    border-radius: 12px;
    outline: none;
}
.media-preview-media-actions {
    position: absolute;
    right: 8px;
    bottom: 8px;
    z-index: 2;
    display: flex;
    align-items: center;
    gap: 6px;
}
.media-preview-overlay-btn {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 5px 9px;
    border: none;
    border-radius: 8px;
    background: rgba(15, 23, 42, 0.72);
    color: #fff;
    font-size: 11px;
    line-height: 1;
    min-height: 32px;
    text-decoration: none;
    cursor: pointer;
    backdrop-filter: blur(8px);
    transition: background 0.16s ease, transform 0.16s ease;
}
.media-preview-overlay-btn:hover {
    background: rgba(15, 23, 42, 0.88);
    transform: translateY(-1px);
}
.media-preview-media.image-media { background: transparent; }
.media-preview-media.video-media { background: #000; }
/* ★ 2026-08-01 多图网格：4 列自动换行，每张 hover 显示复用/下载 */
.media-preview-grid-wrap {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 8px;
    width: min(100%, 420px);
}
.media-preview-grid-item {
    position: relative;
    border-radius: 10px;
    overflow: hidden;
    background: var(--bg-secondary, #f1f5f9);
    aspect-ratio: 9 / 16;
}
.media-preview-grid-img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    border-radius: 10px;
    cursor: zoom-in;
}
.media-preview-grid-actions {
    position: absolute;
    top: 6px;
    right: 6px;
    display: flex;
    gap: 4px;
    opacity: 0;
    transition: opacity 0.16s ease;
}
.media-preview-grid-item:hover .media-preview-grid-actions,
.media-preview-grid-item:focus-within .media-preview-grid-actions {
    opacity: 1;
}
@media (hover: none) {
    .media-preview-grid-actions { opacity: 1; }
}
.media-preview-grid-actions .media-preview-overlay-btn { padding: 4px 7px; }
@media (max-width: 640px) {
    .media-preview-grid-wrap { grid-template-columns: repeat(2, 1fr); }
}
.media-preview-body { padding: 6px 2px 0; }
.media-preview-title {
    font-size: 13px;
    font-weight: 600;
    color: var(--text-primary);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    line-height: 1.35;
}
.media-preview-meta {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
    margin-top: 3px;
    font-size: 11px;
    color: var(--text-tertiary);
    line-height: 1.4;
}
.media-preview-meta > span { display: inline-flex; align-items: center; gap: 3px; }
.media-preview-note {
    margin-top: 6px;
    font-size: 12px;
    line-height: 1.45;
    color: var(--text-secondary);
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.media-preview-progress {
    height: 4px;
    margin-top: 8px;
    border-radius: 999px;
    background: var(--hover-bg);
    overflow: hidden;
}
.media-preview-progress-fill {
    height: 100%;
    border-radius: inherit;
    background: linear-gradient(90deg, #8b5cf6, #6366f1);
    background-size: 200% 100%;
    animation: mediaPreviewProgressShift 2s linear infinite;
    transition: width 0.45s ease;
}
@keyframes mediaPreviewProgressShift {
    0% { background-position: 200% 0; }
    100% { background-position: -200% 0; }
}
.media-preview-actions {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-top: 8px;
}
.media-preview-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 5px;
    min-height: 28px;
    padding: 4px 11px;
    border-radius: 8px;
    border: 1px solid var(--border-color);
    background: var(--bg-primary, #fff);
    color: var(--text-secondary);
    font-size: 11px;
    font-weight: 600;
    line-height: 1;
    cursor: pointer;
    text-decoration: none;
    transition: all 0.16s ease;
    box-shadow: 0 1px 2px rgba(16, 24, 40, 0.04);
}
.media-preview-btn svg { flex-shrink: 0; display: block; }
.media-preview-btn:hover {
    border-color: var(--primary-color);
    color: var(--primary-color);
    background: rgba(99, 102, 241, 0.06);
    box-shadow: 0 2px 8px rgba(99, 102, 241, 0.12);
}
.media-preview-btn.primary {
    border-color: var(--primary-color);
    color: #fff;
    background: var(--primary-color);
}
.media-preview-btn.primary:hover {
    filter: brightness(1.08);
    color: #fff;
}
/* ★ 2026-08-08 云盘定位高亮：从聊天「查看云盘位置」跳转后定位并闪烁高亮目标文件卡片 */
.cloud-locate-highlight {
    outline: 2px solid var(--primary-color, #6366f1);
    outline-offset: 2px;
    border-radius: 12px;
    animation: cloudLocatePulse 1.1s ease-in-out 4;
    box-shadow: 0 0 0 4px rgba(99, 102, 241, 0.18), 0 8px 24px rgba(99, 102, 241, 0.28);
    z-index: 5;
}
@keyframes cloudLocatePulse {
    0%, 100% { box-shadow: 0 0 0 4px rgba(99, 102, 241, 0.18), 0 8px 24px rgba(99, 102, 241, 0.28); }
    50% { box-shadow: 0 0 0 11px rgba(99, 102, 241, 0.06), 0 8px 24px rgba(99, 102, 241, 0.42); }
}
.media-preview-compact {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 4px 2px 0;
}
.media-preview-compact-main { flex: 1; min-width: 0; }
.media-preview-spinner {
    width: 20px;
    height: 20px;
    margin-top: 2px;
    border-radius: 50%;
    border: 2px solid rgba(99, 102, 241, 0.18);
    border-top-color: var(--primary-color);
    animation: mediaPreviewSpin 0.9s linear infinite;
    flex-shrink: 0;
}
@keyframes mediaPreviewSpin { to { transform: rotate(360deg); } }
.media-preview-status-text {
    margin-top: 5px;
    font-size: 12px;
    color: var(--text-tertiary);
}
.media-preview-error-row {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    padding: 6px 2px 0;
    color: var(--error-color);
    font-size: 12px;
    line-height: 1.5;
    word-break: break-word;
}
.media-preview-error-row svg { flex-shrink: 0; margin-top: 1px; }
@media (max-width: 520px) {
    .media-preview-card { width: 100%; }
}

/* 任务中心列表与统一进度语言对齐 */
.task-card {
    padding: 12px 14px;
    border-radius: 14px;
    background: var(--bg-primary);
}
.task-card-icon {
    width: 56px;
    height: 70px;
    border-radius: 12px;
    overflow: hidden;
}
.task-card-icon img { border-radius: 12px !important; }
.task-progress-bar,
.media-gen-progress,
.video-pending-progress {
    height: 4px;
    border-radius: 999px;
    background: var(--hover-bg);
    overflow: hidden;
}
.task-progress-fill,
.media-gen-progress-fill,
.video-pending-progress-fill {
    background: linear-gradient(90deg, #8b5cf6, #6366f1);
    background-size: 200% 100%;
    animation: mediaPreviewProgressShift 2s linear infinite;
}
@media (max-width: 520px) {
    .media-preview-card { width: 100%; }
}

/* 2026-07-30 21:16 手机版输入面板背景全透明；仅作用于 #input-panel 容器，不改变输入框本体。 */
@media (max-width: 768px) {
    #input-panel {
        background: transparent !important;
        background-color: transparent !important;
        background-image: none !important;
        -webkit-backdrop-filter: none !important;
        backdrop-filter: none !important;
        box-shadow: none !important;
    }
}

/* 2026-07-30 22:14 手机版主对话首页收口：只修首页布局级联，不波及功能页、弹层和列表结构。 */
@media (max-width: 768px) {
    /* 主内容只保留一套安全区：旧规则同时给 main/top-nav/content-wrapper 叠加顶部间距。 */
    #main-content-wrapper {
        height: 100dvh !important;
        min-height: 100dvh !important;
        padding-top: 0 !important;
        overflow: hidden !important;
    }
    #main-content-wrapper > .top-nav {
        top: 0 !important;
        height: calc(52px + env(safe-area-inset-top, 0px)) !important;
        padding: env(safe-area-inset-top, 0px) 10px 0 !important;
        box-sizing: border-box !important;
    }
    #main-content-wrapper > .content-wrapper {
        height: 100% !important;
        min-height: 0 !important;
        padding-top: 0 !important;
        box-sizing: border-box !important;
        overflow: hidden !important;
    }

    /* 空首页必须在顶部导航和底部输入栏之间自然伸缩，不能再用 12vh 硬推。 */
    .state-empty#main-content-wrapper .content-wrapper {
        display: flex !important;
        flex-direction: column !important;
    }
    .state-empty#main-content-wrapper .empty-welcome {
        flex: 1 1 auto !important;
        min-height: 0 !important;
        padding: 14px 16px 8px !important;
        justify-content: center !important;
        overflow-y: auto !important;
        -webkit-overflow-scrolling: touch !important;
    }
    .state-empty#main-content-wrapper .welcome-v2 {
        width: 100% !important;
        max-width: 360px !important;
        padding: 12px 0 !important;
        margin: 0 auto !important;
        text-align: left !important;
        align-items: flex-start !important;
        display: flex !important;
        flex-direction: column !important;
    }
    .state-empty#main-content-wrapper .sphere-avatar {
        width: 44px !important;
        height: 44px !important;
        margin-bottom: 10px !important;
        margin-left: 15px !important;
        align-self: flex-start !important;
    }
    .state-empty#main-content-wrapper .welcome-v2-header {
        font-size: 20px !important;
        line-height: 1.35 !important;
        margin: 0 0 5px !important;
        text-align: left !important;
        width: 100% !important;
        align-self: flex-start !important;
    }
    .state-empty#main-content-wrapper .welcome-v2-desc {
        font-size: 13px !important;
        line-height: 1.5 !important;
        max-width: 310px !important;
        margin: 0 0 14px !important;
        text-align: left !important;
        width: 100% !important;
        align-self: flex-start !important;
    }
    .state-empty#main-content-wrapper .welcome-quick-actions {
        grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
        gap: 8px !important;
        width: 100% !important;
        max-width: 340px !important;
        margin: 0 0 10px !important;
        align-self: flex-start !important;
    }
    .state-empty#main-content-wrapper .welcome-action-card {
        min-height: 74px !important;
        padding: 11px 8px 9px !important;
        gap: 4px !important;
        border-radius: 12px !important;
    }
    .state-empty#main-content-wrapper .welcome-action-card svg {
        width: 20px !important;
        height: 20px !important;
        margin-bottom: 0 !important;
    }
    .state-empty#main-content-wrapper .welcome-action-card .wac-desc {
        font-size: 10px !important;
    }
    .state-empty#main-content-wrapper #suggestion-chips {
        margin-top: 4px !important;
        max-width: 340px !important;
    }


    /* 深色模式：欢迎页玻璃卡片对齐工作台（rgba(18,28,43,.62)） */
    :root[data-theme="dark"] .state-empty#main-content-wrapper .welcome-action-card {
        background: rgba(30,43,61,.55) !important;
        border-color: rgba(120,170,220,.2) !important;
        box-shadow: 0 10px 28px rgba(0,0,0,.22), inset 0 1px 0 rgba(255,255,255,.05) !important;
    }
    :root[data-theme="dark"] .welcome-action-card .wac-name { color: #edf4fc !important; }
    :root[data-theme="dark"] .welcome-action-card .wac-desc { color: #7e91a9 !important; }
    :root[data-theme="dark"] .welcome-action-card svg { color: #a9c4ef !important; }

    /* 输入面板外层按需求透明；输入框本体保留正常卡片背景。 */
    #main-content-wrapper > .content-wrapper > #input-panel {
        flex: 0 0 auto !important;
        margin: 0 !important;
        padding: 6px 10px calc(8px + env(safe-area-inset-bottom, 0px)) !important;
        background: transparent !important;
        background-image: none !important;
        border: 0 !important;
        box-shadow: none !important;
        backdrop-filter: none !important;
        -webkit-backdrop-filter: none !important;
    }
    #main-content-wrapper > .content-wrapper > #input-panel .input-container {
        width: 100% !important;
        max-width: 800px !important;
        min-width: 0 !important;
    }
    #main-content-wrapper > .content-wrapper > #input-panel .input-box-wrapper {
        width: 100% !important;
        min-width: 0 !important;
        box-sizing: border-box !important;
        background: rgba(255, 255, 255, .42) !important;
    }
    #main-content-wrapper > .content-wrapper > #input-panel .input-tools-left {
        min-width: 0 !important;
        overflow-x: auto !important;
        scrollbar-width: none !important;
        -webkit-overflow-scrolling: touch !important;
    }
    #main-content-wrapper > .content-wrapper > #input-panel .input-tools-left::-webkit-scrollbar { display: none !important; }
    #main-content-wrapper > .content-wrapper > #input-panel .input-tools-right { flex: 0 0 auto !important; }
}

/* 2026-07-30 22:23 手机版输入框同步 PC 视觉：仅保留手机宽度、触控和 iOS 字号适配。 */
@media (max-width: 768px) {
    #main-content-wrapper > .content-wrapper > #input-panel .input-box-wrapper {
        max-width: 760px !important;
        padding: 4px 12px !important;
        border-radius: 26px !important;
        background: rgba(255, 255, 255, .42) !important;
        border: 1px solid rgba(255, 255, 255, .65) !important;
        box-shadow: 0 8px 32px rgba(56, 73, 102, .08), inset 0 1px 0 rgba(255, 255, 255, .5) !important;
        backdrop-filter: blur(20px) saturate(1.25) !important;
        -webkit-backdrop-filter: blur(20px) saturate(1.25) !important;
        transition: all .3s cubic-bezier(.16, 1, .3, 1) !important;
    }
    #main-content-wrapper > .content-wrapper > #input-panel .input-box-wrapper:focus-within {
        background: rgba(255, 255, 255, .58) !important;
        border-color: rgba(255, 255, 255, 1) !important;
        box-shadow: 0 12px 40px rgba(56, 73, 102, .1584), inset 0 1px 0 rgba(255, 255, 255, .6) !important;
    }
    :root[data-theme="dark"] #main-content-wrapper > .content-wrapper > #input-panel .input-box-wrapper {
        background: rgba(30, 41, 59, .52) !important;
        border-color: rgba(255, 255, 255, .08) !important;
        box-shadow: 0 8px 32px rgba(0, 0, 0, .2), inset 0 1px 0 rgba(255, 255, 255, .04) !important;
    }
    :root[data-theme="dark"] #main-content-wrapper > .content-wrapper > #input-panel .input-box-wrapper:focus-within {
        background: rgba(30, 41, 59, .68) !important;
        border-color: rgba(255, 255, 255, .168) !important;
        box-shadow: 0 12px 40px rgba(0, 0, 0, .264), inset 0 1px 0 rgba(255, 255, 255, .04) !important;
    }
    #main-content-wrapper > .content-wrapper > #input-panel #message-input {
        padding: 10px 0 !important;
        min-height: 24px !important;
        max-height: 160px !important;
        line-height: 1.5 !important;
        font-size: 16px !important;
    }
    #main-content-wrapper > .content-wrapper > #input-panel .input-tools-row {
        margin-top: 0 !important;
        gap: 0 !important;
    }
}

/* 2026-07-30 22:28 手机版首页只保留「猜你想问」；两列错落瀑布流，加宽卡片并保留舒适边距。 */
.mobile-guess-section { display: none; }
@media (max-width: 768px) {
    .state-empty#main-content-wrapper .welcome-v2-desc { margin-bottom: 18px !important; }
    .state-empty#main-content-wrapper .welcome-quick-actions { display: none !important; }
    .state-empty#main-content-wrapper .mobile-guess-section {
        display: block !important;
        width: min(100%, 366px) !important;
        margin: 0 auto !important;
        padding: 0 8px !important;
        box-sizing: border-box !important;
        text-align: left !important;
    }
    .state-empty#main-content-wrapper .mobile-guess-title {
        margin: 0 0 10px !important;
        padding: 0 4px !important;
        color: var(--text-secondary) !important;
        font-size: 13px !important;
        font-weight: 600 !important;
        line-height: 1.5 !important;
    }
    .state-empty#main-content-wrapper #suggestion-chips {
        display: flex !important;
        flex-wrap: wrap !important;
        align-items: center !important;
        justify-content: flex-start !important;
        gap: 8px !important;
        width: 100% !important;
        max-width: none !important;
        margin: 0 !important;
        overflow: visible !important;
        padding: 4px 0 6px !important;
        scrollbar-width: none !important;
    }
    .state-empty#main-content-wrapper #suggestion-chips::-webkit-scrollbar { display: none !important; }
    .state-empty#main-content-wrapper #suggestion-chips .suggestion-chip {
        display: inline-flex !important;
        align-items: center !important;
        justify-content: flex-start !important;
        flex: 0 0 auto !important;
        width: auto !important;
        max-width: 100% !important;
        min-width: 0 !important;
        min-height: 0 !important;
        height: 32px !important;
        padding: 0 12px !important;
        box-sizing: border-box !important;
        border: none !important;
        border-radius: 999px !important;
        background: color-mix(in srgb, var(--hover-bg) 85%, transparent) !important;
        color: var(--text-secondary) !important;
        box-shadow: none !important;
        font-size: 12.5px !important;
        line-height: 1 !important;
        font-weight: 400 !important;
        text-align: left !important;
        white-space: nowrap !important;
        overflow: hidden !important;
        text-overflow: ellipsis !important;
    }
    .state-empty#main-content-wrapper #suggestion-chips .suggestion-chip:nth-child(even) {
        margin-top: 0 !important;
    }
    .state-empty#main-content-wrapper #suggestion-chips .suggestion-chip:active {
        transform: scale(.98) !important;
        box-shadow: 0 1px 5px rgba(15, 23, 42, .06) !important;
    }
    :root[data-theme="dark"] .state-empty#main-content-wrapper #suggestion-chips .suggestion-chip {
        background: rgba(30, 41, 59, .46) !important;
        border: none !important;
        box-shadow: none !important;
    }
    /* ★ 2026-08-02 猜你想问瀑布流卡片：图标 + 文本结构（refreshSuggestions 移动端渲染）；2026-08-10 改胶囊单行，图标紧凑 */
    .state-empty#main-content-wrapper #suggestion-chips .suggestion-chip .mgc-icon {
        flex: none;
        width: 20px;
        height: 20px;
        margin-right: 6px;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        border-radius: 50%;
        background: rgba(37,99,235,.1);
        color: var(--primary-color);
    }
    .state-empty#main-content-wrapper #suggestion-chips .suggestion-chip .mgc-icon svg { width: 12px; height: 12px; }
    .state-empty#main-content-wrapper #suggestion-chips .suggestion-chip .mgc-text { flex: 0 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; }
    :root[data-theme="dark"] .state-empty#main-content-wrapper #suggestion-chips .suggestion-chip .mgc-icon {
        background: rgba(78,122,205,.25);
        color: #a9c4ef;
    }
}

/* 2026-07-30 23:01 工作台风格首批应用：仅手机版主对话首页与输入框。 */
@media (max-width: 768px) {
    /* 工作台式柔和桌面：三团低饱和光晕 + 蓝紫青渐变。
       2026-08-01 14:24 老板指示：背景色删除，全透明 */
    .state-empty#main-content-wrapper .content-wrapper {
        position: relative !important;
        isolation: isolate !important;
        background: transparent !important;
        background-color: transparent !important;
        background-image: none !important;
    }
    .state-empty#main-content-wrapper .welcome-v2 {
        animation: none !important;
    }
    .state-empty#main-content-wrapper .sphere-avatar {
        background: linear-gradient(145deg, #5b8def, #7b6bd6) !important;
        box-shadow: 0 10px 28px rgba(78, 122, 205, .23), inset 0 1px 0 rgba(255,255,255,.28) !important;
        animation: sphereFloat 5s ease-in-out infinite !important;
    }
    .state-empty#main-content-wrapper .welcome-v2-header {
        color: #16233a !important;
        font-weight: 700 !important;
        letter-spacing: -.025em !important;
    }
    .state-empty#main-content-wrapper .welcome-v2-desc {
        color: #6e7d91 !important;
    }
    .state-empty#main-content-wrapper .mobile-guess-title {
        color: #537099 !important;
        font-size: 11px !important;
        font-weight: 800 !important;
        letter-spacing: .12em !important;
    }
    .state-empty#main-content-wrapper #suggestion-chips .suggestion-chip {
        background: rgba(255, 255, 255, .55) !important;
        border: none !important;
        color: #334761 !important;
        box-shadow: none !important;
        backdrop-filter: blur(22px) saturate(1.3) !important;
        -webkit-backdrop-filter: blur(22px) saturate(1.3) !important;
        border-radius: 999px !important;
        height: 32px !important;
        padding: 0 12px !important;
        font-size: 12.5px !important;
    }

    /* 输入框沿用同一套工作台玻璃面板，不改变内部 DOM 和交互。
       ★ 2026-08-01 与 PC 输入框配置统一（老板指令：手机版不要黑色边框，与 PC 一致） */
    #main-content-wrapper > .content-wrapper > #input-panel .input-box-wrapper {
        background: rgba(255, 255, 255, .42) !important;
        border: 1px solid rgba(255, 255, 255, .65) !important;
        border-radius: 26px !important;
        box-shadow: 0 8px 32px rgba(56, 73, 102, .08), inset 0 1px 0 rgba(255, 255, 255, .5) !important;
        backdrop-filter: blur(20px) saturate(1.25) !important;
        -webkit-backdrop-filter: blur(20px) saturate(1.25) !important;
    }
    #main-content-wrapper > .content-wrapper > #input-panel .input-box-wrapper:focus-within {
        background: rgba(255, 255, 255, .58) !important;
        border-color: rgba(255, 255, 255, 1) !important;
        box-shadow: 0 12px 40px rgba(56, 73, 102, .1584), inset 0 1px 0 rgba(255, 255, 255, .6) !important;
    }

    :root[data-theme="dark"] .state-empty#main-content-wrapper .content-wrapper {
        background: transparent !important;
        background-color: transparent !important;
        background-image: none !important;
    }
    :root[data-theme="dark"] .state-empty#main-content-wrapper .welcome-v2-header { color: #edf4fc !important; }
    :root[data-theme="dark"] .state-empty#main-content-wrapper .welcome-v2-desc { color: #9aa9bc !important; }
    :root[data-theme="dark"] .state-empty#main-content-wrapper .mobile-guess-title { color: #9db8e8 !important; }
    :root[data-theme="dark"] .state-empty#main-content-wrapper #suggestion-chips .suggestion-chip {
        background: rgba(30, 41, 59, .52) !important;
        border: none !important;
        color: #dbe6f3 !important;
        box-shadow: none !important;
    }
    :root[data-theme="dark"] #main-content-wrapper > .content-wrapper > #input-panel .input-box-wrapper {
        background: rgba(30, 41, 59, .52) !important;
        border: 1px solid rgba(255, 255, 255, .08) !important;
        color: #dbe6f3 !important;
        box-shadow: 0 8px 32px rgba(0, 0, 0, .2), inset 0 1px 0 rgba(255,255,255,.04) !important;
    }
    :root[data-theme="dark"] #main-content-wrapper > .content-wrapper > #input-panel .input-box-wrapper:focus-within {
        background: rgba(30, 41, 59, .68) !important;
        border-color: rgba(255, 255, 255, .168) !important;
        box-shadow: 0 12px 40px rgba(0, 0, 0, .264), inset 0 1px 0 rgba(255,255,255,.04) !important;
    }
}

/* 2026-07-30 23:11 工作台风格应用到手机版侧边栏；抽屉宽度较原 80vw 缩短 30%（56vw）。 */
@media (max-width: 768px) {
    .sidebar {
        top: 0 !important;
        left: 0 !important;
        right: auto !important;
        bottom: 0 !important;
        width: 56vw !important;
        max-width: 224px !important;
        min-width: 208px !important;
        height: 100dvh !important;
        padding: 0 8px !important;
        padding-top: env(safe-area-inset-top, 0px) !important;
        padding-bottom: env(safe-area-inset-bottom, 0px) !important;
        background: rgba(255, 255, 255, .64) !important;
        border: 0 !important;
        border-right: 1px solid rgba(255, 255, 255, .58) !important;
        box-shadow: 18px 0 42px rgba(56, 73, 102, .12), inset -1px 0 0 rgba(255,255,255,.35) !important;
        backdrop-filter: blur(24px) saturate(1.3) !important;
        -webkit-backdrop-filter: blur(24px) saturate(1.3) !important;
        overflow-x: hidden !important;
    }
    .sidebar.collapsed {
        margin-left: 0 !important;
        transform: translateX(-100%) !important;
    }
    .sidebar-header {
        min-height: 58px !important;
        margin: 0 0 4px !important;
        padding: 10px 6px !important;
        padding-top: calc(10px + env(safe-area-inset-top, 0px)) !important;
    }
    .sidebar-logo img { max-width: 118px !important; height: 29px !important; object-fit: contain !important; object-position: left center !important; }
    .collapse-btn { width: 34px !important; height: 34px !important; min-width: 34px !important; border-radius: 11px !important; }
    .collapse-btn:active { background: rgba(255,255,255,.72) !important; }
    .sidebar-nav {
        gap: 3px !important;
        margin-bottom: 14px !important;
        padding: 4px 2px !important;
    }
    .sidebar-nav .nav-item,
    .history-list .nav-item,
    .history-item-wrapper .nav-item {
        min-height: 42px !important;
        padding: 9px 9px !important;
        gap: 9px !important;
        border-radius: 13px !important;
        font-size: 13px !important;
    }
    .sidebar-nav .nav-item svg { width: 18px !important; height: 18px !important; }
    .sidebar .nav-item:hover,
    .sidebar .nav-item.active {
        background: rgba(255, 255, 255, .56) !important;
        box-shadow: inset 0 1px 0 rgba(255,255,255,.45) !important;
    }
    .section-header {
        padding: 7px 8px 5px !important;
        color: #537099 !important;
        font-size: 10px !important;
        letter-spacing: .12em !important;
    }
    .history-list { padding: 2px 0 !important; }
    .history-item-wrapper { margin: 0 2px !important; }
    .history-group-title { padding: 10px 9px 5px !important; font-size: 11px !important; }
    .sidebar-footer {
        padding: 8px 0 !important;
        padding-bottom: calc(8px + env(safe-area-inset-bottom, 0px)) !important;
        border-top: 0 !important;
    }
    .sidebar .user-profile-card {
        margin: 0 !important;
        padding: 8px !important;
        border: 0 !important;
        border-radius: 15px !important;
        background: rgba(255,255,255,.48) !important;
        box-shadow: 0 8px 24px rgba(56,73,102,.08), inset 0 1px 0 rgba(255,255,255,.48) !important;
    }
    .sidebar .user-info-row { gap: 7px !important; }
    .sidebar .user-avatar { width: 30px !important; height: 30px !important; }
    .sidebar .user-name-text { font-size: 12px !important; }
    .sidebar .user-plan-text { display: none !important; }
    .mobile-overlay { background: rgba(15, 23, 42, .34) !important; backdrop-filter: blur(2px) !important; -webkit-backdrop-filter: blur(2px) !important; }

    :root[data-theme="dark"] .sidebar {
        background: rgba(18, 28, 43, .72) !important;
        border-right-color: rgba(255,255,255,.06) !important;
        box-shadow: 18px 0 44px rgba(0,0,0,.34), inset -1px 0 0 rgba(255,255,255,.03) !important;
    }
    :root[data-theme="dark"] .sidebar .nav-item:hover,
    :root[data-theme="dark"] .sidebar .nav-item.active { background: rgba(48, 65, 88, .62) !important; box-shadow: none !important; }
    :root[data-theme="dark"] .sidebar .section-header { color: #9db8e8 !important; }
    :root[data-theme="dark"] .sidebar .user-profile-card { background: rgba(30,43,61,.62) !important; box-shadow: 0 10px 28px rgba(0,0,0,.22), inset 0 1px 0 rgba(255,255,255,.04) !important; }
}

/* 极窄手机保留可读性下限；其余手机严格按 56vw。 */
@media (max-width: 360px) {
    .sidebar { min-width: 196px !important; }
}

/* 2026-07-30 23:19 手机版侧边栏对话历史扁平化：删除文字项外框、背景及阴影。 */
@media (max-width: 768px) {
    .sidebar #chats-section .history-item-wrapper,
    .sidebar #chats-section .history-item-wrapper .nav-item,
    .sidebar #chats-section .history-item-wrapper .nav-item:hover,
    .sidebar #chats-section .history-item-wrapper .nav-item.active,
    .sidebar #chats-section .history-item-wrapper:hover .nav-item {
        background: transparent !important;
        border: 0 !important;
        outline: 0 !important;
        box-shadow: none !important;
    }
    :root[data-theme="dark"] .sidebar #chats-section .history-item-wrapper,
    :root[data-theme="dark"] .sidebar #chats-section .history-item-wrapper .nav-item,
    :root[data-theme="dark"] .sidebar #chats-section .history-item-wrapper .nav-item:hover,
    :root[data-theme="dark"] .sidebar #chats-section .history-item-wrapper .nav-item.active,
    :root[data-theme="dark"] .sidebar #chats-section .history-item-wrapper:hover .nav-item {
        background: transparent !important;
        border: 0 !important;
        box-shadow: none !important;
    }
}

/* 2026-07-30 23:34 手机版顶栏模型选择行透明化。 */
@media (max-width: 768px) {
    #main-content-wrapper > .top-nav,
    #main-content-wrapper > .top-nav .top-left,
    #main-content-wrapper > .top-nav #model-dropdown-container,
    #main-content-wrapper > .top-nav #model-trigger,
    #main-content-wrapper > .top-nav #model-trigger:hover,
    #main-content-wrapper > .top-nav #model-trigger:active,
    #main-content-wrapper > .top-nav #model-dropdown-container.active #model-trigger {
        background: transparent !important;
        background-color: transparent !important;
        border: 0 !important;
        box-shadow: none !important;
        backdrop-filter: none !important;
        -webkit-backdrop-filter: none !important;
    }
    :root[data-theme="dark"] #main-content-wrapper > .top-nav,
    :root[data-theme="dark"] #main-content-wrapper > .top-nav .top-left,
    :root[data-theme="dark"] #main-content-wrapper > .top-nav #model-trigger,
    :root[data-theme="dark"] #main-content-wrapper > .top-nav #model-trigger:hover,
    :root[data-theme="dark"] #main-content-wrapper > .top-nav #model-trigger:active {
        background: transparent !important;
        background-color: transparent !important;
        border: 0 !important;
        box-shadow: none !important;
    }
}

/* 2026-07-30 23:39 手机版顶部模型行全链路透明：从主容器到文字/图标逐层清除视觉底板。 */
@media (max-width: 768px) {
    #main-content-wrapper,
    #main-content-wrapper > .top-nav,
    #main-content-wrapper > .top-nav::before,
    #main-content-wrapper > .top-nav::after,
    #main-content-wrapper > .top-nav .top-left,
    #main-content-wrapper > .top-nav .top-left::before,
    #main-content-wrapper > .top-nav .top-left::after,
    #main-content-wrapper > .top-nav #model-dropdown-container,
    #main-content-wrapper > .top-nav #model-dropdown-container::before,
    #main-content-wrapper > .top-nav #model-dropdown-container::after,
    #main-content-wrapper > .top-nav #model-trigger,
    #main-content-wrapper > .top-nav #model-trigger::before,
    #main-content-wrapper > .top-nav #model-trigger::after,
    #main-content-wrapper > .top-nav #current-model-display,
    #main-content-wrapper > .top-nav #model-trigger .chevron-icon,
    #main-content-wrapper > .top-nav #agent-selector,
    #main-content-wrapper > .top-nav #agent-selector::before,
    #main-content-wrapper > .top-nav #agent-selector::after,
    #main-content-wrapper > .top-nav #agent-selector-trigger,
    #main-content-wrapper > .top-nav #agent-selector-trigger::before,
    #main-content-wrapper > .top-nav #agent-selector-trigger::after,
    #main-content-wrapper > .top-nav #current-agent-display,
    #main-content-wrapper > .top-nav #agent-selector-trigger .chevron-icon {
        background: transparent !important;
        background-color: transparent !important;
        background-image: none !important;
        border-color: transparent !important;
        outline-color: transparent !important;
        box-shadow: none !important;
        filter: none !important;
        backdrop-filter: none !important;
        -webkit-backdrop-filter: none !important;
    }
    #main-content-wrapper > .top-nav #model-trigger:hover,
    #main-content-wrapper > .top-nav #model-trigger:focus,
    #main-content-wrapper > .top-nav #model-trigger:focus-visible,
    #main-content-wrapper > .top-nav #model-trigger:active,
    #main-content-wrapper > .top-nav #model-dropdown-container.active #model-trigger,
    #main-content-wrapper > .top-nav #agent-selector-trigger:hover,
    #main-content-wrapper > .top-nav #agent-selector-trigger:focus,
    #main-content-wrapper > .top-nav #agent-selector-trigger:focus-visible,
    #main-content-wrapper > .top-nav #agent-selector-trigger:active,
    #main-content-wrapper > .top-nav #agent-selector-trigger.active {
        background: transparent !important;
        background-color: transparent !important;
        background-image: none !important;
        border-color: transparent !important;
        outline: 0 !important;
        box-shadow: none !important;
        filter: none !important;
        backdrop-filter: none !important;
        -webkit-backdrop-filter: none !important;
    }
    :root[data-theme="dark"] #main-content-wrapper,
    :root[data-theme="dark"] #main-content-wrapper > .top-nav,
    :root[data-theme="dark"] #main-content-wrapper > .top-nav .top-left,
    :root[data-theme="dark"] #main-content-wrapper > .top-nav #model-dropdown-container,
    :root[data-theme="dark"] #main-content-wrapper > .top-nav #model-trigger,
    :root[data-theme="dark"] #main-content-wrapper > .top-nav #agent-selector,
    :root[data-theme="dark"] #main-content-wrapper > .top-nav #agent-selector-trigger {
        background: transparent !important;
        background-color: transparent !important;
        background-image: none !important;
        border-color: transparent !important;
        box-shadow: none !important;
        backdrop-filter: none !important;
        -webkit-backdrop-filter: none !important;
    }
}

/* 2026-07-30 23:50 手机版顶部菜单真正全透明：整行所有直接子层和控件状态均不得绘制底板。 */
@media (max-width: 768px) {
    #main-content-wrapper > .top-nav,
    #main-content-wrapper > .top-nav::before,
    #main-content-wrapper > .top-nav::after,
    #main-content-wrapper > .top-nav > .top-left,
    #main-content-wrapper > .top-nav > .top-right,
    #main-content-wrapper > .top-nav > .top-left > *,
    #main-content-wrapper > .top-nav > .top-right > *,
    #main-content-wrapper > .top-nav .toggle-sidebar-btn,
    #main-content-wrapper > .top-nav .new-chat-top-btn,
    #main-content-wrapper > .top-nav .icon-btn,
    #main-content-wrapper > .top-nav .page-action-btn,
    #main-content-wrapper > .top-nav .model-trigger,
    #main-content-wrapper > .top-nav .agent-selector-trigger,
    #main-content-wrapper > .top-nav .user-info-area,
    #main-content-wrapper > .top-nav .username-display,
    #main-content-wrapper > .top-nav .logout-btn-subtle,
    #main-content-wrapper > .top-nav .login-btn,
    #main-content-wrapper > .top-nav #login-btn,
    #main-content-wrapper > .top-nav [class*="trigger"],
    #main-content-wrapper > .top-nav [class*="btn"] {
        background: transparent !important;
        background-color: transparent !important;
        background-image: none !important;
        border-color: transparent !important;
        outline: 0 !important;
        box-shadow: none !important;
        filter: none !important;
        backdrop-filter: none !important;
        -webkit-backdrop-filter: none !important;
    }
    #main-content-wrapper > .top-nav .toggle-sidebar-btn:hover,
    #main-content-wrapper > .top-nav .toggle-sidebar-btn:focus,
    #main-content-wrapper > .top-nav .toggle-sidebar-btn:active,
    #main-content-wrapper > .top-nav .new-chat-top-btn:hover,
    #main-content-wrapper > .top-nav .new-chat-top-btn:focus,
    #main-content-wrapper > .top-nav .new-chat-top-btn:active,
    #main-content-wrapper > .top-nav .icon-btn:hover,
    #main-content-wrapper > .top-nav .icon-btn:focus,
    #main-content-wrapper > .top-nav .icon-btn:active,
    #main-content-wrapper > .top-nav .page-action-btn:hover,
    #main-content-wrapper > .top-nav .page-action-btn:focus,
    #main-content-wrapper > .top-nav .page-action-btn:active,
    #main-content-wrapper > .top-nav [class*="trigger"]:hover,
    #main-content-wrapper > .top-nav [class*="trigger"]:focus,
    #main-content-wrapper > .top-nav [class*="trigger"]:active,
    #main-content-wrapper > .top-nav [class*="trigger"].active,
    #main-content-wrapper > .top-nav [class*="btn"]:hover,
    #main-content-wrapper > .top-nav [class*="btn"]:focus,
    #main-content-wrapper > .top-nav [class*="btn"]:active {
        background: transparent !important;
        background-color: transparent !important;
        background-image: none !important;
        border-color: transparent !important;
        outline: 0 !important;
        box-shadow: none !important;
        filter: none !important;
        backdrop-filter: none !important;
        -webkit-backdrop-filter: none !important;
    }
    :root[data-theme="dark"] #main-content-wrapper > .top-nav,
    :root[data-theme="dark"] #main-content-wrapper > .top-nav > .top-left,
    :root[data-theme="dark"] #main-content-wrapper > .top-nav > .top-right,
    :root[data-theme="dark"] #main-content-wrapper > .top-nav > .top-left > *,
    :root[data-theme="dark"] #main-content-wrapper > .top-nav > .top-right > * {
        background: transparent !important;
        background-color: transparent !important;
        background-image: none !important;
        border-color: transparent !important;
        box-shadow: none !important;
        backdrop-filter: none !important;
        -webkit-backdrop-filter: none !important;
    }
    /* 2026-07-31 老板反馈：顶栏上传/创建等操作按钮被上方全透明规则淹没看不见，恢复可读性。
       主按钮实心反差色；次级按钮恢复边框+文字色。 */
    #main-content-wrapper > .top-nav .page-action-btn,
    #main-content-wrapper > .top-nav .page-action-btn:hover,
    #main-content-wrapper > .top-nav .page-action-btn:focus,
    #main-content-wrapper > .top-nav .page-action-btn:active {
        background: var(--text-primary) !important;
        background-color: var(--text-primary) !important;
        color: var(--bg-main) !important;
        border: 1px solid var(--text-primary) !important;
        border-radius: 8px !important;
    }
    body #main-content-wrapper > .top-nav .page-action-btn.page-action-btn-secondary,
    body #main-content-wrapper > .top-nav .page-action-btn.page-action-btn-secondary:hover,
    body #main-content-wrapper > .top-nav .page-action-btn.page-action-btn-secondary:focus,
    body #main-content-wrapper > .top-nav .page-action-btn.page-action-btn-secondary:active,
    #main-content-wrapper > .top-nav #agent-import-btn,
    #main-content-wrapper > .top-nav #agent-import-btn:hover {
        background: transparent !important;
        background-color: transparent !important;
        color: var(--text-secondary) !important;
        border: 1px solid var(--border-color) !important;
    }
}

/* 2026-07-31 00:06 手机版新建空对话使用纯净画布：保留顶栏与输入框，清空中部欢迎内容。 */
@media (max-width: 768px) {
    #main-content-wrapper.state-empty #empty-welcome,
    #main-content-wrapper.state-empty #empty-welcome .welcome-v2,
    #main-content-wrapper.state-empty #empty-welcome .sphere-avatar,
    #main-content-wrapper.state-empty #empty-welcome .welcome-v2-header,
    #main-content-wrapper.state-empty #empty-welcome .welcome-v2-desc,
    #main-content-wrapper.state-empty #empty-welcome .welcome-quick-actions,
    #main-content-wrapper.state-empty #empty-welcome .mobile-guess-section,
    #main-content-wrapper.state-empty #empty-welcome #suggestion-chips {
        display: none !important;
    }
    #main-content-wrapper.state-empty > .content-wrapper {
        justify-content: flex-end !important;
    }
}

/* 2026-07-31 00:12 欢迎页与新建页分离：仅显式新建页清空中部，普通欢迎页恢复完整内容。 */
@media (max-width: 768px) {
    /* ★ 2026-08-08 修复：欢迎页强制显示须排除模块页状态——原选择器 (2,2,0) !important 压过所有模块页 none!important (1,2,0)，
       空会话打开云盘/技能等 → state-empty 残留 → 欢迎页叠在模块页上不关闭 */
    /* ★ 2026-08-12 修复：对比/会议模式也排除（state-compare/state-meeting）——手机端进入对比/会议时欢迎页强制显示会把响应区挤下去 */
    #main-content-wrapper.state-empty:not(.state-new-chat):not(.state-cloud):not(.state-skills):not(.state-apps):not(.state-kb):not(.state-agent):not(.state-talk):not(.state-calendar):not(.state-compare):not(.state-meeting) #empty-welcome {
        display: flex !important;
    }
    #main-content-wrapper.state-empty:not(.state-new-chat):not(.state-cloud):not(.state-skills):not(.state-apps):not(.state-kb):not(.state-agent):not(.state-talk):not(.state-calendar):not(.state-compare):not(.state-meeting) #empty-welcome .welcome-v2 {
        display: flex !important;
    }
    #main-content-wrapper.state-empty:not(.state-new-chat):not(.state-cloud):not(.state-skills):not(.state-apps):not(.state-kb):not(.state-agent):not(.state-talk):not(.state-calendar):not(.state-compare):not(.state-meeting) #empty-welcome .sphere-avatar {
        display: flex !important;
    }
    #main-content-wrapper.state-empty:not(.state-new-chat):not(.state-cloud):not(.state-skills):not(.state-apps):not(.state-kb):not(.state-agent):not(.state-talk):not(.state-calendar):not(.state-compare):not(.state-meeting) #empty-welcome .welcome-v2-header,
    #main-content-wrapper.state-empty:not(.state-new-chat):not(.state-cloud):not(.state-skills):not(.state-apps):not(.state-kb):not(.state-agent):not(.state-talk):not(.state-calendar):not(.state-compare):not(.state-meeting) #empty-welcome .welcome-v2-desc,
    #main-content-wrapper.state-empty:not(.state-new-chat):not(.state-cloud):not(.state-skills):not(.state-apps):not(.state-kb):not(.state-agent):not(.state-talk):not(.state-calendar):not(.state-compare):not(.state-meeting) #empty-welcome .mobile-guess-section,
    #main-content-wrapper.state-empty:not(.state-new-chat):not(.state-cloud):not(.state-skills):not(.state-apps):not(.state-kb):not(.state-agent):not(.state-talk):not(.state-calendar):not(.state-compare):not(.state-meeting) #empty-welcome #suggestion-chips {
        display: flex !important;
    }
    /* ★ 2026-08-12 对比/会议模式：内容区不靠底（flex-end），避免模型框被推下去 */
    #main-content-wrapper.state-empty.state-compare > .content-wrapper,
    #main-content-wrapper.state-empty.state-meeting > .content-wrapper {
        justify-content: flex-start !important;
    }
    #main-content-wrapper.state-new-chat #empty-welcome {
        display: none !important;
    }
    #main-content-wrapper.state-new-chat > .content-wrapper {
        justify-content: flex-end !important;
    }
}

/* 2026-07-31 07:28 手机版主对话第一批优化：抽屉宽度回归、更多功能真实遮罩、触控目标放大、历史标题两行可读。 */
@media (max-width: 768px) {
    /* 直接锁定思洋主页 div#sidebar：在原 56vw 抽屉基础上累计增加 50px，避免旧 min/max 规则吞掉增量。 */
    div#sidebar.sidebar {
        box-sizing: border-box !important;
        flex: 0 0 calc(56vw + 50px) !important;
        width: calc(56vw + 50px) !important;
        min-width: calc(56vw + 50px) !important;
        max-width: calc(56vw + 50px) !important;
    }
    #sidebar.collapsed {
        margin-left: 0 !important;
        transform: translateX(-100%) !important;
    }

    /* 顶栏与消息操作键达到可用触控尺寸，避免 28-32px 误触。 */
    #main-content-wrapper > .top-nav .icon-btn,
    #main-content-wrapper > .top-nav .toggle-sidebar-btn,
    #main-content-wrapper > .top-nav .new-chat-top-btn {
        min-width: 40px !important;
        min-height: 40px !important;
    }
    .action-bar .action-btn {
        min-width: 40px !important;
        min-height: 40px !important;
    }
    .sidebar .action-icon-btn,
    .sidebar .history-item-wrapper .more-btn {
        min-width: 36px !important;
        min-height: 36px !important;
    }
    #main-content-wrapper > .content-wrapper > #input-panel .think-switch-btn,
    #main-content-wrapper > .content-wrapper > #input-panel .search-switch-btn,
    #main-content-wrapper > .content-wrapper > #input-panel .mic-btn,
    #main-content-wrapper > .content-wrapper > #input-panel #send-button {
        width: 36px !important;
        height: 36px !important;
        min-width: 36px !important;
        min-height: 36px !important;
    }
    #main-content-wrapper > .content-wrapper > #input-panel #send-button {
        width: 40px !important;
        height: 40px !important;
        min-width: 40px !important;
        min-height: 40px !important;
    }

    /* 企业 IM 悬浮入口缩小降干扰，避免挡住消息表格右缘。 */
    #im-entry-btn,
    #im-entry-mobile {
        top: calc(64px + env(safe-area-inset-top, 0px)) !important;
        right: 8px !important;
        width: 38px !important;
        height: 38px !important;
        opacity: 0.92 !important;
        box-shadow: 0 1px 8px rgba(99,102,241,.26) !important;
    }
    #im-entry-btn svg,
    #im-entry-mobile svg {
        width: 19px !important;
        height: 19px !important;
    }

    /* 手机端 Markdown 表格不再强制整宽逐格换行，改为气泡内横向滑动，显著降低单条消息高度。 */
    .markdown-body table {
        display: block !important;
        width: auto !important;
        max-width: 100% !important;
        overflow-x: auto !important;
        white-space: nowrap !important;
        -webkit-overflow-scrolling: touch !important;
    }
    .markdown-body table th,
    .markdown-body table td {
        padding: 7px 10px !important;
        font-size: 12px !important;
    }

    /* 更多功能弹层加宽并投出全屏遮罩阴影；点击外部仍由既有 JS 关闭。 */
    .sidebar-more-menu,
    .sidebar-more-menu.show {
        width: min(86vw, 320px) !important;
        max-height: 72vh !important;
        box-shadow: 0 18px 48px rgba(31,45,71,.18), inset 0 1px 0 rgba(255,255,255,.55), 0 0 0 100vmax rgba(15,23,42,.30) !important;
    }
    .sidebar-more-close {
        width: 32px !important;
        height: 32px !important;
    }
    .sidebar-more-item {
        min-height: 40px !important;
        padding: 8px 10px !important;
    }
    .sidebar-more-pin {
        width: 32px !important;
        height: 32px !important;
        opacity: 0.65 !important;
    }

    /* 56vw 抽屉下单行省略过狠，历史标题改为最多两行，提升可辨识度。 */
    .sidebar #chats-section .history-item-wrapper .nav-item span {
        white-space: normal !important;
        display: -webkit-box !important;
        -webkit-line-clamp: 2;
        -webkit-box-orient: vertical;
        overflow: hidden !important;
        line-height: 1.25 !important;
    }
}

/* 2026-07-31 20:08 手机版侧边栏主题（月亮/太阳）按钮向右移动 20px。 */
@media (max-width: 768px) {
    div#sidebar.sidebar #sidebar-theme-toggle-btn {
        position: relative !important;
        left: 20px !important;
        z-index: 1 !important;
    }
}

/* 2026-07-31 20:10 手机版侧栏头部收口：折叠键右移 10px，品牌名称完整显示。 */
@media (max-width: 768px) {
    div#sidebar.sidebar .sidebar-header {
        overflow: visible !important;
    }
    div#sidebar.sidebar .sidebar-logo {
        min-width: 0 !important;
        overflow: visible !important;
        font-size: 11px !important;
        letter-spacing: 0 !important;
        gap: 0 !important;
    }
    div#sidebar.sidebar .sidebar-logo img {
        width: 28px !important;
        max-width: 28px !important;
        height: 28px !important;
        margin-right: 4px !important;
        flex: 0 0 28px !important;
    }
    div#sidebar.sidebar .sidebar-logo span {
        display: block !important;
        min-width: 0 !important;
        white-space: nowrap !important;
        overflow: visible !important;
        text-overflow: clip !important;
    }
    div#sidebar.sidebar #close-sidebar-btn {
        position: relative !important;
        left: 10px !important;
        z-index: 2 !important;
    }
}


/* 2026-08-01 可访问性收口：键盘焦点可见，不干扰鼠标/触控点击。 */
:where(a, button, input, textarea, select, summary, [role="button"], [tabindex]):focus-visible {
    outline: 3px solid color-mix(in srgb, var(--primary-color, #2563eb) 76%, white) !important;
    outline-offset: 2px !important;
    box-shadow: 0 0 0 2px var(--bg-primary, #fff) !important;
}
@media (forced-colors: active) {
    :where(a, button, input, textarea, select, summary, [role="button"], [tabindex]):focus-visible {
        outline: 2px solid CanvasText !important;
    }
}

/* ============================================
   ★ 2026-08-01 聚焦去蓝：输入控件聚焦时保留光标，去掉蓝色边框/光晕
   老板指示：进入编程模式自动聚焦输入框，不要蓝色高亮，只保留光标定位；全站同类问题一并处理
   ============================================ */
input:focus,
textarea:focus,
select:focus,
.ux-search:focus-within,
.model-menu-search:focus-within,
.agent-module-search:focus-within,
.agent-menu-search:focus-within,
.agent-create-modal .form-group input:focus,
.agent-create-modal .form-group textarea:focus,
.agent-create-modal .form-group select:focus,
.ppt-input-card textarea:focus,
#ppt-wiz-topic:focus,
.ppt-input-selects select:focus,
.ppt-regen-body textarea:focus,
.ppt-edit-field input:focus,
.ppt-edit-field textarea:focus,
.ppt-edit-el-input:focus,
.ppt-edit-el-textarea:focus {
    box-shadow: none !important;
    outline: none !important;
    /* border-color 保持原样：聚焦不变色，仅去光晕 */
}
/* ★ 2026-08-01 输入框容器(.input-box-wrapper:focus-within)不再去光晕：
   老板指令要求激活时投影加深 20%，容器投影需要保留生效，故从上表移除。 */


/* 2026-08-01 云盘卡片移动端：长按不弹系统菜单、不选中、不拖拽（配合 JS 长按菜单） */
.cloud-asset-card, .cloud-thumb-card, .cloud-folder-item, [data-folder-path] {
    -webkit-touch-callout: none !important;
    -webkit-user-select: none !important;
    user-select: none !important;
    -webkit-user-drag: none !important;
}
@media (max-width: 768px) {
    .cloud-asset-card img, .cloud-thumb-card img, .cloud-asset-card video, .cloud-thumb-card video {
        pointer-events: none !important;
    }
}

/* 2026-08-01 通用滚动隐藏 header（云盘/知识库/技能/应用中心/智能体复用）
   滚动隐藏时保留板块标题（.app-page-title 固定显示），只收起副标题/搜索/分类等次要区域 */
.app-page-header.scroll-hide-header {
    padding-bottom: 0 !important;
    border: none !important;
}
.app-page-header.scroll-hide-header .ux-page-subtitle,
.app-page-header.scroll-hide-header .app-page-search-row,
.app-page-header.scroll-hide-header .app-tabs,
.app-page-header.scroll-hide-header .ux-chips,
.app-page-header.scroll-hide-header .agent-module-toolbar,
.app-page-header.scroll-hide-header .agent-module-tabrow,
.app-page-header.scroll-hide-header .app-cat-tabs,
.app-page-header.scroll-hide-header .app-page-search-row,
.app-page-header.scroll-hide-header .cloud-toolbar,
.app-page-header.scroll-hide-header .cloud-type-chips,
.app-page-header.scroll-hide-header .kb-toolbar,
.app-page-header.scroll-hide-header .skills-toolbar,
.app-page-header.scroll-hide-header .agent-module-search {
    max-height: 0 !important;
    opacity: 0 !important;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
    margin: 0 !important;
    overflow: hidden !important;
    pointer-events: none !important;
}
.app-page-header {
    transition: max-height 0.22s ease, opacity 0.22s ease, padding 0.22s ease;
}
.app-page-header .ux-page-subtitle,
.app-page-header .app-page-search-row,
.app-page-header .app-tabs,
.app-page-header .ux-chips,
.app-page-header .agent-module-toolbar,
.app-page-header .agent-module-tabrow,
.app-page-header .app-cat-tabs,
.app-page-header .cloud-toolbar,
.app-page-header .cloud-type-chips,
.app-page-header .kb-toolbar,
.app-page-header .skills-toolbar,
.app-page-header .agent-module-search {
    transition: max-height 0.22s ease, opacity 0.22s ease, padding 0.22s ease, margin 0.22s ease;
    overflow: hidden;
}
/* 兼容旧 class（云盘原实现） */
.cloud-header-hidden {
    max-height: 0 !important;
    opacity: 0 !important;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
    margin: 0 !important;
}

/* 2026-08-01 自定义分组筛选（与分类筛选同风格，紫色区分） */
.agent-group-filters {
    display: flex;
    justify-content: center;
    gap: 6px;
    flex-wrap: nowrap;
    overflow-x: auto;
    overflow-y: hidden;
    margin-top: 6px;
    padding: 0 4px 2px;
    scrollbar-width: none;
    -ms-overflow-style: none;
    -webkit-overflow-scrolling: touch;
}
.agent-group-filters::-webkit-scrollbar { display: none; }
.agent-group-filter {
    flex: 0 0 auto;
    border: 1px solid rgba(139,92,246,.35);
    border-radius: 999px;
    padding: 4px 12px;
    background: rgba(139,92,246,.06);
    color: #8b5cf6;
    font-size: 11px;
    cursor: pointer;
    transition: .15s;
    min-height: 28px;
}
.agent-group-filter:hover { background: rgba(139,92,246,.14); color: #7c3aed; }
.agent-group-filter.active {
    background: #8b5cf6;
    border-color: #8b5cf6;
    color: #fff;
}
@media (max-width: 768px) {
    .agent-group-filters {
        justify-content: flex-start !important;
        margin-left: 4px !important;
        margin-right: 4px !important;
        padding: 0 8px 4px 4px !important;
        scroll-snap-type: x proximity;
        -webkit-overflow-scrolling: touch;
    }
    .agent-group-filter {
        scroll-snap-align: start;
        padding: 6px 14px !important;
        min-height: 32px;
        font-size: 12px;
    }
}

/* 2026-08-01 智能体对话空状态建议 chips */
.agent-suggestions {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    justify-content: center;
    padding: 8px 16px 4px;
    max-width: 520px;
    margin: 0 auto;
}
.agent-suggestions button {
    padding: 7px 14px;
    border-radius: 999px;
    border: 1px solid var(--border-color);
    background: var(--hover-bg);
    color: var(--text-primary);
    font-size: 12px;
    cursor: pointer;
    transition: all 0.15s;
}
.agent-suggestions button:hover {
    border-color: var(--primary-color);
    color: var(--primary-color);
    background: rgba(59,130,246,0.06);
    transform: translateY(-1px);
}
/* 智能体头部状态指示 */
.agent-chat-header .agent-info .name { display: flex; align-items: center; gap: 8px; }
.agent-status-dot { width: 8px; height: 8px; border-radius: 50%; background: #42ad82; box-shadow: 0 0 0 4px rgba(66,173,130,.12); display: inline-block; flex-shrink: 0; }
.agent-status-dot.busy { background: #f0b429; box-shadow: 0 0 0 4px rgba(240,180,41,.14); animation: agentPulse 1.2s infinite; }
@keyframes agentPulse { 0%,100% { opacity: 1; } 50% { opacity: .4; } }

/* ==================== 微信式语音输入（2026-08-01） ==================== */
.hold-to-talk {
    width: 100%;
    min-height: 56px;
    border-radius: 32px;
    background: var(--hover-bg, #e2e8f0);
    border: 1px solid var(--border-color);
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    cursor: pointer;
    user-select: none;
    -webkit-user-select: none;
    -webkit-touch-callout: none;
    -webkit-user-drag: none;
    -webkit-tap-highlight-color: transparent;
    touch-action: none;
    transition: background 0.2s, transform 0.1s;
    position: relative;
}
.hold-to-talk.recording {
    background: rgba(59,130,246,0.132);
    border-color: var(--primary-color);
}
.hold-to-talk.cancel-mode {
    background: rgba(239,68,68,0.12);
    border-color: #ef4444;
}
.hold-to-talk-hint {
    font-size: 15px;
    font-weight: 600;
    color: var(--text-primary);
    display: flex;
    align-items: center;
    gap: 8px;
}
.hold-to-talk-hint svg { width: 18px; height: 18px; flex-shrink: 0; }
.hold-to-talk-timer {
    font-size: 15px;
    font-weight: 700;
    color: var(--primary-color);
    font-variant-numeric: tabular-nums;
}
.hold-to-talk-tip {
    text-align: center;
    font-size: 12px;
    color: var(--text-secondary);
    padding: 4px 0 0;
    opacity: 0.85;
}
.hold-to-talk-tip.cancel-tip { color: #ef4444; }
/* 语音条（聊天消息内） */
.voice-bubble {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    min-width: 96px;
    max-width: 240px;
    padding: 8px 12px;
    border-radius: 16px;
    background: rgba(59,130,246,0.08);
    border: 1px solid rgba(59,130,246,0.18);
    cursor: pointer;
    transition: background 0.2s;
}
.voice-bubble:hover { background: rgba(59,130,246,0.14); }
.voice-bubble.playing { background: rgba(59,130,246,0.18); }
.voice-bubble-play {
    width: 30px;
    height: 30px;
    border-radius: 50%;
    background: var(--primary-color);
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    color: #fff;
}
.voice-bubble-play svg { width: 14px; height: 14px; }
.voice-bubble-wave {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    gap: 2px;
    height: 22px;
}
.voice-bubble-wave span {
    width: 3px;
    border-radius: 2px;
    background: var(--primary-color);
    opacity: 0.55;
    animation: voiceWave 1s ease-in-out infinite;
}
.voice-bubble.playing .voice-bubble-wave span { opacity: 1; animation-duration: 0.6s; }
@keyframes voiceWave {
    0%, 100% { height: 6px; }
    50% { height: 20px; }
}
.voice-bubble-duration {
    font-size: 12px;
    color: var(--text-secondary);
    font-variant-numeric: tabular-nums;
    flex-shrink: 0;
}
.voice-bubble-fail {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 8px 12px;
    border-radius: 16px;
    background: rgba(239,68,68,0.1);
    border: 1px solid rgba(239,68,68,0.25);
    font-size: 12px;
    color: #ef4444;
}
.voice-bubble-fail button {
    border: none;
    background: #ef4444;
    color: #fff;
    border-radius: 8px;
    padding: 3px 10px;
    font-size: 12px;
    cursor: pointer;
}
/* 微信式：语音模式隐藏输入工具区 */

/* ==================== 微信式语音输入 v2（2026-08-01 老板反馈修复） ==================== */
/* ① 语音模式：整个输入框外框（含边框/工具行区域）都变成按键区 */
.input-box-wrapper.voice-mode {
    cursor: pointer;
    padding: 0;
    min-height: 56px;
    border-radius: 26px;
    position: relative;
    transition: background 0.2s, border-color 0.2s;
}
.input-box-wrapper.voice-mode:focus-within {
    background: var(--hover-bg, rgba(241,245,249,.9));
    border-color: var(--border-color);
    box-shadow: 0 8px 32px rgba(56,73,102,.08);
}
.input-box-wrapper.voice-mode textarea,
.input-box-wrapper.voice-mode .input-tools-row,
.input-box-wrapper.voice-mode .media-ref-strip,
.input-box-wrapper.voice-mode .upload-preview-area { display: none !important; }
/* hold-to-talk 绝对定位覆盖整个外框（含工具行区域），全框可按键 */
.input-box-wrapper.voice-mode #hold-to-talk {
    position: absolute;
    inset: 0;
    width: auto;
    min-height: 0;
    margin: 0;
    border: none;
    border-radius: 26px;
    background: transparent;
    display: flex !important;
    align-items: center;
    justify-content: center;
    z-index: 2;
}
.input-box-wrapper.voice-mode #hold-to-talk:hover { background: rgba(59,130,246,.06); }
.input-box-wrapper.voice-mode #hold-to-talk.recording { background: rgba(59,130,246,.132); }
.input-box-wrapper.voice-mode #hold-to-talk.cancel-mode { background: rgba(239,68,68,.12); }

/* ② 录音中麦克风动画：脉冲光圈 + 声波条（用户明确知道在录音） */
.hold-to-talk .hold-mic-wrap {
    position: relative;
    width: 40px;
    height: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}
.hold-to-talk .hold-mic-wrap svg { width: 20px; height: 20px; position: relative; z-index: 2; }
.hold-to-talk .hold-mic-pulse {
    position: absolute;
    inset: 0;
    border-radius: 50%;
    background: rgba(59,130,246,.25);
    opacity: 0;
    z-index: 1;
}
.hold-to-talk.recording .hold-mic-pulse {
    animation: holdMicPulse 1.2s ease-out infinite;
}
@keyframes holdMicPulse {
    0% { transform: scale(.6); opacity: .7; }
    100% { transform: scale(1.5); opacity: 0; }
}
.hold-to-talk .hold-wave {
    display: none;
    align-items: center;
    gap: 3px;
    height: 22px;
    margin-left: 2px;
}
.hold-to-talk.recording .hold-wave {
    display: inline-flex;
}
.hold-to-talk .hold-wave span {
    width: 3px;
    border-radius: 2px;
    background: var(--primary-color);
    animation: holdWaveAnim .8s ease-in-out infinite;
}
.hold-to-talk .hold-wave span:nth-child(1) { animation-delay: 0s; }
.hold-to-talk .hold-wave span:nth-child(2) { animation-delay: .1s; }
.hold-to-talk .hold-wave span:nth-child(3) { animation-delay: .2s; }
.hold-to-talk .hold-wave span:nth-child(4) { animation-delay: .3s; }
.hold-to-talk .hold-wave span:nth-child(5) { animation-delay: .4s; }
.hold-to-talk .hold-wave span:nth-child(6) { animation-delay: .25s; }
.hold-to-talk .hold-wave span:nth-child(7) { animation-delay: .15s; }
@keyframes holdWaveAnim {
    0%, 100% { height: 5px; }
    50% { height: 20px; }
}

/* ==================== 语音输入 v3（2026-08-01 老板反馈：提示上移20px + 键盘切换图标） ==================== */
/* 提示改为按键上方浮出（微信风格），相对按键区上移 20px */
.hold-to-talk-tip {
    position: absolute;
    bottom: calc(100% + 20px);
    left: 50%;
    transform: translateX(-50%);
    background: rgba(0, 0, 0, .72);
    color: #fff;
    border-radius: 10px;
    padding: 6px 16px;
    font-size: 12px;
    font-weight: 500;
    z-index: 3000;
    white-space: nowrap;
    box-shadow: 0 6px 20px rgba(0, 0, 0, .18);
    pointer-events: none;
    letter-spacing: .3px;
}
.hold-to-talk-tip.cancel-tip { background: rgba(239, 68, 68, .88); }
/* 键盘切换按钮：按键区最右侧 */
.hold-to-talk-keyboard {
    position: absolute;
    right: 12px;
    top: 50%;
    transform: translateY(-50%);
    width: 34px;
    height: 34px;
    border-radius: 10px;
    border: none;
    background: transparent;
    color: var(--text-secondary);
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    z-index: 3;
    transition: background 0.2s, color 0.2s;
}
.hold-to-talk-keyboard:hover { background: rgba(59, 130, 246, .1); color: var(--primary-color); }
.hold-to-talk-keyboard svg { width: 19px; height: 19px; }
.input-box-wrapper.voice-mode #hold-to-talk-keyboard { display: flex !important; }
.input-box-wrapper:not(.voice-mode) #hold-to-talk-keyboard { display: none !important; }

/* ==================== 语音输入 v6：按住说话文字强制不可选（老板反馈长按仍会选中文字） ==================== */
.hold-to-talk, .hold-to-talk *,
.hold-to-talk-hint, .hold-to-talk-hint *,
.hold-to-talk-label,
.hold-to-talk-timer,
.hold-to-talk-tip {
    user-select: none !important;
    -webkit-user-select: none !important;
    -moz-user-select: none !important;
    -ms-user-select: none !important;
    -webkit-touch-callout: none !important;
    -webkit-user-drag: none !important;
    -webkit-tap-highlight-color: transparent !important;
    caret-color: transparent !important;
}
/* 提示浮层也禁选中 */
.hold-to-talk-tip {
    pointer-events: none;
}

/* ==================== 语音输入 v7：长按不稳定根治（老板反馈：长按自动发送，按文字上更严重） ==================== */
/* 文字/图标不拦截触摸事件——按文字=按按钮，行为完全一致；系统选择手势无从激活 */
.hold-to-talk-hint,
.hold-to-talk-hint *,
.hold-to-talk-label,
.hold-to-talk-timer {
    pointer-events: none !important;
}
/* 仅按钮容器接收事件（键盘按钮除外） */
.hold-to-talk {
    pointer-events: auto;
}

/* ==================== 语音输入 v8：文字上方透明层（老板方案——点击永远命中透明层，文字物理不可选中） ==================== */
/* 透明层覆盖整个按键区（含文字/图标），z-index 高于内容：触摸/长按永远命中透明层（归属 htb），
   文字在层下方物理无法被系统选择——比 user-select/pointer-events 更彻底（浏览器无法选中被遮挡元素） */
.hold-to-talk::after {
    content: '';
    position: absolute;
    inset: 0;
    z-index: 20;
    border-radius: inherit;
    cursor: pointer;
    /* 完全透明，不遮挡视觉 */
    background: transparent;
}
/* 按键内容（文字/图标/计时）全部置于透明层之下 */
.hold-to-talk-hint,
.hold-to-talk-hint *,
.hold-to-talk-timer,
.hold-to-talk-label {
    position: relative;
    z-index: 1;
}
/* 录音态背景/动画在 htb 上，不受透明层影响 */
.hold-to-talk.recording::after { background: transparent; }

/* ==================== 语音输入 v9：微信式滑动操作（左右上滑目标框） ==================== */
.hold-to-talk-zones {
    position: absolute;
    bottom: calc(100% + 8px);
    left: 0;
    right: 0;
    display: flex;
    justify-content: space-between;
    gap: 10px;
    z-index: 3001;
    pointer-events: none;
    padding: 0 6px;
}
.hold-zone {
    flex: 0 1 48%;
    max-width: 170px;
    height: 64px;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    font-size: 13px;
    font-weight: 600;
    color: #fff;
    opacity: 0.5;
    transition: opacity 0.15s, transform 0.15s, box-shadow 0.15s;
    user-select: none;
    -webkit-user-select: none;
    -webkit-touch-callout: none;
    pointer-events: none;
    text-shadow: 0 1px 4px rgba(0,0,0,.3);
}
.hold-zone svg { width: 16px; height: 16px; filter: drop-shadow(0 1px 2px rgba(0,0,0,.3)); }
/* 左：取消（红色半圆光晕，向左扩散、向中间渐隐） */
.hold-zone-cancel {
    background: radial-gradient(ellipse at 0% 50%, rgba(239,68,68,.92) 0%, rgba(239,68,68,.45) 45%, rgba(239,68,68,0) 72%);
    border-radius: 64px 0 0 64px;
}
/* 右：转文字（蓝色半圆光晕，向右扩散、向中间渐隐） */
.hold-zone-text {
    background: radial-gradient(ellipse at 100% 50%, rgba(59,130,246,.92) 0%, rgba(59,130,246,.45) 45%, rgba(59,130,246,0) 72%);
    border-radius: 0 64px 64px 0;
    margin-left: auto;
}
.hold-zone.active {
    opacity: 1;
    transform: scale(1.08);
    text-shadow: 0 1px 6px rgba(0,0,0,.45);
}
.hold-zone-cancel.active {
    background: radial-gradient(ellipse at 0% 50%, rgba(239,68,68,1) 0%, rgba(239,68,68,.7) 45%, rgba(239,68,68,0) 75%);
}
.hold-zone-text.active {
    background: radial-gradient(ellipse at 100% 50%, rgba(59,130,246,1) 0%, rgba(59,130,246,.7) 45%, rgba(59,130,246,0) 75%);
}
.hold-zone.active {
    opacity: 1;
    transform: scale(1.06);
}
/* 录音中才显示（zones 容器显隐由 JS 控制，这里保证内部 flex） */
.hold-to-talk-zones.show { display: flex !important; }
/* 倒计时红色警示（最后 10 秒） */
.hold-to-talk-timer.voice-timer-warn {
    color: #ef4444 !important;
    animation: holdTimerWarn .6s ease-in-out infinite alternate;
}
@keyframes holdTimerWarn { from { opacity: 1; } to { opacity: .45; } }
/* 语音条听筒/外放切换按钮 */
.voice-bubble-mode {
    border: none;
    background: rgba(59,130,246,.1);
    border-radius: 50%;
    width: 22px;
    height: 22px;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    color: var(--text-secondary);
    flex-shrink: 0;
    padding: 0;
    transition: background .15s, color .15s;
}
.voice-bubble-mode:hover { background: rgba(59,130,246,.2); color: var(--primary-color); }
.voice-bubble-mode svg { width: 12px; height: 12px; }

/* ★ 2026-08-08 字体圆润化配套：标签/按钮/徽章字重提升（MiSans Demibold 渲染更精致） */
.badge, .tag, .chip, .model-tag, .compare-model-tag, .status-badge, .role-badge {
  font-weight: 600 !important;
  letter-spacing: 0.2px;
}
.btn-primary, .btn-secondary, .btn-danger, .action-btn, .tab-btn, .send-btn, .chat-action-btn, .icon-btn {
  font-weight: 600 !important;
  letter-spacing: 0.2px;
}
/* ★ 2026-08-08 小字号可读性优化（AI 视觉复核建议）：12px 以下加字间距 */
.xk-small, .text-xs, .fs-xs, .text-tertiary, .model-meta, .msg-time, .welcome-desc small, .tag, .badge, .chip {
  letter-spacing: 0.02em;
}

/* ★ 2026-08-10 技能详情弹窗 Markdown 渲染样式 */
.skill-detail-body.markdown-render { line-height: 1.75; font-size: 13.5px; color: var(--text-primary, #1f2937); word-break: break-word; }
.skill-detail-body.markdown-render h1, .skill-detail-body.markdown-render h2, .skill-detail-body.markdown-render h3 { margin: 18px 0 8px; line-height: 1.4; color: var(--text-primary, #1f2937); }
.skill-detail-body.markdown-render h1:first-child, .skill-detail-body.markdown-render h2:first-child { margin-top: 0; }
.skill-detail-body.markdown-render h1 { font-size: 17px; } .skill-detail-body.markdown-render h2 { font-size: 15.5px; } .skill-detail-body.markdown-render h3 { font-size: 14px; }
.skill-detail-body.markdown-render p { margin: 6px 0; }
.skill-detail-body.markdown-render ul, .skill-detail-body.markdown-render ol { margin: 6px 0; padding-left: 22px; }
.skill-detail-body.markdown-render li { margin: 3px 0; }
.skill-detail-body.markdown-render pre { margin: 8px 0; padding: 10px 12px; border-radius: 8px; background: rgba(0,0,0,0.06); overflow-x: auto; font-size: 12px; }
.skill-detail-body.markdown-render code { font-family: 'SF Mono', Consolas, monospace; font-size: 12px; background: rgba(0,0,0,0.06); padding: 1px 5px; border-radius: 4px; }
.skill-detail-body.markdown-render pre code { background: none; padding: 0; }
.skill-detail-body.markdown-render blockquote { margin: 8px 0; padding: 6px 12px; border-left: 3px solid var(--primary-color, #6366f1); background: rgba(99,102,241,0.05); border-radius: 0 6px 6px 0; color: var(--text-secondary, #64748b); }
.skill-detail-body.markdown-render a { color: var(--primary-color, #2563eb); text-decoration: underline; }
.skill-detail-body.markdown-render table { border-collapse: collapse; margin: 8px 0; width: 100%; font-size: 12.5px; }
.skill-detail-body.markdown-render th, .skill-detail-body.markdown-render td { border: 1px solid var(--border-color, #e5e7eb); padding: 5px 10px; text-align: left; }
.skill-detail-body.markdown-render th { background: rgba(99,102,241,0.06); font-weight: 600; }
.skill-detail-body.markdown-render hr { border: none; border-top: 1px solid var(--border-color, #e5e7eb); margin: 12px 0; }
.skill-detail-body.markdown-render img { max-width: 100%; border-radius: 8px; }

/* ============================================================
   ★ 2026-08-11 UI 全面优化层（清爽配色/统一文字/交互反馈）
   叠加层：仅增强，不覆盖既有功能性规则
   ============================================================ */
/* --- 全局文字渲染与行距 --- */
body, .main-content, .chat-inner {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}
body { line-height: 1.6; }
h1, h2, h3, h4 { letter-spacing: -0.015em; line-height: 1.35; color: var(--text-primary); }
h1 { font-size: 30px; font-weight: 700; }
h2 { font-size: 19px; font-weight: 650; }
h3 { font-size: 15.5px; font-weight: 600; }
p { line-height: 1.65; }
a { transition: color 0.15s ease; }
button, .btn, .login-btn-primary, .sidebar-item-btn { transition: background-color 0.2s ease, color 0.2s ease, transform 0.15s ease, box-shadow 0.2s ease, border-color 0.2s ease; }
button:active:not(:disabled), .btn:active:not(:disabled), .login-btn-primary:active:not(:disabled) { transform: scale(0.97); }
button:focus-visible, .btn:focus-visible, input:focus-visible, textarea:focus-visible, select:focus-visible {
  outline: 2px solid var(--primary-color);
  outline-offset: 2px;
}
/* --- 输入框统一样式 --- */
input[type="text"], input[type="password"], input[type="search"], input[type="email"], input[type="number"], textarea, select {
  border-radius: 10px;
  border: 1px solid var(--border-color);
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
}
input:focus, textarea:focus, select:focus {
  border-color: var(--primary-color);
  box-shadow: 0 0 0 3px var(--primary-soft, rgba(47,111,237,0.12));
}
/* --- 卡片/浮层阴影统一（带色调，去纯黑） --- */
.agent-create-menu, .model-menu, [class*="dropdown"], [class*="menu"]:not(.menu-footer), .modal, .mask > .modal, .modal-core, .popup, .popover {
  box-shadow: var(--shadow-pop);
}
/* --- 滚动条（WebKit） --- */
::-webkit-scrollbar { width: 8px; height: 8px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: rgba(120,124,140,0.35); border-radius: 999px; }
::-webkit-scrollbar-thumb:hover { background: rgba(120,124,140,0.55); }
/* --- 数字表格等宽（数据对齐） --- */
.stat-value, .count, .badge-num, [class*="count"], [class*="num"], .kpi b, .wb-kpi strong { font-variant-numeric: tabular-nums; }
/* --- 平滑滚动 --- */
html { scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; }
}
/* --- 正文最大宽度（长文本可读性） --- */
.chat-message .bubble, .message-content, .msg-content { max-width: 68ch; }

        /* ★ 2026-08-12 老板指令:统一前端搜索框 UI —— 全局兜底(38px/圆角10px),:where() 零优先级不覆盖已有定制 */
        :where(input[type="search"], input[type="text"][placeholder*="搜索"]) {
            -webkit-appearance: none;
            appearance: none;
            height: 38px;
            padding: 0 12px;
            border: 1px solid var(--border-color, #e2e8f0);
            border-radius: 10px;
            font-size: 13px;
            background: var(--bg-primary, #fff);
            color: var(--text-primary, #1e293b);
            outline: none;
            box-sizing: border-box;
            transition: border-color .15s, box-shadow .15s;
        }
        :where(input[type="search"], input[type="text"][placeholder*="搜索"]):focus {
            border-color: var(--primary-color);
            box-shadow: 0 0 0 3px rgba(99, 102, 241, .1);
        }

        /* ★ 2026-08-12 容器型搜索框还原：外层容器(.search-input-wrapper 等)已有边框/背景，
           内部 input 保持无边框透明，防止双重边框（老板反馈「搜索框里面还有个输入框边框」） */
        .search-input-wrapper input {
            border: none;
            background: transparent;
            box-shadow: none;
        }
        .search-input-wrapper input:focus {
            border-color: transparent;
            box-shadow: none;
        }

        /* ★ 2026-08-12 容器型搜索框还原无边框 —— 覆盖 13999 全局 input 规则(同优先级靠后赢),
           否则 .ux-search 等容器内 input 被全局 border:1px 覆盖成双层边框(老板反馈) */
        .ux-search input, .agent-module-search input, .model-menu-search input, .agent-menu-search input {
            border: 0;
        }
        .at-ref-search[type="text"], .voice-search-input[type="text"] {
            border: none;
        }

        /* ★ 2026-08-12 会议头部按钮文字颜色锁定：任何主题下跟随 --text-secondary（浅色=深灰/深色=浅灰，均可读），
           防 JS 清空 color 后文字变白（老板反馈「浅色模式 AI 总结按钮文字白色」） */
        .meeting-header button {
            color: var(--text-secondary) !important;
        }
        .meeting-header button[data-running="1"],
        .meeting-header button.dataset-running {
            color: #ef4444 !important;
        }

/* 模型列表紧凑行高最终覆盖：模型项只显示名称，统一 27px 单行高度 */
.model-menu .model-list .model-item {
    min-height: 27px !important;
    height: 27px !important;
    padding: 3px 8px !important;
    margin-bottom: 1px !important;
    border-radius: 6px !important;
}
.model-menu .model-list .model-item .model-item-desc { display: none !important; }

/* 模型列表最终比例校准：单行标题+标签，避免固定高度与行高互相撑开 */
.model-menu { width: 360px; max-width: min(92vw, 380px); }
.model-menu .model-list .model-item {
    min-height: 28px !important;
    height: 28px !important;
    padding: 2px 8px !important;
    margin-bottom: 1px !important;
    border-radius: 6px !important;
}
.model-menu .model-list .model-item .model-item-info {
    display: flex;
    align-items: center;
    gap: 0;
    min-width: 0;
    height: 100%;
}
.model-menu .model-list .model-item .model-item-title {
    flex: 1 1 auto;
    min-width: 0;
    font-size: 12.5px;
    line-height: 1.2;
}
.model-menu .model-list .model-item .model-item-tags {
    flex: 0 0 auto;
    flex-wrap: nowrap;
    margin: 0 0 0 6px;
    gap: 3px;
    white-space: nowrap;
}

/* 手机/iPad 模型菜单也遵循紧凑单行规范，不采用导航项 44px 触控高度 */
@media (max-width: 1024px) {
    .model-menu .model-list .model-item {
        min-height: 28px !important;
        height: 28px !important;
        padding: 2px 8px !important;
    }
}

/* ★ 2026-08-26 Edge 闪烁修复：Edge 对 backdrop-filter 毛玻璃 GPU 合成有 bug，降级为无模糊 */
.is-edge *{backdrop-filter:none!important;-webkit-backdrop-filter:none!important;}

/* ★ 2026-09-04 WorkBuddy 式执行过程区:summary 单行实时状态 */
.xk-proc-pane-status {
    flex: 1;
    text-align: left;
    font-size: 12px;
    color: var(--text-secondary, #64748b);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    animation: xk-proc-pulse 1.6s ease-in-out infinite;
}
.xk-proc-pane[open] .xk-proc-pane-status { animation: none; }
@keyframes xk-proc-pulse { 0%, 100% { opacity: .55; } 50% { opacity: 1; } }
