/* ===== 智能建档（WF01）=====
   与 style.css 共用同一套变量，不覆盖任何既有选择器。 */

.pf-top{
  background:var(--white);border:1px solid var(--line);border-radius:var(--radius);
  padding:18px 22px;box-shadow:var(--shadow);margin-bottom:18px;
  display:flex;align-items:center;gap:22px;flex-wrap:wrap;
}
.pf-top-main{flex:1;min-width:220px}
.pf-top-main .t{display:flex;align-items:baseline;gap:10px;margin-bottom:9px}
.pf-top-main .t b{font-size:14px}
.pf-top-main .t span{font-size:12px;color:var(--muted)}
.pf-bar{height:7px;border-radius:6px;background:#edf2fa;overflow:hidden}
.pf-bar i{display:block;height:100%;border-radius:6px;background:linear-gradient(90deg,#4385ff,#1d4ed8);transition:width .35s ease}
.pf-dots{display:flex;align-items:center;gap:7px}
.pf-dot{
  width:26px;height:26px;border-radius:50%;display:grid;place-items:center;
  font-size:11px;font-weight:700;background:#f1f5fb;color:#9aa6b8;border:1px solid var(--line);
}
.pf-dot.done{background:#e8f7f1;color:var(--green);border-color:#c9ecdd}
.pf-dot.now{background:var(--blue);color:#fff;border-color:var(--blue);box-shadow:0 4px 10px #2563eb35}

.pf-layout{display:grid;grid-template-columns:minmax(0,1fr) 332px;gap:18px;align-items:start}
@media(max-width:1180px){.pf-layout{grid-template-columns:1fr}}

.pf-stage{display:grid;gap:14px;min-height:280px}

/* 对话气泡 */
.pf-said{display:grid;gap:10px}
.pf-bubble{max-width:88%;padding:12px 15px;border-radius:14px;font-size:13px;line-height:1.75}
.pf-bubble.q{background:var(--white);border:1px solid var(--line);border-top-left-radius:4px;color:#41506b}
.pf-bubble.q b{display:block;font-size:11px;color:#9aa6b8;font-weight:600;margin-bottom:4px;letter-spacing:.4px}
.pf-bubble.a{background:var(--blue-soft);border:1px solid #d9e6ff;border-top-right-radius:4px;margin-left:auto;color:#22406f}
.pf-bubble.a.skipped{background:#f6f8fb;border-color:var(--line);color:#93a0b4;font-style:normal}

/* 当前问题卡 */
.pf-card{background:var(--white);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:22px;position:relative}
.pf-card::before{content:"";position:absolute;left:22px;right:22px;top:0;height:2px;border-radius:2px;background:linear-gradient(90deg,#4385ff,#1d4ed8);opacity:.7}
.pf-card-head{display:flex;align-items:center;gap:9px;margin-bottom:13px}
.pf-badge{font-size:10px;font-weight:800;letter-spacing:.4px;padding:4px 9px;border-radius:20px}
.pf-badge.must{background:#fdeaea;color:#c0392b}
.pf-badge.opt{background:#eef4ff;color:#2b5fc7}
.pf-qtext{font-size:15px;line-height:1.85;color:var(--ink);margin:0 0 14px;font-weight:600}
.pf-input{
  width:100%;min-height:104px;resize:vertical;border:1px solid var(--line);border-radius:12px;
  padding:13px 14px;font-size:13px;line-height:1.8;color:var(--ink);background:#fbfcfe;outline:none;
  transition:.16s;font-family:inherit;
}
.pf-input:focus{border-color:#a9c6f6;background:#fff;box-shadow:0 0 0 3px #e8f1ff}
.pf-card-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:13px;flex-wrap:wrap}
.pf-hint{font-size:11px;color:#9aa6b8;line-height:1.7}
.pf-actions{display:flex;gap:9px}
.pf-btn{border:0;border-radius:11px;padding:10px 16px;font-size:13px;font-weight:700;transition:.16s;
  display:inline-flex;align-items:center;justify-content:center;line-height:1.4;width:fit-content;flex:0 0 auto}
.pf-btn.main{background:var(--blue);color:#fff;box-shadow:0 6px 14px #2563eb25}
.pf-btn.main:hover{background:var(--blue-dark)}
.pf-btn.main:disabled{background:#c3d3ea;box-shadow:none;cursor:not-allowed}
.pf-btn.ghost{background:#eef4ff;color:#2b5fc7}
.pf-btn.ghost:hover{background:#e0ebff}
.pf-btn.plain{background:transparent;color:#8b98ac;padding:10px 8px}
.pf-btn.plain:hover{color:#5b6b85}

/* 抽取结果回执 */
.pf-note{border-radius:12px;padding:12px 14px;font-size:12px;line-height:1.8;border:1px dashed #cfe0fb;background:#f7fbff;color:#3f5f8f}
.pf-note.ok{border-color:#c9ecdd;background:#f4fcf8;color:#1d7a5c}
.pf-note.warn{border-color:#f3e2bd;background:#fffbf2;color:#8a6520}
.pf-note b{font-weight:800}
.pf-chips{display:flex;flex-wrap:wrap;gap:7px;margin-top:8px}
.pf-chip{background:#fff;border:1px solid #cfe0fb;border-radius:8px;padding:4px 9px;font-size:11px;color:#2b5fc7}
.pf-chip i{font-style:normal;color:#8b98ac;margin-right:5px}

/* 右侧档案 */
.pf-aside{display:grid;gap:14px;position:sticky;top:96px}
.pf-panel{background:var(--white);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px}
.pf-panel h3{margin:0 0 4px;font-size:14px}
.pf-panel .sub{font-size:11px;color:var(--muted);margin:0 0 14px;line-height:1.7}
.pf-kv{display:grid;gap:1px;background:var(--line);border-radius:11px;overflow:hidden}
.pf-kv-row{display:flex;align-items:center;justify-content:space-between;gap:10px;background:#fff;padding:9px 12px;font-size:12px}
.pf-kv-row span{color:#8b98ac;flex-shrink:0}
.pf-kv-row b{font-weight:700;color:var(--ink);text-align:right;word-break:break-all}
.pf-kv-row b.none{color:#c2cbd9;font-weight:400}

.pf-src{display:grid;gap:6px;margin-top:2px}
.pf-src-line{display:flex;align-items:baseline;gap:8px;font-size:11px;line-height:1.6;color:#7d8aa0}
.pf-src-line b{color:#3f4d63;font-size:11.5px;flex-shrink:0}
.pf-src-tag{flex-shrink:0;width:3px;height:12px;border-radius:3px;transform:translateY(1px)}
.pf-src-tag.a{background:#2563eb}
.pf-src-tag.b{background:#16a578}
.pf-src-tag.c{background:#f59e0b}

/* 侧栏计数与"空着的"分组：先给能定的，再把缺口收进一个小块，
   避免 15 行平铺时用户自己去找哪没填 */
.pf-count{font-style:normal;font-size:11px;font-weight:400;color:#a8b3c4;margin-left:6px;font-variant-numeric:tabular-nums}
.pf-kv-gap{margin:12px 0 6px;font-size:11px;color:#a8b3c4}
.pf-kv-blank{background:transparent;border:1px dashed #e7edf6}
.pf-kv-blank .pf-kv-row{background:transparent}
.pf-kv-blank .pf-kv-row span{color:#b6c0ce}

/* 推断条目的去向标记：只有真的被规划页读取的才出现 */
.pf-used{
  flex-shrink:0;font-size:10px;font-weight:700;color:#0f7a55;background:#e8f7f0;
  border:1px solid #cdeade;border-radius:6px;padding:1px 6px;letter-spacing:.2px;
}

/* 完成态 */
.pf-done{background:var(--white);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:26px;text-align:center}
.pf-done .mark{width:52px;height:52px;border-radius:50%;background:#e8f7f1;color:var(--green);display:grid;place-items:center;font-size:24px;margin:0 auto 14px}
.pf-done h2{margin:0 0 8px;font-size:19px}
.pf-done p{margin:0 auto 18px;font-size:13px;color:var(--muted);line-height:1.85;max-width:520px}
.pf-stats{display:flex;justify-content:center;gap:10px;flex-wrap:wrap;margin-bottom:20px}
.pf-stat{background:#f7f9fd;border:1px solid var(--line);border-radius:12px;padding:11px 16px;min-width:96px}
.pf-stat b{display:block;font-size:19px;color:var(--blue)}
.pf-stat span{font-size:11px;color:var(--muted)}
.pf-loading{padding:52px;text-align:center;color:var(--muted);font-size:13px}
.pf-err{background:#fff5f5;border:1px solid #f8d7d7;color:#b03a3a;border-radius:12px;padding:14px 16px;font-size:12px;line-height:1.8}

/* ===== 页面标题右侧按钮组 ===== */
.pf-head-ops{display:flex;gap:8px;flex-wrap:wrap}

/* ===== 画像分析（WF02）=====
   每条推断必须同时露出「把握程度」和「依据」，
   否则用户没法判断该不该信它。 */
.pf-ai-wrap{display:grid;gap:12px;margin-top:18px}
.pf-ai-title{padding:0 2px}
.pf-ai-title h3{margin:0 0 5px;font-size:15px}
.pf-ai-title p{margin:0;font-size:12px;color:var(--muted);line-height:1.8}
.pf-ai-card{
  background:var(--white);border:1px solid var(--line);border-radius:var(--radius);
  box-shadow:var(--shadow);padding:18px 20px;transition:opacity .2s,transform .2s;
}
.pf-ai-card.gone{opacity:0;transform:translateX(14px)}
.pf-ai-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}
.pf-ai-head b{font-size:13px;flex-shrink:0}
.pf-conf-wrap{display:flex;align-items:center;gap:8px;flex-shrink:0}
.pf-conf{width:92px;height:5px;border-radius:5px;background:#edf2fa;overflow:hidden}
.pf-conf i{display:block;height:100%;border-radius:5px;background:linear-gradient(90deg,#8db7ff,#2563eb)}
.pf-conf-num{font-size:11px;color:#8b98ac;font-variant-numeric:tabular-nums;flex-shrink:0}
.pf-ai-text{margin:0;font-size:13px;line-height:1.95;color:#3f4d63;white-space:pre-line}
.pf-ai-ev{margin-top:11px;border-top:1px dashed var(--line);padding-top:9px}
.pf-ai-ev summary{font-size:11px;color:#8b98ac;cursor:pointer;outline:none;user-select:none}
.pf-ai-ev summary:hover{color:#5b6b85}
.pf-ai-ev p{
  margin:6px 0 0;font-size:11px;line-height:1.75;color:#94a1b5;
  padding-left:10px;border-left:2px solid #e7eef9;
}
.pf-ai-ops{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:11px}
.pf-ai-basis{font-size:11px;color:#a8b3c4}

/* ===== 判断不了的项：单独一块，不混进推断卡片 ===== */
.pf-pending{border:1px dashed #f0dfb8;background:#fffbf2;border-radius:12px;padding:14px 16px}
.pf-pending h4{margin:0 0 10px;font-size:12px;color:#8a6520}
.pf-pending-item+.pf-pending-item{margin-top:11px;padding-top:11px;border-top:1px dashed #f0dfb8}
.pf-pending-item p{margin:0;font-size:12px;line-height:1.85;color:#7a6533}
.pf-pending-next{margin-top:6px;font-size:11px;line-height:1.7;color:#a08a58}
