/* =========================================================================
 * 资本工具集 · 项目工作台页面样式（唯一入口）
 * 组成顺序：基础布局 → 折叠卡片 → 资料管理页/视图容器 →
 * Word 模版库内嵌布局 → 旧版智能填表/项目评估视图。
 * 说明：本文件仅被 dd_workbench_v2.html 引用；基础样式按工作台定制，不包含
 * 全站共享的 base.css / tailwind.css / Font Awesome 图标库。
 * 日期：2026-10-30
 * ========================================================================= */
/* ---------- 工作台基础布局 ---------- */

:root { --ws-primary: #0066FF; --ws-primary-dark: #0052CC; --ws-secondary: #00D4FF; --ws-accent: #0A192F; --ws-text: #1E3A5F; --ws-bg: #F0F4F8; --ws-line: #e5e7eb; --ws-line-soft: #f1f5f9; --ws-muted: #6b7280; --ws-muted-2: #9ca3af; --ws-ok: #065f46; --ws-ok-bg: #d1fae5; --ws-warn: #92400e; --ws-warn-bg: #fef3c7; --ws-info: #1e40af; --ws-info-bg: #dbeafe; --ws-bad: #991b1b; --ws-bad-bg: #fee2e2; --ws-radius: 12px; --ws-shadow-sm: 0 1px 2px rgba(15, 23, 42, .04), 0 2px 8px rgba(15, 23, 42, .05); --ws-shadow-md: 0 6px 20px rgba(15, 23, 42, .10); --ws-font: "Inter", "HarmonyOS Sans SC", "PingFang SC", "Microsoft YaHei", -apple-system, "Segoe UI", sans-serif; --ws-mono: ui-monospace, "Cascadia Mono", Consolas, monospace }
body { margin: 0; font-family: var(--ws-font); color: var(--ws-text); background: var(--ws-bg); -webkit-font-smoothing: antialiased }
[hidden] { display: none !important }
.ws-header { height: 56px; display: flex; align-items: center; justify-content: space-between; padding: 0 20px; background: #fff; border-bottom: 1px solid var(--ws-line); position: sticky; top: 0; z-index: 40 }
/* 壳体：桌面端高度扣除 64px 页头 + fixed footer 实测高度 --ws-footer-h（页面脚本写入） */
.ws-shell { display: flex; height: calc(100vh - 64px - var(--ws-footer-h, 57px)); overflow: hidden; align-items: stretch }
/* 工作台页脚参与文档流（不再 fixed 覆盖），左栏/模版库底部不会被 footer 盖住；
   shell 仍按 footer 实测高度扣减，保证首屏正好占满、footer 紧跟其后 */
body.ws-page .site-footer { position: relative !important; flex-shrink: 0 }
.ws-sidebar { width: 300px; flex-shrink: 0; background: #fff; border-right: 1px solid var(--ws-line); display: flex; flex-direction: column; overflow: hidden; height: 100% }
.ws-side-pane { min-height: 0; display: flex; flex-direction: column; padding: 12px 12px 8px; overflow: hidden }
.ws-side-pane.ws-side-pane-projects { flex: 1 1 0 }
.ws-side-pane.ws-side-pane-templates { flex: 0 0 auto; border-top: 1px solid var(--ws-line); padding: 10px 12px; transition: height .2s ease }
.ws-side-pane-templates.expanded { flex: 0 0 240px; height: 240px }
.ws-side-pane-templates.collapsed .ws-side-pane-scroll { display: none !important }
.ws-tpl-toggle-title { cursor: pointer; user-select: none }
.ws-side-pane-scroll { flex: 1 1 0; min-height: 0; overflow-y: auto; padding-right: 4px }
.ws-prep-mine { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-top: 10px; font-size: 12px; color: var(--ws-text) }
.ws-prep-mine b { color: var(--ws-primary) }
.ws-block-title { display: flex; align-items: center; gap: 7px; font-size: 12.5px; font-weight: 700; color: var(--ws-accent) }
.ws-block-title i { color: var(--ws-primary) }
.ws-block-title-row { display: flex; align-items: center; justify-content: space-between; gap: 8px }
.ws-block-title-row > span { display: inline-flex; align-items: center; gap: 6px }
.ws-side-new { display: inline-flex; align-items: center; gap: 4px; cursor: pointer; font-family: inherit; padding: 3px 8px; font-size: 11px; font-weight: 700; color: var(--ws-primary); background: #eff6ff; border: 1px solid #bfdbfe; border-radius: 7px; transition: all .16s ease }
.ws-side-new:hover { color: #fff; background: var(--ws-primary); border-color: var(--ws-primary) }
.ws-project-empty { display: flex; align-items: flex-start; gap: 7px; margin-top: 9px; font-size: 11.5px; color: var(--ws-muted-2); line-height: 1.7 }
.ws-project-empty i { color: #cbd5e1; margin-top: 2px }
.ws-project-list { list-style: none; margin: 9px 0 0; padding: 0; display: flex; flex-direction: column; gap: 7px }
.ws-project-card { width: 100%; text-align: left; cursor: pointer; font-family: inherit; border: 1px solid var(--ws-line); border-left: 3px solid var(--ws-line); border-radius: 9px; background: #fcfdff; padding: 9px 10px; transition: all .16s ease }
.ws-project-card:hover { border-color: #bfdbfe; background: #f8fbff }
.ws-project-card.active { border-left-color: var(--ws-primary); background: #f5faff }
.ws-org-search { display: flex; align-items: center; gap: 6px }
.ws-input-text { flex: 1; min-width: 0; height: 32px; padding: 0 10px; font-family: inherit; font-size: 12px; color: var(--ws-text); background: #fff; border: 1px solid var(--ws-line); border-radius: 7px }
.ws-input-text:focus { outline: none; border-color: #bfdbfe; box-shadow: 0 0 0 3px rgba(0, 102, 255, .08) }
.ws-org-dropdown { position: absolute; left: 15px; right: 15px; top: 52px; z-index: 50; background: #fff; border: 1px solid #bfdbfe; border-radius: 8px; box-shadow: var(--ws-shadow-md); max-height: 260px; overflow-y: auto }
.ws-org-option { padding: 9px 12px; font-size: 12.5px; color: var(--ws-text); cursor: pointer }
.ws-org-option:hover { background: #f0f7ff }
.ws-org-option small { display: block; font-family: var(--ws-mono); font-size: 11px; color: var(--ws-muted-2) }
.ws-org-selected { border-top: 1px dashed var(--ws-line); margin-top: 10px; padding-top: 10px }
.ws-project-top { display: flex; align-items: flex-start; gap: 8px }
.ws-project-name { flex: 1; font-size: 13.5px; font-weight: 800; color: var(--ws-accent); line-height: 1.45 }
.ws-project-code { font-family: var(--ws-mono); font-size: 11px; color: var(--ws-muted-2); margin-top: 4px }
.ws-project-badges { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 9px }
.ws-files { list-style: none; margin: 10px 0 0; padding: 0; display: flex; flex-direction: column; gap: 6px }
.ws-file { display: flex; align-items: center; gap: 7px; font-size: 11.5px; color: var(--ws-text); border: 1px solid var(--ws-line); border-radius: 8px; padding: 6px 8px; background: #fcfdff }
.ws-file > i { color: var(--ws-primary); font-size: 11px; flex-shrink: 0 }
.ws-file-name { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap }
.ws-file .pill { flex-shrink: 0 }
.ws-file-remove { margin-left: 4px; cursor: pointer; color: var(--ws-muted-2); background: none; border: none; font-size: 11px }
.ws-file-remove:hover { color: var(--ws-bad) }
.ws-file-empty { font-size: 11.5px; color: var(--ws-muted-2); border: 1px dashed var(--ws-line); border-radius: 8px; padding: 8px 10px }
.ws-retry-slot:empty { display: none }
.ws-hint { display: flex; align-items: flex-start; gap: 8px; font-size: 11.5px; color: var(--ws-muted); line-height: 1.75; border: 1px dashed var(--ws-line); border-radius: 9px; background: #fbfcfe; padding: 10px 12px }
.ws-hint i { color: #cbd5e1; margin-top: 2px }
.ws-hint b { color: var(--ws-primary) }
.pill { font-size: 10.5px; font-weight: 700; padding: 2px 7px; border-radius: 5px; white-space: nowrap; display: inline-block }
.pill.ok { color: var(--ws-ok); background: var(--ws-ok-bg) }
.pill.warn { color: var(--ws-warn); background: var(--ws-warn-bg) }
.pill.info { color: var(--ws-info); background: var(--ws-info-bg) }
.pill.bad { color: var(--ws-bad); background: var(--ws-bad-bg) }
.pill.gray { color: var(--ws-muted); background: var(--ws-line-soft) }
.ws-mini-btn { display: inline-flex; align-items: center; gap: 5px; cursor: pointer; font-family: inherit; font-size: 11px; font-weight: 700; color: var(--ws-primary); background: #fff; border: 1px solid #bfdbfe; border-radius: 7px; padding: 4px 9px; transition: all .16s ease }
.ws-mini-btn:hover { background: #f5faff }
.ws-mini-btn.ghost { color: var(--ws-muted); border-color: var(--ws-line) }
.ws-mini-btn.danger { color: var(--ws-bad); border-color: #fecaca }
.ws-mini-btn.danger:hover { background: #fef2f2 }
.ws-main { flex: 1; min-width: 0; display: flex; flex-direction: column; overflow: hidden; background: var(--ws-bg) }
.pv-view { display: flex; flex-direction: column; flex: 1; min-height: 0 }
.pv-head { padding: 15px 18px 0; background: #fff; border-bottom: 1px solid var(--ws-line); flex-shrink: 0 }
.pv-head-top { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 7px }
.pv-head-top h2 { margin: 0; font-size: 17.5px; font-weight: 800; color: var(--ws-accent) }
.pv-metrics { display: inline-flex; gap: 6px; align-items: center }
.pv-tags { display: flex; gap: 6px; flex-wrap: wrap; align-items: center; margin-bottom: 7px }
.pv-badges { display: flex; gap: 6px; flex-wrap: wrap }
.pv-head-top .ws-mini-btn { margin-left: auto }
.pv-brief { position: relative; margin: 7px 0 9px; padding: 7px 11px; border: 1px solid var(--ws-line-soft); border-radius: 8px; background: #fafcff }
.pv-brief-head { display: flex; align-items: center; justify-content: space-between }
.pv-brief-label { display: flex; align-items: center; gap: 6px; font-size: 11.5px; font-weight: 700; color: var(--ws-primary) }
.pv-brief-toggle { display: inline-flex; align-items: center; gap: 4px; font-size: 11px; font-weight: 600; color: var(--ws-primary); background: transparent; border: none; cursor: pointer; padding: 2px 6px; border-radius: 4px; transition: all .15s ease }
.pv-brief-toggle:hover { background: #eef5ff; color: #1d4ed8 }
.pv-brief-body { position: relative; transition: max-height .2s ease }
.pv-brief-body.collapsed { max-height: 48px; overflow: hidden }
.pv-brief-body.collapsed::after { content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: 22px; background: linear-gradient(to bottom, rgba(250, 252, 255, 0), rgba(250, 252, 255, 1)); pointer-events: none }
.pv-brief-text { margin: 4px 0 0; font-size: 12px; color: var(--ws-text); line-height: 1.6 }
.pv-brief-meta { margin-top: 6px; padding-top: 5px; border-top: 1px dashed var(--ws-line-soft); font-size: 11px; color: var(--ws-muted); line-height: 1.5 }
.pv-brief-empty { color: var(--ws-muted-2); font-style: italic }
.ws-tabs { display: flex; align-items: center; gap: 6px; padding: 0 18px; background: #fff; border-bottom: 1px solid var(--ws-line); flex-shrink: 0 }
.ws-tab { display: inline-flex; align-items: center; gap: 7px; cursor: pointer; font-family: inherit; font-size: 13.5px; font-weight: 700; color: var(--ws-muted); background: transparent; border: none; border-bottom: 2.5px solid transparent; padding: 13px 14px; transition: all .16s ease }
.ws-tab:hover { color: var(--ws-primary) }
.ws-tab.active { color: var(--ws-primary); border-bottom-color: var(--ws-primary) }
.ws-tabs-note { margin-left: auto; font-size: 11.5px; color: var(--ws-muted-2) }
.pv-body { flex: 1; min-height: 0; display: flex; padding: 14px 18px }
.ws-panel { display: none; flex-direction: column; gap: 12px; width: 100%; height: 100% }
.ws-panel.active { display: flex }
.ws-actions { display: flex; align-items: center; gap: 14px; flex-shrink: 0; padding: 12px 18px; background: #fff; border-top: 1px solid var(--ws-line) }
.ws-actions-info { flex: 1; font-size: 12px; color: var(--ws-muted); line-height: 1.7 }
.ws-start { display: inline-flex; align-items: center; gap: 8px; cursor: pointer; font-family: inherit; font-size: 13px; font-weight: 700; color: #fff; border: none; border-radius: 9px; padding: 10px 20px; background: linear-gradient(135deg, var(--ws-primary), var(--ws-primary-dark)); box-shadow: 0 4px 14px rgba(0, 102, 255, .28); transition: all .16s ease }
.ws-start:disabled { cursor: not-allowed; background: #cbd5e1; box-shadow: none }
.ws-start.busy { opacity: .75 }
.docs-toolbar { display: flex; align-items: center; gap: 10px; flex-shrink: 0 }
.docs-title { display: inline-flex; align-items: center; gap: 7px; font-size: 12.5px; font-weight: 700; color: var(--ws-accent) }
.docs-title i { color: var(--ws-primary) }
.docs-count { font-size: 11.5px; color: var(--ws-muted-2) }
.docs-state { font-size: 11.5px; font-weight: 700 }
.docs-state.pending { color: var(--ws-warn) }
.docs-state.parsing { color: var(--ws-info) }
.docs-state.failed { color: var(--ws-bad) }
.docs-state.ready { color: var(--ws-ok) }
.docs-toolbar .ws-mini-btn { margin-left: auto }
.docs-table-wrap { flex: 1; min-height: 0; overflow: auto; background: #fff; border: 1px solid var(--ws-line); border-radius: var(--ws-radius); box-shadow: var(--ws-shadow-sm) }
.docs-table { width: 100%; border-collapse: collapse; font-size: 12.5px }
.docs-table thead th { position: sticky; top: 0; z-index: 1; text-align: left; padding: 10px 14px; background: #f8fafc; color: var(--ws-muted); font-size: 11.5px; font-weight: 700; border-bottom: 1px solid var(--ws-line); white-space: nowrap }
.docs-table td { padding: 11px 14px; border-bottom: 1px solid var(--ws-line-soft); vertical-align: middle }
.docs-table tbody tr:last-child td { border-bottom: none }
.docs-table tbody tr:hover { background: #fbfdff }
.docs-table .col-no { width: 78px; text-align: left }
.docs-table .col-state { width: 130px; text-align: center }
.docs-table thead th.col-state { text-align: center }
.docs-table .col-act { width: 220px; text-align: center }
.docs-table thead th.col-act { text-align: center }
.docs-no { font-family: var(--ws-mono); color: var(--ws-muted-2); font-size: 12px }
.docs-file { color: var(--ws-primary); font-weight: 700; cursor: pointer; text-decoration: none }
.docs-file:hover { text-decoration: underline; color: #1d4ed8 }
.docs-size { margin-left: 8px; font-size: 11px; color: var(--ws-muted-2) }
.docs-act { display: inline-flex; gap: 6px; justify-content: center; align-items: center; width: 100% }
.ws-mini-btn.danger { color: #dc2626; border-color: #fecaca; background: #fef2f2 }
.ws-mini-btn.danger:hover { color: #fff; background: #dc2626; border-color: #dc2626 }
.docs-empty { padding: 28px; text-align: center; color: var(--ws-muted-2); font-size: 12.5px; line-height: 1.8 }
.pv-split { display: flex; gap: 12px; flex: 1; min-height: 0 }
.pv-list { width: 232px; flex-shrink: 0; display: flex; flex-direction: column; overflow: hidden; background: #fff; border: 1px solid var(--ws-line); border-radius: var(--ws-radius); box-shadow: var(--ws-shadow-sm) }
.pv-list-head { display: flex; align-items: center; gap: 7px; flex-shrink: 0; padding: 11px 13px; font-size: 12px; font-weight: 700; color: var(--ws-accent); border-bottom: 1px solid var(--ws-line-soft) }
.pv-list-head i { color: var(--ws-primary) }
.pv-items { list-style: none; margin: 0; padding: 8px; display: flex; flex-direction: column; gap: 6px; overflow-y: auto }
.pv-item { width: 100%; text-align: left; cursor: pointer; font-family: inherit; border: 1px solid var(--ws-line); border-radius: 9px; background: #fcfdff; padding: 9px 10px; transition: all .16s ease }
.pv-item:hover { border-color: #bfdbfe; background: #f8fbff }
.pv-item.active { border-color: #bfdbfe; background: #f5faff; box-shadow: inset 3px 0 0 var(--ws-primary) }
.pv-item-name { display: flex; align-items: center; gap: 7px; font-size: 12.5px; font-weight: 700; color: var(--ws-accent) }
.pv-item-name .pill { margin-left: auto }
.pv-item-desc { margin-top: 5px; font-size: 11px; color: var(--ws-muted-2); line-height: 1.6 }
.pv-content { flex: 1; min-width: 0; display: flex; flex-direction: column; overflow: hidden; background: #fff; border: 1px solid var(--ws-line); border-radius: var(--ws-radius); box-shadow: var(--ws-shadow-sm) }
.pv-content-head { display: flex; align-items: center; gap: 8px; flex-shrink: 0; padding: 11px 14px; font-size: 12.5px; font-weight: 700; color: var(--ws-accent); border-bottom: 1px solid var(--ws-line-soft) }
.pv-content-head .pill { margin-left: auto }
/* 报告消息区：生成日志与深度对话气泡共用 */
.pv-chat { flex: 1; overflow-y: auto; padding: 14px; display: flex; flex-direction: column; gap: 9px; background: #fbfcfe }
.pv-side { width: 244px; flex-shrink: 0; display: flex; flex-direction: column; gap: 12px; overflow-y: auto }
.pv-side-block { background: #fff; border: 1px solid var(--ws-line); border-radius: var(--ws-radius); box-shadow: var(--ws-shadow-sm); overflow: hidden; flex-shrink: 0 }
.pv-subtasks { list-style: none; margin: 0; padding: 11px 13px; display: flex; flex-direction: column; gap: 8px }
.pv-subtasks li { display: flex; align-items: center; gap: 8px; font-size: 12px; color: var(--ws-text) }
.pv-subtasks li::before { content: "\f111"; font-family: "Font Awesome 6 Free"; font-weight: 400; font-size: 7px; color: #cbd5e1 }
.pv-subtasks li.done { color: var(--ws-muted) }
.pv-subtasks li.done::before { content: "\f00c"; font-weight: 900; font-size: 10px; color: #10b981 }
.pv-subtasks li.running { color: var(--ws-primary); font-weight: 600 }
.pv-subtasks li.running::before { content: "\f110"; font-family: "Font Awesome 6 Free"; font-weight: 900; font-size: 10px; color: #3b82f6; animation: fa-spin 1s infinite linear }
.pv-outputs { padding: 11px 13px; display: flex; flex-direction: column; gap: 7px }
.pv-output { display: flex; align-items: center; gap: 8px; font-size: 11.5px; color: var(--ws-text); border: 1px solid var(--ws-line); border-radius: 8px; padding: 8px 10px; background: #fcfdff }
.pv-output i { color: var(--ws-primary) }
.pv-placeholder { font-size: 11.5px; color: var(--ws-muted-2); line-height: 1.75 }
.fe-view { flex: 1; min-height: 0; display: flex; flex-direction: column; overflow: hidden }
.pv-empty { list-style: none; padding: 18px 12px; text-align: center; font-size: 11.5px; color: var(--ws-muted-2); line-height: 1.9 }
.pv-list-count { margin-left: auto; font-size: 11px; font-weight: 500; color: var(--ws-muted-2) }
.pv-list-head .ws-mini-btn { padding: 3px 8px; font-size: 11px }
.pv-list-head .pv-list-count + .ws-mini-btn { margin-left: 8px }
.pv-list-head > span#form-list-title { font-weight: 700 }
.pv-head-time { font-size: 11px; font-weight: 500; color: var(--ws-muted-2) }
.pv-content-head .pv-head-time { margin-left: 4px }
.pv-block { display: flex; align-items: center; gap: 8px; flex-shrink: 0; margin: 10px 14px 0; padding: 8px 11px; font-size: 11.5px; line-height: 1.7; color: #92400e; background: #fffbeb; border: 1px solid #fde68a; border-radius: 8px }
.pv-block i { color: var(--ws-warn) }
.pv-block .ws-mini-btn { margin-left: auto; flex-shrink: 0; padding: 3px 8px; font-size: 11px }
.pv-modal { position: fixed; inset: 0; z-index: 60; display: flex; align-items: center; justify-content: center; background: rgba(10, 25, 47, .42); backdrop-filter: blur(1.5px) }
.pv-modal-box { width: 440px; max-width: calc(100vw - 40px); background: #fff; border-radius: 14px; box-shadow: 0 18px 44px rgba(10, 25, 47, .22); overflow: hidden; animation: ws-pop .18s ease }
.pv-modal-head { display: flex; align-items: center; justify-content: space-between; padding: 13px 16px; font-size: 13.5px; font-weight: 700; color: var(--ws-accent); border-bottom: 1px solid var(--ws-line-soft) }
.pv-modal-x { cursor: pointer; border: 0; background: transparent; color: var(--ws-muted-2); font-size: 14px; padding: 2px 4px; border-radius: 6px }
.pv-modal-x:hover { color: var(--ws-bad); background: #fef2f2 }
.pv-modal-note { display: flex; align-items: center; gap: 7px; margin: 11px 14px 0; padding: 8px 11px; font-size: 11.5px; line-height: 1.7; color: #92400e; background: #fffbeb; border: 1px solid #fde68a; border-radius: 8px }
.pv-modal-note i { color: var(--ws-warn) }
.pv-modal-body { padding: 12px 14px; display: flex; flex-direction: column; gap: 9px }
.pv-modal-opt { display: flex; align-items: center; gap: 11px; cursor: pointer; text-align: left; font-family: inherit; padding: 11px 13px; border: 1px solid var(--ws-line); border-radius: 10px; background: #fcfdff; transition: all .16s ease }
.pv-modal-opt:hover { border-color: #bfdbfe; background: #f5faff }
.pv-modal-opt > i:first-child { width: 30px; height: 30px; flex-shrink: 0; display: inline-flex; align-items: center; justify-content: center; border-radius: 8px; background: #eff6ff; color: var(--ws-primary); font-size: 13px }
.pv-modal-opt-name { font-size: 12.5px; font-weight: 700; color: var(--ws-accent) }
.pv-modal-opt-desc { font-size: 11px; color: var(--ws-muted-2); line-height: 1.6 }
.pv-modal-opt > i:last-child { color: #cbd5e1; font-size: 11px }
.pv-modal-foot { display: flex; justify-content: flex-end; padding: 0 14px 14px }
/* Word 模版详情 / 重新解析弹框 */
.tpl-modal-box { width: 720px; max-width: calc(100vw - 32px); max-height: 86vh; display: flex; flex-direction: column }
.tpl-modal-body { flex: 1 1 auto; min-height: 120px; overflow-y: auto; padding: 0 16px 12px }
.tpl-reanalyze { flex-shrink: 0; border-top: 1px solid var(--ws-line-soft); padding: 12px 16px 14px }
.tpl-reanalyze-tip { font-size: 11.5px; color: var(--ws-muted); line-height: 1.7; margin-bottom: 8px }
.tpl-reanalyze textarea { width: 100%; box-sizing: border-box }
.tpl-modal-foot { display: flex; justify-content: flex-end; gap: 8px; margin-top: 10px }
/* ---- 表单基础控件（SchemaForm / 模版重新解析弹框使用，原 form_fill.css 保留部分） ---- */
.form-input, .form-textarea { width: 100%; padding: .375rem .625rem; border: 1px solid #d1d5db; border-radius: .375rem; font-size: .875rem; color: #1f2937; background-color: #fff; transition: border-color .15s, box-shadow .15s }
.form-input:focus, .form-textarea:focus { outline: none; border-color: var(--primary, #4f46e5); box-shadow: 0 0 0 2px rgba(79, 70, 229, .15) }
.form-input:disabled, .form-textarea:disabled { background-color: #f3f4f6; color: #9ca3af; cursor: not-allowed }
.form-input[readonly] { background-color: #f9fafb; color: #4b5563 }
.form-textarea { resize: vertical; min-height: 60px; line-height: 1.6 }
/* ---- PP 图片资产摘要（右栏） ---- */
.pv-image-body { padding: 10px 13px 12px }
.pp-image-summary { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 8px }
.pp-image-count { font-size: 11.5px; color: var(--ws-muted); display: inline-flex; align-items: center }
.pp-image-count i { color: var(--ws-primary) }
.pp-image-view-btn { cursor: pointer; font-family: inherit; font-size: 11px; font-weight: 700; color: var(--ws-primary); background: #eff6ff; border: 1px solid #bfdbfe; border-radius: 6px; padding: 3px 8px }
.pp-image-view-btn:hover { color: #fff; background: var(--ws-primary); border-color: var(--ws-primary) }
.pp-image-thumb-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px }
.pp-image-thumb { height: 62px; border: 1px solid var(--ws-line); border-radius: 7px; overflow: hidden; background: #f8fafc; display: flex; align-items: center; justify-content: center; color: #cbd5e1; cursor: pointer }
.pp-image-thumb img { width: 100%; height: 100%; object-fit: cover; display: block }
.pp-image-thumb:hover { border-color: #bfdbfe; box-shadow: 0 0 0 2px rgba(59,130,246,.12) }
.pp-image-placeholder { font-size: 11.5px; color: var(--ws-muted-2); line-height: 1.7; padding: 6px 0 }
/* ---- PP 图片资产图库 ---- */
.pp-gallery-overlay { position: fixed; inset: 0; z-index: 80; background: rgba(10,25,47,.45); display: flex; align-items: center; justify-content: center; padding: 24px }
.pp-gallery { width: min(1040px, 96vw); height: min(760px, 88vh); background: #fff; border-radius: 14px; box-shadow: 0 20px 60px rgba(10,25,47,.28); display: flex; flex-direction: column; overflow: hidden }
.pp-gallery-header { display: flex; align-items: center; gap: 12px; padding: 14px 18px; border-bottom: 1px solid var(--ws-line-soft) }
.pp-gallery-title { font-size: 14px; font-weight: 800; color: var(--ws-accent); display: inline-flex; align-items: center }
.pp-gallery-title i { color: var(--ws-primary) }
.pp-gallery-filter { margin-left: auto; font-family: inherit; font-size: 12px; padding: 5px 9px; border: 1px solid var(--ws-line); border-radius: 7px; background: #fcfdff; color: var(--ws-text) }
.pp-gallery-close { width: 28px; height: 28px; border: none; border-radius: 7px; background: transparent; color: var(--ws-muted); cursor: pointer }
.pp-gallery-close:hover { background: var(--ws-line-soft); color: var(--ws-accent) }
.pp-gallery-grid { flex: 1; overflow-y: auto; padding: 16px 18px; display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 12px; align-content: start; background: #f8fafc }
.pp-gallery-empty { grid-column: 1 / -1; align-self: center; justify-self: center; padding: 30px; font-size: 12.5px; color: var(--ws-muted-2) }
.pp-gallery-card { background: #fff; border: 1px solid var(--ws-line); border-radius: 10px; overflow: hidden; cursor: pointer; transition: all .16s ease }
.pp-gallery-card:hover { border-color: #bfdbfe; box-shadow: 0 6px 18px rgba(15,23,42,.08); transform: translateY(-1px) }
.pp-gallery-card-img-slot { height: 140px; background: #f1f5f9; display: flex; align-items: center; justify-content: center; color: #cbd5e1 }
.pp-gallery-img { width: 100%; height: 100%; object-fit: contain; display: block }
.pp-gallery-card-body { padding: 9px 10px 10px }
.pp-gallery-card-title { font-size: 12px; font-weight: 700; color: var(--ws-accent); white-space: nowrap; overflow: hidden; text-overflow: ellipsis }
.pp-gallery-card-desc { margin-top: 4px; font-size: 11px; color: var(--ws-muted); line-height: 1.55; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden }
.pp-gallery-card-meta { margin-top: 6px; display: flex; align-items: center; gap: 6px; font-size: 10.5px; color: var(--ws-muted-2) }
.pp-gallery-cat-badge { display: inline-block; padding: 1px 6px; border-radius: 999px; background: #eff6ff; color: var(--ws-primary); font-size: 10.5px; font-weight: 600 }
.pp-gallery-pager { flex-shrink: 0; display: flex; align-items: center; justify-content: center; gap: 12px; padding: 10px; border-top: 1px solid var(--ws-line-soft) }
.pp-gallery-page-btn { width: 28px; height: 28px; border: 1px solid var(--ws-line); border-radius: 7px; background: #fff; color: var(--ws-text); cursor: pointer }
.pp-gallery-page-btn:hover:not(:disabled) { border-color: #bfdbfe; color: var(--ws-primary) }
.pp-gallery-page-btn:disabled { opacity: .4; cursor: not-allowed }
.pp-gallery-page-info { font-size: 11.5px; color: var(--ws-muted) }
/* ---- PP 单图详情 ---- */
.pp-lightbox { position: fixed; inset: 0; z-index: 90; background: rgba(10,25,47,.72); display: flex; align-items: center; justify-content: center; padding: 24px }
.pp-lightbox-close { position: absolute; top: 18px; right: 20px; width: 34px; height: 34px; border: none; border-radius: 9px; background: rgba(255,255,255,.14); color: #fff; cursor: pointer }
.pp-lightbox-close:hover { background: rgba(255,255,255,.25) }
.pp-lightbox-panel { width: min(1040px, 94vw); max-height: 88vh; background: #fff; border-radius: 14px; overflow: hidden; display: flex }
.pp-lightbox-figure { flex: 1; min-width: 0; background: #0f172a; display: flex; align-items: center; justify-content: center; color: #94a3b8 }
.pp-lightbox-figure img { max-width: 100%; max-height: 82vh; object-fit: contain; display: block }
.pp-lightbox-info { width: 320px; flex-shrink: 0; padding: 18px; overflow-y: auto; color: var(--ws-text) }
.pp-lightbox-info h4 { margin: 0 0 8px; font-size: 14px; color: var(--ws-accent) }
.pp-lightbox-desc { margin: 10px 0; font-size: 12px; line-height: 1.7; color: var(--ws-muted) }
.pp-lightbox-kv { margin: 6px 0; font-size: 11.5px; line-height: 1.7; color: var(--ws-muted) }
.pp-lightbox-kv strong { color: var(--ws-text) }
@media (max-width: 900px) { .pp-lightbox-panel { flex-direction: column; overflow-y: auto } .pp-lightbox-info { width: auto } .pp-lightbox-figure img { max-height: 55vh } }
@keyframes ws-pop {
  from { opacity: 0; transform: translateY(6px) scale(.99) }
  to { opacity: 1; transform: none }
}
.ws-msg { max-width: 78%; font-size: 12.5px; line-height: 1.85; padding: 9px 12px; border-radius: 10px }
.ws-msg.bot { background: #fff; border: 1px solid var(--ws-line); color: var(--ws-text); align-self: flex-start }
.ws-msg.me { background: linear-gradient(135deg, var(--ws-primary), var(--ws-primary-dark)); color: #fff; align-self: flex-end }
.ws-msg.system { align-self: center; background: var(--ws-line-soft); color: var(--ws-muted); font-size: 11.5px }
.ws-overlay { position: fixed; inset: 0; z-index: 60; display: flex; align-items: center; justify-content: center; background: rgba(10, 25, 47, .38); backdrop-filter: blur(2px) }
.ws-overlay-card { width: 380px; max-width: calc(100vw - 40px); text-align: center; background: #fff; border-radius: 14px; padding: 26px 24px; box-shadow: var(--ws-shadow-md) }
.ws-overlay-card > i { font-size: 26px; color: var(--ws-primary) }
.ws-overlay-title { font-size: 15px; font-weight: 800; color: var(--ws-accent); margin-top: 12px }
.ws-overlay-sub { font-size: 12.5px; color: var(--ws-muted); line-height: 1.8; margin-top: 8px }
.ws-overlay-bar { height: 5px; border-radius: 999px; background: var(--ws-line-soft); margin-top: 16px; overflow: hidden }
.ws-overlay-bar > i { display: block; height: 100%; width: 30%; border-radius: 999px; background: linear-gradient(90deg, var(--ws-primary), var(--ws-secondary)); animation: wsSlide 1.1s ease-in-out infinite }
@keyframes wsSlide {
  0% { margin-left: -30% }
  100% { margin-left: 100% }
}
.ws-toast { position: fixed; right: 22px; bottom: 24px; z-index: 70; max-width: 360px; background: var(--ws-accent); color: #fff; font-size: 12.5px; line-height: 1.7; border-radius: 10px; padding: 11px 15px; box-shadow: var(--ws-shadow-md); opacity: 0; transform: translateY(8px); pointer-events: none; transition: all .22s ease }
.ws-toast.show { opacity: 1; transform: translateY(0) }
.ws-toast.bad { background: #991b1b }
.ws-toast.ok { background: #065f46 }
@media (max-width: 1280px) {
  .pv-list { width: 196px }
  .pv-side { width: 212px }
}
/* 左栏改为上下排列：两个面板按内容高度展示，并给 fixed footer 留出底部空间 */
@media (max-width: 1080px) {
  .ws-shell { flex-direction: column; height: auto }
  .ws-sidebar { width: 100%; border-right: none; border-bottom: 1px solid var(--ws-line); height: auto; overflow: visible }
  .ws-side-pane.ws-side-pane-projects, .ws-side-pane.ws-side-pane-templates { flex: 0 0 auto; max-height: none }
  .ws-side-pane-scroll { flex: 0 1 auto }
  .ws-side-pane.ws-side-pane-projects .ws-side-pane-scroll { max-height: 220px }
  .ws-side-pane-templates.expanded { flex: 0 0 auto; height: auto }
  .ws-side-pane-templates.expanded .ws-side-pane-scroll { max-height: 200px }
  .pv-side { display: none }
}
/* ---- 项目备料向导（原 project_prep.css） ---- */
.ws-prep-pane { flex: 1; min-height: 0; overflow-y: auto; padding: 20px 22px 0 }
.ws-prep-head { max-width: 880px }
.ws-prep-head h2 { margin: 0; font-size: 18px; font-weight: 800; color: var(--ws-accent) }
.ws-prep-head p { margin: 7px 0 0; font-size: 12.5px; color: var(--ws-muted); line-height: 1.8 }
.ws-prep-head b { color: var(--ws-primary) }
.ws-actions-inline { position: sticky; bottom: 0; z-index: 2; max-width: none; margin: 10px -22px 0; padding: 12px 22px }
.ws-stepper { list-style: none; margin: 18px 0 0; padding: 0; max-width: 880px }
.ws-step { display: flex; gap: 14px }
.ws-step-rail { position: relative; width: 26px; flex-shrink: 0; display: flex; justify-content: center }
.ws-step-rail::after { content: ""; position: absolute; top: 30px; bottom: 0; width: 2px; background: var(--ws-line); border-radius: 2px }
.ws-step:last-child .ws-step-rail::after { display: none }
.ws-step-dot { width: 26px; height: 26px; border-radius: 50%; z-index: 1; display: flex; align-items: center; justify-content: center; font-size: 12px; font-weight: 800; color: var(--ws-muted-2); background: #fff; border: 2px solid var(--ws-line) }
.ws-step.active .ws-step-dot { color: #fff; border-color: transparent; background: linear-gradient(135deg, var(--ws-primary), var(--ws-primary-dark)) }
.ws-step.done .ws-step-dot { color: #fff; border-color: transparent; background: #10b981; font-size: 0 }
.ws-step.done .ws-step-dot::before { content: "\f00c"; font-family: "Font Awesome 6 Free"; font-weight: 900; font-size: 11px }
.ws-step-card { flex: 1; min-width: 0; margin-bottom: 14px; background: #fff; border: 1px solid var(--ws-line); border-radius: var(--ws-radius); box-shadow: var(--ws-shadow-sm); overflow: visible }
.ws-step[data-step="1"] { position: relative; z-index: 20 }
.ws-step[data-step="2"] { position: relative; z-index: 10 }
.ws-step.active .ws-step-card { border-color: #bfdbfe; box-shadow: 0 4px 16px rgba(0, 102, 255, .10) }
.ws-step-head { display: flex; align-items: flex-start; gap: 12px; padding: 13px 15px; border-bottom: 1px solid var(--ws-line-soft) }
.ws-step-head h3 { margin: 0; font-size: 13.5px; font-weight: 800; color: var(--ws-accent) }
.ws-step-head p { margin: 4px 0 0; font-size: 11.5px; color: var(--ws-muted-2); line-height: 1.7 }
.ws-step-badge { margin-left: auto; flex-shrink: 0; font-size: 10.5px; font-weight: 700; padding: 3px 8px; border-radius: 5px; color: var(--ws-muted); background: var(--ws-line-soft) }
.ws-step.active .ws-step-badge { color: var(--ws-info); background: var(--ws-info-bg) }
.ws-step.done .ws-step-badge { color: var(--ws-ok); background: var(--ws-ok-bg) }
.ws-step-body { position: relative; padding: 14px 15px }
.ws-step-content { display: flex; flex-direction: column }
.ws-org-dropdown { position: absolute; left: 15px; right: 15px; top: 52px; z-index: 50; background: #fff; border: 1px solid #bfdbfe; border-radius: 8px; box-shadow: 0 12px 28px rgba(15, 23, 42, .14), 0 4px 10px rgba(15, 23, 42, .06); max-height: 260px; overflow-y: auto }
.ws-org-option { padding: 10px 13px; font-size: 12.5px; color: var(--ws-text); cursor: pointer; line-height: 1.5; border-bottom: 1px solid var(--ws-line-soft); transition: background .12s ease }
.ws-org-option:last-child { border-bottom: none }
.ws-org-option:hover { background: #f0f7ff }
.ws-org-opt-name { font-weight: 600; color: var(--ws-accent) }
.ws-org-option:hover .ws-org-opt-name { color: var(--ws-primary) }
.ws-org-opt-meta { display: block; font-family: var(--ws-mono); font-size: 11px; color: var(--ws-muted-2); margin-top: 3px; line-height: 1.4 }
.ws-org-option-empty { text-align: center; color: var(--ws-muted); cursor: default; padding: 16px 12px; font-size: 12px }
.ws-org-option-empty:hover { background: transparent }
.ws-step-lock { display: flex; align-items: center; gap: 8px; padding: 12px 13px; border: 1px dashed var(--ws-line); border-radius: 9px; background: #fbfcfe; font-size: 12px; color: var(--ws-muted-2) }
.ws-step-lock i { color: #cbd5e1 }
.ws-dropzone { display: flex; flex-direction: column; align-items: center; gap: 6px; cursor: pointer; border: 1.5px dashed #bfdbfe; border-radius: 10px; background: #f8fbff; padding: 20px 14px; text-align: center; transition: all .16s ease }
.ws-dropzone:hover { background: #eef6ff; border-color: var(--ws-primary) }
.ws-dropzone > i { font-size: 22px; color: var(--ws-primary) }
.ws-dropzone > div { font-size: 12.5px; font-weight: 700; color: var(--ws-text) }
.ws-dropzone-sub { font-size: 11px; color: var(--ws-muted-2); font-weight: 400 }
.ws-dropzone.drag-over { background: #e0f2fe; border-color: var(--ws-primary); box-shadow: 0 0 0 3px rgba(0, 102, 255, .15); transform: scale(1.008) }
.ws-dropzone.ws-dropzone-busy { opacity: 0.7; cursor: wait; pointer-events: none; border-color: #93c5fd; background: #f1f5f9 }
/* ---- 报告完成后追问输入栏（原 project_chat.css） ---- */
.pv-chat-input { flex-shrink: 0; display: flex; align-items: flex-end; gap: 8px; padding: 10px 12px; border-top: 1px solid var(--ws-line-soft); background: #fff }
.pv-chat-input textarea { flex: 1; resize: none; min-height: 36px; max-height: 120px; padding: 8px 10px; border: 1px solid var(--ws-line); border-radius: 9px; font-family: inherit; font-size: 12.5px; line-height: 1.6; color: var(--ws-text); background: #fcfdff; outline: none; transition: border-color .16s ease, box-shadow .16s ease }
.pv-chat-input textarea:focus { border-color: #bfdbfe; box-shadow: 0 0 0 3px rgba(59, 130, 246, .08) }
.pv-chat-input textarea:disabled { background: #f8fafc; color: var(--ws-muted-2); cursor: not-allowed }
.ws-chat-send { flex-shrink: 0; width: 36px; height: 36px; border: none; border-radius: 9px; display: inline-flex; align-items: center; justify-content: center; background: var(--ws-primary); color: #fff; cursor: pointer; transition: background .16s ease }
.ws-chat-send:hover { background: var(--ws-primary-dark) }
.ws-chat-send:disabled { opacity: .45; cursor: not-allowed }
.ws-msg.is-chat p { margin: 0 0 6px }
.ws-msg.is-chat p:last-child { margin-bottom: 0 }
.ws-msg.is-chat ul, .ws-msg.is-chat ol { margin: 4px 0 6px; padding-left: 18px }
.ws-msg.is-chat code { padding: 1px 4px; border-radius: 4px; background: var(--ws-line-soft); font-family: var(--ws-mono); font-size: 11.5px }
.ws-msg.is-chat pre { margin: 6px 0; padding: 8px 10px; border-radius: 8px; background: #0f172a; color: #e2e8f0; overflow-x: auto }
.ws-msg.is-chat pre code { padding: 0; background: transparent; color: inherit }
.ws-msg.is-chat table { border-collapse: collapse; margin: 6px 0 }
.ws-msg.is-chat th, .ws-msg.is-chat td { border: 1px solid var(--ws-line); padding: 4px 7px }
/* ===================== 智能填表 v2（SchemaForm） ===================== */
.sf-field { background: #fff; border: 1px solid #e5e7eb; border-radius: 8px; padding: 14px 16px; margin-bottom: 12px }
.sf-field-head { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; flex-wrap: wrap }
.sf-field-label { font-size: 14px; font-weight: 600; color: #374151; max-width: 70%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap }
.sf-field-type { font-size: 11px; padding: 1px 6px; border-radius: 4px; background: #f3f4f6; color: #6b7280 }
.sf-help { font-size: 12px; color: #9ca3af; margin-top: 4px; white-space: pre-wrap; word-break: break-all }
.sf-badge { display: inline-flex; align-items: center; gap: 3px; font-size: 11px; padding: 1px 8px; border-radius: 9999px; white-space: nowrap }
.sf-badge.filled, .sf-badge.success { background: #ecfdf5; color: #059669 }
.sf-badge.no_data, .sf-badge.pending { background: #f3f4f6; color: #6b7280 }
.sf-badge.failed { background: #fef2f2; color: #dc2626 }
.sf-badge.missed-tip { cursor: help; background: #fffbeb; color: #d97706 }
.sf-options { display: flex; flex-wrap: wrap; gap: 8px 16px }
.sf-option-item { display: inline-flex; align-items: center; gap: 5px; font-size: 13px; color: #374151; cursor: pointer }
.sf-option-item input { accent-color: #4f46e5 }
.sf-other-input { margin-top: 8px }
.sf-sub-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px 16px }
.sf-sub-item label { display: block; font-size: 12px; color: #6b7280; margin-bottom: 3px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap }
.sf-table { width: 100%; border-collapse: collapse; font-size: 13px }
.sf-table th { background: #f9fafb; border: 1px solid #e5e7eb; padding: 6px 8px; text-align: left; font-weight: 600; color: #4b5563; white-space: nowrap }
.sf-table td { border: 1px solid #e5e7eb; padding: 0 }
.sf-table td input { width: 100%; border: none; outline: none; padding: 6px 8px; font-size: 13px; background: transparent }
.sf-table td input:focus { background: #eef2ff }
.sf-table-toolbar { margin-top: 6px; display: flex; gap: 8px }
.sf-link-btn { font-size: 12px; color: #4f46e5; cursor: pointer; background: none; border: none; padding: 0 }
.sf-link-btn:hover { text-decoration: underline }
.sf-link-btn.danger { color: #dc2626 }
.sf-empty { text-align: center; color: #9ca3af; font-size: 13px; padding: 32px 0 }
.modal { width: min(560px, 92vw); max-height: 86vh; overflow-y: auto; background: #fff; border-radius: 10px; box-shadow: 0 12px 32px rgba(0, 0, 0, 0.18); padding: 20px 22px }

/* ---------- 折叠卡片 / 资料管理页 / 模版库 / 旧版填表 ---------- */

/* ---------- 折叠项目卡片 ---------- */

/* 卡片外框：左侧 3px 竖条表示是否当前选中项目 */
.ws-pc { border: 1px solid var(--ws-line); border-left: 3px solid var(--ws-line); border-radius: 9px; background: #fcfdff; overflow: hidden; transition: border-color .16s ease, background .16s ease, box-shadow .16s ease }
.ws-pc:hover { border-color: #bfdbfe; background: #f8fbff }
.ws-pc.active { border-left-color: var(--ws-primary); background: #f5faff }
.ws-pc.open { background: #fff; box-shadow: var(--ws-shadow-sm) }

/* 卡片头：企业名称在上、创建时间在下（名称完整显示不截断）；展开箭头靠右 */
.ws-pc-head { display: flex; align-items: flex-start; gap: 6px; width: 100%; text-align: left; cursor: pointer; font-family: inherit; background: transparent; border: 0; padding: 9px 10px }
.ws-pc-main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px }
/* 名称不做 ellipsis：企业名短的更不该被隐藏，长的自动换行 */
.ws-pc-name { font-size: 12.8px; font-weight: 800; color: var(--ws-accent); line-height: 1.45; white-space: normal; overflow-wrap: anywhere; word-break: break-word }
.ws-pc-time { display: inline-flex; align-items: center; gap: 4px; font-size: 10.5px; color: var(--ws-muted-2) }
.ws-pc-chevron { flex-shrink: 0; font-size: 10px; color: var(--ws-muted-2); margin-top: 4px }

/* 展开区：入口按钮 / 分隔线 / 任务标题行 / 任务行 */
.ws-pc-body { padding: 8px 10px 9px; border-top: 1px dashed var(--ws-line-soft) }
.ws-pc-doc { display: inline-flex; align-items: center; justify-content: center; gap: 6px; width: 100%; cursor: pointer; font-family: inherit; font-size: 11.5px; font-weight: 700; color: var(--ws-primary); background: #eff6ff; border: 1px solid #bfdbfe; border-radius: 7px; padding: 5px 9px; transition: all .16s ease }
.ws-pc-doc:hover { color: #fff; background: var(--ws-primary); border-color: var(--ws-primary) }
.ws-pc-divider { height: 1px; margin: 8px 0 7px; background: var(--ws-line-soft) }
.ws-pc-tasks-head { display: flex; align-items: center; justify-content: space-between; font-size: 11px; font-weight: 700; color: var(--ws-muted) }
.ws-pc-new-task { display: inline-flex; align-items: center; gap: 4px; cursor: pointer; font-family: inherit; font-size: 10.5px; font-weight: 700; color: var(--ws-primary); background: transparent; border: none; padding: 1px 4px; border-radius: 5px }
.ws-pc-new-task:hover { background: #eff6ff }

/* 任务行：尽调报告 · MM-DD HH:mm + 状态徽标（88 完成绿 / 1、0 进行中灰 / 2 失败红） */
.ws-pc-tasks { list-style: none; margin: 6px 0 0; padding: 0; display: flex; flex-direction: column; gap: 4px }
.ws-pc-task { display: flex; align-items: center; gap: 8px; width: 100%; text-align: left; cursor: pointer; font-family: inherit; font-size: 11.5px; color: var(--ws-text); background: #fcfdff; border: 1px solid var(--ws-line-soft); border-radius: 7px; padding: 5px 8px; transition: all .16s ease }
.ws-pc-task:hover { border-color: #bfdbfe; background: #f5faff }
.ws-pc-task-label { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap }
.ws-pc-task-empty { font-size: 11px; color: var(--ws-muted-2); padding: 3px 2px }

/* ---------- 项目资料管理页与填表视图容器 ---------- */

/* ---------- 项目资料管理页 ---------- */
.docs-page { display: flex; flex-direction: column; gap: 10px; width: 100%; height: 100%; min-height: 0 }
.docs-page-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; flex-shrink: 0 }
.docs-page-title { display: inline-flex; align-items: center; gap: 8px; margin: 0; font-size: 16px; font-weight: 800; color: var(--ws-accent) }
.docs-page-title i { color: var(--ws-primary); font-size: 14px }
.docs-page-actions { display: inline-flex; align-items: center; gap: 8px; flex-wrap: wrap }
.docs-page-meta { display: flex; align-items: center; gap: 10px; min-height: 15px; flex-shrink: 0 }
.docs-page-meta .docs-count { font-size: 11.5px; color: var(--ws-muted-2) }

/* 表格列宽：在原 docs-table 基础上补齐 7 列 */
.docs-table .col-type { width: 92px }
.docs-table .col-size { width: 96px }
.docs-table .col-user { width: 96px }
.docs-table .col-time { width: 152px }
.docs-table .col-act { width: 190px }
/* 无下载地址的资料：保持普通文本（不显示可点击态） */
.docs-file-plain { color: var(--ws-text); font-weight: 600; cursor: default }
.docs-file-plain:hover { color: var(--ws-text); text-decoration: none }

/* 空态：此项目暂无资料 / 上传项目资料，AI 生成项目相关报告 */
.docs-empty-title { font-size: 13px; font-weight: 700; color: var(--ws-muted); margin-bottom: 4px }

/* ---------- 填表评估视图容器 ---------- */
/* 旧版填表：容器需要确定高度，.lf-wrap 才能撑满（内部左 60% 表单 / 右 40% 日志） */
.ws-legacy-form { flex: 1 1 auto; height: 100%; min-height: 0; display: flex; flex-direction: column; overflow: hidden }
.ws-legacy-form[hidden] { display: none }
/* 新版填表（隐藏入口）：左记录列表 + 右 SchemaForm，占满内容区 */
#fe-v2-wrap { flex: 1; min-height: 0 }

/* ---------- Word 模版库内嵌布局 ---------- */

/* 填表记录：最多占一半高度，剩余高度留给模版库；自身滚动 */
#fe-v2-wrap .pv-list { min-height: 0 }
#fe-v2-wrap .pv-list #form-list { flex: 0 1 auto; max-height: 45%; min-height: 96px; overflow-y: auto }

/* 模版库：吃掉剩余高度（关键修复：原来 flex:0 0 auto 不收缩，
   被上半段挤到容器外、又被 .pv-list 的 overflow:hidden 裁掉，表现成"没有值"） */
#fe-v2-wrap .pv-list .ws-side-pane-templates { flex: 1 1 auto; min-height: 150px; height: auto; display: flex; flex-direction: column; padding: 10px 13px 8px; border-top: 1px solid var(--ws-line) }
#fe-v2-wrap .pv-list .ws-side-pane-templates.expanded { flex: 1 1 auto; height: auto; min-height: 150px }
#fe-v2-wrap .pv-list .ws-side-pane-templates .ws-side-pane-scroll { flex: 1 1 auto; min-height: 0; max-height: none; overflow-y: auto }

/* 列表列保持纵向排布，段间不要额外间隙（上半/下半贴合） */
#fe-v2-wrap .pv-list { gap: 0 }

/* 列加宽：新版填表左侧要同时容纳「填表记录」与「Word 模版库」两段内容（原 232px 太窄） */
#fe-v2-wrap .pv-list { width: 300px }
@media (max-width: 1180px) { #fe-v2-wrap .pv-list { width: 240px } }

/* 防御：本容器内 hidden 必须生效。
   `.ws-project-empty{display:flex}` 与 tailwind 的 `[hidden]{display:none}` 同权重，
   而基础布局里的同类规则后加载会覆盖，导致「空态提示」在已有模板时仍显示、把列表顶下去。 */
#fe-v2-wrap .pv-list [hidden] { display: none !important }

/* 模版库头部：标题一行、「工具集通用」单独第二行、上传按钮只保留图标 */
#fe-v2-wrap .ws-tpl-toggle-title { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; cursor: pointer; user-select: none }
.ws-tpl-head { display: flex; flex-direction: column; align-items: flex-start; gap: 3px; min-width: 0 }
.ws-tpl-title-row { display: inline-flex; align-items: center; gap: 6px }
.ws-tpl-title-text { font-size: 12.5px; font-weight: 700; color: var(--ws-accent) }
/* pill 放第二行后不要再继承 ml-1 的行内间距，字号按标签缩小 */
.ws-tpl-badge { font-size: 10px; font-weight: 400; line-height: 1.5 }
/* 折叠箭头：JS 只保留 fa-chevron-down，方向由 CSS 按 .collapsed 旋转 180° 控制 */
.ws-tpl-title-row .ws-tpl-chevron { font-size: 10px; color: var(--ws-muted-2); transition: transform .2s ease }
#fe-v2-wrap .ws-side-pane-templates.collapsed .ws-tpl-title-row .ws-tpl-chevron { transform: rotate(180deg) }
/* 兼容 JS 未加载/旧缓存时仍是 fa-chevron-up 的情况 */
.ws-tpl-title-row .fa-chevron-up { font-size: 10px; color: var(--ws-muted-2) }
.ws-tpl-upload { flex-shrink: 0; padding: 4px 8px }

/* 折叠态：只留头部（滚动区由既有 .ws-side-pane-templates.collapsed 规则隐藏），
   此时让位给上半段，不再占剩余高度 */
#fe-v2-wrap .pv-list .ws-side-pane-templates.collapsed { flex: 0 0 auto; min-height: 0; height: auto; padding-bottom: 10px }

/* ---------- 旧版智能填表与项目评估视图 ---------- */

.lf-view{display:flex;flex-direction:column;flex:1 1 auto;height:100%;min-height:0;background:#fff;border:1px solid var(--ws-line,#e5e7eb);border-radius:var(--ws-radius,12px);overflow:hidden;font-family:var(--ws-font,"Microsoft YaHei","PingFang SC",sans-serif);}

/* ---------- 顶部两个 Tab（复原老版 .tab-header / .tab-btn） ---------- */
.lf-tabs{display:flex;flex-shrink:0;background:#f9fafb;border-bottom:1px solid #e5e7eb;}

.lf-tab{flex:1;display:flex;align-items:center;justify-content:center;gap:6px;padding:10px 8px;font-family:inherit;font-size:13px;font-weight:500;color:#6b7280;background:transparent;border:none;border-bottom:2px solid transparent;cursor:pointer;transition:color .15s,background-color .15s;}

.lf-tab:hover{color:#374151;background-color:#f9fafb;}

.lf-tab.active{color:var(--ws-primary,#4f46e5);border-bottom-color:var(--ws-primary,#4f46e5);font-weight:600;}

.lf-tab i{font-size:12px;}

/* ---------- Tab 面板：只有 active 的显示 ---------- */
.lf-panel{display:none;flex:1 1 auto;flex-direction:column;min-height:0;overflow:hidden;}

.lf-panel.active{display:flex;}

/* ---------- 操作条（老版居中三个按钮；左右两端放企业名与轻量提示） ---------- */
.lf-toolbar{position:relative;display:flex;align-items:center;justify-content:center;gap:8px;padding:10px 24px;background:#fff;border-bottom:1px solid #e5e7eb;flex-shrink:0;flex-wrap:wrap;}

.lf-toolbar-actions{display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap;}

.lf-btn{display:inline-flex;align-items:center;gap:5px;height:32px;padding:0 14px;font-family:inherit;font-size:13px;font-weight:500;color:var(--ws-primary,#4f46e5);background:#fff;border:1px solid #d1d5db;border-radius:6px;cursor:pointer;transition:background-color .15s,border-color .15s,color .15s;}

.lf-btn:hover:not(:disabled){background:#f9fafb;border-color:var(--ws-primary,#4f46e5);}

.lf-btn.primary{color:#fff;background:var(--ws-primary,#4f46e5);border-color:var(--ws-primary,#4f46e5);}

.lf-btn.primary:hover:not(:disabled){background:var(--ws-primary-dark,#4338ca);border-color:var(--ws-primary-dark,#4338ca);}

.lf-btn.success{color:#fff;background:#059669;border-color:#059669;}

.lf-btn.success:hover:not(:disabled){background:#047857;border-color:#047857;}

.lf-btn.ghost{color:var(--ws-muted,#6b7280);border-color:#e5e7eb;}

.lf-btn.ghost:hover:not(:disabled){background:#f3f4f6;}

.lf-btn:disabled{opacity:.5;cursor:not-allowed;}

/* 操作条两端：左企业名、右轻量提示（老版这两处信息在左侧栏，工作台内收进操作条） */
.lf-org{position:absolute;left:18px;top:50%;max-width:180px;transform:translateY(-50%);font-size:11.5px;color:var(--ws-muted-2,#9ca3af);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}

.lf-msg{position:absolute;right:18px;top:50%;z-index:2;max-width:36%;padding:3px 8px;transform:translateY(-50%);font-size:11.5px;color:var(--ws-muted,#6b7280);background:#fff;border-radius:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}

.lf-msg.ok{color:var(--ws-ok,#065f46);background:var(--ws-ok-bg,#d1fae5);}

.lf-msg.bad{color:var(--ws-bad,#991b1b);background:var(--ws-bad-bg,#fee2e2);}

.lf-msg.info{color:var(--ws-info,#1e40af);background:var(--ws-info-bg,#dbeafe);}

/* 门禁提示条（canFill=false） */
.lf-gate{display:flex;align-items:center;gap:7px;padding:8px 16px;font-size:12px;color:var(--ws-warn,#92400e);background:var(--ws-warn-bg,#fef3c7);border-bottom:1px solid #fde68a;flex-shrink:0;}

.lf-gate[hidden]{display:none;}

/* ---------- 左右分栏：左 60% 表单 / 右 40% 日志 ---------- */
.lf-body{display:flex;flex:1 1 auto;min-height:0;}

.lf-left{flex:0 0 60%;min-width:0;display:flex;flex-direction:column;border-right:1px solid #e5e7eb;}

.lf-right{flex:1 1 40%;min-width:0;display:flex;flex-direction:column;background:#fbfdff;}

.lf-pane-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:9px 16px;font-size:12px;font-weight:700;color:#374151;background:#fff;border-bottom:1px solid #f3f4f6;flex-shrink:0;}

.lf-pane-head i{color:var(--ws-primary,#4f46e5);margin-right:4px;}

.lf-pane-head em{font-style:normal;font-weight:400;font-size:11px;color:#9ca3af;}

/* 表单滚动区：老版 bg-gray-50 + p-6 */
.lf-form-scroll{flex:1 1 auto;min-height:0;overflow-y:auto;padding:24px;background:#f9fafb;}

.lf-form-inner{max-width:860px;margin:0 auto;}

/* 老版白色表单卡片：rounded-lg + shadow-sm + border + p-8 */
.lf-form-card{padding:32px;background:#fff;border:1px solid #e5e7eb;border-radius:8px;box-shadow:0 1px 3px rgba(15,23,42,.08);font-family:"Microsoft YaHei","PingFang SC",sans-serif;}

/* 表单主标题：老版 form-title（居中 + 下边框） */
.lf-form-title{margin:0 0 24px;padding-bottom:16px;font-size:20px;font-weight:700;color:#111827;text-align:center;border-bottom:2px solid #d1d5db;}

/* 分区（老版 .form-section：浅灰底 + 左侧主色竖条） */
.lf-section{position:relative;margin-bottom:24px;padding:16px 20px;background:#f9fafb;border-left:3px solid var(--ws-primary,#4f46e5);border-radius:0 6px 6px 0;}

.lf-section:last-child{margin-bottom:0;}

/* 分区标题（老版 .section-title） */
.lf-section-title{display:flex;align-items:center;gap:8px;margin:0 0 12px;padding-bottom:8px;font-size:15px;font-weight:700;color:#1f2937;border-bottom:2px solid #e5e7eb;}

.lf-section-title i{font-size:13px;color:var(--ws-primary,#4f46e5);}

/* 字段网格：两列铺满（textarea / 单选 / 多选 占整行，见 .lf-field.full） */
.lf-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 22px;}

.lf-field{min-width:0;padding:3px;border:1px solid transparent;border-radius:6px;transition:background-color .3s ease,border-color .2s ease;}

.lf-field.full{grid-column:1 / -1;}

/* 字段标题（老版 .form-label） */
.lf-field-label{display:block;margin-bottom:4px;font-size:13px;font-weight:600;color:#374151;line-height:1.5;}

.lf-required{margin-left:2px;color:#ef4444;}

/* AI 回填高亮：本组刚回填的字段一次性闪烁（老版 .highlight + pulse-highlight） */
.lf-field.highlight{background-color:#fef3c7;box-shadow:0 0 0 2px #f59e0b;animation:lf-pulse-highlight .6s ease;}

/* 已回填字段常亮底色（老版无此态，本轮按「已生成内容一眼可见」补一层轻底色） */
.lf-field.lf-filled{background:#f5faff;border-color:#bfdbfe;}

.lf-field.lf-flash{animation:lf-flash .9s ease-out;}

/* ---------- 空态 / 加载态 ---------- */
.lf-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:56px 20px;font-size:12.5px;color:#9ca3af;text-align:center;line-height:1.7;}

.lf-empty i{font-size:26px;color:#cbd5e1;}

.lf-empty.bad{color:var(--ws-bad,#991b1b);}

.lf-empty.bad i{color:#fca5a5;}

/* ---------- 动画（老版 pulse-highlight / log-fade-in） ---------- */
@keyframes lf-pulse-highlight{0%{background-color:#fef9c3;}50%{background-color:#fde68a;}100%{background-color:#fef3c7;}}

@keyframes lf-flash{0%{box-shadow:0 0 0 0 rgba(0,102,255,.35);background:#e8f1ff;}100%{box-shadow:0 0 0 6px rgba(0,102,255,0);background:#f5faff;}}

@keyframes lf-log-in{from{opacity:0;transform:translateY(8px);}to{opacity:1;transform:translateY(0);}}

/* ---------- 响应式：内容区被压缩时左右堆叠 ---------- */
@media (max-width:1180px){.lf-body{flex-direction:column;}.lf-left,.lf-right{flex:1 1 auto;}.lf-left{border-right:0;border-bottom:1px solid #e5e7eb;}.lf-org{display:none;}.lf-msg{position:static;max-width:100%;}}

@media (max-width:720px){.lf-fields{grid-template-columns:1fr;}.lf-form-card{padding:20px 16px;}.lf-form-title{font-size:17px;}}

.lf-log{flex:1 1 auto;min-height:0;overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:7px;font-family:"Consolas","Microsoft YaHei",monospace;}

.lf-log-empty{padding:40px 16px;font-size:12px;color:#d1d5db;text-align:center;line-height:1.7;}

.lf-log-item{display:flex;gap:8px;padding:7px 10px;font-size:12px;line-height:1.55;color:#4b5563;background:#fff;border:1px solid #f3f4f6;border-left:3px solid #cbd5e1;border-radius:6px;word-break:break-word;animation:lf-log-in .25s ease;}

.lf-log-time{flex-shrink:0;padding-top:1px;font-size:10.5px;color:#9ca3af;}

.lf-log-text{flex:1 1 auto;min-width:0;}

.lf-log-item.step{font-weight:600;background:#f5faff;border-left-color:var(--ws-primary,#4f46e5);}

.lf-log-item.ok{border-left-color:#10b981;}

.lf-log-item.done{font-weight:600;color:#059669;background:#eff6ff;border-left-color:var(--ws-primary,#4f46e5);}

.lf-log-item.error{color:var(--ws-bad,#991b1b);background:#fef2f2;border-left-color:#ef4444;}

.lf-progress-box{flex-shrink:0;padding:10px 16px 13px;background:#fff;border-top:1px solid #e5e7eb;}

.lf-progress-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:7px;font-size:11.5px;color:#6b7280;}

.lf-progress-head span:first-child{max-width:78%;overflow:hidden;font-weight:600;color:#374151;text-overflow:ellipsis;white-space:nowrap;}

.lf-progress-head span:last-child{font-family:var(--ws-mono,Consolas,monospace);font-weight:700;color:var(--ws-primary,#4f46e5);}

.lf-progress{height:6px;overflow:hidden;background:#e5e7eb;border-radius:999px;}

/* transition 与老版 #progress-fill 一致：宽度平滑推进 */
.lf-progress-bar{width:0;height:100%;border-radius:999px;background:var(--ws-primary,#4f46e5);transition:width .4s ease;}

.lf-input,.lf-textarea,.lf-select-ctl{width:100%;padding:6px 10px;font-family:inherit;font-size:13px;color:#1f2937;background-color:#fff;border:1px solid #d1d5db;border-radius:6px;transition:border-color .15s,box-shadow .15s;}

.lf-input:focus,.lf-textarea:focus,.lf-select-ctl:focus{outline:none;border-color:var(--ws-primary,#4f46e5);box-shadow:0 0 0 2px rgba(79,70,229,.15);}

.lf-input:disabled,.lf-textarea:disabled,.lf-select-ctl:disabled{color:#9ca3af;background-color:#f3f4f6;cursor:not-allowed;}

.lf-input[readonly]{color:#4b5563;background-color:#f9fafb;}

/* 长文本：老版 textarea 可纵向拉伸，行高 1.6 */
.lf-textarea{min-height:64px;line-height:1.6;resize:vertical;}

/* 数字 + 单位（如「人数规模 ____ 人」「空间面积 ____ 平方米」） */
.lf-control-row{display:flex;align-items:center;gap:6px;}

.lf-control-row .lf-input{flex:1 1 auto;min-width:0;}

.lf-unit{flex-shrink:0;font-size:12.5px;color:#6b7280;white-space:nowrap;}

/* 单选 / 多选选项组（老版 .radio-group / .checkbox-group） */
.lf-options{display:flex;flex-wrap:wrap;gap:6px 16px;}

.lf-options.vertical{flex-direction:column;gap:6px;}

/* 多选项较多时用两列网格（老版企业资质是 grid-cols-2） */
.lf-options.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 16px;}

.lf-option{display:inline-flex;align-items:center;gap:6px;font-size:13px;line-height:1.6;color:#374151;cursor:pointer;}

.lf-option input{width:14px;height:14px;margin:0;accent-color:var(--ws-primary,#4f46e5);cursor:pointer;}

.lf-eval-content{flex:1 1 auto;min-height:0;overflow-y:auto;padding:16px 20px;font-size:13px;}

/* 面板头：标题 + 数据源状态 */
.lf-eval-head{display:flex;align-items:center;gap:8px;margin-bottom:12px;padding-bottom:10px;font-size:14px;font-weight:700;color:#1f2937;border-bottom:1px solid #e5e7eb;}

.lf-eval-head i{color:var(--ws-primary,#4f46e5);font-size:13px;}

.lf-eval-head .lf-eval-status{margin-left:auto;padding:2px 8px;font-size:11px;font-weight:500;color:var(--ws-warn,#92400e);background:var(--ws-warn-bg,#fef3c7);border-radius:999px;white-space:nowrap;}

/* 评估内的两大区块（报告区 / 简要评估区），老版是直接平铺，这里补一层卡片便于分区 */
.lf-eval-block{margin-bottom:16px;padding:14px 16px;background:#f9fafb;border:1px solid #e5e7eb;border-radius:8px;}

/* 区块标题（老版 .eval-section-title） */
.lf-eval-section-title{display:flex;align-items:center;gap:6px;margin-bottom:10px;padding-bottom:6px;font-size:13px;font-weight:700;color:#374151;border-bottom:1px solid #f3f4f6;}

.lf-eval-section-title i{font-size:12px;color:#3b82f6;}

/* 数据区占位（报告状态 / 简要评估正文） */
.lf-eval-placeholder{padding:28px 16px;color:#9ca3af;text-align:center;line-height:1.7;}

.lf-eval-placeholder i{display:block;margin-bottom:8px;font-size:26px;color:#cbd5e1;}

.lf-eval-placeholder p{margin:0 0 4px;font-size:12.5px;}

.lf-eval-placeholder .lf-eval-sub{margin-top:4px;font-size:11.5px;color:#b6bec9;}

/* 简要评估四个小节（老版 .eval-section-title 的四个图标变体） */
.lf-eval-brief-topic{display:flex;align-items:center;gap:6px;margin-top:10px;padding-bottom:5px;font-size:12.5px;font-weight:700;color:#374151;border-bottom:1px solid #f3f4f6;}

.lf-eval-brief-topic i{font-size:11px;}

.lf-eval-brief-topic .icon-intro{color:#3b82f6;}

.lf-eval-brief-topic .icon-highlight{color:#f59e0b;}

.lf-eval-brief-topic .icon-risk{color:#ef4444;}

.lf-eval-brief-topic .icon-advice{color:#10b981;}

.lf-eval-dash{display:block;margin-top:6px;font-size:12.5px;line-height:1.7;color:#c2c9d2;}

/* 评估区底部操作按钮（老版 .eval-brief-actions / .eval-brief-btn） */
.lf-eval-actions{display:flex;gap:8px;margin-top:12px;padding-top:10px;border-top:1px solid #e5e7eb;}

.lf-eval-btn{display:inline-flex;align-items:center;gap:5px;padding:5px 12px;font-family:inherit;font-size:12px;font-weight:500;color:#374151;background:#fff;border:1px solid #d1d5db;border-radius:6px;cursor:pointer;transition:all .15s;}

.lf-eval-btn:hover:not(:disabled){color:var(--ws-primary,#4f46e5);border-color:var(--ws-primary,#4f46e5);}

.lf-eval-btn:disabled{opacity:.5;cursor:not-allowed;}

/* 老版报告下载按钮（绿色通栏） */
.lf-eval-download-btn{display:flex;align-items:center;justify-content:center;gap:6px;width:100%;padding:8px;margin-bottom:12px;font-family:inherit;font-size:12.5px;font-weight:600;color:#fff;background:#059669;border:none;border-radius:6px;cursor:pointer;transition:background-color .15s;}

.lf-eval-download-btn:disabled{opacity:.5;cursor:not-allowed;}

/* 未接入状态的汇总提示条（把「数据源待接入」讲清楚，避免误以为加载失败） */
.lf-eval-notice{display:flex;align-items:flex-start;gap:7px;margin-bottom:12px;padding:8px 11px;font-size:11.5px;line-height:1.7;color:var(--ws-info,#1e40af);background:var(--ws-info-bg,#dbeafe);border-radius:6px;}

.lf-eval-notice i{margin-top:2px;font-size:11px;}

@media (max-width:720px){.lf-options.grid-2{grid-template-columns:1fr;}.lf-eval-content{padding:12px;}}

/* 状态胶囊成功/失败配色（默认 warn 样式沿用上面） */
.lf-eval-status.ok{color:#065f46;background:#d1fae5;}

.lf-eval-status.bad{color:#991b1b;background:#fee2e2;}

/* 报告已生成行：勾选 + 报告名 + 创建日期 */
.lf-eval-report-row{display:flex;align-items:center;gap:7px;margin-bottom:10px;font-size:12.5px;color:#374151;}

.lf-eval-check{font-size:13px;color:#10b981;}

.lf-eval-report-name{font-weight:600;}

.lf-eval-date{margin-left:auto;font-size:11.5px;color:#9ca3af;}

/* 生成中占位 + 局部提示（下载失败等） */
.lf-eval-generating{padding:22px 12px;color:#6b7280;text-align:center;}

.lf-eval-generating i{margin-bottom:8px;font-size:22px;color:#3b82f6;}

.lf-eval-generating p{margin:0 0 6px;font-size:12.5px;}

.lf-eval-hint{margin-top:8px;font-size:11.5px;line-height:1.7;color:#9ca3af;}

.lf-eval-hint.bad{color:#ef4444;}

/* 简要评估正文（markdown-it 渲染区） */
.lf-eval-brief-text{min-height:72px;font-size:12.5px;line-height:1.8;color:#374151;word-break:break-word;}

.lf-eval-brief-text h2{margin:12px 0 6px;font-size:13px;color:#1f2937;}

.lf-eval-brief-text h2:first-child{margin-top:0;}

.lf-eval-brief-text p{margin:0 0 6px;}

.lf-eval-brief-text ul,.lf-eval-brief-text ol{margin:0 0 6px;padding-left:20px;}

.lf-eval-brief-text li{margin-bottom:3px;}

.lf-eval-brief-error{margin-top:6px;font-size:11.5px;color:#ef4444;}

.lf-eval-brief-empty i{font-size:22px;}

/* 流式输出光标（老版 report_panel 的 cursor-blink） */
.lf-eval-cursor{display:inline-block;width:6px;height:13px;margin-left:2px;vertical-align:-2px;background:#3b82f6;animation:lf-eval-blink 1s steps(1) infinite;}

@keyframes lf-eval-blink{50%{opacity:0;}}

/* 主按钮（生成报告 / 重新申请 / 生成简要评估） */
.lf-eval-btn.primary{color:#fff;background:var(--ws-primary,#4f46e5);border-color:var(--ws-primary,#4f46e5);}

.lf-eval-btn.primary:hover:not(:disabled){color:#fff;background:#4338ca;border-color:#4338ca;}

/* ---------- 左栏：报告模版库（deck） ---------- */
.ws-side-pane.ws-side-pane-decks{flex:0 0 auto;max-height:45%;border-top:1px solid var(--ws-line);padding:10px 12px 8px;}
#ws-pane-decks [hidden]{display:none !important;}
#ws-pane-decks .ws-side-pane-scroll{flex:1 1 auto;min-height:0;overflow-y:auto;}
.ws-deck-count{margin-left:4px;font-size:10px;font-weight:400;color:var(--ws-muted-2);}
.ws-deck-tasks{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:6px;}
.ws-deck-task{border:1px solid var(--ws-line);border-left:3px solid var(--ws-warn);border-radius:8px;background:#fffdf7;padding:7px 8px;}
.ws-deck-row{display:flex;align-items:center;justify-content:space-between;gap:6px;}
.ws-deck-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;font-weight:700;color:var(--ws-accent);}
.ws-deck-desc{margin-top:4px;font-size:10.5px;line-height:1.5;color:var(--ws-muted);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.ws-deck-error{margin-top:4px;font-size:10.5px;line-height:1.5;color:var(--ws-bad);}
.ws-deck-actions{display:flex;gap:6px;margin-top:6px;flex-wrap:wrap;}
.ws-deck-btn{display:inline-flex;align-items:center;gap:4px;cursor:pointer;font-family:inherit;font-size:10.5px;font-weight:700;color:var(--ws-primary);background:#eff6ff;border:1px solid #bfdbfe;border-radius:6px;padding:3px 7px;}
.ws-deck-btn:hover:not(:disabled){color:#fff;background:var(--ws-primary);border-color:var(--ws-primary);}
.ws-deck-btn:disabled{opacity:.55;cursor:default;}
.ws-deck-btn.primary{color:#fff;background:var(--ws-primary);border-color:var(--ws-primary);}
.ws-deck-btn.danger{color:var(--ws-bad);background:#fff;border-color:#fecaca;padding:3px 6px;}
.ws-deck-btn.danger:hover:not(:disabled){color:#fff;background:var(--ws-bad);border-color:var(--ws-bad);}
.ws-deck-card{gap:8px;}
.ws-deck-color{display:inline-block;width:12px;height:12px;border-radius:4px;flex-shrink:0;}
.ws-deck-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px;}
.ws-deck-meta{font-size:10px;color:var(--ws-muted-2);}

/* ---------- 报告模版库折叠增强（追加覆盖，避免动原块） ---------- */
.ws-side-pane.ws-side-pane-decks.collapsed{max-height:none;padding-bottom:10px;}
.ws-side-pane-decks.collapsed .ws-side-pane-scroll{display:none !important;}
.ws-deck-toggle-title{cursor:pointer;user-select:none;}
.ws-deck-title-row{display:inline-flex;align-items:center;gap:6px;min-width:0;}
.ws-deck-chevron{font-size:10px;color:var(--ws-muted-2);transition:transform .2s ease;}
.ws-side-pane-decks.collapsed .ws-deck-chevron{transform:rotate(180deg);}
