:root{
  --bg:#f6f5f2;
  --paper:#ffffff;
  --card:#fbfaf8;
  --text:#171717;
  --muted:#7a746d;
  --line:#e8e3dc;
  --soft:#f3f0eb;
  --accent:#8a542f;
  --accent-soft:#f1e7de;
  --good:#2f765d;
  --warn:#9b692d;
  --bad:#9a3f35;
  --shadow:0 18px 60px rgba(37,28,20,.06);
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;color:var(--text)}
button,select,input,textarea{font:inherit}
.app{min-height:100vh;padding:22px;max-width:1760px;margin:0 auto}
.topbar{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;background:rgba(255,255,255,.75);border:1px solid var(--line);border-radius:18px;padding:18px 20px;box-shadow:var(--shadow);backdrop-filter:blur(10px)}
.brand-block h1{margin:0;font-size:24px;letter-spacing:-.04em;font-weight:850}.brand-block p{margin:8px 0 0;color:var(--muted);font-size:13px}.brand-block p::before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--accent);margin-right:8px;vertical-align:1px}
.top-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.top-actions select,.top-actions button{height:42px;border:1px solid var(--line);border-radius:12px;background:#fff;color:var(--text);padding:0 16px;min-width:92px;cursor:pointer}.top-actions button:hover,.top-actions select:hover{border-color:var(--accent)}.top-actions #syncBtn{background:var(--text);color:#fff;border-color:var(--text)}.top-actions .ghost{min-width:70px;color:var(--muted)}
.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:18px 0}.metric-card{background:var(--paper);border:1px solid var(--line);border-radius:16px;padding:18px 22px;box-shadow:0 12px 36px rgba(35,30,25,.035)}.metric-card span{display:block;color:var(--muted);font-size:13px;margin-bottom:8px}.metric-card strong{font-size:34px;line-height:1;font-weight:850;letter-spacing:-.05em}
.workspace{display:grid;grid-template-columns:420px minmax(560px,1fr) 460px;gap:16px;align-items:start}.candidate-pane,.candidate-detail,.chat-pane{background:var(--paper);border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow)}.candidate-pane{padding:16px}.candidate-detail{padding:18px}.chat-pane{padding:18px;min-height:720px}.pane-head h2,.chat-pane h2{font-size:18px;margin:0 0 14px;font-weight:850;letter-spacing:-.02em}.list-tools{display:grid;grid-template-columns:1fr 92px;gap:10px;margin-bottom:12px}.list-tools input,.list-tools select{height:40px;border:1px solid var(--line);background:#fff;border-radius:12px;padding:0 12px;color:var(--text);outline:none}.list-tools input:focus{border-color:var(--accent)}.candidate-list{display:grid;gap:10px;max-height:72vh;overflow:auto;padding-right:3px}.candidate-card{border:1px solid var(--line);background:#fff;border-radius:15px;padding:14px;cursor:pointer;transition:.16s ease}.candidate-card:hover{border-color:#c9b9a8;transform:translateY(-1px)}.candidate-card.active{border-color:var(--accent);box-shadow:0 12px 26px rgba(138,84,47,.1);background:linear-gradient(180deg,#fff,#fffaf5)}.card-top{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}.candidate-name{font-size:18px;font-weight:850;line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.score-badge{display:flex;gap:6px;align-items:center}.score-badge strong{font-size:17px}.grade-chip,.tag{border-radius:999px;padding:4px 8px;font-size:12px;line-height:1.1;white-space:nowrap;background:var(--soft);color:#5f5a54}.grade-chip{font-weight:800;background:var(--accent-soft);color:var(--accent)}.grade-chip.good{background:#e6f0eb;color:var(--good)}.grade-chip.bad{background:#f4e6e3;color:var(--bad)}.tags{display:flex;gap:7px;flex-wrap:wrap;margin-top:12px}.tag.strong{background:#fff;border:1px solid var(--line);color:#2d2b29}.card-summary{margin:10px 0 0;color:var(--muted);font-size:13px;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.empty-mini,.empty-note{color:var(--muted);border:1px dashed var(--line);border-radius:14px;padding:18px;font-size:13px;line-height:1.7;background:#fff}.candidate-detail.empty{display:grid;place-items:center;min-height:720px;color:var(--muted)}
.detail-main{display:grid;grid-template-columns:minmax(0,1fr);gap:14px}.detail-head{display:flex;justify-content:space-between;gap:18px;border-bottom:1px solid var(--line);padding-bottom:14px}.detail-title h2{font-size:26px;margin:0 0 10px;font-weight:900;letter-spacing:-.04em}.detail-score{display:flex;align-items:flex-start;gap:10px}.detail-score .num{font-size:42px;font-weight:900;line-height:1;letter-spacing:-.05em}.status-chip{background:var(--accent);color:#fff;border-radius:10px;padding:8px 12px;font-size:13px;font-weight:750;margin-top:2px}.judgement{background:linear-gradient(180deg,#fffaf6,#f8f4ee);border:1px solid var(--line);border-radius:14px;padding:14px 16px;font-size:15px;line-height:1.75}.judgement b{display:block;margin-bottom:5px;font-size:13px;color:#4e453e}.content-grid{display:grid;grid-template-columns:1fr 1.08fr;gap:14px}.info-stack{display:grid;gap:14px}.panel{border:1px solid var(--line);border-radius:15px;background:#fff;padding:14px 16px}.panel h3{margin:0 0 10px;font-size:14px;font-weight:850;color:#2f2b28}.panel pre{white-space:pre-wrap;word-break:break-word;margin:0;font-family:inherit;font-size:13px;color:#34302c;line-height:1.7}.brief-list{margin:0;padding-left:18px;color:#2f2d2a;font-size:13px;line-height:1.85}.brief-list li{margin:2px 0}.next-list{margin:0;padding-left:18px;color:#342f2b;font-size:13px;line-height:1.8}.radar-panel{min-height:360px}.radar-wrap{display:grid;place-items:center;min-height:300px}.radar-svg{width:100%;max-width:360px;height:auto;overflow:visible}.radar-label{font-size:11px;fill:#3c3732;font-weight:650}.radar-score{font-size:10px;fill:#82786f}.radar-grid{fill:none;stroke:#ded7cf;stroke-width:1}.radar-axis{stroke:#e8e0d7;stroke-width:1}.radar-poly{fill:rgba(138,84,47,.22);stroke:var(--accent);stroke-width:2}.radar-point{fill:var(--accent)}.fallback-dims{display:grid;gap:9px}.dim-row{display:grid;grid-template-columns:82px 1fr 48px;gap:8px;align-items:center;font-size:12px}.dim-track{height:7px;background:var(--soft);border-radius:999px;overflow:hidden}.dim-fill{height:100%;background:var(--accent)}.chat-timeline{display:grid;gap:20px}.chat-section{position:relative;padding-left:22px;border-left:2px solid #e2dbd4}.chat-section::before{content:"";position:absolute;left:-6px;top:3px;width:10px;height:10px;background:#615b54;border-radius:50%}.chat-section h3{margin:0 0 12px;font-size:15px}.chat-item{display:grid;grid-template-columns:78px 1fr;gap:8px;margin:9px 0;align-items:start}.chat-time{font-size:12px;color:var(--muted);white-space:nowrap}.chat-bubble{background:#f5f3f0;border:1px solid var(--line);border-radius:12px;padding:10px 12px;font-size:13px;line-height:1.65;color:#37322e}.chat-bubble.me{background:#fff8ef;border-color:#ead8c7}.chat-footer{margin-top:18px;padding-top:14px;border-top:1px solid var(--line);font-size:14px;color:var(--accent);font-weight:750}.muted{color:var(--muted)}
dialog{border:0;border-radius:18px;padding:0;background:#fff;color:var(--text);box-shadow:0 30px 90px rgba(0,0,0,.22);width:min(1080px,94vw)}.dialog-head{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);padding:14px 16px}.dialog-head button,.config-actions button{border:1px solid var(--line);background:#fff;border-radius:10px;padding:8px 12px;cursor:pointer}.config-body{padding:16px;display:grid;gap:12px;max-height:78vh;overflow:auto}.config-body label{display:grid;gap:6px;font-size:13px;font-weight:750;color:#555}.config-body input,.config-body select,.config-body textarea{border:1px solid var(--line);border-radius:12px;background:#fff;color:var(--text);padding:10px;outline:none;line-height:1.55}.config-body textarea{min-height:130px;resize:vertical}.config-body textarea.small{min-height:84px}.config-body textarea.large{min-height:360px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px}.config-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.config-tip{font-size:12px;color:var(--muted);background:var(--soft);border-radius:12px;padding:10px;margin:0}.config-actions{display:flex;justify-content:flex-end;gap:10px;position:sticky;bottom:0;background:linear-gradient(transparent,#fff 36%);padding-top:16px}#saveConfigBtn{background:var(--text);color:#fff;border-color:var(--text)}pre#logText{max-height:72vh;overflow:auto;padding:16px;margin:0;background:#111;color:#eee;font-size:12px;line-height:1.5}.toast{position:fixed;top:22px;left:50%;transform:translate(-50%,-12px);background:#111;color:#fff;border-radius:999px;padding:10px 15px;box-shadow:0 18px 50px rgba(0,0,0,.18);opacity:0;pointer-events:none;transition:.18s ease;z-index:100}.toast.show{opacity:1;transform:translate(-50%,0)}.toast.danger{background:var(--bad)}
@media(max-width:1280px){.workspace{grid-template-columns:360px 1fr}.chat-pane{grid-column:1/-1;min-height:360px}.metrics{grid-template-columns:repeat(2,1fr)}}
@media(max-width:900px){.app{padding:12px}.topbar,.detail-head{display:grid}.workspace{grid-template-columns:1fr}.metrics{grid-template-columns:1fr 1fr}.content-grid{grid-template-columns:1fr}.candidate-pane,.candidate-detail,.chat-pane{min-height:auto}.candidate-list{max-height:520px}.top-actions{justify-content:flex-start}.metric-card strong{font-size:28px}}
@media(max-width:560px){.metrics{grid-template-columns:1fr}.list-tools{grid-template-columns:1fr}.chat-item{grid-template-columns:1fr}.chat-time{font-size:11px}.config-grid{grid-template-columns:1fr}}

/* V7.8：泛称候选人（先生/女士/小姐）人工处理提醒 */
.candidate-card.manual{border-color:#b75c5c;background:linear-gradient(180deg,#fff,#fff8f6)}
.candidate-card.manual.active{border-color:#a74848;box-shadow:0 14px 28px rgba(167,72,72,.12);background:linear-gradient(180deg,#fff,#fff7f4)}
.candidate-name-wrap{display:flex;align-items:center;gap:7px;min-width:0;flex:1}.candidate-name-wrap .candidate-name{min-width:0}.manual-dot{width:9px;height:9px;border-radius:999px;background:#c94646;box-shadow:0 0 0 4px rgba(201,70,70,.12);display:inline-block;flex:0 0 auto}.manual-chip{font-size:11px;line-height:1;border-radius:999px;padding:4px 7px;background:#fff0ed;color:#b34040;border:1px solid #f0c9c2;white-space:nowrap}.manual-alert{margin:12px 0 0;border:1px solid #f1d0c8;background:#fff8f5;color:#8d3e32;border-radius:14px;padding:12px 14px;display:flex;align-items:flex-start;gap:9px;font-size:13px;line-height:1.6}.manual-alert span{width:8px;height:8px;border-radius:999px;background:#c94646;box-shadow:0 0 0 4px rgba(201,70,70,.1);margin-top:6px;flex:0 0 auto}.manual-alert b{white-space:nowrap;color:#a13c35}
.risk-tags{margin-top:10px}.tag.risk{background:#fff4f1;border:1px solid #f1d0c8;color:#a13c35}
.chat-ai-summary{margin:0 0 18px;border:1px solid #d8e5df;background:#f6fbf8;border-radius:14px;padding:13px 14px}.chat-ai-summary h3{margin:0 0 8px;font-size:14px;color:#2f765d}.chat-ai-summary p{margin:0;color:#37322e;font-size:13px;line-height:1.7}.chat-ai-meta,.chat-ai-risks{display:flex;gap:7px;flex-wrap:wrap;margin-top:9px}.chat-ai-meta span,.chat-ai-risks span{border-radius:999px;padding:4px 8px;font-size:11px;line-height:1.25}.chat-ai-meta span{background:#e7f2ed;color:#2f765d}.chat-ai-risks span{background:#fff4f1;color:#a13c35;border:1px solid #f1d0c8}

/* V7.12：人工介入与不再联系 */
.list-tools{margin-bottom:9px}.hidden-toggle{display:flex;align-items:center;gap:7px;color:var(--muted);font-size:12px;margin:0 0 12px;cursor:pointer}.hidden-toggle input{accent-color:var(--accent)}
.candidate-card.paused{border-color:#d6b482;background:#fffaf2}.candidate-card.archived{border-color:#d6d0ca;background:#f5f3f0;opacity:.78}
.state-chip{font-size:11px;line-height:1;border-radius:999px;padding:4px 7px;white-space:nowrap}.state-chip.paused{background:#fff0d9;color:#8c5b1c;border:1px solid #ecd1a8}.state-chip.archived{background:#ece9e5;color:#716a63;border:1px solid #ddd7d0}
.candidate-actions{display:flex;gap:9px;flex-wrap:wrap}.action-btn{border:1px solid var(--line);background:#fff;border-radius:10px;padding:9px 13px;cursor:pointer;font-size:13px;font-weight:750}.action-btn.takeover{border-color:#d5ad77;color:#7e511b;background:#fff9ef}.action-btn.archive{border-color:#e0b4ae;color:#9a3f35;background:#fff8f6}.action-btn.restore{border-color:#a9cbbd;color:#2f765d;background:#f5fbf8}
.automation-alert{border:1px solid #ecd1a8;background:#fff9ef;color:#76501f;border-radius:13px;padding:11px 13px;font-size:13px;line-height:1.6}.automation-alert b{margin-right:8px}.automation-alert.archived{border-color:#ddd7d0;background:#f5f3f0;color:#665f58}.automation-alert.active{border-color:#cce1d7;background:#f5fbf8;color:#2f765d}
