.evaluation-page { grid-template-columns: minmax(0, 1fr); }
.evaluation-page[hidden] { display: none; }
.evaluation-page > .page-header { min-width: 0; }
.evaluation-page > .evaluation-toolbar { display: flex; height: 32px; padding: 0 16px; justify-content: flex-end; align-items: center; }
.evaluation-page > .dxbl-tabs { min-width: 0; max-width: 100%; overflow-x: auto; overflow-y: hidden; }
.evaluation-page .evaluation-tab-panel { grid-template-columns: minmax(0, 1fr); }
.evaluation-page .content-section { min-width: 0; border-radius: 6px; box-shadow: var(--shadow-sm); }
.evaluation-page .section-header { min-height: 58px; flex-wrap: wrap; gap: 12px; padding-top: 14px; padding-bottom: 14px; }
.evaluation-page .ev-selection-header { min-height: 0; justify-content: flex-end; padding-top: 8px; padding-bottom: 0; flex-wrap: nowrap; }
.evaluation-page .page-header-actions { flex-wrap: wrap; min-width: 0; }
.evaluation-page .section-header > div { min-width: 0; }
.evaluation-page .section-header > div:last-child { margin-left: auto; }
.evaluation-page .section-header h2 { margin: 0; }
.evaluation-page .section-header > span { color: var(--muted); font-size: 13px; }
.evaluation-page .page-header-actions, .evaluation-page .source-actions, .evaluation-page .ev-run-actions { align-items: center; gap: 8px; }
.evaluation-page .dxbl-btn { white-space: nowrap; }
.evaluation-page .evaluation-tab-panel, .ev-comparison { display: grid; min-width: 0; gap: 18px; }
.evaluation-view-panel { min-height: calc(100vh - 154px); }
.evaluation-view-panel[hidden] { display: none !important; }
/* 「选择对比模型」AppModal（2026-10-23 弹窗审计回归全站令牌；2026-10-27 宽令牌 60vw→80vw）：宽/高由 --modal-width(80vw)/
   --modal-height(80vh) 全站令牌统一承载，MaxWidth=880 仅作宽度上限（AppModal 定稿口径）；
   modal-body 不再自带 width/height 双重限制，flex 链撑满 dialog，六列表格在 body 内滚。 */
.ev-compare-picker-modal .modal-body { display: flex; min-height: 0; width: 100%; box-sizing: border-box; flex-direction: column; overflow: hidden; }
.ev-compare-picker-modal .evaluation-model-picker { display: flex; min-height: 0; flex: 1 1 auto; flex-direction: column; overflow: hidden; }
.ev-compare-picker-modal .evaluation-selection-toolbar { flex: 0 0 auto; }
.ev-compare-picker-modal .evaluation-selection-table { min-height: 0; flex: 1 1 auto; overflow: auto; }
.ev-compare-picker-modal .ev-sequence-pagination { flex: 0 0 auto; }
.ev-compare-summary { flex: 0 0 auto; padding: 10px 0 0; font-size: 12.5px; color: var(--muted); border-top: 1px solid var(--line-soft); }
.ev-compare-summary strong { color: var(--ink); font-variant-numeric: tabular-nums; }
.ev-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; padding: 18px 22px; }
.ev-workbench-config { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-start; gap: 10px 12px; padding: 18px 22px 0; }
.ev-model-picker-slot { position: relative; z-index: 100; display: flex; align-items: center; gap: 8px; min-width: 0; }
.ev-model-picker-slot .evaluation-model-compact { z-index: 20; }
.ev-workbench-config .ev-field { display: flex; flex: 0 0 auto; align-items: center; gap: 6px; min-width: 0; white-space: nowrap; }
.ev-workbench-config .ev-field > label, .ev-model-picker-slot > label { flex: 0 0 auto; white-space: nowrap; }
.ev-workbench-config dxbl-spinedit { width: 120px; min-width: 120px; }
.ev-workbench-config .dxbl-combo-box { width: 132px; min-width: 132px; }
.ev-workbench-config .evaluation-model-compact { flex: 0 0 auto; min-width: 0; }
.ev-workbench-config .ev-switch-field { margin-left: 0; }
.ev-workbench-config.ev-config-heading { justify-content: flex-start; gap: 10px 12px; }
.ev-workbench-config .ev-config-item { cursor: grab; }
.ev-workbench-config .ev-config-item:active { cursor: grabbing; }
.ev-run-panel { min-height: calc(100vh - 190px); box-sizing: border-box; }
.ev-prompt-inline { padding: 14px 22px 0; }
.ev-prompt-inline .ev-prompt-textarea { width: 100%; box-sizing: border-box; min-height: 78px; padding: 10px 12px; border: 1px solid var(--line); border-radius: 7px; background: var(--surface); color: var(--ink); font: inherit; resize: vertical; }
.ev-performance-fields { grid-template-columns: repeat(4, minmax(120px, 1fr)); padding: 14px 22px; gap: 12px; align-items: end; }
.ev-performance-fields .ev-run-actions { align-self: end; }
.ev-performance-results { margin: 0 22px 18px; overflow-x: auto; border: 1px solid var(--line); border-radius: 8px; }

@media (max-width: 900px) {
    .ev-workbench-config { column-gap: 12px; }
}

@media (max-width: 760px) {
    .ev-workbench-config { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .ev-workbench-config .ev-switch-field { justify-self: start; }
}

@media (max-width: 500px) {
    .ev-workbench-config { grid-template-columns: 1fr; }
}
.evaluation-selection-table { overflow-x: auto; border: 1px solid var(--line); border-radius: 8px; background: var(--surface); }
.evaluation-selection-table table { width: 100%; min-width: 620px; border-collapse: collapse; color: var(--ink); font-size: var(--management-list-body-font); }
.evaluation-selection-table th, .evaluation-selection-table td { height: 48px; min-width: 110px; padding: 10px 12px; border-bottom: 1px solid var(--line); text-align: left; vertical-align: middle; white-space: nowrap; }
.evaluation-selection-table th { height: 43px; color: var(--muted); background: var(--surface-soft); font-size: var(--management-list-header-font); font-weight: 700; }
.evaluation-selection-table tbody tr:hover td { background: var(--surface-hover); }
.evaluation-selection-table tr.selected td { background: var(--primary-soft); }
.evaluation-selection-table tbody tr { cursor: pointer; }
.evaluation-selection-table tbody tr.unselectable { cursor: not-allowed; }
.ev-sequence-availability { width: 150px; flex: 0 0 auto; }
.ev-sequence-availability .dxbl-text-edit { width: 150px; }
.evaluation-selection-table tbody tr:last-child td { border-bottom: 0; }
.evaluation-selection-table .seq-select-cell { min-width: 44px; width: 44px; padding: 4px 6px; text-align: center; }
.evaluation-selection-table input[type="checkbox"] { width: 15px; height: 15px; accent-color: var(--primary); }
.evaluation-selection-table tr.selected td { background: var(--primary-soft); }
.evaluation-selection-table code { color: var(--muted); background: transparent; font-size: .72rem; }
.ev-field { display: grid; align-content: start; gap: 8px; min-width: 0; }
.ev-field > label { font-size: 13px; color: var(--muted); }
.ev-full { grid-column: 1 / -1; min-width: 0; }
.ev-source-field { grid-column: 1 / -1; }
.ev-source-picker-row { display: flex; align-items: center; gap: 10px; min-width: 0; }
.ev-source-picker-row .ev-model-count { flex: 1 1 auto; }
.ev-source-picker-row .dxbl-btn { flex: 0 0 auto; }
  .ev-model-count, .ev-fields > span { flex: 0 0 auto; color: var(--muted); font-size: 12px; line-height: 32px; white-space: nowrap; }
.ev-model-list { height: 210px; width: 100%; }
.ev-selected { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
/* 已选计数放列表底部（选中芯片行行首），不占表格上方整行。 */
.ev-selected-count { flex: 0 0 auto; color: var(--muted); font-size: 12px; white-space: nowrap; }
.ev-model-chip { display: inline-flex; align-items: center; gap: 8px; border: 1px solid var(--line); border-radius: 4px; padding: 3px 8px; max-width: 100%; font-size: 12px; }
.ev-model-chip span { color: var(--muted); }
.ev-model-chip strong, .ev-model-chip span { overflow-wrap: anywhere; min-width: 0; }
/* 2026-10-16 卡片化定稿：向导第①步模型卡片网格（与场景 tiles 同语言）。 */
.ev-model-card-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; max-height: min(52vh, 480px); overflow-y: auto; padding: 2px; }
.ev-model-card { display: grid; grid-template-rows: auto auto 1fr; gap: 6px; min-width: 0; padding: 12px 14px; border: 1px solid var(--line); border-radius: 8px; background: var(--surface); color: var(--ink); text-align: left; cursor: pointer; }
.ev-model-card:hover:not(:disabled) { background: var(--surface-hover); border-color: var(--primary); }
.ev-model-card.selected { border-color: var(--primary); background: var(--primary-soft); box-shadow: inset 3px 0 var(--primary); }
.ev-model-card.selected svg { color: var(--primary); }
.ev-model-card.unavailable { opacity: .75; }
.ev-model-card-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; min-width: 0; }
.ev-model-card-head strong { font-size: 13px; line-height: 1.5; overflow-wrap: anywhere; }
.ev-model-card-head svg { flex: none; margin-top: 2px; color: var(--muted); }
.ev-model-card-vendor { color: var(--muted); font-size: 12px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ev-model-card-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; font-size: 11px; color: var(--muted); }
.ev-model-card-meta code { font-size: 10.5px; }
.ev-model-card:focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; }
/* 场景工作台（2026-10-10 原型重排）：左目录右详情，目录侧栏带搜索 + 可折叠能力分组。
   两列同高（侧栏列表自身滚动），目录给足 320px 让行内名称完整显示。 */
