/* 资料与交付件在线预览（web/file-preview.js） */
.fp-host { margin: 8px 0 16px; border: 1px solid var(--line, #e3e6ea); border-radius: 8px; padding: 12px; background: var(--card, #fff);
  max-height: 70vh; overflow: auto; }
.fp-note { color: var(--muted, #6b7280); font-size: 13px; margin: 4px 0 8px; }
.fp-doc { font-size: 14px; line-height: 1.7; }
.fp-doc h1 { font-size: 20px; } .fp-doc h2 { font-size: 18px; } .fp-doc h3 { font-size: 16px; } .fp-doc h4, .fp-doc h5, .fp-doc h6 { font-size: 15px; }
.fp-doc p { margin: 4px 0; }
.fp-li { padding-left: 1em; }
.fp-table { border-collapse: collapse; font-size: 13px; margin: 8px 0; }
.fp-table td, .fp-table th { border: 1px solid var(--line, #d9dde3); padding: 4px 8px; vertical-align: top; white-space: pre-wrap; }
.fp-table th { background: var(--soft, #f4f6f8); font-weight: 600; }
.fp-scroll { overflow: auto; max-height: 60vh; }
.fp-tabs { display: flex; flex-wrap: wrap; gap: 4px; margin-bottom: 8px; }
.fp-tab { font-size: 12px; padding: 3px 10px; border-radius: 12px; border: 1px solid var(--line, #d9dde3); background: transparent; cursor: pointer; }
.fp-tab.active { background: var(--accent, #2f6fde); color: #fff; border-color: transparent; }
.fp-pdf { width: 100%; height: 68vh; border: 0; }
.fp-img img { max-width: 100%; height: auto; }
.fp-text { white-space: pre-wrap; word-break: break-word; font-size: 13px; margin: 0; }
.fp-diagram { overflow: auto; }
.fp-diagram svg { max-width: 100%; height: auto; }
.fp-src summary { cursor: pointer; font-size: 12px; color: var(--muted, #6b7280); margin-top: 6px; }

/* 泳道图（web/swimlane.js） */
.sl-wrap { overflow: auto; max-height: 80vh; border: 1px solid var(--line, #e3e6ea); background: #fff; }
.sl-wrap svg { display: block; }
.sl-tools { display: flex; align-items: center; gap: 12px; margin-top: 8px; flex-wrap: wrap; }
.sl-node:hover rect, .sl-node:hover polygon { stroke: #0a6ed1; stroke-width: 2; }
