/* === tc_workbench_enhancements.css === */
/* 用例工作台增强：采纳率、校验、Diff、个人 RAG */

.tc-gen-batch-bar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem 1rem;
    margin: 0.75rem 0 0;
    padding: 0.75rem 1rem;
    border-radius: 0.75rem;
    border: 1px solid rgb(199 210 254);
    background: linear-gradient(90deg, rgb(238 242 255), rgb(239 246 255));
}

.tc-gen-batch-bar.hidden { display: none !important; }

/* 流式生成：表格新行高亮 */
#table-body tr.tc-row-streaming {
    animation: tc-row-streaming-fade 0.3s ease;
    box-shadow: inset 3px 0 0 rgb(59 130 246);
}
@keyframes tc-row-streaming-fade {
    from { opacity: 0.55; }
    to { opacity: 1; }
}

.tc-gen-batch-bar__title { font-weight: 600; color: rgb(30 41 59); font-size: 0.875rem; }
.tc-gen-batch-bar__info {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 0.25rem 0.35rem;
    min-width: 0;
    flex: 1 1 auto;
}
.tc-gen-batch-bar__meta { font-size: 0.75rem; color: rgb(100 116 139); }
.tc-gen-batch-bar__progress { min-width: 10rem; flex: 1 1 12rem; }
.tc-gen-batch-bar__progress--clickable {
    display: block;
    width: 100%;
    margin: 0;
    padding: 0.15rem 0.35rem 0.2rem;
    border: 1px solid transparent;
    border-radius: 0.5rem;
    background: transparent;
    cursor: pointer;
    text-align: left;
    transition: border-color 0.15s ease, background 0.15s ease;
}
.tc-gen-batch-bar__progress--clickable:hover {
    border-color: rgb(199 210 254);
    background: rgb(255 255 255 / 0.55);
}
.tc-gen-batch-bar__progress--clickable:focus-visible {
    outline: 2px solid rgb(99 102 241);
    outline-offset: 2px;
}
.tc-gen-batch-bar__progress-link {
    display: block;
    margin-top: 0.15rem;
    font-size: 0.6875rem;
    font-weight: 500;
    color: rgb(79 70 229);
    line-height: 1.2;
}
.tc-gen-batch-bar__progress-text { font-size: 0.75rem; color: rgb(51 65 85); margin-bottom: 0.25rem; }
.tc-gen-batch-bar__track { height: 6px; border-radius: 999px; background: rgb(226 232 240); overflow: hidden; }
.tc-gen-batch-bar__fill { height: 100%; background: linear-gradient(90deg, rgb(99 102 241), rgb(14 165 233)); transition: width 0.25s ease; }
.tc-gen-batch-bar__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 0.375rem; }
.tc-gen-batch-bar__close { padding: 0.25rem 0.5rem; color: rgb(100 116 139); border-radius: 0.375rem; }
.tc-gen-batch-bar__close:hover { background: rgb(255 255 255 / 0.7); }

.btn-sm { padding: 0.35rem 0.65rem; font-size: 0.75rem; line-height: 1.2; }

.tc-adopt-actions {
    display: flex !important;
    gap: 3px;
    margin-top: 4px;
    justify-content: center;
    align-items: center;
    opacity: 1 !important;
    pointer-events: auto !important;
}
.tc-adopt-btn {
    width: 22px;
    height: 22px;
    font-size: 11px;
    line-height: 1;
    border-radius: 4px;
    border: 1px solid rgb(203 213 225);
    background: white;
    cursor: pointer;
    box-shadow: 0 1px 2px rgb(15 23 42 / 0.08);
}
.tc-adopt-btn:hover { transform: scale(1.05); }
.tc-adopt-btn--yes { color: rgb(5 150 105); }
.tc-adopt-btn--no { color: rgb(220 38 38); }

/* 导图批次：逐条评审弹窗 */
.tc-mindmap-review-modal.hidden { display: none !important; }
.tc-mindmap-review-modal.tc-mindmap-review-modal--open {
    display: flex !important;
}
.tc-mindmap-review-modal__title {
    font-size: 1.05rem;
    font-weight: 700;
    color: #0f172a;
}
.tc-mindmap-review-modal__subtitle {
    margin-top: 2px;
    font-size: 12px;
    color: #64748b;
}
.tc-mindmap-review-modal__close {
    color: #94a3b8;
}
.tc-mindmap-review-modal__close:hover {
    background: #f1f5f9;
    color: #475569;
}
.tc-mindmap-review-modal__body {
    min-height: 200px;
    max-height: 52vh;
}
.tc-mm-review-list {
    display: flex;
    flex-direction: column;
    gap: 10px;
}
.tc-mm-review-item {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
    padding: 12px 14px;
    border-radius: 12px;
    border: 1px solid #e2e8f0;
    background: #fff;
    transition: border-color 0.15s ease, background 0.15s ease;
}
.tc-mm-review-item--pending { border-color: #c7d2fe; background: #fafaff; }
.tc-mm-review-item--accept { border-color: #86efac; background: #f0fdf4; }
.tc-mm-review-item--reject { border-color: #fca5a5; background: #fef2f2; opacity: 0.92; }
.tc-mm-review-item__main {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    min-width: 0;
    flex: 1;
}
.tc-mm-review-item__index {
    flex-shrink: 0;
    align-self: flex-start;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 1.35em;
    height: 1.35em;
    font-size: 11px;
    font-weight: 700;
    color: #6366f1;
    background: #eef2ff;
    border-radius: 4px;
    padding: 0 4px;
    line-height: 1;
}
.tc-mm-review-item__text { min-width: 0; flex: 1; }
.tc-mm-review-item__title {
    font-size: 13px;
    font-weight: 600;
    color: #0f172a;
    line-height: 1.45;
    word-break: break-word;
}
.tc-mm-review-item__preview {
    margin-top: 4px;
    font-size: 12px;
    color: #64748b;
    line-height: 1.5;
    word-break: break-word;
}
.tc-mm-review-item__actions {
    display: flex;
    flex-shrink: 0;
    gap: 6px;
}
.tc-mm-review-btn {
    min-width: 52px;
    height: 30px;
    padding: 0 12px;
    font-size: 12px;
    font-weight: 600;
    border-radius: 999px;
    border: 1px solid #cbd5e1;
    background: #fff;
    cursor: pointer;
    transition: all 0.12s ease;
}
.tc-mm-review-btn--accept { color: #047857; }
.tc-mm-review-btn--accept.is-active,
.tc-mm-review-btn--accept:hover { border-color: #86efac; background: #ecfdf5; }
.tc-mm-review-btn--reject { color: #b91c1c; }
.tc-mm-review-btn--reject.is-active,
.tc-mm-review-btn--reject:hover { border-color: #fca5a5; background: #fee2e2; }
.tc-mm-review-empty {
    text-align: center;
    color: #94a3b8;
    padding: 24px 0;
}

.tc-row-adopt-accept { background: rgb(240 253 244) !important; }
.tc-row-adopt-edit { background: rgb(239 246 255) !important; }
.tc-row-adopt-reject { opacity: 0.55; }
.tc-row-validate-issue { box-shadow: inset 3px 0 0 rgb(248 113 113); }
.tc-row-validate-locate-active {
    background: rgb(254 249 195) !important;
    box-shadow: inset 5px 0 0 rgb(245 158 11), 0 0 0 2px rgb(251 191 36 / 0.85) !important;
}
.tc-workbench-scope #table-body tr.tc-row-validate-locate-active > td,
.tc-workbench-scope #table-body tr.tc-row-validate-locate-active > th {
    background: rgb(254 249 195) !important;
}
#tc-vxe-table-mount .vxe-body--row.tc-row-validate-locate-active > .vxe-body--column,
#tc-vxe-table-mount .vxe-body--row.tc-row-validate-locate-active > .vxe-body--column.col--seq {
    background-color: rgb(254 249 195) !important;
}
#tc-vxe-table-mount .vxe-body--row.tc-row-validate-flash-on > .vxe-body--column,
#tc-vxe-table-mount .vxe-body--row.tc-row-validate-flash-on > .vxe-body--column.col--seq {
    background-color: rgb(253 230 138) !important;
    box-shadow: inset 0 0 0 1px rgb(251 191 36 / 0.65);
}
.tc-row-validate-flash { animation: tc-validate-flash 1.8s ease; }
.tc-row-validate-flash-on > td,
.tc-row-validate-flash-on > th {
    background: rgb(253 230 138) !important;
}

/* 质量检查：导图用例定位高亮（与表格 tc-row-validate-* 隔离） */
#tc-smm-container .smm-node.tc-mindmap-validate-locate-active {
    filter: drop-shadow(0 0 4px rgb(251 191 36 / 0.85));
}
#tc-smm-container .smm-node.tc-mindmap-validate-flash-on {
    filter: drop-shadow(0 0 8px rgb(245 158 11)) drop-shadow(0 0 2px rgb(251 191 36));
}
#tc-smm-container .smm-node.tc-mindmap-validate-flash-on .smm-text-node-wrap,
#tc-smm-container .smm-node.tc-mindmap-validate-locate-active .smm-text-node-wrap {
    outline: 2px solid rgb(245 158 11);
    outline-offset: 2px;
    border-radius: 4px;
    background-color: rgb(254 249 195 / 0.45);
}

@keyframes tc-validate-flash {
    0%, 100% { filter: none; }
    25%, 75% { filter: brightness(1.04); }
    50% { background: rgb(253 230 138) !important; }
}

.tc-gen-options-row {
    display: inline-flex;
    flex-direction: row;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.4rem;
    width: auto;
    margin: 0;
    padding: 0;
}
.tc-gen-option-item {
    display: inline-flex;
    flex-direction: row;
    align-items: center;
    gap: 0.2rem;
    max-width: 100%;
    line-height: 1.35;
}
.tc-gen-option-help-wrap {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}
.tc-gen-option-help-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1rem;
    height: 1rem;
    padding: 0;
    border: 1px solid rgba(148, 163, 184, 0.55);
    border-radius: 9999px;
    background: rgba(255, 255, 255, 0.95);
    color: #6366f1;
    font-size: 0.625rem;
    font-weight: 700;
    line-height: 1;
    cursor: default;
    transition: border-color 0.15s ease, color 0.15s ease, background 0.15s ease, box-shadow 0.15s ease;
}
.tc-gen-option-help-btn:hover,
.tc-gen-option-help-btn:focus-visible {
    border-color: rgba(99, 102, 241, 0.45);
    background: #eef2ff;
    color: #4338ca;
    box-shadow: 0 2px 8px rgba(79, 70, 229, 0.16);
    outline: none;
}
.tc-gen-option-hint-store {
    display: none !important;
}
.tc-gen-option-help-tip {
    position: fixed;
    z-index: 10460;
    display: none;
    box-sizing: border-box;
    width: fit-content;
    min-width: 0;
    max-width: calc(15em + 1.3rem);
    padding: 0.42rem 0.65rem;
    border-radius: 0.375rem;
    border: 1px solid #e2e8f0;
    background: #f1f5f9;
    box-shadow:
        0 4px 14px rgba(15, 23, 42, 0.1),
        0 1px 2px rgba(15, 23, 42, 0.06);
    color: #4338ca;
    font-size: 0.625rem;
    font-weight: 500;
    line-height: 1.45;
    text-align: left;
    white-space: normal;
    word-break: normal;
    overflow-wrap: break-word;
    pointer-events: none;
}
.tc-gen-toggle-input {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}
.tc-gen-toggle-btn {
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.35rem;
    margin: 0;
    min-height: 1.875rem;
    padding: 0.38rem 0.8rem;
    border-radius: 0.5rem;
    border: 1px solid rgba(148, 163, 184, 0.55);
    background: rgba(255, 255, 255, 0.92);
    color: #64748b;
    font-size: 0.6875rem;
    font-weight: 600;
    line-height: 1.2;
    letter-spacing: 0.02em;
    box-shadow: 0 1px 2px rgba(15, 23, 42, 0.05);
    cursor: pointer;
    transition: transform 0.15s ease, box-shadow 0.2s ease, filter 0.2s ease, background 0.2s ease, border-color 0.2s ease, color 0.2s ease;
}
.tc-gen-toggle-btn__icon {
    width: 0.875rem;
    height: 0.875rem;
    flex-shrink: 0;
    opacity: 0.9;
}
.tc-gen-toggle-btn--off:hover {
    border-color: rgba(99, 102, 241, 0.35);
    background: #f8fafc;
    color: #475569;
    box-shadow: 0 2px 6px rgba(79, 70, 229, 0.1);
}
.tc-gen-toggle-btn--on {
    color: #ffffff;
    box-shadow:
        0 1px 2px rgba(15, 23, 42, 0.06),
        0 4px 14px rgba(79, 70, 229, 0.26);
}
.tc-gen-toggle-btn--validate.tc-gen-toggle-btn--on {
    border-color: rgba(79, 70, 229, 0.45);
    background: linear-gradient(135deg, #6366f1 0%, #4f46e5 48%, #4338ca 100%);
}
.tc-gen-toggle-btn--rag.tc-gen-toggle-btn--on {
    border-color: rgba(124, 58, 237, 0.45);
    background: linear-gradient(135deg, #8b5cf6 0%, #7c3aed 48%, #6d28d9 100%);
    box-shadow:
        0 1px 2px rgba(15, 23, 42, 0.06),
        0 4px 14px rgba(109, 40, 217, 0.26);
}
.tc-gen-toggle-btn--on:hover {
    filter: brightness(1.06);
}
.tc-gen-toggle-btn:active {
    transform: translateY(1px);
}
.tc-gen-toggle-btn:focus-visible {
    outline: 2px solid rgba(99, 102, 241, 0.45);
    outline-offset: 2px;
}
.tc-gen-toggle-btn--validate.tc-gen-toggle-btn--off,
#tc-gen-auto-validate-btn.tc-gen-toggle-btn--validate:not(.tc-gen-toggle-btn--on) {
    border-color: rgba(148, 163, 184, 0.55);
    background: #ffffff;
    color: #64748b;
    box-shadow: 0 1px 2px rgba(15, 23, 42, 0.05);
}
.tc-gen-toggle-btn--validate.tc-gen-toggle-btn--off:hover,
#tc-gen-auto-validate-btn.tc-gen-toggle-btn--validate:not(.tc-gen-toggle-btn--on):hover {
    border-color: rgba(99, 102, 241, 0.35);
    background: #ffffff;
    color: #475569;
    box-shadow: 0 2px 6px rgba(79, 70, 229, 0.1);
    filter: none;
}
.tc-gen-toggle-btn--save-kb {
    border-color: rgba(14, 165, 233, 0.45);
    background: #ffffff;
    color: #0369a1;
    box-shadow: 0 1px 2px rgba(15, 23, 42, 0.05);
}
.tc-gen-toggle-btn--save-kb:hover:not(:disabled) {
    border-color: rgba(14, 165, 233, 0.65);
    background: #f0f9ff;
    color: #0c4a6e;
    box-shadow: 0 2px 6px rgba(14, 165, 233, 0.12);
    filter: none;
}
.tc-gen-toggle-btn--save-kb:disabled {
    opacity: 0.65;
    cursor: wait;
}
.tc-gen-toggle-btn--rag.tc-gen-toggle-btn--locked {
    border-color: rgba(217, 119, 6, 0.38);
    background: linear-gradient(135deg, #fffbeb 0%, #fef3c7 100%);
    color: #92400e;
    box-shadow: 0 1px 2px rgba(15, 23, 42, 0.05);
    cursor: pointer;
}
.tc-gen-toggle-btn--rag.tc-gen-toggle-btn--locked:hover {
    border-color: rgba(217, 119, 6, 0.52);
    filter: brightness(1.02);
}
.tc-gen-toggle-btn .tc-rag-toggle-lock-icon {
    display: none;
}
.tc-gen-toggle-btn .tc-rag-toggle-recall-icon {
    display: inline-block;
}
.tc-gen-toggle-btn--rag.tc-gen-toggle-btn--locked .tc-rag-toggle-lock-icon {
    display: inline-block;
    color: #d97706;
}
.tc-gen-toggle-btn--rag.tc-gen-toggle-btn--locked .tc-rag-toggle-recall-icon {
    display: none;
}

#tc-gen-options-row .tc-rag-enable-hint {
    display: inline;
    max-width: none;
    text-align: left;
}

.tc-side-drawer-backdrop {
    position: fixed; inset: 0; z-index: 10082;
    background: rgb(15 23 42 / 0.35);
}
.tc-side-drawer-backdrop.hidden { display: none !important; }

.tc-side-drawer {
    position: fixed; top: 0; right: 0; z-index: 10083;
    width: min(420px, 92vw); height: 100vh;
    display: flex; flex-direction: column;
    background: #fff;
    border-left: 1px solid rgba(99, 102, 241, 0.18);
    box-shadow: -12px 0 40px rgb(15 23 42 / 0.14);
    transform: translateX(0);
}
.tc-side-drawer.hidden { display: none !important; }

.tc-rag-drawer__head {
    background: linear-gradient(135deg, rgb(238 242 255) 0%, rgb(239 246 255) 55%, #fff 100%);
    border-bottom: 1px solid rgba(99, 102, 241, 0.16);
}
.tc-rag-drawer__head-main { min-width: 0; flex: 1; padding-right: 0.5rem; }

.tc-side-drawer__head {
    display: flex; align-items: flex-start; justify-content: space-between;
    padding: 1rem 1rem 0.75rem; border-bottom: 1px solid rgb(241 245 249);
}
.tc-side-drawer__title { font-size: 1rem; font-weight: 600; color: rgb(15 23 42); }
.tc-side-drawer__subtitle { font-size: 0.75rem; color: rgb(100 116 139); margin-top: 0.15rem; }
.tc-rag-drawer__hint {
    color: #4338ca !important;
    font-size: 0.6875rem !important;
    font-weight: 500;
    line-height: 1.45 !important;
}
.tc-side-drawer__close { padding: 0.35rem 0.5rem; color: rgb(100 116 139); border-radius: 0.375rem; }
.tc-side-drawer__tools { padding: 0.75rem 1rem; border-bottom: 1px solid rgb(241 245 249); display: flex; flex-direction: column; gap: 0.5rem; }
.tc-side-drawer__body { flex: 1; overflow: auto; padding: 0.5rem 0; }
.tc-side-drawer__foot { padding: 0.75rem 1rem; border-top: 1px solid rgb(241 245 249); }

.tc-inline-check { display: inline-flex; align-items: center; gap: 0.35rem; font-size: 0.75rem; cursor: pointer; }

.tc-validate-group { padding: 0.5rem 1rem; }
.tc-validate-issue-breakdown {
    padding: 0.75rem 1rem 0.25rem;
    font-size: 0.8125rem;
    color: rgb(71 85 105);
    line-height: 1.45;
}
.tc-validate-group__title { font-size: 0.8125rem; font-weight: 600; color: rgb(51 65 85); margin-bottom: 0.35rem; }
.tc-validate-group__list { list-style: none; margin: 0; padding: 0; }

/* 问题清单为空：通过态卡片（金色，不影响有问题列表） */
.tc-validate-pass {
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
    margin: 0.75rem 0.85rem 1rem;
    padding: 0.95rem 1rem;
    border-radius: 0.75rem;
    background: linear-gradient(135deg, rgb(255 251 235) 0%, rgb(254 243 199) 48%, rgb(255 247 237) 100%);
    border: 1px solid rgba(217, 119, 6, 0.28);
    box-shadow: 0 1px 0 rgba(255, 255, 255, 0.75) inset;
}
.tc-validate-pass__icon {
    flex-shrink: 0;
    width: 2rem;
    height: 2rem;
    border-radius: 999px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: rgb(180 83 9);
    background: rgb(253 230 138);
}
.tc-validate-pass__icon svg {
    width: 1.15rem;
    height: 1.15rem;
}
.tc-validate-pass__body {
    min-width: 0;
    flex: 1;
    padding-top: 0.1rem;
}
.tc-validate-pass__title {
    margin: 0;
    font-size: 0.9rem;
    font-weight: 650;
    color: rgb(146 64 14);
    line-height: 1.35;
}
.tc-validate-pass__detail {
    margin: 0.28rem 0 0;
    font-size: 0.78rem;
    color: rgb(161 98 7);
    line-height: 1.45;
    opacity: 0.95;
}

/* 无问题通过：隐藏 Tab / 矩阵工具栏 / 补充按钮，居中展示通过英雄区 */
.tc-validate-drawer--clean-pass .tc-validate-drawer-tabs,
.tc-validate-drawer--clean-pass .tc-coverage-toolbar,
.tc-validate-drawer--clean-pass [id^="tc-coverage-toolbar"],
.tc-validate-drawer--clean-pass [id^="tc-coverage-filter"],
.tc-validate-drawer--clean-pass .tc-coverage-filter-seg,
.tc-validate-drawer--clean-pass [id^="tc-coverage-fill-all-btn"],
.tc-validate-drawer--clean-pass [id^="tc-coverage-delete-over-btn"],
.tc-validate-drawer--clean-pass .tc-coverage-delete-over-btn,
.tc-validate-drawer--clean-pass [id^="tc-issues-actions-toolbar"],
.tc-validate-drawer--clean-pass .tc-issues-actions-toolbar,
.tc-validate-drawer--clean-pass [id^="tc-validate-coverage-panel"],
.tc-validate-drawer--clean-pass [id^="tc-validate-fill-progress"],
.tc-validate-drawer--clean-pass .tc-coverage-matrix-list,
.tc-validate-drawer--clean-pass .tc-coverage-empty {
    display: none !important;
}

/* 问题清单主导：隐藏矩阵 Tab（保留 coverage panel DOM / 引擎，不影响删过度与补充） */
.tc-validate-drawer--issues-only [id^="tc-validate-tab-coverage"] {
    display: none !important;
}
.tc-validate-drawer--issues-only .tc-validate-drawer-tabs {
    display: none !important;
}
.tc-validate-drawer--issues-only.tc-validate-drawer--fill-active .tc-validate-drawer-tabs,
.tc-validate-drawer--issues-only.tc-validate-drawer--clean-pass .tc-validate-drawer-tabs {
    display: none !important;
}

.tc-issues-actions-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-end;
    gap: 0.5rem;
    padding: 0.55rem 0.85rem 0.35rem;
    border-bottom: 1px solid rgb(226 232 240);
    background: rgb(248 250 252);
    flex: 0 0 auto;
}
.tc-issues-actions-toolbar.hidden {
    display: none !important;
}
.tc-issues-actions-toolbar__actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.45rem;
}
.tc-validate-issue__actions {
    display: inline-flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.35rem;
    margin-left: auto;
}
.tc-issues-delete-over-one {
    color: rgb(153 27 27);
}
.tc-validate-drawer--clean-pass #tc-validate-issue-list,
.tc-validate-drawer--clean-pass #tc-validate-issue-list-single,
.tc-validate-drawer--clean-pass [id^="tc-validate-issue-list"],
.tc-validate-drawer--clean-pass [id^="tc-validate-issue-list"].hidden {
    display: flex !important;
    flex: 1 1 auto !important;
    flex-direction: column;
    justify-content: center;
    align-items: stretch;
    min-height: min(26rem, 58vh) !important;
    overflow: auto !important;
    padding: 1.5rem 1.1rem 1.75rem !important;
    background:
        radial-gradient(90% 70% at 50% -10%, rgba(16, 185, 129, 0.14) 0%, transparent 58%),
        radial-gradient(70% 50% at 100% 100%, rgba(14, 165, 233, 0.06) 0%, transparent 55%),
        linear-gradient(180deg, #f4faf7 0%, #ffffff 46%, #f8fafc 100%) !important;
}
.tc-validate-drawer--clean-pass .tc-validate-pass {
    margin: 0 1.1rem;
    padding: 1.15rem 1.15rem;
    align-items: center;
}
.tc-validate-drawer--clean-pass .tc-validate-pass__icon {
    width: 2.35rem;
    height: 2.35rem;
}
.tc-validate-drawer--clean-pass .tc-validate-pass__icon svg {
    width: 1.3rem;
    height: 1.3rem;
}
.tc-validate-drawer--clean-pass .tc-validate-pass__title {
    font-size: 1rem;
}
.tc-validate-drawer--clean-pass .tc-validate-pass__detail {
    font-size: 0.82rem;
}

/* 全部通过专用英雄区（不影响有问题列表） */


/* 无可列问题：居中状态卡（隐藏双 Tab 时使用） */
.tc-validate-noissue {
    position: relative;
    margin: 0 auto;
    width: 100%;
    max-width: 22.5rem;
    padding: 2rem 1.35rem 1.75rem;
    text-align: center;
    border-radius: 1.15rem;
    background: rgba(255, 255, 255, 0.94);
    border: 1px solid rgba(15, 23, 42, 0.06);
    box-shadow:
        0 1px 0 rgba(255, 255, 255, 0.95) inset,
        0 22px 48px -28px rgba(15, 23, 42, 0.28);
}
.tc-validate-noissue__mark {
    width: 4rem;
    height: 4rem;
    margin: 0 auto 1rem;
    color: rgb(5 150 105);
}
.tc-validate-noissue__mark svg {
    width: 100%;
    height: 100%;
    display: block;
}
.tc-validate-noissue__kicker {
    margin: 0 0 0.4rem;
    font-size: 0.6875rem;
    font-weight: 650;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: rgb(100 116 139);
}
.tc-validate-noissue__title {
    margin: 0;
    font-size: 1.25rem;
    font-weight: 720;
    letter-spacing: -0.02em;
    color: rgb(15 23 42);
    line-height: 1.3;
}
.tc-validate-noissue__detail {
    margin: 0.55rem auto 0;
    max-width: 17.5rem;
    font-size: 0.8125rem;
    line-height: 1.55;
    color: rgb(71 85 105);
}
/* 仅抽屉打开时强制可见，避免关闭后 visibility:visible 穿透父级 hidden */
.tc-validate-drawer--clean-pass.tc-validate-drawer--open [id^="tc-validate-issue-list"] .tc-validate-noissue,
.tc-validate-drawer--clean-pass:not(.hidden):not(.tc-validate-drawer--side) [id^="tc-validate-issue-list"] .tc-validate-noissue {
    display: block !important;
    visibility: visible !important;
    opacity: 1 !important;
}

/* 通过态：中间必须有可见内容，禁止空白（仅打开态） */
.tc-validate-drawer--clean-pass.tc-validate-drawer--open [id^="tc-validate-issue-list"] .tc-validate-clean-pass-resolved,
.tc-validate-drawer--clean-pass.tc-validate-drawer--open [id^="tc-validate-issue-list"] .tc-validate-clean-pass-hero,
.tc-validate-drawer--clean-pass.tc-validate-drawer--open [id^="tc-validate-issue-list"] .tc-validate-pass,
.tc-validate-drawer--clean-pass.tc-validate-drawer--open [id^="tc-validate-issue-list"] .tc-validate-noissue,
.tc-validate-drawer--clean-pass:not(.hidden):not(.tc-validate-drawer--side) [id^="tc-validate-issue-list"] .tc-validate-clean-pass-resolved,
.tc-validate-drawer--clean-pass:not(.hidden):not(.tc-validate-drawer--side) [id^="tc-validate-issue-list"] .tc-validate-clean-pass-hero,
.tc-validate-drawer--clean-pass:not(.hidden):not(.tc-validate-drawer--side) [id^="tc-validate-issue-list"] .tc-validate-pass,
.tc-validate-drawer--clean-pass:not(.hidden):not(.tc-validate-drawer--side) [id^="tc-validate-issue-list"] .tc-validate-noissue {
    display: block !important;
    visibility: visible !important;
    opacity: 1 !important;
    transform: none !important;
}
.tc-validate-drawer--clean-pass [id^="tc-validate-issue-list"] {
    justify-content: center !important;
    align-items: stretch !important;
}

/* 侧边抽屉关闭/收起时：强制整层不可见，防止 clean-pass 子节点穿透 */
#tc-validate-drawer-single.tc-validate-drawer--side:not(.tc-validate-drawer--open),
#tc-validate-drawer-single.tc-validate-drawer--side.hidden {
    visibility: hidden !important;
    pointer-events: none !important;
}
#tc-validate-drawer-single.tc-validate-drawer--side:not(.tc-validate-drawer--open) *,
#tc-validate-drawer-single.tc-validate-drawer--side.hidden * {
    visibility: hidden !important;
    pointer-events: none !important;
}
#tc-validate-drawer-single.tc-validate-drawer--side.tc-validate-drawer--open:not(.hidden) {
    visibility: visible !important;
}
#tc-validate-drawer-single.tc-validate-drawer--side.tc-validate-drawer--open:not(.hidden) .tc-validate-clean-pass-resolved,
#tc-validate-drawer-single.tc-validate-drawer--side.tc-validate-drawer--open:not(.hidden) .tc-validate-clean-pass-hero,
#tc-validate-drawer-single.tc-validate-drawer--side.tc-validate-drawer--open:not(.hidden) .tc-validate-noissue,
#tc-validate-drawer-single.tc-validate-drawer--side.tc-validate-drawer--open:not(.hidden) .tc-validate-pass {
    visibility: visible !important;
    opacity: 1 !important;
    display: block !important;
    transform: none !important;
}

.tc-validate-clean-pass-hero {
    position: relative;
    margin: 0 auto;
    width: 100%;
    max-width: 22.5rem;
    padding: 2rem 1.35rem 1.6rem;
    text-align: center;
    border-radius: 1.15rem;
    background: rgba(255, 255, 255, 0.92);
    border: 1px solid rgba(15, 23, 42, 0.06);
    box-shadow:
        0 1px 0 rgba(255, 255, 255, 0.95) inset,
        0 22px 48px -28px rgba(15, 23, 42, 0.32);
    overflow: hidden;
    /* 不用 opacity 入场，避免动画中断后中间内容隐身成空白 */
    animation: tc-validate-clean-pass-hero-in 420ms cubic-bezier(0.22, 1, 0.36, 1) both;
    opacity: 1;
    visibility: visible;
}
.tc-validate-clean-pass-hero__glow {
    position: absolute;
    inset: -45% -25% auto;
    height: 72%;
    background: radial-gradient(circle at 50% 85%, rgba(16, 185, 129, 0.22), transparent 68%);
    pointer-events: none;
}
.tc-validate-clean-pass-hero__grid {
    position: absolute;
    inset: 0;
    opacity: 0.35;
    background-image:
        linear-gradient(rgba(148, 163, 184, 0.08) 1px, transparent 1px),
        linear-gradient(90deg, rgba(148, 163, 184, 0.08) 1px, transparent 1px);
    background-size: 18px 18px;
    mask-image: radial-gradient(circle at 50% 30%, #000 20%, transparent 72%);
    pointer-events: none;
}
.tc-validate-clean-pass-hero__mark {
    position: relative;
    width: 4.25rem;
    height: 4.25rem;
    margin: 0 auto 1rem;
    color: rgb(5 150 105);
}
.tc-validate-clean-pass-hero__mark svg {
    position: relative;
    z-index: 1;
    width: 100%;
    height: 100%;
    display: block;
}
.tc-validate-clean-pass-hero__ring {
    position: absolute;
    inset: -4px;
    border-radius: 999px;
    border: 1px solid rgba(16, 185, 129, 0.28);
    animation: tc-validate-clean-pass-ring 2.4s ease-out infinite;
}
.tc-validate-clean-pass-hero__ring--delay {
    animation-delay: 1.1s;
}
.tc-validate-clean-pass-hero__kicker {
    position: relative;
    margin: 0 0 0.4rem;
    font-size: 0.6875rem;
    font-weight: 650;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: rgb(100 116 139);
}
.tc-validate-clean-pass-hero__title {
    position: relative;
    margin: 0;
    font-size: 1.35rem;
    font-weight: 720;
    letter-spacing: -0.03em;
    color: rgb(15 23 42);
    line-height: 1.25;
}
.tc-validate-clean-pass-hero__detail {
    position: relative;
    margin: 0.5rem auto 0;
    max-width: 17.5rem;
    font-size: 0.8125rem;
    line-height: 1.55;
    color: rgb(71 85 105);
}
.tc-validate-clean-pass-hero__checks {
    position: relative;
    list-style: none;
    margin: 1.25rem 0 0;
    padding: 0;
    display: grid;
    gap: 0.45rem;
    text-align: left;
}
.tc-validate-clean-pass-hero__check {
    display: flex;
    align-items: flex-start;
    gap: 0.65rem;
    padding: 0.62rem 0.75rem;
    border-radius: 0.7rem;
    background: rgba(248, 250, 252, 0.92);
    border: 1px solid rgba(15, 23, 42, 0.045);
}
.tc-validate-clean-pass-hero__check-mark {
    flex: 0 0 auto;
    width: 1.2rem;
    height: 1.2rem;
    margin-top: 0.1rem;
    border-radius: 999px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: rgb(5 150 105);
    background: rgba(16, 185, 129, 0.12);
}
.tc-validate-clean-pass-hero__check-mark svg {
    width: 0.72rem;
    height: 0.72rem;
    display: block;
}
.tc-validate-clean-pass-hero__check-text {
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 0.08rem;
}
.tc-validate-clean-pass-hero__check-label {
    font-size: 0.8125rem;
    font-weight: 650;
    color: rgb(15 23 42);
    line-height: 1.3;
}
.tc-validate-clean-pass-hero__check-hint {
    font-size: 0.6875rem;
    color: rgb(100 116 139);
    line-height: 1.35;
}
.tc-validate-clean-pass-hero__metrics {
    position: relative;
    list-style: none;
    margin: 1.05rem 0 0;
    padding: 0.85rem 0 0;
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(4.5rem, 1fr));
    gap: 0.5rem;
    border-top: 1px solid rgba(15, 23, 42, 0.06);
}
.tc-validate-clean-pass-hero__metric {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.15rem;
    min-width: 0;
}
.tc-validate-clean-pass-hero__metric-value {
    font-size: 0.95rem;
    font-weight: 700;
    color: rgb(15 23 42);
    font-variant-numeric: tabular-nums;
    line-height: 1.2;
}
.tc-validate-clean-pass-hero__metric-label {
    font-size: 0.625rem;
    font-weight: 600;
    letter-spacing: 0.04em;
    color: rgb(100 116 139);
}

@keyframes tc-validate-clean-pass-hero-in {
    from {
        transform: translateY(8px) scale(0.985);
    }
    to {
        transform: translateY(0) scale(1);
    }
}
@keyframes tc-validate-clean-pass-ring {
    0% {
        opacity: 0.55;
        transform: scale(0.92);
    }
    70% {
        opacity: 0;
        transform: scale(1.18);
    }
    100% {
        opacity: 0;
        transform: scale(1.22);
    }
}
@media (prefers-reduced-motion: reduce) {
    .tc-validate-clean-pass-hero,
    .tc-validate-clean-pass-hero__ring,
    .tc-validate-clean-pass-hero__ring--delay,
    .tc-validate-clean-pass-resolved {
        animation: none !important;
    }
}

/* 全部通过：清晰可读的中间结果面板（不影响有问题列表） */
.tc-validate-clean-pass-resolved {
    position: relative;
    margin: 0 auto;
    width: 100%;
    max-width: 23rem;
    padding: 1.75rem 1.25rem 1.4rem;
    text-align: center;
    border-radius: 1.1rem;
    background: #ffffff;
    border: 1px solid rgba(16, 185, 129, 0.18);
    box-shadow:
        0 1px 0 rgba(255, 255, 255, 0.95) inset,
        0 18px 40px -26px rgba(15, 23, 42, 0.28);
    opacity: 1;
    visibility: visible;
    animation: tc-validate-clean-pass-hero-in 420ms cubic-bezier(0.22, 1, 0.36, 1) both;
}
.tc-validate-clean-pass-resolved__badge {
    width: 3.75rem;
    height: 3.75rem;
    margin: 0 auto 0.85rem;
    color: rgb(5 150 105);
}
.tc-validate-clean-pass-resolved__badge svg {
    width: 100%;
    height: 100%;
    display: block;
}
.tc-validate-clean-pass-resolved__eyebrow {
    margin: 0 0 0.35rem;
    font-size: 0.6875rem;
    font-weight: 650;
    letter-spacing: 0.08em;
    color: rgb(100 116 139);
}
.tc-validate-clean-pass-resolved__title {
    margin: 0;
    font-size: 1.28rem;
    font-weight: 720;
    letter-spacing: -0.02em;
    color: rgb(15 23 42);
    line-height: 1.3;
}
.tc-validate-clean-pass-resolved__detail {
    margin: 0.55rem auto 0;
    max-width: 18rem;
    font-size: 0.84375rem;
    line-height: 1.55;
    color: rgb(51 65 85);
}
.tc-validate-clean-pass-resolved__list {
    list-style: none;
    margin: 1.15rem 0 0;
    padding: 0;
    display: grid;
    gap: 0.45rem;
    text-align: left;
}
.tc-validate-clean-pass-resolved__item {
    display: flex;
    align-items: flex-start;
    gap: 0.65rem;
    padding: 0.7rem 0.8rem;
    border-radius: 0.7rem;
    background: rgb(240 253 244);
    border: 1px solid rgba(16, 185, 129, 0.14);
}
.tc-validate-clean-pass-resolved__ok {
    flex: 0 0 auto;
    width: 1.25rem;
    height: 1.25rem;
    margin-top: 0.05rem;
    border-radius: 999px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 0.72rem;
    font-weight: 700;
    color: rgb(5 150 105);
    background: rgba(16, 185, 129, 0.16);
}
.tc-validate-clean-pass-resolved__item-body {
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 0.12rem;
}
.tc-validate-clean-pass-resolved__item-label {
    font-size: 0.8125rem;
    font-weight: 650;
    color: rgb(15 23 42);
    line-height: 1.3;
}
.tc-validate-clean-pass-resolved__item-hint {
    font-size: 0.71875rem;
    color: rgb(71 85 105);
    line-height: 1.4;
}
.tc-validate-clean-pass-resolved__tip {
    margin: 1rem auto 0;
    max-width: 19rem;
    padding-top: 0.85rem;
    border-top: 1px dashed rgba(148, 163, 184, 0.45);
    font-size: 0.75rem;
    line-height: 1.5;
    color: rgb(100 116 139);
}

/* 通过态抽屉外壳：更克制的专业边框（仅 clean-pass，不影响有问题态） */
#tc-validate-drawer-single.tc-validate-drawer--side.tc-validate-drawer--clean-pass {
    box-shadow:
        0 22px 48px -18px rgba(15, 23, 42, 0.28),
        0 0 0 1px rgba(16, 185, 129, 0.18) !important;
    filter: none;
}
#tc-validate-drawer-single.tc-validate-drawer--side.tc-validate-drawer--clean-pass::before {
    background: linear-gradient(135deg, rgba(16, 185, 129, 0.85), rgba(20, 184, 166, 0.55), rgba(148, 163, 184, 0.35));
}
#tc-validate-drawer-single.tc-validate-drawer--clean-pass .tc-validate-float-panel__head,
#tc-validate-drawer-single.tc-validate-drawer--clean-pass .tc-side-drawer__head {
    background: linear-gradient(180deg, #f0fdf4 0%, #ffffff 100%);
    border-bottom: 1px solid rgba(16, 185, 129, 0.12);
}
#tc-validate-drawer-single.tc-validate-drawer--clean-pass .tc-side-drawer__subtitle,
#tc-validate-drawer-single.tc-validate-drawer--clean-pass [id^="tc-validate-drawer-summary"] {
    color: rgb(5 150 105) !important;
    font-weight: 600;
}
#tc-validate-drawer-single.tc-validate-drawer--side.tc-validate-drawer--clean-pass .tc-side-drawer__body,
#tc-validate-drawer-single.tc-validate-drawer--side.tc-validate-drawer--clean-pass .tc-validate-float-panel__body {
    background:
        radial-gradient(90% 70% at 50% -10%, rgba(16, 185, 129, 0.14) 0%, transparent 58%),
        radial-gradient(70% 50% at 100% 100%, rgba(14, 165, 233, 0.06) 0%, transparent 55%),
        linear-gradient(180deg, #f4faf7 0%, #ffffff 46%, #f8fafc 100%) !important;
}

.tc-validate-issue { display: flex; flex-wrap: wrap; align-items: flex-start; gap: 0.5rem; padding: 0.5rem 0; border-bottom: 1px solid rgb(241 245 249); font-size: 0.8125rem; }
.tc-validate-issue__text {
    flex: 1;
    min-width: 0;
    color: rgb(15 23 42);
    line-height: 1.55;
    font-weight: 500;
}
.tc-validate-issue--active {
    background: rgb(255 251 235);
    border-radius: 0.375rem;
    padding-left: 0.35rem;
    padding-right: 0.35rem;
    box-shadow: inset 3px 0 0 rgb(245 158 11);
}

/* 问题清单：有问题时的专业简洁样式 */
.tc-validate-issue-lead {
    margin: 0;
    padding: 0.85rem 1rem 0.35rem;
    font-size: 0.78rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    color: #64748b;
}
.tc-validate-group--over,
.tc-validate-group--gap {
    margin: 0.35rem 0.85rem 0.85rem;
    padding: 0.75rem 0.85rem 0.65rem;
    border-radius: 12px;
    border: 1px solid #e2e8f0;
    background: #ffffff;
    box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
}
.tc-validate-group--over {
    border-color: #fde68a;
    background: linear-gradient(180deg, #fffbeb 0%, #ffffff 42%);
}
.tc-validate-group--gap {
    border-color: #fecaca;
    background: linear-gradient(180deg, #fef2f2 0%, #ffffff 42%);
}
.tc-validate-group__head {
    display: flex;
    align-items: center;
    gap: 0.45rem;
    margin-bottom: 0.55rem;
}
.tc-validate-group__head .tc-validate-group__title {
    margin: 0;
    font-size: 0.8125rem;
    font-weight: 700;
    color: #0f172a;
}
.tc-validate-group__hint {
    font-size: 0.6875rem;
    font-weight: 600;
    color: #94a3b8;
}
.tc-validate-group__count {
    margin-left: auto;
    min-width: 1.35rem;
    height: 1.35rem;
    padding: 0 0.35rem;
    border-radius: 999px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 0.6875rem;
    font-weight: 700;
    background: #f1f5f9;
    color: #475569;
}
.tc-validate-group--over .tc-validate-group__count {
    background: #fef3c7;
    color: #b45309;
}
.tc-validate-issue--over,
.tc-validate-issue--gap {
    align-items: flex-start;
    gap: 0.55rem;
    padding: 0.65rem 0.15rem;
    border-bottom: 1px dashed #e2e8f0;
}
.tc-validate-issue--over:last-child,
.tc-validate-issue--gap:last-child {
    border-bottom: none;
    padding-bottom: 0.15rem;
}
.tc-validate-issue--over .tc-validate-issue__text {
    font-size: 0.78rem;
    font-weight: 500;
    color: #334155;
    line-height: 1.55;
}
.tc-validate-issue__gone {
    flex-shrink: 0;
    font-size: 0.6875rem;
    font-weight: 600;
    color: #94a3b8;
    padding: 0.2rem 0.45rem;
    border-radius: 6px;
    background: #f8fafc;
    border: 1px solid #e2e8f0;
}
.tc-validate-issue--over .tc-validate-locate {
    flex-shrink: 0;
    margin-left: auto;
}

/* clean-pass 时绝不残留问题列表样式 */
.tc-validate-drawer--clean-pass .tc-validate-group,
.tc-validate-drawer--clean-pass .tc-validate-issue-lead,
.tc-validate-drawer--clean-pass .tc-validate-issue-breakdown {
    display: none !important;
}

/* 质量检查浮窗（可拖拽 / 缩放 / 关闭后重新打开） */
.tc-validate-float-panel {
    position: fixed;
    z-index: 10200;
    left: 16px;
    top: 72px;
    width: 600px;
    height: 620px;
    max-width: calc(100vw - 24px);
    max-height: calc(100vh - 48px);
    display: flex;
    flex-direction: column;
    background: #fff;
    border-radius: 0.75rem;
    box-shadow: 0 20px 50px rgb(15 23 42 / 0.18);
    border: 1px solid rgb(226 232 240);
    overflow: hidden;
}
.tc-validate-float-panel.hidden { display: none !important; }
.tc-validate-float-panel--maximized {
    left: 12px !important;
    top: 12px !important;
    width: calc(100vw - 24px) !important;
    height: calc(100vh - 24px) !important;
}
.tc-validate-float-panel__head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.5rem;
    padding: 0.75rem 0.85rem 0.65rem;
    border-bottom: 1px solid rgb(241 245 249);
    cursor: move;
    user-select: none;
    flex-shrink: 0;
}
.tc-validate-float-panel__head-main { min-width: 0; flex: 1; }
.tc-validate-float-panel__winbtns {
    display: inline-flex;
    align-items: center;
    gap: 0.2rem;
    flex-shrink: 0;
}
.tc-validate-float-panel__winbtn {
    width: 1.65rem;
    height: 1.65rem;
    border: 1px solid rgb(226 232 240);
    border-radius: 0.375rem;
    background: rgb(248 250 252);
    color: rgb(71 85 105);
    font-size: 0.9rem;
    line-height: 1;
    cursor: pointer;
}
.tc-validate-float-panel__winbtn:hover { background: rgb(241 245 249); color: rgb(15 23 42); }
.tc-validate-float-panel__body { min-height: 0; }
/* 质量检查三步进度 + 居中动画 Loading（仅内容区） */
.tc-validate-float-panel__body.tc-validate-float-panel__body {
    display: flex;
    flex-direction: column;
    min-height: 0;
}
.tc-validate-progress {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
    overflow: auto;
}
.tc-validate-progress__center {
    flex-shrink: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 1.25rem 1rem 0.85rem;
    text-align: center;
}
.tc-validate-progress__loader {
    position: relative;
    width: 4.75rem;
    height: 4.75rem;
    margin-bottom: 0.65rem;
}
.tc-validate-progress__orbit {
    position: absolute;
    inset: 0;
    border-radius: 9999px;
    border: 2px solid transparent;
}
.tc-validate-progress__orbit--outer {
    border-top-color: rgb(99 102 241);
    border-right-color: rgba(99, 102, 241, 0.25);
    animation: tc-validate-orbit-spin 1.05s linear infinite;
}
.tc-validate-progress__orbit--inner {
    inset: 0.55rem;
    border-bottom-color: rgb(14 165 233);
    border-left-color: rgba(14, 165, 233, 0.2);
    animation: tc-validate-orbit-spin 0.85s linear infinite reverse;
}
.tc-validate-progress__core {
    position: absolute;
    inset: 1.15rem;
    border-radius: 9999px;
    background: radial-gradient(circle at 30% 30%, #eef2ff 0%, #e0e7ff 45%, #c7d2fe 100%);
    animation: tc-validate-core-pulse 1.6s ease-in-out infinite;
    box-shadow: 0 0 18px rgba(99, 102, 241, 0.22);
}
.tc-validate-progress__badge {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.875rem;
    font-weight: 700;
    color: rgb(67 56 202);
    letter-spacing: 0.02em;
}
.tc-validate-progress__caption {
    margin: 0 0 0.65rem;
    max-width: 16rem;
    font-size: 0.8125rem;
    font-weight: 500;
    line-height: 1.45;
    color: rgb(71 85 105);
    animation: tc-validate-caption-fade 0.35s ease;
}
.tc-validate-progress__bar {
    width: min(100%, 15rem);
    height: 0.35rem;
    border-radius: 9999px;
    background: rgb(226 232 240);
    overflow: hidden;
}
.tc-validate-progress__bar-fill {
    height: 100%;
    border-radius: inherit;
    background: linear-gradient(90deg, #6366f1 0%, #22d3ee 100%);
    transition: width 0.45s ease;
    animation: tc-validate-bar-shimmer 1.8s ease-in-out infinite;
}
.tc-validate-progress__steps {
    padding: 0.65rem 0.85rem 1rem;
    display: flex;
    flex-direction: column;
    gap: 0.55rem;
}
.tc-validate-step {
    border: 1px solid rgb(226 232 240);
    border-radius: 0.5rem;
    padding: 0.5rem 0.6rem;
    background: rgb(248 250 252);
    transition: border-color 0.25s ease, background 0.25s ease, box-shadow 0.25s ease;
}
.tc-validate-step--running {
    border-color: rgba(99, 102, 241, 0.42);
    background: linear-gradient(135deg, #eef2ff 0%, #f8fafc 100%);
    box-shadow: 0 2px 12px rgba(79, 70, 229, 0.1);
}
.tc-validate-step--done {
    border-color: rgba(16, 185, 129, 0.35);
    background: #f0fdf4;
}
.tc-validate-step--error {
    border-color: rgba(239, 68, 68, 0.35);
    background: #fef2f2;
}
.tc-validate-step--timeout {
    border-color: rgba(217, 119, 6, 0.42);
    background: linear-gradient(135deg, #fffbeb 0%, #fff7ed 100%);
    box-shadow: 0 1px 0 rgba(245, 158, 11, 0.12);
}
.tc-validate-step--timeout .tc-validate-step__detail {
    color: rgb(180 83 9);
    font-weight: 600;
}
.tc-validate-step--skipped { opacity: 0.86; }
.tc-validate-step--cancelled {
    border-color: rgba(148, 163, 184, 0.42);
    background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);
    opacity: 0.94;
}
.tc-validate-step__head {
    display: flex;
    align-items: center;
    gap: 0.45rem;
}
.tc-validate-step__index {
    flex-shrink: 0;
    font-size: 0.625rem;
    font-weight: 700;
    color: rgb(99 102 241);
    background: rgba(99, 102, 241, 0.12);
    border-radius: 0.25rem;
    padding: 0.1rem 0.35rem;
    line-height: 1.2;
}
.tc-validate-step__label {
    font-size: 0.8125rem;
    font-weight: 600;
    color: rgb(51 65 85);
}
.tc-validate-step__detail {
    margin: 0.32rem 0 0 2.35rem;
    font-size: 0.75rem;
    line-height: 1.45;
    color: rgb(100 116 139);
}
.tc-validate-step__reasoning-wrap {
    margin: 0.45rem 0 0 2.35rem;
}
.tc-validate-step__reasoning-label {
    font-size: 0.6875rem;
    font-weight: 600;
    color: rgb(79 70 229);
    margin-bottom: 0.25rem;
}
/* QC 思考流旁路：截断提示 / 展开（不影响 Agent 等同 class） */
.tc-validate-step__reasoning-omit {
    font-size: 0.6875rem;
    color: rgb(100 116 139);
    margin: 0 0 0.3rem;
    line-height: 1.4;
}
.tc-validate-step__reasoning-omit.hidden,
.tc-validate-step__reasoning-expand.hidden {
    display: none !important;
}
.tc-validate-step__reasoning-expand {
    display: inline-flex;
    align-items: center;
    margin: 0 0 0.35rem;
    padding: 0.15rem 0.45rem;
    border-radius: 0.35rem;
    border: 1px solid rgba(99, 102, 241, 0.28);
    background: rgba(238, 242, 255, 0.85);
    color: rgb(67 56 202);
    font-size: 0.6875rem;
    font-weight: 600;
    cursor: pointer;
    line-height: 1.3;
}
.tc-validate-step__reasoning-expand:hover {
    background: rgb(224 231 255);
}

/* QC 思考流 perf：默认折叠壳（不影响 legacy 全文路径） */
.tc-qc-reason-perf {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
}
.tc-qc-reason-perf__toggle {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.45rem 0.65rem;
    width: 100%;
    margin: 0;
    padding: 0.45rem 0.6rem;
    border-radius: 0.5rem;
    border: 1px solid rgba(99, 102, 241, 0.22);
    background: linear-gradient(180deg, #f8fafc 0%, #eef2ff 100%);
    color: rgb(49 46 129);
    font-size: 0.75rem;
    font-weight: 600;
    cursor: pointer;
    text-align: left;
    line-height: 1.35;
}
.tc-qc-reason-perf__toggle:hover {
    border-color: rgba(99, 102, 241, 0.4);
    background: #eef2ff;
}
.tc-qc-reason-perf__status {
    color: rgb(67 56 202);
}
.tc-qc-reason-perf__count {
    color: rgb(100 116 139);
    font-weight: 500;
}
.tc-qc-reason-perf__action {
    margin-left: auto;
    color: rgb(79 70 229);
    font-size: 0.6875rem;
}
.tc-qc-reason-perf__body.hidden {
    display: none !important;
}
.tc-qc-reason-perf__omit {
    margin: 0;
    font-size: 0.6875rem;
    color: rgb(100 116 139);
    line-height: 1.4;
}
.tc-qc-reason-perf__omit.hidden,
.tc-qc-reason-perf__full.hidden {
    display: none !important;
}
.tc-qc-reason-perf__full {
    align-self: flex-start;
    margin: 0.15rem 0 0;
    padding: 0.15rem 0.45rem;
    border-radius: 0.35rem;
    border: 1px solid rgba(99, 102, 241, 0.28);
    background: rgba(238, 242, 255, 0.85);
    color: rgb(67 56 202);
    font-size: 0.6875rem;
    font-weight: 600;
    cursor: pointer;
}
.tc-qc-reason-perf__full:hover {
    background: rgb(224 231 255);
}

.tc-validate-step__reasoning {
    margin: 0;
    max-height: 9.5rem;
    overflow: auto;
    padding: 0.45rem 0.55rem;
    border-radius: 0.375rem;
    border: 1px solid rgba(99, 102, 241, 0.22);
    background: #fff;
    font-size: 0.6875rem;
    line-height: 1.5;
    color: rgb(51 65 85);
    white-space: pre-wrap;
    word-break: break-word;
    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
}

/* 质量检查 AI 对照：思考区加高并可滚动（仅 data 标记节点，不影响 Agent 等同 class 面板） */
pre[data-tc-validate-llm-reasoning="1"] {
    max-height: min(16rem, 42vh);
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
}
/* 用例补充·缺口补全：AI 思考区加高并可滚动（仅 fill progress 容器内标记节点） */
.tc-qc-fill-progress__steps pre[data-tc-coverage-fill-llm-reasoning="1"] {
    max-height: min(16rem, 42vh);
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
}
.tc-validate-step__reasoning-cursor {
    display: inline-block;
    margin-left: 1px;
    color: rgb(79 70 229);
    animation: tc-validate-reasoning-blink 0.9s step-end infinite;
}
.tc-validate-step__output-wrap {
    margin: 0.45rem 0 0 2.35rem;
}
.tc-validate-step__output-label {
    font-size: 0.6875rem;
    font-weight: 600;
    color: rgb(5 150 105);
    margin-bottom: 0.25rem;
}
.tc-validate-step__output {
    margin: 0;
    max-height: 9.5rem;
    overflow: auto;
    padding: 0.45rem 0.55rem;
    border-radius: 0.375rem;
    border: 1px solid rgba(16, 185, 129, 0.22);
    background: #fff;
    font-size: 0.6875rem;
    line-height: 1.5;
    color: rgb(51 65 85);
    white-space: pre-wrap;
    word-break: break-word;
    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
}
@keyframes tc-validate-reasoning-blink {
    50% { opacity: 0; }
}
.tc-validate-step__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.05rem;
    height: 1.05rem;
    border-radius: 9999px;
    font-size: 0.625rem;
    font-weight: 700;
    flex-shrink: 0;
}
.tc-validate-step__icon--pending { background: rgb(226 232 240); color: rgb(100 116 139); }
.tc-validate-step__icon--done { background: rgb(16 185 129); color: #fff; }
.tc-validate-step__icon--error { background: rgb(239 68 68); color: #fff; }
.tc-validate-step__icon--timeout { background: rgb(245 158 11); color: #fff; font-size: 0.7rem; }
.tc-validate-step__icon--skip { background: rgb(203 213 225); color: rgb(71 85 105); }
.tc-validate-step__icon--cancelled { background: rgb(148 163 184); color: #fff; }
.tc-validate-step__timeout-panel {
    margin: 0.45rem 0 0 2.35rem;
    padding: 0.55rem 0.65rem;
    border-radius: 0.45rem;
    border: 1px dashed rgba(217, 119, 6, 0.45);
    background: rgba(255, 251, 235, 0.92);
}
.tc-validate-step__timeout-panel.hidden {
    display: none !important;
}
.tc-validate-step__timeout-title {
    margin: 0;
    font-size: 0.75rem;
    font-weight: 700;
    color: rgb(146 64 14);
    line-height: 1.35;
}
.tc-validate-step__timeout-desc {
    margin: 0.28rem 0 0;
    font-size: 0.6875rem;
    line-height: 1.45;
    color: rgb(120 53 15);
}
.tc-validate-step__spinner {
    width: 1.05rem;
    height: 1.05rem;
    border: 2px solid rgba(99, 102, 241, 0.2);
    border-top-color: rgb(79 70 229);
    border-radius: 9999px;
    animation: tc-validate-orbit-spin 0.72s linear infinite;
    flex-shrink: 0;
}
@keyframes tc-validate-orbit-spin { to { transform: rotate(360deg); } }


/* Agent 顶部总进度条占满整行（不影响质量检查浮窗 .tc-validate-progress__bar） */


@keyframes tc-validate-core-pulse {
    0%, 100% { transform: scale(1); opacity: 1; }
    50% { transform: scale(0.92); opacity: 0.82; }
}
@keyframes tc-validate-caption-fade {
    from { opacity: 0.45; transform: translateY(3px); }
    to { opacity: 1; transform: translateY(0); }
}
@keyframes tc-validate-bar-shimmer {
    0%, 100% { filter: brightness(1); }
    50% { filter: brightness(1.08); }
}

.tc-validate-float-resize {
    position: absolute;
    right: 0;
    bottom: 0;
    width: 14px;
    height: 14px;
    cursor: nwse-resize;
    background: linear-gradient(135deg, transparent 0 50%, rgb(148 163 184 / 0.55) 50% 100%);
}
.tc-validate-float-reopen {
    position: fixed;
    left: 16px;
    bottom: 24px;
    z-index: 10083;
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.55rem 0.85rem;
    border: none;
    border-radius: 999px;
    background: linear-gradient(120deg, rgb(99 102 241), rgb(8 145 178));
    color: #fff;
    font-size: 0.8125rem;
    font-weight: 600;
    box-shadow: 0 10px 28px rgb(99 102 241 / 0.35);
    cursor: pointer;
}
.tc-validate-float-reopen.hidden { display: none !important; }
.tc-validate-float-reopen svg { width: 1rem; height: 1rem; flex-shrink: 0; }
.tc-validate-float-reopen__badge {
    min-width: 1.15rem;
    height: 1.15rem;
    padding: 0 0.3rem;
    border-radius: 999px;
    background: rgb(239 68 68);
    color: #fff;
    font-size: 0.6875rem;
    font-weight: 700;
    line-height: 1.15rem;
    text-align: center;
}
.tc-validate-float-reopen__badge.hidden { display: none !important; }
.tc-personal-rag-panel.hidden { display: none !important; }

.tc-lanhu-tooldeck {
    grid-column: 1 / -1;
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 0.25rem;
    width: 100%;
    margin-top: 0.15rem;
    overflow: visible;
}
.tc-lanhu-tooldeck__status {
    width: 100%;
    max-width: 100%;
    min-width: 0;
    font-size: 0.6875rem;
    color: #94a3b8;
    text-align: right;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.tc-lanhu-tooldeck__btn-group {
    flex-shrink: 0;
    display: inline-flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-end;
    gap: 0.4rem;
    max-width: 100%;
    margin-left: auto;
}
.tc-lanhu-tooldeck__btn-group .tc-personal-rag-panel__open-btn {
    min-height: 1.875rem;
}
.tc-lanhu-tooldeck__btn-group .tc-personal-rag-panel__badge {
    align-self: center;
    font-size: 0.625rem;
    font-weight: 500;
    line-height: 1.35;
    color: rgb(99 102 241);
}
.tc-lanhu-tooldeck__btn-group .tc-personal-rag-panel__open-btn {
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.35rem;
    margin: 0;
    padding: 0.38rem 0.8rem;
    border: 1px solid rgba(13, 148, 136, 0.42);
    border-radius: 0.5rem;
    background: linear-gradient(135deg, #14b8a6 0%, #0d9488 50%, #0f766e 100%);
    color: #ffffff;
    font-size: 0.6875rem;
    font-weight: 600;
    line-height: 1.2;
    letter-spacing: 0.02em;
    box-shadow:
        0 1px 2px rgba(15, 23, 42, 0.06),
        0 4px 14px rgba(13, 148, 136, 0.24);
    cursor: pointer;
    transition: transform 0.15s ease, box-shadow 0.2s ease, filter 0.2s ease;
}
.tc-lanhu-tooldeck__btn-group .tc-personal-rag-panel__open-btn-icon {
    width: 0.875rem;
    height: 0.875rem;
    opacity: 0.95;
}
.tc-lanhu-tooldeck__btn-group .tc-personal-rag-panel__open-btn:hover {
    filter: brightness(1.06);
    box-shadow:
        0 2px 4px rgba(15, 23, 42, 0.08),
        0 6px 18px rgba(13, 148, 136, 0.32);
}
.tc-lanhu-tooldeck__btn-group .tc-personal-rag-panel__open-btn:active {
    transform: translateY(1px);
    box-shadow: 0 2px 8px rgba(13, 148, 136, 0.2);
}
.tc-lanhu-tooldeck__btn-group .tc-personal-rag-panel__open-btn:focus-visible {
    outline: 2px solid rgba(13, 148, 136, 0.55);
    outline-offset: 2px;
}

.tc-personal-rag-panel__docs {
    margin-top: 0.35rem;
    max-height: 5.5rem;
    overflow-y: auto;
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
}
.tc-personal-rag-doc-item { display: flex; align-items: center; gap: 0.3rem; font-size: 0.6875rem; line-height: 1.25; }
.tc-rag-drawer__upload {
    padding: 0.85rem 1rem;
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    border-bottom: 1px solid rgb(241 245 249);
    background: rgba(248, 250, 252, 0.65);
}
.tc-rag-upload-btn { cursor: pointer; }
.tc-rag-paste-panel {
    padding: 0.75rem 1rem;
    border-bottom: 1px solid rgb(241 245 249);
    background: rgba(248, 250, 252, 0.45);
}
.tc-rag-paste-text { width: 100%; min-height: 6rem; font-size: 0.8125rem; }
.tc-rag-doc-list {
    background: linear-gradient(180deg, #fff 0%, rgb(248 250 252 / 0.35) 100%);
}
.tc-rag-doc-row {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.7rem 1rem;
    margin: 0 0.5rem;
    border-bottom: 1px solid rgb(241 245 249);
    border-radius: 0.5rem;
    transition: background 0.12s ease;
}
.tc-rag-doc-row:hover { background: rgb(238 242 255 / 0.55); }
.tc-rag-doc-row__check {
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    cursor: pointer;
}
.tc-rag-doc-cb {
    width: 0.875rem;
    height: 0.875rem;
    margin: 0;
    accent-color: #4f46e5;
    cursor: pointer;
}
.tc-rag-doc-row__title {
    font-size: 0.8125rem;
    font-weight: 600;
    line-height: 1.35;
    color: #0f172a;
}
.tc-rag-doc-row__meta {
    margin-top: 0.1rem;
    font-size: 0.6875rem;
    line-height: 1.25;
    color: rgb(100 116 139);
}
.tc-rag-doc-row__actions {
    display: flex;
    flex-shrink: 0;
    align-items: center;
    gap: 0.35rem;
}
.tc-rag-doc-preview.btn,
.tc-rag-doc-del.btn {
    padding: 0.25rem 0.55rem;
    font-size: 0.6875rem;
    line-height: 1.2;
}

.tc-rag-doc-preview-modal {
    position: fixed;
    inset: 0;
    z-index: 10100;
}
.tc-rag-doc-preview-modal:not(.hidden) {
    display: flex;
}
.tc-rag-doc-preview-modal__kind {
    display: inline-flex;
    align-items: center;
    padding: 0.12rem 0.45rem;
    border-radius: 9999px;
    font-size: 0.625rem;
    font-weight: 600;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    background: rgb(238 242 255);
    color: #4338ca;
    border: 1px solid rgb(199 210 254);
}
.tc-rag-doc-preview-modal__kind--md {
    background: rgb(236 253 245);
    color: #047857;
    border-color: rgb(167 243 208);
}
.tc-rag-doc-preview-modal__kind--txt {
    background: rgb(248 250 252);
    color: #475569;
    border-color: rgb(226 232 240);
}
.tc-rag-doc-preview-modal__kind--req {
    background: rgb(255 247 237);
    color: #c2410c;
    border-color: rgb(254 215 170);
}
.tc-rag-doc-preview-modal__body {
    background: linear-gradient(180deg, #fff 0%, rgb(248 250 252 / 0.45) 100%);
}
.tc-rag-doc-preview-modal__body--md {
    font-size: 0.875rem;
    line-height: 1.65;
    color: #1e293b;
}
.tc-rag-doc-preview-modal__body--txt {
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: 0.8125rem;
    line-height: 1.6;
    color: #334155;
}
.tc-rag-doc-preview-modal__body--req {
    font-size: 0.875rem;
    line-height: 1.7;
    color: #1e293b;
}
.tc-rag-doc-preview__plaintext {
    margin: 0;
    white-space: pre-wrap;
    word-break: break-word;
}
.tc-rag-doc-preview__requirement {
    border-left: 3px solid #6366f1;
    padding: 0.25rem 0 0.25rem 1rem;
    background: rgb(238 242 255 / 0.35);
    border-radius: 0 0.75rem 0.75rem 0;
}
.tc-rag-doc-preview__req-body {
    white-space: pre-wrap;
    word-break: break-word;
}
.tc-rag-doc-preview__h1,
.tc-rag-doc-preview__h2,
.tc-rag-doc-preview__h3,
.tc-rag-doc-preview__h4,
.tc-rag-doc-preview__h5,
.tc-rag-doc-preview__h6 {
    font-weight: 700;
    color: #0f172a;
    margin: 1rem 0 0.5rem;
    line-height: 1.35;
}
.tc-rag-doc-preview__h1 { font-size: 1.25rem; }
.tc-rag-doc-preview__h2 { font-size: 1.125rem; }
.tc-rag-doc-preview__h3 { font-size: 1rem; }
.tc-rag-doc-preview__h4,
.tc-rag-doc-preview__h5,
.tc-rag-doc-preview__h6 { font-size: 0.9375rem; }
.tc-rag-doc-preview__p {
    margin: 0.45rem 0;
}
.tc-rag-doc-preview__ul {
    margin: 0.35rem 0 0.65rem 1.1rem;
    padding: 0;
    list-style: disc;
}
.tc-rag-doc-preview__ul li {
    margin: 0.2rem 0;
}
.tc-rag-doc-preview__code {
    padding: 0.08rem 0.35rem;
    border-radius: 0.25rem;
    background: rgb(241 245 249);
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: 0.8125em;
    color: #be185d;
}
.tc-rag-doc-preview__codeblock {
    margin: 0.75rem 0;
    padding: 0.85rem 1rem;
    border-radius: 0.65rem;
    background: #0f172a;
    color: #e2e8f0;
    overflow-x: auto;
    font-size: 0.8125rem;
    line-height: 1.55;
}
.tc-rag-doc-preview__codeblock code {
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    white-space: pre;
}
.tc-rag-doc-preview__spacer {
    height: 0.35rem;
}

.tc-rag-drawer__foot {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    padding: 0.75rem 1rem;
    border-top: 1px solid rgb(241 245 249);
    background: linear-gradient(180deg, rgba(248, 250, 252, 0.35) 0%, #fff 100%);
}
.tc-rag-drawer__foot.hidden {
    display: none !important;
}
.tc-rag-drawer__foot-hint {
    margin: 0;
    flex: 1;
    min-width: 0;
    font-size: 0.6875rem;
    line-height: 1.45;
    color: rgb(100 116 139);
}

.tc-diff-add td { background: rgb(240 253 244); color: #14532d; }
.tc-diff-del td { background: rgb(254 242 242); color: #991b1b; }
.tc-diff-mod td { background: rgb(255 251 235); color: #92400e; }

#tc-stash-diff-modal .tc-stash-diff-summary {
    font-size: 0.6875rem;
    font-weight: 500;
    line-height: 1.45;
    color: #4338ca;
    opacity: 1;
}
#tc-stash-diff-modal .tc-stash-diff-table-wrap {
    color: #0f172a;
    opacity: 1;
}
#tc-stash-diff-modal .tc-stash-diff-table {
    color: #0f172a;
    opacity: 1;
    background: #fff;
}
#tc-stash-diff-modal .tc-stash-diff-table th {
    color: #1e293b;
    font-weight: 600;
    background: #f8fafc;
    opacity: 1;
}
#tc-stash-diff-modal .tc-stash-diff-table td {
    color: #0f172a;
    opacity: 1;
}
#tc-stash-diff-modal .tc-stash-diff-table-wrap .text-slate-400 {
    color: #64748b;
}

#tc-stash-diff-modal.hidden { display: none !important; }

.tc-adoption-stats-modal.hidden { display: none !important; }
.tc-adoption-stats-modal.tc-adoption-stats-modal--open {
    display: flex !important;
    align-items: center;
    justify-content: center;
    position: fixed;
    inset: 0;
    z-index: 85;
}
.tc-adoption-stats-modal__panel {
    border: 1px solid rgba(99, 102, 241, 0.14);
}
.tc-adoption-stats-modal__head {
    background: linear-gradient(90deg, rgb(238 242 255), rgb(239 246 255));
    border-bottom: 1px solid rgba(99, 102, 241, 0.12);
}
.tc-adoption-stats-modal__title {
    font-size: 1.0625rem;
    font-weight: 600;
    color: rgb(30 41 59);
    line-height: 1.3;
}
.tc-adoption-stats-modal__subtitle {
    margin-top: 0.15rem;
    font-size: 0.6875rem;
    font-weight: 500;
    color: rgb(79 70 229);
    line-height: 1.35;
}
.tc-adoption-stats-modal__close {
    color: rgb(100 116 139);
}
.tc-adoption-stats-modal__close:hover {
    background: rgba(255, 255, 255, 0.75);
    color: rgb(51 65 85);
}
.tc-adoption-stats-section-title {
    margin: 0 0 0.65rem;
    font-size: 0.8125rem;
    font-weight: 600;
    color: rgb(51 65 85);
    line-height: 1.3;
}
.tc-adoption-stats-section-title--history {
    margin-top: 0.15rem;
}
.tc-adoption-stats-section-divider {
    height: 1px;
    margin: 0.85rem 0 0.75rem;
    background: rgb(226 232 240);
}
.tc-adoption-stats-current__cards {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 0.5rem;
}
.tc-adoption-stats-current__card {
    padding: 0.55rem 0.65rem;
    border-radius: 0.5rem;
    background: rgb(248 250 252);
    border: 1px solid rgb(226 232 240);
}
.tc-adoption-stats-current__card strong {
    display: block;
    margin-top: 0.15rem;
    font-size: 1.05rem;
    color: rgb(30 41 59);
    line-height: 1.2;
}
.tc-adoption-stats-current__hint {
    margin: 0.55rem 0 0;
    font-size: 0.6875rem;
    line-height: 1.45;
    color: rgb(100 116 139);
}
@media (max-width: 640px) {
    .tc-adoption-stats-current__cards {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}
.tc-adoption-stats-toolbar-btn { white-space: nowrap; }
.tc-adoption-stats-merge-banner {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.65rem;
    margin: 0 0 0.75rem;
    padding: 0.55rem 0.7rem;
    font-size: 0.75rem;
    line-height: 1.45;
    color: rgb(30 58 138);
    background: rgb(239 246 255);
    border: 1px solid rgb(191 219 254);
    border-radius: 0.5rem;
}
.tc-adoption-stats-merge-banner p {
    margin: 0;
}
.tc-adoption-stats-hint {
    margin: 0 0 0.75rem;
    padding: 0.5rem 0.65rem;
    font-size: 0.75rem;
    line-height: 1.45;
    color: rgb(71 85 105);
    background: rgb(255 251 235);
    border: 1px solid rgb(254 240 138);
    border-radius: 0.5rem;
}
.tc-adoption-stats-empty {
    margin: 0.5rem 0 0;
    padding: 1.25rem;
    text-align: center;
    color: rgb(71 85 105);
    background: rgb(248 250 252);
    border-radius: 0.75rem;
    border: 1px dashed rgb(203 213 225);
}
.tc-adoption-stats-summary {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.65rem;
    margin-bottom: 1rem;
}
.tc-adoption-stats-summary__card {
    padding: 0.75rem 0.85rem;
    border-radius: 0.75rem;
    background: linear-gradient(135deg, rgb(238 242 255) 0%, rgb(239 246 255) 100%);
    border: 1px solid rgba(99, 102, 241, 0.18);
}
.tc-adoption-stats-summary strong { font-size: 1.25rem; color: rgb(30 41 59); display: block; margin-top: 0.15rem; }
.tc-adoption-stats-k {
    display: block;
    font-size: 0.6875rem;
    color: rgb(100 116 139);
    margin-bottom: 0.125rem;
}
.tc-adoption-stats-modal__body {
    color: #0f172a;
}
.tc-adoption-stats-table-wrap {
    overflow: auto;
    max-height: min(42vh, 360px);
    color: #0f172a;
}
.tc-adoption-stats-loading {
    margin: 1.5rem 0;
    text-align: center;
    color: rgb(100 116 139);
    font-size: 0.8125rem;
}
.tc-adoption-stats-pager {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    margin-top: 0.75rem;
    padding-top: 0.75rem;
    border-top: 1px solid rgb(226 232 240);
}
.tc-adoption-stats-pager--busy {
    opacity: 0.55;
    pointer-events: none;
}
.tc-adoption-stats-pager__info {
    flex: 1;
    text-align: center;
    font-size: 0.75rem;
    color: rgb(71 85 105);
    font-variant-numeric: tabular-nums;
}
.tc-adoption-stats-pager__btn {
    flex-shrink: 0;
    padding: 0.35rem 0.75rem;
    font-size: 0.75rem;
    font-weight: 500;
    color: rgb(55 65 81);
    background: rgb(248 250 252);
    border: 1px solid rgb(203 213 225);
    border-radius: 0.5rem;
    cursor: pointer;
    transition: background 0.15s, border-color 0.15s;
}
.tc-adoption-stats-pager__btn:hover:not(:disabled) {
    background: rgb(238 242 255);
    border-color: rgba(99, 102, 241, 0.35);
    color: rgb(67 56 202);
}
.tc-adoption-stats-pager__btn:disabled {
    opacity: 0.45;
    cursor: not-allowed;
}
.tc-adoption-stats-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.8125rem;
    color: #0f172a;
    background: #fff;
}
.tc-adoption-stats-table th,
.tc-adoption-stats-table td {
    padding: 0.5rem 0.625rem;
    border-bottom: 1px solid rgb(226 232 240);
    text-align: left;
}
.tc-adoption-stats-table th {
    background: linear-gradient(180deg, rgb(248 250 252), rgb(241 245 249));
    color: #1e293b;
    font-weight: 600;
    font-size: 0.75rem;
    white-space: nowrap;
}
.tc-adoption-stats-table__time {
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
    font-size: 0.75rem;
}
.tc-adoption-stats-table td {
    color: #0f172a;
}
.tc-adoption-stats-table tbody tr:hover td {
    background: rgb(248 250 252);
}
.tc-adoption-stats-table .text-right { text-align: right; }

/* 蓝湖操作按钮：两模式共用一行，位于 Cookie/URL 与提示词之间 */
.tc-lanhu-tooldeck--shared {
    grid-column: 1 / -1;
    width: 100%;
    margin: 0.35rem 0 0.5rem;
}
.tc-lanhu-tooldeck--shared .tc-lanhu-tooldeck__btn-group {
    width: 100%;
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-end;
    gap: 0.4rem;
}
#left-panel #tc-entry-head-actions #tc-gen-options-row {
    display: inline-flex;
    flex: 0 1 auto;
}
#left-panel #tc-entry-head-actions .tc-lanhu-tooldeck__actions-row {
    display: inline-flex;
    flex: 0 1 auto;
    flex-wrap: nowrap;
    align-items: center;
    gap: 0.4rem;
}
#left-panel #tc-entry-head-actions .tc-lanhu-tooldeck__hint {
    flex: 0 0 100%;
    width: 100%;
    margin: 0;
    font-size: 0.6875rem;
    line-height: 1.45;
    color: #64748b;
    text-align: right;
}
/* 旧版 enhancements 残留块：工具条已接管时隐藏，避免重复 id 与样式冲突 */
#left-panel:has(#tc-entry-head-actions) #tc-personal-rag-panel .tc-personal-rag-panel__head,
#left-panel:has(#tc-entry-head-actions) #tc-personal-rag-panel .tc-personal-rag-panel__hint {
    display: none !important;
}
#left-panel:has(#tc-lanhu-tooldeck-shared-btns) #tc-gen-options-row.mt-2 {
    display: none !important;
}
#ai-config-mode-root[data-mode="custom"] #tc-lanhu-tooldeck,
#ai-config-mode-root[data-mode="custom"] #tc-lanhu-tooldeck .tc-rag-enable-hint {
    display: none;
}
#ai-config-mode-root[data-mode="preset"] #tc-lanhu-tooldeck-custom,
#ai-config-mode-root[data-mode="preset"] #tc-lanhu-tooldeck-custom .tc-rag-enable-hint {
    display: none;
}
#ai-config-mode-root[data-mode="custom"] #tc-custom-lanhu-hub-block {
    display: block;
}
#ai-config-mode-root[data-mode="custom"] .tc-custom-ai-grid {
    display: grid;
}

#left-panel .tc-lanhu-tooldeck--shared,
#left-panel .tc-gen-options-row,
#left-panel .tc-gen-option-item,
#left-panel .tc-gen-option-help-wrap {
    overflow: visible;
}

/* 导出报告 */
.tc-export-report-modal__panel { max-width: 48rem; }
#tc-export-report-modal.flex { display: flex !important; }
.tc-export-report-stats {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(7.5rem, 1fr));
    gap: 0.65rem;
}
.tc-export-report-stat {
    padding: 0.65rem 0.75rem;
    border-radius: 0.65rem;
    border: 1px solid rgb(226 232 240);
    background: rgb(248 250 252);
}
.tc-export-report-stat__label { font-size: 0.72rem; color: rgb(100 116 139); }
.tc-export-report-stat__value { margin-top: 0.15rem; font-size: 1.1rem; font-weight: 700; color: rgb(15 23 42); }
.tc-export-report-section { margin-top: 0.85rem; }
.tc-export-report-section__title { margin-bottom: 0.45rem; font-size: 0.82rem; font-weight: 600; color: rgb(51 65 85); }
.tc-export-report-table { width: 100%; border-collapse: collapse; }
.tc-export-report-table th,
.tc-export-report-table td {
    border-bottom: 1px solid rgb(226 232 240);
    padding: 0.45rem 0.55rem;
    text-align: left;
    vertical-align: top;
}
.tc-export-report-table th { color: rgb(100 116 139); font-weight: 600; font-size: 0.75rem; }
.tc-export-report-empty { padding: 1rem 0; color: rgb(148 163 184); text-align: center; }
.tc-export-report-toast-link {
    margin-left: 0.35rem;
    color: rgb(224 231 255);
    text-decoration: underline;
    cursor: pointer;
    font-weight: 600;
}
.tc-export-report-toast-link:hover { color: white; }

/* 规划质量检查浮窗默认靠右，避免与快速质量检查浮窗重叠 */

/* ---------- 覆盖率矩阵（scoped .tc-validate-drawer，兼容 single/agent 后缀 id） ---------- */
.tc-validate-drawer .tc-validate-drawer-tabs {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    padding: 0.45rem 0.75rem 0.55rem;
    border-bottom: 1px solid rgb(226 232 240);
    flex-shrink: 0;
}
.tc-validate-drawer .tc-validate-drawer-tabs__nav {
    display: inline-flex;
    gap: 0.25rem;
    min-width: 0;
    flex: 1 1 auto;
}
.tc-validate-drawer .tc-validate-tab {
    flex: 1 1 0;
    min-width: 0;
    border: none;
    background: rgb(241 245 249);
    color: rgb(71 85 105);
    font-size: 0.75rem;
    font-weight: 600;
    padding: 0.4rem 0.5rem;
    border-radius: 0.375rem;
    cursor: pointer;
}
.tc-validate-drawer .tc-validate-tab--active {
    background: rgb(238 242 255);
    color: rgb(67 56 202);
}
.tc-validate-drawer .tc-coverage-toolbar {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem 0.75rem;
    padding: 0.65rem 0.85rem;
    border-bottom: 1px solid rgba(226, 232, 240, 0.95);
    background: linear-gradient(180deg, #f8fafc 0%, #ffffff 100%);
    align-items: center;
    justify-content: space-between;
    flex-shrink: 0;
}
.tc-validate-drawer [id^="tc-coverage-fill-all-btn"]:not(:disabled) {
    color: #fff;
    border-color: rgb(79 70 229);
    background: linear-gradient(135deg, rgb(99 102 241) 0%, rgb(67 56 202) 100%);
    box-shadow: 0 1px 3px rgba(67, 56, 202, 0.22);
}
.tc-validate-drawer [id^="tc-coverage-fill-all-btn"]:not(:disabled):hover {
    border-color: rgb(55 48 163);
    background: linear-gradient(135deg, rgb(79 70 229) 0%, rgb(55 48 163) 100%);
    box-shadow: 0 2px 8px rgba(67, 56, 202, 0.3);
}
.tc-validate-drawer .tc-coverage-filter-seg {
    display: inline-flex;
    align-items: center;
    gap: 2px;
    padding: 3px;
    border-radius: 10px;
    background: #eef2f7;
    border: 1px solid #e2e8f0;
    box-shadow: inset 0 1px 1px rgba(15, 23, 42, 0.03);
}
.tc-validate-drawer .tc-coverage-filter-chip {
    appearance: none;
    border: none;
    background: transparent;
    color: #64748b;
    font-size: 0.75rem;
    font-weight: 600;
    line-height: 1.2;
    letter-spacing: 0.01em;
    padding: 0.35rem 0.7rem;
    border-radius: 8px;
    cursor: pointer;
    transition: background 0.15s ease, color 0.15s ease, box-shadow 0.15s ease;
    white-space: nowrap;
}
.tc-validate-drawer .tc-coverage-filter-chip:hover {
    color: #334155;
    background: rgba(255, 255, 255, 0.55);
}
.tc-validate-drawer .tc-coverage-filter-chip--active {
    color: #1e293b;
    background: #ffffff;
    box-shadow: 0 1px 2px rgba(15, 23, 42, 0.08), 0 0 0 1px rgba(226, 232, 240, 0.9);
}
.tc-validate-drawer .tc-coverage-filter-chip:focus-visible {
    outline: none;
    box-shadow: 0 0 0 2px rgba(99, 102, 241, 0.28);
}
.tc-validate-drawer [id^="tc-validate-issue-list"].hidden,
.tc-validate-drawer [id^="tc-validate-coverage-panel"].hidden {
    display: none !important;
    flex: 0 0 0 !important;
    min-height: 0 !important;
    overflow: hidden !important;
    padding: 0 !important;
}

/* 通过态必须压过后续 .hidden{display:none}，避免中间留白 */
.tc-validate-drawer.tc-validate-drawer--clean-pass [id^="tc-validate-issue-list"],
.tc-validate-drawer.tc-validate-drawer--clean-pass [id^="tc-validate-issue-list"].hidden {
    display: flex !important;
    flex: 1 1 auto !important;
    flex-direction: column;
    justify-content: center;
    align-items: stretch;
    min-height: min(26rem, 58vh) !important;
    overflow: auto !important;
    visibility: visible !important;
    opacity: 1 !important;
}

.tc-validate-drawer [id^="tc-validate-issue-list"]:not(.hidden) {
    flex: 1 1 auto;
    min-height: 0;
    overflow: auto;
}
.tc-validate-drawer [id^="tc-validate-coverage-panel"]:not(.hidden) {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    padding: 0;
}
.tc-validate-drawer .tc-coverage-matrix-list {
    overflow: auto;
    flex: 1 1 auto;
    min-height: 6rem;
    padding: 0.75rem 0.85rem 1rem;
    background:
        radial-gradient(120% 60% at 0% 0%, rgba(241, 245, 249, 0.9) 0%, transparent 55%),
        #f8fafc;
    isolation: isolate;
}
.tc-validate-drawer .tc-coverage-cards {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
}
.tc-validate-drawer .tc-coverage-card {
    display: flex;
    align-items: stretch;
    gap: 0;
    border: 1px solid #e2e8f0;
    border-radius: 10px;
    background: #ffffff;
    box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
    overflow: hidden;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.tc-validate-drawer .tc-coverage-card:hover {
    border-color: #cbd5e1;
    box-shadow: 0 3px 10px rgba(15, 23, 42, 0.05);
}
.tc-validate-drawer .tc-coverage-card__rail {
    width: 3px;
    flex: 0 0 3px;
    background: #94a3b8;
}
.tc-validate-drawer .tc-coverage-card--uncovered .tc-coverage-card__rail { background: #ef4444; }
.tc-validate-drawer .tc-coverage-card--partial .tc-coverage-card__rail { background: #f59e0b; }
.tc-validate-drawer .tc-coverage-card--covered .tc-coverage-card__rail { background: #22c55e; }
.tc-validate-drawer .tc-coverage-card--over .tc-coverage-card__rail { background: #8b5cf6; }
.tc-validate-drawer .tc-coverage-card__main {
    flex: 1 1 auto;
    min-width: 0;
    padding: 0.45rem 0.7rem 0.5rem;
}
.tc-validate-drawer .tc-coverage-card--compact .tc-coverage-card__main {
    padding: 0.4rem 0.65rem 0.45rem;
}
.tc-validate-drawer .tc-coverage-card__top {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.3rem 0.45rem;
    margin-bottom: 0.28rem;
}
.tc-validate-drawer .tc-coverage-card__meta {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.3rem 0.45rem;
    margin-bottom: 0.28rem;
}
.tc-validate-drawer .tc-coverage-card__type {
    font-size: 0.625rem;
    font-weight: 600;
    color: #64748b;
    letter-spacing: 0.02em;
}
.tc-validate-drawer .tc-coverage-card__top-actions {
    display: inline-flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.28rem 0.35rem;
    margin-left: auto;
}
.tc-validate-drawer .tc-coverage-card__body {
    margin: 0;
    font-size: 0.75rem;
    font-weight: 550;
    color: #1e293b;
    line-height: 1.45;
}
.tc-validate-drawer .tc-coverage-card__sub {
    margin: 0.2rem 0 0;
    font-size: 0.6875rem;
    color: #64748b;
    line-height: 1.4;
}
.tc-validate-drawer .tc-coverage-point-title {
    font-weight: 650;
    font-size: 0.75rem;
    color: #0f172a;
    line-height: 1.4;
    letter-spacing: 0.01em;
}
.tc-validate-drawer .tc-coverage-point-path {
    font-size: 0.625rem;
    color: #94a3b8;
    margin-top: 0.15rem;
    line-height: 1.3;
}
.tc-validate-drawer .tc-coverage-evidence {
    margin: 0.3rem 0 0;
    color: #64748b;
    font-size: 0.6875rem;
    line-height: 1.45;
    text-align: left;
}
.tc-validate-drawer .tc-coverage-card__foot {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.3rem 0.45rem;
    margin-top: 0.35rem;
    padding-top: 0.35rem;
    border-top: 1px dashed #e2e8f0;
}
.tc-validate-drawer .tc-coverage-card__foot-label {
    font-size: 0.625rem;
    font-weight: 600;
    color: #94a3b8;
    letter-spacing: 0.02em;
}
.tc-validate-drawer .tc-coverage-badge {
    padding: 0.08rem 0.38rem;
    font-size: 0.625rem;
}
.tc-validate-drawer .tc-coverage-rows-cell {
    text-align: left;
}
.tc-validate-drawer .tc-coverage-rows-wrap {
    display: inline-flex;
    align-items: center;
    justify-content: flex-start;
    flex-wrap: wrap;
    gap: 0.3rem;
}
.tc-validate-drawer .tc-coverage-locate {
    min-width: 1.75rem;
    height: 1.55rem;
    padding: 0 0.4rem;
    border: 1px solid #e2e8f0;
    border-radius: 7px;
    background: #f8fafc;
    color: #334155;
    font-size: 0.6875rem;
    font-weight: 650;
    font-variant-numeric: tabular-nums;
    line-height: 1;
    cursor: pointer;
    transition: background 0.12s ease, border-color 0.12s ease, color 0.12s ease;
}
.tc-validate-drawer .tc-coverage-locate:hover {
    background: #eef2ff;
    border-color: #c7d2fe;
    color: #4338ca;
}

.tc-validate-drawer .tc-coverage-toolbar__actions {
    display: inline-flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.4rem;
    margin-left: auto;
}
.tc-validate-drawer .tc-coverage-delete-over-btn:not(:disabled) {
    color: #9f1239;
    border-color: #fecdd3;
    background: linear-gradient(180deg, #fff1f2 0%, #ffe4e6 100%);
}
.tc-validate-drawer .tc-coverage-delete-over-btn:not(:disabled):hover {
    color: #881337;
    border-color: #fda4af;
    background: linear-gradient(180deg, #ffe4e6 0%, #fecdd3 100%);
}
.tc-validate-drawer .tc-coverage-card__actions {
    margin-left: auto;
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
}
.tc-validate-drawer .tc-coverage-card__top-actions .tc-coverage-delete-one {
    margin-left: 0.15rem;
}
.tc-validate-drawer .tc-coverage-delete-one {
    appearance: none;
    border: 1px solid #fecdd3;
    background: #fff1f2;
    color: #be123c;
    font-size: 0.6875rem;
    font-weight: 650;
    line-height: 1;
    height: 1.55rem;
    padding: 0 0.55rem;
    border-radius: 7px;
    cursor: pointer;
    transition: background 0.12s ease, border-color 0.12s ease, color 0.12s ease;
}
.tc-validate-drawer .tc-coverage-delete-one:hover {
    background: #ffe4e6;
    border-color: #fb7185;
    color: #9f1239;
}
.tc-validate-drawer .tc-coverage-rows-empty {
    color: #cbd5e1;
    font-size: 0.75rem;
}
.tc-validate-drawer .tc-coverage-req-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 18px;
    height: 18px;
    padding: 0;
    border: 1px solid rgba(99, 102, 241, 0.25);
    border-radius: 9999px;
    color: #6366f1;
    background: rgba(238, 242, 255, 0.92);
    cursor: default;
    box-shadow: 0 1px 2px rgba(15, 23, 42, 0.06);
    flex-shrink: 0;
}
.tc-validate-drawer .tc-coverage-req-btn:hover,
.tc-validate-drawer .tc-coverage-req-btn:focus-visible {
    background: #eef2ff;
    border-color: rgba(99, 102, 241, 0.45);
    outline: none;
}
.tc-coverage-req-tip {
    position: fixed;
    z-index: 10380;
    box-sizing: border-box;
    min-width: 0;
    max-width: min(320px, calc(100vw - 24px));
    padding: 0.45rem 0.65rem;
    border-radius: 0.375rem;
    border: 1px solid #e2e8f0;
    background: #f8fafc;
    box-shadow: 0 4px 14px rgba(15, 23, 42, 0.12);
    color: #334155;
    font-size: 0.75rem;
    line-height: 1.45;
    white-space: pre-wrap;
    word-break: break-word;
    pointer-events: none;
}
.tc-validate-drawer .tc-coverage-badge {
    display: inline-flex;
    align-items: center;
    padding: 0.12rem 0.45rem;
    border-radius: 999px;
    font-size: 0.6875rem;
    font-weight: 700;
    white-space: nowrap;
    line-height: 1.35;
    letter-spacing: 0.02em;
}
.tc-validate-drawer .tc-coverage-badge--covered { background: #dcfce7; color: #15803d; }
.tc-validate-drawer .tc-coverage-badge--partial { background: #fef3c7; color: #b45309; }
.tc-validate-drawer .tc-coverage-badge--uncovered { background: #fee2e2; color: #b91c1c; }
.tc-validate-drawer .tc-coverage-badge--over { background: #ede9fe; color: #6d28d9; }
.tc-validate-drawer .tc-coverage-analyzing-hint {
    margin: 0 0 0.65rem;
    padding: 0.45rem 0.65rem;
    border-radius: 8px;
    background: #eff6ff;
    border: 1px solid #dbeafe;
    color: #1d4ed8;
    font-size: 0.75rem;
}
.tc-validate-drawer .tc-coverage-empty-state {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 8rem;
    padding: 1.25rem 0.75rem;
}
.tc-validate-drawer .tc-coverage-loading,
.tc-validate-drawer .tc-coverage-empty {
    margin: 0;
    padding: 0;
    font-size: 0.8125rem;
    color: #94a3b8;
    text-align: center;
}
.tc-validate-drawer.tc-validate-drawer--coverage .tc-coverage-toolbar {
    padding: 0.35rem 0.65rem;
    gap: 0.25rem;
}
/* 问题清单矩阵：默认按内容高度展示，避免底部大块空白 */
.tc-validate-drawer.tc-validate-drawer--coverage:not(.tc-validate-drawer--coverage-overflow) [id^="tc-validate-coverage-panel"]:not(.hidden) {
    flex: 0 0 auto;
    overflow: visible;
}
.tc-validate-drawer.tc-validate-drawer--coverage:not(.tc-validate-drawer--coverage-overflow) .tc-coverage-matrix-list {
    flex: 0 0 auto;
    min-height: 0;
    overflow: visible;
}
.tc-validate-drawer.tc-validate-drawer--coverage:not(.tc-validate-drawer--coverage-overflow) .tc-side-drawer__body.tc-validate-float-panel__body:not(.hidden) {
    flex: 0 0 auto;
}
/* 矩阵行数过多时：抽屉触顶 max-height，仅表格区滚动 */
.tc-validate-drawer.tc-validate-drawer--coverage.tc-validate-drawer--coverage-overflow [id^="tc-validate-coverage-panel"]:not(.hidden) {
    flex: 1 1 auto;
    min-height: 0;
    overflow: hidden;
}
.tc-validate-drawer.tc-validate-drawer--coverage.tc-validate-drawer--coverage-overflow .tc-coverage-matrix-list {
    flex: 1 1 auto;
    min-height: 0;
    overflow: auto;
}

/* 工作台确认弹窗须高于质量检查侧边抽屉（10475）与可拖拽浮窗（10200+） */
#tc-app-dialog.tc-app-dialog-root:not(.hidden),
body.tc-hub-ai-tab #tc-app-dialog.tc-app-dialog-root,
body.tc-hub-ai-tab #tc-view-convert-modal {
    z-index: 10750 !important;
}
body.tc-hub-ai-tab.tc-wb-supplement-confirm-open #tc-app-dialog.tc-app-dialog-root:not(.hidden) {
    z-index: 10850 !important;
}
body.tc-hub-ai-tab.tc-wb-supplement-confirm-open #tc-validate-drawer-single.tc-validate-drawer--open {
    z-index: 10475 !important;
}

.hf-float-toast.hf-float-toast--interactive {
    pointer-events: auto;
}
.hf-float-toast.hf-float-toast--interactive .hf-float-toast__inner {
    pointer-events: auto;
}

/* 用例录入面板布局优化（AI 生成区） */
/* 用例录入面板：顶部 Tab（渐变下划线式） */
#left-panel.tc-left-float-panel #tc-drawer-tabs-root {
    margin-bottom: 0.35rem;
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
}
#left-panel.tc-left-float-panel .tc-drawer-mode-nav {
    gap: 1.75rem !important;
    justify-content: flex-start !important;
    align-items: flex-end !important;
    width: auto !important;
    flex: 0 1 auto !important;
    padding: 0 0.15rem !important;
    border-bottom: 1px solid #E2E8F0 !important;
    background: transparent !important;
    box-shadow: none !important;
}
#left-panel.tc-left-float-panel .tc-drawer-mode-nav .tc-drawer-tab,
#left-panel.tc-left-float-panel .tc-drawer-mode-nav .tc-drawer-tab--ai,
#left-panel.tc-left-float-panel .tc-drawer-mode-nav .tc-drawer-tab--edit,
#left-panel.tc-left-float-panel .tc-drawer-mode-nav .tc-drawer-tab--import {
    flex: 0 0 auto !important;
    min-width: 0 !important;
    min-height: 2.25rem !important;
    padding: 0.45rem 0.15rem 0.55rem !important;
    margin: 0 !important;
    border: none !important;
    border-radius: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
    font-size: 0.875rem !important;
    font-weight: 600 !important;
    letter-spacing: 0.02em !important;
    line-height: 1.25 !important;
    color: #64748B !important;
    transform: none !important;
    position: relative !important;
}
#left-panel.tc-left-float-panel .tc-drawer-mode-nav .tc-drawer-tab:hover:not(.tc-mode-nav__btn--active) {
    border: none !important;
    box-shadow: none !important;
    background-color: transparent !important;
    background-image: none !important;
    -webkit-background-clip: border-box !important;
    background-clip: border-box !important;
    -webkit-text-fill-color: #6366f1 !important;
    color: #6366f1 !important;
}
#left-panel.tc-left-float-panel .tc-drawer-mode-nav .tc-drawer-tab.tc-mode-nav__btn--active,
#left-panel.tc-left-float-panel .tc-drawer-mode-nav .tc-drawer-tab--ai.tc-mode-nav__btn--active,
#left-panel.tc-left-float-panel .tc-drawer-mode-nav .tc-drawer-tab--edit.tc-mode-nav__btn--active,
#left-panel.tc-left-float-panel .tc-drawer-mode-nav .tc-drawer-tab--import.tc-mode-nav__btn--active {
    border: none !important;
    box-shadow: none !important;
    background-color: transparent !important;
    background-image: linear-gradient(90deg, #6366F1 0%, #8B5CF6 50%, #EC4899 100%) !important;
    -webkit-background-clip: text !important;
    background-clip: text !important;
    -webkit-text-fill-color: transparent !important;
    color: transparent !important;
}
#left-panel.tc-left-float-panel .tc-drawer-mode-nav .tc-drawer-tab.tc-mode-nav__btn--active::after,
#left-panel.tc-left-float-panel .tc-drawer-mode-nav .tc-drawer-tab--ai.tc-mode-nav__btn--active::after,
#left-panel.tc-left-float-panel .tc-drawer-mode-nav .tc-drawer-tab--edit.tc-mode-nav__btn--active::after,
#left-panel.tc-left-float-panel .tc-drawer-mode-nav .tc-drawer-tab--import.tc-mode-nav__btn--active::after {
    content: '' !important;
    position: absolute !important;
    left: 0 !important;
    right: 0 !important;
    bottom: -1px !important;
    height: 3px !important;
    border-radius: 999px 999px 0 0 !important;
    background: linear-gradient(90deg, #6366F1 0%, #8B5CF6 48%, #EC4899 100%) !important;
    pointer-events: none !important;
}
#left-panel.tc-left-float-panel .tc-drawer-mode-nav .tc-drawer-tab.tc-mode-nav__btn--active:hover {
    transform: none !important;
    box-shadow: none !important;
}
#left-panel.tc-left-float-panel .tc-drawer-mode-nav .tc-drawer-tab:focus-visible {
    outline: none !important;
    box-shadow: 0 0 0 2px rgb(99 102 241 / 0.22) !important;
    border-radius: 4px !important;
}
#left-panel #tc-entry-head-actions {
    gap: 0.65rem 1.25rem;
    justify-content: flex-end;
}
#left-panel #tc-gen-mode-toolbar {
    margin-right: 0.5rem;
}
#left-panel #tc-ai-entry-head,
#left-panel .tc-left-section__head--gen-mode {
    gap: 0.5rem 1rem;
}
#left-panel .tc-custom-lanhu-fields {
    margin-top: 0.85rem;
}
#left-panel .tc-custom-lanhu-fields__heading {
    margin-bottom: 0.35rem;
}
#left-panel .tc-preset-lanhu {
    row-gap: 0.45rem;
}
#left-panel .tc-preset-lanhu__label[for="lanhu-url"],
#left-panel .tc-preset-lanhu__label[for="custom-lanhu-url"] {
    margin-top: 0.55rem;
}
#left-panel #tc-entry-head-actions #tc-gen-options-row .tc-gen-option-item {
    flex: 0 0 auto;
    padding: 0;
    border: none;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
}

#left-panel #tc-entry-head-actions #tc-gen-options-row .tc-gen-toggle-btn {
    flex: 0 0 auto;
}

#left-panel #tc-gen-options-row .tc-gen-option-item {
    display: flex;
    flex-direction: row;
    flex-wrap: nowrap;
    flex: 1 1 0;
    min-width: 0;
    align-items: center;
    justify-content: flex-start;
    gap: 0.2rem;
    padding: 0.45rem 0.4rem;
    border: 1px solid #E0E7FF;
    border-radius: 10px;
    background: linear-gradient(180deg, #FAFBFF 0%, #FFFFFF 100%);
    box-shadow: 0 1px 2px rgba(99, 102, 241, 0.06);
}
#left-panel #tc-gen-options-row .tc-gen-toggle-btn {
    flex: 1 1 auto;
    min-width: 0;
    justify-content: center;
    padding-left: 0.35rem;
    padding-right: 0.35rem;
    white-space: nowrap;
}
#left-panel #tc-gen-options-row .tc-gen-toggle-btn span {
    overflow: hidden;
    text-overflow: ellipsis;
}
.tc-personal-rag-external-badge {
    flex-shrink: 0;
    font-size: 0.625rem;
    font-weight: 600;
    line-height: 1.2;
    color: #6366F1;
    white-space: nowrap;
}
.tc-personal-rag-external-badge.hidden {
    display: none !important;
}
#left-panel.tc-left-panel--gen-streaming #tc-ai-generate-actions .btn-primary:not(:disabled)::after,
@keyframes tc-gen-stream-dots {
    0% { opacity: 0.35; }
    50% { opacity: 1; }
    100% { opacity: 0.35; }
}
@media (max-width: 360px) {
    #left-panel #tc-entry-head-actions #tc-gen-options-row {
        gap: 0.25rem;
    }
    #left-panel #tc-gen-options-row .tc-gen-option-item {
        padding: 0.4rem 0.3rem;
    }
    #left-panel #tc-gen-options-row .tc-gen-toggle-btn {
        font-size: 0.5625rem;
        padding-left: 0.25rem;
        padding-right: 0.25rem;
    }
}

/* 用例录入浮层：毛玻璃面板 */
#tc-main-content-shell .tc-left-float-backdrop:not(.hidden),
body > #tc-left-float-backdrop.tc-left-float-backdrop:not(.hidden) {
    background: rgba(15, 23, 42, 0.52) !important;
    backdrop-filter: blur(3px) !important;
    -webkit-backdrop-filter: blur(3px) !important;
}
#left-panel.tc-left-float-panel:not(.tc-left-float-panel--collapsed) {
    background: rgba(255, 255, 255, 0.85) !important;
    backdrop-filter: blur(12px) !important;
    -webkit-backdrop-filter: blur(12px) !important;
    border: 1px solid rgba(255, 255, 255, 0.72) !important;
    box-shadow:
        0 0 0 1px rgba(99, 102, 241, 0.1) inset,
        0 24px 48px -12px rgba(15, 23, 42, 0.32),
        0 8px 20px -6px rgba(99, 102, 241, 0.14) !important;
}
#left-panel.tc-left-float-panel .tc-left-float-panel__head {
    background: rgba(255, 255, 255, 0.6) !important;
    backdrop-filter: blur(12px) !important;
    -webkit-backdrop-filter: blur(12px) !important;
    border-bottom: 1px solid rgba(255, 255, 255, 0.2) !important;
}
#left-panel.tc-left-float-panel .tc-left-float-panel__title {
    color: #1F2937 !important;
    letter-spacing: 0.06em !important;
}
#left-panel.tc-left-float-panel .tc-left-float-panel__close.tc-panel-collapse-btn {
    border: 1px solid rgba(255, 255, 255, 0.35) !important;
    background: rgba(255, 255, 255, 0.35) !important;
    color: rgba(0, 0, 0, 0.4) !important;
    box-shadow: none !important;
    backdrop-filter: blur(8px) !important;
    -webkit-backdrop-filter: blur(8px) !important;
}
#left-panel.tc-left-float-panel .tc-left-float-panel__close.tc-panel-collapse-btn:hover {
    color: rgba(0, 0, 0, 0.72) !important;
    border-color: rgba(255, 255, 255, 0.5) !important;
    background: rgba(255, 255, 255, 0.55) !important;
    box-shadow: 0 2px 8px rgba(15, 23, 42, 0.08) !important;
}
#left-panel.tc-left-float-panel .tc-left-float-panel__close.tc-panel-collapse-btn:active {
    color: rgba(0, 0, 0, 0.85) !important;
}
#left-panel.tc-left-float-panel .tc-left-float-panel__close.tc-panel-collapse-btn .tc-panel-collapse-btn__icon {
    color: inherit !important;
}
#left-panel.tc-left-float-panel .tc-left-float-panel__body.tc-left-panel {
    background: transparent !important;
}
#left-panel.tc-left-float-panel.tc-left-float-panel--dragging,
#left-panel.tc-left-float-panel.tc-left-float-panel--resizing {
    background: rgba(255, 255, 255, 0.88) !important;
    backdrop-filter: blur(14px) !important;
    -webkit-backdrop-filter: blur(14px) !important;
    box-shadow:
        0 0 0 1px rgba(99, 102, 241, 0.16) inset,
        0 28px 56px -10px rgba(15, 23, 42, 0.36),
        0 10px 24px -8px rgba(99, 102, 241, 0.18) !important;
}
@media (min-width: 1280px) {
    #tc-main-content-shell .tc-left-float-backdrop {
        display: none !important;
    }
}

/* RAG/功能解锁弹窗：高于用例录入浮层 (10200+) */
body.tc-hub-ai-tab #tc-feature-unlock-modal.flex,
body.tc-hub-ai-tab #tc-feature-unlock-modal:not(.hidden) {
    z-index: 10600 !important;
}

/* RAG Cookie 提示并入 ? 帮助气泡 */
#left-panel .tc-rag-enable-hint {
    display: none !important;
}
.tc-gen-option-help-tip {
    white-space: pre-line;
}
/* Agent 规划：独立卡片式侧边抽屉（方案 A + 渐变光晕 C） */
#left-panel.tc-left-float-panel.tc-left-panel--agent-drawer-open {
    position: fixed !important;
}
#left-panel.tc-left-panel--agent-drawer-open::after {
    content: '';
    position: absolute;
    inset: 0;
    border-radius: inherit;
    background: rgba(0, 0, 0, 0.28);
    pointer-events: none;
    z-index: 60;
}

/* Agent 展开抽屉：缩小为浮标按钮 */

/* Agent 抽屉独立：可拖拽 */
/* 快速规划 · 质量检查：侧边抽屉（样式对齐 Agent 规划抽屉） */
#tc-validate-drawer-single.tc-validate-drawer--side {
    position: fixed !important;
    right: auto !important;
    width: 360px !important;
    max-width: min(360px, calc(100vw - 24px)) !important;
    min-width: 280px;
    max-height: calc(100vh - 24px) !important;
    border: none !important;
    border-radius: 16px !important;
    background: #FFFFFF !important;
    box-shadow:
        0 25px 50px -12px rgba(0, 0, 0, 0.25),
        0 0 0 2px rgba(99, 102, 241, 0.2);
    filter: drop-shadow(0 0 8px rgba(99, 102, 241, 0.15));
    transform: translateX(calc(100% + 12px));
    transition: transform 300ms ease-out, visibility 0s linear 300ms;
    visibility: hidden;
    pointer-events: none;
    z-index: 10475 !important;
    will-change: transform;
    overflow: hidden;
    isolation: isolate;
}
#tc-validate-drawer-single.tc-validate-drawer--side::before {
    content: '';
    position: absolute;
    inset: 0;
    border-radius: 16px;
    padding: 1px;
    background: linear-gradient(135deg, #6366F1, #A855F7);
    -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
    mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
    -webkit-mask-composite: xor;
    mask-composite: exclude;
    pointer-events: none;
    z-index: 2;
}
#tc-validate-drawer-single.tc-validate-drawer--side.hidden {
    display: flex !important;
}
#tc-validate-drawer-single.tc-validate-drawer--side:not(.tc-validate-drawer--open) {
    transform: translateX(calc(100% + 12px));
    visibility: hidden;
    pointer-events: none;
    /* 父级 opacity 可压住子节点 inline visibility:visible !important，避免缩小后右侧空白块 */
    opacity: 0 !important;
}
#tc-validate-drawer-single.tc-validate-drawer--side.tc-validate-drawer--open {
    transform: translateX(0);
    visibility: visible;
    pointer-events: auto;
    opacity: 1 !important;
    transition: transform 300ms ease-out, visibility 0s linear 0s, opacity 0s linear 0s;
}

/* 质量检查侧边抽屉：左上角 / 左边缘缩放（独立于 AI 编辑助手 tc-left-float-resize） */
#tc-validate-drawer-single.tc-validate-drawer--side .tc-validate-single-resize {
    position: absolute;
    z-index: 6;
    touch-action: none;
    background: transparent;
}
#tc-validate-drawer-single.tc-validate-drawer--side .tc-validate-single-resize--w {
    left: 0;
    top: 16px;
    bottom: 16px;
    width: 6px;
    height: auto;
    cursor: w-resize;
}
#tc-validate-drawer-single.tc-validate-drawer--side .tc-validate-single-resize--nw {
    left: 0;
    top: 0;
    width: 14px;
    height: 14px;
    cursor: nw-resize;
}
#tc-validate-drawer-single.tc-validate-drawer--side .tc-validate-single-resize:hover {
    background: rgb(99 102 241 / 0.12);
}
#tc-validate-drawer-single.tc-validate-drawer--side .tc-validate-single-resize--nw:hover {
    border-radius: 16px 0 0 0;
}
#tc-validate-drawer-single.tc-validate-drawer--side.tc-validate-drawer--resizing {
    transition: none !important;
    user-select: none;
}
body.tc-validate-single-resizing[data-validate-single-resize-cursor="w"],
body.tc-validate-single-resizing .tc-validate-single-resize--w {
    cursor: w-resize !important;
}
body.tc-validate-single-resizing[data-validate-single-resize-cursor="nw"],
body.tc-validate-single-resizing .tc-validate-single-resize--nw {
    cursor: nw-resize !important;
}
#tc-validate-drawer-single.tc-validate-drawer--side [data-validate-drag-handle="single"] {
    cursor: grab;
}
#tc-validate-drawer-single.tc-validate-drawer--side.tc-validate-drawer--dragging [data-validate-drag-handle="single"] {
    cursor: grabbing;
}
#tc-validate-drawer-single.tc-validate-drawer--side .tc-validate-float-panel__head,
#tc-validate-drawer-single.tc-validate-drawer--side .tc-validate-drawer-tabs,
#tc-validate-drawer-single.tc-validate-drawer--side .tc-side-drawer__body {
    position: relative;
    z-index: 3;
    background: #FFFFFF;
}
#tc-validate-drawer-single.tc-validate-drawer--side .tc-validate-float-panel__head {
    cursor: default;
    border-bottom: 1px solid rgba(226, 232, 240, 0.92);
    border-radius: 16px 16px 0 0;
}
#tc-validate-drawer-single.tc-validate-drawer--side .tc-side-drawer__title {
    color: #1F2937;
    font-size: 0.9375rem;
    font-weight: 700;
}
#tc-validate-drawer-single.tc-validate-drawer--side .tc-side-drawer__subtitle {
    color: #64748B;
}
#tc-validate-drawer-single.tc-validate-drawer--side .tc-validate-float-panel__winbtns {
    align-items: center;
    gap: 0.35rem;
}
#tc-validate-drawer-single.tc-validate-drawer--side .tc-validate-drawer-minimize-btn {
    width: 32px;
    height: 32px;
    padding: 0;
    border: 1px solid rgba(99, 102, 241, 0.24);
    border-radius: 16px;
    background: #FFFFFF;
    color: #6366F1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    flex-shrink: 0;
    transition: transform 0.18s ease, background 0.18s ease, border-color 0.18s ease, box-shadow 0.18s ease;
    box-shadow: 0 1px 3px rgba(99, 102, 241, 0.12);
}
#tc-validate-drawer-single.tc-validate-drawer--side .tc-validate-drawer-minimize-btn svg {
    display: block;
}
#tc-validate-drawer-single.tc-validate-drawer--side .tc-validate-drawer-minimize-btn:hover {
    transform: scale(1.1);
    background: #EEF2FF;
    border-color: rgba(99, 102, 241, 0.42);
    box-shadow: 0 4px 12px rgba(99, 102, 241, 0.2);
}
#tc-validate-drawer-single.tc-validate-drawer--side .tc-validate-drawer-minimize-btn:active {
    transform: scale(0.95);
    background: #E0E7FF;
}
#tc-validate-drawer-single.tc-validate-drawer--side .tc-validate-drawer-minimize-btn:focus-visible {
    outline: 2px solid rgba(99, 102, 241, 0.45);
    outline-offset: 2px;
}

/* 补充用例 Agent 侧边抽屉（样式对齐质量检查抽屉） */
#tc-agent-drawer.tc-agent-drawer--side {
    position: fixed !important;
    right: auto !important;
    width: 360px !important;
    max-width: min(360px, calc(100vw - 24px)) !important;
    min-width: 280px;
    max-height: calc(100vh - 24px) !important;
    border: none !important;
    border-radius: 16px !important;
    background: #FFFFFF !important;
    box-shadow:
        0 25px 50px -12px rgba(0, 0, 0, 0.25),
        0 0 0 2px rgba(16, 185, 129, 0.22);
    filter: drop-shadow(0 0 8px rgba(16, 185, 129, 0.12));
    transform: translateX(calc(100% + 12px));
    transition: transform 300ms ease-out, visibility 0s linear 300ms;
    visibility: hidden;
    pointer-events: none;
    z-index: 10480 !important;
    will-change: transform;
    overflow: hidden;
    isolation: isolate;
    display: flex;
    flex-direction: column;
}
#tc-agent-drawer.tc-agent-drawer--side::before {
    content: '';
    position: absolute;
    inset: 0;
    border-radius: 16px;
    padding: 1px;
    background: linear-gradient(135deg, #10B981, #6366F1);
    -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
    mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
    -webkit-mask-composite: xor;
    mask-composite: exclude;
    pointer-events: none;
    z-index: 2;
}
#tc-agent-drawer.tc-agent-drawer--side.hidden {
    display: flex !important;
}
#tc-agent-drawer.tc-agent-drawer--side:not(.tc-agent-drawer--open) {
    transform: translateX(calc(100% + 12px));
    visibility: hidden;
    pointer-events: none;
}
#tc-agent-drawer.tc-agent-drawer--side.tc-agent-drawer--open {
    transform: translateX(0);
    visibility: visible;
    pointer-events: auto;
    transition: transform 300ms ease-out, visibility 0s linear 0s;
}
#tc-agent-drawer.tc-agent-drawer--side [data-agent-drag-handle] {
    cursor: grab;
}
#tc-agent-drawer.tc-agent-drawer--side.tc-agent-drawer--dragging [data-agent-drag-handle] {
    cursor: grabbing;
}
#tc-agent-drawer.tc-agent-drawer--side .tc-validate-float-panel__head,
#tc-agent-drawer.tc-agent-drawer--side #tc-agent-step-list,
#tc-agent-drawer.tc-agent-drawer--side .tc-side-drawer__foot {
    position: relative;
    z-index: 3;
    background: #FFFFFF;
}
#tc-agent-drawer.tc-agent-drawer--side .tc-validate-float-panel__head {
    cursor: default;
    border-bottom: 1px solid rgba(226, 232, 240, 0.92);
    border-radius: 16px 16px 0 0;
    flex-shrink: 0;
}
#tc-agent-drawer.tc-agent-drawer--side #tc-agent-step-list {
    flex: 1 1 0;
    min-height: 12rem;
    overflow: auto;
}
#tc-agent-drawer.tc-agent-drawer--side .tc-side-drawer__foot {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    justify-content: flex-end;
    padding: 0.65rem 0.75rem;
    border-top: 1px solid rgba(226, 232, 240, 0.92);
    flex-shrink: 0;
}
#tc-agent-drawer.tc-agent-drawer--side .tc-agent-coverage-head-btn {
    max-width: 9.5rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}



/* 生成批次条 5s 后淡出消失 */
.tc-gen-batch-bar--fading {
    animation: tc-batch-bar-fade-out 0.45s ease-in forwards;
    pointer-events: none;
}
@keyframes tc-batch-bar-fade-out {
    0% { opacity: 1; transform: translateY(0); }
    100% { opacity: 0; transform: translateY(-6px); max-height: 0; margin: 0; padding-top: 0; padding-bottom: 0; overflow: hidden; }
}
/* ── 需求选择弹窗（导出 Excel）── */
#tc-export-requirement-modal.tc-req-picker-modal {
    position: fixed;
    inset: 0;
    z-index: 86;
    display: none;
    align-items: center;
    justify-content: center;
    padding: 1rem;
}
#tc-export-requirement-modal.flex { display: flex !important; }
#tc-export-requirement-modal .tc-req-picker-modal__backdrop {
    position: absolute;
    inset: 0;
    background: rgba(15, 23, 42, 0.52);
    backdrop-filter: blur(4px);
}
#tc-export-requirement-modal .tc-req-picker-modal__panel {
    position: relative;
    z-index: 1;
    display: flex;
    flex-direction: column;
    width: 100%;
    max-width: 34rem;
    max-height: min(84vh, calc(100vh - 2rem));
    overflow: hidden;
    border-radius: 1.125rem;
    border: 1px solid rgba(255, 255, 255, 0.65);
    background: linear-gradient(180deg, #ffffff 0%, #f8fafc 100%);
    box-shadow: 0 24px 48px -12px rgba(15, 23, 42, 0.28), 0 0 0 1px rgba(15, 23, 42, 0.04);
}
#tc-export-requirement-modal .tc-req-picker-modal__header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.75rem;
    padding: 1.15rem 1.25rem 1rem;
    border-bottom: 1px solid #e2e8f0;
    background: linear-gradient(135deg, rgba(16, 185, 129, 0.08) 0%, rgba(255, 255, 255, 0) 55%);
}
#tc-export-requirement-modal .tc-req-picker-modal__header-main {
    display: flex;
    align-items: flex-start;
    gap: 0.85rem;
    min-width: 0;
}
#tc-export-requirement-modal .tc-req-picker-modal__icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 2.5rem;
    height: 2.5rem;
    border-radius: 0.75rem;
    flex-shrink: 0;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.35);
}
#tc-export-requirement-modal .tc-req-picker-modal__icon svg { width: 1.35rem; height: 1.35rem; }
#tc-export-requirement-modal .tc-req-picker-modal__icon--export {
    color: #047857;
    background: linear-gradient(145deg, #d1fae5, #a7f3d0);
    border: 1px solid rgba(16, 185, 129, 0.25);
}
#tc-export-requirement-modal .tc-req-picker-modal__title {
    margin: 0;
    font-size: 1.05rem;
    font-weight: 700;
    letter-spacing: -0.01em;
    color: #0f172a;
    line-height: 1.3;
}
#tc-export-requirement-modal .tc-req-picker-modal__subtitle {
    margin: 0.25rem 0 0;
    font-size: 0.78rem;
    line-height: 1.45;
    color: #64748b;
}
#tc-export-requirement-modal .tc-req-picker-modal__close {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2rem;
    height: 2rem;
    padding: 0;
    border: none;
    border-radius: 9999px;
    background: transparent;
    color: #94a3b8;
    cursor: pointer;
    transition: background-color 0.15s, color 0.15s;
}
#tc-export-requirement-modal .tc-req-picker-modal__close:hover {
    background: #f1f5f9;
    color: #475569;
}
#tc-export-requirement-modal .tc-req-picker-modal__close svg { width: 1rem; height: 1rem; }
#tc-export-requirement-modal .tc-req-picker-modal__summary-bar {
    padding: 0.65rem 1.25rem;
    border-bottom: 1px solid #eef2f7;
    background: #f8fafc;
}
#tc-export-requirement-modal .tc-req-picker-modal__summary {
    display: inline-flex;
    align-items: center;
    min-height: 1.5rem;
    padding: 0.2rem 0.65rem;
    border-radius: 9999px;
    background: #ecfdf5;
    border: 1px solid rgba(16, 185, 129, 0.18);
    font-size: 0.76rem;
    font-weight: 600;
    color: #047857;
    line-height: 1.35;
}
#tc-export-requirement-modal .tc-req-picker-modal__body {
    min-height: 0;
    flex: 1;
    overflow: auto;
    padding: 0.85rem 1rem 1rem;
}
#tc-export-requirement-modal .tc-req-picker-modal__state {
    padding: 1.25rem 0.15rem 0.5rem;
    font-size: 0.8125rem;
    line-height: 1.5;
    color: #94a3b8;
    letter-spacing: 0.01em;
}
#tc-export-requirement-modal .tc-req-picker-modal__state.hidden { display: none; }
#tc-export-requirement-modal .tc-export-requirement-list {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}
#tc-export-requirement-modal .tc-export-requirement-item {
    display: flex;
    align-items: flex-start;
    gap: 0.7rem;
    padding: 0.75rem 0.85rem;
    border: 1px solid #e2e8f0;
    border-radius: 0.85rem;
    background: #fff;
    cursor: pointer;
    transition: border-color 0.18s, background-color 0.18s, box-shadow 0.18s;
}
#tc-export-requirement-modal .tc-export-requirement-item:hover {
    border-color: #cbd5e1;
    background: #f8fafc;
}
#tc-export-requirement-modal .tc-export-requirement-item:has(.tc-export-requirement-check:checked) {
    border-color: rgba(16, 185, 129, 0.45);
    background: linear-gradient(180deg, #f0fdf4 0%, #ffffff 100%);
    box-shadow: 0 0 0 1px rgba(16, 185, 129, 0.12);
}
#tc-export-requirement-modal .tc-export-requirement-check {
    appearance: none;
    width: 1.125rem;
    height: 1.125rem;
    margin-top: 0.1rem;
    border: 2px solid #cbd5e1;
    border-radius: 0.35rem;
    background: #fff;
    flex-shrink: 0;
    cursor: pointer;
    transition: border-color 0.15s, background-color 0.15s;
}
#tc-export-requirement-modal .tc-export-requirement-check:checked {
    border-color: #10b981;
    background: #10b981 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none'%3E%3Cpath d='M3.5 8.2l2.8 2.8 6.2-6.4' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/0.75rem no-repeat;
}
#tc-export-requirement-modal .tc-export-requirement-item__body { min-width: 0; flex: 1; }
#tc-export-requirement-modal .tc-export-requirement-item__head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.65rem;
}
#tc-export-requirement-modal .tc-export-requirement-item__path {
    flex: 0 1 auto;
    max-width: 58%;
    margin-left: auto;
    text-align: right;
    font-size: 0.68rem;
    line-height: 1.35;
    color: #94a3b8;
    word-break: break-word;
}
#tc-export-requirement-modal .tc-export-requirement-item__title {
    display: block;
    font-size: 0.88rem;
    font-weight: 600;
    color: #0f172a;
    line-height: 1.35;
    word-break: break-word;
}
#tc-export-requirement-modal .tc-export-requirement-item__meta {
    display: block;
    margin-top: 0.2rem;
    font-size: 0.74rem;
    color: #64748b;
    line-height: 1.4;
}
#tc-export-requirement-modal .tc-export-requirement-item__order {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 1.35rem;
    height: 1.35rem;
    margin-top: 0.05rem;
    border-radius: 9999px;
    background: #10b981;
    color: #fff;
    font-size: 0.68rem;
    font-weight: 700;
    flex-shrink: 0;
    box-shadow: 0 1px 2px rgba(16, 185, 129, 0.35);
}
#tc-export-requirement-modal .tc-export-requirement-item__order.hidden { display: none; }
#tc-export-requirement-modal .tc-export-requirement-mode-wrap {
    padding: 0.85rem 1.25rem 0.25rem;
    border-top: 1px solid #eef2f7;
    background: #fafbfc;
}
#tc-export-requirement-modal .tc-export-requirement-mode-wrap.hidden { display: none; }
#tc-export-requirement-modal .tc-export-requirement-mode-wrap__label {
    margin-bottom: 0.55rem;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: #64748b;
}
#tc-export-requirement-modal .tc-export-requirement-mode-list {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.55rem;
}
#tc-export-requirement-modal .tc-export-requirement-mode {
    display: block;
    cursor: pointer;
}
#tc-export-requirement-modal .tc-export-requirement-mode input {
    position: absolute;
    opacity: 0;
    pointer-events: none;
}
#tc-export-requirement-modal .tc-export-requirement-mode__card {
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
    padding: 0.65rem 0.75rem;
    border: 1px solid #e2e8f0;
    border-radius: 0.75rem;
    background: #fff;
    transition: border-color 0.15s, box-shadow 0.15s;
}
#tc-export-requirement-modal .tc-export-requirement-mode:has(input:checked) .tc-export-requirement-mode__card {
    border-color: rgba(16, 185, 129, 0.45);
    background: #f0fdf4;
    box-shadow: 0 0 0 1px rgba(16, 185, 129, 0.12);
}
#tc-export-requirement-modal .tc-export-requirement-mode__title {
    font-size: 0.78rem;
    font-weight: 700;
    color: #0f172a;
}
#tc-export-requirement-modal .tc-export-requirement-mode__desc {
    font-size: 0.68rem;
    line-height: 1.35;
    color: #64748b;
}
#tc-export-requirement-modal .tc-req-picker-modal__footer {
    display: flex;
    justify-content: flex-end;
    gap: 0.55rem;
    padding: 0.85rem 1.25rem 1.1rem;
    border-top: 1px solid #e2e8f0;
    background: #fff;
}
#tc-export-requirement-modal .tc-req-picker-modal__btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 2.25rem;
    padding: 0 1rem;
    border-radius: 0.65rem;
    font-size: 0.8125rem;
    font-weight: 600;
    cursor: pointer;
    transition: background-color 0.15s, border-color 0.15s, opacity 0.15s;
}
#tc-export-requirement-modal .tc-req-picker-modal__btn--ghost {
    border: 1px solid #e2e8f0;
    background: #fff;
    color: #475569;
}
#tc-export-requirement-modal .tc-req-picker-modal__btn--ghost:hover { background: #f8fafc; }
#tc-export-requirement-modal .tc-req-picker-modal__btn--primary {
    border: none;
    color: #fff;
}
#tc-export-requirement-modal .tc-req-picker-modal__btn--export {
    background: linear-gradient(135deg, #10b981, #059669);
    box-shadow: 0 4px 12px rgba(16, 185, 129, 0.28);
}
#tc-export-requirement-modal .tc-req-picker-modal__btn--export:hover:not(:disabled) {
    background: linear-gradient(135deg, #059669, #047857);
}
#tc-export-requirement-modal .tc-req-picker-modal__btn--primary:disabled {
    opacity: 0.45;
    cursor: not-allowed;
    box-shadow: none;
}
@media (max-width: 520px) {
    #tc-export-requirement-modal .tc-export-requirement-mode-list { grid-template-columns: 1fr; }
}

/* 质量检查抽屉内：全部补充进度（替代补充用例抽屉） */
.tc-validate-drawer--fill-active .tc-validate-drawer-tabs,
#tc-validate-drawer-single.tc-validate-drawer--fill-active .tc-validate-drawer-tabs {
    display: none !important;
}
.tc-validate-drawer--fill-active .tc-validate-drawer-tabs.hidden {
    display: none !important;
}
.tc-validate-drawer--qc-running .tc-validate-drawer-tabs {
    display: none !important;
}
.tc-validate-drawer--clean-pass .tc-validate-drawer-tabs {
    display: none !important;
}

.tc-validate-fill-progress-panel.hidden {
    display: none !important;
}
.tc-validate-fill-progress-panel {
    display: flex;
    flex-direction: column;
    min-height: 0;
    overflow: hidden;
    background: linear-gradient(180deg, #f8fafc 0%, #ffffff 42%);
}
.tc-qc-fill-progress {
    flex: 1;
    min-height: 0;
    overflow: auto;
    padding: 14px 14px 10px;
}
.tc-qc-fill-progress__hero {
    position: relative;
    padding: 16px 16px 14px;
    margin-bottom: 12px;
    border-radius: 14px;
    background: linear-gradient(135deg, #eef2ff 0%, #f0f9ff 48%, #ecfeff 100%);
    border: 1px solid rgba(99, 102, 241, 0.14);
    box-shadow: 0 10px 28px rgba(15, 23, 42, 0.06);
    overflow: hidden;
}
.tc-qc-fill-progress__hero::after {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(105deg, transparent 40%, rgba(255,255,255,0.45) 50%, transparent 60%);
    transform: translateX(-120%);
    animation: tc-qc-fill-shimmer 2.4s ease-in-out infinite;
    pointer-events: none;
}
@keyframes tc-qc-fill-shimmer {
    0% { transform: translateX(-120%); }
    100% { transform: translateX(120%); }
}
.tc-qc-fill-progress__badge {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 3px 10px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 0.02em;
    color: #4338ca;
    background: rgba(255, 255, 255, 0.72);
    border: 1px solid rgba(99, 102, 241, 0.18);
}
.tc-qc-fill-progress__title {
    margin: 10px 0 4px;
    font-size: 15px;
    font-weight: 650;
    color: #0f172a;
    letter-spacing: -0.01em;
}
.tc-qc-fill-progress__meta {
    margin: 0;
    font-size: 12px;
    color: #64748b;
    line-height: 1.45;
}
.tc-qc-fill-progress__bar {
    margin-top: 12px;
    height: 6px;
    border-radius: 999px;
    background: rgba(15, 23, 42, 0.08);
    overflow: hidden;
}
.tc-qc-fill-progress__bar-fill {
    height: 100%;
    border-radius: inherit;
    background: linear-gradient(90deg, #6366f1, #06b6d4);
    transition: width 0.35s ease;
}
.tc-qc-fill-progress__steps {
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.tc-qc-fill-progress__steps .tc-validate-step {
    border-radius: 12px;
    border: 1px solid #e2e8f0;
    background: #fff;
    padding: 10px 12px;
    box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
}
.tc-qc-fill-progress__steps .tc-validate-step--running {
    border-color: rgba(99, 102, 241, 0.35);
    box-shadow: 0 0 0 1px rgba(99, 102, 241, 0.08);
}
.tc-qc-fill-progress__steps .tc-validate-step--done {
    border-color: rgba(16, 185, 129, 0.25);
}

.tc-qc-fill-progress__foot {
    flex-shrink: 0;
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    padding: 10px 14px 12px;
    border-top: 1px solid #e2e8f0;
    background: rgba(255, 255, 255, 0.92);
}
.tc-qc-fill-progress__result {
    margin-top: 10px;
    padding: 10px 12px;
    border-radius: 10px;
    font-size: 12px;
    line-height: 1.45;
}
.tc-qc-fill-progress__result--ok {
    color: #047857;
    background: #ecfdf5;
    border: 1px solid #a7f3d0;
}
.tc-qc-fill-progress__result--err {
    color: #b91c1c;
    background: #fef2f2;
    border: 1px solid #fecaca;
}
.tc-validate-float-reopen--single {
    white-space: nowrap;
    width: max-content;
    max-width: calc(100vw - 16px);
    box-sizing: border-box;
}
/* 质量检查抽屉收回后：悬浮按钮默认沉底展示 */
.tc-validate-float-reopen--single:not(.tc-validate-drawer-mini--positioned) {
    left: auto;
    right: 20px;
    bottom: 24px;
    top: auto;
}
/* 质量检查悬浮钮：拖拽定位时避免 top/bottom 同时生效导致纵向拉伸 */
.tc-validate-float-reopen.tc-validate-drawer-mini--positioned {
    bottom: auto !important;
    right: auto !important;
    white-space: nowrap;
    flex-shrink: 0;
}
.tc-validate-float-reopen.tc-validate-drawer-mini--positioned:not(.tc-validate-float-reopen--single) {
    width: auto;
    max-width: none;
    height: auto;
}
.tc-validate-float-reopen.tc-validate-drawer-mini--dragging {
    cursor: grabbing;
    user-select: none;
    touch-action: none;
    will-change: transform;
}
.tc-validate-float-reopen--single.tc-validate-drawer-mini--positioned {
    width: max-content;
    max-width: calc(100vw - 16px);
}
/* 质量检查悬浮钮：拖放后保持沉底锚点 + transform，不参与 positioned 左顶定位 */
.tc-validate-float-reopen--single.tc-validate-drawer-mini--offset:not(.tc-validate-drawer-mini--positioned) {
    left: auto;
    right: 20px;
    bottom: 24px;
    top: auto;
}


/* XMind export picker */
#tc-export-xmind-modal.tc-req-picker-modal {
    position: fixed;
    inset: 0;
    z-index: 86;
    display: none;
    align-items: center;
    justify-content: center;
    padding: 1rem;
}
#tc-export-xmind-modal.flex { display: flex !important; }
#tc-export-xmind-modal .tc-req-picker-modal__backdrop {
    position: absolute;
    inset: 0;
    background: rgba(15, 23, 42, 0.52);
    backdrop-filter: blur(4px);
}
#tc-export-xmind-modal .tc-req-picker-modal__panel {
    position: relative;
    z-index: 1;
    display: flex;
    flex-direction: column;
    width: 100%;
    max-width: 34rem;
    max-height: min(84vh, calc(100vh - 2rem));
    overflow: hidden;
    border-radius: 1.125rem;
    border: 1px solid rgba(255, 255, 255, 0.65);
    background: linear-gradient(180deg, #ffffff 0%, #f8fafc 100%);
    box-shadow: 0 24px 48px -12px rgba(15, 23, 42, 0.28), 0 0 0 1px rgba(15, 23, 42, 0.04);
}
#tc-export-xmind-modal .tc-req-picker-modal__header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.75rem;
    padding: 1.15rem 1.25rem 1rem;
    border-bottom: 1px solid #e2e8f0;
    background: linear-gradient(135deg, rgba(16, 185, 129, 0.08) 0%, rgba(255, 255, 255, 0) 55%);
}
#tc-export-xmind-modal .tc-req-picker-modal__header-main {
    display: flex;
    align-items: flex-start;
    gap: 0.85rem;
    min-width: 0;
}
#tc-export-xmind-modal .tc-req-picker-modal__icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 2.5rem;
    height: 2.5rem;
    border-radius: 0.75rem;
    flex-shrink: 0;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.35);
}
#tc-export-xmind-modal .tc-req-picker-modal__icon svg { width: 1.35rem; height: 1.35rem; }
#tc-export-xmind-modal .tc-req-picker-modal__icon--export {
    color: #047857;
    background: linear-gradient(145deg, #d1fae5, #a7f3d0);
    border: 1px solid rgba(16, 185, 129, 0.25);
}
#tc-export-xmind-modal .tc-req-picker-modal__title {
    margin: 0;
    font-size: 1.05rem;
    font-weight: 700;
    letter-spacing: -0.01em;
    color: #0f172a;
    line-height: 1.3;
}
#tc-export-xmind-modal .tc-req-picker-modal__subtitle {
    margin: 0.25rem 0 0;
    font-size: 0.78rem;
    line-height: 1.45;
    color: #64748b;
}
#tc-export-xmind-modal .tc-req-picker-modal__close {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2rem;
    height: 2rem;
    padding: 0;
    border: none;
    border-radius: 9999px;
    background: transparent;
    color: #94a3b8;
    cursor: pointer;
    transition: background-color 0.15s, color 0.15s;
}
#tc-export-xmind-modal .tc-req-picker-modal__close:hover {
    background: #f1f5f9;
    color: #475569;
}
#tc-export-xmind-modal .tc-req-picker-modal__close svg { width: 1rem; height: 1rem; }
#tc-export-xmind-modal .tc-req-picker-modal__summary-bar {
    padding: 0.65rem 1.25rem;
    border-bottom: 1px solid #eef2f7;
    background: #f8fafc;
}
#tc-export-xmind-modal .tc-req-picker-modal__summary {
    display: inline-flex;
    align-items: center;
    min-height: 1.5rem;
    padding: 0.2rem 0.65rem;
    border-radius: 9999px;
    background: #ecfdf5;
    border: 1px solid rgba(16, 185, 129, 0.18);
    font-size: 0.76rem;
    font-weight: 600;
    color: #047857;
    line-height: 1.35;
}
#tc-export-xmind-modal .tc-req-picker-modal__body {
    min-height: 0;
    flex: 1;
    overflow: auto;
    padding: 0.85rem 1rem 1rem;
}
#tc-export-xmind-modal .tc-req-picker-modal__state {
    padding: 1.25rem 0.15rem 0.5rem;
    font-size: 0.8125rem;
    line-height: 1.5;
    color: #94a3b8;
    letter-spacing: 0.01em;
}
#tc-export-xmind-modal .tc-req-picker-modal__state.hidden { display: none; }
#tc-export-xmind-modal .tc-export-xmind-list {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}
#tc-export-xmind-modal .tc-export-xmind-item {
    display: flex;
    align-items: flex-start;
    gap: 0.7rem;
    padding: 0.75rem 0.85rem;
    border: 1px solid #e2e8f0;
    border-radius: 0.85rem;
    background: #fff;
    cursor: pointer;
    transition: border-color 0.18s, background-color 0.18s, box-shadow 0.18s;
}
#tc-export-xmind-modal .tc-export-xmind-item:hover {
    border-color: #cbd5e1;
    background: #f8fafc;
}
#tc-export-xmind-modal .tc-export-xmind-item:has(.tc-export-xmind-check:checked) {
    border-color: rgba(16, 185, 129, 0.45);
    background: linear-gradient(180deg, #f0fdf4 0%, #ffffff 100%);
    box-shadow: 0 0 0 1px rgba(16, 185, 129, 0.12);
}
#tc-export-xmind-modal .tc-export-xmind-check {
    appearance: none;
    width: 1.125rem;
    height: 1.125rem;
    margin-top: 0.1rem;
    border: 2px solid #cbd5e1;
    border-radius: 0.35rem;
    background: #fff;
    flex-shrink: 0;
    cursor: pointer;
    transition: border-color 0.15s, background-color 0.15s;
}
#tc-export-xmind-modal .tc-export-xmind-check:checked {
    border-color: #10b981;
    background: #10b981 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none'%3E%3Cpath d='M3.5 8.2l2.8 2.8 6.2-6.4' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/0.75rem no-repeat;
}
#tc-export-xmind-modal .tc-export-xmind-item__body { min-width: 0; flex: 1; }
#tc-export-xmind-modal .tc-export-xmind-item__head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.65rem;
}
#tc-export-xmind-modal .tc-export-xmind-item__path {
    flex: 0 1 auto;
    max-width: 58%;
    margin-left: auto;
    text-align: right;
    font-size: 0.68rem;
    line-height: 1.35;
    color: #94a3b8;
    word-break: break-word;
}
#tc-export-xmind-modal .tc-export-xmind-item__title {
    display: block;
    font-size: 0.88rem;
    font-weight: 600;
    color: #0f172a;
    line-height: 1.35;
    word-break: break-word;
}
#tc-export-xmind-modal .tc-export-xmind-item__meta {
    display: block;
    margin-top: 0.2rem;
    font-size: 0.74rem;
    color: #64748b;
    line-height: 1.4;
}
#tc-export-xmind-modal .tc-export-xmind-item__order {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 1.35rem;
    height: 1.35rem;
    margin-top: 0.05rem;
    border-radius: 9999px;
    background: #10b981;
    color: #fff;
    font-size: 0.68rem;
    font-weight: 700;
    flex-shrink: 0;
    box-shadow: 0 1px 2px rgba(16, 185, 129, 0.35);
}
#tc-export-xmind-modal .tc-export-xmind-item__order.hidden { display: none; }
#tc-export-xmind-modal .tc-export-xmind-mode-wrap {
    padding: 0.85rem 1.25rem 0.25rem;
    border-top: 1px solid #eef2f7;
    background: #fafbfc;
}
#tc-export-xmind-modal .tc-export-xmind-mode-wrap.hidden { display: none; }
#tc-export-xmind-modal .tc-export-xmind-mode-wrap__label {
    margin-bottom: 0.55rem;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: #64748b;
}
#tc-export-xmind-modal .tc-export-xmind-mode-list {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.55rem;
}
#tc-export-xmind-modal .tc-export-xmind-mode {
    display: block;
    cursor: pointer;
}
#tc-export-xmind-modal .tc-export-xmind-mode input {
    position: absolute;
    opacity: 0;
    pointer-events: none;
}
#tc-export-xmind-modal .tc-export-xmind-mode__card {
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
    padding: 0.65rem 0.75rem;
    border: 1px solid #e2e8f0;
    border-radius: 0.75rem;
    background: #fff;
    transition: border-color 0.15s, box-shadow 0.15s;
}
#tc-export-xmind-modal .tc-export-xmind-mode:has(input:checked) .tc-export-xmind-mode__card {
    border-color: rgba(16, 185, 129, 0.45);
    background: #f0fdf4;
    box-shadow: 0 0 0 1px rgba(16, 185, 129, 0.12);
}
#tc-export-xmind-modal .tc-export-xmind-mode__title {
    font-size: 0.78rem;
    font-weight: 700;
    color: #0f172a;
}
#tc-export-xmind-modal .tc-export-xmind-mode__desc {
    font-size: 0.68rem;
    line-height: 1.35;
    color: #64748b;
}
#tc-export-xmind-modal .tc-req-picker-modal__footer {
    display: flex;
    justify-content: flex-end;
    gap: 0.55rem;
    padding: 0.85rem 1.25rem 1.1rem;
    border-top: 1px solid #e2e8f0;
    background: #fff;
}
#tc-export-xmind-modal .tc-req-picker-modal__btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 2.25rem;
    padding: 0 1rem;
    border-radius: 0.65rem;
    font-size: 0.8125rem;
    font-weight: 600;
    cursor: pointer;
    transition: background-color 0.15s, border-color 0.15s, opacity 0.15s;
}
#tc-export-xmind-modal .tc-req-picker-modal__btn--ghost {
    border: 1px solid #e2e8f0;
    background: #fff;
    color: #475569;
}
#tc-export-xmind-modal .tc-req-picker-modal__btn--ghost:hover { background: #f8fafc; }
#tc-export-xmind-modal .tc-req-picker-modal__btn--primary {
    border: none;
    color: #fff;
}
#tc-export-xmind-modal .tc-req-picker-modal__btn--export {
    background: linear-gradient(135deg, #10b981, #059669);
    box-shadow: 0 4px 12px rgba(16, 185, 129, 0.28);
}
#tc-export-xmind-modal .tc-req-picker-modal__btn--export:hover:not(:disabled) {
    background: linear-gradient(135deg, #059669, #047857);
}
#tc-export-xmind-modal .tc-req-picker-modal__btn--primary:disabled {
    opacity: 0.45;
    cursor: not-allowed;
    box-shadow: none;
}
@media (max-width: 520px) {
    #tc-export-xmind-modal .tc-export-xmind-mode-list { grid-template-columns: 1fr; }
}

/* 用例补充进度 — 步骤百分比（仅 fill 抽屉，不影响 Agent 侧栏） */
.tc-qc-fill-progress__steps .tc-qc-fill-progress__step-pct {
    color: #1e293b;
    font-weight: 600;
    font-size: 0.8125rem;
    font-variant-numeric: tabular-nums;
    letter-spacing: 0.01em;
}
.tc-qc-fill-progress__steps .tc-validate-step--running .tc-qc-fill-progress__step-pct {
    color: #0f4c81;
}
.tc-qc-fill-progress__steps .tc-validate-step--done .tc-qc-fill-progress__step-pct {
    color: #047857;
}

/* ---------- 质量检查 / 生成 / 补充进行中：置灰禁点表格操作 / 模板 / 视图 / 导出 / 智能编辑 FAB / 质量检测 ---------- */
.tc-workbench-scope.tc-qc-workbench-interaction-lock #tc-gen-quality-btn,
.tc-workbench-scope.tc-qc-workbench-interaction-lock #tc-table-ops-anchor,
.tc-workbench-scope.tc-qc-workbench-interaction-lock #tc-table-fab-toggle,
.tc-workbench-scope.tc-qc-workbench-interaction-lock #tc-table-fab-sheet,
.tc-workbench-scope.tc-qc-workbench-interaction-lock #tc-switch-template-btn,
.tc-workbench-scope.tc-qc-workbench-interaction-lock #tc-choose-template-btn,
.tc-workbench-scope.tc-qc-workbench-interaction-lock #tc-right-view-mindmap-btn,
.tc-workbench-scope.tc-qc-workbench-interaction-lock #tc-right-view-table-btn,
.tc-workbench-scope.tc-qc-workbench-interaction-lock #tc-export-fab-wrap,
.tc-workbench-scope.tc-qc-workbench-interaction-lock #tc-export-fab-toggle,
.tc-workbench-scope.tc-qc-workbench-interaction-lock #tc-export-fab-sheet {
    opacity: 0.42;
    pointer-events: none !important;
    cursor: not-allowed !important;
    filter: grayscale(0.35);
}

.tc-workbench-scope.tc-qc-workbench-interaction-lock #tc-gen-quality-btn:hover,
.tc-workbench-scope.tc-qc-workbench-interaction-lock #tc-export-fab-toggle:hover,
.tc-workbench-scope.tc-qc-workbench-interaction-lock #tc-table-fab-toggle:hover,
.tc-workbench-scope.tc-qc-workbench-interaction-lock #tc-switch-template-btn:hover,
.tc-workbench-scope.tc-qc-workbench-interaction-lock #tc-choose-template-btn:hover {
    transform: none;
    filter: grayscale(0.35);
    box-shadow: none;
}

body.tc-qc-workbench-interaction-lock #tc-left-input-float-wrap,
body.tc-qc-workbench-interaction-lock #tc-left-float-dock,
#tc-left-input-float-wrap.tc-qc-ai-fab-lock,
#tc-left-float-dock.tc-qc-ai-fab-lock {
    pointer-events: none !important;
}

body.tc-qc-workbench-interaction-lock #tc-left-float-dock,
body.tc-qc-workbench-interaction-lock #tc-left-float-dock .tc-left-float-dock__mode,
#tc-left-float-dock.tc-qc-ai-fab-lock,
#tc-left-float-dock.tc-qc-ai-fab-lock .tc-left-float-dock__mode {
    opacity: 0.42;
    cursor: not-allowed;
    filter: grayscale(0.35);
}

body.tc-qc-workbench-interaction-lock #tc-left-float-dock .tc-left-float-dock__mode:hover,
#tc-left-float-dock.tc-qc-ai-fab-lock .tc-left-float-dock__mode:hover {
    transform: none;
    box-shadow: none;
}

.tc-qc-interaction-locked {
    opacity: 0.42;
    cursor: not-allowed !important;
}


/* 质量检查进度：失败 / 超时顶部态（不影响步骤卡片原有样式） */
.tc-validate-progress--failed .tc-validate-progress__badge {
    color: rgb(185 28 28);
}
.tc-validate-progress--failed .tc-validate-progress__core {
    background: radial-gradient(circle at 30% 30%, #fef2f2 0%, #fecaca 45%, #fca5a5 100%);
    box-shadow: 0 0 18px rgba(239, 68, 68, 0.18);
    animation: none;
}
.tc-validate-progress--failed .tc-validate-progress__bar-fill {
    background: linear-gradient(90deg, #ef4444 0%, #f97316 100%);
    animation: none;
}
.tc-validate-progress--failed .tc-validate-progress__caption {
    color: rgb(153 27 27);
}
.tc-validate-progress--timeout .tc-validate-progress__badge {
    color: rgb(180 83 9);
}
.tc-validate-progress--timeout .tc-validate-progress__core {
    background: radial-gradient(circle at 30% 30%, #fffbeb 0%, #fde68a 45%, #fcd34d 100%);
    box-shadow: 0 0 18px rgba(245, 158, 11, 0.18);
    animation: none;
}
.tc-validate-progress--timeout .tc-validate-progress__bar-fill {
    background: linear-gradient(90deg, #f59e0b 0%, #fbbf24 100%);
    animation: none;
}
.tc-validate-progress--timeout .tc-validate-progress__caption {
    color: rgb(146 64 14);
}


/* 通过态兜底：仅打开时展示，避免关闭后伪元素残留 */
.tc-validate-drawer--clean-pass.tc-validate-drawer--open [id^="tc-validate-issue-list"]:empty::before,
.tc-validate-drawer--clean-pass:not(.hidden):not(.tc-validate-drawer--side) [id^="tc-validate-issue-list"]:empty::before {
    content: "问题已全部解决";
    display: block;
    margin: 2.5rem auto 0.5rem;
    text-align: center;
    font-size: 1.2rem;
    font-weight: 720;
    color: rgb(15 23 42);
}
.tc-validate-drawer--clean-pass.tc-validate-drawer--open [id^="tc-validate-issue-list"]:empty::after,
.tc-validate-drawer--clean-pass:not(.hidden):not(.tc-validate-drawer--side) [id^="tc-validate-issue-list"]:empty::after {
    content: "当前没有待处理问题，可继续后续流程";
    display: block;
    margin: 0 auto 2rem;
    text-align: center;
    font-size: 0.8125rem;
    color: rgb(71 85 105);
}

/* 补充用例：遗漏勾选弹窗（独立层，不影响 tc-app-dialog） */
.tc-fill-gap-picker {
    position: fixed;
    inset: 0;
    z-index: 12000;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem;
}
.tc-fill-gap-picker__scrim {
    position: absolute;
    inset: 0;
    background: rgba(15, 23, 42, 0.55);
    backdrop-filter: blur(2px);
}
.tc-fill-gap-picker__panel {
    position: relative;
    width: min(32rem, 100%);
    max-height: min(78vh, 40rem);
    display: flex;
    flex-direction: column;
    border-radius: 1rem;
    background: #fff;
    box-shadow: 0 24px 64px -12px rgba(15, 23, 42, 0.35);
    border: 1px solid rgba(148, 163, 184, 0.35);
    overflow: hidden;
}
.tc-fill-gap-picker__title {
    margin: 0;
    padding: 1.1rem 1.25rem 0.35rem;
    font-size: 1.05rem;
    font-weight: 650;
    color: rgb(15 23 42);
}
.tc-fill-gap-picker__hint {
    margin: 0;
    padding: 0 1.25rem 0.65rem;
    font-size: 0.8125rem;
    color: rgb(100 116 139);
}
.tc-fill-gap-picker__toolbar {
    display: flex;
    gap: 0.45rem;
    padding: 0 1.25rem 0.65rem;
}
.tc-fill-gap-picker__list {
    flex: 1 1 auto;
    overflow: auto;
    padding: 0.25rem 0.85rem 0.85rem;
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
}
.tc-fill-gap-picker__item {
    display: flex;
    align-items: flex-start;
    gap: 0.55rem;
    padding: 0.55rem 0.65rem;
    border-radius: 0.65rem;
    border: 1px solid rgb(226 232 240);
    background: rgb(248 250 252);
    cursor: pointer;
}
.tc-fill-gap-picker__item:hover {
    border-color: rgb(196 181 253);
    background: rgb(245 243 255);
}
.tc-fill-gap-picker__cb {
    margin-top: 0.15rem;
    flex: 0 0 auto;
}
.tc-fill-gap-picker__text {
    font-size: 0.875rem;
    line-height: 1.45;
    color: rgb(30 41 59);
    word-break: break-word;
}
.tc-fill-gap-picker__footer {
    display: flex;
    justify-content: flex-end;
    gap: 0.55rem;
    padding: 0.85rem 1.15rem;
    border-top: 1px solid rgb(226 232 240);
    background: rgb(248 250 252);
}


/* === tc_visual_attachments.css === */
/* 用例录入 — 提示词 Composer（Cursor 风格紧凑输入 + 发送） */

.tc-prompt-composer.tc-left-section {
    padding: 0;
    border: none;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
}

#left-panel .tc-prompt-composer.tc-entry-card {
    padding: 0;
    border: none;
    box-shadow: none;
    background: #ffffff;
}

#left-panel .tc-prompt-composer__box {
    border: 1px solid #e4e4e7;
    border-radius: 9999px;
    background: #ffffff;
    overflow: visible;
    transition: border-color 0.15s ease, border-radius 0.15s ease;
}

#left-panel .tc-prompt-composer__box:focus-within {
    border-color: #d4d4d8;
    background: #ffffff;
    box-shadow: none;
}

#left-panel .tc-prompt-composer__box--drag {
    border-color: #c7d2fe;
    background: rgba(99, 102, 241, 0.06);
    box-shadow: none;
}

#left-panel .tc-prompt-composer__send-btn {
    background: #e4e4e7;
    color: #a1a1aa;
    border: none;
    cursor: not-allowed;
}

#left-panel .tc-prompt-composer__send-btn--active,
#left-panel .tc-prompt-composer__send-btn:not(:disabled) {
    background: #000000;
    color: #ffffff;
    border: none;
    cursor: pointer;
}

#left-panel .tc-prompt-composer__send-btn--active:hover:not(:disabled),
#left-panel .tc-prompt-composer__send-btn:not(:disabled):hover {
    background: #000000;
    color: #ffffff;
}

#left-panel .tc-prompt-composer__send-icon {
    color: #ffffff;
    stroke: #ffffff;
}

#left-panel .tc-prompt-composer__send-btn:disabled .tc-prompt-composer__send-icon {
    stroke: #a1a1aa;
    color: #a1a1aa;
}

#left-panel .tc-prompt-composer__send-btn:not(:disabled) .tc-prompt-composer__send-icon {
    stroke: #ffffff;
    color: #ffffff;
}

#left-panel .tc-prompt-composer__send-btn--stop {
    background: #dc2626;
    color: #ffffff;
}

#left-panel .tc-prompt-composer__send-btn--stop:hover:not(:disabled) {
    background: #b91c1c;
    color: #ffffff;
}

#left-panel .tc-prompt-composer__send-btn--stop .tc-prompt-composer__send-icon--send {
    display: none;
}

#left-panel .tc-prompt-composer__send-btn--stop .tc-prompt-composer__send-icon--stop {
    display: block;
    fill: #ffffff;
}

#left-panel #tc-prompt-composer-box.tc-prompt-composer__box--multiline {
    border-radius: 10px !important;
}

.tc-prompt-composer__box:focus-within {
    border-color: #d4d4d8;
    background: #ffffff;
    box-shadow: none;
}

.tc-prompt-composer__box--drag {
    border-color: #c7d2fe;
    background: rgba(99, 102, 241, 0.06);
    box-shadow: none;
}

.tc-prompt-composer__input-wrap {
    position: relative;
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 0.25rem;
    min-height: 2rem;
    padding: 2px 4px 2px 6px;
}

#left-panel #tc-prompt-composer-box.tc-prompt-composer__box--multiline .tc-prompt-composer__input-wrap {
    align-items: flex-end;
}

.tc-prompt-composer__attachments {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    gap: 0.5rem;
    padding: 0;
    min-height: 0;
}

.tc-prompt-composer__attachments:not(:empty) {
    padding: 0.35rem 0.625rem 0.2rem;
}

.tc-prompt-composer__input {
    display: block;
    flex: 1 1 auto;
    width: 0;
    min-width: 0;
    min-height: 1rem;
    max-height: none;
    border: 0;
    border-radius: 0;
    background: transparent;
    resize: none;
    overflow-x: hidden;
    overflow-y: hidden;
    padding: 0.125rem 0.15rem 0.125rem 0.05rem;
    box-shadow: none;
    font-size: 0.6875rem;
    line-height: 1.35;
    color: #18181b;
}

#left-panel .tc-prompt-composer__box #ai-prompt.tc-prompt-composer__input,
#left-panel .tc-prompt-composer__box .tc-prompt-composer__input.tc-prompt-block__input {
    min-height: 1rem !important;
    border: none !important;
    box-shadow: none !important;
    background: transparent !important;
}

#left-panel .tc-prompt-composer__box #ai-prompt.tc-prompt-composer__input:focus,
#left-panel .tc-prompt-composer__box .tc-prompt-composer__input.tc-prompt-block__input:focus {
    border: none !important;
    box-shadow: none !important;
    outline: none !important;
}

.tc-prompt-composer__input::placeholder {
    color: #a1a1aa;
}

.tc-prompt-composer__input:focus {
    outline: none;
    box-shadow: none;
}

.tc-prompt-composer__attach-btn {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.5rem;
    height: 1.5rem;
    margin: 0;
    padding: 0;
    border: none;
    border-radius: 999px;
    background: #ececee;
    color: #71717a;
    font-size: 0.875rem;
    font-weight: 600;
    line-height: 1;
    cursor: pointer;
    transition: color 0.15s ease, background 0.15s ease, transform 0.12s ease;
}

.tc-prompt-composer__attach-plus {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 100%;
    color: inherit;
    line-height: 0;
}

.tc-prompt-composer__attach-icon {
    width: 0.8125rem;
    height: 0.8125rem;
    color: currentColor;
    stroke: currentColor;
    flex: 0 0 auto;
}

.tc-prompt-composer__attach-btn:hover:not(:disabled) {
    background: #dcdcdf;
    color: #52525b;
}

.tc-prompt-composer__attach-btn:active:not(:disabled) {
    transform: scale(0.96);
}

.tc-prompt-composer__attach-btn:disabled {
    opacity: 0.45;
    cursor: not-allowed;
}

.tc-prompt-composer__send-btn {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.5rem;
    height: 1.5rem;
    margin: 0;
    padding: 0;
    border: none;
    border-radius: 999px;
    background: #e4e4e7;
    color: #a1a1aa;
    cursor: not-allowed;
    transition: transform 0.12s ease, opacity 0.15s ease;
}

.tc-prompt-composer__send-btn--active,
.tc-prompt-composer__send-btn:not(:disabled) {
    background: #000000;
    color: #ffffff;
    cursor: pointer;
}

.tc-prompt-composer__send-btn--active:hover:not(:disabled),
.tc-prompt-composer__send-btn:not(:disabled):hover {
    background: #000000;
    color: #ffffff;
}

.tc-prompt-composer__send-btn--active:active:not(:disabled) {
    transform: scale(0.94);
}

.tc-prompt-composer__send-btn:disabled {
    opacity: 1;
}

.tc-prompt-composer__send-icon {
    width: 0.8125rem;
    height: 0.8125rem;
    color: currentColor;
    stroke: currentColor;
}

.tc-prompt-composer__send-icon--stop {
    display: none;
    stroke: none;
}

.tc-prompt-composer__send-btn--stop {
    background: #dc2626;
    color: #ffffff;
    cursor: pointer;
}

.tc-prompt-composer__send-btn--stop:hover:not(:disabled) {
    background: #b91c1c;
    color: #ffffff;
}

.tc-prompt-composer__send-btn--stop .tc-prompt-composer__send-icon--send {
    display: none;
}

.tc-prompt-composer__send-btn--stop .tc-prompt-composer__send-icon--stop {
    display: block;
}

.tc-prompt-composer__meta {
    font-size: 0.75rem;
    color: #64748b;
}

.tc-prompt-budget-bar {
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
    padding: 0.15rem 0.35rem 0;
    min-height: 0;
}

.tc-prompt-budget-bar__text {
    font-size: 0.625rem;
    line-height: 1.35;
    color: #a1a1aa;
}

.tc-prompt-budget-bar__track {
    height: 3px;
    border-radius: 999px;
    background: #ececee;
    overflow: hidden;
}

.tc-prompt-budget-bar__fill {
    height: 100%;
    width: 0%;
    border-radius: inherit;
    background: linear-gradient(90deg, #a1a1aa 0%, #71717a 100%);
    transition: width 0.15s ease, background 0.15s ease;
}

.tc-prompt-budget-bar--warn .tc-prompt-budget-bar__fill {
    background: linear-gradient(90deg, #fbbf24 0%, #f59e0b 100%);
}

.tc-prompt-budget-bar--warn .tc-prompt-budget-bar__text {
    color: #b45309;
}

.tc-prompt-budget-bar--hot .tc-prompt-budget-bar__fill {
    background: linear-gradient(90deg, #fb7185 0%, #e11d48 100%);
}

.tc-prompt-budget-bar--hot .tc-prompt-budget-bar__text {
    color: #be123c;
}

.tc-attach-card {
    position: relative;
    width: 4.5rem;
    height: 4.5rem;
    border: 1px solid #e2e8f0;
    border-radius: 0.75rem;
    overflow: hidden;
    background: #fff;
}

.tc-attach-card__img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.tc-attach-card__doc {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 100%;
    font-size: 0.65rem;
    font-weight: 600;
    color: #475569;
    background: #f1f5f9;
    text-transform: uppercase;
}

.tc-attach-card__badge {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    padding: 0.125rem 0.25rem;
    font-size: 0.625rem;
    text-align: center;
    color: #fff;
    background: rgba(15, 23, 42, 0.62);
}

.tc-attach-card__badge--error { background: rgba(220, 38, 38, 0.85); }
.tc-attach-card__badge--pending { background: rgba(99, 102, 241, 0.78); }

.tc-attach-card__remove {
    position: absolute;
    top: 0.125rem;
    right: 0.125rem;
    width: 1rem;
    height: 1rem;
    border: 0;
    border-radius: 999px;
    background: rgba(15, 23, 42, 0.72);
    color: #fff;
    font-size: 0.75rem;
    line-height: 1rem;
    cursor: pointer;
}

.hf-float-toast.hf-float-toast--above-modal {
    z-index: 10950 !important;
}

.tc-prompt-composer--attach-full .tc-prompt-composer__attach-btn {
    opacity: 0.45;
    cursor: not-allowed;
}


/* === tc_edit_attachments.css === */
/* 智能编辑 — 附件预览区（独立于智能生成，避免影响 tc-prompt-composer） */
#left-panel #drawer-edit-content #tc-edit-prompt-composer {
    display: flex !important;
    flex-direction: column;
    gap: 0.35rem;
    overflow: visible;
}

#left-panel #drawer-edit-content #tc-edit-prompt-composer-attachments {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    gap: 0.5rem;
    width: 100%;
    min-height: 0;
    overflow: visible;
    flex: 0 0 auto;
}

#left-panel #drawer-edit-content #tc-edit-prompt-composer-attachments:not(:empty) {
    padding: 0.35rem 0.625rem 0.15rem;
    min-height: 4.75rem;
}

#left-panel #drawer-edit-content #tc-edit-prompt-composer.tc-prompt-composer--has-attachments #tc-edit-prompt-composer-box {
    margin-top: 0;
}


/* === tc_entry_panel_ui.css === */
/* 用例录入弹窗 — 布局与视觉升级（仅样式，不改功能） */

#left-panel.tc-left-float-panel {
    background: rgba(255, 255, 255, 0.95);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
}

#left-panel .tc-left-float-panel__body {
    display: flex;
    flex-direction: column;
    gap: 0;
}

#left-panel .tc-entry-card {
    border: 1px solid #f1f5f9;
    border-radius: 14px;
    background: #ffffff;
    padding: 16px;
    box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
}

#left-panel .tc-entry-card__label {
    margin: 0 0 8px;
    font-size: 0.8125rem;
    font-weight: 700;
    color: #1f2937;
    letter-spacing: 0.01em;
    line-height: 1.35;
}

#left-panel .tc-entry-card__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    margin-bottom: 8px;
}

#left-panel .tc-entry-card__head .tc-entry-card__label {
    margin-bottom: 0;
}

#left-panel .tc-entry-card__body {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

/* 蓝湖输入 — Cookie / URL 并排一行，加密展示 */
#left-panel .tc-preset-lanhu--inline {
    display: flex;
    flex-wrap: wrap;
    flex-direction: row;
    align-items: stretch;
    gap: 8px;
}

#left-panel .tc-preset-lanhu--inline .tc-preset-lanhu__field {
    flex: 1 1 calc(50% - 4px);
    min-width: 0;
    grid-column: auto;
    display: flex;
    flex-direction: column;
    gap: 4px;
}

#left-panel .tc-preset-lanhu__input-shell {
    position: relative;
    display: flex;
    align-items: center;
    width: 100%;
    min-width: 0;
}

#left-panel .tc-preset-lanhu__input-shell .tc-preset-lanhu__input,
#left-panel .tc-preset-lanhu__input-shell .tc-preset-lanhu__input.form-input {
    width: 100%;
}

#left-panel .tc-preset-lanhu__reveal-btn {
    position: absolute;
    right: 0.375rem;
    top: 50%;
    transform: translateY(-50%);
    z-index: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.625rem;
    height: 1.625rem;
    margin: 0;
    padding: 0;
    border: none;
    border-radius: 6px;
    background: transparent;
    color: #9ca3af;
    cursor: pointer;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: opacity 0.15s ease, visibility 0.15s ease, color 0.15s ease, background 0.15s ease;
}

#left-panel .tc-preset-lanhu__input-shell:hover .tc-preset-lanhu__reveal-btn,
#left-panel .tc-preset-lanhu__input-shell:focus-within .tc-preset-lanhu__reveal-btn,
#left-panel .tc-preset-lanhu__reveal-btn--active,
#left-panel .tc-preset-lanhu__reveal-btn:focus-visible {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
}

#left-panel .tc-preset-lanhu__input-shell:hover .tc-preset-lanhu__input,
#left-panel .tc-preset-lanhu__input-shell:focus-within .tc-preset-lanhu__input,
#left-panel .tc-preset-lanhu__input-shell:has(.tc-preset-lanhu__reveal-btn--active) .tc-preset-lanhu__input,
#left-panel .tc-preset-lanhu__input-shell:hover .tc-preset-lanhu__input.form-input,
#left-panel .tc-preset-lanhu__input-shell:focus-within .tc-preset-lanhu__input.form-input,
#left-panel .tc-preset-lanhu__input-shell:has(.tc-preset-lanhu__reveal-btn--active) .tc-preset-lanhu__input.form-input {
    padding-right: 2.375rem !important;
}

#left-panel .tc-preset-lanhu__reveal-btn:hover {
    background: rgba(15, 23, 42, 0.06);
    color: #4b5563;
}

#left-panel .tc-preset-lanhu__reveal-btn:focus-visible {
    outline: none;
    background: rgba(99, 102, 241, 0.1);
    color: #4338ca;
    box-shadow: 0 0 0 2px rgba(99, 102, 241, 0.2);
}

#left-panel .tc-preset-lanhu__reveal-btn--active {
    color: #4338ca;
}

#left-panel .tc-preset-lanhu__reveal-icon {
    width: 1rem;
    height: 1rem;
}

#left-panel .tc-preset-lanhu__reveal-icon.hidden {
    display: none;
}

#left-panel .tc-preset-lanhu--inline .tc-preset-lanhu__input[type="text"] {
    font-family: inherit;
    letter-spacing: normal;
}

#left-panel .tc-preset-lanhu__hint {
    display: block;
    margin: 0 8px;
    font-size: 0.6875rem;
    font-weight: 500;
    line-height: 1.3;
    color: #9ca3af;
    letter-spacing: 0.01em;
}

#left-panel .tc-preset-lanhu--inline .tc-preset-lanhu__deck {
    flex: 1 1 100%;
    width: 100%;
}

#left-panel .tc-preset-lanhu__input {
    background: #f9fafb;
    border: 1px solid transparent;
    border-radius: 12px;
    padding: 12px 16px;
    font-size: 0.8125rem;
    color: #111827;
    transition: border-color 0.15s ease, box-shadow 0.15s ease, background 0.15s ease;
}

#left-panel .tc-preset-lanhu__input:hover {
    background: #f3f4f6;
}

#left-panel .tc-preset-lanhu__input:focus {
    outline: none;
    background: #ffffff;
    border-color: #e5e7eb;
    box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.12);
}

#left-panel .tc-preset-lanhu__input::placeholder {
    color: #9ca3af;
}

#left-panel .tc-preset-lanhu--inline .tc-preset-lanhu__input[type="password"] {
    font-family: inherit;
    letter-spacing: 0.08em;
}

#left-panel #tc-lanhu-tooldeck .tc-lanhu-tooldeck__status {
    font-size: 0.6875rem;
    color: #6b7280;
}

/* 生成模式 — 胶囊切换器 */
/* 生成模式 — 顶部 Tab 胶囊切换器 */
#left-panel #tc-drawer-tabs-root {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    width: 100%;
}

#left-panel #tc-drawer-tabs-root #drawer-tabs {
    flex: 1 1 auto;
    min-width: 0;
}

#left-panel .tc-wb-head-actions {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    flex-shrink: 0;
    margin-right: 6px;
}

#left-panel .tc-wb-history-wrap {
    position: relative;
}

#left-panel .tc-wb-history-toggle--open {
    border-color: rgba(99, 102, 241, 0.35);
    background: #eef2ff;
    color: #4338ca;
}

#left-panel .tc-wb-new-chat-btn:hover {
    border-color: rgba(99, 102, 241, 0.35);
    background: #eef2ff;
    color: #4338ca;
}

#left-panel .tc-wb-new-chat-btn:focus-visible {
    outline: none;
    border-color: rgba(99, 102, 241, 0.45);
    box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.12);
}

#left-panel .tc-session-nav-btn--locked,
#left-panel .tc-session-nav-btn--locked:hover,
#left-panel .tc-session-nav-btn--locked:focus-visible {
    opacity: 0.48;
    cursor: not-allowed;
    pointer-events: none;
    box-shadow: none;
}

#left-panel .tc-wb-history-panel {
    position: absolute;
    top: calc(100% + 6px);
    right: 0;
    z-index: 60;
    width: min(280px, calc(100vw - 24px));
    max-height: 320px;
    display: flex;
    flex-direction: column;
    border: 1px solid #e5e7eb;
    border-radius: 10px;
    background: #fff;
    box-shadow: 0 12px 32px -12px rgba(15, 23, 42, 0.28);
    overflow: hidden;
}

#left-panel .tc-wb-history-panel.hidden {
    display: none;
}

#left-panel .tc-wb-history-panel__head {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 8px 10px;
    border-bottom: 1px solid #f1f5f9;
    background: #f8fafc;
}

#left-panel .tc-wb-history-panel__title {
    flex: 1;
    font-size: 0.75rem;
    font-weight: 700;
    color: #334155;
    min-width: 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

#left-panel .tc-wb-history-panel__hint {
    font-size: 0.625rem;
    color: #94a3b8;
    white-space: nowrap;
}

#left-panel .tc-wb-history-panel__new,
#left-panel .tc-wb-history-panel__close {
    border: none;
    background: transparent;
    cursor: pointer;
    font-size: 0.75rem;
    color: #6366f1;
    padding: 2px 6px;
    border-radius: 6px;
}

#left-panel .tc-wb-history-panel__close {
    font-size: 1rem;
    line-height: 1;
    color: #64748b;
}

#left-panel .tc-wb-history-panel__new:hover,
#left-panel .tc-wb-history-panel__close:hover {
    background: #eef2ff;
}

#left-panel .tc-wb-history-list {
    list-style: none;
    margin: 0;
    padding: 6px;
    overflow-y: auto;
}

#left-panel .tc-wb-history-list__item {
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding: 8px 10px;
    border-radius: 8px;
    cursor: pointer;
    transition: background 0.15s ease;
}

#left-panel .tc-wb-history-list__item:hover {
    background: #f8fafc;
}

#left-panel .tc-wb-history-list__item--active {
    background: #eef2ff;
}

#left-panel .tc-wb-history-list__title {
    font-size: 0.8125rem;
    font-weight: 600;
    color: #1e293b;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

#left-panel .tc-wb-history-list__meta {
    font-size: 0.6875rem;
    color: #64748b;
}

#left-panel .tc-wb-history-list__empty {
    padding: 16px 10px;
    text-align: center;
    font-size: 0.75rem;
    color: #94a3b8;
}

.tc-wb-session-limit-banner {
    position: fixed;
    top: 16px;
    left: 50%;
    transform: translateX(-50%);
    z-index: 13050;
    display: flex;
    align-items: center;
    gap: 10px;
    max-width: min(560px, calc(100vw - 32px));
    padding: 10px 14px;
    border-radius: 10px;
    border: 1px solid #fcd34d;
    background: #fffbeb;
    color: #92400e;
    font-size: 0.8125rem;
    line-height: 1.45;
    box-shadow: 0 10px 28px -8px rgba(146, 64, 14, 0.28);
    pointer-events: auto;
}

.tc-wb-session-limit-banner.hidden {
    display: none;
}

.tc-wb-session-limit-banner__text {
    flex: 1;
    min-width: 0;
}

.tc-wb-session-limit-banner__close {
    flex-shrink: 0;
    border: none;
    background: transparent;
    color: #b45309;
    font-size: 1.125rem;
    line-height: 1;
    cursor: pointer;
    padding: 2px 6px;
    border-radius: 6px;
}

.tc-wb-session-limit-banner__close:hover {
    background: rgba(251, 191, 36, 0.25);
}

#left-panel .tc-wb-history-list__item-row {
    display: flex;
    align-items: center;
    gap: 4px;
    width: 100%;
}

#left-panel .tc-wb-history-list__item-main {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 2px;
}

#left-panel .tc-wb-history-list__rename,
#left-panel .tc-wb-history-list__delete {
    flex-shrink: 0;
    border: none;
    background: transparent;
    color: #94a3b8;
    font-size: 0.6875rem;
    padding: 4px 6px;
    border-radius: 6px;
    cursor: pointer;
    opacity: 0;
    transition: opacity 0.15s ease, background 0.15s ease, color 0.15s ease;
}

#left-panel .tc-wb-history-list__item:hover .tc-wb-history-list__rename,
#left-panel .tc-wb-history-list__item:hover .tc-wb-history-list__delete,
#left-panel .tc-wb-history-list__rename:focus-visible,
#left-panel .tc-wb-history-list__delete:focus-visible {
    opacity: 1;
}

#left-panel .tc-wb-history-list__rename:hover {
    background: #eef2ff;
    color: #4338ca;
}

#left-panel .tc-wb-history-list__title-input {
    width: 100%;
    box-sizing: border-box;
    padding: 2px 6px;
    border: 1px solid #c7d2fe;
    border-radius: 6px;
    font-size: 0.8125rem;
    font-weight: 600;
    color: #1e293b;
    background: #fff;
}

#left-panel .tc-wb-history-list__delete {
    background: #fef2f2;
    color: #dc2626;
}

#left-panel .tc-lanhu-section-toggle {
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 4px;
    margin-right: 6px;
    padding: 6px 10px;
    border: 1px solid #e5e7eb;
    border-radius: 8px;
    background: #f9fafb;
    font-size: 0.75rem;
    font-weight: 600;
    line-height: 1.2;
    color: #475569;
    cursor: pointer;
    white-space: nowrap;
    transition: border-color 0.15s ease, background 0.15s ease, color 0.15s ease, box-shadow 0.15s ease;
}

#left-panel .tc-lanhu-section-toggle:hover {
    background: #f3f4f6;
    border-color: #d1d5db;
    color: #374151;
}

#left-panel .tc-lanhu-section-toggle:focus-visible {
    outline: none;
    border-color: rgba(99, 102, 241, 0.45);
    box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.12);
}

#left-panel .tc-lanhu-section-toggle__icon {
    width: 0.875rem;
    height: 0.875rem;
    flex-shrink: 0;
    transition: transform 0.2s ease;
}

#left-panel .tc-lanhu-section-toggle--collapsed .tc-lanhu-section-toggle__icon {
    transform: rotate(-90deg);
}

#left-panel #ai-config-mode-root.tc-lanhu-section--collapsed {
    display: none;
}

#left-panel #drawer-tabs.tc-drawer-mode-nav.tc-entry-gen-mode__seg {
    position: relative;
    display: flex;
    flex: 0 1 auto;
    width: auto;
    min-width: 0;
    height: auto;
    min-height: 0;
    padding: 0 0.15rem;
    gap: 1.75rem;
    align-items: flex-end;
    justify-content: flex-start;
    border: none !important;
    border-bottom: 1px solid #e2e8f0;
    border-radius: 0;
    background: transparent !important;
    box-shadow: none !important;
}

#left-panel #drawer-tabs.tc-drawer-mode-nav.tc-entry-gen-mode__seg::before {
    display: none;
    content: none;
}

#left-panel #drawer-tabs.tc-drawer-mode-nav.tc-entry-gen-mode__seg .tc-gen-mode-btn {
    position: relative;
    z-index: 1;
    flex: 0 0 auto;
    width: auto;
    height: auto;
    min-height: 2.25rem;
    margin: 0;
    padding: 0.45rem 0.15rem 0.55rem;
    border: none !important;
    border-radius: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
    font-size: 0.875rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    line-height: 1.25;
    color: #64748b;
    transition: color 0.2s ease;
}

#left-panel .tc-entry-gen-mode__seg-wrap {
    width: 100%;
    justify-content: stretch;
    margin-bottom: 12px;
}

#left-panel #tc-gen-mode-toolbar {
    width: 100%;
    margin: 0;
}

#left-panel #drawer-tabs.tc-drawer-mode-nav .tc-gen-mode-btn:hover:not(.tc-gen-mode-btn--active):not(.tc-mode-nav__btn--active):not(:disabled),
#left-panel #drawer-tabs.tc-drawer-mode-nav .tc-drawer-tab:hover:not(.tc-gen-mode-btn--active):not(.tc-mode-nav__btn--active):not(:disabled) {
    color: #6366f1;
    -webkit-text-fill-color: #6366f1;
    background-color: transparent !important;
    background-image: none !important;
    -webkit-background-clip: border-box;
    background-clip: border-box;
}

#left-panel #drawer-tabs.tc-drawer-mode-nav .tc-gen-mode-btn--active,
#left-panel #drawer-tabs.tc-drawer-mode-nav .tc-drawer-tab.tc-mode-nav__btn--active,
#left-panel #drawer-tabs.tc-drawer-mode-nav .tc-mode-nav__btn--active,
#left-panel #drawer-tabs.tc-drawer-mode-nav .tc-gen-mode-btn--active:hover,
#left-panel #drawer-tabs.tc-drawer-mode-nav .tc-drawer-tab.tc-mode-nav__btn--active:hover,
#left-panel #drawer-tabs.tc-drawer-mode-nav .tc-mode-nav__btn--active:hover {
    color: transparent !important;
    background-color: transparent !important;
    background-image: linear-gradient(90deg, #6366f1 0%, #8b5cf6 50%, #ec4899 100%) !important;
    -webkit-background-clip: text !important;
    background-clip: text !important;
    -webkit-text-fill-color: transparent !important;
    box-shadow: none !important;
}

#left-panel #drawer-tabs.tc-drawer-mode-nav .tc-gen-mode-btn--active::after,
#left-panel #drawer-tabs.tc-drawer-mode-nav .tc-drawer-tab.tc-mode-nav__btn--active::after,
#left-panel #drawer-tabs.tc-drawer-mode-nav .tc-mode-nav__btn--active::after {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    bottom: -1px;
    height: 3px;
    border-radius: 999px 999px 0 0;
    background: linear-gradient(90deg, #6366f1 0%, #8b5cf6 48%, #ec4899 100%);
    pointer-events: none;
}

#left-panel #tc-ai-entry-head {
    display: flex;
    flex-wrap: nowrap;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    margin-bottom: 8px;
}

#left-panel #tc-entry-head-actions {
    flex: 1 1 auto;
    display: flex;
    justify-content: flex-end;
    align-items: center;
    min-width: 0;
    margin-right: 6px;
}

#left-panel #tc-entry-head-actions #tc-gen-options-row {
    width: auto;
    flex-wrap: nowrap;
    justify-content: flex-end;
    gap: 8px;
}

#left-panel #tc-entry-head-actions .tc-gen-option-item {
    flex: 0 0 auto;
}

#tc-gen-batch-validate-btn {
    display: none !important;
}

#table-toolbar .tc-right-panel-head #tc-gen-options-row {
    display: inline-flex;
    flex-wrap: nowrap;
    align-items: center;
    gap: 0.35rem;
    min-width: 0;
}

#table-toolbar .tc-right-panel-head .tc-gen-option-item {
    display: inline-flex;
    flex: 0 0 auto;
    align-items: center;
    gap: 0.2rem;
}

#table-toolbar #tc-gen-validate-option-item {
    display: inline-flex !important;
}

body.tc-workbench-gen-mode-agent #table-toolbar #tc-gen-validate-option-item {
    display: none !important;
}

#left-panel .tc-gen-toggle-btn {
    border-radius: 8px;
    border-color: #e5e7eb;
    background: #f9fafb;
    color: #374151;
}

#left-panel .tc-gen-toggle-btn--on {
    border-color: rgba(99, 102, 241, 0.35);
    background: #eef2ff;
    color: #4338ca;
}

/* 执行区 */
#left-panel .tc-entry-card--execute {
    padding-bottom: 12px;
}

#left-panel .tc-entry-execute__body {
    gap: 10px;
}

#left-panel #tc-ai-generate-actions.tc-entry-card--execute {
    display: flex;
    flex-direction: column;
    border: 1px solid #f1f5f9;
    border-radius: 14px;
    background: #ffffff;
    padding: 16px;
}


/* 紧凑模式：隐藏底部执行区，Enter / 发送触发生成（含 Agent 规划） */
body.tc-left-gen-compact #tc-ai-generate-actions {
    display: none !important;
}


body.tc-left-gen-compact--mindmap #drawer-tabs.tc-entry-gen-mode__seg::before {
    display: none;
}

body.tc-left-gen-compact--mindmap #drawer-tabs.tc-entry-gen-mode__seg .tc-gen-mode-btn {
    flex: 1 1 100%;
    cursor: default;
}

body.tc-left-gen-compact #tc-prompt-composer {
    margin-bottom: 0;
}

/* 抽屉内容：蓝湖区可滚动，输入区 + 执行区固定底部 */
#left-panel .tc-left-float-panel__scroll {
    display: flex;
    flex-direction: column;
}

#left-panel .tc-left-float-panel__body.tc-left-panel {
    flex: 1 1 auto;
    min-height: 100%;
}

#left-panel #left-content-wrapper {
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

#left-panel #drawer-1-content.tc-drawer-1-layout,
#left-panel #drawer-edit-content.tc-drawer-edit-layout {
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
    min-height: 0;
    gap: 0;
}

#left-panel .tc-drawer-1-main {
    flex: 1 1 auto;
    min-height: 0;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    gap: 0;
}

#left-panel .tc-gen-instruction-zone {
    position: relative;
    flex: 1 1 auto;
    min-height: clamp(11.5rem, 44vh, 20rem);
    display: flex;
    flex-direction: column;
    overflow: hidden;
    border: 1px solid #e8edf3;
    border-radius: 12px;
    background: #ffffff;
}

#left-panel .tc-gen-instruction-body {
    position: relative;
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

#left-panel #ai-config-mode-root.tc-gen-lanhu-overlay:not(.tc-lanhu-section--collapsed) {
    position: absolute;
    inset: 0;
    z-index: 24;
    margin: 0 !important;
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior: contain;
    border: none;
    border-radius: 12px 12px 0 0;
    box-shadow: 0 16px 40px -12px rgba(15, 23, 42, 0.18);
    background: #ffffff;
}

/* 有对话时：蓝湖只占上方浮层，下方对话区仍可见（不被白底整屏盖住） */
#left-panel .tc-gen-instruction-zone--lanhu-over-chat #ai-config-mode-root.tc-gen-lanhu-overlay:not(.tc-lanhu-section--collapsed) {
    inset: auto;
    top: 0;
    left: 0;
    right: 0;
    bottom: auto;
    max-height: min(56%, 17.5rem);
    box-shadow: 0 10px 28px -8px rgba(15, 23, 42, 0.2);
}

#left-panel #ai-config-mode-root.tc-gen-lanhu-overlay.tc-lanhu-section--collapsed {
    display: none;
}

#left-panel #ai-config-mode-root {
    flex: 0 0 auto;
}

#left-panel .tc-gen-chat-panel {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
    position: relative;
    border-radius: 0;
    background: #ffffff;
    border: none;
    border-bottom: none;
}

#left-panel .tc-gen-instruction-zone.tc-gen-lanhu-open .tc-gen-instruction-body {
    flex: 1 1 auto;
    min-height: 6.5rem;
}

/* 蓝湖展开时：对话区保留在 overlay 下层；有对话内容时下方仍可见可滚动 */
#left-panel .tc-gen-instruction-zone.tc-gen-lanhu-open .tc-gen-chat-panel {
    flex: 1 1 auto;
    min-height: 6.5rem;
    z-index: 1;
}

#left-panel .tc-gen-instruction-zone--lanhu-over-chat .tc-gen-chat-panel {
    min-height: 6.5rem;
    pointer-events: auto;
    position: relative;
    z-index: 2;
}

/* 有对话时：蓝湖 overlay 空白区穿透，让下方对话区可接收点击（表单控件仍可交互） */
#left-panel .tc-gen-instruction-zone--lanhu-over-chat #ai-config-mode-root.tc-gen-lanhu-overlay:not(.tc-lanhu-section--collapsed) {
    pointer-events: none;
}

#left-panel .tc-gen-instruction-zone--lanhu-over-chat #ai-config-mode-root.tc-gen-lanhu-overlay:not(.tc-lanhu-section--collapsed) :is(
    input,
    textarea,
    select,
    button,
    a,
    label,
    [role="button"],
    [contenteditable="true"]
) {
    pointer-events: auto;
}

#left-panel .tc-gen-instruction-zone.tc-gen-lanhu-open:not(.tc-gen-instruction-zone--lanhu-over-chat) .tc-gen-chat-panel .tc-gen-chat-thread {
    pointer-events: none;
}

#left-panel .tc-gen-instruction-zone--lanhu-over-chat .tc-gen-chat-panel .tc-gen-chat-thread {
    pointer-events: auto;
}

#left-panel .tc-gen-instruction-zone:not(.tc-gen-lanhu-open) .tc-gen-chat-panel .tc-gen-chat-thread {
    pointer-events: auto;
}

#left-panel .tc-gen-chat-panel:not(.tc-gen-chat-panel--has-messages) {
    flex: 0 1 auto;
    min-height: 0;
}

#left-panel .tc-gen-chat-panel--has-messages {
    min-height: 6.5rem;
}

#left-panel .tc-gen-chat-thread {
    flex: 1 1 auto;
    min-height: 0;
    overflow: hidden;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0;
    overscroll-behavior: contain;
}

/* React 对话区：由内部 .tc-gen-chat-x-scroll 承担滚动，避免与 thread 双层滚动冲突 */
#left-panel .tc-gen-chat-thread .tc-gen-chat-x-mount {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
    height: auto;
}

#left-panel .tc-gen-chat-msg {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 0.3rem;
    max-width: 100%;
}

#left-panel .tc-gen-chat-msg__bubble {
    max-width: min(100%, 28rem);
    padding: 0.65rem 0.85rem;
    border-radius: 14px 14px 4px 14px;
    background: #f1f5f9;
    border: 1px solid #e2e8f0;
    color: #1e293b;
    font-size: 0.8125rem;
    line-height: 1.55;
    word-break: break-word;
    white-space: pre-wrap;
}

#left-panel .tc-gen-chat-msg__meta {
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    padding-right: 0.15rem;
    font-size: 0.6875rem;
    line-height: 1;
    color: #94a3b8;
}

#left-panel .tc-gen-chat-msg__mode {
    font-weight: 500;
    color: #64748b;
}

#left-panel .tc-gen-chat-msg__time {
    font-variant-numeric: tabular-nums;
}

#left-panel .tc-gen-chat-msg--progress {
    align-items: flex-start;
}

#left-panel .tc-gen-chat-msg--progress .tc-gen-chat-msg__bubble--progress {
    max-width: min(100%, 30rem);
    border-radius: 14px 14px 14px 4px;
    background: #eef2ff;
    border-color: #c7d2fe;
    color: #312e81;
}

#left-panel .tc-gen-chat-msg--progress-done .tc-gen-chat-msg__bubble--progress {
    background: #ecfdf5;
    border-color: #a7f3d0;
    color: #065f46;
}

#left-panel .tc-gen-chat-msg--progress-error .tc-gen-chat-msg__bubble--progress,
#left-panel .tc-gen-chat-msg--progress-cancelled .tc-gen-chat-msg__bubble--progress {
    background: #f8fafc;
    border-color: #cbd5e1;
    color: #475569;
}

#left-panel .tc-gen-chat-progress__step {
    margin: 0;
    font-size: 0.8125rem;
    font-weight: 600;
    line-height: 1.45;
}

#left-panel .tc-gen-chat-progress__step--loading::after {
    content: '…';
    display: inline-block;
    width: 0.85rem;
    margin-left: 0.05rem;
    animation: tc-gen-chat-progress-dots 1.2s steps(4, end) infinite;
}

@keyframes tc-gen-chat-progress-dots {
    0% { opacity: 0.35; }
    50% { opacity: 1; }
    100% { opacity: 0.35; }
}

#left-panel .tc-gen-chat-progress__detail {
    margin: 0.35rem 0 0;
    font-size: 0.75rem;
    line-height: 1.45;
    color: #4338ca;
    font-variant-numeric: tabular-nums;
}

#left-panel .tc-gen-chat-msg--progress-done .tc-gen-chat-progress__detail {
    color: #047857;
}

#left-panel .tc-gen-chat-msg--progress-error .tc-gen-chat-progress__detail,
#left-panel .tc-gen-chat-msg--progress-cancelled .tc-gen-chat-progress__detail {
    color: #64748b;
}

#left-panel .tc-gen-chat-progress__detail.hidden {
    display: none !important;
}

#left-panel .tc-gen-chat-progress__cancel {
    margin-top: 0.55rem;
    padding: 0.3rem 0.75rem;
    font-size: 0.6875rem;
    font-weight: 500;
    line-height: 1.2;
    color: #4338ca;
    background: transparent;
    border: 1px solid #a5b4fc;
    border-radius: 8px;
    cursor: pointer;
}

#left-panel .tc-gen-chat-progress__cancel:hover {
    color: #3730a3;
    border-color: #818cf8;
    background: rgb(99 102 241 / 0.06);
}

#left-panel .tc-gen-chat-progress__cancel.hidden {
    display: none !important;
}

#left-panel .tc-drawer-1-footer {
    flex: 0 0 auto;
    position: relative;
    z-index: 26;
    display: flex;
    flex-direction: column;
    gap: 0.65rem;
    margin-top: auto;
    padding: 0.65rem 0.85rem 0.85rem;
    background: #ffffff;
    border: none;
    border-top: 1px solid #f1f5f9;
    border-radius: 0;
}

#left-panel .tc-drawer-1-footer #tc-prompt-composer {
    margin-bottom: 0;
}

#left-panel .tc-drawer-1-footer #tc-ai-generate-actions {
    margin-bottom: 0;
}

body.tc-left-gen-compact #left-panel .tc-left-float-panel__scroll {
    padding-bottom: 8px;
}

/* 工作台初始化完成前隐藏 AI 悬浮按钮，避免先闪 FAB 再展开用例生成弹窗 */
body:not(.tc-left-gen-ui-ready) #tc-left-input-float-wrap {
    visibility: hidden !important;
    pointer-events: none !important;
}

/* 首次进入：禁用过渡，避免弹窗尺寸/透明度闪动 */
body:not(.tc-left-gen-ui-ready) #left-panel.tc-left-float-panel,
body:not(.tc-left-gen-ui-ready) #left-panel #left-content-wrapper,
body:not(.tc-left-gen-ui-ready) #tc-left-float-backdrop {
    transition: none !important;
}

#left-panel #tc-generate-preset-wrap .btn-primary {
    border: none;
    border-radius: 10px;
    background: linear-gradient(135deg, #6366f1 0%, #a855f7 100%);
    box-shadow: 0 4px 14px rgba(99, 102, 241, 0.28);
    font-weight: 600;
}

#left-panel #tc-generate-preset-wrap .btn-primary:hover {
    filter: brightness(1.04);
    box-shadow: 0 6px 18px rgba(99, 102, 241, 0.34);
}

#left-panel #tc-generate-preset-wrap .btn-mindmap {
    border-radius: 10px;
    font-weight: 600;
}

#left-panel .tc-entry-execute__text-btn {
    border: none !important;
    background: transparent !important;
    box-shadow: none !important;
    color: #6b7280 !important;
    font-weight: 600;
    padding-left: 0.75rem;
    padding-right: 0.75rem;
}

#left-panel .tc-entry-execute__text-btn:hover {
    color: #6366f1 !important;
    background: rgba(99, 102, 241, 0.06) !important;
}

#left-panel #tc-single-generate-actions {
    width: 100%;
}

#left-panel #tc-ai-form-actions-wrap {
    margin-left: auto;
    align-self: flex-end;
}

/* 智能编辑 Tab — 样式与智能生成 Tab 统一（渐变下划线，见 #drawer-tabs.tc-drawer-mode-nav） */

/* 智能编辑 — 会话区（独立样式，参考生成区圆角白底容器） */
#left-panel #drawer-edit-content .tc-edit-instruction-zone {
    position: relative;
    flex: 1 1 auto;
    min-height: clamp(11.5rem, 44vh, 20rem);
    display: flex;
    flex-direction: column;
    overflow: hidden;
    border: 1px solid #e8edf3;
    border-radius: 12px;
    background: #ffffff;
}
#left-panel #drawer-edit-content .tc-edit-instruction-body {
    position: relative;
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    background: #ffffff;
}

/* 智能编辑面板 */
#drawer-edit-content.tc-drawer-edit-layout {
    display: flex;
    flex-direction: column;
    min-height: 0;
    flex: 1 1 auto;
}
#drawer-edit-content.hidden {
    display: none !important;
}

#left-panel #drawer-edit-content .tc-edit-chat-panel {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
    position: relative;
    border-radius: 0;
    background: transparent;
    border: none;
}
#left-panel #drawer-edit-content .tc-edit-chat-panel:not(.tc-edit-chat-panel--has-messages) {
    min-height: 0;
}
#left-panel #drawer-edit-content .tc-edit-chat-panel--has-messages {
    min-height: 6rem;
}
#left-panel #drawer-edit-content .tc-edit-chat-thread {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    padding: 0.5rem 0.65rem;
    display: flex;
    flex-direction: column;
    gap: 8px;
}
#left-panel .tc-edit-chat-msg {
    display: flex;
    flex-direction: column;
    gap: 4px;
    max-width: 100%;
}
#left-panel .tc-edit-chat-msg__bubble {
    padding: 8px 10px;
    border-radius: 10px;
    font-size: 13px;
    line-height: 1.5;
    word-break: break-word;
    background: #ffffff;
    border: 1px solid #d1d5db;
    color: #1e293b;
}
#left-panel .tc-edit-chat-msg--user .tc-edit-chat-msg__bubble {
    background: #ffffff;
    border-color: #d1d5db;
}
#left-panel .tc-edit-chat-msg__status {
    padding: 0 2px;
    font-size: 0.6875rem;
    line-height: 1.35;
    color: #94a3b8;
}
#left-panel .tc-edit-chat-msg__status--done {
    color: #64748b;
}
#left-panel .tc-edit-chat-msg__status--info {
    color: #94a3b8;
}
#left-panel .tc-edit-chat-msg__status--cancelled {
    color: #94a3b8;
}
#left-panel .tc-edit-chat-msg__status--error {
    color: #b91c1c;
}
#left-panel .tc-edit-chat-msg--assistant .tc-edit-chat-msg__bubble {
    background: #ffffff;
    border-color: #d1d5db;
}
#left-panel .tc-edit-chat-msg--thinking .tc-edit-chat-msg__bubble {
    background: #ffffff;
    border-color: #d1d5db;
    color: #64748b;
    font-size: 12px;
    line-height: 1.55;
    max-height: 12rem;
    overflow-y: auto;
    white-space: pre-wrap;
}
#left-panel .tc-edit-chat-msg--error .tc-edit-chat-msg__bubble,
#left-panel .tc-edit-chat-msg--assistant.tc-edit-chat-msg--error .tc-edit-chat-msg__bubble {
    background: #fef2f2;
    border-color: #fecaca;
    color: #991b1b;
}
#left-panel .tc-edit-actions-row {
    display: flex;
    justify-content: flex-end;
    padding: 0.25rem 0 0;
}
#left-panel .tc-edit-undo-btn {
    font-size: 12px;
    color: #6d28d9;
    padding: 4px 10px;
    border: 1px solid rgba(109, 40, 217, 0.25);
    border-radius: 8px;
    background: #faf5ff;
    cursor: pointer;
}
#left-panel .tc-edit-undo-btn:disabled {
    opacity: 0.45;
    cursor: not-allowed;
}
body.tc-workbench-mode-edit #ai-config-mode-root {
    display: none !important;
}
body.tc-workbench-mode-edit #tc-gen-instruction-zone .tc-gen-chat-panel {
    display: none !important;
}
body.tc-workbench-mode-edit #tc-prompt-composer {
    display: none !important;
}
tr.tc-row--ai-edited {
    animation: tc-row-ai-edited-flash 2.5s ease-out;
}
@keyframes tc-row-ai-edited-flash {
    0% { background-color: rgba(167, 139, 250, 0.35); }
    100% { background-color: transparent; }
}


body.tc-workbench-mode-edit #tc-lanhu-section-toggle {
    display: none !important;
}

#left-panel #left-content-wrapper {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-height: 0;
}
#left-panel #drawer-edit-content .tc-drawer-1-footer {
    flex: 0 0 auto;
    position: relative;
    z-index: 26;
    display: flex;
    flex-direction: column;
    gap: 0.65rem;
    margin-top: auto;
    padding: 0.65rem 0.85rem 0.85rem;
    background: #ffffff;
    border: none;
    border-top: 1px solid #f1f5f9;
    border-radius: 0;
}
#left-panel #drawer-edit-content #tc-edit-prompt-composer.tc-entry-card,
#left-panel #drawer-edit-content #tc-edit-prompt-composer.tc-left-section {
    padding: 0;
    margin: 0;
    border: none;
    border-radius: 0;
    box-shadow: none;
    background: transparent;
}
#left-panel #drawer-edit-content #tc-edit-prompt-composer {
    margin-bottom: 0;
}
body.tc-workbench-mode-edit #tc-edit-prompt-composer {
    display: block !important;
}
/* 智能编辑输入框尺寸 — 与智能生成 Composer 一致（覆盖 toolkit 默认 min-height） */
#left-panel #drawer-edit-content #tc-edit-prompt-composer-box #ai-edit-prompt.tc-prompt-composer__input,
#left-panel #drawer-edit-content #tc-edit-prompt-composer-box .tc-prompt-composer__input.tc-prompt-block__input {
    min-height: 1rem !important;
    border: none !important;
    box-shadow: none !important;
    background: transparent !important;
}
#left-panel #drawer-edit-content #tc-edit-prompt-composer-box #ai-edit-prompt.tc-prompt-composer__input:focus,
#left-panel #drawer-edit-content #tc-edit-prompt-composer-box .tc-prompt-composer__input.tc-prompt-block__input:focus {
    border: none !important;
    box-shadow: none !important;
    outline: none !important;
}
#left-panel #drawer-edit-content #tc-edit-prompt-composer-box.tc-prompt-composer__box--multiline {
    border-radius: 10px !important;
}

/* 智能编辑浮窗 — 顶栏与内容区样式（仅 #left-panel.tc-left-float-panel，不影响侧栏嵌入模式） */
#left-panel.tc-left-float-panel .tc-left-float-panel__title {
    display: flex;
    align-items: center;
    gap: 0.45rem;
    font-size: 0.9375rem;
    font-weight: 700;
    letter-spacing: 0.01em;
    text-transform: none;
    color: #4338ca;
}
#left-panel.tc-left-float-panel .tc-left-float-panel__title::before {
    content: '';
    flex-shrink: 0;
    width: 0.45rem;
    height: 0.45rem;
    border-radius: 999px;
    background: linear-gradient(135deg, #6366f1 0%, #a855f7 55%, #ec4899 100%);
    box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.12);
}
#left-panel.tc-left-float-panel .tc-left-float-panel__head {
    padding: 0.7rem 0.85rem 0.55rem;
    border-bottom: 1px solid #e8edf3;
    background: linear-gradient(180deg, #f8fafc 0%, #ffffff 100%);
}
#left-panel.tc-left-float-panel .tc-drawer-mode-nav__solo {
    display: none !important;
}
#left-panel.tc-left-float-panel #tc-drawer-tabs-root.tc-left-panel__head--mode {
    margin-bottom: 0.4rem;
    padding: 0 0 0.35rem;
    border-bottom: 1px solid #eef2f7;
}
#left-panel.tc-left-float-panel #tc-drawer-tabs-root {
    justify-content: flex-end;
}
#left-panel.tc-left-float-panel #drawer-edit-content .tc-edit-instruction-zone {
    border-color: #e2e8f0;
    border-radius: 14px;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.85);
}
#left-panel.tc-left-float-panel #drawer-edit-content .tc-drawer-1-footer {
    padding: 0.45rem 0.65rem 0.55rem;
    border-top: 1px solid #f1f5f9;
    background: linear-gradient(180deg, #fafbfc 0%, #ffffff 100%);
    border-radius: 0 0 14px 14px;
}
#left-panel.tc-left-float-panel .tc-edit-undo-btn:not(:disabled):hover {
    background: #f3e8ff;
    border-color: rgba(109, 40, 217, 0.35);
}
/* 智能编辑发送区置于浮窗 resize 手柄之上，避免点击被拦截 */
#left-panel.tc-left-float-panel .tc-left-float-panel__scroll {
    position: relative;
    z-index: 5;
}
#left-panel.tc-left-float-panel #drawer-edit-content .tc-drawer-1-footer,
#left-panel.tc-left-float-panel #tc-edit-prompt-composer,
#left-panel.tc-left-float-panel #tc-edit-send-btn {
    position: relative;
    z-index: 6;
}

/* 智能编辑对话 — 用户消息内附件预览（DeepSeek 风格，仅 tc-edit-chat） */
#left-panel .tc-edit-chat-msg--user.tc-edit-chat-msg--with-attachments {
    align-items: flex-end;
}

#left-panel .tc-edit-chat-msg--user.tc-edit-chat-msg--with-attachments .tc-edit-chat-msg__bubble {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    max-width: min(100%, 22rem);
    padding: 0.625rem 0.75rem;
    background: #2b2f36;
    border: 1px solid #3a3f47;
    color: #f3f4f6;
}

#left-panel .tc-edit-chat-msg__attachments {
    display: flex;
    flex-wrap: wrap;
    gap: 0.375rem;
    width: 100%;
}

#left-panel .tc-edit-chat-msg__attach-item {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    width: 4.5rem;
    min-width: 4.5rem;
    border-radius: 0.5rem;
    overflow: hidden;
    background: rgba(255, 255, 255, 0.08);
    border: 1px solid rgba(255, 255, 255, 0.12);
}

#left-panel .tc-edit-chat-msg__attach-img {
    display: block;
    width: 100%;
    height: 3.25rem;
    object-fit: cover;
    background: #1f2329;
}

#left-panel .tc-edit-chat-msg__attach-doc {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 3.25rem;
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.04em;
    color: #e5e7eb;
    background: linear-gradient(145deg, #374151 0%, #1f2937 100%);
}

#left-panel .tc-edit-chat-msg__attach-name {
    padding: 0.2rem 0.35rem 0.3rem;
    font-size: 0.625rem;
    line-height: 1.25;
    color: #cbd5e1;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

#left-panel .tc-edit-chat-msg--user.tc-edit-chat-msg--with-attachments .tc-edit-chat-msg__text {
    font-size: 13px;
    line-height: 1.55;
    word-break: break-word;
    color: #f9fafb;
}


#left-panel .tc-edit-chat-msg__attach-item--expired {
    opacity: 0.72;
    border-style: dashed;
    background: rgba(148, 163, 184, 0.12);
}

#left-panel .tc-edit-chat-msg__attach-expired {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 52px;
    padding: 8px 6px;
    font-size: 11px;
    line-height: 1.35;
    text-align: center;
    color: #94a3b8;
}

#left-panel .tc-edit-chat-msg__attach-item--expired .tc-edit-chat-msg__attach-doc {
    opacity: 0.55;
}


/* === tc_gen_stage_ui.css === */
/* ============================================================
   TestHub — 生成阶段 UI 增强（生成过程可视化）
   独立样式文件，不影响现有功能
   ============================================================ */

/* ----- 批次条升级为生成进度横幅 ----- */
.tc-gen-stage-bar {
    display: flex;
    flex-direction: row;
    align-items: center;
    flex-wrap: nowrap;
    gap: 0.65rem;
    margin: 0.25rem 0 0.25rem;
    padding: 0.38rem 0.65rem 0.38rem 0.6rem;
    border-radius: 0.625rem;
    border: 1px solid rgb(199 210 254);
    background: linear-gradient(135deg, rgb(238 242 255), rgb(240 249 255));
    box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
    transition: border-color 0.3s ease, background 0.3s ease;
    min-height: 2.35rem;
    width: 100%;
    box-sizing: border-box;
    overflow: hidden;
}

.tc-gen-stage-bar__main {
    flex: 1 1 auto;
    min-width: 0;
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.3rem 0.5rem;
}

.tc-gen-stage-bar__footer {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.35rem 0.5rem;
    margin-left: auto;
}

.tc-gen-stage-bar.hidden {
    display: none !important;
}

.tc-gen-stage-bar--done {
    border-color: rgb(167 243 208);
    background: linear-gradient(135deg, rgb(236 253 245), rgb(240 253 244));
}

.tc-gen-stage-bar--error {
    border-color: rgb(252 165 165);
    background: linear-gradient(135deg, rgb(254 242 242), rgb(255 251 251));
}

.tc-gen-stage-bar--cancelled {
    border-color: rgb(226 232 240);
    background: linear-gradient(135deg, rgb(248 250 252), rgb(241 245 249));
}

/* ----- 步骤指示器（水平） ----- */
.tc-gen-stepper {
    display: flex;
    align-items: center;
    flex-wrap: nowrap;
    gap: 0;
    overflow-x: auto;
    scrollbar-width: none;
    -ms-overflow-style: none;
    flex-shrink: 0;
    min-width: 0;
}
.tc-gen-stepper::-webkit-scrollbar { display: none; }

.tc-gen-stepper__step {
    display: inline-flex;
    align-items: center;
    gap: 0.18rem;
    padding: 0.08rem 0.3rem;
    font-size: 0.6rem;
    font-weight: 500;
    color: rgb(148 163 184);
    border-radius: 4px;
    white-space: nowrap;
    flex-shrink: 0;
    transition: color 0.25s ease, background 0.25s ease;
}

.tc-gen-stepper__step--pending {
    color: rgb(148 163 184);
}

.tc-gen-stepper__step--active {
    color: rgb(79 70 229);
    background: rgba(99, 102, 241, 0.08);
    font-weight: 600;
}

.tc-gen-stepper__step--done {
    color: rgb(5 150 105);
}

.tc-gen-stepper__step--skip {
    color: rgb(148 163 184);
    text-decoration: line-through;
}

.tc-gen-stepper__step--error {
    color: rgb(220 38 38);
    font-weight: 600;
}

.tc-gen-stepper__step--cancelled {
    color: rgb(148 163 184);
}

.tc-gen-stepper__dot {
    display: inline-block;
    width: 5px;
    height: 5px;
    border-radius: 50%;
    flex-shrink: 0;
    background: currentColor;
    transition: transform 0.25s ease, box-shadow 0.25s ease;
}

.tc-gen-stepper__step--active .tc-gen-stepper__dot {
    transform: scale(1.6);
    box-shadow: 0 0 4px rgba(99, 102, 241, 0.45);
    animation: tc-gen-stepper-pulse 1.5s ease-in-out infinite;
}

@keyframes tc-gen-stepper-pulse {
    0%, 100% { box-shadow: 0 0 4px rgba(99, 102, 241, 0.35); }
    50% { box-shadow: 0 0 10px rgba(99, 102, 241, 0.65); }
}

.tc-gen-stepper__check {
    display: inline-block;
    font-size: 0.625rem;
    line-height: 1;
    flex-shrink: 0;
}

.tc-gen-stepper__separator {
    display: inline-flex;
    align-items: center;
    flex-shrink: 0;
    margin: 0 0.05rem;
    color: rgb(203 213 225);
    font-size: 0.5rem;
    user-select: none;
}

/* ----- 进度条区域（横幅最右侧） ----- */
.tc-gen-stage-bar__progress-widget {
    flex: 0 0 auto;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    justify-content: center;
    gap: 0.28rem;
    width: 10.5rem;
    min-width: 9rem;
    margin-left: 0.35rem;
    padding: 0.28rem 0.55rem 0.3rem;
    border-radius: 0.55rem;
    background: rgba(255, 255, 255, 0.72);
    border: 1px solid rgba(199, 210, 254, 0.85);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.9);
}

.tc-gen-stage-bar__percent {
    display: block;
    font-size: 0.8125rem;
    font-weight: 700;
    line-height: 1;
    text-align: right;
    letter-spacing: 0.01em;
    color: rgb(67 56 202);
    font-variant-numeric: tabular-nums;
}

.tc-gen-stage-bar__track {
    position: relative;
    width: 100%;
    height: 0.625rem;
    border-radius: 999px;
    background: rgb(226 232 240);
    overflow: hidden;
    box-shadow: inset 0 1px 2px rgba(15, 23, 42, 0.08);
}

.tc-gen-stage-bar__fill {
    position: relative;
    height: 100%;
    width: 0;
    background: linear-gradient(90deg, rgb(99 102 241) 0%, rgb(129 140 248) 52%, rgb(56 189 248) 100%);
    border-radius: 999px;
    transition: none;
    min-width: 0;
    box-shadow: 0 0 12px rgba(99, 102, 241, 0.32);
}

.tc-gen-stage-bar__fill::after {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(90deg, transparent 0%, rgba(255, 255, 255, 0.38) 50%, transparent 100%);
    animation: tc-gen-stage-fill-shimmer 1.8s ease-in-out infinite;
}

@keyframes tc-gen-stage-fill-shimmer {
    0% { transform: translateX(-120%); opacity: 0; }
    35% { opacity: 0.85; }
    100% { transform: translateX(120%); opacity: 0; }
}

.tc-gen-stage-bar--done .tc-gen-stage-bar__fill {
    background: linear-gradient(90deg, rgb(16 185 129), rgb(52 211 153));
    box-shadow: 0 0 8px rgba(16, 185, 129, 0.28);
}

.tc-gen-stage-bar--done .tc-gen-stage-bar__fill::after {
    animation: none;
    opacity: 0;
}

.tc-gen-stage-bar--error .tc-gen-stage-bar__fill {
    background: linear-gradient(90deg, rgb(239 68 68), rgb(248 113 113));
    box-shadow: none;
}

.tc-gen-stage-bar--error .tc-gen-stage-bar__fill::after {
    animation: none;
    opacity: 0;
}

.tc-gen-stage-bar--done .tc-gen-stage-bar__percent {
    color: rgb(5 150 105);
}

@media (max-width: 720px) {
    .tc-gen-stage-bar {
        flex-wrap: wrap;
    }
    .tc-gen-stage-bar__progress-widget {
        width: 100%;
        min-width: 0;
        margin-left: 0;
        order: 99;
    }
    .tc-gen-stage-bar__footer {
        margin-left: 0;
    }
}

/* ----- 统计信息行 ----- */
.tc-gen-stage-bar__info-row {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 0.5rem 0.75rem;
}

.tc-gen-stage-bar__title {
    font-weight: 600;
    color: rgb(30 41 59);
    font-size: 0.75rem;
}

.tc-gen-stage-bar__meta {
    font-size: 0.6875rem;
    color: rgb(100 116 139);
    font-variant-numeric: tabular-nums;
}

.tc-gen-stage-bar__stage-label {
    display: none;
}

@keyframes tc-gen-stage-label-pulse {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.85; }
}

/* ----- 操作区 ----- */
.tc-gen-stage-bar__actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.375rem;
}

.tc-gen-stage-bar__stop-btn {
    padding: 0.15rem 0.5rem;
    font-size: 0.625rem;
    font-weight: 500;
    color: rgb(220 38 38);
    border: 1px solid rgb(252 165 165);
    border-radius: 6px;
    background: rgb(255 255 255);
    cursor: pointer;
    transition: all 0.15s ease;
}

.tc-gen-stage-bar__stop-btn:hover {
    background: rgb(254 242 242);
    border-color: rgb(239 68 68);
}

.tc-gen-stage-bar__stop-btn.hidden {
    display: none !important;
}

.tc-gen-stage-bar__close {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.2rem;
    padding: 0.1rem 0.35rem;
    color: rgb(100 116 139);
    border: none;
    border-radius: 0.375rem;
    background: transparent;
    cursor: pointer;
    font-size: 0.75rem;
    line-height: 1;
    transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease, box-shadow 0.15s ease;
}

.tc-gen-stage-bar__close-icon {
    font-size: 0.875rem;
    line-height: 1;
}

.tc-gen-stage-bar__close-label {
    display: none;
    font-size: 0.625rem;
    font-weight: 500;
    line-height: 1.2;
}

.tc-gen-stage-bar__close:hover {
    background: rgb(255 255 255 / 0.7);
}

/* 质量检测横幅：关闭按钮显式按钮样式（与「停止生成」同级可识别） */
.tc-gen-stage-bar--quality .tc-gen-stage-bar__close {
    padding: 0.18rem 0.55rem;
    min-height: 1.375rem;
    color: rgb(51 65 85);
    border: 1px solid rgb(203 213 225);
    border-radius: 6px;
    background: rgb(255 255 255);
    box-shadow: 0 1px 2px rgb(15 23 42 / 0.06);
}

.tc-gen-stage-bar--quality .tc-gen-stage-bar__close-label {
    display: inline;
}

.tc-gen-stage-bar--quality .tc-gen-stage-bar__close:hover {
    color: rgb(30 41 59);
    border-color: rgb(148 163 184);
    background: rgb(248 250 252);
}

.tc-gen-stage-bar--quality .tc-gen-stage-bar__close:focus-visible {
    outline: 2px solid rgb(59 130 246 / 0.45);
    outline-offset: 1px;
}

.tc-gen-stage-bar--quality .tc-gen-stage-bar__close:active {
    background: rgb(241 245 249);
    box-shadow: none;
}

/* ----- 完成庆祝动画 ----- */
.tc-gen-stage-bar--done {
    animation: tc-stage-celebrate 0.6s ease-out;
}

@keyframes tc-stage-celebrate {
    0% { transform: scale(1); }
    30% { transform: scale(1.015); }
    100% { transform: scale(1); }
}

.tc-gen-stage-bar__done-icon {
    display: none;
    font-size: 0.875rem;
}

.tc-gen-stage-bar--done .tc-gen-stage-bar__done-icon {
    display: inline;
    animation: tc-stage-bounce-in 0.4s ease-out;
}

@keyframes tc-stage-bounce-in {
    0% { transform: scale(0); }
    60% { transform: scale(1.2); }
    100% { transform: scale(1); }
}

/* ----- 摘要卡片 ----- */
.tc-gen-summary-card {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
    margin: 0.25rem 0 0.25rem;
    padding: 0.5rem 0.8rem;
    border-radius: 0.75rem;
    border: 1px solid rgb(167 243 208);
    background: rgb(240 253 244);
    animation: tc-summary-slide-in 0.35s ease-out;
    width: 100%;
    max-width: 100%;
    min-width: 0;
    box-sizing: border-box;
}

/* 5 秒后自动消失 */
.tc-gen-summary-card--fading {
    animation: tc-summary-fade-out 0.45s ease-in forwards;
    pointer-events: none;
}

@keyframes tc-summary-fade-out {
    0% { opacity: 1; transform: translateY(0); }
    100% { opacity: 0; transform: translateY(-8px); max-height: 0; margin: 0; padding-top: 0; padding-bottom: 0; border-width: 0; overflow: hidden; }
}

.tc-gen-summary-card.hidden {
    display: none !important;
}

@keyframes tc-summary-slide-in {
    from {
        opacity: 0;
        transform: translateY(-8px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.tc-gen-summary-card__header {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.tc-gen-summary-card__icon {
    font-size: 1.25rem;
    flex-shrink: 0;
}

.tc-gen-summary-card__title {
    font-weight: 600;
    color: rgb(6 95 70);
    font-size: 0.875rem;
    flex: 1;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.tc-gen-summary-card__close {
    color: rgb(5 150 105);
    font-size: 0.875rem;
    border: none;
    background: transparent;
    cursor: pointer;
    padding: 0.25rem;
    border-radius: 4px;
    line-height: 1;
}

.tc-gen-summary-card__close:hover {
    background: rgba(5, 150, 105, 0.1);
}

.tc-gen-summary-card__stats {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    align-items: center;
}

.tc-gen-summary-card__stat {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    font-size: 0.75rem;
    color: rgb(6 95 70);
}

.tc-gen-summary-card__stat-value {
    font-weight: 700;
    font-variant-numeric: tabular-nums;
}

.tc-gen-summary-card__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-top: 0.25rem;
}

.tc-gen-summary-card__action-btn {
    padding: 0.3rem 0.75rem;
    font-size: 0.75rem;
    font-weight: 500;
    border-radius: 6px;
    border: 1px solid rgb(167 243 208);
    background: rgb(255 255 255);
    color: rgb(6 95 70);
    cursor: pointer;
    transition: all 0.15s ease;
}

.tc-gen-summary-card__action-btn:hover {
    background: rgb(236 253 245);
    border-color: rgb(52 211 153);
}
/* 生成暂停提示（琥珀色，与绿色完成摘要区分） */
.tc-gen-summary-card--paused {
    border-color: rgb(253 186 116);
    background: linear-gradient(135deg, rgb(255 251 235) 0%, rgb(254 243 199) 100%);
    box-shadow: 0 1px 3px rgba(180, 83, 9, 0.08);
}
.tc-gen-summary-card--paused .tc-gen-summary-card__icon {
    color: rgb(217 119 6);
}
.tc-gen-summary-card--paused .tc-gen-summary-card__title,
.tc-gen-summary-card--paused .tc-gen-summary-card__stat {
    color: rgb(146 64 14);
}
.tc-gen-summary-card--paused .tc-gen-summary-card__stat-value {
    color: rgb(180 83 9);
}
.tc-gen-summary-card--paused .tc-gen-summary-card__close {
    color: rgb(180 83 9);
}
.tc-gen-summary-card--paused .tc-gen-summary-card__close:hover {
    background: rgba(217, 119, 6, 0.12);
}


/* ----- 流式行入场动画升级 ----- */
#table-body tr.tc-row-streaming-entering {
    animation: tc-row-streaming-enter 0.4s ease-out;
}

@keyframes tc-row-streaming-enter {
    from {
        opacity: 0;
        transform: translateY(-8px);
        background: rgb(239 246 255);
        box-shadow: inset 3px 0 0 rgb(59 130 246);
    }
    to {
        opacity: 1;
        transform: translateY(0);
        background: transparent;
        box-shadow: inset 3px 0 0 transparent;
    }
}

/* VxeTable 流式行 */
.vxe-body--row.tc-row-streaming-entering .vxe-body--column {
    animation: tc-row-streaming-cell 0.5s ease-out;
}

@keyframes tc-row-streaming-cell {
    from { background-color: rgb(239 246 255); }
    to { background-color: transparent; }
}

/* ----- 思维导图渐进生成 ----- */
.tc-mindmap-progressive-node {
    animation: tc-mm-node-appear 0.35s ease-out;
}

@keyframes tc-mm-node-appear {
    from {
        opacity: 0;
        transform: scale(0.85);
    }
    to {
        opacity: 1;
        transform: scale(1);
    }
}

.tc-mindmap-loading-stage {
    text-align: center;
    padding: 1rem;
    color: rgb(100 116 139);
    font-size: 0.8125rem;
}

.tc-mindmap-loading-stage__text {
    margin-top: 0.35rem;
    font-size: 0.75rem;
    color: rgb(148 163 184);
}

/* ----- 取消确认弹窗 ----- */
.tc-cancel-confirm-overlay {
    position: fixed;
    inset: 0;
    z-index: 10500;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(15, 23, 42, 0.4);
    backdrop-filter: blur(2px);
}

.tc-cancel-confirm-overlay.hidden {
    display: none !important;
}

.tc-cancel-confirm-card {
    width: min(90vw, 22rem);
    background: #fff;
    border-radius: 1rem;
    padding: 1.5rem;
    box-shadow: 0 20px 60px rgba(15, 23, 42, 0.25);
    animation: tc-cancel-confirm-in 0.2s ease-out;
}

@keyframes tc-cancel-confirm-in {
    from { transform: scale(0.95); opacity: 0; }
    to { transform: scale(1); opacity: 1; }
}

.tc-cancel-confirm-card__title {
    font-size: 1rem;
    font-weight: 600;
    color: rgb(30 41 59);
    margin-bottom: 0.5rem;
}

.tc-cancel-confirm-card__desc {
    font-size: 0.8125rem;
    color: rgb(100 116 139);
    margin-bottom: 1rem;
    line-height: 1.5;
}

.tc-cancel-confirm-card__actions {
    display: flex;
    justify-content: flex-end;
    gap: 0.5rem;
}

.tc-cancel-confirm-card__btn {
    padding: 0.4rem 1rem;
    font-size: 0.8125rem;
    font-weight: 500;
    border-radius: 0.5rem;
    cursor: pointer;
    transition: all 0.15s ease;
}

.tc-cancel-confirm-card__btn--secondary {
    border: 1px solid rgb(226 232 240);
    background: rgb(255 255 255);
    color: rgb(100 116 139);
}

.tc-cancel-confirm-card__btn--secondary:hover {
    background: rgb(248 250 252);
}

.tc-cancel-confirm-card__btn--danger {
    border: 1px solid rgb(252 165 165);
    background: rgb(220 38 38);
    color: #fff;
}

.tc-cancel-confirm-card__btn--danger:hover {
    background: rgb(185 28 28);
}

/* ----- 生成中左侧面板状态锁定指示 ----- */
#left-panel .tc-gen-stage-streaming-indicator {
    display: none;
    padding: 0.35rem 0.75rem;
    margin: 0 0.5rem 0.35rem;
    border-radius: 8px;
    background: linear-gradient(135deg, rgb(238 242 255), rgb(224 231 255));
    border: 1px solid rgb(199 210 254);
    font-size: 0.6875rem;
    font-weight: 500;
    color: rgb(79 70 229);
    text-align: center;
}

#left-panel.tc-left-panel--gen-streaming .tc-gen-stage-streaming-indicator {
    display: block;
}

/* ----- 生成完成弹窗增强 ----- */
.tc-gen-modal-v2-card--celebrate .tc-gen-modal-v2__badge {
    animation: tc-celebrate-badge 0.5s ease-out;
}

@keyframes tc-celebrate-badge {
    0% { transform: scale(1); }
    30% { transform: scale(1.2); }
    100% { transform: scale(1); }
}

/* 质量检测完成后短暂停留再快速渐隐（仅质量检测横幅） */
.tc-gen-stage-bar--quality-fading {
    animation: tc-quality-bar-fade-out 0.32s ease-out forwards;
    pointer-events: none;
}

@keyframes tc-quality-bar-fade-out {
    0% {
        opacity: 1;
        transform: translateY(0);
        max-height: 12rem;
    }
    100% {
        opacity: 0;
        transform: translateY(-8px);
        max-height: 0;
        margin-top: 0;
        margin-bottom: 0;
        padding-top: 0;
        padding-bottom: 0;
        border-width: 0;
        overflow: hidden;
    }
}


/* === tc_gen_table_overlay.css === */
/* =================================================================
   用例生成 — 表格区域蒙层（仅 TcGenTableOverlay 使用）
   ================================================================= */
.tc-workbench-scope #tc-vxe-table-view-panel.tc-vxe-table-view-panel--gen-overlay {
    position: relative;
}

.tc-gen-table-overlay {
    position: absolute;
    inset: 0;
    z-index: 24;
    display: flex;
    align-items: center;
    justify-content: center;
    pointer-events: none;
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.28s ease, visibility 0.28s ease;
}

.tc-gen-table-overlay.hidden {
    display: none !important;
}

.tc-gen-table-overlay.tc-gen-table-overlay--visible {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
}

.tc-gen-table-overlay__backdrop {
    position: absolute;
    inset: 0;
    background:
        radial-gradient(ellipse 80% 60% at 50% 40%, rgba(99, 102, 241, 0.08), transparent 70%),
        rgba(255, 255, 255, 0.78);
    backdrop-filter: blur(10px) saturate(1.15);
    -webkit-backdrop-filter: blur(10px) saturate(1.15);
}

.tc-gen-table-overlay__content {
    position: relative;
    z-index: 1;
    width: min(18rem, calc(100% - 2rem));
    padding: 1.35rem 1.25rem 1.15rem;
    border-radius: 16px;
    border: 1px solid rgba(99, 102, 241, 0.12);
    background: rgba(255, 255, 255, 0.92);
    box-shadow:
        0 18px 40px rgba(15, 23, 42, 0.08),
        0 0 0 1px rgba(255, 255, 255, 0.65) inset;
    text-align: center;
}

.tc-gen-table-overlay__mark {
    position: relative;
    width: 3.25rem;
    height: 3.25rem;
    margin: 0 auto 0.85rem;
}

.tc-gen-table-overlay__ring {
    position: absolute;
    inset: 0;
    border-radius: 50%;
    border: 1.5px solid rgba(99, 102, 241, 0.18);
    animation: tc-gen-table-overlay-ring 2.4s ease-out infinite;
}

.tc-gen-table-overlay__ring--delay {
    animation-delay: 1.2s;
}

.tc-gen-table-overlay__core {
    position: absolute;
    inset: 0.55rem;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    color: #6366f1;
    background: linear-gradient(145deg, rgba(99, 102, 241, 0.12), rgba(139, 92, 246, 0.08));
    box-shadow: 0 0 0 1px rgba(99, 102, 241, 0.1) inset;
}

.tc-gen-table-overlay__core svg {
    width: 1.15rem;
    height: 1.15rem;
}

.tc-gen-table-overlay__title {
    margin: 0 0 0.35rem;
    font-size: 0.95rem;
    font-weight: 600;
    letter-spacing: 0.01em;
    color: #1e293b;
}

.tc-gen-table-overlay__stage {
    margin: 0;
    font-size: 0.8125rem;
    font-weight: 500;
    color: #6366f1;
}

.tc-gen-table-overlay__meta {
    margin: 0.45rem 0 0;
    font-size: 0.75rem;
    line-height: 1.45;
    color: #64748b;
}

.tc-gen-table-overlay__meta.hidden {
    display: none;
}

.tc-gen-table-overlay__progress {
    margin-top: 0.95rem;
}

.tc-gen-table-overlay__progress-track {
    height: 3px;
    border-radius: 999px;
    background: rgba(99, 102, 241, 0.12);
    overflow: hidden;
}

.tc-gen-table-overlay__progress-fill {
    width: 0%;
    height: 100%;
    border-radius: inherit;
    background: linear-gradient(90deg, #818cf8, #6366f1 55%, #8b5cf6);
    transition: width 0.35s ease;
}

@keyframes tc-gen-table-overlay-ring {
    0% {
        transform: scale(0.72);
        opacity: 0.85;
    }
    70% {
        transform: scale(1.08);
        opacity: 0.15;
    }
    100% {
        transform: scale(1.12);
        opacity: 0;
    }
}


/* 写入表格阶段：平滑过渡到「表格可见 + 高透明只读遮罩 + 右下角卡片」 */
.tc-gen-table-overlay__table-shield {
    position: absolute;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    opacity: 0;
    background: rgba(255, 255, 255, 0.03);
    transition: opacity 0.52s cubic-bezier(0.4, 0, 0.2, 1);
}

.tc-gen-table-overlay__backdrop {
    transition:
        opacity 0.52s cubic-bezier(0.4, 0, 0.2, 1),
        backdrop-filter 0.52s cubic-bezier(0.4, 0, 0.2, 1),
        -webkit-backdrop-filter 0.52s cubic-bezier(0.4, 0, 0.2, 1),
        visibility 0.52s cubic-bezier(0.4, 0, 0.2, 1);
}

.tc-gen-table-overlay__content {
    transition:
        transform 0.52s cubic-bezier(0.22, 1, 0.36, 1),
        width 0.48s cubic-bezier(0.4, 0, 0.2, 1),
        box-shadow 0.48s ease;
}

.tc-gen-table-overlay.tc-gen-table-overlay--table-peek {
    background: transparent;
    pointer-events: auto;
    align-items: flex-end;
    justify-content: flex-end;
    padding: 0.85rem 1rem 1rem;
}

.tc-gen-table-overlay.tc-gen-table-overlay--table-peek .tc-gen-table-overlay__backdrop {
    opacity: 0;
    visibility: hidden;
    backdrop-filter: blur(0);
    -webkit-backdrop-filter: blur(0);
    pointer-events: none;
}

.tc-gen-table-overlay.tc-gen-table-overlay--table-peek .tc-gen-table-overlay__table-shield {
    opacity: 1;
    pointer-events: auto;
    cursor: default;
}

.tc-gen-table-overlay.tc-gen-table-overlay--table-peek .tc-gen-table-overlay__content {
    position: relative;
    z-index: 2;
    pointer-events: none;
    width: min(16.5rem, calc(100% - 1.5rem));
    box-shadow:
        0 12px 32px rgba(15, 23, 42, 0.14),
        0 0 0 1px rgba(99, 102, 241, 0.1);
}

.tc-gen-table-overlay.tc-gen-table-overlay--table-peek.tc-gen-table-overlay--peek-animate .tc-gen-table-overlay__content {
    animation: tc-gen-table-overlay-card-relocate 0.52s cubic-bezier(0.22, 1, 0.36, 1) both;
}

@keyframes tc-gen-table-overlay-card-relocate {
    0% {
        transform: translate(-36%, -40%) scale(1.04);
        opacity: 0.94;
    }
    100% {
        transform: translate(0, 0) scale(1);
        opacity: 1;
    }
}

.tc-workbench-scope #tc-vxe-table-view-panel.tc-vxe-table-view-panel--gen-overlay-peek {
    position: relative;
}

.tc-workbench-scope #tc-vxe-table-view-panel.tc-vxe-table-view-panel--gen-overlay-readonly {
    user-select: none;
}

.tc-workbench-scope #tc-vxe-table-view-panel.tc-vxe-table-view-panel--gen-overlay-readonly .tc-vxe-table-mount,
.tc-workbench-scope #tc-vxe-table-view-panel.tc-vxe-table-view-panel--gen-overlay-readonly .vxe-table--body-wrapper {
    pointer-events: none;
}


/* === tc_qc_table_overlay.css === */
/* =================================================================
   质量检查 — 表格区域蒙层（仅 TcQcTableOverlay 使用）
   ================================================================= */
.tc-workbench-scope #tc-vxe-table-view-panel.tc-vxe-table-view-panel--qc-overlay {
    position: relative;
}

.tc-qc-table-overlay {
    position: absolute;
    inset: 0;
    z-index: 25;
    display: flex;
    align-items: center;
    justify-content: center;
    pointer-events: none;
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.28s ease, visibility 0.28s ease;
}

.tc-qc-table-overlay.hidden {
    display: none !important;
}

.tc-qc-table-overlay.tc-qc-table-overlay--visible {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
}

.tc-qc-table-overlay__backdrop {
    position: absolute;
    inset: 0;
    background:
        radial-gradient(ellipse 80% 60% at 50% 40%, rgba(16, 185, 129, 0.07), transparent 70%),
        rgba(255, 255, 255, 0.8);
    backdrop-filter: blur(10px) saturate(1.12);
    -webkit-backdrop-filter: blur(10px) saturate(1.12);
}

.tc-qc-table-overlay__content {
    position: relative;
    z-index: 1;
    width: min(18rem, calc(100% - 2rem));
    padding: 1.35rem 1.25rem 1.15rem;
    border-radius: 16px;
    border: 1px solid rgba(16, 185, 129, 0.14);
    background: rgba(255, 255, 255, 0.94);
    box-shadow:
        0 18px 40px rgba(15, 23, 42, 0.07),
        0 0 0 1px rgba(255, 255, 255, 0.7) inset;
    text-align: center;
}

.tc-qc-table-overlay__mark {
    position: relative;
    width: 3.25rem;
    height: 3.25rem;
    margin: 0 auto 0.85rem;
}

.tc-qc-table-overlay__ring {
    position: absolute;
    inset: 0;
    border-radius: 50%;
    border: 1.5px solid rgba(16, 185, 129, 0.2);
    animation: tc-qc-table-overlay-ring 2.4s ease-out infinite;
}

.tc-qc-table-overlay__ring--delay {
    animation-delay: 1.2s;
}

.tc-qc-table-overlay__core {
    position: absolute;
    inset: 0.55rem;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    color: #059669;
    background: linear-gradient(145deg, rgba(16, 185, 129, 0.12), rgba(5, 150, 105, 0.08));
    box-shadow: 0 0 0 1px rgba(16, 185, 129, 0.12) inset;
}

.tc-qc-table-overlay__core svg {
    width: 1.2rem;
    height: 1.2rem;
}

.tc-qc-table-overlay__title {
    margin: 0 0 0.35rem;
    font-size: 0.95rem;
    font-weight: 600;
    letter-spacing: 0.01em;
    color: #1e293b;
}

.tc-qc-table-overlay__stage {
    margin: 0;
    font-size: 0.8125rem;
    font-weight: 500;
    color: #059669;
}

.tc-qc-table-overlay__meta {
    margin: 0.45rem 0 0;
    font-size: 0.75rem;
    line-height: 1.45;
    color: #64748b;
}

.tc-qc-table-overlay__meta.hidden {
    display: none;
}

.tc-qc-table-overlay__progress {
    margin-top: 0.95rem;
}

.tc-qc-table-overlay__progress-track {
    height: 3px;
    border-radius: 999px;
    background: rgba(16, 185, 129, 0.14);
    overflow: hidden;
}

.tc-qc-table-overlay__progress-fill {
    width: 0%;
    height: 100%;
    border-radius: inherit;
    background: linear-gradient(90deg, #34d399, #10b981 55%, #059669);
    transition: width 0.35s ease;
}

@keyframes tc-qc-table-overlay-ring {
    0% {
        transform: scale(0.72);
        opacity: 0.85;
    }
    70% {
        transform: scale(1.08);
        opacity: 0.15;
    }
    100% {
        transform: scale(1.12);
        opacity: 0;
    }
}


/* === tc_fill_table_overlay.css === */
/* 用例补充 — 表格区域蒙层（仅 TcFillTableOverlay 使用） */
.tc-workbench-scope #tc-vxe-table-view-panel.tc-vxe-table-view-panel--fill-overlay {
    position: relative;
}

.tc-fill-table-overlay {
    position: absolute;
    inset: 0;
    z-index: 26;
    display: flex;
    align-items: center;
    justify-content: center;
    pointer-events: none;
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.28s ease, visibility 0.28s ease;
}

.tc-fill-table-overlay.hidden {
    display: none !important;
}

.tc-fill-table-overlay.tc-fill-table-overlay--visible {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
}

.tc-fill-table-overlay__backdrop {
    position: absolute;
    inset: 0;
    background:
        radial-gradient(ellipse 82% 58% at 50% 38%, rgba(99, 102, 241, 0.09), transparent 72%),
        rgba(255, 255, 255, 0.82);
    backdrop-filter: blur(11px) saturate(1.1);
    -webkit-backdrop-filter: blur(11px) saturate(1.1);
}

.tc-fill-table-overlay__content {
    position: relative;
    z-index: 1;
    width: min(19rem, calc(100% - 2rem));
    padding: 1.4rem 1.3rem 1.2rem;
    border-radius: 18px;
    border: 1px solid rgba(99, 102, 241, 0.16);
    background: rgba(255, 255, 255, 0.96);
    box-shadow:
        0 20px 44px rgba(15, 23, 42, 0.08),
        0 0 0 1px rgba(255, 255, 255, 0.75) inset;
    text-align: center;
}

.tc-fill-table-overlay__mark {
    position: relative;
    width: 3.35rem;
    height: 3.35rem;
    margin: 0 auto 0.9rem;
}

.tc-fill-table-overlay__ring {
    position: absolute;
    inset: 0;
    border-radius: 50%;
    border: 1.5px solid rgba(99, 102, 241, 0.22);
    animation: tc-fill-table-overlay-ring 2.5s ease-out infinite;
}

.tc-fill-table-overlay__ring--delay {
    animation-delay: 1.15s;
}

.tc-fill-table-overlay__core {
    position: absolute;
    inset: 0.52rem;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    color: #6366f1;
    background: linear-gradient(145deg, rgba(99, 102, 241, 0.14), rgba(168, 85, 247, 0.08));
    box-shadow: 0 0 0 1px rgba(99, 102, 241, 0.12) inset;
}

.tc-fill-table-overlay__core svg {
    width: 1.25rem;
    height: 1.25rem;
}

.tc-fill-table-overlay__title {
    margin: 0 0 0.35rem;
    font-size: 0.96rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    color: #1e293b;
}

.tc-fill-table-overlay__stage {
    margin: 0;
    font-size: 0.8125rem;
    font-weight: 500;
    color: #6366f1;
}

.tc-fill-table-overlay__meta {
    margin: 0.45rem 0 0;
    font-size: 0.75rem;
    line-height: 1.45;
    color: #64748b;
}

.tc-fill-table-overlay__meta.hidden {
    display: none;
}

.tc-fill-table-overlay__progress {
    margin-top: 1rem;
}

.tc-fill-table-overlay__progress-track {
    height: 3px;
    border-radius: 999px;
    background: rgba(99, 102, 241, 0.12);
    overflow: hidden;
}

.tc-fill-table-overlay__progress-fill {
    width: 0%;
    height: 100%;
    border-radius: inherit;
    background: linear-gradient(90deg, #a5b4fc, #6366f1 52%, #7c3aed);
    transition: width 0.35s ease;
}

@keyframes tc-fill-table-overlay-ring {
    0% { transform: scale(0.72); opacity: 0.85; }
    70% { transform: scale(1.08); opacity: 0.14; }
    100% { transform: scale(1.12); opacity: 0; }
}


/* === tc_fill_progress_scroll.css === */
/* 用例补充进度 — 内容区垂直滚动条（仅 .tc-qc-fill-progress--scrollable，由 TcFillProgressScrollLayout 启用） */
#tc-validate-drawer-single.tc-validate-drawer--fill-active #tc-validate-fill-progress-inner-single.tc-qc-fill-progress--scrollable {
    overflow-y: scroll !important;
    overflow-x: hidden !important;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: thin;
    scrollbar-color: rgba(99, 102, 241, 0.5) rgba(15, 23, 42, 0.08);
}

#tc-validate-drawer-single.tc-validate-drawer--fill-active #tc-validate-fill-progress-inner-single.tc-qc-fill-progress--scrollable::-webkit-scrollbar {
    width: 8px;
}

#tc-validate-drawer-single.tc-validate-drawer--fill-active #tc-validate-fill-progress-inner-single.tc-qc-fill-progress--scrollable::-webkit-scrollbar-track {
    background: rgba(15, 23, 42, 0.06);
    border-radius: 999px;
}

#tc-validate-drawer-single.tc-validate-drawer--fill-active #tc-validate-fill-progress-inner-single.tc-qc-fill-progress--scrollable::-webkit-scrollbar-thumb {
    background: rgba(99, 102, 241, 0.45);
    border-radius: 999px;
}

#tc-validate-drawer-single.tc-validate-drawer--fill-active #tc-validate-fill-progress-inner-single.tc-qc-fill-progress--scrollable::-webkit-scrollbar-thumb:hover {
    background: rgba(99, 102, 241, 0.62);
}


/* === tc_lanhu_tree_case_status.css === */
/* 蓝湖需求树 — 已设计用例页：绿点独立节点，避免长标题 ellipsis 裁切 */
.tc-lanhu-tree-node--designed > .tc-lanhu-tree-node__row .tc-lanhu-tree-node__label::after {
    content: none;
    display: none;
}

.tc-lanhu-tree-node__case-dot {
    display: inline-block;
    width: 6px;
    height: 6px;
    flex-shrink: 0;
    margin-left: 5px;
    border-radius: 50%;
    background: #10b981;
}

.tc-lanhu-tree-rail__subtitle--progress {
    color: #059669;
    font-weight: 600;
}


/* === tc_lanhu_doc_notice.css === */
/* 蓝湖需求文档：配额 / 重复提示弹窗 */
.tc-lanhu-doc-notice {
  position: fixed;
  inset: 0;
  z-index: 10070;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1.5rem;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.22s ease;
}

.tc-lanhu-doc-notice.is-open {
  opacity: 1;
  pointer-events: auto;
}

.tc-lanhu-doc-notice.is-hidden {
  display: none;
}

.tc-lanhu-doc-notice__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(15, 23, 42, 0.42);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
}

.tc-lanhu-doc-notice__panel {
  position: relative;
  z-index: 1;
  width: min(24rem, 92vw);
  padding: 0;
  border-radius: 1.125rem;
  background: #fff;
  border: 1px solid rgba(226, 232, 240, 0.95);
  box-shadow:
    0 1px 0 rgba(255, 255, 255, 0.92) inset,
    0 28px 56px rgba(15, 23, 42, 0.16),
    0 10px 24px rgba(15, 23, 42, 0.06);
  transform: translateY(10px) scale(0.98);
  transition: transform 0.26s cubic-bezier(0.22, 1, 0.36, 1);
  overflow: hidden;
}

.tc-lanhu-doc-notice.is-open .tc-lanhu-doc-notice__panel {
  transform: translateY(0) scale(1);
}

.tc-lanhu-doc-notice__accent {
  height: 3px;
  background: linear-gradient(90deg, #6366f1 0%, #8b5cf6 52%, #a78bfa 100%);
}

.tc-lanhu-doc-notice--duplicate .tc-lanhu-doc-notice__accent {
  background: linear-gradient(90deg, #f59e0b 0%, #f97316 100%);
}

.tc-lanhu-doc-notice--quota .tc-lanhu-doc-notice__accent {
  background: linear-gradient(90deg, #6366f1 0%, #4f46e5 100%);
}

.tc-lanhu-doc-notice__body {
  padding: 1.375rem 1.5rem 0.25rem;
}

.tc-lanhu-doc-notice__title {
  margin: 0 0 0.625rem;
  font-size: 1.0625rem;
  font-weight: 650;
  letter-spacing: -0.015em;
  color: #0f172a;
  line-height: 1.35;
}

.tc-lanhu-doc-notice__message {
  margin: 0 0 1.25rem;
  font-size: 0.9375rem;
  line-height: 1.6;
  font-weight: 450;
  color: #475569;
  letter-spacing: 0.01em;
  white-space: pre-line;
}

.tc-lanhu-doc-notice__actions {
  display: flex;
  justify-content: flex-end;
  padding: 0 1.5rem 1.375rem;
}

.tc-lanhu-doc-notice__btn {
  min-width: 5.5rem;
  padding: 0.5rem 1.125rem;
  border: none;
  border-radius: 0.625rem;
  font-size: 0.875rem;
  font-weight: 600;
  letter-spacing: 0.02em;
  cursor: pointer;
  color: #fff;
  background: linear-gradient(135deg, #4f46e5 0%, #6366f1 100%);
  box-shadow: 0 1px 2px rgba(79, 70, 229, 0.25), 0 4px 12px rgba(99, 102, 241, 0.28);
  transition: transform 0.15s ease, box-shadow 0.15s ease;
}

.tc-lanhu-doc-notice__btn:hover {
  transform: translateY(-1px);
  box-shadow: 0 2px 4px rgba(79, 70, 229, 0.28), 0 6px 16px rgba(99, 102, 241, 0.32);
}

.tc-lanhu-doc-notice__btn:active {
  transform: translateY(0);
}

body.tc-lanhu-doc-notice-open {
  overflow: hidden;
}


/* === tc_lanhu_doc_tree.css === */
/* 用例工作台 — 左侧蓝湖需求文档树（布局规则须压过 toolkit.css 的 #main-grid { display:block }） */
#tc-main-content-shell > #main-grid.tc-main-grid.tc-main-grid--with-lanhu-tree {
    display: flex !important;
    flex-direction: row !important;
    flex-wrap: nowrap !important;
    align-items: stretch !important;
    gap: 0 !important;
    width: 100%;
    min-width: 0;
    min-height: 0;
}

#tc-main-content-shell > #main-grid.tc-main-grid.tc-main-grid--with-lanhu-tree .tc-lanhu-doc-tree-rail {
    flex: 0 0 var(--tc-lanhu-tree-w, 264px);
    width: var(--tc-lanhu-tree-w, 264px);
    max-width: var(--tc-lanhu-tree-w, 264px);
    min-width: 0;
}

#tc-main-content-shell > #main-grid.tc-main-grid.tc-main-grid--with-lanhu-tree .tc-main-grid__workspace,
#tc-main-content-shell > #main-grid.tc-main-grid.tc-main-grid--with-lanhu-tree #right-panel.tc-main-grid__workspace {
    flex: 1 1 0 !important;
    min-width: 0 !important;
    width: auto !important;
    max-width: 100% !important;
}

/* 兼容旧选择器（子代规则已覆盖） */
#main-grid.tc-main-grid--with-lanhu-tree {
    display: flex;
    align-items: stretch;
    gap: 0;
    width: 100%;
    min-height: 0;
}

#main-grid.tc-main-grid--with-lanhu-tree .tc-main-grid__workspace {
    flex: 1 1 auto;
    min-width: 0;
    width: auto;
    max-width: none;
}

.tc-lanhu-doc-tree-rail {
    --tc-lanhu-tree-w: 264px;
    --tc-lanhu-tree-glass: rgba(255, 255, 255, 0.38);
    --tc-lanhu-tree-glass-strong: rgba(255, 255, 255, 0.52);
    --tc-lanhu-tree-glass-border: rgba(255, 255, 255, 0.42);
    --tc-lanhu-tree-bg: linear-gradient(
        180deg,
        rgba(255, 255, 255, 0.26) 0%,
        rgba(238, 242, 255, 0.2) 48%,
        rgba(224, 231, 255, 0.16) 100%
    );
    --tc-lanhu-tree-border: rgba(148, 163, 184, 0.28);
    --tc-lanhu-tree-accent: #4f46e5;
    flex: 0 0 var(--tc-lanhu-tree-w);
    width: var(--tc-lanhu-tree-w);
    max-width: var(--tc-lanhu-tree-w);
    min-height: 0;
    display: flex;
    flex-direction: column;
    border-right: 1px solid var(--tc-lanhu-tree-border);
    background: var(--tc-lanhu-tree-bg);
    backdrop-filter: blur(16px) saturate(1.12);
    -webkit-backdrop-filter: blur(16px) saturate(1.12);
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, 0.38),
        inset -1px 0 0 rgba(255, 255, 255, 0.18);
    position: relative;
    transition: flex-basis 0.22s ease, width 0.22s ease, max-width 0.22s ease, opacity 0.2s ease;
    border-radius: 10px;
    overflow: hidden;
}

.tc-lanhu-doc-tree-rail--collapsed {
    --tc-lanhu-tree-w: 44px;
}

.tc-lanhu-doc-tree-rail--collapsed .tc-lanhu-tree-rail__body,
.tc-lanhu-doc-tree-rail--collapsed .tc-lanhu-tree-rail__foot {
    display: none;
}

.tc-lanhu-doc-tree-rail--collapsed .tc-lanhu-tree-rail__head {
    flex-direction: column;
    justify-content: flex-start;
    align-items: center;
    gap: 0;
    padding: 0.65rem 0.35rem;
    border-bottom: none;
}

.tc-lanhu-doc-tree-rail--collapsed .tc-lanhu-tree-rail__brand,
.tc-lanhu-doc-tree-rail--collapsed #tc-lanhu-tree-connect-btn,
.tc-lanhu-doc-tree-rail--collapsed #tc-lanhu-tree-refresh-btn {
    display: none !important;
}

.tc-lanhu-doc-tree-rail--collapsed .tc-lanhu-tree-rail__actions {
    flex-direction: column;
    width: 100%;
    align-items: center;
    justify-content: flex-start;
}

.tc-lanhu-doc-tree-rail--collapsed #tc-lanhu-tree-rail-collapse {
    margin: 0 auto;
}

.tc-lanhu-tree-rail__head {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.85rem 0.75rem 0.65rem;
    border-bottom: 1px solid rgba(148, 163, 184, 0.18);
    background: var(--tc-lanhu-tree-glass);
    backdrop-filter: blur(12px) saturate(1.1);
    -webkit-backdrop-filter: blur(12px) saturate(1.1);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.32);
    border-radius: 10px 10px 0 0;
    overflow: visible;
}

.tc-lanhu-tree-rail__brand {
    display: flex;
    align-items: center;
    gap: 0.42rem;
    min-width: 0;
    flex: 1 1 auto;
}

.tc-lanhu-tree-rail__logo {
    width: 1.86rem;
    height: 1.86rem;
    border-radius: 0.6rem;
    display: grid;
    place-items: center;
    color: #fff;
    background: linear-gradient(145deg, #6366f1 0%, #4f46e5 55%, #4338ca 100%);
    box-shadow: 0 8px 18px rgba(79, 70, 229, 0.28);
    flex-shrink: 0;
}

.tc-lanhu-tree-rail__logo svg {
    width: 1.02rem;
    height: 1.02rem;
}

.tc-lanhu-tree-rail__titles {
    min-width: 0;
    max-width: 100%;
    padding-right: 1.35rem;
}

.tc-lanhu-tree-rail__title {
    font-size: 0.76rem;
    line-height: 1.12;
    font-weight: 700;
    color: #1e293b;
    letter-spacing: 0.02em;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.tc-lanhu-tree-rail__subtitle {
    font-size: 0.61rem;
    line-height: 1.15;
    color: #64748b;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}


.tc-lanhu-tree-rail__actions {
    display: flex;
    align-items: center;
    gap: 0.25rem;
    flex-shrink: 0;
}

.tc-lanhu-tree-rail__icon-btn {
    width: 1.85rem;
    height: 1.85rem;
    border-radius: 0.55rem;
    border: 1px solid rgba(148, 163, 184, 0.28);
    background: var(--tc-lanhu-tree-glass-strong);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    color: #475569;
    display: grid;
    place-items: center;
    cursor: pointer;
    transition: background 0.15s, color 0.15s, border-color 0.15s, transform 0.12s;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.35);
}

.tc-lanhu-tree-rail__icon-btn:hover {
    color: var(--tc-lanhu-tree-accent);
    border-color: rgba(99, 102, 241, 0.4);
    background: rgba(255, 255, 255, 0.68);
}

.tc-lanhu-tree-rail__icon-btn:active {
    transform: scale(0.96);
}

.tc-lanhu-tree-rail__icon-btn svg {
    width: 1rem;
    height: 1rem;
}

.tc-lanhu-tree-rail__body {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
    padding: 0.65rem 0.55rem 0.45rem;
    gap: 0.55rem;
    transition: opacity 0.18s ease;
}

.tc-lanhu-tree-search-wrap {
    position: relative;
}

.tc-lanhu-tree-search-wrap svg {
    position: absolute;
    left: 0.65rem;
    top: 50%;
    transform: translateY(-50%);
    width: 0.95rem;
    height: 0.95rem;
    color: #94a3b8;
    pointer-events: none;
}

.tc-lanhu-tree-search {
    width: 100%;
    border-radius: 0.65rem;
    border: 1px solid rgba(148, 163, 184, 0.28);
    background: var(--tc-lanhu-tree-glass-strong);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    padding: 0.48rem 0.65rem 0.48rem 2rem;
    font-size: 0.78rem;
    color: #334155;
    outline: none;
    transition: border-color 0.15s, box-shadow 0.15s, background 0.15s;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.3);
}

.tc-lanhu-tree-search:focus {
    border-color: rgba(99, 102, 241, 0.55);
    box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.12);
}

.tc-lanhu-tree-mount {
    flex: 1 1 auto;
    min-height: 0;
    overflow: auto;
    border-radius: 0.6rem;
    border: 1px solid rgba(148, 163, 184, 0.22);
    background: var(--tc-lanhu-tree-glass);
    backdrop-filter: blur(12px) saturate(1.08);
    -webkit-backdrop-filter: blur(12px) saturate(1.08);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.28);
    padding: 0.35rem 0.25rem;
    scrollbar-width: thin;
    scrollbar-color: rgba(100, 116, 139, 0.45) transparent;
}

.tc-lanhu-tree-root {
    list-style: none;
    margin: 0;
    padding: 0.15rem 0;
}

.tc-lanhu-tree-node {
    margin: 0;
    padding: 0;
}

.tc-lanhu-tree-node__row {
    display: flex;
    align-items: center;
    gap: 0.2rem;
    min-height: 1.85rem;
    padding: 0.12rem 0.35rem 0.12rem calc(0.35rem + var(--tc-tree-depth, 0) * 0.65rem);
    border-radius: 0.5rem;
    cursor: pointer;
    transition: background 0.12s, color 0.12s;
}

.tc-lanhu-tree-node__row:hover {
    background: rgba(99, 102, 241, 0.1);
    backdrop-filter: blur(4px);
    -webkit-backdrop-filter: blur(4px);
}

.tc-lanhu-tree-node--selected > .tc-lanhu-tree-node__row {
    background: linear-gradient(90deg, rgba(99, 102, 241, 0.22) 0%, rgba(99, 102, 241, 0.1) 100%);
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
    color: #312e81;
}

.tc-lanhu-tree-node__toggle {
    width: 1.25rem;
    height: 1.25rem;
    border: none;
    background: transparent;
    color: #64748b;
    display: grid;
    place-items: center;
    cursor: pointer;
    border-radius: 0.35rem;
    flex-shrink: 0;
    padding: 0;
}

.tc-lanhu-tree-node__toggle--spacer {
    cursor: default;
}

.tc-lanhu-tree-node__toggle svg {
    width: 0.85rem;
    height: 0.85rem;
    transition: transform 0.15s ease;
}

.tc-lanhu-tree-node--expanded > .tc-lanhu-tree-node__row .tc-lanhu-tree-node__toggle svg {
    transform: rotate(90deg);
}

.tc-lanhu-tree-node__icon {
    width: 1.1rem;
    height: 1.1rem;
    flex-shrink: 0;
    display: grid;
    place-items: center;
}

.tc-lanhu-tree-node__icon svg {
    width: 0.95rem;
    height: 0.95rem;
}

.tc-lanhu-tree-node__icon--folder {
    color: #f59e0b;
}

.tc-lanhu-tree-node__icon--page {
    color: #6366f1;
}

.tc-lanhu-tree-node__label {
    font-size: 0.76rem;
    line-height: 1.25;
    color: #334155;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    min-width: 0;
    flex: 1;
}

/* 需求页：仅截断标题文字，已设计绿点（__case-dot）始终可见 */
.tc-lanhu-tree-node--page > .tc-lanhu-tree-node__row .tc-lanhu-tree-node__label {
    display: inline-flex;
    align-items: center;
    overflow: hidden;
    text-overflow: clip;
}

.tc-lanhu-tree-node--page > .tc-lanhu-tree-node__row .tc-lanhu-tree-node__label-text {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    min-width: 0;
    flex: 1 1 auto;
}

/* 页面需求字数 / 刷新（独立于 body.tc-hub-ai-tab 的全局浅色字继承） */
.tc-lanhu-tree-node__refresh {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.35rem;
    height: 1.35rem;
    margin-left: 0.1rem;
    padding: 0;
    border: none;
    border-radius: 0.35rem;
    background: transparent;
    color: #64748b;
    cursor: pointer;
    flex-shrink: 0;
    opacity: 0;
    transition: opacity 0.15s ease, color 0.12s ease, background 0.12s ease;
}

.tc-lanhu-tree-node__row:hover .tc-lanhu-tree-node__refresh,
.tc-lanhu-tree-node__row:focus-within .tc-lanhu-tree-node__refresh {
    opacity: 1;
}

.tc-lanhu-tree-node__refresh:hover {
    color: #4f46e5;
    background: rgba(99, 102, 241, 0.12);
}

.tc-lanhu-tree-node__refresh svg {
    width: 0.85rem;
    height: 0.85rem;
}

.tc-lanhu-tree-node__chars {
    flex-shrink: 0;
    font-size: 0.68rem;
    line-height: 1;
    font-variant-numeric: tabular-nums;
    color: #475569;
    max-width: 4.75rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.tc-lanhu-tree-node__chars--ok {
    color: #4f46e5;
    font-weight: 600;
}

.tc-lanhu-tree-node__chars--loading {
    display: inline-block;
    width: 0.72rem;
    height: 0.72rem;
    color: transparent;
    font-size: 0;
    border: 2px solid rgba(79, 70, 229, 0.22);
    border-top-color: #4f46e5;
    border-radius: 50%;
    animation: tc-lanhu-tree-chars-spin 0.65s linear infinite;
    vertical-align: middle;
}

.tc-lanhu-tree-node__chars--error {
    color: #dc2626;
    font-size: 0.62rem;
    font-weight: 500;
    max-width: 5.5rem;
}

/* 页面加载中 — 玻璃感脉冲骨架屏 */

/* 用例生成中：禁止切换其它需求页（当前选中页仍可操作） */
.tc-lanhu-tree-mount--gen-page-locked .tc-lanhu-tree-node--page:not(.tc-lanhu-tree-node--selected) .tc-lanhu-tree-node__row {
    cursor: not-allowed;
    opacity: 0.55;
}
.tc-lanhu-tree-mount--gen-page-locked .tc-lanhu-tree-node--page:not(.tc-lanhu-tree-node--selected) .tc-lanhu-tree-node__row:hover {
    background: transparent;
}
.tc-lanhu-tree-rail--gen-page-locked .tc-lanhu-tree-search {
    opacity: 0.85;
}
.tc-lanhu-tree-node--loading > .tc-lanhu-tree-node__row {
    position: relative;
    pointer-events: none;
}
.tc-lanhu-tree-node--loading > .tc-lanhu-tree-node__row::after {
    content: '';
    position: absolute;
    inset: 2px;
    border-radius: 0.5rem;
    background: linear-gradient(
        110deg,
        rgba(99, 102, 241, 0) 30%,
        rgba(99, 102, 241, 0.08) 50%,
        rgba(99, 102, 241, 0) 70%
    );
    background-size: 200% 100%;
    animation: tc-tree-loading-shimmer 1.4s ease-in-out infinite;
    pointer-events: none;
    z-index: 1;
}
/* 绿色圆点在 loading 期间保持可见但略暗 */
.tc-lanhu-tree-node--loading.tc-lanhu-tree-node--designed > .tc-lanhu-tree-node__row .tc-lanhu-tree-node__case-dot {
    opacity: 0.55;
    filter: grayscale(0.3);
}
/* loading 微标：右侧小旋转环 */
.tc-lanhu-tree-node--loading > .tc-lanhu-tree-node__row .tc-lanhu-tree-node__label::before {
    content: '';
    display: inline-block;
    width: 0.6rem;
    height: 0.6rem;
    margin-right: 0.35rem;
    border: 2px solid rgba(99, 102, 241, 0.2);
    border-top-color: #6366f1;
    border-radius: 50%;
    animation: tc-lanhu-tree-chars-spin 0.6s linear infinite;
    vertical-align: middle;
    flex-shrink: 0;
}
.tc-lanhu-tree-node--loading > .tc-lanhu-tree-node__row .tc-lanhu-tree-node__label {
    display: inline-flex;
    align-items: center;
}

@keyframes tc-tree-loading-shimmer {
    0% { background-position: -200% 0; }
    100% { background-position: 200% 0; }
}

@keyframes tc-lanhu-tree-chars-spin {
    to { transform: rotate(360deg); }
}

@keyframes tc-spin {
    to { transform: rotate(360deg); }
}


body.tc-hub-ai-tab .tc-lanhu-tree-mount .tc-lanhu-tree-node__label {
    color: #1e293b;
}

body.tc-hub-ai-tab .tc-lanhu-tree-mount .tc-lanhu-tree-node__chars {
    color: #475569;
}

body.tc-hub-ai-tab .tc-lanhu-tree-mount .tc-lanhu-tree-node__chars--ok {
    color: #4f46e5;
}

body.tc-hub-ai-tab .tc-lanhu-tree-mount .tc-lanhu-tree-node__chars--error {
    color: #dc2626;
}

body.tc-hub-ai-tab .tc-lanhu-tree-mount .tc-lanhu-tree-node__refresh {
    color: #64748b;
}

.tc-lanhu-tree-node__children {
    list-style: none;
    margin: 0;
    padding: 0;
}

.tc-lanhu-tree-empty {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    padding: 1.5rem 0.85rem;
    min-height: 12rem;
    gap: 0.45rem;
}

.tc-lanhu-tree-empty__icon {
    font-size: 1.75rem;
    filter: grayscale(0.2);
}

.tc-lanhu-tree-empty__title {
    font-size: 0.82rem;
    font-weight: 600;
    color: #334155;
    margin: 0;
}

.tc-lanhu-tree-empty__desc {
    font-size: 0.72rem;
    color: #64748b;
    margin: 0;
    line-height: 1.45;
    max-width: 14rem;
}

.tc-lanhu-tree-empty__btn {
    margin-top: 0.35rem;
    border: none;
    border-radius: 999px;
    padding: 0.45rem 1rem;
    font-size: 0.76rem;
    font-weight: 600;
    color: #fff;
    cursor: pointer;
    background: linear-gradient(135deg, #6366f1 0%, #4f46e5 100%);
    box-shadow: 0 8px 20px rgba(79, 70, 229, 0.28);
}

.tc-lanhu-tree-rail__foot {
    padding: 0.45rem 0.65rem 0.65rem;
    transition: opacity 0.18s ease;
    border-radius: 0 0 10px 10px;
    overflow: hidden;
}

.tc-lanhu-tree-status {
    display: block;
    font-size: 0.68rem;
    color: #64748b;
    min-height: 1rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.tc-lanhu-tree-status--ok { color: #059669; }
.tc-lanhu-tree-status--error { color: #dc2626; }
.tc-lanhu-tree-status--loading { color: #4f46e5; }

/* 连接蓝湖弹窗 */
#tc-lanhu-tree-connect-modal {
    z-index: 75;
}

.tc-lanhu-tree-connect-card {
    width: min(520px, 100%);
    border-radius: 1rem;
    background: linear-gradient(180deg, #ffffff 0%, #f8fafc 100%);
    border: 1px solid rgba(148, 163, 184, 0.35);
    box-shadow: 0 24px 60px rgba(15, 23, 42, 0.18);
    padding: 1.25rem 1.35rem 1.1rem;
}

.tc-lanhu-tree-connect-card__head {
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
    margin-bottom: 1rem;
}

.tc-lanhu-tree-connect-card__badge {
    width: 2.5rem;
    height: 2.5rem;
    border-radius: 0.7rem;
    display: grid;
    place-items: center;
    color: #fff;
    background: linear-gradient(145deg, #818cf8, #4f46e5);
    flex-shrink: 0;
}

.tc-lanhu-tree-connect-card__badge svg {
    width: 1.25rem;
    height: 1.25rem;
}

.tc-lanhu-tree-connect-card__title {
    font-size: 1rem;
    font-weight: 700;
    color: #0f172a;
    margin: 0 0 0.2rem;
}

.tc-lanhu-tree-connect-card__desc {
    font-size: 0.78rem;
    color: #64748b;
    margin: 0;
    line-height: 1.45;
}

.tc-lanhu-tree-connect-field {
    margin-bottom: 0.75rem;
}

.tc-lanhu-tree-connect-field label {
    display: block;
    font-size: 0.72rem;
    font-weight: 600;
    color: #475569;
    margin-bottom: 0.3rem;
}

.tc-lanhu-tree-connect-field input,
.tc-lanhu-tree-connect-field textarea {
    width: 100%;
    border-radius: 0.65rem;
    border: 1px solid rgba(148, 163, 184, 0.45);
    padding: 0.45rem 0.55rem;
    font-size: 0.78rem;
    color: #1e293b;
    background: #fff;
}

.tc-lanhu-tree-connect-field textarea {
    min-height: 5.5rem;
    resize: vertical;
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    line-height: 1.4;
}

.tc-lanhu-tree-connect-actions {
    display: flex;
    justify-content: flex-end;
    gap: 0.5rem;
    margin-top: 0.35rem;
}

@media (max-width: 1100px) {
    .tc-lanhu-doc-tree-rail:not(.tc-lanhu-doc-tree-rail--collapsed) {
        --tc-lanhu-tree-w: 248px;
    }
}

@media (max-width: 900px) {
    #main-grid.tc-main-grid--with-lanhu-tree {
        flex-direction: column;
    }
    .tc-lanhu-doc-tree-rail:not(.tc-lanhu-doc-tree-rail--collapsed) {
        --tc-lanhu-tree-w: 100%;
        max-width: 100%;
        flex-basis: auto;
        width: 100%;
        min-height: 180px;
        max-height: min(32vh, 280px);
        height: auto;
        border-right: none;
        border-bottom: 1px solid var(--tc-lanhu-tree-border);
    }
}

/* —— 工作台卡片内：左侧树 + 右侧用例区并排铺满（不锁 body/main，避免页面变形） —— */
.tc-workbench-scope.tc-workbench-scope--lanhu-fill {
    height: var(--tc-wb-grid-h, auto);
    max-height: var(--tc-wb-grid-h, none);
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.tc-workbench-scope--lanhu-fill #tc-main-content-shell.tc-main-wb-surface {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    padding: 0.5rem 0.6rem;
}

.tc-workbench-scope--lanhu-fill #main-grid.tc-main-grid--with-lanhu-tree {
    flex: 1 1 auto;
    min-height: 0;
    height: 100%;
    overflow: hidden;
    display: flex !important;
    flex-direction: row !important;
    flex-wrap: nowrap !important;
    align-items: stretch !important;
    gap: 0 !important;
}

.tc-workbench-scope--lanhu-fill #main-grid.tc-main-grid--with-lanhu-tree .tc-lanhu-doc-tree-rail {
    align-self: stretch;
    min-height: 0;
    max-height: none;
    height: auto;
    overflow: hidden;
    border-radius: 10px;
    border: 1px solid var(--tc-lanhu-tree-glass-border);
    border-right-color: rgba(148, 163, 184, 0.22);
}

.tc-workbench-scope--lanhu-fill #main-grid.tc-main-grid--with-lanhu-tree .tc-lanhu-tree-rail__head {
    border-radius: 10px 10px 0 0;
}

.tc-workbench-scope--lanhu-fill .tc-lanhu-doc-tree-rail--collapsed .tc-lanhu-tree-rail__head {
    border-radius: 1.8rem 1.2rem 1.8rem 1.2rem / 2.4rem 1.6rem 2.4rem 1.6rem;
}

.tc-workbench-scope--lanhu-fill #main-grid.tc-main-grid--with-lanhu-tree .tc-main-grid__workspace,
.tc-workbench-scope--lanhu-fill #right-panel.tc-main-grid__workspace {
    flex: 1 1 0;
    min-width: 0;
    min-height: 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.tc-workbench-scope--lanhu-fill #right-panel #table-workspace {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    padding: 0.45rem 0.5rem;
}

.tc-workbench-scope--lanhu-fill #right-panel #table-workspace {
    background: linear-gradient(
        180deg,
        rgba(255, 255, 255, 0.14) 0%,
        rgba(248, 250, 252, 0.1) 55%,
        rgba(241, 245, 249, 0.08) 100%
    );
    border: 1px solid rgba(148, 163, 184, 0.22);
    backdrop-filter: blur(14px) saturate(1.08);
    -webkit-backdrop-filter: blur(14px) saturate(1.08);
    box-shadow:
        0 1px 3px rgba(15, 23, 42, 0.06),
        inset 0 1px 0 rgba(255, 255, 255, 0.28);
}

.tc-workbench-scope--lanhu-fill #right-panel #table-workspace #table-toolbar.tc-table-workspace__head {
    flex: 0 0 auto;
    margin-bottom: 0.35rem;
    padding: 0.42rem 0.55rem;
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;
    border-bottom: none;
    border-radius: 0.75rem;
    border: 1px solid rgba(148, 163, 184, 0.22);
    background: rgba(255, 255, 255, 0.38);
    backdrop-filter: blur(12px) saturate(1.1);
    -webkit-backdrop-filter: blur(12px) saturate(1.1);
    box-shadow:
        0 1px 3px rgba(15, 23, 42, 0.06),
        inset 0 1px 0 rgba(255, 255, 255, 0.35);
}

.tc-workbench-scope--lanhu-fill #table-toolbar.tc-table-workspace__head {
    flex: 0 0 auto;
    margin-bottom: 0.35rem;
    padding: 0.5rem 0.65rem;
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;
}

.tc-workbench-scope--lanhu-fill #tc-table-toolbar-center,
.tc-workbench-scope--lanhu-fill #tc-table-toolbar-right {
    min-width: 0;
    max-width: 100%;
}

.tc-workbench-scope--lanhu-fill #tc-right-view-nav {
    max-width: 100%;
    border: 1px solid rgba(148, 163, 184, 0.28);
    background: rgba(255, 255, 255, 0.42);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, 0.35),
        0 1px 2px rgba(15, 23, 42, 0.05);
}


.tc-workbench-scope--lanhu-fill #tc-right-panel-title {
    display: none !important;
}

.tc-workbench-scope--lanhu-fill .tc-right-view-nav__btn {
    min-height: 1.7rem;
    padding: 0.25rem 0.5rem;
    font-size: 0.74rem;
    border-color: rgba(148, 163, 184, 0.32);
    background: rgba(255, 255, 255, 0.48);
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.3);
}

.tc-workbench-scope--lanhu-fill .tc-right-view-nav__btn:hover:not(.tc-right-view-nav__btn--active) {
    background: rgba(255, 255, 255, 0.68);
    border-color: rgba(99, 102, 241, 0.38);
}

.tc-workbench-scope--lanhu-fill #table-toolbar #restore-columns button {
    border-color: rgba(148, 163, 184, 0.32);
    background: rgba(255, 255, 255, 0.52);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.32);
}

.tc-workbench-scope--lanhu-fill #table-toolbar #restore-columns button:hover {
    background: rgba(255, 255, 255, 0.72);
    border-color: rgba(99, 102, 241, 0.38);
}

.tc-workbench-scope--lanhu-fill #table-toolbar .tc-table-filter-bar__search,
.tc-workbench-scope--lanhu-fill #table-toolbar .tc-table-filter-bar__reset {
    border-color: rgba(148, 163, 184, 0.32);
    background: rgba(255, 255, 255, 0.52);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
}

.tc-workbench-scope--lanhu-fill #table-toolbar .tc-table-filter-bar__reset:hover {
    background: rgba(238, 242, 255, 0.72);
    border-color: rgba(99, 102, 241, 0.38);
}

.tc-workbench-scope--lanhu-fill #table-toolbar .tc-right-panel-head #tc-gen-options-row {
    gap: 0.3rem;
}

.tc-workbench-scope--lanhu-fill #table-toolbar .tc-right-panel-head .tc-gen-toggle-btn {
    min-height: 1.7rem;
    padding: 0.28rem 0.62rem;
    font-size: 0.72rem;
    border-color: rgba(148, 163, 184, 0.28);
    background: rgba(255, 255, 255, 0.48);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.3);
}

.tc-workbench-scope--lanhu-fill #table-toolbar .tc-right-panel-head .tc-gen-option-help-btn {
    width: 1.1rem;
    height: 1.1rem;
    font-size: 0.62rem;
    border-color: rgba(148, 163, 184, 0.28);
    background: rgba(255, 255, 255, 0.42);
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
}

.tc-workbench-scope--lanhu-fill #tc-table-list-panel {
    flex: 1 1 auto;
    min-height: 0;
    overflow: hidden;
}

.tc-workbench-scope--lanhu-fill .tc-vxe-table-view-panel:not(.hidden) {
    flex: 1 1 auto;
    min-height: 0;
    max-height: 100%;
}

.tc-workbench-scope--lanhu-fill .tc-vxe-table-mount {
    flex: 1 1 auto;
    min-height: 0;
    height: 100%;
    display: flex;
    flex-direction: column;
}

.tc-workbench-scope--lanhu-fill #tc-mindmap-view-panel:not(.hidden) {
    flex: 1 1 auto;
    min-height: 0;
}

.tc-workbench-scope--lanhu-fill .tc-mindmap-panel {
    min-height: 0 !important;
    height: 100% !important;
    flex: 1 1 auto;
}

.tc-workbench-scope--lanhu-fill .tc-mindmap-stage,
.tc-workbench-scope--lanhu-fill .tc-smm-container {
    height: 100% !important;
    min-height: 0 !important;
    max-height: 100% !important;
}

.tc-workbench-scope--lanhu-fill .tc-table-template-empty {
    flex: 1 1 auto;
    min-height: 0;
}

@media (max-width: 900px) {
    .tc-workbench-scope.tc-workbench-scope--lanhu-fill {
        height: auto;
        max-height: none;
        overflow: visible;
    }
    .tc-workbench-scope--lanhu-fill #main-grid.tc-main-grid--with-lanhu-tree {
        height: auto;
    }
}


/* =================================================================
   连接蓝湖文档弹窗 V2 —— 玻璃质感卡片（新版类名，不冲突）
   ================================================================= */
.tc-lanhu-connect-wrapper {
    position: fixed; inset: 0; z-index: 10100;
    display: none; align-items: center; justify-content: center;
    padding: 1rem;
    overflow-y: auto;
    box-sizing: border-box;
}
.tc-lanhu-connect-wrapper.flex { display: flex; }

.tc-lanhu-connect-backdrop {
    position: absolute; inset: 0;
    background: rgba(15, 23, 42, 0.5);
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
}

.tc-lanhu-connect-card {
    position: relative;
    width: min(380px, calc(100vw - 2rem));
    max-height: min(72vh, calc(100vh - 5rem));
    display: flex; flex-direction: column;
    border-radius: 1rem;
    background: linear-gradient(165deg, rgba(255,255,255,0.95) 0%, rgba(248,250,252,0.92) 100%);
    backdrop-filter: blur(20px);
    -webkit-backdrop-filter: blur(20px);
    border: 1px solid rgba(148, 163, 184, 0.25);
    box-shadow: 0 25px 70px rgba(15, 23, 42, 0.25),
                0 4px 12px rgba(15, 23, 42, 0.08),
                inset 0 1px 0 rgba(255,255,255,0.6);
    overflow: hidden;
    animation: tcConnectCardIn 0.25s ease-out;
}

@keyframes tcConnectCardIn {
    from { opacity: 0; transform: translateY(12px) scale(0.97); }
    to { opacity: 1; transform: translateY(0) scale(1); }
}

.tc-lanhu-connect-card__head {
    display: flex; align-items: flex-start; gap: 0.65rem;
    padding: 0.65rem 0.85rem 0.5rem;
    border-bottom: 1px solid rgba(148, 163, 184, 0.12);
    flex-shrink: 0;
}
.tc-lanhu-connect-card__badge {
    width: 1.55rem; height: 1.55rem;
    border-radius: 0.75rem;
    display: grid; place-items: center;
    color: #fff;
    background: linear-gradient(145deg, #818cf8, #6366f1);
    flex-shrink: 0;
}
.tc-lanhu-connect-card__badge svg { width: 0.95rem; height: 0.95rem; }
.tc-lanhu-connect-card__title-group { flex: 1; min-width: 0; }
.tc-lanhu-connect-card__title {
    font-size: 0.8125rem; font-weight: 700; color: #0f172a;
    margin: 0 0 0.15rem; letter-spacing: -0.01em;
}
.tc-lanhu-connect-card__desc {
    font-size: 0.66rem; color: #64748b; margin: 0; line-height: 1.35;
}
.tc-lanhu-connect-card__close {
    width: 1.8rem; height: 1.8rem;
    border-radius: 0.55rem; border: 1px solid rgba(148, 163, 184, 0.2);
    background: rgba(248, 250, 252, 0.8);
    color: #94a3b8; cursor: pointer; font-size: 1.15rem;
    display: grid; place-items: center;
    flex-shrink: 0; transition: all 0.2s;
}
.tc-lanhu-connect-card__close:hover {
    background: rgba(239, 68, 68, 0.08); color: #ef4444; border-color: rgba(239, 68, 68, 0.2);
}

.tc-lanhu-connect-card__body {
    flex: 1 1 auto; overflow-y: auto; overflow-x: hidden;
    padding: 0.45rem 0.85rem 0.35rem;
}

.tc-lanhu-connect-card__section {
    margin-bottom: 0.5rem;
    padding: 0.55rem 0.7rem;
    border-radius: 0.85rem;
    background: rgba(248, 250, 252, 0.6);
    border: 1px solid rgba(148, 163, 184, 0.1);
}
.tc-lanhu-connect-card__section-title {
    display: flex; align-items: center; gap: 0.35rem;
    font-size: 0.68rem; font-weight: 700; color: #475569;
    margin-bottom: 0.35rem;
}
.tc-lanhu-connect-card__section-title svg { width: 15px; height: 15px; color: #6366f1; }
.tc-lanhu-connect-card__section-hint {
    font-size: 0.65rem; color: #94a3b8; font-weight: 400;
    margin-left: auto;
}

.tc-lanhu-connect-field { margin-bottom: 0.45rem; }
.tc-lanhu-connect-field:last-child { margin-bottom: 0; }
.tc-lanhu-connect-field label {
    display: block; font-size: 0.68rem; font-weight: 600;
    color: #475569; margin-bottom: 0.25rem;
}
.tc-lanhu-connect-field__opt {
    font-weight: 500;
    color: #94a3b8;
}
.tc-lanhu-connect-field input,
.tc-lanhu-connect-field textarea {
    width: 100%; border-radius: 0.6rem;
    border: 1px solid rgba(148, 163, 184, 0.35);
    padding: 0.5rem 0.65rem;
    font-size: 0.72rem; color: #1e293b;
    background: rgba(255, 255, 255, 0.7);
    outline: none; transition: all 0.2s;
    box-sizing: border-box;
}
.tc-lanhu-connect-field input:focus,
.tc-lanhu-connect-field textarea:focus {
    border-color: #818cf8; box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.08);
}
.tc-lanhu-connect-field textarea {
    resize: vertical; min-height: 2.75rem;
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    line-height: 1.45;
}

/* RAG 按钮行 */
.tc-lanhu-connect-field-row {
    display: flex; align-items: center; gap: 0.6rem; margin-top: 0.25rem;
}
.tc-lanhu-connect-field-label {
    font-size: 0.68rem; font-weight: 600; color: #475569;
}

/* ---- RAG 按钮（连接弹窗内，与生成区 RAG 开关视觉一致） ---- */
.tc-connect-rag-btn {
    display: inline-flex; align-items: center; gap: 0.4rem;
    padding: 4px 10px; border-radius: 9999px;
    border: 1.5px solid rgba(148, 163, 184, 0.45);
    background: #ffffff;
    cursor: pointer; outline: none;
    font-size: 0.72rem; font-weight: 600; color: #64748b;
    transition: border-color 0.2s ease, background 0.2s ease, color 0.2s ease, box-shadow 0.2s ease, filter 0.2s ease;
    min-height: 28px;
    box-shadow: 0 1px 2px rgba(15, 23, 42, 0.05);
}
.tc-connect-rag-btn:hover {
    border-color: rgba(124, 58, 237, 0.35);
    background: #faf5ff;
    color: #6d28d9;
}
.tc-connect-rag-btn__icon { width: 15px; height: 15px; flex-shrink: 0; }
.tc-connect-rag-btn__label { white-space: nowrap; }

/* Locked */
.tc-connect-rag-btn--locked {
    opacity: 1;
    border-color: rgba(217, 119, 6, 0.42);
    background: linear-gradient(135deg, #fffbeb 0%, #fef3c7 100%);
    color: #92400e;
    box-shadow: 0 1px 2px rgba(15, 23, 42, 0.05);
}
.tc-connect-rag-btn--locked:hover {
    border-color: rgba(217, 119, 6, 0.58);
    background: linear-gradient(135deg, #fef9c3 0%, #fde68a 100%);
    color: #78350f;
    filter: brightness(1.02);
}
.tc-connect-rag-btn--locked .tc-connect-rag-btn__icon--locked { color: #d97706; }

/* On */
.tc-connect-rag-btn--on {
    border-color: rgba(124, 58, 237, 0.45);
    background: linear-gradient(135deg, #8b5cf6 0%, #7c3aed 48%, #6d28d9 100%);
    color: #ffffff;
    box-shadow:
        0 1px 2px rgba(15, 23, 42, 0.06),
        0 4px 14px rgba(109, 40, 217, 0.26);
}
.tc-connect-rag-btn--on:hover {
    filter: brightness(1.06);
}

/* Off */
.tc-connect-rag-btn--off {
    border-color: rgba(148, 163, 184, 0.55);
    background: #ffffff;
    color: #64748b;
    box-shadow: 0 1px 2px rgba(15, 23, 42, 0.05);
}
.tc-connect-rag-btn--off:hover {
    border-color: rgba(124, 58, 237, 0.35);
    background: #faf5ff;
    color: #6d28d9;
    box-shadow: 0 2px 6px rgba(109, 40, 217, 0.1);
}

/* Icon toggle */
.tc-connect-rag-btn__icon--locked { display: inline; }
.tc-connect-rag-btn__icon--unlocked { display: none; }
.tc-connect-rag-btn--on .tc-connect-rag-btn__icon--locked { display: none; }
.tc-connect-rag-btn--on .tc-connect-rag-btn__icon--unlocked { display: inline; }
.tc-connect-rag-btn--off .tc-connect-rag-btn__icon--locked { display: none; }
.tc-connect-rag-btn--off .tc-connect-rag-btn__icon--unlocked { display: inline; }

/* 恢复默认提示词链接 */
.tc-lanhu-connect-card__reset-link {
    display: inline-block; margin-top: 0.35rem;
    font-size: 0.68rem; color: #6366f1; cursor: pointer;
    background: none; border: none; padding: 0;
    text-decoration: none;
    transition: color 0.2s;
}
.tc-lanhu-connect-card__reset-link:hover { color: #4f46e5; text-decoration: underline; }

/* Footer */
.tc-lanhu-connect-card__foot {
    display: flex; justify-content: flex-end; gap: 0.5rem;
    padding: 0.55rem 0.85rem;
    border-top: 1px solid rgba(148, 163, 184, 0.12);
    flex-shrink: 0;
    background: rgba(248, 250, 252, 0.4);
}
.tc-lanhu-connect-card__btn {
    display: inline-flex; align-items: center; gap: 0.35rem;
    padding: 0.42rem 0.85rem; border-radius: 0.55rem;
    font-size: 0.72rem; font-weight: 600;
    cursor: pointer; border: none; outline: none;
    transition: all 0.2s;
}
.tc-lanhu-connect-card__btn svg { width: 14px; height: 14px; }
.tc-lanhu-connect-card__btn--ghost {
    background: transparent; color: #64748b;
    border: 1px solid rgba(148, 163, 184, 0.2);
}
.tc-lanhu-connect-card__btn--ghost:hover {
    background: rgba(148, 163, 184, 0.06); color: #475569;
}
.tc-lanhu-connect-card__btn--secondary {
    background: rgba(99, 102, 241, 0.08); color: #6366f1;
    border: 1px solid rgba(99, 102, 241, 0.15);
}
.tc-lanhu-connect-card__btn--secondary:hover {
    background: rgba(99, 102, 241, 0.14);
}
.tc-lanhu-connect-card__btn--primary {
    background: linear-gradient(135deg, #6366f1, #8b5cf6);
    color: #fff; box-shadow: 0 3px 12px rgba(99, 102, 241, 0.25);
}
.tc-lanhu-connect-card__btn--primary:hover {
    box-shadow: 0 5px 18px rgba(99, 102, 241, 0.35);
    transform: translateY(-1px);
}

/* =================================================================
   生成弹窗 V2 —— 简约高级卡片
   ================================================================= */
.tc-gen-modal-v2-wrapper {
    position: fixed; inset: 0; z-index: 10100;
    display: none; align-items: center; justify-content: center;
}
.tc-gen-modal-v2-wrapper.flex { display: flex; }

.tc-gen-modal-v2-backdrop {
    position: absolute; inset: 0;
    background: rgba(15, 23, 42, 0.45);
    backdrop-filter: blur(4px);
    -webkit-backdrop-filter: blur(4px);
}

.tc-gen-modal-v2-card {
    position: relative;
    width: min(440px, 90vw);
    border-radius: 1.2rem;
    background: linear-gradient(175deg, rgba(255,255,255,0.96) 0%, rgba(248,250,252,0.94) 100%);
    backdrop-filter: blur(24px);
    -webkit-backdrop-filter: blur(24px);
    border: 1px solid rgba(148, 163, 184, 0.2);
    box-shadow: 0 20px 60px rgba(15, 23, 42, 0.2),
                0 4px 10px rgba(15, 23, 42, 0.06),
                inset 0 1px 0 rgba(255,255,255,0.5);
    overflow: hidden;
    animation: tcGenModalV2In 0.25s ease-out;
}

@keyframes tcGenModalV2In {
    from { opacity: 0; transform: translateY(10px) scale(0.98); }
    to { opacity: 1; transform: translateY(0) scale(1); }
}

.tc-gen-modal-v2__head {
    display: flex; align-items: flex-start; gap: 0.6rem;
    padding: 1.1rem 1.2rem 0.8rem;
    border-bottom: 1px solid rgba(148, 163, 184, 0.1);
}
.tc-gen-modal-v2__badge {
    width: 2.1rem; height: 2.1rem; border-radius: 0.7rem;
    display: grid; place-items: center;
    color: #fff;
    background: linear-gradient(145deg, #a78bfa, #7c3aed);
    flex-shrink: 0;
}
.tc-gen-modal-v2__badge svg { width: 1rem; height: 1rem; }
.tc-gen-modal-v2__title {
    font-size: 0.9rem; font-weight: 700; color: #0f172a;
    margin: 0 0 0.15rem;
}
.tc-gen-modal-v2__subtitle {
    font-size: 0.68rem; color: #64748b; margin: 0; line-height: 1.35;
}
.tc-gen-modal-v2__close {
    margin-left: auto; width: 1.65rem; height: 1.65rem;
    border-radius: 0.5rem; border: 1px solid rgba(148, 163, 184, 0.18);
    background: rgba(248, 250, 252, 0.7);
    color: #94a3b8; cursor: pointer; font-size: 1.05rem;
    display: grid; place-items: center;
    flex-shrink: 0; transition: all 0.2s;
}
.tc-gen-modal-v2__close:hover {
    background: rgba(239, 68, 68, 0.06); color: #ef4444;
}

.tc-gen-modal-v2__body {
    padding: 1rem 1.2rem;
}

.tc-gen-modal-v2__info-row {
    display: flex; align-items: center; gap: 0.6rem;
    padding: 0.65rem 0.85rem;
    border-radius: 0.75rem;
    background: linear-gradient(135deg, rgba(99, 102, 241, 0.04), rgba(139, 92, 246, 0.02));
    border: 1px solid rgba(99, 102, 241, 0.1);
    margin-bottom: 0.65rem;
}
.tc-gen-modal-v2__info-label {
    font-size: 0.7rem; font-weight: 600; color: #64748b;
    flex-shrink: 0;
}
.tc-gen-modal-v2__info-value {
    font-size: 0.82rem; font-weight: 700; color: #1e293b;
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}

.tc-gen-modal-v2__note {
    display: flex; align-items: flex-start; gap: 0.35rem;
    padding: 0.55rem 0.75rem;
    border-radius: 0.6rem;
    background: rgba(245, 158, 11, 0.05);
    border: 1px solid rgba(245, 158, 11, 0.1);
    font-size: 0.66rem; color: #92400e; line-height: 1.4;
}
.tc-gen-modal-v2__note svg {
    width: 14px; height: 14px; flex-shrink: 0;
    margin-top: 0.05rem; color: #f59e0b;
}

.tc-gen-modal-v2__foot {
    display: flex; justify-content: flex-end; gap: 0.5rem;
    padding: 0.7rem 1.2rem;
    border-top: 1px solid rgba(148, 163, 184, 0.1);
    background: rgba(248, 250, 252, 0.3);
}

.tc-gen-modal-v2__btn {
    display: inline-flex; align-items: center; gap: 0.35rem;
    padding: 0.48rem 1rem; border-radius: 0.6rem;
    font-size: 0.76rem; font-weight: 600;
    cursor: pointer; border: none; outline: none;
    transition: all 0.2s;
}
.tc-gen-modal-v2__btn svg { width: 13px; height: 13px; }
.tc-gen-modal-v2__btn--secondary {
    background: rgba(148, 163, 184, 0.07); color: #64748b;
    border: 1px solid rgba(148, 163, 184, 0.12);
}
.tc-gen-modal-v2__btn--secondary:hover {
    background: rgba(148, 163, 184, 0.13); color: #475569;
}
.tc-gen-modal-v2__btn--primary {
    background: linear-gradient(135deg, #6366f1, #8b5cf6);
    color: #fff; box-shadow: 0 3px 10px rgba(99, 102, 241, 0.2);
}
.tc-gen-modal-v2__btn--primary:hover {
    box-shadow: 0 5px 16px rgba(99, 102, 241, 0.3);
    transform: translateY(-1px);
}


/* ===== 质量检测切换按钮（测试用例生成旁边） ===== */
.tc-quality-toggle-btn {
    display: inline-flex; align-items: center; gap: 0.45rem;
    padding: 5px 14px; border-radius: 9999px;
    border: 1.5px solid #e2e8f0;
    background: #ffffff;
    cursor: pointer; outline: none;
    font-size: 0.78rem; font-weight: 600;
    color: #475569;
    transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
    min-height: 32px;
    white-space: nowrap;
    flex-shrink: 0;
    box-shadow: 0 1px 3px rgba(0,0,0,0.04), 0 1px 2px rgba(0,0,0,0.03);
}
.tc-quality-toggle-btn:hover {
    border-color: #818cf8;
    background: #eef2ff;
    color: #4338ca;
    box-shadow: 0 2px 6px rgba(99,102,241,0.12);
    transform: translateY(-0.5px);
}
.tc-quality-toggle-btn:active {
    transform: translateY(0);
    box-shadow: 0 1px 2px rgba(0,0,0,0.04);
}
.tc-quality-toggle-btn:focus-visible {
    outline: 2px solid #818cf8;
    outline-offset: 2px;
}
.tc-quality-toggle-btn__icon {
    width: 15px; height: 15px; flex-shrink: 0;
}
.tc-quality-toggle-btn__label { white-space: nowrap; }

/* ON — 绿色强调 */
.tc-quality-toggle-btn--on {
    border-color: #6ee7b7;
    background: linear-gradient(135deg, #ecfdf5, #d1fae5);
    color: #059669;
    box-shadow: 0 0 0 1px rgba(16,185,129,0.15), 0 2px 6px rgba(16,185,129,0.1);
    font-weight: 600;
}
.tc-quality-toggle-btn--on:hover {
    border-color: #34d399;
    background: linear-gradient(135deg, #d1fae5, #a7f3d0);
    color: #047857;
    box-shadow: 0 0 0 1px rgba(16,185,129,0.25), 0 3px 10px rgba(16,185,129,0.18);
    transform: translateY(-0.5px);
}

/* OFF — 温和的灰调 */
.tc-quality-toggle-btn--off {
    color: #64748b;
    background: #f8fafc;
    border-color: #e2e8f0;
}
.tc-quality-toggle-btn--off:hover {
    color: #334155;
    background: #f1f5f9;
    border-color: #cbd5e1;
    box-shadow: 0 2px 6px rgba(0,0,0,0.06);
    transform: translateY(-0.5px);
}



/* 质量检测进行中 — 按钮不可点击态 */
.tc-quality-toggle-btn--busy,
.tc-quality-toggle-btn:disabled {
    cursor: not-allowed;
    pointer-events: none;
    color: #94a3b8;
    background: #f1f5f9;
    border-color: #cbd5e1;
    box-shadow: none;
    transform: none;
    opacity: 1;
}
.tc-quality-toggle-btn--busy .tc-quality-toggle-btn__label,
.tc-quality-toggle-btn:disabled .tc-quality-toggle-btn__label {
    color: #64748b;
}
.tc-quality-toggle-btn--busy:hover,
.tc-quality-toggle-btn--busy:active,
.tc-quality-toggle-btn:disabled:hover,
.tc-quality-toggle-btn:disabled:active {
    color: #94a3b8;
    background: #f1f5f9;
    border-color: #cbd5e1;
    box-shadow: none;
    transform: none;
}
.tc-doc-switcher-trigger--qc-busy,
.tc-doc-switcher-trigger--qc-busy:disabled {
    cursor: not-allowed;
    opacity: 0.55;
}
.tc-lanhu-tree-rail__action-btn--locked,
.tc-lanhu-tree-rail__action-btn--locked:disabled {
    cursor: not-allowed;
    opacity: 0.55;
    pointer-events: none;
}


/* ===== 树节点生成按钮 ===== */
.tc-lanhu-tree-node__gen {
    display: inline-flex; align-items: center; justify-content: center;
    width: 1.35rem; height: 1.35rem;
    margin-left: 0.1rem; margin-right: 0.1rem;
    padding: 0; border: none; border-radius: 0.35rem;
    background: transparent; color: #7c3aed;
    cursor: pointer; flex-shrink: 0;
    opacity: 0;
    transition: opacity 0.15s ease, color 0.12s ease, background 0.12s ease;
}
.tc-lanhu-tree-node__gen svg {
    width: 0.85rem; height: 0.85rem;
}
.tc-lanhu-tree-node__row:hover .tc-lanhu-tree-node__gen,
.tc-lanhu-tree-node__row:focus-within .tc-lanhu-tree-node__gen {
    opacity: 1;
}
.tc-lanhu-tree-node__gen:hover {
    color: #6d28d9;
    background: rgba(124, 58, 237, 0.12);
}



/* =================================================================
   文档切换器 Dropdown — 高级玻璃质感
   ================================================================= */
.tc-lanhu-tree-rail__titles {
    position: relative;
    cursor: pointer;
    transition: opacity 0.2s ease;
}
.tc-lanhu-tree-rail__titles:hover {
    opacity: 0.85;
}

/* 向下箭头指示器，由 JS 动态注入 */
.tc-doc-switcher-trigger {
    position: absolute;
    right: 0.08rem;
    top: 0.04rem;
    transform: none;
    width: 1.18rem;
    height: 1.18rem;
    border: 1px solid rgba(99, 102, 241, 0.28);
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.9);
    color: #4f46e5;
    cursor: pointer;
    display: grid;
    place-items: center;
    opacity: 1;
    box-shadow: 0 1px 5px rgba(79, 70, 229, 0.13), inset 0 1px 0 rgba(255,255,255,0.9);
    transition: background 0.18s ease, border-color 0.18s ease, color 0.18s ease, transform 0.18s ease, box-shadow 0.18s ease;
}
.tc-lanhu-tree-rail__titles:hover .tc-doc-switcher-trigger,
.tc-doc-switcher-trigger:hover,
.tc-doc-switcher-trigger:focus-visible {
    color: #ffffff;
    border-color: rgba(79, 70, 229, 0.78);
    background: linear-gradient(135deg, #6366f1 0%, #4f46e5 100%);
    box-shadow: 0 5px 14px rgba(79, 70, 229, 0.28);
}
.tc-doc-switcher-trigger:focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.22), 0 5px 14px rgba(79, 70, 229, 0.28);
}
.tc-doc-switcher-trigger svg {
    width: 0.72rem;
    height: 0.72rem;
    stroke-width: 2.55;
    transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);
}

/* 下拉面板 */
.tc-doc-switcher-panel {
    position: fixed;
    z-index: 62;
    top: var(--tc-ds-top, 0px);
    left: var(--tc-ds-left, 0px);
    width: min(22rem, 90vw);
    border-radius: 1rem;
    background: linear-gradient(175deg, rgba(255,255,255,0.98) 0%, rgba(250,250,252,0.96) 100%);
    backdrop-filter: blur(24px) saturate(1.2);
    -webkit-backdrop-filter: blur(24px) saturate(1.2);
    border: 1px solid rgba(148, 163, 184, 0.2);
    box-shadow:
        0 16px 48px -12px rgba(15, 23, 42, 0.2),
        0 4px 16px -4px rgba(99, 102, 241, 0.08),
        inset 0 1px 0 rgba(255,255,255,0.6);
    transform-origin: top left;
    transform: scale(0.95);
    opacity: 0;
    pointer-events: none;
    transition: transform 0.2s cubic-bezier(0.4, 0, 0.2, 1),
                opacity 0.2s ease;
    overflow: hidden;
    display: none;
}

.tc-doc-switcher-panel--open {
    display: block;
    transform: scale(1);
    opacity: 1;
    pointer-events: auto;
}

/* 面板头部 */
.tc-doc-switcher-panel__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    padding: 0.65rem 0.9rem;
    border-bottom: 1px solid rgba(148, 163, 184, 0.1);
    background: rgba(248, 250, 252, 0.5);
}
.tc-doc-switcher-panel__title {
    font-size: 0.72rem;
    font-weight: 700;
    color: #475569;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}
.tc-doc-switcher-panel__add {
    width: 1.75rem;
    height: 1.75rem;
    border-radius: 0.5rem;
    border: 1.5px solid rgba(99, 102, 241, 0.25);
    background: linear-gradient(135deg, rgba(99,102,241,0.06), rgba(139,92,246,0.03));
    color: #6366f1;
    cursor: pointer;
    display: grid;
    place-items: center;
    transition: all 0.2s ease;
}
.tc-doc-switcher-panel__add:hover {
    background: linear-gradient(135deg, rgba(99,102,241,0.12), rgba(139,92,246,0.08));
    border-color: rgba(99, 102, 241, 0.45);
    box-shadow: 0 2px 8px rgba(99, 102, 241, 0.15);
}
.tc-doc-switcher-panel__add svg {
    width: 0.9rem;
    height: 0.9rem;
}

/* 文档列表 */
.tc-doc-switcher-list {
    max-height: min(18rem, 50vh);
    overflow-y: auto;
    padding: 0.35rem;
    scrollbar-width: thin;
    scrollbar-color: rgba(148, 163, 184, 0.3) transparent;
}

.tc-doc-switcher-empty {
    padding: 1.5rem 1rem;
    text-align: center;
    font-size: 0.72rem;
    color: #94a3b8;
    line-height: 1.55;
}

/* 文档项 */
.tc-doc-switcher-item {
    display: flex;
    align-items: center;
    gap: 0.45rem;
    padding: 0.5rem 0.65rem;
    border-radius: 0.6rem;
    cursor: pointer;
    transition: background 0.15s ease;
    position: relative;
}
.tc-doc-switcher-item:hover {
    background: rgba(99, 102, 241, 0.06);
}
.tc-doc-switcher-item:active {
    background: rgba(99, 102, 241, 0.1);
}

.tc-doc-switcher-item__icon {
    width: 1.7rem;
    height: 1.7rem;
    border-radius: 0.45rem;
    background: linear-gradient(135deg, rgba(99,102,241,0.08), rgba(139,92,246,0.04));
    color: #6366f1;
    display: grid;
    place-items: center;
    flex-shrink: 0;
}
.tc-doc-switcher-item__icon svg {
    width: 0.85rem;
    height: 0.85rem;
}
.tc-doc-switcher-item__name {
    flex: 1;
    min-width: 0;
    font-size: 0.78rem;
    font-weight: 500;
    color: #1e293b;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.tc-doc-switcher-item__time {
    font-size: 0.65rem;
    color: #94a3b8;
    flex-shrink: 0;
    font-variant-numeric: tabular-nums;
}
.tc-doc-switcher-item__del {
    width: 1.625rem;
    height: 1.625rem;
    border: 1px solid rgba(226, 232, 240, 0.95);
    border-radius: 0.5rem;
    background: linear-gradient(145deg, #ffffff 0%, #f8fafc 42%, #eef2ff 100%);
    color: #94a3b8;
    cursor: pointer;
    display: grid;
    place-items: center;
    flex-shrink: 0;
    font-size: 0.9375rem;
    font-weight: 500;
    line-height: 1;
    opacity: 1;
    box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04), inset 0 1px 0 rgba(255, 255, 255, 0.92);
    transition: background 0.18s ease, color 0.18s ease, border-color 0.18s ease, box-shadow 0.18s ease, transform 0.15s ease;
}
.tc-doc-switcher-item__del:hover {
    background: linear-gradient(145deg, #fff5f5 0%, #fee2e2 52%, #fecaca 100%);
    border-color: rgba(252, 165, 165, 0.55);
    color: #dc2626;
    box-shadow: 0 2px 6px rgba(239, 68, 68, 0.12), inset 0 1px 0 rgba(255, 255, 255, 0.85);
    transform: translateY(-1px);
}
.tc-doc-switcher-item__del:active {
    transform: translateY(0);
    box-shadow: 0 1px 2px rgba(239, 68, 68, 0.08);
}

/* =================================================================
   树栏头部 — 新增文档按钮
   ================================================================= */
.tc-lanhu-tree-rail__head-add-btn {
    width: 2rem;
    height: 2rem;
    border-radius: 0.65rem;
    border: 1.5px dashed rgba(99, 102, 241, 0.35);
    background: linear-gradient(135deg, rgba(99,102,241,0.05), rgba(139,92,246,0.02));
    color: #818cf8;
    cursor: pointer;
    display: grid;
    place-items: center;
    transition: all 0.25s ease;
    position: relative;
    overflow: hidden;
    flex-shrink: 0;
}
.tc-lanhu-tree-rail__head-add-btn::before {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(135deg, rgba(99,102,241,0.12), rgba(139,92,246,0.06));
    opacity: 0;
    transition: opacity 0.25s ease;
}
.tc-lanhu-tree-rail__head-add-btn:hover {
    border-color: rgba(99, 102, 241, 0.6);
    border-style: solid;
    box-shadow: 0 4px 16px rgba(99, 102, 241, 0.2);
    transform: translateY(-1px);
}
.tc-lanhu-tree-rail__head-add-btn:hover::before {
    opacity: 1;
}
.tc-lanhu-tree-rail__head-add-btn:active {
    transform: scale(0.95);
}
.tc-lanhu-tree-rail__head-add-btn svg {
    width: 1rem;
    height: 1rem;
    position: relative;
    z-index: 1;
}

/* 新增按钮微动效 */
@keyframes tc-add-btn-shimmer {
    0%, 100% { border-color: rgba(99, 102, 241, 0.35); }
    50% { border-color: rgba(139, 92, 246, 0.55); }
}
.tc-lanhu-tree-rail--has-data .tc-lanhu-tree-rail__head-add-btn {
    animation: tc-add-btn-shimmer 3s ease-in-out infinite;
}

/* 当文档列表为空时保持静态 */
.tc-lanhu-tree-rail:not(.tc-lanhu-tree-rail--has-data) .tc-lanhu-tree-rail__head-add-btn {
    animation: none;
}

.tc-lanhu-tree-node__gen--locked,
.tc-lanhu-tree-node__gen:disabled {
    opacity: 0.45;
    cursor: not-allowed;
    pointer-events: none;
}


/* =================================================================
   工作台首次进入/刷新 boot loading — 与页面切换 loading 隔离
   ================================================================= */
.tc-table-list-panel--boot-loading {
    position: relative;
    pointer-events: none;
}
.tc-table-list-panel--boot-loading::after {
    content: '';
    position: absolute;
    inset: 0;
    z-index: 10;
    border-radius: 10px;
    background: rgba(248, 250, 252, 0.82);
    backdrop-filter: blur(2px);
    -webkit-backdrop-filter: blur(2px);
}
.tc-table-list-panel--boot-loading::before {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    z-index: 11;
    width: 2.25rem;
    height: 2.25rem;
    margin: -1.125rem 0 0 -1.125rem;
    border: 2.5px solid rgba(99, 102, 241, 0.15);
    border-top-color: #6366f1;
    border-radius: 50%;
    animation: tc-lanhu-tree-chars-spin 0.7s linear infinite;
}
.tc-workbench-scope #tc-table-list-panel.tc-table-list-panel--boot-loading .tc-table-template-empty {
    visibility: hidden !important;
    pointer-events: none;
}

.tc-table-list-panel--boot-loading.tc-table-list-panel--locked .tc-table-template-empty {
    visibility: hidden;
    pointer-events: none;
}

/* =================================================================
   表格页面加载覆层 — 玻璃感 shimmer
   ================================================================= */
.tc-table-list-panel--page-loading {
    position: relative;
    pointer-events: none;
}
.tc-table-list-panel--page-loading::after {
    content: '';
    position: absolute;
    inset: 0;
    z-index: 10;
    border-radius: 10px;
    background: linear-gradient(
        110deg,
        rgba(99, 102, 241, 0) 30%,
        rgba(99, 102, 241, 0.06) 50%,
        rgba(99, 102, 241, 0) 70%
    );
    background-size: 200% 100%;
    animation: tc-table-page-loading-shimmer 1.5s ease-in-out infinite;
    backdrop-filter: blur(1px);
    -webkit-backdrop-filter: blur(1px);
}
/* loading 微标：面板中央小旋转环 */
.tc-table-list-panel--page-loading::before {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    z-index: 11;
    width: 2rem;
    height: 2rem;
    margin: -1rem 0 0 -1rem;
    border: 2.5px solid rgba(99, 102, 241, 0.15);
    border-top-color: #6366f1;
    border-radius: 50%;
    animation: tc-lanhu-tree-chars-spin 0.7s linear infinite;
}


/* 有用例页切换 loading 时压住「选择模板」占位，避免与 spinner 叠层混淆 */
.tc-table-list-panel--page-loading.tc-table-list-panel--locked .tc-table-template-empty {
    visibility: hidden;
    pointer-events: none;
}

@keyframes tc-table-page-loading-shimmer {
    0% { background-position: -200% 0; }
    100% { background-position: 200% 0; }
}

/* VXE virtual scroll container fix */
.tc-vxe-table-mount {
    height: calc(100vh - 290px) !important;
    min-height: 300px !important;
}
#tc-vxe-table-mount {
    height: calc(100vh - 290px) !important;
    min-height: 300px !important;
}




/* === tc_table_toolbar_ops.css === */
/* 表格顶栏「表格操作」下拉 — 替代紫色浮动编辑 FAB */
.tc-table-ops-anchor {
    position: relative;
    display: inline-flex;
    align-items: center;
    flex-shrink: 0;
}

.tc-table-ops-trigger {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    padding: 5px 12px 5px 10px;
    border-radius: 9999px;
    border: 1.5px solid #e2e8f0;
    background: #ffffff;
    cursor: pointer;
    outline: none;
    font-size: 0.78rem;
    font-weight: 600;
    color: #475569;
    transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
    min-height: 32px;
    white-space: nowrap;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04), 0 1px 2px rgba(0, 0, 0, 0.03);
}

.tc-table-ops-trigger:hover {
    border-color: #a78bfa;
    background: #f5f3ff;
    color: #6d28d9;
    box-shadow: 0 2px 6px rgba(124, 58, 237, 0.12);
    transform: translateY(-0.5px);
}

.tc-table-ops-trigger:active {
    transform: translateY(0);
}

.tc-table-ops-trigger:focus-visible {
    outline: 2px solid #a78bfa;
    outline-offset: 2px;
}

.tc-table-ops-trigger--open {
    border-color: #a78bfa;
    background: #ede9fe;
    color: #6d28d9;
}

.tc-table-ops-trigger__icon {
    width: 15px;
    height: 15px;
    flex-shrink: 0;
}

.tc-table-ops-trigger__label {
    white-space: nowrap;
}

.tc-table-ops-trigger__caret {
    width: 14px;
    height: 14px;
    flex-shrink: 0;
    opacity: 0.55;
    transition: transform 0.2s ease;
}

.tc-table-ops-trigger--open .tc-table-ops-trigger__caret {
    transform: rotate(180deg);
    opacity: 0.85;
}

.tc-table-ops-anchor .tc-table-ops-menu,
.tc-table-ops-anchor #tc-table-fab-sheet {
    position: absolute;
    top: calc(100% + 6px);
    left: 0;
    right: auto;
    bottom: auto;
    margin: 0 !important;
    transform: none !important;
    z-index: 140;
    min-width: 9.5rem;
}

.tc-table-ops-anchor .tc-table-ops-menu:not(.hidden),
.tc-table-ops-anchor #tc-table-fab-sheet:not(.hidden) {
    display: block;
}

/* 顶栏「表格操作」与浮动 FAB 共用 id，需覆盖 toolkit 中 #tc-table-fab-toggle 的圆形紫钮样式 */
#table-toolbar .tc-table-ops-anchor #tc-table-fab-toggle.tc-table-ops-trigger {
    position: static !important;
    left: auto !important;
    top: auto !important;
    right: auto !important;
    bottom: auto !important;
    transform: none !important;
    width: auto !important;
    height: auto !important;
    min-width: 0 !important;
    min-height: 32px !important;
    padding: 5px 12px 5px 10px !important;
    border-radius: 9999px !important;
    border: 1.5px solid #e2e8f0 !important;
    background: #ffffff !important;
    background-image: none !important;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04), 0 1px 2px rgba(0, 0, 0, 0.03) !important;
    color: #475569 !important;
    font-size: 0.78rem !important;
    font-weight: 600 !important;
    line-height: 1.2 !important;
}

#table-toolbar .tc-table-ops-anchor #tc-table-fab-toggle.tc-table-ops-trigger:hover {
    background: #f5f3ff !important;
    background-image: none !important;
    border-color: #a78bfa !important;
    color: #6d28d9 !important;
    box-shadow: 0 2px 6px rgba(124, 58, 237, 0.12) !important;
}

#table-toolbar .tc-table-ops-anchor #tc-table-fab-toggle.tc-table-ops-trigger .tc-table-ops-trigger__icon {
    width: 15px !important;
    height: 15px !important;
}

#table-toolbar .tc-table-ops-anchor #tc-table-fab-toggle.tc-table-ops-trigger .tc-table-fab-toggle__icon {
    display: none !important;
}

/* 下拉须浮于下方 Vxe 表格之上：抬升顶栏 stacking context，避免被兄弟节点 tc-table-list-panel 盖住 */
.tc-workbench-scope #table-toolbar.tc-table-workspace__head {
    position: relative;
    z-index: 50;
    overflow: visible;
}
.tc-workbench-scope #table-toolbar .tc-right-panel-head,
.tc-workbench-scope #table-toolbar .tc-table-ops-anchor {
    overflow: visible;
}
.tc-workbench-scope #table-toolbar .tc-table-ops-anchor {
    z-index: 55;
}
/* 顶栏模式下挂 body 的 fixed 定位菜单，层级高于表格固定表头 */
#tc-table-fab-sheet.tc-table-ops-menu.tc-fab-sheet--placed {
    z-index: 160 !important;
}


/* === tc_table_productivity.css === */
/* 表格搜索工具栏 */
.tc-workbench-scope #table-toolbar .tc-table-toolbar-right {
    display: flex;
    align-items: flex-end;
    justify-content: flex-end;
    flex-wrap: nowrap;
    gap: 0.5rem;
    min-width: 0;
    max-width: 100%;
    pointer-events: auto;
    position: relative;
    z-index: 4;
    overflow: visible;
}

.tc-table-toolbar-right-stack {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 0.35rem;
    min-width: 0;
    max-width: 100%;
}

.tc-restore-columns-slot:empty {
    display: none;
}

.tc-table-filter-bar {
    display: inline-flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
    width: auto;
    max-width: 100%;
    margin: 0;
    padding: 0;
    border: none;
    border-radius: 0;
    background: transparent;
}
.tc-table-filter-bar__main {
    display: inline-flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
    max-width: 100%;
}
.tc-table-filter-bar__search-wrap {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    flex: 0 1 auto;
}
.tc-table-filter-bar__search {
    width: 14rem;
    max-width: min(18rem, 42vw);
    min-width: 9rem;
    padding: 0.35rem 0.65rem;
    font-size: 0.8125rem;
    border: 1px solid rgb(203 213 225);
    border-radius: 0.5rem;
    background: #fff;
    color: #0f172a;
}
.tc-table-filter-bar__search:focus {
    outline: none;
    border-color: rgb(99 102 241);
    box-shadow: 0 0 0 2px rgba(99, 102, 241, 0.18);
}
.tc-table-filter-bar__reset {
    flex-shrink: 0;
    padding: 0.32rem 0.6rem;
    font-size: 0.75rem;
    font-weight: 500;
    line-height: 1.2;
    color: rgb(71 85 105);
    background: #fff;
    border: 1px solid rgb(203 213 225);
    border-radius: 0.5rem;
    cursor: pointer;
    white-space: nowrap;
    transition: background 0.15s, border-color 0.15s, color 0.15s;
}
.tc-table-filter-bar__reset:hover {
    color: rgb(67 56 202);
    border-color: rgba(99, 102, 241, 0.4);
    background: rgb(238 242 255);
}
.tc-table-filter-bar__reset:disabled {
    opacity: 0.45;
    cursor: not-allowed;
}
.tc-workbench-scope #table-toolbar .tc-table-toolbar-right #restore-columns {
    grid-column: unset;
    justify-self: unset;
    margin: 0;
}
.tc-table-filter-bar__meta {
    font-size: 0.6875rem;
    color: rgb(100 116 139);
    white-space: nowrap;
}

/* 筛选隐藏行 */
#test-case-table tr.tc-table-row--filtered-out,
#tc-vxe-table-mount .vxe-body--row.tc-table-row--filtered-out {
    display: none !important;
}

/* 表格随页面自然向下延展，不使用内嵌滚动框；横向仍可滚动 */
.tc-workbench-scope #tc-table-view-panel.tc-table-list-panel__body {
    max-height: none !important;
    overflow-x: auto;
    overflow-y: visible;
    border: none !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    background: transparent !important;
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
}
body.tc-hub-ai-tab .tc-workbench-scope #tc-table-view-panel.tc-table-list-panel__body {
    background: transparent !important;
    border: none !important;
    box-shadow: none !important;
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
}

/* Vxe 表格：固定视口 + 虚拟滚动，由组件内 ResizeObserver 计算高度 */
.tc-workbench-scope #tc-vxe-table-view-panel.tc-table-list-panel__body {
    flex: 1 1 auto;
    min-height: 280px;
    max-height: none;
    overflow: hidden;
    display: flex;
    flex-direction: column;
}
/* 未选模板：须压住上方 productivity 的 display:flex，否则透明表格层挡住「选择模板」 */
.tc-workbench-scope .tc-table-list-panel--locked #tc-vxe-table-view-panel,
.tc-workbench-scope .tc-table-list-panel--locked .tc-vxe-table-view-panel.tc-table-list-panel__body {
    display: none !important;
    pointer-events: none !important;
}
.tc-workbench-scope .tc-table-list-panel--locked .tc-table-template-empty {
    position: relative;
    z-index: 2;
    pointer-events: auto;
}
.tc-workbench-scope .tc-vxe-table-mount {
    flex: 1 1 auto;
    min-height: 280px;
    overflow: hidden;
    display: flex;
    flex-direction: column;
}

.tc-workbench-scope #table-toolbar .tc-right-panel-head {
    flex-wrap: wrap;
    row-gap: 0.35rem;
}

.tc-workbench-scope #table-toolbar .tc-table-ops-anchor {
    max-width: 100%;
}

.tc-workbench-scope #table-toolbar .tc-table-filter-bar {
    flex: 0 0 auto;
    flex-shrink: 0;
}

.tc-workbench-scope #table-toolbar .tc-table-filter-bar__search {
    width: 11.5rem;
    max-width: 13rem;
    min-width: 7.5rem;
}

.tc-workbench-scope #table-toolbar .tc-restore-columns,
.tc-workbench-scope #table-toolbar #restore-columns {
    display: grid;
    grid-template-columns: repeat(5, max-content);
    gap: 0.35rem;
    justify-content: flex-end;
    align-content: start;
    width: 100%;
    min-width: 0;
    max-width: 100%;
    margin: 0;
    padding: 0;
}

.tc-workbench-scope #table-toolbar .tc-restore-columns > button,
.tc-workbench-scope #table-toolbar #restore-columns > button {
    flex-shrink: 0;
}

.tc-workbench-scope #table-toolbar.tc-table-toolbar--has-restore {
    align-items: flex-start;
}

.tc-workbench-scope #table-toolbar.tc-table-toolbar--has-restore > .tc-table-toolbar-right {
    align-self: stretch;
}

@media (max-width: 960px) {
    .tc-workbench-scope #table-toolbar .tc-table-toolbar-right {
        flex: 1 1 100%;
        justify-content: flex-start;
    }
    .tc-table-toolbar-right-stack {
        align-items: stretch;
        width: 100%;
    }
    .tc-workbench-scope #table-toolbar .tc-restore-columns,
    .tc-workbench-scope #table-toolbar #restore-columns {
        grid-template-columns: repeat(3, max-content);
        justify-content: flex-start;
    }
    .tc-workbench-scope #table-toolbar .tc-table-filter-bar__search {
        width: 100%;
        max-width: 100%;
    }
}

/* AI 表格转导图：独立加载态（不影响普通「正在生成中」） */
.tc-workbench-scope .tc-mindmap-loading.tc-ai-table-convert-loading {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: clamp(1rem, 3vw, 2rem);
    background:
        radial-gradient(120% 80% at 50% 0%, rgba(99, 102, 241, 0.08) 0%, transparent 55%),
        linear-gradient(180deg, rgba(248, 250, 252, 0.98) 0%, rgba(241, 245, 249, 0.96) 100%);
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
}

.tc-ai-convert-shell {
    width: min(100%, 42rem);
    margin: 0 auto;
}

.tc-ai-convert-card {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    padding: 1.35rem 1.35rem 1.15rem;
    border-radius: 1rem;
    border: 1px solid rgba(148, 163, 184, 0.28);
    background: rgba(255, 255, 255, 0.82);
    box-shadow:
        0 1px 2px rgba(15, 23, 42, 0.04),
        0 12px 40px -18px rgba(79, 70, 229, 0.28);
}

.tc-ai-convert-card__head {
    display: flex;
    align-items: center;
    gap: 1rem;
}

.tc-ai-convert-orbit {
    position: relative;
    flex-shrink: 0;
    width: 3.25rem;
    height: 3.25rem;
}

.tc-ai-convert-orbit__ring {
    position: absolute;
    inset: 0;
    border-radius: 999px;
    border: 1.5px solid rgba(99, 102, 241, 0.18);
    border-top-color: rgba(99, 102, 241, 0.85);
    animation: tc-ai-convert-spin 1.1s linear infinite;
}

.tc-ai-convert-orbit__dot {
    position: absolute;
    top: 0.18rem;
    left: 50%;
    width: 0.42rem;
    height: 0.42rem;
    margin-left: -0.21rem;
    border-radius: 999px;
    background: linear-gradient(135deg, #6366f1 0%, #818cf8 100%);
    box-shadow: 0 0 0 4px rgba(99, 102, 241, 0.12);
    animation: tc-ai-convert-spin 1.1s linear infinite;
    transform-origin: 50% 1.45rem;
}

.tc-ai-convert-orbit__label {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.6875rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    color: #4338ca;
}

.tc-ai-convert-card__copy {
    min-width: 0;
    flex: 1 1 auto;
}

.tc-ai-convert-card__title {
    margin: 0;
    font-size: 1.0625rem;
    font-weight: 600;
    letter-spacing: -0.02em;
    line-height: 1.35;
    color: #0f172a;
}

.tc-ai-convert-card__sub {
    margin: 0.35rem 0 0;
    font-size: 0.8125rem;
    line-height: 1.5;
    color: #64748b;
}

.tc-ai-convert-card__track {
    position: relative;
    height: 3px;
    overflow: hidden;
    border-radius: 999px;
    background: rgba(148, 163, 184, 0.22);
}

.tc-ai-convert-card__track-fill {
    position: absolute;
    inset: 0 auto 0 0;
    width: 36%;
    border-radius: inherit;
    background: linear-gradient(90deg, rgba(99, 102, 241, 0.15) 0%, #6366f1 50%, rgba(129, 140, 248, 0.9) 100%);
    animation: tc-ai-convert-indeterminate 1.35s ease-in-out infinite;
}


#tc-ai-table-convert-stream-mount {
    position: relative;
}
.tc-ai-table-convert-stream-jump {
    position: absolute;
    right: 0.65rem;
    bottom: 0.55rem;
    z-index: 2;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 1.75rem;
    padding: 0.25rem 0.65rem;
    border: 1px solid rgba(14, 165, 233, 0.28);
    border-radius: 9999px;
    background: rgba(255, 255, 255, 0.96);
    color: #0369a1;
    font-size: 0.72rem;
    font-weight: 600;
    line-height: 1;
    cursor: pointer;
    box-shadow: 0 4px 14px -8px rgba(15, 23, 42, 0.35);
    transition: background-color 0.15s ease, border-color 0.15s ease, transform 0.12s ease;
}
.tc-ai-table-convert-stream-jump:hover {
    background: #f0f9ff;
    border-color: rgba(14, 165, 233, 0.45);
}
.tc-ai-table-convert-stream-jump:active {
    transform: scale(0.98);
}
.tc-ai-table-convert-stream-jump.hidden {
    display: none !important;
}
.tc-workbench-scope .tc-mindmap-loading.tc-ai-table-convert-loading .tc-ai-table-convert-stream {
    scroll-behavior: auto;
    overscroll-behavior: contain;
}

.tc-ai-convert-card__stream {
    display: flex;
    flex-direction: column;
    min-height: 0;
}


.tc-ai-table-convert-thinking__label {
    flex: 0 0 auto;
    margin: 0 0 0.35rem;
    font-size: 0.6875rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    color: #64748b;
}

.tc-ai-table-convert-stream--thinking {
    color: #334155;
}

.tc-ai-convert-card__stream:not(:has(.tc-ai-table-convert-stream)) {
    display: none;
}

.tc-workbench-scope .tc-mindmap-loading.tc-ai-table-convert-loading .tc-ai-table-convert-stream {
    flex: 1 1 auto;
    min-height: 7.5rem;
    max-height: min(46vh, 24rem);
    margin: 0;
    padding: 0.85rem 0.95rem;
    overflow: auto;
    border: 1px solid rgba(226, 232, 240, 0.95);
    border-radius: 0.75rem;
    background: linear-gradient(180deg, rgba(248, 250, 252, 0.96) 0%, rgba(255, 255, 255, 0.98) 100%);
    color: #475569;
    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
    font-size: 0.71875rem;
    line-height: 1.6;
    white-space: pre-wrap;
    word-break: break-word;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.85);
}

@keyframes tc-ai-convert-spin {
    to { transform: rotate(360deg); }
}


.tc-ai-convert-card__actions {
    display: flex;
    justify-content: center;
    margin-top: 14px;
}

.tc-ai-convert-cancel-btn {
    appearance: none;
    border: 1px solid rgba(248, 113, 113, 0.45);
    background: rgba(254, 242, 242, 0.95);
    color: #b91c1c;
    font-size: 13px;
    font-weight: 600;
    line-height: 1;
    padding: 9px 16px;
    border-radius: 999px;
    cursor: pointer;
    transition: background 0.15s ease, opacity 0.15s ease, transform 0.15s ease;
}

.tc-ai-convert-cancel-btn:hover:not(:disabled) {
    background: #fee2e2;
    transform: translateY(-1px);
}

.tc-ai-convert-cancel-btn:disabled,
.tc-ai-convert-cancel-btn.tc-ai-convert-lock-disabled {
    opacity: 0.55;
    cursor: not-allowed;
    transform: none;
}

@keyframes tc-ai-convert-indeterminate {
    0% { transform: translateX(-110%); }
    100% { transform: translateX(290%); }
}

@media (max-width: 640px) {
    .tc-ai-convert-card {
        padding: 1.1rem 1rem 0.95rem;
    }
    .tc-ai-convert-card__head {
        align-items: flex-start;
    }
    .tc-ai-convert-card__title {
        font-size: 1rem;
    }
}


/* 顶栏三栏：左操作 | 表格用例/思维导图居中 | 右搜索（隔离，不影响其他页面） */
.tc-workbench-scope #right-panel #table-workspace #table-toolbar.tc-table-workspace__head,
.tc-workbench-scope #table-toolbar.tc-table-workspace__head {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
    grid-template-areas: "tc-tb-left tc-tb-center tc-tb-right";
    align-items: center;
    column-gap: 0.75rem;
    row-gap: 0.5rem;
}

.tc-workbench-scope #table-toolbar.tc-table-workspace__head > .tc-right-panel-head {
    grid-area: tc-tb-left;
    justify-self: start;
    align-self: center;
    max-width: 100%;
}

.tc-workbench-scope #table-toolbar.tc-table-workspace__head > .tc-table-toolbar-center {
    grid-area: tc-tb-center;
    justify-self: center;
    align-self: center;
    display: flex;
    justify-content: center;
    width: max-content;
    max-width: 100%;
}

.tc-workbench-scope #table-toolbar.tc-table-workspace__head > .tc-table-toolbar-right {
    grid-area: tc-tb-right;
    justify-self: end;
    align-self: start;
    flex: unset;
    min-width: 0;
    width: auto;
    max-width: 100%;
}

.tc-workbench-scope #table-toolbar.tc-table-toolbar--has-restore > .tc-table-toolbar-right {
    align-self: start;
}

@media (max-width: 960px) {
    .tc-workbench-scope #table-toolbar.tc-table-workspace__head {
        grid-template-columns: 1fr;
        grid-template-areas:
            "tc-tb-left"
            "tc-tb-center"
            "tc-tb-right";
    }

    .tc-workbench-scope #table-toolbar.tc-table-workspace__head > .tc-table-toolbar-center {
        justify-self: center;
        width: 100%;
    }

    .tc-workbench-scope #table-toolbar.tc-table-workspace__head > .tc-table-toolbar-right {
        justify-self: stretch;
        width: 100%;
    }
}

/* AI 转导图进行中：锁定左侧需求树、蓝湖入口与表格 Tab（仅 tc-ai-table-convert-workbench-lock） */
.tc-workbench-scope.tc-ai-table-convert-workbench-lock #tc-lanhu-tree-mount,
.tc-workbench-scope.tc-ai-table-convert-workbench-lock #tc-lanhu-tree-head-add-btn,
.tc-workbench-scope.tc-ai-table-convert-workbench-lock #tc-lanhu-tree-connect-btn,
.tc-workbench-scope.tc-ai-table-convert-workbench-lock #tc-lanhu-tree-mount [data-tc-lanhu-tree-connect] {
    pointer-events: none;
}

.tc-workbench-scope.tc-ai-table-convert-workbench-lock #tc-lanhu-tree-head-add-btn,
.tc-workbench-scope.tc-ai-table-convert-workbench-lock #tc-lanhu-tree-connect-btn,
.tc-workbench-scope.tc-ai-table-convert-workbench-lock #tc-right-view-table-btn,
.tc-workbench-scope.tc-ai-table-convert-workbench-lock .tc-ai-convert-lock-disabled {
    opacity: 0.42;
    cursor: not-allowed;
    filter: grayscale(0.2);
}

.tc-workbench-scope.tc-ai-table-convert-workbench-lock #tc-right-view-table-btn {
    color: #94a3b8 !important;
    background: #f1f5f9 !important;
    border-color: #e2e8f0 !important;
    box-shadow: none !important;
}

.tc-workbench-scope.tc-ai-table-convert-workbench-lock #tc-lanhu-tree-mount .tc-lanhu-tree-node__row {
    opacity: 0.48;
    cursor: not-allowed;
}

.tc-workbench-scope.tc-ai-table-convert-workbench-lock #tc-lanhu-tree-mount .tc-lanhu-tree-node__refresh,
.tc-workbench-scope.tc-ai-table-convert-workbench-lock #tc-lanhu-tree-mount .tc-lanhu-tree-node__gen {
    opacity: 0.35;
    pointer-events: none;
}

/* AI 转导图进行中：锁定紫色 AI 悬浮按钮（独立于 workbench-scope，仅 tc-ai-table-convert-ai-fab-lock） */
#tc-left-float-dock.tc-ai-table-convert-ai-fab-lock,
#tc-left-float-dock.tc-ai-table-convert-ai-fab-lock .tc-left-float-dock__mode {
    opacity: 0.42;
    pointer-events: none;
    cursor: not-allowed;
    filter: grayscale(0.35);
}

#tc-left-float-dock.tc-ai-table-convert-ai-fab-lock .tc-left-float-dock__mode:hover {
    transform: none;
}

/* AI 转导图：确认弹窗（仅 tc-ai-mindmap-confirm-modal） */
#tc-ai-mindmap-confirm-modal.tc-ai-mindmap-confirm-modal {
    position: fixed;
    inset: 0;
    z-index: 10345;
    display: none;
    align-items: center;
    justify-content: center;
    padding: 1.25rem;
}
#tc-ai-mindmap-confirm-modal.flex { display: flex !important; }
#tc-ai-mindmap-confirm-modal .tc-ai-mindmap-confirm-modal__backdrop {
    position: absolute; inset: 0;
    background: rgba(15, 23, 42, 0.42);
    backdrop-filter: blur(5px);
}
#tc-ai-mindmap-confirm-modal .tc-ai-mindmap-confirm-modal__panel {
    position: relative; z-index: 1;
    width: 100%; max-width: 22rem;
    padding: 1.35rem 1.35rem 1.15rem;
    border-radius: 1rem;
    border: 1px solid rgba(255, 255, 255, 0.75);
    background: linear-gradient(180deg, #ffffff 0%, #f8fafc 100%);
    box-shadow: 0 22px 44px -18px rgba(15, 23, 42, 0.28), 0 0 0 1px rgba(15, 23, 42, 0.04);
    text-align: center;
}
#tc-ai-mindmap-confirm-modal .tc-ai-mindmap-confirm-modal__close {
    position: absolute; top: 0.65rem; right: 0.65rem;
    display: inline-flex; align-items: center; justify-content: center;
    width: 2rem; height: 2rem; padding: 0; border: none; border-radius: 9999px;
    background: transparent; color: #94a3b8; cursor: pointer;
    transition: background-color 0.15s ease, color 0.15s ease;
}
#tc-ai-mindmap-confirm-modal .tc-ai-mindmap-confirm-modal__close:hover { background: #f1f5f9; color: #475569; }
#tc-ai-mindmap-confirm-modal .tc-ai-mindmap-confirm-modal__close svg { width: 1rem; height: 1rem; }
#tc-ai-mindmap-confirm-modal .tc-ai-mindmap-confirm-modal__icon {
    display: inline-flex; align-items: center; justify-content: center;
    width: 2.75rem; height: 2.75rem; margin: 0.15rem auto 0.85rem;
    border-radius: 0.85rem; color: #0369a1;
    background: linear-gradient(145deg, #e0f2fe, #bae6fd);
    border: 1px solid rgba(14, 165, 233, 0.22);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.45);
}
#tc-ai-mindmap-confirm-modal .tc-ai-mindmap-confirm-modal__icon svg { width: 1.35rem; height: 1.35rem; }
#tc-ai-mindmap-confirm-modal .tc-ai-mindmap-confirm-modal__title {
    margin: 0; font-size: 1.02rem; font-weight: 700; letter-spacing: -0.015em; color: #0f172a; line-height: 1.35;
}
#tc-ai-mindmap-confirm-modal .tc-ai-mindmap-confirm-modal__desc {
    margin: 0.55rem 0 0; font-size: 0.8rem; line-height: 1.55; color: #64748b;
}
#tc-ai-mindmap-confirm-modal .tc-ai-mindmap-confirm-modal__actions {
    display: flex; gap: 0.65rem; margin-top: 1.15rem;
}
#tc-ai-mindmap-confirm-modal .tc-ai-mindmap-confirm-modal__btn {
    flex: 1 1 0; min-height: 2.5rem; padding: 0.55rem 0.85rem; border-radius: 0.65rem;
    font-size: 0.86rem; font-weight: 600; cursor: pointer;
    transition: background-color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease, transform 0.12s ease;
}
#tc-ai-mindmap-confirm-modal .tc-ai-mindmap-confirm-modal__btn:active { transform: scale(0.992); }
#tc-ai-mindmap-confirm-modal .tc-ai-mindmap-confirm-modal__btn--ghost {
    border: 1px solid #e2e8f0; background: #ffffff; color: #475569;
}
#tc-ai-mindmap-confirm-modal .tc-ai-mindmap-confirm-modal__btn--ghost:hover { background: #f8fafc; border-color: #cbd5e1; }
#tc-ai-mindmap-confirm-modal .tc-ai-mindmap-confirm-modal__btn--primary {
    border: 1px solid rgba(14, 165, 233, 0.35);
    background: linear-gradient(180deg, #0ea5e9 0%, #0284c7 100%);
    color: #ffffff; box-shadow: 0 6px 16px -8px rgba(2, 132, 199, 0.65);
}
#tc-ai-mindmap-confirm-modal .tc-ai-mindmap-confirm-modal__btn--primary:hover {
    background: linear-gradient(180deg, #38bdf8 0%, #0ea5e9 100%);
}


/* === tc_table_area_compact.css === */
/* 用例工作台：视口铺满（顶/底小缝隙；页脚沿用全站「滚到底滑入」逻辑） */

:root {
    --tc-wb-footer-safe: 3rem;
    --tc-wb-edge-bottom: 12px;
    --tc-wb-edge-top: 6px;
}

/* 工作台页：页脚略增高，避免贴边、样式被裁切 */
body.tc-hub-ai-tab #hf-site-footer.hf-site-footer {
    padding: 0.55rem 1rem max(0.6rem, env(safe-area-inset-bottom, 0px));
    min-height: 2.5rem;
    box-sizing: border-box;
    display: flex;
    align-items: center;
    justify-content: center;
}

/* 主容器：顶贴导航；底部留白供页面向下滚动后露出页脚 */
body.tc-hub-ai-tab main.tc-page-main-testcase > .container,
body.tc-hub-ai-tab main.hf-tool-page-main.tc-page-main-testcase > .container,
body.tc-hub-ai-tab main.hf-tool-page-main > .container {
    padding-top: max(2px, env(safe-area-inset-top, 0px)) !important;
    padding-bottom: calc(var(--tc-wb-footer-safe, 3rem) + var(--tc-wb-edge-bottom, 12px) + env(safe-area-inset-bottom, 0px)) !important;
    padding-left: max(0.5rem, env(safe-area-inset-left, 0px)) !important;
    padding-right: max(0.5rem, env(safe-area-inset-right, 0px)) !important;
}

@media (min-width: 640px) {
    body.tc-hub-ai-tab main.hf-tool-page-main > .container {
        padding-top: max(2px, env(safe-area-inset-top, 0px)) !important;
    }
}

@media (min-width: 1024px) {
    body.tc-hub-ai-tab main.hf-tool-page-main > .container {
        padding-top: max(2px, env(safe-area-inset-top, 0px)) !important;
    }
}

body.tc-hub-ai-tab main.tc-page-main-testcase {
    min-height: 100dvh;
    min-height: 100vh;
}

body.tc-hub-ai-tab .tc-hub-scope,
body.tc-hub-ai-tab .tc-hub-panel {
    margin: 0 !important;
    padding: 0 !important;
}

body.tc-hub-ai-tab .tc-stash-main-col {
    padding-top: 0 !important;
    margin-top: 0 !important;
}

/* 覆盖 toolkit 默认 3.25rem 底留白：仅为页脚上方的内容区留空 */
body.tc-hub-ai-tab .tc-page-bleed {
    padding-top: 0 !important;
    padding-bottom: 0 !important;
}

body.tc-hub-ai-tab #tc-stash-split {
    row-gap: 0 !important;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
}

body.tc-hub-ai-tab .tc-workbench-scope.rounded-xl {
    margin-top: 0 !important;
    margin-bottom: 0 !important;
}

body.tc-hub-ai-tab .tc-workbench-scope--lanhu-fill {
    margin-bottom: 0 !important;
}

body.tc-hub-ai-tab .tc-workbench-scope--lanhu-fill #tc-main-content-shell.tc-main-wb-surface {
    padding: 0.3rem 0.45rem 0.2rem !important;
}

body.tc-hub-ai-tab .tc-workbench-scope--lanhu-fill #right-panel #table-workspace {
    padding: 0.2rem 0.3rem 0.15rem !important;
}

body.tc-hub-ai-tab .tc-workbench-scope--lanhu-fill #right-panel #table-workspace #table-toolbar.tc-table-workspace__head,
body.tc-hub-ai-tab .tc-workbench-scope--lanhu-fill #table-toolbar.tc-table-workspace__head {
    margin-bottom: 0.15rem !important;
    padding: 0.2rem 0.35rem !important;
    gap: 0.35rem !important;
}

body.tc-hub-ai-tab .tc-workbench-scope--lanhu-fill #tc-right-panel-title,
body.tc-hub-ai-tab .tc-workbench-scope--lanhu-fill #table-toolbar .tc-right-panel-head h3#tc-right-panel-title {
    font-size: 0.8125rem !important;
    line-height: 1.2 !important;
    font-weight: 600 !important;
}

body.tc-hub-ai-tab .tc-workbench-scope--lanhu-fill .tc-right-panel-head {
    gap: 0.3rem !important;
}

body.tc-hub-ai-tab .tc-workbench-scope--lanhu-fill .tc-right-view-nav {
    padding: 0.12rem !important;
    gap: 0.12rem !important;
    grid-template-columns: repeat(2, minmax(6.5rem, 1fr)) !important;
}

body.tc-hub-ai-tab .tc-workbench-scope--lanhu-fill .tc-right-view-nav__btn {
    min-height: 1.45rem !important;
    padding: 0.14rem 0.35rem !important;
    font-size: 0.6875rem !important;
    gap: 0.22rem !important;
    border-radius: 0.4rem !important;
}

body.tc-hub-ai-tab .tc-workbench-scope--lanhu-fill .tc-right-view-nav__icon {
    width: 0.85rem !important;
    height: 0.85rem !important;
}

body.tc-hub-ai-tab .tc-workbench-scope--lanhu-fill #table-toolbar .tc-table-toolbar-center {
    gap: 0.35rem !important;
}

body.tc-hub-ai-tab .tc-workbench-scope--lanhu-fill #table-toolbar #restore-columns {
    gap: 0.22rem !important;
}

body.tc-hub-ai-tab .tc-workbench-scope--lanhu-fill #table-toolbar #restore-columns button {
    padding: 0.14rem 0.35rem !important;
    font-size: 0.6875rem !important;
    line-height: 1.15 !important;
    border-radius: 0.36rem !important;
}

body.tc-hub-ai-tab .tc-workbench-scope--lanhu-fill #table-toolbar .tc-table-filter-bar__search {
    padding: 0.16rem 0.4rem !important;
    font-size: 0.75rem !important;
    min-width: 7rem !important;
    width: 11.5rem !important;
    max-width: min(16rem, 38vw) !important;
    border-radius: 0.4rem !important;
}

body.tc-hub-ai-tab .tc-workbench-scope--lanhu-fill #table-toolbar .tc-table-filter-bar__reset {
    padding: 0.14rem 0.35rem !important;
    font-size: 0.6875rem !important;
    border-radius: 0.36rem !important;
}

body.tc-hub-ai-tab .tc-workbench-scope--lanhu-fill .tc-table-filter-bar,
body.tc-hub-ai-tab .tc-workbench-scope--lanhu-fill .tc-table-filter-bar__main {
    gap: 0.28rem !important;
}

body.tc-hub-ai-tab .tc-workbench-scope--lanhu-fill .tc-table-filter-bar__meta {
    font-size: 0.625rem !important;
}

body.tc-hub-ai-tab .tc-workbench-scope #table-toolbar {
    margin-bottom: 0.35rem !important;
    padding: 0.3rem 0.45rem !important;
}

body.tc-hub-ai-tab .tc-workbench-scope--lanhu-fill .tc-gen-batch-bar {
    padding: 0.22rem 0.4rem !important;
    margin-bottom: 0.15rem !important;
    gap: 0.3rem !important;
}

body.tc-hub-ai-tab .tc-workbench-scope--lanhu-fill .tc-gen-batch-bar__title {
    font-size: 0.8125rem !important;
}

body.tc-hub-ai-tab .tc-workbench-scope--lanhu-fill .tc-gen-batch-bar__meta,
body.tc-hub-ai-tab .tc-workbench-scope--lanhu-fill .tc-gen-batch-bar__progress-text {
    font-size: 0.6875rem !important;
}

body.tc-hub-ai-tab .tc-workbench-scope--lanhu-fill .tc-active-template-label,
body.tc-hub-ai-tab .tc-workbench-scope--lanhu-fill .tc-view-meta-label,
body.tc-hub-ai-tab .tc-workbench-scope--lanhu-fill .tc-switch-template-btn {
    font-size: 0.6875rem !important;
}

/* 质量检查 + RAG 并排紧凑 */
body.tc-hub-ai-tab .tc-workbench-scope--lanhu-fill #table-toolbar .tc-right-panel-head #tc-gen-options-row {
    gap: 0.25rem !important;
}

body.tc-hub-ai-tab .tc-workbench-scope--lanhu-fill #table-toolbar .tc-right-panel-head .tc-gen-toggle-btn__icon {
    width: 0.85rem !important;
    height: 0.85rem !important;
    flex-shrink: 0;
}

body.tc-hub-ai-tab .tc-workbench-scope--lanhu-fill #table-toolbar .tc-right-panel-head .tc-gen-toggle-btn {
    min-height: 1.45rem !important;
    padding: 0.14rem 0.38rem !important;
    font-size: 0.6875rem !important;
}

body.tc-hub-ai-tab .tc-workbench-scope--lanhu-fill #table-toolbar .tc-right-panel-head .tc-gen-option-help-btn {
    width: 0.95rem !important;
    height: 0.95rem !important;
    font-size: 0.625rem !important;
    line-height: 1;
}

/* 铺满激活：表格/导图区吃满计算高度 */
body.tc-hub-ai-tab.tc-table-area-fill-active .tc-workbench-scope--lanhu-fill #tc-table-list-panel,
body.tc-hub-ai-tab.tc-table-area-fill-active .tc-workbench-scope--lanhu-fill .tc-vxe-table-view-panel:not(.hidden),
body.tc-hub-ai-tab.tc-table-area-fill-active .tc-workbench-scope--lanhu-fill #tc-mindmap-view-panel:not(.hidden) {
    flex: 1 1 auto;
    min-height: 0;
}


/* === tc_share_workbench.css === */

/* 表格工具栏：分析评审 / 我的评审 */
.tc-share-toolbar-actions {
    display: inline-flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.35rem;
    flex-shrink: 0;
}
.tc-share-toolbar-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 1.65rem;
    padding: 0.28rem 0.62rem;
    border-radius: 0.5rem;
    border: 1px solid rgba(148, 163, 184, 0.45);
    background: rgba(255, 255, 255, 0.82);
    color: #334155;
    font-size: 0.75rem;
    font-weight: 600;
    line-height: 1.2;
    white-space: nowrap;
    cursor: pointer;
    touch-action: manipulation;
    transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease, opacity 0.15s ease;
    box-shadow: 0 1px 2px rgba(15, 23, 42, 0.05);
}
.tc-share-toolbar-btn:hover:not(:disabled) {
    background: #fff;
    border-color: rgba(99, 102, 241, 0.42);
    color: #4338ca;
}
.tc-share-toolbar-btn:disabled {
    opacity: 0.45;
    cursor: not-allowed;
}
.tc-share-toolbar-btn:focus-visible {
    outline: 2px solid rgba(99, 102, 241, 0.45);
    outline-offset: 1px;
}
body.tc-hub-ai-tab .tc-workbench-scope .tc-share-toolbar-btn {
    background: rgba(255, 255, 255, 0.76);
    border-color: rgba(99, 102, 241, 0.32);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
}
body.tc-hub-ai-tab .tc-workbench-scope .tc-share-toolbar-btn:hover:not(:disabled) {
    background: rgba(255, 255, 255, 0.92);
    border-color: rgba(99, 102, 241, 0.45);
    color: #3730a3;
}
.tc-workbench-scope--lanhu-fill .tc-share-toolbar-btn {
    border-color: rgba(148, 163, 184, 0.32);
    background: rgba(255, 255, 255, 0.52);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
}
.tc-workbench-scope--lanhu-fill .tc-share-toolbar-btn:hover:not(:disabled) {
    background: rgba(255, 255, 255, 0.72);
    border-color: rgba(99, 102, 241, 0.38);
}

/* 暂存列表顶栏：分享评审 / 我的分享 */
.tc-stash-rail-head-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0.2rem 0.55rem;
    border-radius: 0.45rem;
    border: 1px solid rgba(255, 255, 255, 0.22);
    background: rgba(255, 255, 255, 0.12);
    color: #fff;
    font-size: 0.6875rem;
    font-weight: 600;
    line-height: 1.25;
    white-space: nowrap;
    cursor: pointer;
    touch-action: manipulation;
    transition: background 0.2s ease, border-color 0.2s ease, opacity 0.2s ease;
}
.tc-stash-rail-head-btn:hover:not(:disabled) {
    background: rgba(255, 255, 255, 0.22);
    border-color: rgba(255, 255, 255, 0.35);
}
.tc-stash-rail-head-btn:disabled {
    opacity: 0.42;
    cursor: not-allowed;
}
.tc-stash-rail-head-btn:focus-visible {
    outline: 2px solid rgba(255, 255, 255, 0.55);
    outline-offset: 1px;
}
.tc-stash-row.tc-stash-row--selected {
    background: rgba(99, 102, 241, 0.08);
}
.tc-stash-row.tc-stash-row--selected .tc-stash-preview {
    color: #4338ca;
}

.tc-share-modal {
    z-index: 200;
}
.tc-share-modal.flex {
    display: flex;
}
.tc-share-modal__panel {
    max-height: 90vh;
    overflow: auto;
}
.tc-share-modal__title {
    margin: 0 0 0.5rem;
    font-size: 1.0625rem;
    font-weight: 700;
    color: #0f172a;
}
.tc-share-modal__field {
    display: block;
    margin-bottom: 0.75rem;
}
.tc-share-modal__field > span {
    display: block;
    margin-bottom: 0.3rem;
    font-size: 0.75rem;
    font-weight: 500;
    color: #475569;
}
.tc-share-modal__check {
    display: flex;
    align-items: center;
    gap: 0.45rem;
    margin-bottom: 1rem;
    font-size: 0.8125rem;
    color: #334155;
}
.tc-share-modal__actions {
    display: flex;
    justify-content: flex-end;
    gap: 0.5rem;
}
.tc-share-list-item {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    padding: 0.65rem 0;
    border-bottom: 1px solid #f1f5f9;
}
.tc-share-list-item:last-child {
    border-bottom: none;
}
.tc-share-list-item__title {
    font-weight: 600;
    color: #0f172a;
}
.tc-share-list-item__meta {
    font-size: 0.6875rem;
    color: #64748b;
}
.tc-share-list-item__actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem;
}
.tc-share-list-item__badge {
    font-size: 0.625rem;
    padding: 0.1rem 0.4rem;
    border-radius: 999px;
    background: #f1f5f9;
    color: #64748b;
}
.tc-share-list-item__badge--active {
    background: #ecfdf5;
    color: #047857;
}
.tc-share-list-item__badge--gone {
    background: #fef2f2;
    color: #b91c1c;
}
.tc-stash-share-btn {
    color: #4338ca;
}

/* 查看评论弹窗：工作台未加载 preview.css，此处保证可读性 */
#tc-share-comments-body .tc-share-comment-item,
#tc-share-comments-body .tc-share-preview__comment-item {
    padding: 0.6rem 0.7rem;
    margin-bottom: 0.55rem;
    border-radius: 0.5rem;
    background: #f8fafc;
    border: 1px solid #e2e8f0;
}
#tc-share-comments-body .tc-share-comment-item:last-child,
#tc-share-comments-body .tc-share-preview__comment-item:last-child {
    margin-bottom: 0;
}
#tc-share-comments-body .tc-share-comment-item__head,
#tc-share-comments-body .tc-share-preview__comment-item__head {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.35rem 0.65rem;
    font-size: 0.75rem;
    color: #475569;
    margin-bottom: 0.35rem;
}
#tc-share-comments-body .tc-share-comment-item__author,
#tc-share-comments-body .tc-share-preview__comment-item__author {
    font-weight: 600;
    color: #0f172a;
}
#tc-share-comments-body .tc-share-comment-item__case {
    font-weight: 600;
    color: #334155;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
#tc-share-comments-body .tc-share-comment-item__meta {
    color: #64748b;
}
#tc-share-comments-body .tc-share-comment-item__body,
#tc-share-comments-body .tc-share-preview__comment-item__body {
    font-size: 0.875rem;
    line-height: 1.55;
    color: #0f172a;
    white-space: pre-wrap;
    word-break: break-word;
}
#tc-share-comments-modal-title {
    color: #0f172a;
    font-weight: 700;
}

.tc-share-pager {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: 0.5rem 0.75rem;
    margin-top: 0.85rem;
    padding-top: 0.75rem;
    border-top: 1px solid #e2e8f0;
}
.tc-share-pager__info {
    font-size: 0.75rem;
    color: #475569;
}
.tc-share-pager__btn {
    padding: 0.32rem 0.65rem;
    font-size: 0.75rem;
    font-weight: 500;
    color: #334155;
    background: #fff;
    border: 1px solid #cbd5e1;
    border-radius: 0.5rem;
    cursor: pointer;
}
.tc-share-pager__btn:hover:not(:disabled) {
    color: #4338ca;
    border-color: #a5b4fc;
    background: #eef2ff;
}
.tc-share-pager__btn:disabled {
    opacity: 0.45;
    cursor: not-allowed;
}

/* ===== 用例评审 · 统一弹窗（需求选择 + 评审设置） ===== */
#tc-share-requirement-modal.tc-share-review-modal {
    position: fixed;
    inset: 0;
    z-index: 86;
    align-items: center;
    justify-content: center;
    padding: 1rem;
}
#tc-share-requirement-modal.tc-share-review-modal.hidden { display: none !important; }
#tc-share-requirement-modal.tc-share-review-modal.flex { display: flex !important; }
#tc-share-requirement-modal .tc-share-review-modal__backdrop {
    position: absolute;
    inset: 0;
    background: rgba(15, 23, 42, 0.5);
    backdrop-filter: blur(5px);
}
#tc-share-requirement-modal .tc-share-review-modal__panel {
    position: relative;
    z-index: 1;
    display: flex;
    flex-direction: column;
    width: 100%;
    max-width: 36rem;
    max-height: min(88vh, calc(100vh - 1.5rem));
    overflow: hidden;
    border-radius: 1.125rem;
    border: 1px solid rgba(255, 255, 255, 0.72);
    background: #fff;
    box-shadow: 0 28px 56px -16px rgba(15, 23, 42, 0.32), 0 0 0 1px rgba(15, 23, 42, 0.04);
}
#tc-share-requirement-modal .tc-share-review-modal__header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.75rem;
    padding: 1.1rem 1.25rem 0.95rem;
    border-bottom: 1px solid #eef2f7;
    background: linear-gradient(135deg, rgba(99, 102, 241, 0.07) 0%, rgba(255, 255, 255, 0) 60%);
    flex-shrink: 0;
}
#tc-share-requirement-modal .tc-share-review-modal__header-main {
    display: flex;
    align-items: flex-start;
    gap: 0.8rem;
    min-width: 0;
}
#tc-share-requirement-modal .tc-share-review-modal__icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 2.45rem;
    height: 2.45rem;
    border-radius: 0.7rem;
    flex-shrink: 0;
    color: #4338ca;
    background: linear-gradient(145deg, #eef2ff, #e0e7ff);
    border: 1px solid rgba(99, 102, 241, 0.22);
}
#tc-share-requirement-modal .tc-share-review-modal__icon svg { width: 1.3rem; height: 1.3rem; }
#tc-share-requirement-modal .tc-share-review-modal__title {
    margin: 0;
    font-size: 1.0625rem;
    font-weight: 700;
    letter-spacing: -0.015em;
    color: #0f172a;
    line-height: 1.3;
}
#tc-share-requirement-modal .tc-share-review-modal__subtitle {
    margin: 0.22rem 0 0;
    font-size: 0.78rem;
    line-height: 1.45;
    color: #64748b;
}
#tc-share-requirement-modal .tc-share-review-modal__close {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2rem;
    height: 2rem;
    padding: 0;
    border: none;
    border-radius: 9999px;
    background: transparent;
    color: #94a3b8;
    cursor: pointer;
    transition: background-color 0.15s, color 0.15s;
}
#tc-share-requirement-modal .tc-share-review-modal__close:hover { background: #f1f5f9; color: #475569; }
#tc-share-requirement-modal .tc-share-review-modal__close svg { width: 1rem; height: 1rem; }
#tc-share-requirement-modal .tc-share-review-modal__scroll {
    min-height: 0;
    flex: 1;
    overflow: auto;
    padding: 0.85rem 1.15rem 0.5rem;
}
#tc-share-requirement-modal .tc-share-review-modal__section + .tc-share-review-modal__section {
    margin-top: 1rem;
    padding-top: 1rem;
    border-top: 1px solid #f1f5f9;
}
#tc-share-requirement-modal .tc-share-review-modal__section-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.65rem;
    margin-bottom: 0.55rem;
}
#tc-share-requirement-modal .tc-share-review-modal__section-label {
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: #94a3b8;
}
#tc-share-requirement-modal .tc-share-review-modal__summary {
    display: inline-flex;
    align-items: center;
    min-height: 1.4rem;
    padding: 0.15rem 0.55rem;
    border-radius: 9999px;
    background: #f8fafc;
    border: 1px solid #e2e8f0;
    font-size: 0.72rem;
    font-weight: 600;
    color: #64748b;
    line-height: 1.35;
    white-space: nowrap;
}

#tc-share-requirement-modal .tc-share-review-case-tabs {
    display: flex;
    gap: 0.35rem;
    margin-bottom: 0.55rem;
    padding: 0.2rem;
    border-radius: 0.65rem;
    background: #f1f5f9;
}
#tc-share-requirement-modal .tc-share-review-case-tabs.hidden { display: none; }
#tc-share-requirement-modal .tc-share-review-case-tabs__btn {
    flex: 1;
    border: none;
    border-radius: 0.5rem;
    padding: 0.38rem 0.65rem;
    font-size: 0.78rem;
    font-weight: 600;
    color: #64748b;
    background: transparent;
    cursor: pointer;
    transition: background 0.15s, color 0.15s, box-shadow 0.15s;
}
#tc-share-requirement-modal .tc-share-review-case-tabs__btn:hover { color: #334155; }
#tc-share-requirement-modal .tc-share-review-case-tabs__btn--active {
    color: #5b21b6;
    background: #fff;
    box-shadow: 0 1px 3px rgba(15, 23, 42, 0.08);
}
#tc-share-requirement-modal .tc-share-review-modal__list-wrap { min-height: 2rem; }
#tc-share-requirement-modal .tc-share-review-modal__state {
    padding: 0.75rem 0.1rem;
    font-size: 0.8125rem;
    color: #94a3b8;
}
#tc-share-requirement-modal .tc-share-review-modal__state.hidden { display: none; }
#tc-share-requirement-modal .tc-share-requirement-list {
    display: flex;
    flex-direction: column;
    gap: 0.28rem;
    max-height: min(46vh, 17.5rem);
    overflow: auto;
    padding-right: 0.1rem;
}
#tc-share-requirement-modal .tc-share-requirement-item {
    display: flex;
    align-items: center;
    gap: 0.45rem;
    padding: 0.38rem 0.5rem;
    min-height: 2.05rem;
    border: 1px solid #e8edf2;
    border-radius: 0.5rem;
    background: #fff;
    cursor: pointer;
    transition: border-color 0.16s, background-color 0.16s;
}
#tc-share-requirement-modal .tc-share-requirement-item:hover { border-color: #cbd5e1; background: #fafbfc; }
#tc-share-requirement-modal .tc-share-requirement-item:has(.tc-share-requirement-check:checked) {
    border-color: rgba(99, 102, 241, 0.38);
    background: #fafaff;
}
#tc-share-requirement-modal .tc-share-requirement-check {
    appearance: none;
    width: 0.92rem;
    height: 0.92rem;
    margin-top: 0;
    border: 1.5px solid #cbd5e1;
    border-radius: 0.3rem;
    background: #fff;
    flex-shrink: 0;
    cursor: pointer;
}
#tc-share-requirement-modal .tc-share-requirement-check:checked {
    border-color: #6366f1;
    background: #6366f1 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none'%3E%3Cpath d='M3.5 8.2l2.8 2.8 6.2-6.4' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/0.7rem no-repeat;
}
#tc-share-requirement-modal .tc-share-requirement-item__body {
    min-width: 0;
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 0.12rem;
}
#tc-share-requirement-modal .tc-share-requirement-item__head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.45rem;
    min-width: 0;
}
#tc-share-requirement-modal .tc-share-requirement-item__title {
    display: block;
    font-size: 0.78rem;
    font-weight: 600;
    color: #0f172a;
    line-height: 1.25;
    min-width: 0;
    flex: 0 1 auto;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
#tc-share-requirement-modal .tc-share-requirement-item__path {
    flex: 1 1 auto;
    max-width: 62%;
    text-align: right;
    font-size: 0.66rem;
    line-height: 1.25;
    color: #94a3b8;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
#tc-share-requirement-modal .tc-share-requirement-item__meta {
    display: block;
    margin-top: 0;
    font-size: 0.68rem;
    color: #64748b;
    flex-shrink: 0;
    white-space: nowrap;
}
#tc-share-requirement-modal .tc-share-requirement-item__order {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 1.25rem;
    height: 1.25rem;
    margin-top: 0.05rem;
    border-radius: 9999px;
    background: #6366f1;
    color: #fff;
    font-size: 0.65rem;
    font-weight: 700;
    flex-shrink: 0;
}
#tc-share-requirement-modal .tc-share-requirement-item__order.hidden { display: none; }
#tc-share-requirement-modal .tc-share-review-modal__settings {
    display: grid;
    grid-template-columns: 1fr auto;
    gap: 0.65rem 0.75rem;
    align-items: end;
}
#tc-share-requirement-modal .tc-share-review-modal__field { display: flex; flex-direction: column; gap: 0.3rem; min-width: 0; }
#tc-share-requirement-modal .tc-share-review-modal__field--compact { width: 7.5rem; }
#tc-share-requirement-modal .tc-share-review-modal__field-label {
    font-size: 0.78rem;
    font-weight: 600;
    color: #475569;
}
#tc-share-requirement-modal .tc-share-review-modal__input {
    width: 100%;
    min-height: 2.25rem;
    padding: 0.45rem 0.7rem;
    border: 1px solid #e2e8f0;
    border-radius: 0.6rem;
    background: #fff;
    font-size: 0.8125rem;
    color: #0f172a;
    transition: border-color 0.15s, box-shadow 0.15s;
}
#tc-share-requirement-modal .tc-share-review-modal__input:focus {
    outline: none;
    border-color: #a5b4fc;
    box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.12);
}
#tc-share-requirement-modal .tc-share-review-modal__select { cursor: pointer; }
#tc-share-requirement-modal .tc-share-review-modal__toggle {
    grid-column: 1 / -1;
    display: flex;
    align-items: center;
    gap: 0.55rem;
    cursor: pointer;
    user-select: none;
    padding: 0.15rem 0;
}
#tc-share-requirement-modal .tc-share-review-modal__toggle input {
    position: absolute;
    opacity: 0;
    width: 0;
    height: 0;
}
#tc-share-requirement-modal .tc-share-review-modal__toggle-box {
    width: 2.1rem;
    height: 1.2rem;
    border-radius: 9999px;
    background: #e2e8f0;
    position: relative;
    flex-shrink: 0;
    transition: background-color 0.18s;
}
#tc-share-requirement-modal .tc-share-review-modal__toggle-box::after {
    content: "";
    position: absolute;
    top: 0.15rem;
    left: 0.15rem;
    width: 0.9rem;
    height: 0.9rem;
    border-radius: 9999px;
    background: #fff;
    box-shadow: 0 1px 2px rgba(15, 23, 42, 0.12);
    transition: transform 0.18s;
}
#tc-share-requirement-modal .tc-share-review-modal__toggle input:checked + .tc-share-review-modal__toggle-box {
    background: #6366f1;
}
#tc-share-requirement-modal .tc-share-review-modal__toggle input:checked + .tc-share-review-modal__toggle-box::after {
    transform: translateX(0.9rem);
}
#tc-share-requirement-modal .tc-share-review-modal__toggle-text {
    font-size: 0.8125rem;
    color: #475569;
}
#tc-share-requirement-modal .tc-share-review-modal__footer {
    display: flex;
    justify-content: flex-end;
    gap: 0.5rem;
    padding: 0.85rem 1.15rem 1rem;
    border-top: 1px solid #eef2f7;
    background: #fafbfc;
    flex-shrink: 0;
}
#tc-share-requirement-modal .tc-share-review-modal__btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 2.25rem;
    padding: 0 1rem;
    border-radius: 0.625rem;
    font-size: 0.8125rem;
    font-weight: 600;
    cursor: pointer;
    transition: background-color 0.15s, opacity 0.15s;
}
#tc-share-requirement-modal .tc-share-review-modal__btn--ghost {
    border: 1px solid #e2e8f0;
    background: #fff;
    color: #475569;
}
#tc-share-requirement-modal .tc-share-review-modal__btn--ghost:hover { background: #f8fafc; }
#tc-share-requirement-modal .tc-share-review-modal__btn--primary {
    border: none;
    color: #fff;
    background: linear-gradient(135deg, #6366f1, #4f46e5);
    box-shadow: 0 3px 10px rgba(99, 102, 241, 0.25);
}
#tc-share-requirement-modal .tc-share-review-modal__btn--primary:hover:not(:disabled) {
    background: linear-gradient(135deg, #4f46e5, #4338ca);
}
#tc-share-requirement-modal .tc-share-review-modal__btn--primary:disabled {
    opacity: 0.45;
    cursor: not-allowed;
    box-shadow: none;
}
#tc-share-requirement-modal.tc-share-review-modal--settings-only .tc-share-review-modal__section:first-child {
    display: none;
}



/* === tc_workbench_modal_viewport.css === */
/**
 * 用例工作台 · 需求选择 / 用例评审弹窗视口自适应（隔离模块，不影响其它弹窗）
 * 解决：小屏时弹窗被顶部 .hf-gnav (z-index:100) 遮挡、高度溢出不可见
 */
:root {
    --tc-wb-modal-edge-x: max(0.75rem, env(safe-area-inset-left, 0px), env(safe-area-inset-right, 0px));
    --tc-wb-modal-edge-bottom: max(0.75rem, env(safe-area-inset-bottom, 0px));
    --tc-wb-modal-nav-offset: max(env(safe-area-inset-top, 0px), var(--hf-gnav-height, 3.5rem));
    --tc-wb-modal-top-pad: calc(var(--tc-wb-modal-nav-offset) + 0.65rem);
}

#tc-export-requirement-modal.tc-req-picker-modal,
#tc-export-xmind-modal.tc-req-picker-modal,
#tc-share-requirement-modal.tc-share-review-modal {
    z-index: 110 !important;
    align-items: flex-start !important;
    justify-content: center !important;
    padding:
        var(--tc-wb-modal-top-pad)
        var(--tc-wb-modal-edge-x)
        var(--tc-wb-modal-edge-bottom) !important;
    overflow-x: hidden;
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
}

#tc-export-requirement-modal .tc-req-picker-modal__panel,
#tc-export-xmind-modal .tc-req-picker-modal__panel,
#tc-share-requirement-modal .tc-share-review-modal__panel {
    max-height: min(
        88vh,
        calc(100dvh - var(--tc-wb-modal-top-pad) - var(--tc-wb-modal-edge-bottom))
    ) !important;
    margin-left: auto;
    margin-right: auto;
    margin-bottom: auto;
    flex-shrink: 0;
}

#tc-share-requirement-modal .tc-share-requirement-list {
    max-height: min(
        36vh,
        calc(100dvh - var(--tc-wb-modal-top-pad) - var(--tc-wb-modal-edge-bottom) - 17rem)
    );
}

@media (max-width: 640px) {
    :root {
        --tc-wb-modal-edge-x: max(0.5rem, env(safe-area-inset-left, 0px), env(safe-area-inset-right, 0px));
    }

    #tc-export-requirement-modal .tc-req-picker-modal__header,
    #tc-export-xmind-modal .tc-req-picker-modal__header,
    #tc-share-requirement-modal .tc-share-review-modal__header {
        padding-top: 0.85rem;
        padding-bottom: 0.75rem;
    }

    #tc-share-requirement-modal .tc-share-review-modal__settings {
        grid-template-columns: 1fr;
    }

    #tc-share-requirement-modal .tc-share-review-modal__field--compact {
        width: 100%;
    }
}

@media (max-height: 720px) {
    #tc-export-requirement-modal .tc-req-picker-modal__subtitle,
    #tc-export-xmind-modal .tc-req-picker-modal__subtitle,
    #tc-share-requirement-modal .tc-share-review-modal__subtitle {
        display: -webkit-box;
        -webkit-line-clamp: 2;
        -webkit-box-orient: vertical;
        overflow: hidden;
    }

    #tc-share-requirement-modal .tc-share-requirement-list {
        max-height: min(28vh, 10rem);
    }
}

@media (max-height: 560px) {
    #tc-share-requirement-modal .tc-share-review-modal__subtitle,
    #tc-export-requirement-modal .tc-req-picker-modal__subtitle,
    #tc-export-xmind-modal .tc-req-picker-modal__subtitle {
        display: none;
    }
}