.ev-workspace { display: grid; grid-template-columns: minmax(0, 1fr); }
.ev-scenario-side { display: flex; flex-direction: column; gap: 10px; min-width: 0; padding: 14px; border-right: 1px solid var(--line); background: var(--surface-muted); align-self: stretch; }
.ev-scenario-list { display: grid; gap: 10px; align-content: start; flex: 1 1 auto; overflow-y: auto; min-height: 0; max-height: 70vh; }
.ev-scenario-group { min-width: 0; border: 1px solid var(--line-soft); border-radius: 6px; background: var(--surface); }
.ev-scenario-group > summary { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 8px 10px; cursor: pointer; user-select: none; list-style: none; }
.ev-scenario-group > summary::-webkit-details-marker { display: none; }
.ev-scenario-group > summary::before { content: "▸"; color: var(--muted); font-size: 11px; transition: transform .15s ease; }
.ev-scenario-group[open] > summary::before { transform: rotate(90deg); }
.ev-scenario-group > summary em { font-size: 11px; font-style: normal; color: var(--muted); }
.ev-cat-pill { display: inline-block; padding: 2px 10px; border-radius: 999px; font-size: 12px; font-weight: 600; }
.ev-cat-general { color: var(--status-info); background: var(--status-info-soft); }
.ev-cat-long { color: var(--primary-strong); background: var(--primary-soft); }
.ev-cat-code { color: var(--status-ok); background: var(--status-ok-soft); }
.ev-cat-image { color: var(--status-bad); background: var(--status-bad-soft); }
.ev-cat-video { color: var(--status-info); background: var(--status-info-soft); }
/* 推荐示例合入能力分组（2026-10-12）：独立组废弃，场景行带「推荐」小标（组内排前）。 */
.ev-recommended-tag { flex: 0 0 auto; padding: 1px 7px; border-radius: 999px; border: 1px solid color-mix(in srgb, var(--primary) 45%, var(--line)); color: var(--primary); background: var(--primary-soft); font-size: 10.5px; font-weight: 700; white-space: nowrap; }
.ev-modality-pill { padding: 2px 7px; border-radius: 4px; color: var(--primary); background: var(--primary-soft); font-size: 11px; font-style: normal; }
/* 目录行在折叠组内：名称+徽标一行，描述折到第二行（不截断省略）。 */
.ev-scenario-row { display: flex; align-items: center; flex-wrap: wrap; gap: 6px 8px; width: 100%; padding: 8px 10px; border: 1px solid transparent; border-top: 1px solid var(--line-soft); background: transparent; color: var(--ink); text-align: left; cursor: pointer; font: inherit; }
.ev-scenario-row:hover { background: var(--surface-hover); }
.ev-scenario-row.selected { border-color: var(--primary); background: var(--surface-muted); }
.ev-scenario-row:disabled { opacity: 0.55; cursor: not-allowed; }
.ev-row-check { color: var(--muted); flex: 0 0 auto; display: inline-flex; }
.ev-scenario-row.selected .ev-row-check { color: var(--primary); }
.ev-scenario-row strong { font-size: 13px; flex: 0 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ev-scenario-row em { flex: 0 0 auto; padding: 2px 6px; border-radius: 4px; font-size: 11px; font-style: normal; }
.ev-tier-light { color: var(--status-ok); background: var(--status-ok-soft); }
.ev-tier-mid { color: var(--status-warn); background: var(--status-warn-soft); }
.ev-tier-heavy { color: var(--status-bad); background: var(--status-bad-soft); }
.ev-tier-image { color: var(--primary-strong); background: var(--primary-soft); }
.ev-tier-advanced { color: var(--status-warn); background: var(--status-warn-soft); }
.ev-row-tokens { flex: 0 0 auto; margin-left: auto; color: var(--muted); font-size: 11px; font-variant-numeric: tabular-nums; }
.ev-row-desc { flex: 1 1 100%; min-width: 0; color: var(--muted); font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
/* 右侧详情面板：场景头 + 提示词 + 行内参数 + 运行条。 */
.ev-scenario-detail { display: grid; gap: 12px; align-content: start; min-width: 0; padding: 18px 22px 22px; }
.ev-detail-empty { margin: 0; color: var(--muted); font-size: 13px; }
.ev-detail-head { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.ev-detail-head strong { font-size: 15px; }
.ev-detail-head > span:not(.ev-cat-pill) { color: var(--muted); font-size: 12px; }
.ev-scenario-detail p { margin: 0; font-size: 12.5px; line-height: 1.6; color: var(--muted); overflow-wrap: anywhere; }
.ev-detail-excerpt { margin: 0; padding: 8px 10px; max-height: 120px; overflow: auto; white-space: pre-wrap; font: 12px/1.6 inherit; color: var(--muted); background: var(--surface-muted); border-radius: 4px; }
.ev-scenario-reference { display: block; padding: 6px 10px; border-radius: 4px; background: var(--surface-muted); color: var(--muted); font-size: 12px; line-height: 1.45; overflow-wrap: anywhere; }
.ev-labelrow { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.ev-labelrow > label { font-size: 13px; color: var(--muted); }
.ev-restore { border: 0; background: transparent; color: var(--primary); font-size: 12px; cursor: pointer; padding: 2px 6px; border-radius: 4px; }
.ev-restore:hover:not(:disabled) { background: var(--surface-muted); }
.ev-restore:disabled { color: var(--muted); cursor: default; opacity: .6; }
.ev-runbar { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; border-top: 1px solid var(--line-soft); padding-top: 14px; }
.ev-run-hint { color: var(--muted); font-size: 12px; }

/* 实时输出卡（2026-10-29 v2）：表格下方每模型一张横向对比卡（参考模型市场卡片形态）。 */
.ev-live-output { margin-top: 12px; padding: 12px 16px 16px; background: var(--surface); border: 1px solid var(--line); border-radius: 6px; }
.ev-live-output h4 { display: flex; align-items: center; gap: 6px; margin-bottom: 10px; font-size: .9rem; }
.ev-live-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)); gap: 14px; }
.ev-live-cell { min-width: 0; display: flex; flex-direction: column; gap: 8px; padding: 14px; background: var(--surface-muted); border: 1px solid var(--line-soft); border-radius: 10px; }
.ev-live-cell-head { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; }
.ev-live-cell-head strong { font-size: .9rem; }
.ev-live-cell-head small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ev-live-cell pre.ev-output { max-height: 220px; overflow: auto; margin: 0; }
.ev-live-waiting { display: flex; align-items: center; gap: 8px; min-height: 48px; color: var(--muted); font-size: .82rem; }
.ev-live-progress-summary { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; color: var(--muted); font-size: .78rem; font-variant-numeric: tabular-nums; }
.ev-live-attempts { display: grid; gap: 6px; max-height: 260px; overflow: auto; padding-right: 4px; }
.ev-live-attempt { display: grid; gap: 4px; padding: 8px 10px; background: var(--surface); border: 1px solid var(--line-soft); border-radius: 6px; }
.ev-live-attempt-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 8px; font-size: .78rem; }
.ev-live-attempt-metrics { display: flex; flex-wrap: wrap; gap: 8px; color: var(--muted); font-size: .72rem; font-variant-numeric: tabular-nums; }
.ev-live-attempt pre.ev-output { max-height: 120px; }
/* 右列主体：目录之外的详情与自定义面板容器。 */
.ev-workspace-main { min-width: 0; display: grid; align-content: start; }
/* hidden 属性守卫：class 的 display 规则会覆盖 UA 的 [hidden]{display:none}，
   两面板切换必须尊重 hidden（否则两个详情区同时渲染、互相挤压）。 */
