/* 简历页屏幕态样式(resume.html 与生成的 en/resume.html 都引入)。
   与既有拆分保持同一边界约定:打印规则在 resume-print.css、预览纸张在
   resume-preview.css,本文件放屏幕态——工作台外壳(模式选择器/岗位卡/编辑器/
   审核台/发布面板)与简历文档本身(.resume 及其子元素,英文公开简历页也用)。
   全站通用组件(.btn 族、.pw-modal、.eyebrow、.sr-only、排版变量)仍在 style.css。
   ⚠️ 新增简历页专属类写这里;改动后两个引入点(resume.html 与
   scripts/translate_site.mjs 里的 en/resume.html 模板)都要能覆盖到。 */

/* ---------- 简历页(保持克制,可打印) ---------- */
.resume-workbench-page { min-height: 100vh; }
.workbench { padding-top: 42px; padding-bottom: 72px; }
.workbench-title h1 { font-size: var(--fs-3xl); margin: 5px 0 12px; }
.workbench-title p { color: var(--muted); line-height: 1.7; }
/* 工作台按钮全迁 .btn 族(2026-07):primary→btn btn-rect,secondary→+btn-secondary,text→+btn-ghost,danger→+btn-danger */
.workbench-title { display: flex; justify-content: space-between; align-items: center; gap: 20px; margin-bottom: 24px; }
/* 工作台模式选择器:简历 / 更新审核(内联分段控件) */
.wb-modes { display: inline-flex; gap: 4px; padding: 4px; border: 2px solid var(--ink); border-radius: var(--radius-md); background: var(--bg); }
.wb-mode-btn { border: none; background: transparent; font-size: var(--fs-md); font-weight: 700; padding: 7px 18px; border-radius: var(--radius-sm); cursor: pointer; color: var(--muted); transition: background var(--dur-fast) ease, color var(--dur-fast) ease; }
/* 白字橘底走 accent-fill/accent-ink 配对(亮色 4.62:1,暗色深字 5.3:1);原 accent 底白字只有 4.45:1 */
.wb-mode-btn.active { background: var(--accent-fill); color: var(--accent-ink); }
.wb-subtitle { margin-bottom: 24px; }
.wb-subtitle h1 { font-size: var(--fs-3xl); margin: 5px 0 12px; }
.wb-subtitle p { color: var(--muted); line-height: 1.7; }
#workbench-view:not([data-wb-mode="resume"]) #resume-mode { display: none; }
#workbench-view:not([data-wb-mode="review"]) #review-panel { display: none; }
#workbench-view:not([data-wb-mode="publish"]) #publish-panel { display: none; }
#workbench-view:not([data-wb-mode="essay"]) #essay-panel { display: none; }
/* 发博客面板:表单复用全站输入样式,正文用等宽大 textarea */
.bp-form { display: grid; gap: 14px; max-width: 860px; }
.bp-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 12px; }
.bp-form label { display: grid; gap: 6px; font-size: var(--fs-sm); font-weight: 700; color: var(--muted); }
.bp-form input, .bp-form select, .bp-form textarea {
  font: inherit; color: var(--fg); background: var(--card); border: 2px solid var(--line);
  border-radius: var(--radius-sm); padding: 9px 12px;
}
.bp-form textarea { min-height: 380px; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: var(--fs-md); line-height: 1.7; resize: vertical; }
.bp-imgs { display: flex; flex-wrap: wrap; gap: 8px; }
.bp-submit-row { display: flex; flex-wrap: wrap; gap: 10px; }
.bp-img-chip { display: inline-flex; align-items: center; gap: 6px; font-size: var(--fs-xs); border: 2px solid var(--line); border-radius: var(--radius-pill); padding: 3px 10px; }
.bp-img-chip button { border: none; background: none; cursor: pointer; color: var(--muted); font-weight: 700; }
.bp-list { margin-top: 28px; display: grid; gap: 8px; max-width: 860px; }
.bp-item { display: flex; flex-wrap: wrap; gap: 10px; align-items: baseline; border: 2px solid var(--line); border-radius: var(--radius-md); padding: 10px 14px; font-size: var(--fs-sm); }
.bp-status { font-weight: 800; border-radius: var(--radius-pill); padding: 1px 10px; font-size: var(--fs-2xs); }
.bp-status-queued { background: var(--accent2); color: #2b2418; }
.bp-status-processing { background: var(--accent3); color: var(--accent-ink); }
.bp-status-blocked { background: var(--accent2); color: #2b2418; outline: 1px dashed var(--ink); }
.bp-status-published { background: var(--accent-fill); color: var(--accent-ink); }
.bp-status-rejected, .bp-status-failed { background: #c0392b; color: #fff; }
.bp-note { color: var(--muted); flex-basis: 100%; }
.bp-note-warn { color: var(--danger); font-weight: 700; }
.role-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
.role-card {
  text-align: left; background: var(--card); color: var(--fg); border: 2px solid var(--line);
  border-radius: var(--radius-lg); padding: 18px; cursor: pointer; font: inherit; transition: transform var(--dur-fast), border-color var(--dur-fast);
}
.role-card:hover { transform: translateY(-2px); border-color: var(--accent); }
.role-card.selected { border-color: var(--accent); box-shadow: var(--shadow-md); }
.role-card strong, .role-card span, .role-card small, .role-card em, .role-card i { display: block; }
.role-card strong { font-size: var(--fs-base); margin-bottom: 6px; }
.role-card span { font-size: var(--fs-sm); color: var(--muted); margin-bottom: 10px; }
.role-card small { font-size: var(--fs-xs); line-height: 1.55; }
.role-card em { font-size: var(--fs-xs); color: var(--accent-text); font-style: normal; margin-top: 8px; line-height: 1.5; }
.role-card i { font-size: var(--fs-2xs); color: var(--muted); font-style: normal; margin-top: 8px; }
.resume-options {
  display: flex; flex-wrap: wrap; align-items: center; gap: 16px; margin: 24px 0;
  padding: 18px; background: var(--card); border: 1px solid var(--line); border-radius: var(--radius-lg);
}
.resume-options label { font-size: var(--fs-sm); font-weight: 700; }
/* 7px 不在圆角阶梯上(xs 4 / sm 8 之间),原生 select 的小圆角刻意保留 */
.resume-options select { margin-left: 6px; padding: 6px 8px; border: 1px solid var(--line); border-radius: 7px; background: var(--bg); color: var(--fg); }
.check-option { display: flex; align-items: center; gap: 6px; }
.filename-line { flex-basis: 100%; font-size: var(--fs-sm); }
.option-actions { display: flex; flex-wrap: wrap; gap: 10px; }
.workbench-message { color: var(--accent-text); font-size: var(--fs-sm); min-height: 20px; }
.workbench-message[data-state="error"], .workbench-message[data-state="warn"] { color: var(--danger); }
.editor-tools {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px;
  margin: 0 0 20px; padding: 16px 18px; background: color-mix(in srgb, var(--accent3) 8%, var(--card));
  border: 1px solid var(--line); border-radius: var(--radius-lg);
}
/* 保留 !important:[hidden] 必须压过上面 display:flex 的合理防御 */
.editor-tools[hidden] { display: none !important; }
.editor-tools > div:first-child strong, .editor-tools > div:first-child span { display: block; }
.editor-tools > div:first-child strong { font-size: var(--fs-md); }
.editor-tools > div:first-child span { color: var(--muted); font-size: var(--fs-xs); margin-top: 3px; }
.editor-actions { display: flex; flex-wrap: wrap; gap: 8px; }
/* save-draft-btn 保留作布局钩子:给「保存草稿」一个最小宽,状态文案变化时按钮不跳 */
.editor-actions .save-draft-btn { min-width: 92px; }
.draft-state { flex-basis: 100%; color: var(--muted); font-size: var(--fs-xs); min-height: 18px; }
/* 草稿结构快照落后于事实库:必须显眼,否则会带着旧结构导出 */
.draft-state-stale { color: var(--danger-err); font-weight: 600; }
.resume.editing [data-edit-key] {
  outline: 1.5px dashed color-mix(in srgb, var(--accent) 75%, transparent);
  outline-offset: 3px; border-radius: 3px; cursor: text;
  background: color-mix(in srgb, var(--accent2) 10%, transparent);
}
.resume.editing [data-edit-key]:focus {
  outline: 2px solid var(--accent); background: color-mix(in srgb, var(--accent2) 18%, transparent);
}
.resume.editing::before {
  content: "结构编辑模式 · 可修改文字，也可增删条目、项目和整段内容"; display: block; margin-bottom: 16px;
  color: var(--accent-text); font-size: var(--fs-xs); font-weight: 700; letter-spacing: .5px;
}
.structure-control { display: none; }
.resume.editing .structure-control {
  display: inline-flex; align-items: center; justify-content: center;
  width: fit-content; margin: 5px 0 5px 8px; padding: 3px 8px;
  border: 1px dashed var(--accent); border-radius: var(--radius-pill);
  background: var(--card); color: var(--accent-text); font: inherit; font-size: var(--fs-2xs);
  line-height: 1.3; cursor: pointer; vertical-align: middle;
}
.resume.editing .structure-control:hover { color: var(--accent-ink); background: var(--accent-fill); }
.resume-block, .resume-project, .custom-resume-section { position: relative; }
.resume.editing .remove-block-control, .resume.editing .remove-project-control, .resume.editing .remove-experience-control {
  float: right; margin: 0 0 5px 10px; color: var(--danger); border-color: var(--danger);
}
.resume.editing [data-collection="strengths"] > li,
.resume.editing [data-collection="project-bullets"] > li,
.resume.editing [data-collection="experience-bullets"] > li { position: relative; padding-right: 2px; }
.resume.editing [data-collection="strengths"] > li > .structure-control,
.resume.editing [data-collection="project-bullets"] > li > .structure-control,
.resume.editing [data-collection="experience-bullets"] > li > .structure-control {
  position: absolute; top: 0; right: -28px; margin: 0; padding: 1px 6px;
}
.resume.editing .skill-item { display: inline-flex; align-items: center; }
.resume.editing .skill-item .structure-control { margin: 0 2px 0 -5px; padding: 1px 5px; }
.resume.editing h2 > .structure-control { margin: 0 0 0 10px; transform: translateY(-1px); }
.context-insert { display: none; }
.resume.editing .context-insert { display: flex; align-items: center; min-height: 18px; }
.resume.editing .context-insert .structure-control { margin-left: 0; }
.resume.editing .custom-insert { justify-content: center; margin-top: 18px; padding-top: 10px; border-top: 1px dashed var(--line); }
.custom-resume-section [data-collection="section-paragraphs"] > p { margin: 0 0 8px; font-size: var(--fs-md); }
.resume.editing .custom-resume-section { padding: 8px 10px; border: 1px dashed var(--line); border-radius: var(--radius-sm); }
.preview-empty { color: var(--muted); text-align: center; padding: 32px; }
.source-panel { margin-top: 20px; padding: 20px; background: var(--card); border: 1px solid var(--line); border-radius: var(--radius-lg); }
.source-panel h2 { margin-bottom: 8px; }
.source-panel > p { color: var(--muted); font-size: var(--fs-sm); margin-bottom: 12px; }
.source-panel details { border-top: 1px solid var(--line); padding: 10px 0; }
.source-panel summary { cursor: pointer; font-weight: 700; font-size: var(--fs-sm); }
.source-panel details p, .source-panel details small { display: block; font-size: var(--fs-xs); margin-top: 6px; line-height: 1.55; }

/* 每周更新审核台(简历工作台内,解锁后出现) */
.review-panel { margin-top: 24px; padding: 20px; background: var(--card); border: 2px solid var(--ink); border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); }
.review-panel h3 { font-size: var(--fs-base); font-weight: 800; margin-bottom: 4px; }
.review-panel .rv-sum { color: var(--muted); font-size: var(--fs-xs); margin-bottom: 10px; }
.review-panel .rv-empty { color: var(--muted); font-size: var(--fs-sm); }
.review-panel .rv-msg { color: var(--accent-text); font-size: var(--fs-xs); min-height: 16px; }
.rv-item { border: 1px solid var(--line); border-radius: var(--radius-md); padding: 14px; margin-bottom: 12px; background: var(--bg); }
.rv-item.rv-ok { border-color: var(--accent3, #4a9); box-shadow: inset 3px 0 0 var(--accent3, #4a9); }
.rv-item.rv-no { opacity: .6; }
.rv-head { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-bottom: 6px; }
.rv-surface { font-size: var(--fs-2xs); font-weight: 800; letter-spacing: .5px; padding: 2px 9px; border-radius: var(--radius-pill); background: var(--card); border: 1px solid var(--line); }
.rv-badge { font-size: var(--fs-2xs); font-weight: 700; padding: 2px 8px; border-radius: var(--radius-pill); }
/* 警示黄字 #8a6d1a→#7f6418(2026-07):同色相加深一档,黄底上 4.45→5.09:1,过 AA */
.rv-suggest { background: #fff3d6; color: #7f6418; }
.rv-block { background: #ffe0e0; color: #a12; }
.rv-state { margin-left: auto; font-size: var(--fs-xs); color: var(--muted); font-weight: 700; }
.rv-item h4 { font-size: var(--fs-md); font-weight: 700; margin: 4px 0 8px; }
.rv-cur, .rv-new { font-size: var(--fs-sm); line-height: 1.55; padding: 8px 10px; border-radius: var(--radius-sm); margin-bottom: 6px; }
.rv-cur { background: color-mix(in srgb, var(--muted) 12%, transparent); color: var(--muted); }
.rv-new { background: color-mix(in srgb, var(--accent) 12%, transparent); }
.rv-cur span, .rv-new span { display: block; font-size: var(--fs-2xs); font-weight: 800; letter-spacing: .5px; text-transform: uppercase; opacity: .7; margin-bottom: 3px; }
.rv-src { font-size: var(--fs-xs); color: var(--muted); margin: 6px 0; }
.rv-actions { display: flex; gap: 8px; margin: 8px 0 6px; }
/* 审核按钮(review.js 注入)统一 btn btn-rect btn-sm:批准 +btn-secondary,驳回 +btn-danger,重置 +btn-ghost;
   动作判定走 data-rv 属性,不再挂 rv-approve/rv-reject/rv-pending 类名 */
.rv-comment { width: 100%; font-size: var(--fs-sm); padding: 7px 10px; border: 1px solid var(--line); border-radius: var(--radius-sm); background: var(--card); resize: vertical; font-family: inherit; }
/* review 面板顶部的周维护报告小节(只读,折叠) */
.rv-maint { border: 1px solid var(--line); border-radius: var(--radius-md); padding: 10px 14px; margin-bottom: 14px; background: var(--bg); }
.rv-maint summary { display: flex; align-items: center; gap: 8px; cursor: pointer; font-size: var(--fs-sm); font-weight: 700; }
.rv-mt-ok { background: color-mix(in srgb, var(--accent3, #4a9) 22%, transparent); }
.rv-mt-warn { background: #fff3d6; color: #7f6418; }
.rv-mt-fail { background: #ffe0e0; color: #a12; }
.rv-mt-time { font-size: var(--fs-2xs); color: var(--muted); font-weight: 400; }
.rv-mt-rep { margin-top: 10px; }
.rv-mt-rep h5 { display: flex; align-items: center; gap: 8px; font-size: var(--fs-sm); margin: 0 0 4px; }
.rv-mt-sum { font-size: var(--fs-xs); color: var(--muted); margin: 2px 0; word-break: break-all; }
.rv-mt-list { list-style: none; margin: 4px 0 0; padding: 0; }
.rv-mt-line { font-size: var(--fs-xs); color: var(--muted); line-height: 1.6; word-break: break-all; }
.rv-mt-line.rv-mt-warn, .rv-mt-line.rv-mt-fail { background: none; font-weight: 700; }
.rv-mt-line.rv-mt-warn { color: #7f6418; }
.rv-mt-line.rv-mt-fail { color: #a12; }
.dynamic-note, .boundary { font-size: var(--fs-sm); color: var(--muted); }
#print-lock-msg { display: none; }
.resume { padding: 48px 0 64px; }
.resume .resume-block, .resume .resume-project, .resume .resume-experience { padding: 0; }
/* 简历条目本身是 <section class="item">,会吃到全站 `section { padding: 52px 0 }`,统一清掉 */
.resume section { padding: 0; }
.resume h1 { font-size: var(--fs-2xl); }
.resume .headline { color: var(--accent-text); font-weight: 600; margin-top: 6px; }
.resume .contact { font-size: var(--fs-md); color: var(--muted); margin-top: 10px; }
.resume .contact span { margin-right: 10px; padding-right: 10px; border-right: 1px solid var(--line); }
.resume .contact span:last-child { margin-right: 0; padding-right: 0; border-right: none; }
.resume h2 {
  font-size: var(--fs-xs); font-weight: 700; letter-spacing: 1.5px; text-transform: uppercase; color: var(--muted);
  margin: 28px 0 12px; padding-bottom: 6px; border-bottom: 2px solid var(--line);
}
.resume .item { margin-bottom: 18px; }
.resume .item .row { display: flex; justify-content: space-between; flex-wrap: wrap; }
.resume .item h3 { font-size: var(--fs-base); font-weight: 700; }
.resume .item h3 .proj-link { font-size: var(--fs-xs); font-weight: 400; margin-left: 8px; }
.resume .item h3 .proj-link a { color: var(--accent-text); }
.resume .item .time { font-size: var(--fs-sm); color: var(--muted); }
.resume .item .role { font-size: var(--fs-md); color: var(--accent-text); margin: 2px 0 6px; }
.resume .item ul { padding-left: 20px; font-size: var(--fs-md); }
.resume .item li { margin-bottom: 4px; }
.resume .skills-line { font-size: var(--fs-md); margin-bottom: 10px; display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px; }
.resume .skills-line b { font-weight: 700; color: var(--fg); margin-right: 2px; }
.resume .chip {
  display: inline-block; background: var(--card); border: 1px solid var(--line); border-radius: var(--radius-pill);
  padding: 2px 10px; font-size: var(--fs-xs); color: var(--fg);
}
.resume .edu-item h3 { font-size: var(--fs-sm); font-weight: 600; color: var(--muted); }
.resume .edu-item .time { font-size: var(--fs-xs); }
.resume .edu-item p { font-size: var(--fs-xs); }
.resume .summary { font-size: var(--fs-md); }
.resume .target-role { margin-top: 5px; color: var(--accent-text); font-size: var(--fs-sm); font-weight: 700; }
.resume .highlights { padding-left: 20px; font-size: var(--fs-md); }
.resume-photo { display: none; }
@media (max-width: 760px) {
  .role-grid { grid-template-columns: 1fr; }
  .workbench { padding-top: 24px; }
  .workbench-title { flex-direction: column; }
  .resume.editing [data-collection="strengths"] > li,
  .resume.editing [data-collection="project-bullets"] > li,
  .resume.editing [data-collection="experience-bullets"] > li { padding-right: 30px; }
  .resume.editing [data-collection="strengths"] > li > .structure-control,
  .resume.editing [data-collection="project-bullets"] > li > .structure-control,
  .resume.editing [data-collection="experience-bullets"] > li > .structure-control { right: 0; }
}
.toolbar { padding: 18px 0 0; display: flex; gap: 12px; }
/* toolbar 按钮统一 btn btn-rect(次要的 +btn-ghost),局部视觉规则已删 */
.public-resume-note { margin: 16px 0 -22px; color: var(--muted); font-size: var(--fs-sm); }