.ev-workspace-main > [hidden] { display: none !important; }
/* 嵌入的自定义评测面板：去掉独立页时代的内边距，随详情区节奏走。 */
.ev-workspace-main .ev-fields { padding: 0; }
.ev-workspace-main .evaluation-prompt-preview.ev-prompt-editable { margin: 14px 0 0; }
.ev-reference { border: 0; background: var(--surface-muted); color: var(--primary); padding: 8px 12px; display: flex; align-items: center; gap: 6px; cursor: pointer; font-size: 12px; }
.ev-advanced { border-top: 1px solid var(--line); padding-top: 14px; }
.ev-advanced summary { font-size: 13px; cursor: pointer; }
.ev-advanced .ev-fields { padding: 18px 0 0; }
.ev-run-actions { display: flex; flex-wrap: wrap; gap: 12px; }
/* 对比结果（2026-10-10 原型重排）：横向模型行表——一行一模型，指标列对齐比大小，最优值高亮。 */
.ev-model-scroll { margin: 0 22px 22px; }
.ev-model-rows { width: 100%; border-collapse: collapse; font-size: 12.5px; }
.ev-model-rows th, .ev-model-rows td { padding: 10px 12px; border-bottom: 1px solid var(--line-soft); text-align: left; vertical-align: middle; }
.ev-model-rows thead th { position: sticky; top: 0; z-index: 1; background: var(--surface-soft); color: var(--muted); font-weight: 700; font-size: var(--management-list-header-font); white-space: nowrap; }
.ev-model-rows tbody tr:hover td { background: var(--surface-hover); }
/* 屏幕阅读器专用文本：视觉隐藏（sr-only 全局未定义，这里补齐本页用法）。 */
.ev-model-rows .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.ev-col-model { min-width: 200px; }
.ev-col-model strong { display: block; font-size: 13px; overflow-wrap: anywhere; }
.ev-col-model > span { display: block; color: var(--muted); font-size: 12px; overflow-wrap: anywhere; }
.ev-col-model .ev-attempts { margin-top: 4px; }
.ev-model-awards { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 6px; color: var(--primary); font-size: 11px; font-weight: 700; }
.ev-model-awards span { display: inline-flex; align-items: center; gap: 4px; white-space: nowrap; }
.ev-metric { font-variant-numeric: tabular-nums; white-space: nowrap; }
/* 数字列右对齐（2026-10-26 全站定稿，同 app.css numeric-cell 口径）：表基类 .ev-model-rows
   th/td 的 left 对齐是 0,1,1，这里「基类+列类」0,2,0 覆盖 th 与 td，不用 !important。 */
.ev-model-rows .ev-metric { text-align: right; }
/* 固定列与动态指标列分界（2026-10-26 用户定稿：左=模型固定信息，右=点击开始评测后变化的数值）：
   首个动态列（状态/HTTP 状态码）左侧一细线，颜色用既有 --line 令牌。 */
.ev-model-rows .ev-col-run-start { border-left: 1px solid var(--line); }
.ev-model-rows td.ev-best { color: var(--primary); font-weight: 700; }
.ev-col-status { white-space: nowrap; }
.ev-status-running { color: var(--primary); font-weight: 600; }
.ev-status-ok { color: var(--status-ok); font-weight: 600; }
.ev-status-failed { color: var(--danger); font-weight: 600; }
/* 图片/视频生成进度：后端一次性 POST 无流式进度，前端按预估时长折算百分比（95% 挂住等结果）。 */
.ev-gen-progress { width: 130px; height: 6px; border-radius: 999px; background: var(--line-soft, var(--line)); overflow: hidden; }
.ev-gen-progress-fill { height: 100%; background: var(--primary); border-radius: 999px; transition: width .8s ease; }
.ev-gen-progress-label { display: block; margin-top: 4px; color: var(--muted); font-size: 11px; font-variant-numeric: tabular-nums; }
/* 性能评测行内进度条（2026-10-20）：状态徽标下方的 已完成/总数 进度，复用 ev-gen-progress 体系。 */
.ev-status-progress { margin-top: 6px; }
.ev-col-ops { white-space: nowrap; }
.ev-col-ops .ev-reference { padding: 5px 10px; }
.ev-model-output { border: 1px solid var(--line); border-radius: 6px; overflow: hidden; }
/* 输出对比区（2026-10-12 用户定稿）：不再逐行下方展开，统一放结果表下方并排对照。
   文本 N 栏横排（grid auto-fit，窄屏自动折行）；图片/视频纵向媒体卡堆叠。 */
.ev-output-heading { display: flex; align-items: baseline; gap: 10px; margin: 14px 22px 8px; }
.ev-output-heading h4 { margin: 0; font-size: 13.5px; }
.ev-output-heading span { font-size: 12px; color: var(--muted); }
.ev-output-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 12px; align-items: start; margin: 0 22px 22px; }
.ev-output-stack { display: grid; gap: 12px; margin: 0 22px 22px; }
.ev-output-col { border: 1px solid var(--line); border-radius: 6px; overflow: hidden; min-width: 0; }
.ev-output-col header { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; padding: 8px 12px; border-bottom: 1px solid var(--line); background: var(--surface-muted); }
.ev-output-col header strong { font-size: 13px; }
.ev-output-col header span { font-size: 11px; color: var(--muted); }
.ev-output-col .ev-output { max-height: 420px; border-top: none; }
.ev-output-body { display: grid; gap: 8px; padding: 0 0 8px; }
.ev-output-body .ev-error { margin: 8px 12px 4px; }
/* 输出详情弹窗：提示词/思考链折叠 + 指标小表。 */
.ev-output-detail-grid { display: grid; grid-template-columns: minmax(0, 1.45fr) minmax(240px, .8fr); gap: 18px; align-items: start; min-width: 0; }
.ev-output-detail-grid > * { min-width: 0; }
.ev-output-detail-content { display: grid; gap: 14px; min-width: 0; }
.ev-detail-block { display: grid; gap: 7px; min-width: 0; }
.ev-detail-block h4 { margin: 0; color: var(--muted); font-size: 12px; font-weight: 500; }
.ev-detail-block .ev-output, .ev-detail-block .ev-highlight { max-height: 360px; margin: 0; min-width: 0; overflow: auto; overflow-wrap: anywhere; white-space: pre-wrap; }
.ev-detail-metrics { width: 100%; max-width: none; }
.ev-detail-metrics th, .ev-detail-metrics td { overflow-wrap: anywhere; }
/* 两模型输出对比弹窗：指标表（优胜列绿色高亮）+ 双栏输出并排 + 逐行 diff + 相似度。 */
.ev-compare { display: grid; gap: 14px; }
.ev-compare-metrics { display: grid; gap: 8px; }
.ev-compare-table { width: 100%; border-collapse: collapse; font-size: 12.5px; }
.ev-compare-table th, .ev-compare-table td { padding: 7px 10px; border-bottom: 1px solid var(--line-soft); text-align: left; }
.ev-compare-table thead th { color: var(--muted); font-weight: 500; }
.ev-compare-table td.ev-compare-better { color: var(--status-ok); font-weight: 700; }
.ev-compare-similarity { display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; }
.ev-compare-similarity strong { font-size: 14px; color: var(--primary); }
.ev-compare-similarity span { font-size: 12px; color: var(--muted); }
.ev-compare-side { display: grid; gap: 8px; }
.ev-compare-side h4 { margin: 0; font-size: 13px; }
.ev-compare-side-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; align-items: start; }
.ev-compare-col { border: 1px solid var(--line); border-radius: 6px; overflow: hidden; min-width: 0; }
.ev-compare-col header { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; padding: 8px 12px; border-bottom: 1px solid var(--line); background: var(--surface-muted); }
.ev-compare-col header strong { font-size: 13px; }
.ev-compare-col header span { font-size: 11px; color: var(--muted); }
.ev-compare-lines { max-height: 340px; overflow: auto; padding: 8px 0; }
.ev-diff-line { padding: 2px 10px; font: 12px/1.6 ui-monospace, SFMono-Regular, Consolas, monospace; white-space: pre-wrap; overflow-wrap: anywhere; color: var(--muted); }
.ev-diff-line.ev-diff-add { color: var(--status-ok); background: var(--status-ok-soft); }
.ev-diff-line.ev-diff-del { color: var(--danger); background: var(--status-bad-soft); }
.ev-diff-line.ev-diff-blank { background: repeating-linear-gradient(45deg, transparent, transparent 6px, var(--surface-muted) 6px, var(--surface-muted) 12px); min-height: 22px; }
.ev-compare-legend { margin: 0; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.ev-compare-legend .ev-diff-line { padding: 2px 8px; border-radius: 4px; font-size: 11px; }
/* 对比勾选列 + header 提示与按钮。 */
.ev-compare-check { width: 34px; text-align: center; }
.ev-compare-hint { color: var(--muted); font-size: 12px; }
.ev-output { max-height: 520px; overflow: auto; white-space: pre-wrap; overflow-wrap: anywhere; margin: 0; padding: 16px; font-size: 13px; line-height: 1.7; border-top: 1px solid var(--line); }
.ev-output-image { display: block; max-width: 100%; max-height: 500px; object-fit: contain; }
/* 视频生成结果：<video> 原生控件，限制高度与图片一致。 */
.ev-output-video { display: block; width: 100%; max-height: 500px; background: #000; }
/* 语法高亮 token（响应内容着色，深浅色靠令牌自适应）。 */
.ev-output .ev-kw { color: var(--primary); font-weight: 600; }
.ev-output .ev-str { color: var(--status-ok); }
.ev-output .ev-cm { color: var(--muted); font-style: italic; }
.ev-output .ev-num { color: var(--status-warn); }
/* 场景详情区媒体参数：时长/画幅 chip 组。 */
.ev-media-params { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; padding: 10px 0 2px; }
.ev-media-params > label { font-size: 12px; color: var(--muted); }
.ev-media-options { display: inline-flex; gap: 6px; }
.ev-media-option { border: 1px solid var(--line); background: transparent; color: var(--text); border-radius: 999px; padding: 3px 12px; font-size: 12px; cursor: pointer; }
.ev-media-option.selected { border-color: var(--primary); color: var(--primary); font-weight: 700; }
.ev-media-option:disabled { opacity: .5; cursor: not-allowed; }
/* 自定义评测：可编辑测试内容框 + 运行中任务进度列表。 */
.evaluation-prompt-preview.ev-prompt-editable { margin: 16px 22px 0; display: grid; gap: 0; border: 1px solid var(--line); border-radius: 6px; overflow: hidden; }
.ev-prompt-textarea { width: 100%; min-height: 140px; resize: vertical; border: 0; border-top: 1px solid var(--line); background: transparent; color: var(--text); padding: 12px 14px; font: 12.5px/1.7 ui-monospace, SFMono-Regular, Consolas, monospace; }
.ev-prompt-textarea:focus { outline: none; }
.ev-prompt-textarea:disabled { opacity: .7; }
.ev-job-list { display: grid; gap: 12px; padding: 16px 22px 20px; }
.ev-job-row { border: 1px solid var(--line); border-radius: 6px; padding: 12px 14px; display: grid; gap: 8px; }
.ev-job-row.running { border-color: var(--primary); }
.ev-job-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.ev-job-head strong { font-size: 13.5px; overflow-wrap: anywhere; }
.ev-job-status { font-size: 12px; color: var(--muted); white-space: nowrap; }
.ev-job-row.running .ev-job-status { color: var(--primary); font-weight: 700; }
.ev-job-progress { height: 6px; border-radius: 999px; background: var(--line-soft, var(--line)); overflow: hidden; }
.ev-job-progress-fill { height: 100%; background: var(--primary); border-radius: 999px; transition: width .6s ease; }
.ev-job-meta { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; font-size: 12px; color: var(--muted); }
.ev-job-failed { color: var(--danger); }
/* 思考过程折叠块：默认收起，展开后与正文同排版。 */
.ev-reasoning { border-top: 1px solid var(--line); }
.ev-reasoning summary { cursor: pointer; padding: 10px 16px; font-size: 12px; color: var(--muted); user-select: none; }
.ev-reasoning summary:hover { color: var(--text); }
.ev-reasoning pre { max-height: 360px; overflow: auto; white-space: pre-wrap; overflow-wrap: anywhere; margin: 0; padding: 0 16px 16px; font-size: 12px; line-height: 1.7; color: var(--muted); }
/* 厂商筛选组合框（DevExpress）：只约束宽度，外观交给组件主题。 */
.ev-selection-header > span { flex: 0 0 auto; white-space: nowrap; }
.ev-sequence-picker-row { flex: 1 1 auto; min-width: 0; flex-wrap: nowrap; overflow-x: auto; }
.ev-vendor-filter { flex: 0 0 180px; width: 180px; min-width: 180px; max-width: 220px; }
.ev-sequence-picker-row .ev-model-count { flex: 0 0 auto; white-space: nowrap; }
.ev-sequence-search { flex: 1 1 220px; min-width: 120px; }
.ev-sequence-search input { width: 100%; min-width: 0; }
.ev-sequence-picker-row > .icon-button { flex: 0 0 auto; }
.ev-error { color: var(--danger); padding: 12px; overflow-wrap: anywhere; }
.ev-scenario-library { padding: 18px 22px 12px; }
.ev-library-heading { display: flex; justify-content: space-between; align-items: center; gap: 16px; margin-bottom: 14px; }
.ev-library-heading h2, .ev-config-heading h2 { margin: 0; font-size: 15px; font-weight: 600; line-height: 1.5; }
.ev-step-title { display: flex; align-items: center; gap: 8px; min-width: 0; }
.ev-step-title h2 { min-width: 0; }
.ev-config-heading .ev-step-title > div { min-width: 0; }
.ev-scenario-tiles { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.ev-scenario-tile { display: grid; grid-template-rows: auto 1fr auto; gap: 7px; min-width: 0; min-height: 116px; padding: 12px 14px; border: 1px solid var(--line); border-radius: 6px; background: var(--surface); color: var(--ink); text-align: left; }
.ev-scenario-tile:hover:not(:disabled) { background: var(--surface-hover); border-color: var(--primary); }
.ev-scenario-tile.selected { border-color: var(--primary); background: var(--primary-soft); box-shadow: inset 3px 0 var(--primary); }
.ev-scenario-tile:disabled { cursor: not-allowed; opacity: .6; }
.ev-tile-title { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; }
.ev-tile-title strong { font-size: 13px; font-weight: 600; line-height: 1.5; overflow-wrap: anywhere; }
.ev-tile-title svg { flex: none; margin-top: 2px; color: var(--muted); }
.ev-scenario-tile.selected .ev-tile-title svg { color: var(--primary); }
.ev-tile-description { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; color: var(--muted); font-size: 12px; line-height: 1.6; overflow-wrap: anywhere; }
.ev-tile-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; color: var(--muted); font-size: 11px; }
.ev-tile-meta .ev-cat-pill { border-radius: 4px; padding: 1px 6px; font-size: 11px; }
.ev-library-expand { display: flex; align-items: center; gap: 6px; margin: 10px auto 0; padding: 6px 12px; border: 0; background: transparent; color: var(--primary); font-size: 12px; }
.ev-library-empty { margin: 18px 0; color: var(--muted); font-size: 13px; }
.ev-config-heading { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
/* 2026-10-16 用户定稿（三轮反馈）：step 引导条——说明走哪几步，居中横排。 */
.ev-steps-bar { display: flex; align-items: center; justify-content: center; gap: 14px; flex-wrap: wrap; padding: 16px 22px; margin-bottom: 16px; border: 1px solid var(--line-soft); border-radius: 10px; background: var(--surface); }
.ev-steps-item { display: inline-flex; align-items: center; gap: 8px; color: var(--ink); font-size: 13.5px; font-weight: 500; }
.ev-steps-dot { display: inline-flex; align-items: center; justify-content: center; flex: none; width: 22px; height: 22px; border-radius: 50%; background: var(--primary); color: #fff; font-size: 12px; font-weight: 600; }
.ev-steps-note { color: var(--muted); font-size: 11.5px; font-weight: 400; }
.ev-steps-line { width: 42px; height: 1px; background: var(--line); }
/* 创建评测任务：页面居中大按钮 + 摘要。 */
.ev-create-panel { display: flex; align-items: center; justify-content: center; padding: 40px 22px; }
.ev-create-main { display: flex; flex-direction: column; align-items: center; gap: 10px; }
.ev-create-main .ev-create-summary { display: flex; flex-direction: column; align-items: center; gap: 3px; font-size: 15px; font-weight: 600; }
.ev-create-main .ev-create-summary span { color: var(--muted); font-size: 12px; font-weight: 400; }
.ev-create-button { min-width: 200px; justify-content: center; font-size: 15px; }
/* 两步向导弹窗：头部步骤条。 */
.ev-wizard-steps { display: flex; align-items: center; gap: 12px; margin-bottom: 14px; }
.ev-wizard-step { display: inline-flex; align-items: center; gap: 8px; padding: 8px 14px; border: 1px solid var(--line); border-radius: 999px; background: transparent; color: var(--muted); font-size: 13px; cursor: pointer; }
.ev-wizard-step.active { border-color: var(--primary); color: var(--primary); background: var(--primary-soft); }
.ev-wizard-step:disabled { cursor: not-allowed; opacity: .55; }
.ev-wizard-dot { display: inline-flex; align-items: center; justify-content: center; width: 18px; height: 18px; border-radius: 50%; background: var(--muted); color: #fff; font-size: 11px; font-weight: 600; }
.ev-wizard-step.active .ev-wizard-dot { background: var(--primary); }
.ev-wizard-count { font-size: 11px; opacity: .8; }
.ev-wizard-arrow { width: 26px; height: 1px; background: var(--line); }
/* 2026-10-16 定稿：评测列表=结果表——向导确定即出现在运行面板（未跑指标列「—」）。 */
.ev-task-list { width: 100%; }
.ev-task-kind { white-space: nowrap; color: var(--muted); font-size: 12px; }
.ev-task-vendor,
.ev-task-seq { max-width: 180px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ev-task-seq { color: var(--muted); font-size: 12px; }
.ev-task-response { max-width: 260px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--muted); font-size: 12px; }
.ev-performance-summary-bar { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin: 0 22px 10px; color: var(--muted); font-size: 12px; }
.ev-performance-results { margin: 0 22px 18px; overflow-x: auto; border: 1px solid var(--line); border-radius: 8px; }
.ev-performance-results .ev-task-list { min-width: 1180px; }
.ev-runbar-top { margin: 0 22px 14px; }
/* 待评测态（未跑行的状态 badge）。 */
.ev-status-pending { display: inline-block; padding: 1px 8px; border-radius: 999px; background: var(--surface-hover, #f0f0f0); color: var(--muted); font-size: 12px; }
/* 运行面板（选完模型与场景后出现）。 */
.ev-run-panel { padding-top: 14px; }
.ev-entry-actions { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; justify-content: flex-end; }
.ev-entry-pick { display: inline-flex; align-items: center; gap: 7px; white-space: nowrap; }
/* 「提示词/参数」小链接：弱化的文字按钮，不再是按钮块。 */
.ev-textlink { border: 0; background: transparent; padding: 4px 2px; color: var(--muted); font-size: 12.5px; cursor: pointer; }
.ev-textlink:hover:not(:disabled) { color: var(--primary); }
.ev-textlink:disabled { cursor: not-allowed; opacity: .6; }
/* 已选模型一行 chips + 模型数。 */
.ev-chip-row { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; padding: 12px 22px 0; }
/* 提示词编辑弹窗。 */
.ev-prompt-edit { display: grid; gap: 10px; }
.ev-prompt-edit > label { font-size: 12px; color: var(--muted); }
.ev-row-prompts { border-top: 1px dashed var(--line-soft); padding-top: 10px; }
.ev-row-prompts summary { cursor: pointer; font-size: 12px; color: var(--muted); }
.ev-row-prompt-model { flex: none; font-size: 12px; font-weight: 600; min-width: 90px; }
.ev-config-heading > div { min-width: 0; }
.ev-config-heading .ev-step-title > div > span { color: var(--muted); font-size: 11px; }
.ev-config-heading h2 { overflow-wrap: anywhere; }
.ev-config-editor { min-width: 0; border-top: 1px solid var(--line-soft); }
.ev-config-editor > summary { display: flex; align-items: center; gap: 12px; padding: 12px 0; cursor: pointer; list-style: none; font-size: 13px; }
.ev-config-editor > summary::-webkit-details-marker { display: none; }
.ev-config-editor > summary > span:first-child { flex: none; color: var(--primary); }
.ev-config-editor > summary > svg { flex: none; margin-left: auto; transition: transform .15s; }
.ev-config-editor[open] > summary > svg { transform: rotate(180deg); }
.ev-prompt-summary { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--muted); font-size: 12px; }
.ev-config-editor[open] { display: grid; gap: 12px; }
.ev-results-empty { display: flex; align-items: center; gap: 10px; padding: 12px 22px 20px; color: var(--muted); font-size: 13px; }
.ev-pending-results .section-header { min-height: 48px; }
.ev-scenario-tile:focus-visible, .ev-library-expand:focus-visible, .ev-config-editor > summary:focus-visible { outline: 2px solid var(--primary); outline-offset: 3px; }
@media (max-width: 1100px) { .ev-scenario-tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 700px) {
    .ev-scenario-library { padding: 16px; }
    .ev-library-heading { align-items: stretch; flex-direction: column; gap: 10px; }
    .ev-scenario-tiles { grid-template-columns: minmax(0, 1fr); }
    .ev-scenario-tile { min-height: 104px; }
    .ev-config-heading { align-items: flex-start; flex-wrap: wrap; }
    .ev-output-grid { grid-template-columns: minmax(0, 1fr); }
    .ev-output-detail-grid { grid-template-columns: minmax(0, 1fr); gap: 14px; }
}
.ev-preview-frame { display: block; width: 100%; height: min(70vh, 700px); border: 0; background: white; }
/* 参考效果预览（2026-10-14 修复「已阻止此内容」）：图片 <img> / 文本 <pre>，与 iframe 同口径高度。 */
.ev-preview-image { display: block; max-width: 100%; max-height: min(70vh, 700px); margin: 0 auto; }
.ev-preview-text { margin: 0; max-height: min(70vh, 700px); overflow: auto; white-space: pre-wrap; overflow-wrap: anywhere; padding: 4px 2px; font-size: 13px; line-height: 1.7; }
/* 评测三步引导（2026-10-16 流程重排）：1 选模型（内嵌序列表）、2 选场景、3 配置参数并评测。 */
.ev-step-badge { display: inline-flex; align-items: center; justify-content: center; flex: none; width: 20px; height: 20px; border-radius: 50%; background: var(--primary); color: #fff; font-size: 12px; font-weight: 600; line-height: 1; }
.ev-step-head { display: flex; align-items: center; gap: 7px; margin: 0; font-size: 12px; font-weight: 600; color: var(--muted); }
.ev-workspace-main .ev-step-head { padding: 14px 22px 0; }
.ev-table-scroll { max-width: 100%; overflow-x: auto; margin: 0 22px 22px; }
.ev-table-scroll > .dxbl-grid { min-width: 900px; }
.evaluation-page .evaluation-form-body { padding: 0 0 20px; }
.evaluation-page .evaluation-prompt-preview { margin: 0 22px; max-height: 500px; overflow: auto; }
.evaluation-page .model-picker-row { min-width: 0; flex-wrap: wrap; }
.evaluation-page .platform-key-picker { flex-wrap: wrap; }
.evaluation-page .evaluation-source-grid { width: calc(100% - 44px); margin: 0 22px 22px; }
@media (max-width: 960px) {
    /* 窄屏工作台退化为单列：目录收起在前，详情跟后。 */
    .ev-workspace { grid-template-columns: minmax(0, 1fr); }
    .ev-scenario-side { border-right: 0; border-bottom: 1px solid var(--line); max-height: 300px; }
    .ev-model-scroll { margin: 0 16px 16px; }
}
@media (max-width: 700px) {
    .ev-fields { grid-template-columns: minmax(0, 1fr); padding: 16px; }
    .ev-scenario-row strong { min-width: 0; flex: 0 1 auto; }
    .ev-row-desc { display: none; }
    .ev-scenario-detail { padding: 16px !important; }
    .ev-model-rows th, .ev-model-rows td { padding: 8px; }
    .ev-source-picker-row { align-items: stretch; flex-wrap: wrap; }
    .ev-model-count { align-self: center; }
    .evaluation-page .ev-selection-header { overflow-x: auto; }
    .evaluation-page .ev-selection-header > span { display: none; }
    .evaluation-page .ev-sequence-picker-row { flex: 1 0 560px; }
    .evaluation-page .page-header, .evaluation-page .section-header { align-items: flex-start; }
    .evaluation-page .evaluation-source-grid { margin: 0 16px 16px; width: calc(100% - 32px); }
    .evaluation-page .platform-key-picker { width: 100%; }
    .evaluation-page .platform-key-picker .dxbl-combo-box { min-width: 0; width: 100%; }
    .evaluation-page .evaluation-form-body { padding: 0 0 16px; }
    .evaluation-page .evaluation-prompt-preview { margin: 0 16px; }
}

/* 评测历史（页面级常驻，分页展示） */
.basic-history-body { border-top: 1px solid var(--line-soft); padding: 12px 18px 16px; display: grid; gap: 10px; }
.basic-history-scroll { overflow-x: auto; }
.basic-history-table { width: 100%; border-collapse: collapse; font-size: var(--management-list-body-font); }
.basic-history-table th, .basic-history-table td { padding: 10px 12px; border-bottom: 1px solid var(--line-soft); text-align: left; vertical-align: middle; white-space: nowrap; }
.basic-history-table th { color: var(--muted); background: var(--surface-soft); font-size: var(--management-list-header-font); font-weight: 700; }
.basic-history-table td.history-clip { max-width: 220px; overflow: hidden; text-overflow: ellipsis; }
/* 组内最优高亮（2026-10-12，口径与 Arena 奖牌一致）：三指标最优格 + 模型列徽标。 */
.basic-history-table td.ev-best { color: var(--primary); font-weight: 700; }
.ev-best-badge { display: inline-block; margin-left: 6px; padding: 0 6px; border: 1px solid var(--primary); border-radius: 999px; color: var(--primary); font-size: 10.5px; font-weight: 700; white-space: nowrap; }
.basic-history-table .status-badge.basic-history-failed { color: var(--danger); border-color: var(--danger); background: transparent; }
.basic-history-tools { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.basic-history-tools .dxbl-btn { white-space: nowrap; }
/* 默认折叠（2026-11-01 用户定稿）：折叠态一行轻提示（颜色/间距取令牌）。 */
.basic-history-collapsed-hint { margin: 4px 0 0; color: var(--muted); font-size: 12.5px; }
.basic-history-search { width: 220px; }
.basic-history-type { color: var(--muted); }
.basic-history-ops { white-space: nowrap; }
.basic-history-groups { display: grid; gap: 8px; }
.basic-history-group { border: 1px solid var(--line-soft); border-radius: 8px; overflow: hidden; }
.basic-history-group-toggle { display: flex; align-items: center; gap: 10px; width: 100%; padding: 9px 12px; background: transparent; border: 0; cursor: pointer; font-size: 12px; color: var(--muted); text-align: left; }
.basic-history-group-toggle:hover { background: var(--surface-hover); }
.basic-history-group-toggle strong { font-size: 13px; color: inherit; font-variant-numeric: tabular-nums; }
.basic-history-group-type { color: var(--primary); border: 1px solid var(--line-soft); border-radius: 999px; padding: 1px 8px; }
.basic-history-group-user { margin-left: auto; }
.ev-attempts { font-style: normal; font-size: 11px; color: var(--muted); border: 1px solid var(--line-soft); border-radius: 999px; padding: 1px 8px; }
.ev-source-blocks { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 10px; }
/* 评测源选择表格：勾选行即选中该源；平台源带「平台」徽标，第三方源显示创建人/创建时间/活跃情况。 */
.ev-source-table-scroll { max-height: 260px; overflow: auto; border: 1px solid var(--line-soft); border-radius: 8px; }
.ev-source-table { width: 100%; border-collapse: collapse; font-size: 12px; }
.ev-source-table th, .ev-source-table td { padding: 7px 10px; border-bottom: 1px solid var(--line-soft); text-align: left; white-space: nowrap; }
.ev-source-table th { color: var(--muted); font-weight: 500; position: sticky; top: 0; background: var(--surface); z-index: 1; }
.ev-source-table tbody tr { cursor: pointer; }
.ev-source-table tbody tr:hover { background: var(--surface-hover); }
.ev-source-table tbody tr.selected { background: var(--primary-soft); }
.ev-source-table tbody tr:last-child td { border-bottom: 0; }
.ev-source-table td.history-clip { max-width: 180px; overflow: hidden; text-overflow: ellipsis; }
.ev-source-check { width: 34px; }
.ev-source-block { border: 1px solid var(--line-soft); border-radius: 8px; padding: 8px 10px 10px; display: grid; gap: 6px; }
.ev-source-block header { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; font-size: 12px; color: var(--muted); }
.ev-source-block-empty { margin: 0; font-size: 12px; color: var(--muted); }
/* 模型序列多选表：按行勾选 m-xxx 序列参与对比，支持序列号/模型/厂商搜索。 */
/* 模型选择弹层（2026-10-20 自 ModelEvaluationSequencePicker.razor.css 迁入全局）：
   弹层由 DX portal 自渲染（dxbl-dropdown-dialog/body 不带组件作用域属性，scoped 规则命不中），
   曾导致内边距失效、内容贴边挤在一起。padding 1% 为用户指定。 */
.evaluation-model-dropdown { padding: 1%; }
.evaluation-model-dropdown-body { width: min(680px, calc(100vw - 48px)); height: min(62vh, 560px); max-height: calc(100vh - 220px); min-height: 0; overflow: hidden; }
.evaluation-model-dropdown .evaluation-model-picker { display: flex; min-height: 0; height: 100%; flex-direction: column; overflow: hidden; padding: 0; border: 0; box-shadow: none; background: transparent; }
.evaluation-model-dropdown .evaluation-model-picker .evaluation-model-picker-header { display: none; }
.evaluation-model-dropdown .evaluation-selection-toolbar { flex: 0 0 auto; padding-top: 0; }
.evaluation-model-dropdown .evaluation-selection-table { min-height: 0; flex: 1 1 auto; overflow: auto; }
.evaluation-model-dropdown .ev-sequence-pagination { flex: 0 0 auto; }

.ev-sequence-picker-row { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.ev-sequence-search { display: flex; align-items: center; gap: 6px; min-height: 32px; padding: 0 10px; border: 1px solid var(--line); border-radius: 8px; color: var(--muted); background: var(--surface-soft); }
.ev-sequence-search input { width: 220px; padding: 5px 0; border: 0; background: transparent; color: var(--ink); font-size: 12px; outline: none; }
.ev-sequence-billing { font-variant-numeric: tabular-nums; color: var(--muted); }
/* 序列表分页 footer：对齐上游管理（Providers）的 accounts-pagination 口径。 */
.ev-sequence-pagination { display: flex; min-height: 54px; padding: 9px 14px; align-items: center; justify-content: space-between; gap: 14px; color: var(--muted); background: var(--surface); border: 1px solid var(--line); border-top: 0; border-radius: 0 0 8px 8px; font-size: .8rem; }
.ev-sequence-pagination .pagination-controls { display: flex; align-items: center; gap: 6px; }
.ev-sequence-pagination .pagination-controls label { display: flex; margin-right: 8px; align-items: center; gap: 5px; }
@media (max-width: 700px) {
    .basic-history-search { width: 100%; }
}

/* 历史对比（2026-10-14；上限放开 4 条）：组头对比入口 + 对比弹窗响应并排。
   响应区 2 列起步、超宽自动 3~4 列平铺；N>2 时高度收窄避免弹窗过长。 */
.basic-history-group-compare { color: var(--primary); font-weight: 600; cursor: pointer; }
.basic-history-group-compare:hover { text-decoration: underline; }
.basic-history-compare-output { margin: 14px 0 8px; font-size: 13px; }
.basic-history-compare-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 10px; }
.basic-history-compare-grid > div > header { font-size: 12px; color: var(--muted); margin-bottom: 4px; }
.basic-history-compare-grid pre { max-height: 320px; overflow: auto; margin: 0; }
.ev-compare-scroll { overflow-x: auto; }
.basic-history-compare-grid .ev-output { max-height: 260px; }
/* 并发压测批次多模型对比报告入口。 */
.ev-job-batch-report { margin-top: 10px; display: flex; justify-content: flex-start; }
@media (max-width: 700px) {
    .basic-history-compare-grid { grid-template-columns: 1fr; }
}

/* 评测历史（2026-10-14）：组头对比按钮显式化 + 列设置下拉。 */
.basic-history-compare-button { margin-left: 2px; }
.basic-history-column-menu { position: relative; display: inline-block; }
.basic-history-column-dropdown {
    position: absolute; right: 0; top: calc(100% + 4px); z-index: 30; min-width: 180px;
    padding: 8px; display: flex; flex-direction: column; gap: 6px;
    background: var(--surface); border: 1px solid var(--line); border-radius: 8px;
    box-shadow: 0 6px 18px rgb(15 23 42 / 12%);
}
.basic-history-column-dropdown label { display: flex; align-items: center; gap: 8px; font-size: 12px; cursor: pointer; }

/* 性能评测多模型对比勾选（2026-10-14）：卡片行头部勾选 + 对比按钮区。 */
.ev-job-row .ev-job-compare-check { justify-self: start; width: 15px; height: 15px; cursor: pointer; }
.ev-job-row.selected-for-compare { border-color: var(--primary); }
/* 性能评测多选对比弹窗（2026-10-15 用户定稿）：汇总表 + 逐模型请求明细折叠块。 */
.ev-compare-scroll { max-height: 320px; overflow: auto; border: 1px solid var(--line-soft); border-radius: 6px; }
.ev-compare-modal .modal-body { display: grid; gap: 10px; }
.ev-compare-modal-hint { margin: 0; font-size: 12px; color: var(--muted); }
.ev-compare-details-heading { margin: 6px 0 0; font-size: 13px; }
.ev-compare-details { border: 1px solid var(--line-soft); border-radius: 6px; background: var(--surface); }
.ev-compare-details + .ev-compare-details { margin-top: 8px; }
.ev-compare-details summary { display: flex; align-items: baseline; gap: 10px; padding: 8px 12px; cursor: pointer; list-style: none; }
.ev-compare-details summary::-webkit-details-marker { display: none; }
.ev-compare-details summary::before { content: "▸"; color: var(--muted); font-size: 11px; transition: transform .15s ease; }
.ev-compare-details[open] summary::before { transform: rotate(90deg); }
.ev-compare-details summary strong { font-size: 13px; }
.ev-compare-details summary span { font-size: 12px; color: var(--muted); }
.ev-compare-details-empty { margin: 0; padding: 4px 12px 10px; font-size: 12px; color: var(--muted); }
.ev-compare-detail-table { width: 100%; border-collapse: collapse; font-size: 12px; }
.ev-compare-detail-table th, .ev-compare-detail-table td { padding: 6px 10px; border-bottom: 1px solid var(--line-soft); text-align: left; }
.ev-compare-detail-table thead th { color: var(--muted); font-weight: 500; position: sticky; top: 0; background: var(--surface); }

/* 失败行整行淡红高亮 + 错误信息文字（2026-10-21 用户反馈：失败要一眼可见、响应/错误列分开）。 */
.ev-model-rows tr.ev-row-failed > td,
.basic-history-table tr.ev-row-failed > td { background: var(--status-bad-soft); }
.ev-error-text { color: var(--danger); font-weight: 600; }
/* 错误信息单元格（2026-11-09 用户反馈「内容显示不全」）：不再单行省略，全量换行显示——
   失败原因是排障关键信号；宽度沿用 .ev-task-response 的 260px，长错误自动折行。 */
.ev-error-cell { max-width: 260px; white-space: normal; word-break: break-word; overflow-wrap: anywhere; font-size: 12px; color: var(--muted); vertical-align: top; }

/* 压测中心（vllm-bench 集成，2026-10-27）：列表/详情/发起表单样式，全部复用既有令牌与组件类。 */
.benchmark-table-scroll { overflow-x: auto; }
.benchmark-runs-table { width: 100%; }
.benchmark-live-hint { margin-left: 4px; color: var(--primary); font-size: 11px; font-weight: 600; }
.benchmark-detail-head { display: flex; align-items: center; flex-wrap: wrap; gap: 8px 12px; margin-bottom: 12px; }
/* 详情指标表（2026-11-10）：业务指标统一由 DevExpress DxGrid 承载，
   复用全局表格的筛选/搜索与分页样式；数值列保持等宽数字和语义色。 */
.benchmark-cli-grid { margin-bottom: 14px; }
.benchmark-cli-grid .ok { color: var(--status-ok); font-weight: 600; }
.benchmark-cli-grid .bad { color: var(--danger); font-weight: 600; }
.benchmark-cli-grid td:last-child { font-variant-numeric: tabular-nums; }
.benchmark-log-heading { margin: 12px 0 6px; font-size: 13px; }
.benchmark-log-panel { max-height: 280px; overflow: auto; margin: 0; padding: 12px; border: 1px solid var(--line-soft); border-radius: 6px; background: var(--surface-muted); font: 12px/1.6 ui-monospace, SFMono-Regular, Consolas, monospace; white-space: pre-wrap; overflow-wrap: anywhere; color: var(--muted); }
.benchmark-result-json { margin-top: 12px; border-top: 1px dashed var(--line-soft); padding-top: 10px; }
.benchmark-result-json summary { cursor: pointer; font-size: 12.5px; color: var(--muted); }
.benchmark-result-json pre { max-height: 320px; overflow: auto; margin: 8px 0 0; padding: 12px; border: 1px solid var(--line-soft); border-radius: 6px; font-size: 12px; white-space: pre-wrap; overflow-wrap: anywhere; }
.benchmark-confirm-note { color: var(--muted); font-size: 12px; }
.benchmark-confirm-targets { margin: 8px 0 0; padding-left: 20px; color: var(--muted); font-size: 12px; }
.benchmark-start-failures { display: grid; gap: 8px; margin-top: 10px; }
/* 工作台勾选列（2026-10-27 用户定稿：待评测表默认全选，可单勾/去勾执行）。 */
.ev-model-rows .ev-col-check { width: 44px; min-width: 44px; text-align: center; white-space: nowrap; }
.ev-model-rows .ev-col-check input[type="checkbox"] { width: 15px; height: 15px; accent-color: var(--primary); }
.ev-model-rows tr.ev-row-excluded > td { opacity: .55; }

/* ---- 独立 vllm-bench 压测页签：任务卡、脱敏命令、实时终端和进度。 ---- */
/* bench 卡头（2026-11-10 工具栏统一批次）：标题/描述/对比模型/规模/动作合并为单行
   section-header（全局 .section-header 提供壳与分隔线），页内只补工具栏右对齐节奏；
   旧 benchmark-workbench-shell/heading（页面级两段式）随插槽化改造删除。 */
.benchmark-runs-section { padding: 0 0 18px; }
.benchmark-runs-heading { flex-wrap: wrap; margin-bottom: 0; padding-bottom: 14px; }
.benchmark-runs-heading h2 { margin: 0; }
.benchmark-runs-heading p { margin: 4px 0 0; }
.benchmark-run-toolbar { display: flex; align-items: center; justify-content: flex-end; flex-wrap: wrap; gap: 8px; }
.benchmark-runs-body { display: grid; gap: 12px; padding: 14px 18px 0; }
.benchmark-run-scale, .benchmark-progress-summary { color: var(--muted); font-size: 12px; font-variant-numeric: tabular-nums; }
.benchmark-run-card { display: grid; gap: 10px; padding: 14px; border: 1px solid var(--line); border-radius: 6px; background: var(--surface); }
.benchmark-run-card + .benchmark-run-card { margin-top: 10px; }
.benchmark-run-card.is-running { border-color: var(--primary); }
.benchmark-run-card-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-width: 0; }
.benchmark-run-card-head > div { min-width: 0; overflow-wrap: anywhere; }
.benchmark-run-card-head strong { font-size: .88rem; }
.benchmark-run-meta { display: flex; align-items: center; flex-wrap: wrap; gap: 8px 14px; }
.benchmark-run-progress { height: 6px; overflow: hidden; border-radius: 999px; background: var(--line-soft); }
.benchmark-run-progress-fill { height: 100%; border-radius: inherit; background: var(--primary); transition: width .6s ease; }
.benchmark-run-actions { display: flex; align-items: center; justify-content: flex-end; gap: 8px; flex-wrap: wrap; }
.bench-terminal { max-height: 280px; overflow: auto; margin: 0; padding: 12px; border: 1px solid var(--line-soft); border-radius: 6px; background: var(--surface-muted); color: var(--muted); font: 12px/1.6 ui-monospace, SFMono-Regular, Consolas, monospace; white-space: pre-wrap; overflow-wrap: anywhere; }
.bench-command { max-height: 220px; color: var(--ink); }
/* stderr 独立分流（2026-11-10 命令模式）：颜色沿用 --danger 语义令牌，暗色主题自动跟随。 */
.bench-stderr { color: var(--danger); }
.bench-command-editor { font: 13px/1.6 ui-monospace, SFMono-Regular, Consolas, monospace; resize: vertical; }

/* 发起失败提示卡（工作台发起由页面转发，错误就地显示）。 */
.bench-form-section { margin-top: 12px; padding: 0 16px 16px; }
.bench-form-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 10px 14px; margin-top: 14px; padding-top: 12px; border-top: 1px solid var(--line-soft); }

/* ---- vllm-bench 命令预览（2026-10-28 用户定稿：参数表单内等价命令行展示，Key 打码）。 ---- */
.bench-cmd-preview { flex: 1 1 100%; min-width: 0; max-height: 220px; overflow: auto; margin: 0; padding: 12px;
                     background: var(--surface-muted); border: 1px solid var(--line-soft); border-radius: 6px;
                     font: 12px/1.7 ui-monospace, SFMono-Regular, Consolas, monospace; color: var(--ink);
                     white-space: pre-wrap; overflow-wrap: anywhere; }

/* 命令预览弹窗（2026-10-29 用户定稿：内容完整显示，modal-body 自身可滚动兜底）。 */
.modal-body .bench-cmd-preview { max-height: none; }
/* 高级参数较长时只滚动内容区，footer 始终固定可见。 */
.modal-dialog:has(.bench-dataset-picker) .modal-body { overflow-y: auto; }
.modal-dialog:has(.bench-dataset-picker) .field-label-row { min-width: 0; }

/* 高级配置弹窗（2026-10-30 用户定稿）：布局样式与「新增上游厂商」弹窗一致——
   弹窗体直接用 form-grid vendor-editor-stack + form-field 标准体系（左标签右控件
   行式布局来自 app.css 全局规则），本文件不再维护弹窗栅格；
   仅保留数据集选择器与预览面板自身的样式。 */
.bench-dataset-picker { display: flex; align-items: center; min-width: 0; gap: 10px; }
.bench-dataset-picker .form-field { flex: 1 1 auto; min-width: 0; width: auto; }
.bench-dataset-preview-button { flex: 0 0 auto; white-space: nowrap; }
.bench-dataset-preview-panel { min-width: 0; margin-top: 10px; padding: 10px; background: var(--surface-muted); border: 1px solid var(--line-soft); border-radius: 6px; }
.bench-dataset-preview-meta { margin: 0 0 10px; color: var(--muted); font-size: .78rem; }
.bench-dataset-preview-list { display: grid; gap: 8px; max-height: 280px; overflow: auto; }
.bench-dataset-preview-row { display: grid; grid-template-columns: 40px minmax(0, 1fr); align-items: start; gap: 10px; padding: 8px 10px; background: var(--surface); border: 1px solid var(--line-soft); border-radius: 6px; }
.bench-dataset-preview-index { color: var(--muted); font-size: .75rem; text-align: right; }
.bench-dataset-preview-row pre { min-width: 0; margin: 0; color: var(--ink); font: .75rem/1.5 ui-monospace, SFMono-Regular, Consolas, monospace; white-space: pre-wrap; overflow-wrap: anywhere; }

/* 结果对比（指标行 × 任务列）：固定布局收敛列宽，值居中，不再整幅拉满。 */
.modal-body .bench-compare-table { table-layout: fixed; width: 100%; max-width: 880px; margin: 0 auto; }
.bench-compare-table th, .bench-compare-table td { vertical-align: top; padding: 8px 12px; text-align: center; }
.bench-compare-table th:first-child, .bench-compare-table td:first-child { width: 170px; text-align: left; }
.bench-compare-table thead th { border-bottom: 1px solid var(--line); }
.bench-compare-table tbody tr + tr td { border-top: 1px solid var(--line-soft); }
.bench-compare-table .bench-compare-label { color: var(--ink); font-weight: 650; white-space: nowrap; }
.bench-compare-table th small { display: block; font-weight: 400; color: var(--muted); }
