/* ============================================================
   FCKJOB — AI 求职工作台设计系统 v2.9 / 新规范外壳
   概念：2026-08-23起 外壳与阶段3新页面统一采用 Intelligent Career Orchestrator
   （design-system/DESIGN.md：紫主色#3625CD/#5046E5、Hanken Grotesk+Inter、浅色白卡片）。
   模块1存量页面的内容组件仍用下方v2.x旧样式，后续逐步迁移。
   更新记录：v2.9 2026-08-23 外壳切换新规范(顶栏+侧栏重构)+求职任务页(jb-*/stepflow/插件横幅/安装弹窗)
             v2.8 2026-08-22 step3职业经历职责分组渲染(t-gh)
             v2.7 2026-08-22 弹窗按内容区居中(排除侧栏)；step2改为岗位信息补充流程
             v2.6 2026-08-22 还原稿职责分组(rp-gh)+项目描述列表(rp-desc)
             v2.5 2026-08-22 分步生成进度清单（gen-steps）
             v2.4 2026-08-22 工作台hero右侧简历库入口+crumb面包屑跳转
             v2.3 2026-08-22 step2解析失败卡片（pf-card，移除手动填写降级）
             v2.2 2026-08-22 step2必填缺失高亮（.miss 标红+闪烁）
             v2.1 2026-08-22 新增简历库组件（rcards/rcard/rc-empty/badge.dim）
             v2.0 2026-08-21 全局重设计（替代 v1 青色扁平）
   ============================================================ */
@import url('https://fonts.googleapis.com/css2?family=Hanken+Grotesk:wght@600;700&family=Inter:wght@400;500;600;700&family=IBM+Plex+Mono:wght@500;600&display=swap');

:root {
  /* 色板 */
  --ink: #1B2A41;         /* 深色工作区：侧栏、标题 */
  --ink-2: #24344F;       /* 侧栏悬停 */
  --ink-3: #0F1B2E;       /* 侧栏激活底 */
  --paper: #F2F4F6;       /* 工作面 */
  --card: #FFFFFF;
  --text: #1F2D3D;
  --muted: #5B6B7E;
  --faint: #8B99A9;
  --line: #DCE2E8;
  --line-soft: #E8EDF1;
  --signal: #E8590C;      /* 信号橙：CTA、进行中（克制使用） */
  --signal-ink: #C74A0A;
  --ok: #2B9348;
  --warn: #B7791F;
  --danger: #C43D3D;
  /* 字体角色 */
  --font-body: -apple-system, "PingFang SC", "Microsoft YaHei", "Noto Sans SC", sans-serif;
  --font-display: "Space Grotesk", var(--font-body);
  --font-mono: "IBM Plex Mono", "Consolas", monospace;
  /* 度量 */
  --radius: 8px;
  --radius-lg: 14px;
  --s1: 4px; --s2: 8px; --s3: 12px; --s4: 16px; --s6: 24px; --s8: 32px; --s12: 48px;
  --sidebar-w: 236px;
}

* { box-sizing: border-box; }
html { viewport: width=device-width, initial-scale=1; }
body {
  margin: 0; font-family: var(--font-body); background: var(--paper);
  color: var(--text); font-size: var(--font-reading); line-height: 1.65; min-height: 100dvh;
  display: grid; grid-template-columns: var(--sidebar-w) 1fr;
}
:focus-visible { outline: 2px solid var(--signal); outline-offset: 2px; border-radius: 4px; }

/* ---------- 侧栏：任务导航 ---------- */
.side {
  background: var(--ink); color: #CBD6E4; display: flex; flex-direction: column;
  position: sticky; top: 0; height: 100dvh; overflow-y: auto;
}
.brand {
  display: flex; align-items: center; gap: 10px; padding: 20px 20px 16px;
  color: #fff; text-decoration: none; font-weight: 700; font-size: 16px; letter-spacing: .5px;
}
.brand .sigil {
  width: 30px; height: 30px; border-radius: 8px; background: var(--signal);
  display: grid; place-items: center; flex: none;
}
.brand small {
  font-family: var(--font-mono); font-size: 9.5px; font-weight: 600; color: #7488A3;
  letter-spacing: 1.5px; display: block; margin-top: 1px;
}
.side nav { padding: 4px 12px 12px; flex: 1; }
.nav-label {
  font-family: var(--font-mono); font-size: var(--font-caption); letter-spacing: 2px; color: #5F7391;
  padding: 18px 10px 6px; text-transform: uppercase;
}
.nav-item {
  display: flex; align-items: center; gap: 10px; padding: 9px 10px; margin: 1px 0;
  border-radius: var(--radius); color: #B9C6D8; text-decoration: none; font-size: var(--font-control);
  transition: background 140ms ease, color 140ms ease; position: relative;
}
.nav-item svg { flex: none; opacity: .75; }
.nav-item:hover { background: var(--ink-2); color: #fff; }
.nav-item.active { background: var(--ink-3); color: #fff; }
.nav-item.active::before {
  content: ""; position: absolute; left: -12px; top: 8px; bottom: 8px; width: 3px;
  background: var(--signal); border-radius: 0 3px 3px 0;
}
.nav-item .phase-no {
  font-family: var(--font-mono); font-size: var(--font-caption); font-weight: 600; color: #5F7391;
  width: 20px; flex: none;
}
.nav-item.active .phase-no { color: var(--signal); }
.nav-item .lock {
  margin-left: auto; font-size: var(--font-caption); color: #54688A; border: 1px solid #3A4C68;
  padding: 1px 7px; border-radius: 999px; font-family: var(--font-mono);
}
.nav-item.is-locked { opacity: .55; cursor: not-allowed; }
.side-foot {
  padding: 14px 20px; border-top: 1px solid #2A3B58; font-size: var(--font-caption); color: #64789A;
  font-family: var(--font-mono);
}

/* ---------- 主区 ---------- */
.main { display: flex; flex-direction: column; min-width: 0; }
.topbar {
  position: sticky; top: 0; z-index: 20; display: flex; align-items: center; gap: var(--s4);
  background: rgba(255,255,255,.92); backdrop-filter: blur(8px);
  border-bottom: 1px solid var(--line); padding: 12px var(--s6);
}
.topbar .crumb { font-size: var(--font-control); color: var(--muted); }
.topbar .crumb b { color: var(--text); font-weight: 600; }
.topbar .spacer { flex: 1; }
.lamp { display: inline-flex; align-items: center; gap: 6px; font-size: var(--font-caption); color: var(--muted); }
.lamp i { width: 8px; height: 8px; border-radius: 50%; background: #B8C2CC; }
.lamp.on i { background: var(--ok); }
.ammo {
  font-family: var(--font-mono); font-size: 13px; font-weight: 600;
  background: var(--ink); color: #fff; border-radius: 999px; padding: 5px 14px;
  display: inline-flex; align-items: baseline; gap: 7px; text-decoration: none;
}
.ammo b { font-family: var(--font-display); font-size: 15px; }
.ammo.low { background: var(--signal-ink); }
.avatar {
  width: 32px; height: 32px; border-radius: 50%; background: var(--line-soft);
  display: grid; place-items: center; font-size: 13px; font-weight: 700; color: var(--muted);
  text-decoration: none;
}
.content { width: 100%; max-width: 980px; margin: 0 auto; padding: var(--s8) var(--s6) 64px; }

/* ---------- 页眉：eyebrow + 标题 ---------- */
.eyebrow {
  font-family: var(--font-mono); font-size: var(--font-caption); font-weight: 600; letter-spacing: 2.5px;
  color: var(--signal); text-transform: uppercase; margin: 0 0 6px;
}
h1.page-title { font-size: 26px; line-height: 1.3; margin: 0 0 6px; font-weight: 700; letter-spacing: .2px; }
.page-sub { color: var(--muted); margin: 0 0 var(--s8); font-size: var(--font-control); }

/* ---------- 卡片 ---------- */
.card {
  background: var(--card); border: 1px solid var(--line); border-radius: var(--radius-lg);
  padding: var(--s6); margin-bottom: var(--s4);
}
.card h2, .card h3 { margin: 0 0 var(--s2); font-size: 16.5px; }
.card h2 svg, .card h3 svg { vertical-align: -3px; margin-right: 8px; color: var(--signal); }
.hint { color: var(--muted); font-size: var(--font-control); margin: 0 0 var(--s4); }

/* ---------- 向导步骤：见 v2.9 .stepflow（2026-08-23 v3.2 起模块1/2统一） ---------- */

/* ---------- 表单 ---------- */
label { display: block; font-weight: 600; font-size: var(--font-control); margin: var(--s3) 0 5px; }
label .req { color: var(--signal); }
input[type=text], input[type=number], input[type=email], select, textarea {
  width: 100%; padding: 7px 10px; font: inherit; font-size: var(--font-control); line-height: 1.4; color: var(--text);
  background: #fff; border: 1.5px solid var(--line); border-radius: var(--radius);
  min-height: var(--control-height); transition: border-color 140ms ease, box-shadow 140ms ease;
}
input:focus, select:focus, textarea:focus {
  outline: none; border-color: var(--ink);
  box-shadow: 0 0 0 3px rgba(27,42,65,.10);
}
.grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 0 var(--s4); }
@media (max-width: 640px) { .grid-2 { grid-template-columns: 1fr; } }

/* ---------- 按钮 ---------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  font: inherit; font-weight: 600; font-size: var(--font-control); padding: 11px 22px; min-height: 44px;
  border-radius: var(--radius); border: 1.5px solid transparent; cursor: pointer;
  text-decoration: none; transition: background 140ms ease, border-color 140ms ease, transform 100ms ease;
}
.btn:active { transform: translateY(1px); }
.btn-primary { background: var(--signal); color: #fff; }
.btn-primary:hover { background: var(--signal-ink); }
.btn-primary:disabled { opacity: .45; cursor: not-allowed; transform: none; }
.btn-dark { background: var(--ink); color: #fff; }
.btn-dark:hover { background: var(--ink-3); }
.btn-outline { background: #fff; color: var(--text); border-color: var(--line); }
.btn-outline:hover { border-color: var(--ink); }
.btn-ghost { background: transparent; color: var(--muted); }
.btn-ghost:hover { color: var(--text); background: var(--line-soft); }
.btn-danger { background: #fff; color: var(--danger); border-color: var(--danger); }
.btn-sm { padding: 5px 12px; min-height: 32px; font-size: 13px; }
.btn-block { width: 100%; }
.actions { display: flex; gap: var(--s3); justify-content: space-between; margin-top: var(--s6); flex-wrap: wrap; }

/* ---------- 上传区 ---------- */
.dropzone {
  border: 2px dashed #B9C6D8; border-radius: var(--radius-lg); padding: var(--s12) var(--s6);
  text-align: center; cursor: pointer; transition: border-color 160ms ease, background 160ms ease;
  background: linear-gradient(180deg, #FBFCFD 0%, #F4F7F9 100%);
}
.dropzone:hover, .dropzone.drag { border-color: var(--signal); background: #FDF3EC; }
.dropzone svg { color: var(--signal); }
.dropzone .sub { color: var(--muted); font-size: 13px; }

/* ---------- 进度 ---------- */
.progress { height: 6px; background: var(--line-soft); border-radius: 999px; overflow: hidden; margin: var(--s4) 0 var(--s2); }
.progress > div { height: 100%; background: var(--signal); width: 0; transition: width 300ms ease; }
.status-text { font-family: var(--font-mono); font-size: var(--font-caption); color: var(--muted); }

/* ---------- chips ---------- */
.chips { display: flex; flex-wrap: wrap; gap: var(--s2); margin: var(--s2) 0; }
.chip {
  display: inline-flex; align-items: center; gap: 7px; background: #fff;
  border: 1px solid var(--line); border-radius: 999px; padding: 5px 12px; font-size: 13px;
}
.chip button { border: 0; background: none; cursor: pointer; color: var(--faint); padding: 2px; line-height: 1; font-size: var(--font-control); }
.chip button:hover { color: var(--danger); }

/* ---------- 列表卡片 ---------- */
.item-card {
  border: 1px solid var(--line); border-left: 3px solid var(--ink);
  border-radius: var(--radius); padding: var(--s3) var(--s4); margin-bottom: var(--s2);
  background: #fff;
}
.item-card summary { cursor: pointer; font-weight: 600; font-size: var(--font-control); display: flex; justify-content: space-between; align-items: center; gap: 8px; list-style: none; }
.item-card summary::-webkit-details-marker { display: none; }
.item-card .del { color: var(--danger); background: none; border: 0; cursor: pointer; font-size: var(--font-caption); flex: none; }

/* ---------- 横幅 ---------- */
.banner { border-radius: var(--radius); padding: 11px var(--s4); margin-bottom: var(--s4); font-size: var(--font-control); border: 1px solid transparent; }
.banner-error { background: #FBEBEA; color: #8C2F2F; border-color: #EFC5C2; }
.banner-info { background: #EDF2F7; color: #3E5266; border-color: var(--line); }
.banner-success { background: #E9F5EE; color: #1E5E38; border-color: #BFE3CC; }
[hidden] { display: none !important; }

/* ---------- 弹窗 ---------- */
.modal-mask { position: fixed; inset: 0; left: var(--sidebar-w); background: rgba(15,27,46,.55); display: flex; align-items: center; justify-content: center; z-index: 100; }
@media (max-width: 900px) { .modal-mask { left: 0; } }
.modal { background: #fff; border-radius: var(--radius-lg); padding: var(--s6); max-width: 460px; width: calc(100% - 32px); box-shadow: 0 24px 64px rgba(15,27,46,.25); }
.modal h3 { margin-top: 0; }

/* ---------- Step3 摘要 ---------- */
.summary-block { border-bottom: 1px solid var(--line-soft); padding: var(--s4) 0; }
.summary-block:last-child { border-bottom: 0; }
.summary-block h3 { margin: 0 0 var(--s2); font-size: var(--font-control); color: var(--muted); font-family: var(--font-mono); letter-spacing: 1px; text-transform: uppercase; }
.summary-block .row { display: flex; gap: var(--s2); flex-wrap: wrap; font-size: 13px; }
.summary-block .row span { background: var(--line-soft); border-radius: 6px; padding: 2px 9px; }
.summary-block p { margin: var(--s1) 0; font-size: var(--font-control); }
.badge { display: inline-block; font-size: var(--font-caption); border-radius: 999px; padding: 2px 10px; font-family: var(--font-mono); }
.badge.ok { background: #E9F5EE; color: var(--ok); }
.badge.warn { background: #FBF3E4; color: var(--warn); }

/* ---------- 工作台 ---------- */
.hero { display: flex; align-items: flex-end; justify-content: space-between; gap: var(--s4); flex-wrap: wrap; margin-bottom: var(--s6); }
.hero .date { font-family: var(--font-mono); font-size: var(--font-caption); color: var(--faint); letter-spacing: 1px; }
.stat-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: var(--s4); margin-bottom: var(--s4); }
.stat { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius-lg); padding: var(--s4) var(--s6); }
.stat .k { font-family: var(--font-mono); font-size: var(--font-caption); letter-spacing: 1.5px; color: var(--faint); text-transform: uppercase; }
.stat .v { font-family: var(--font-display); font-size: 30px; font-weight: 700; line-height: 1.2; margin-top: 2px; }
.stat .v small { font-size: var(--font-control); color: var(--muted); font-weight: 500; }
.stat .note { font-size: var(--font-caption); color: var(--muted); }
.pipeline { display: grid; grid-template-columns: repeat(auto-fit, minmax(165px, 1fr)); gap: var(--s3); }
.phase-card {
  border: 1px solid var(--line); border-radius: var(--radius-lg); background: var(--card);
  padding: var(--s4); text-decoration: none; color: var(--text); display: flex; flex-direction: column; gap: 6px;
  transition: border-color 140ms ease, transform 140ms ease; position: relative; overflow: hidden;
}
.phase-card:hover { border-color: var(--ink); transform: translateY(-2px); }
.phase-card.locked { opacity: .55; cursor: default; }
.phase-card.locked:hover { border-color: var(--line); transform: none; }
.phase-card .no { font-family: var(--font-mono); font-size: 22px; font-weight: 600; color: var(--line); }
.phase-card.current .no { color: var(--signal); }
.phase-card .nm { font-weight: 700; font-size: var(--font-control); }
.phase-card .ds { font-size: var(--font-caption); color: var(--muted); line-height: 1.5; }
.phase-card .st-tag { font-family: var(--font-mono); font-size: var(--font-caption); letter-spacing: 1px; margin-top: auto; }

/* ---------- 响应式 ---------- */
@media (max-width: 900px) {
  body { grid-template-columns: 1fr; }
  .side { position: static; height: auto; }
  .side nav { display: flex; overflow-x: auto; padding: 4px 8px; gap: 2px; }
  .nav-label, .side-foot { display: none; }
  .nav-item { flex: none; }
  .content { padding: var(--s6) var(--s4) 48px; }
  .topbar { padding: 10px var(--s4); }
}
@media (prefers-reduced-motion: reduce) { * { animation: none !important; transition: none !important; } }

/* ---------- 档案卷宗 Dossier（我的画像页） ---------- */
.dossier-head { display: flex; gap: var(--s4); align-items: center; }
.avatar-photo {
  width: 96px; height: 96px; border-radius: var(--radius-lg); object-fit: cover;
  border: 3px solid var(--ink); flex: none; background: var(--line-soft);
}
.avatar-fallback {
  display: grid; place-items: center; font-size: 34px; font-weight: 700;
  color: #fff; background: var(--ink); font-family: var(--font-display);
}
.dh-main { min-width: 0; }
.dh-name-row { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.dh-name-row h2 { font-size: 22px; margin: 0; }
.dh-headline { margin: 3px 0 8px; color: var(--muted); font-size: var(--font-control); }
.dh-meta { display: flex; flex-wrap: wrap; gap: 6px 0; font-family: var(--font-mono); font-size: var(--font-caption); color: var(--muted); }
.dh-meta span::after { content: "·"; margin: 0 8px; color: var(--line); }
.dh-meta span:last-child::after { content: ""; }

.dossier-grid { display: grid; grid-template-columns: 1.55fr 1fr; gap: var(--s4); align-items: start; }
@media (max-width: 900px) { .dossier-grid { grid-template-columns: 1fr; } }
.dcol > .card { margin-bottom: var(--s4); }
.dcol > .card:last-child { margin-bottom: 0; }

/* 时间线 */
.timeline { margin-top: var(--s2); }
.t-node { display: grid; grid-template-columns: 96px 1fr; gap: var(--s3); position: relative; padding-bottom: var(--s4); }
.t-node:not(:last-child)::before { content: ""; position: absolute; left: 102px; top: 16px; bottom: -2px; width: 2px; background: var(--line-soft); }
.t-when { font-family: var(--font-mono); font-size: var(--font-caption); color: var(--muted); text-align: right; padding-top: 3px; }
.t-body { position: relative; padding-left: 18px; }
.t-body::before { content: ""; position: absolute; left: -3px; top: 6px; width: 9px; height: 9px; border-radius: 50%; background: var(--signal); border: 2px solid #fff; box-shadow: 0 0 0 1.5px var(--signal); }
.t-title { margin: 0 0 6px; font-size: var(--font-control); }
.t-list { margin: 0 0 6px; padding-left: 18px; color: var(--muted); font-size: var(--font-control); }
.t-list li { margin: 2px 0; }
.t-ach li::marker { color: var(--signal); }
.t-ach li { color: var(--text); }
.chips-mini .chip { padding: 2px 9px; font-size: var(--font-caption); }

/* 教育行 */
.edu-row { display: flex; align-items: baseline; gap: 12px; padding: 9px 0; border-bottom: 1px solid var(--line-soft); flex-wrap: wrap; }
.edu-row:last-of-type { border-bottom: 0; }
.edu-school { font-weight: 700; font-size: var(--font-control); }
.edu-deg { color: var(--muted); font-size: 13px; }
.edu-time { margin-left: auto; font-family: var(--font-mono); font-size: var(--font-caption); color: var(--faint); }

/* 词云 */
.wordcloud { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 6px 14px; padding: var(--s3) 0; min-height: 90px; }
.wc { line-height: 1.25; letter-spacing: .3px; transition: transform 120ms ease; }
.wc:hover { transform: scale(1.08); }
.wc-legend { display: flex; align-items: center; gap: 12px; font-size: var(--font-caption); border-top: 1px solid var(--line-soft); padding-top: 10px; }
.wc-legend span { color: var(--c, var(--muted)); font-weight: 600; }
.wc-legend span::before { content: "●"; font-size: 8px; margin-right: 4px; }
.wc-legend em { margin-left: auto; color: var(--faint); font-style: normal; font-family: var(--font-mono); font-size: var(--font-caption); }

/* 雷达 */
.radar-wrap { display: grid; place-items: center; padding: var(--s2) 0; }
.radar-wrap svg { width: 100%; max-width: 250px; height: auto; }

/* 行为特质 */
.bt-summary { font-size: var(--font-control); margin: 0 0 10px; padding-left: 10px; border-left: 3px solid var(--signal); }
.bt-label { font-family: var(--font-mono); font-size: var(--font-caption); letter-spacing: 1.5px; color: var(--faint); text-transform: uppercase; margin: 12px 0 6px; }
.chip-drive { border-color: var(--ink); background: var(--ink); color: #fff; }
.chip-grow { border-color: #E5C98E; background: #FBF3E4; color: var(--warn); }

/* 求职策略 */
.strategy-kv { display: grid; gap: 0; }
.strategy-kv > div { display: flex; gap: 12px; padding: 8px 0; border-bottom: 1px solid var(--line-soft); font-size: var(--font-control); }
.strategy-kv > div:last-child { border-bottom: 0; }
.strategy-kv i { font-style: normal; color: var(--faint); font-family: var(--font-mono); font-size: var(--font-caption); width: 64px; flex: none; padding-top: 2px; }
.strategy-kv b { font-weight: 600; }

/* 档案结语 */
.quote-card { border-left: 4px solid var(--signal); }
.quote { margin: 0; font-size: var(--font-reading); line-height: 1.75; color: var(--text); }

/* ---------- 技能图谱 v2.1：词云2.0（螺旋布局） + 雷达拼板 ---------- */
.skill-mosaic { display: grid; grid-template-columns: 1.55fr 1fr; gap: var(--s4); align-items: stretch; }
.skill-mosaic.full { grid-template-columns: 1fr; }
@media (max-width: 760px) { .skill-mosaic { grid-template-columns: 1fr; } }
.cloud-side { min-width: 0; display: flex; flex-direction: column; }
.cloud-box {
  position: relative; height: clamp(220px, 30vw, 280px);
  border: 1px dashed var(--line); border-radius: var(--radius);
  background: linear-gradient(180deg, #FBFCFD, #F5F8FA); overflow: hidden;
}
.wc2 {
  position: absolute; line-height: 1.15; white-space: nowrap; letter-spacing: .3px;
  transition: transform 130ms ease, filter 130ms ease; cursor: default;
}
.wc2:hover { transform: scale(1.12); filter: drop-shadow(0 2px 4px rgba(27,42,65,.25)); z-index: 2; }
.radar-side { border-left: 1px solid var(--line-soft); padding-left: var(--s4); display: flex; flex-direction: column; justify-content: center; }
.skill-mosaic.full .radar-side { display: none; }
@media (max-width: 760px) { .radar-side { border-left: 0; padding-left: 0; border-top: 1px solid var(--line-soft); padding-top: var(--s4); } }

/* ---------- 画像诊断报告 v2.2（五层决策参考结构） ---------- */
.value-statement { font-size: var(--font-reading); font-weight: 600; line-height: 1.55; margin: 4px 0 10px; color: var(--ink); }
.value-statement::before { content: "»"; color: var(--signal); margin-right: 8px; font-weight: 700; }

.layer-card { border-top: 3px solid var(--ink); }
.layer-head { display: flex; align-items: center; justify-content: space-between; gap: var(--s3); flex-wrap: wrap; }
.layer-head h2 { margin: 0; }
.layer-text { margin: var(--s3) 0 0; font-size: var(--font-control); line-height: 1.8; }
.comp-tags { display: flex; flex-wrap: wrap; gap: var(--s2); margin-top: var(--s3); }
.comp-tag {
  font-weight: 700; font-size: var(--font-control); color: #fff; background: var(--ink);
  padding: 5px 14px; border-radius: 999px;
}

/* 置信度徽章（规则判断：简历原文=高 / AI分析=中 / AI推断=低） */
.conf { font-family: var(--font-mono); font-size: var(--font-caption); letter-spacing: 1px; padding: 3px 10px; border-radius: 999px; white-space: nowrap; }
.conf-high { background: #E9F5EE; color: var(--ok); }
.conf-mid { background: #EDF2F7; color: var(--muted); }
.conf-low { background: #FBF3E4; color: var(--warn); }

/* 匹配度诊断 */
.diag-top { display: flex; gap: var(--s6); align-items: center; margin-top: var(--s3); flex-wrap: wrap; }
.diag-overall { text-align: center; flex: none; }
.diag-overall .v { display: block; font-family: var(--font-display); font-size: 52px; font-weight: 700; line-height: 1; }
.diag-overall .k { font-family: var(--font-mono); font-size: var(--font-caption); letter-spacing: 2px; color: var(--faint); }
.diag-dims { flex: 1; min-width: 260px; }
.dim-row { display: grid; grid-template-columns: 62px 1fr 34px; gap: 4px 10px; align-items: center; padding: 4px 0; font-size: 13px; }
.dim-name { color: var(--muted); }
.dim-bar { height: 8px; background: var(--line-soft); border-radius: 999px; overflow: hidden; }
.dim-bar i { display: block; height: 100%; border-radius: 999px; }
.dim-row b { font-family: var(--font-mono); text-align: right; }
.dim-low { color: var(--danger); }
.dim-note { grid-column: 1 / -1; font-size: var(--font-caption); color: var(--faint); margin-top: -2px; }
.diag-texts { margin-top: var(--s4); display: grid; gap: var(--s3); }
.diag-texts i { font-style: normal; font-family: var(--font-mono); font-size: var(--font-caption); letter-spacing: 1.5px; color: var(--signal); }
.diag-texts p { margin: 4px 0 0; font-size: var(--font-control); line-height: 1.75; }

/* 支撑证据分隔标题 */
.layer-sep {
  font-family: var(--font-mono); font-size: var(--font-caption); letter-spacing: 2px; color: var(--ink);
  margin: var(--s6) 0 var(--s3); padding-bottom: 8px; border-bottom: 2px solid var(--ink);
  display: flex; align-items: baseline; gap: 12px;
}
.layer-sep span { font-family: var(--font-body); letter-spacing: 0; font-size: var(--font-caption); color: var(--faint); }

/* 技能三区统计 */
.zone-stats { display: flex; flex-wrap: wrap; gap: var(--s2); margin-bottom: var(--s3); }
.zone { font-size: var(--font-caption); color: var(--muted); background: var(--line-soft); padding: 4px 12px; border-radius: 999px; }
.zone b { font-family: var(--font-mono); color: var(--ink); }

/* 经历洞察 + 行为价值 */
.t-insight { font-size: 13px; color: var(--signal-ink); background: #FDF3EC; border-left: 3px solid var(--signal); padding: 7px 10px; border-radius: 4px; margin: 6px 0; line-height: 1.6; }
.behavior-value { margin: 0 0 12px; }
.behavior-value i { font-style: normal; font-family: var(--font-mono); font-size: var(--font-caption); letter-spacing: 1.5px; color: var(--signal); }
.behavior-value p { margin: 4px 0 0; font-size: var(--font-control); line-height: 1.75; padding-left: 10px; border-left: 3px solid var(--signal); }

/* 行动指引 */
.action-list { display: grid; gap: var(--s2); margin-top: var(--s3); }
.action-item { display: flex; align-items: baseline; gap: 12px; padding: 10px 14px; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; }
.action-item p { margin: 0; font-size: var(--font-control); line-height: 1.6; flex: 1; }
.pri { font-family: var(--font-mono); font-size: var(--font-caption); font-weight: 600; padding: 2px 10px; border-radius: 999px; flex: none; }
.pri-urgent { background: #FBEBEA; color: var(--danger); }
.pri-high { background: #FDF3EC; color: var(--signal-ink); }
.pri-cont { background: #EDF2F7; color: var(--ink); }
.pri-opt { background: var(--line-soft); color: var(--faint); }
.mod-link { font: inherit; font-size: var(--font-caption); color: var(--signal); background: none; border: 1px solid var(--signal); border-radius: 999px; padding: 3px 12px; cursor: pointer; flex: none; }
.mod-link:hover { background: #FDF3EC; }

/* ---------- 诊断报告 v3（gaps配对/归一化/反馈/技能分层列表） ---------- */
.dim-row { grid-template-columns: 62px 1fr 34px auto; }
.rel { font-family: var(--font-mono); font-size: var(--font-caption); padding: 2px 8px; border-radius: 999px; white-space: nowrap; }
.rel-high { background: #E9F5EE; color: var(--ok); }
.rel-mid { background: #EDF2F7; color: var(--muted); }
.rel-low { background: #FBEBEA; color: var(--danger); }
.rel-none { background: var(--line-soft); color: var(--faint); }
.dim-footnote { font-size: var(--font-caption); color: var(--faint); margin: 8px 0 0; }

/* 市场定位：对照结构 + 三层 */
.mp-flow { display: flex; align-items: center; gap: 14px; margin: var(--s3) 0; flex-wrap: wrap; }
.mp-cur, .mp-target { font-size: var(--font-control); font-weight: 600; padding: 6px 14px; border-radius: var(--radius); }
.mp-cur { background: var(--line-soft); color: var(--muted); }
.mp-target { background: var(--ink); color: #fff; }
.mp-layers { display: grid; gap: var(--s2); }
.mp-row { display: grid; grid-template-columns: 150px 1fr; gap: 10px; padding: 9px 12px; border-radius: var(--radius); border: 1px solid var(--line); align-items: baseline; }
.mp-row i { font-style: normal; font-weight: 700; font-size: 13px; }
.mp-row i em { display: block; font-style: normal; font-weight: 400; font-size: var(--font-caption); color: var(--faint); }
.mp-row p { margin: 0; font-size: var(--font-control); line-height: 1.7; }
.mp-core { border-left: 3px solid var(--ok); } .mp-core i { color: var(--ok); }
.mp-base { border-left: 3px solid var(--muted); } .mp-base i { color: var(--muted); }
.mp-grow { border-left: 3px solid var(--signal); } .mp-grow i { color: var(--signal-ink); }
@media (max-width: 640px) { .mp-row { grid-template-columns: 1fr; } }

/* 技能三区列表（替代纯数量统计） */
.zone-row { display: grid; grid-template-columns: 130px 1fr; gap: 10px; padding: 8px 0; border-bottom: 1px solid var(--line-soft); align-items: baseline; }
.zone-row:last-child { border-bottom: 0; }
.zone-row i { font-style: normal; font-size: 13px; font-weight: 700; }
.zone-row i b { font-family: var(--font-mono); }
.zone-row p { margin: 0; font-size: 13px; color: var(--muted); line-height: 1.7; }
.z-core i { color: var(--ok); } .z-base i { color: var(--muted); } .z-grow i { color: var(--signal-ink); }

/* 缺口-建议配对 */
.gap-list { display: grid; gap: var(--s3); margin-top: var(--s3); }
.gap-item { border: 1px solid var(--line); border-radius: var(--radius); padding: var(--s3) var(--s4); background: #fff; }
.gap-head { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.gap-head strong { font-size: var(--font-control); }
.gap-evidence { margin: 8px 0 4px; font-size: 13px; color: var(--muted); line-height: 1.65; }
.gap-action { margin: 0; font-size: var(--font-control); line-height: 1.7; color: var(--signal-ink); font-weight: 500; }

/* "不准确"反馈 */
.fb-btn {
  font: inherit; font-size: var(--font-caption); color: var(--faint); background: none;
  border: 1px solid var(--line); border-radius: 999px; padding: 2px 10px; cursor: pointer;
  transition: color 140ms, border-color 140ms; margin-left: auto;
}
.fb-btn:hover { color: var(--danger); border-color: var(--danger); }
.fb-btn:disabled { color: var(--ok); border-color: #BFE3CC; cursor: default; }
.flagged { opacity: .55; transition: opacity 300ms ease; }
.flagged::after { content: none; }

/* ---------- Step2 简历还原稿（contenteditable 简历纸张） ---------- */
.resume-paper {
  background: #fff; border: 1px solid var(--line); border-radius: var(--radius);
  padding: 28px 32px; font-family: Georgia, "Songti SC", "SimSun", serif;
  color: #22303F; line-height: 1.7; box-shadow: 0 1px 3px rgba(27,42,65,.06);
}
.rp-head { text-align: center; border-bottom: 2px solid var(--ink); padding-bottom: 12px; margin-bottom: 6px; }
.rp-head h1 { font-size: 26px; margin: 0 0 4px; letter-spacing: 2px; }
.rp-headline { margin: 0 0 8px; color: #4A5A6B; font-size: var(--font-control); }
.rp-meta { margin: 0; font-size: var(--font-caption); color: #6B7A89; font-family: var(--font-mono); }
.rp-sep { margin: 0 8px; color: #C6CFD8; }
.rp-years b { font-family: var(--font-display); font-size: var(--font-control); }
.rp-sec { margin-top: 16px; }
.rp-sec > h3 {
  font-size: var(--font-control); letter-spacing: 3px; color: var(--ink); margin: 0 0 8px;
  border-bottom: 1px solid #D9E0E7; padding-bottom: 4px; font-weight: 700;
}
.rp-item { padding: 6px 4px; border-radius: 6px; position: relative; transition: background 120ms ease; }
.rp-item:hover { background: #FBF7EC; }
.rp-item > span, .rp-item .rp-line1 { display: inline; }
.rp-line1 { margin: 0 0 3px; }
.rp-line1 strong { font-size: 15px; }
.rp-dim { color: #55636F; margin: 0 6px; }
.rp-time { color: #8B99A9; font-family: var(--font-mono); font-size: var(--font-caption); margin-left: 8px; }
.rp-del {
  position: absolute; right: 2px; top: 4px; border: 0; background: none; color: #C6CFD8;
  font-size: 15px; cursor: pointer; opacity: 0; transition: opacity 120ms, color 120ms; padding: 2px 6px;
}
.rp-item:hover .rp-del { opacity: 1; }
.rp-del:hover { color: var(--danger); }
.rp-item ul { margin: 2px 0 4px; padding-left: 20px; font-size: var(--font-control); color: #3C4B59; }
.rp-item ul:empty { display: none; }
.rp-ach li::marker { color: var(--signal); }
.rp-tools { margin: 2px 0 0; font-size: var(--font-caption); color: #6B7A89; }
.rp-tools:empty { display: none; }
.rp-skills { margin: 0; font-size: var(--font-control); }
.rp-add {
  font: inherit; font-size: var(--font-caption); color: var(--muted); background: none;
  border: 1px dashed var(--line); border-radius: 6px; padding: 3px 12px; cursor: pointer; margin-top: 4px;
}
.rp-add:hover { color: var(--ink); border-color: var(--ink); }
[contenteditable="true"] { outline: none; border-radius: 3px; min-width: 12px; transition: background 100ms, box-shadow 100ms; }
[contenteditable="true"]:hover { background: #F3EBDB; box-shadow: 0 0 0 1px #E3D5B8; }
[contenteditable="true"]:focus { background: #FDF6E7; box-shadow: 0 0 0 1.5px var(--signal); }
[contenteditable="true"]:empty::before { content: attr(data-placeholder); color: #B6C1CB; }
.survey-modal { max-width: 560px; max-height: 86dvh; overflow-y: auto; }

/* 问卷弹窗：按钮区固定底部，任何屏高都可见可点 */
.survey-modal { display: flex; flex-direction: column; padding: 0; overflow: hidden; }
.survey-modal > h3, .survey-modal > .hint { padding: var(--s6) var(--s6) 0; margin-bottom: 0; }
.survey-body { padding: 0 var(--s6) var(--s4); overflow-y: auto; flex: 1; }
.survey-foot {
  display: flex; gap: 12px; justify-content: space-between; align-items: center;
  padding: var(--s3) var(--s6); border-top: 1px solid var(--line);
  background: #fff; position: sticky; bottom: 0;
}

/* ---------- 诊断报告 v4（紧迫成长方向/操作路径/特质逐条价值） ---------- */
.urgent-growth { margin-top: var(--s4); padding: var(--s3) var(--s4); background: #FBF3E4; border-radius: var(--radius); border: 1px solid #EDD9AE; }
.ug-item { padding: 8px 0; border-bottom: 1px dashed #E5C98E; }
.ug-item:last-child { border-bottom: 0; }
.ug-item b { font-size: var(--font-control); color: #6B4A0E; }
.ug-item p { margin: 4px 0 2px; font-size: var(--font-control); line-height: 1.7; color: #5A4A2E; }
.ug-evidence { font-family: var(--font-mono); font-size: var(--font-caption); color: #A08040; }
.gap-path { margin: 6px 0 0; font-family: var(--font-mono); font-size: var(--font-caption); color: var(--muted); background: var(--line-soft); border-radius: 4px; padding: 5px 10px; display: inline-block; }
.bt-trait { display: grid; grid-template-columns: 120px 1fr; gap: 10px; padding: 7px 0; border-bottom: 1px solid var(--line-soft); align-items: baseline; }
.bt-trait:last-child { border-bottom: 0; }
.bt-trait b { font-size: var(--font-control); }
.bt-trait p { margin: 0; font-size: var(--font-control); color: var(--muted); line-height: 1.65; }
@media (max-width: 640px) { .bt-trait { grid-template-columns: 1fr; } }

/* ---------- 简历库（多简历管理，2026-08-22） ---------- */
.rcards { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)); gap: var(--s4); }
.rcard {
  background: var(--card); border: 1px solid var(--line); border-radius: var(--radius-lg);
  padding: var(--s4) var(--s4) var(--s3); display: flex; flex-direction: column; gap: var(--s2);
  transition: border-color 140ms ease, transform 140ms ease;
}
.rcard:hover { border-color: var(--ink); transform: translateY(-2px); }
.rcard-head { display: flex; align-items: center; gap: var(--s2); }
.rcard-title {
  font-weight: 700; font-size: 16px; flex: 1; min-width: 0;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.rcard-sub { margin: 0; font-size: 13px; color: var(--muted); }
.rcard-meta { margin: 0; font-size: var(--font-caption); color: var(--muted); display: flex; align-items: center; gap: var(--s2); flex-wrap: wrap; }
.rcard-meta.mono { font-family: var(--font-mono); font-size: var(--font-caption); color: var(--faint); }
.rcard-actions {
  display: flex; align-items: center; gap: var(--s2); flex-wrap: wrap;
  border-top: 1px solid var(--line-soft); padding-top: var(--s3); margin-top: auto;
}
.rcard-actions .act-rename { margin-left: auto; }
.rc-empty { text-align: center; padding: var(--s12) var(--s6); display: flex; flex-direction: column; align-items: center; gap: var(--s2); }
.rc-empty h2 { margin: var(--s2) 0 0; }
.badge.dim { background: var(--line-soft); color: var(--muted); }

/* ---------- step2 必填缺失高亮（校验失败标红指路，2026-08-22 v2.2） ---------- */
.miss { outline: 2px solid var(--danger) !important; outline-offset: 2px; border-radius: 4px; background: #FFF7F7; animation: missFlash 0.6s ease 2; }
[contenteditable].miss, .miss[data-f] { padding: 1px 5px; }
select.miss, input.miss { border-color: var(--danger) !important; background: #FFF7F7; }
@keyframes missFlash { 50% { outline-color: rgba(196,61,61,.25); } }

/* ---------- step2 解析失败卡片（不再提供手动填写，2026-08-22 v2.3） ---------- */
#parse-fail { padding: var(--s4) 0; }
.pf-card {
  text-align: center; padding: var(--s12) var(--s6); border: 1px dashed var(--line);
  border-radius: var(--radius-lg); background: var(--card); max-width: 520px; margin: 0 auto;
  display: flex; flex-direction: column; align-items: center; gap: var(--s2);
}
.pf-card h3 { margin: var(--s2) 0 0; font-size: 18px; }
.pf-card p { margin: 0; font-size: var(--font-control); color: var(--muted); line-height: 1.7; }
.pf-card .hint { font-size: var(--font-caption); color: var(--faint); }
.pf-actions { display: flex; gap: 12px; margin-top: var(--s4); flex-wrap: wrap; justify-content: center; }

/* ---------- 工作台hero右侧入口（2026-08-22 v2.4；crumb样式已于v3.2随顶栏面包屑下放移除） ---------- */
.hero-side { display: flex; flex-direction: column; align-items: flex-end; gap: 10px; }

/* ---------- 分步生成进度清单（gen-steps/diag-steps，2026-08-22 v2.5） ---------- */
.gen-steps { list-style: none; margin: 10px 0 0; padding: 0; text-align: left; }
.gen-steps li { display: flex; align-items: center; gap: 10px; padding: 6px 0; font-size: var(--font-control); color: var(--faint); transition: color 200ms ease; }
.gen-steps li.doing { color: var(--text); font-weight: 600; }
.gen-steps li.done { color: var(--ok); }
.gen-steps .gs-ok { display: inline-grid; place-items: center; width: 16px; height: 16px; border-radius: 50%; background: var(--ok); color: #fff; font-size: var(--font-caption); font-weight: 700; flex: none; }
.gen-steps .gs-spin { animation: spin 1s linear infinite; flex: none; }
.gen-steps .gs-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--line); flex: none; margin: 0 4px; }
@keyframes spin { to { transform: rotate(360deg); } }

/* ---------- 还原稿职责分组+项目描述列表（2026-08-22 v2.6） ---------- */
.rp-resp .rp-grp { margin: 2px 0; }
.rp-resp .rp-gh { margin: 6px 0 2px; font-weight: 600; font-size: var(--font-control); color: var(--ink); }
.rp-resp .rp-grp ul { margin: 0 0 4px; padding-left: 18px; color: var(--muted); font-size: var(--font-control); }
.rp-resp .rp-grp ul li { margin: 2px 0; }
.rp-desc { margin: 4px 0; padding-left: 18px; color: var(--muted); font-size: var(--font-control); }
.rp-desc li { margin: 2px 0; }

/* ---------- step3职业经历职责分组标题（2026-08-22 v2.8） ---------- */
.t-gh { margin: 8px 0 2px; font-weight: 600; font-size: 13px; color: var(--ink); }

/* ============================================================
   v2.9 / 2026-08-23 — Intelligent Career Orchestrator 外壳与阶段3组件
   规范：design-system/DESIGN.md；UI稿：design-reference/figma-moji/
   仅覆盖外壳类（body布局/.topbar/.side/.nav-item/.brand等base.html用到的），
   模块1内容组件类不动。
   ============================================================ */
:root {
  --font-caption: 12px;
  --font-control: 13px;
  --font-reading: 14px;
  --font-card-title: 14px;
  --font-section: 16px;
  --font-dialog: 18px;
  --font-page: 24px;
  --control-height: 36px;
  --control-compact: 32px;
  --control-radius: 8px;
  --primary: #3625CD;          /* 主色：CTA/激活/品牌 */
  --primary-c: #5046E5;        /* 主色容器（按钮实底/激活导航） */
  --primary-tint: rgba(54, 37, 205, .1);
  --primary-soft: rgba(54, 37, 205, .05);
  --on-primary-c: #DBD8FF;
  --ok-green: #006C49; --ok-bg: rgba(108, 248, 187, .3);
  --bg2: #F8F9FA; --side-bg: #F3F4F5; --line2: #E1E3E4; --outline2: #C7C4D8;
  --text2: #191C1D; --muted2: #464555; --faint2: #686578;
  --err2: #BA1A1A; --err2-bg: #FEF2F2;
  --font-body2: "Inter", -apple-system, "PingFang SC", "Microsoft YaHei", "Noto Sans SC", sans-serif;
  --font-display2: "Hanken Grotesk", var(--font-body2);
  --shadow-card2: 0 4px 20px rgba(0, 0, 0, .05);
  --sidebar-w: 224px;
  --topbar-height: 56px;
}

/* ---------- 布局骨架：顶栏横贯 + 下属侧栏/内容 ---------- */
body { display: flex; flex-direction: column; background: var(--bg2); font-family: var(--font-body2); }
.shell { display: flex; flex: 1; min-width: 0; align-items: stretch; }
:focus-visible { outline-color: var(--primary-c); }

/* ---------- 顶栏：品牌、连接状态与头像 ---------- */
.topbar {
  position: sticky; top: 0; z-index: 30; height: var(--topbar-height); flex: none;
  display: flex; align-items: center; gap: var(--s4);
  background: var(--bg2); border-bottom: 1px solid var(--line2); padding: 0 24px;
}
.brand {
  display: flex; align-items: center; gap: 10px; padding: 0;
  color: var(--primary); text-decoration: none; font-family: var(--font-display2);
  font-weight: 700; font-size: 17px; letter-spacing: .2px;
}
.brand .sigil { width: 30px; height: 30px; border-radius: 8px; background: var(--primary-c); }
.brand small {
  font-family: var(--font-mono); font-size: 9px; font-weight: 600; color: var(--faint2);
  letter-spacing: 1.5px; display: block; margin-top: 0;
}
.topbar .spacer { flex: 1; }
.pill {
  display: inline-flex; align-items: center; gap: 8px; padding: 4px 12px;
  border-radius: 999px; font-size: var(--font-caption); text-decoration: none; flex: none;
  background: var(--err2-bg); color: var(--err2); border: 1px solid #F1C7C7;
}
.pill i { width: 8px; height: 8px; border-radius: 50%; background: currentColor; }
.pill.on { background: var(--ok-bg); color: var(--ok-green); border-color: #6CF8BB; }
.ammo {
  font-family: var(--font-body2); font-size: var(--font-caption); font-weight: 600;
  background: #fff; color: var(--muted2); border: 1px solid var(--line2);
  border-radius: 999px; padding: 5px 14px; display: inline-flex;
  align-items: baseline; gap: 7px; text-decoration: none;
}
.ammo b { font-family: var(--font-display2); font-size: var(--font-control); color: var(--text2); }
.ammo.low { border-color: #F1C7C7; color: var(--err2); }
.ammo.low b { color: var(--err2); }
.avatar { background: var(--side-bg); border: 1px solid var(--line2); color: var(--muted2); }
button.avatar { cursor: pointer; }
button.avatar:hover { color: var(--primary-c); border-color: var(--primary-c); }

/* ---------- 侧栏：新增简历、主导航与设置 ---------- */
.side {
  background: var(--side-bg); color: var(--muted2); width: var(--sidebar-w); flex: none;
  position: sticky; top: var(--topbar-height); height: calc(100dvh - var(--topbar-height)); overflow-y: auto;
  display: flex; flex-direction: column; padding: 12px;
}
.side-add {
  display: flex; align-items: center; justify-content: center; gap: 8px;
  margin: 0 0 16px; padding: 8px 12px; min-height: 36px; border-radius: 8px;
  background: var(--primary); color: #fff; text-decoration: none;
  font-weight: 500; font-size: var(--font-control); box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
}
.side-add:hover { background: var(--primary-c); }
.side nav { padding: 0; flex: 1; display: flex; flex-direction: column; gap: 4px; }
.nav-label { font-family: var(--font-mono); font-size: var(--font-caption); letter-spacing: 2px; color: var(--faint2); padding: 14px 10px 4px; }
.nav-div { border: 0; border-top: 1px solid var(--line2); margin: 14px 0 6px; }
.nav-item {
  display: flex; align-items: center; gap: 10px; padding: 8px 12px; min-height: 36px; margin: 0;
  border-radius: 8px; color: var(--muted2); text-decoration: none; font-size: var(--font-control);
  transition: background 140ms ease, color 140ms ease; position: relative;
}
.nav-item svg { width: 18px; height: 18px; flex: none; opacity: .85; }
.nav-item:hover { background: #E7E8E9; color: var(--text2); }
.nav-item.active { background: var(--primary-c); color: #fff; }
.nav-item.active::before { content: none; }
.nav-item .phase-no { font-family: var(--font-mono); font-size: var(--font-caption); font-weight: 600; color: var(--faint2); width: 20px; flex: none; }
.nav-item.active .phase-no { color: var(--on-primary-c); }
.nav-item .lock {
  margin-left: auto; font-size: var(--font-caption); color: var(--faint2); border: 1px solid var(--outline2);
  padding: 1px 7px; border-radius: 999px; font-family: var(--font-mono); background: #fff;
}
.nav-item.is-locked { opacity: .6; cursor: not-allowed; }
.side-foot {
  padding: 14px 6px 0; border-top: 1px solid var(--line2); font-size: var(--font-caption);
  color: var(--faint2); font-family: var(--font-mono); margin-top: 12px;
}
@media (max-width: 900px) {
  .shell { flex-direction: column; }
  .side { position: static; height: auto; width: auto; }
}

/* ---------- 模块2：四步进度头（吸顶于顶栏下方，滚动长表单时保持可见） ---------- */
.jobs { max-width: 1180px; }
.stepflow {
  list-style: none; display: flex; align-items: center; gap: 8px; margin: -8px 0 20px; padding: 14px 8px 12px;
  flex-wrap: wrap; position: sticky; top: var(--topbar-height); z-index: 20;
  background: var(--bg2); border-bottom: 1px solid var(--line2);
}
.stepflow li { display: flex; align-items: center; gap: 8px; font-size: var(--font-caption); font-weight: 700; letter-spacing: .05em; color: var(--faint2); }
.stepflow b {
  width: 24px; height: 24px; border-radius: 999px; display: grid; place-items: center;
  background: var(--line2); color: #fff; font-family: var(--font-display2); font-size: var(--font-caption); flex: none;
}
.stepflow .st-cur { color: var(--primary); }
.stepflow .st-cur b { background: var(--primary); }
.stepflow .st-done b { background: var(--primary-c); }
.stepflow .st-done svg { color: #fff; }
.stepflow .st-gap { width: 16px; height: 1px; background: var(--outline2); flex: none; }

/* ---------- 模块2：两栏布局（左=计划，右=轮次侧栏） ---------- */
.jobs-grid { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: 24px; align-items: start; }
@media (max-width: 1100px) { .jobs-grid { grid-template-columns: 1fr; } .jobs-side { position: static; } }
.jobs-side { position: sticky; top: 128px; }

/* ---------- 模块2：插件状态横幅（在线绿/离线红） ---------- */
.plug-banner { display: flex; align-items: center; gap: 12px; border-radius: 12px; padding: 16px; margin-bottom: 24px; }
.plug-banner .pb-icon { display: grid; place-items: center; flex: none; }
.plug-banner .pb-body { min-width: 0; }
.plug-banner .pb-title { margin: 0; font-size: var(--font-control); font-weight: 600; }
.plug-banner .pb-sub { margin: 2px 0 0; font-size: var(--font-caption); }
.pb-pill {
  margin-left: auto; display: inline-flex; align-items: center; gap: 8px; flex: none;
  padding: 4px 12px; border-radius: 999px; font-size: var(--font-caption); border: 1px solid transparent;
}
.pb-pill i { width: 8px; height: 8px; border-radius: 50%; background: currentColor; }
.plug-banner.is-on { background: rgba(108, 248, 187, .2); border: 1px solid #6CF8BB; color: var(--ok-green); }
.plug-banner.is-on .pb-sub { color: #005236; }
.plug-banner.is-on .pb-pill { background: var(--ok-bg); border-color: #6CF8BB; color: #00714D; }
.plug-banner.is-off { background: var(--err2-bg); border: 1px solid #F1C7C7; color: var(--err2); }
.plug-banner.is-off .pb-pill { background: #fff; border-color: #F1C7C7; color: var(--err2); cursor: pointer; }
.pb-open {
  border: 0; background: var(--err2); color: #fff; border-radius: 8px; padding: 8px 14px;
  font: inherit; font-size: 13px; cursor: pointer; flex: none;
}
.pb-open:hover { background: #991616; }
.plug-banner.is-on .pb-open { border: 1px solid #78DDB5; background: #fff; color: #006B49; }
.plug-banner.is-on .pb-open:hover { background: #E8FBF3; }
.plug-banner.is-outdated { border-color: #F2C66D; background: #FFF8E8; color: #805200; }
.plug-banner.is-outdated .pb-sub { color: #684812; }
.plug-banner.is-outdated .pb-pill { border-color: #F2C66D; background: #fff; color: #805200; }
.plug-banner.is-outdated .pb-open { border-color: #D99A23; color: #754A00; }

/* ---------- 模块2：白卡片与按钮（新规范） ---------- */
.jb-card { background: #fff; border-radius: 16px; box-shadow: var(--shadow-card2); padding: 32px; margin-bottom: 24px; }
.jb-card-head { display: flex; align-items: center; gap: 12px; padding-bottom: 16px; border-bottom: 1px solid var(--line2); }
.jb-card-ico {
  width: 32px; height: 32px; border-radius: 8px; background: var(--primary-tint);
  color: var(--primary); display: grid; place-items: center; flex: none;
}
.jb-card-head h2 { margin: 0; font-size: 20px; font-family: var(--font-display2); color: var(--text2); }
.jb-card-head p { margin: 2px 0 0; color: var(--faint2); font-size: var(--font-control); }
.jb-placeholder { padding: 48px 0; text-align: center; color: var(--muted2); }
.jb-placeholder p { margin: 0 0 6px; }
.jb-placeholder b { color: var(--text2); }
.jb-placeholder .sub { color: var(--faint2); font-size: 13px; }
.jb-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  background: var(--primary); color: #fff; border: 1.5px solid transparent; border-radius: 8px;
  padding: 10px 24px; font: inherit; font-weight: 500; font-size: var(--font-control); min-height: 42px;
  text-decoration: none; cursor: pointer; box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
  transition: background 140ms ease;
}
.jb-btn:hover { background: var(--primary-c); }
.jb-btn:disabled { opacity: .5; cursor: not-allowed; }
.jb-btn-outline { background: #fff; color: var(--text2); border-color: var(--outline2); box-shadow: none; }
.jb-btn-outline:hover { background: var(--side-bg); }
.jb-btn-sm { padding: 6px 16px; min-height: 34px; font-size: 13px; flex: none; }

/* ---------- 模块2：安装插件弹窗（768px，Figma 121:2677） ---------- */
.jb-modal {
  background: #fff; border-radius: 16px; padding: 0; max-width: 768px; width: calc(100% - 32px);
  max-height: calc(100vh - 80px); overflow-y: auto; box-shadow: 0 24px 64px rgba(0, 0, 0, .25);
}
.im-head { background: #EEF2FF; padding: 32px 40px; display: flex; gap: 16px; align-items: flex-start; }
.im-ico { width: 56px; height: 56px; border-radius: 16px; background: var(--primary-c); color: #fff; display: grid; place-items: center; flex: none; }
.im-head h2 { margin: 0; font-size: 20px; font-family: var(--font-display2); color: var(--text2); }
.im-head p { margin: 8px 0 0; font-size: var(--font-caption); color: var(--muted2); line-height: 1.7; }
.im-body { padding: 32px 40px; display: grid; gap: 36px; }
.im-body h3 { margin: 0; padding-left: 12px; border-left: 4px solid var(--primary-c); font-size: 16px; color: var(--text2); }
.im-feats { display: flex; gap: 24px; justify-content: center; margin-top: 20px; }
.im-feats > div { width: 212px; max-width: 30%; text-align: center; display: flex; flex-direction: column; align-items: center; gap: 7px; }
.feat-ico { width: 48px; height: 48px; border-radius: 12px; display: grid; place-items: center; }
.if-blue { background: #EEF2FF; color: var(--primary-c); }
.if-green { background: #F0FDF4; color: #16A34A; }
.if-orange { background: #FFF7ED; color: #F97316; }
.im-feats b { font-size: var(--font-control); color: var(--text2); }
.im-feats p { margin: 0; font-size: var(--font-caption); color: var(--faint2); line-height: 1.6; }
.im-connect-first { padding: 18px; border: 1px solid #CFCBF8; border-radius: 12px; background: #F7F6FF; }
.im-connect-heading { display: flex; align-items: flex-start; }
.im-connect-heading h3 { padding: 0; border: 0; }
.im-connect-heading p { margin: 5px 0 0; color: var(--muted2); font-size: 12px; line-height: 1.65; }
.im-connect-actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin-top: 14px; }
.im-connect-action-card { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 14px; min-width: 0; padding: 11px 12px; border: 1px solid #D9D7E8; border-radius: 10px; background: #fff; }
.im-connect-action-card > div { display: grid; min-width: 0; gap: 2px; }
.im-step-title { display: flex; align-items: center; gap: 8px; min-height: 24px; color: var(--text2); font-size: 12px; font-weight: 700; }
.im-step-title > b { display: grid; width: 22px; height: 22px; flex: none; place-items: center; border-radius: 50%; background: var(--primary-c); color: #fff; font-size: 10px; }
.im-connect-action-card p { margin: 1px 0 0 30px; color: var(--faint2); font-size: 9px; line-height: 1.45; }
.im-connect-action-card code { margin-left: 30px; overflow: hidden; color: var(--primary); font: 600 10px/1.45 var(--font-mono); text-overflow: ellipsis; white-space: nowrap; }
.im-connect-action-card .jb-btn { min-width: 84px; }
.im-connect-visuals { display: grid; grid-template-columns: minmax(0, .8fr) minmax(300px, 1.2fr); gap: 14px; margin-top: 14px; }
.im-guide-shot { min-width: 0; margin: 0; }
.im-guide-shot figcaption { margin-bottom: 8px; }
.im-browser-shot { position: relative; min-height: 238px; overflow: hidden; border-radius: 10px; background: #AEB7BC; }
.im-browser-toolbar { display: flex; align-items: center; justify-content: flex-end; gap: 12px; height: 72px; padding: 0 14px; background: #455A64; color: #F3F5F6; }
.im-terminal-icon { display: grid; width: 24px; height: 24px; place-items: center; border-radius: 5px; background: #071B25; color: #21D9C3; font: 700 11px var(--font-mono); }
.im-browser-target { display: grid; width: 44px; height: 44px; place-items: center; border: 4px solid #F12632; }
.im-mini-brand { display: grid; width: 24px; height: 24px; place-items: center; border-radius: 6px; background: var(--primary-c); }
.im-mini-brand > i { width: 9px; height: 9px; border: 2px solid #fff; border-radius: 50%; box-shadow: 0 0 0 2px rgba(255,255,255,.35); }
.im-puzzle-icon { color: #F3F5F6; }
.im-browser-divider { width: 2px; height: 32px; background: rgba(255,255,255,.22); }
.im-browser-avatar { width: 28px; height: 34px; background: linear-gradient(90deg, #9C9290 50%, #796E6D 50%); }
.im-browser-more { color: #F3F5F6; }
.im-shot-pointer { position: absolute; color: #ED1C24; pointer-events: none; }
.im-shot-pointer svg { overflow: visible; }
.im-shot-pointer path { fill: none; stroke: currentColor; stroke-width: 6; stroke-linecap: round; stroke-linejoin: round; }
.im-shot-pointer strong { color: #fff; font-size: 17px; line-height: 1; text-shadow: -1px -1px 0 #111, 1px -1px 0 #111, -1px 1px 0 #111, 1px 1px 0 #111; }
.im-shot-pointer-icon { inset: 76px 10px auto 45px; display: flex; flex-direction: column; align-items: center; }
.im-shot-pointer-icon svg { width: 72px; height: 76px; }
.im-plugin-example { position: relative; min-height: 238px; padding: 12px; border: 1px solid #D9D7E8; border-radius: 10px; background: #fff; box-shadow: 0 8px 20px rgba(31, 27, 73, .08); }
.im-plugin-example-head { display: flex; justify-content: space-between; gap: 8px; margin-bottom: 10px; }
.im-plugin-example-head > span { display: flex; align-items: center; gap: 8px; color: var(--text2); font-size: 12px; font-weight: 700; }
.im-plugin-example-head .im-mini-brand { width: 24px; height: 24px; }
.im-plugin-example-head em { display: inline-flex; align-items: center; gap: 5px; padding: 4px 8px; border-radius: 999px; background: #E7F8F1; color: #00714D; font-size: 9px; font-style: normal; }
.im-plugin-example-head em i { width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
.im-plugin-state { margin: 0 0 9px; color: var(--faint2); font-size: 9px; }
.im-plugin-example label { display: block; margin-bottom: 5px; color: var(--muted2); font-size: 10px; }
.im-plugin-field, .im-plugin-input { display: flex; align-items: center; min-height: 30px; padding: 5px 8px; border: 1px solid #CBC8E5; border-radius: 7px; color: var(--text2); font-size: 9px; }
.im-plugin-field.dim { margin-bottom: 9px; color: var(--faint2); }
.im-plugin-input { position: relative; border: 2px solid var(--primary-c); box-shadow: 0 0 0 3px #fff, 0 0 0 5px #F12632; }
.im-plugin-input span { flex: 1; color: var(--faint2); }
.im-plugin-example > button { width: 100%; margin-top: 7px; padding: 7px; border: 0; border-radius: 7px; background: var(--primary-c); color: #fff; font: 600 10px var(--font-body2); opacity: 1; }
.im-plugin-note { margin: 7px 0 0; color: var(--faint2); font-size: 8px; }
.im-shot-pointer-field { top: 115px; right: 62px; display: flex; align-items: flex-start; gap: 3px; }
.im-shot-pointer-field strong { color: #F12632; font-size: 14px; text-shadow: 0 1px 0 #fff; }
.im-shot-pointer-field svg { width: 62px; height: 70px; }
.im-steps { list-style: none; margin: 16px 0 0; padding: 0; display: flex; flex-direction: column; gap: 12px; }
.im-steps li {
  display: flex; align-items: center; gap: 16px; background: #F9FAFB;
  border: 1px solid #F3F4F6; border-radius: 12px; padding: 12px 16px;
  font-size: var(--font-control); color: var(--text2);
}
.im-steps li > b {
  width: 32px; height: 32px; border-radius: 999px; background: var(--primary-c); color: #fff;
  display: grid; place-items: center; flex: none; font-family: var(--font-display2); font-size: var(--font-control);
}
.im-steps li > span { flex: 1; }
.im-steps code { background: #E5E7EB; border-radius: 4px; padding: 1px 8px; font-family: var(--font-mono); font-size: var(--font-caption); color: #374151; }
.im-fail { margin: 0 40px 24px; background: var(--err2-bg); border: 1px solid #F1C7C7; border-radius: 8px; padding: 12px 16px; color: var(--err2); font-size: var(--font-control); }
.im-fail b { display: block; margin-bottom: 4px; }
.im-fail ul { margin: 0; padding-left: 18px; }
.im-foot {
  display: flex; justify-content: space-between; align-items: center; gap: 16px; flex-wrap: wrap;
  background: #F9FAFB; border-top: 1px solid #F3F4F6; border-radius: 0 0 16px 16px; padding: 16px 40px;
}
#install-mask .jb-modal { display: flex; flex-direction: column; overflow: hidden; }
#install-mask .im-head, #install-mask .im-foot, #install-mask .im-fail { flex: none; }
#install-mask .im-body { flex: 1; min-height: 0; overflow-y: auto; overscroll-behavior: contain; }
#install-mask .im-foot { position: relative; z-index: 2; box-shadow: 0 -12px 28px rgba(31, 27, 73, .09); }
.im-later { border: 0; background: none; color: var(--faint2); font: inherit; font-size: var(--font-control); cursor: pointer; }
.im-later:hover { color: var(--muted2); }
.im-actions { display: flex; gap: 12px; align-items: center; }

/* ---------- 模块2：检索计划表单（任务3.2，Figma网格100px标签列） ---------- */
.jb-form { display: grid; grid-template-columns: 110px minmax(0, 1fr); gap: 18px 32px; padding: 24px 0 8px; }
@media (max-width: 640px) { .jb-form { grid-template-columns: 1fr; } .jf-label { padding-top: 0; } }
.jf-label { font-size: var(--font-control); font-weight: 600; color: var(--text2); padding-top: 10px; }
.jf-label span { display: block; font-size: var(--font-caption); color: var(--faint2); font-weight: 400; margin-top: 2px; }
.jf-ctrl input[type=text], .jf-ctrl select {
  width: 100%; background: var(--bg2); border: 1px solid var(--outline2); border-radius: 8px;
  padding: 7px 10px; font: inherit; font-size: var(--font-control); line-height: 1.4; color: var(--text2); min-height: var(--control-height);
}
.jf-ctrl select { cursor: pointer; }
.jf-ctrl input:focus, .jf-ctrl select:focus {
  outline: none; border-color: var(--primary-c); background: #fff;
  box-shadow: 0 0 0 2px rgba(80, 70, 229, .18);
}
.jf-hint { margin: 6px 0 0; font-size: var(--font-caption); color: var(--faint2); display: flex; gap: 5px; align-items: center; }
.jf-hint svg { flex: none; }
.jf-cityinput { display: flex; gap: 8px; }
.jf-cityinput input { flex: 1; }
.jf-add { min-height: 44px; padding: 8px 18px; }
.jf-chips { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.jf-chips:empty { margin-top: 0; }
.jf-chip { display: inline-flex; align-items: center; gap: 6px; background: var(--primary-tint); color: var(--primary); border-radius: 6px; padding: 6px 12px; font-size: var(--font-control); }
.jf-chip button { border: 0; background: none; color: var(--primary); cursor: pointer; font-size: 15px; padding: 0; line-height: 1; }
.jf-chip button:hover { color: var(--err2); }
.jf-salary { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.jf-salary input[type=number] { width: 120px; flex: none; }
.app-select-trigger { width: 100%; min-width: 0; min-height: 42px; padding: 0 12px; display: flex; align-items: center; justify-content: space-between; gap: 14px; border: 1px solid var(--outline2); border-radius: 9px; background: #fff; color: var(--text2); font: inherit; cursor: pointer; }
.app-select-trigger:hover, .app-select-trigger[aria-expanded=true] { border-color: var(--primary); background: var(--primary-soft); }
.app-select-trigger > span:last-child { color: var(--muted2); }
.app-select-panel { position: fixed; z-index: 10030; display: flex; flex-direction: column; padding: 6px; box-sizing: border-box; border: 1px solid var(--line2); border-radius: 12px; background: #fff; box-shadow: 0 12px 32px #231c5e26; }
.app-select-panel[hidden], .app-select-option[hidden], .app-select-empty[hidden] { display: none; }
.app-select-panel input { box-sizing: border-box; width: 100%; min-height: 36px; flex-shrink: 0; margin: 0 0 6px; padding: 8px 10px; border: 1px solid var(--line2); border-radius: 7px; background: var(--side-bg); font: inherit; font-size: 12px; }
.app-select-list { min-height: 0; overflow-y: auto; overscroll-behavior: contain; }
.app-select-option { display: flex; align-items: center; justify-content: space-between; width: 100%; min-height: 36px; padding: 8px 10px; border: 0; border-radius: 6px; background: #fff; color: var(--text2); font: inherit; font-size: 13px; cursor: pointer; text-align: left; }
.app-select-option > span:last-child { visibility: hidden; }
.app-select-option:hover, .app-select-option:focus-visible { background: var(--side-bg); }
.app-select-option[aria-selected=true] { color: var(--primary); background: var(--primary-soft); font-weight: 600; }
.app-select-option[aria-selected=true] > span:last-child { visibility: visible; }
.app-select-empty { padding: 16px 8px; color: var(--muted2); font-size: 12px; }
.app-select-native { display: none !important; }
.app-select-trigger[hidden] { display: none; }
.app-select-trigger:disabled { background: var(--side-bg); color: var(--faint2); cursor: not-allowed; opacity: .65; }
.app-select-trigger > span:first-child { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.app-select-option:disabled { color: var(--faint2); cursor: not-allowed; }
.app-select-trigger:focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; }
.jf-salary > .app-select-trigger { width: 132px; flex: none; }
.jf-region-selects label > .app-select-trigger { height: 42px; }
.jf-region-selects .app-select-option { height: auto; }
.app-select-panel input { flex: 0 0 auto; }
.jf-salary select { width: 120px; flex: none; min-height: 38px; padding: 0 10px; border: 1px solid var(--outline2); border-radius: 8px; background: #fff; color: var(--text2); font: inherit; cursor: pointer; }
.jf-dash { color: var(--faint2); }
.jf-unit { color: var(--muted2); font-size: 13px; }
.jf-inline { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }
.jf-inline input[type=number] { width: 130px; flex: none; }
.jf-inline .jf-hint { margin: 0; }
input[type=number] { -moz-appearance: textfield; appearance: textfield; }
input[type=number]::-webkit-outer-spin-button, input[type=number]::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.jf-plat {
  display: inline-flex; align-items: center; gap: 12px; border: 2px solid var(--primary);
  background: var(--primary-soft); border-radius: 8px; padding: 11px 15px; min-width: 200px; position: relative;
}
.jf-plat .pi { width: 40px; height: 40px; border-radius: 6px; display: grid; place-items: center; font-weight: 700; font-size: 15px; flex: none; }
.pi-boss { background: rgba(186, 26, 26, .1); color: #BA1A1A; }
.jf-plat b { font-size: var(--font-control); color: var(--text2); display: block; }
.jf-plat small { display: block; font-size: var(--font-caption); color: var(--ok-green); margin-top: 1px; }
.jf-plat .ck { position: absolute; right: 12px; top: 50%; transform: translateY(-50%); color: var(--primary); }
.jb-card-foot {
  display: flex; justify-content: space-between; align-items: center; gap: 16px;
  border-top: 1px solid var(--line2); padding-top: 20px; margin-top: 8px; flex-wrap: wrap;
}
.jf-note { margin: 0; font-size: var(--font-caption); color: var(--faint2); display: flex; gap: 6px; align-items: center; }
.jf-actions { display: flex; gap: 16px; }
.jf-error { margin: 12px 0 0; background: var(--err2-bg); border: 1px solid #F1C7C7; color: var(--err2); border-radius: 8px; padding: 10px 14px; font-size: var(--font-control); }
.jf-error.ok { background: #E4F9F0; border-color: #6CF8BB; color: var(--ok-green); }
.jf-multiselect { position: relative; min-width: 0; }
.jf-region-selects { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)) auto; gap: 10px; align-items: end; }
.jf-region-selects label { display: grid; gap: 6px; margin: 0; color: var(--muted2); font-size: var(--font-caption); }
.jf-region-selects select { width: 100%; min-width: 0; height: 42px; border: 1px solid var(--outline2); border-radius: 8px; padding: 0 10px; background: white; color: var(--text2); font: inherit; cursor: pointer; }
.jf-region-selects select:disabled { background: var(--side-bg); cursor: not-allowed; opacity: .65; }
.jf-region-selects button { height: 42px; white-space: nowrap; }
.jf-label-heading { display: flex; align-items: center; gap: 6px; }
.jf-required { color: var(--err2, #c53030); font-weight: 600; }
.jf-help { position: relative; font-weight: 400; }
.jf-help summary { display: flex; align-items: center; justify-content: center; width: 18px; height: 18px; border: 1px solid var(--outline2); border-radius: 50%; color: var(--muted2); font-size: 12px; cursor: pointer; list-style: none; }
.jf-help summary::-webkit-details-marker { display: none; }
.jf-help summary:hover, .jf-help[open] summary { color: var(--primary); border-color: var(--primary); }
.jf-help-panel { position: absolute; z-index: 5; top: 26px; left: -72px; width: min(280px, 65vw); padding: 12px 14px; border: 1px solid var(--line2); border-radius: 10px; background: #fff; box-shadow: 0 6px 24px #0002; font-size: var(--font-caption); color: var(--muted2); line-height: 1.7; }
@media(max-width:600px) { .jf-region-selects { grid-template-columns: 1fr; } }
.jf-multi-trigger {
  width: 100%; min-height: 42px; display: grid; grid-template-columns: 32px minmax(0, 1fr) auto 16px;
  align-items: center; gap: 10px; padding: 7px 12px 7px 8px; border: 1px solid var(--outline2);
  border-radius: 9px; background: #fff; color: var(--text2);
  font: inherit; cursor: pointer; text-align: left; transition: border-color 140ms ease, box-shadow 140ms ease, background 140ms ease;
}
.jf-multi-trigger:hover { border-color: var(--primary); background: var(--primary-soft); }
.jf-multi-trigger:focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; }
.jf-multiselect:has(.jf-multi-panel:not([hidden])) .jf-multi-trigger { border-color: var(--primary); box-shadow: 0 0 0 3px rgba(79, 70, 229, .10); }
.jf-multi-icon { width: 32px; height: 32px; display: grid; place-items: center; border-radius: 8px; background: var(--primary-tint); color: var(--primary); }
.jf-multi-value { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 13px; font-weight: 600; }
.jf-multi-count { border-radius: 999px; padding: 3px 8px; background: var(--side-bg); color: var(--faint2); font-size: 11px; white-space: nowrap; }
.jf-multiselect.has-selection .jf-multi-count { background: var(--primary-tint); color: var(--primary); }
.jf-multi-chevron { color: var(--faint2); transition: transform 140ms ease; }
.jf-multiselect:has(.jf-multi-panel:not([hidden])) .jf-multi-chevron { transform: rotate(180deg); }
.jf-multi-panel { position: fixed; z-index: 10020; margin: 0; display: flex; flex-direction: column; box-sizing: border-box; overflow: hidden; border: 1px solid var(--line2); border-radius: 12px; background: #fff; box-shadow: 0 12px 32px #231c5e26; }
.jf-multi-panel[hidden] { display: none; }
.jf-multi-panel-head, .jf-multi-panel-foot { flex-shrink: 0; }
.jf-multi-panel-head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; padding: 10px 12px; background: #F8F7FF; border-bottom: 1px solid #E9E7FA; }
.jf-multi-panel-head b { color: var(--text2); font-size: 12px; }
.jf-multi-panel-head span { color: var(--faint2); font-size: 11px; }
.jf-multi-options { display: grid; grid-template-columns: minmax(0, 1fr); gap: 4px; padding: 8px; min-height: 0; overflow-y: auto; overscroll-behavior: contain; }
.jf-multi-options label { position: relative; min-width: 0; cursor: pointer; }
.jf-multi-options input { position: absolute; opacity: 0; pointer-events: none; }
.jf-multi-options label > span { display: flex; align-items: center; gap: 8px; min-height: 34px; padding: 6px 8px; border-radius: 7px; color: var(--muted2); font-size: 12px; line-height: 1.35; transition: background 120ms ease, color 120ms ease; }
.jf-multi-options i { width: 18px; height: 18px; flex: none; display: grid; place-items: center; border: 1px solid #C9C8D8; border-radius: 5px; color: transparent; background: #fff; transition: background 120ms ease, border-color 120ms ease, color 120ms ease; }
.jf-multi-options label:hover > span { background: #F7F6FC; color: var(--text2); }
.jf-multi-options input:checked + span { background: var(--primary-soft); color: var(--primary); font-weight: 600; }
.jf-multi-options input:checked + span i { border-color: var(--primary); background: var(--primary); color: #fff; }
.jf-multi-options input:focus-visible + span { outline: 2px solid var(--primary); outline-offset: 1px; }
.jf-multi-panel-foot { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 8px 12px; border-top: 1px solid var(--line2); background: #FCFCFE; }
.jf-multi-panel-foot > span { color: var(--faint2); font-size: 11px; }
.jf-multi-panel-foot button { border: 0; border-radius: 6px; background: var(--primary); color: #fff; padding: 5px 12px; font: 600 11px var(--font-body2); cursor: pointer; }
.jf-multi-panel-foot button:hover { background: var(--primary-c); }
.jf-strength { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; margin: 0; padding: 0; border: 0; min-width: 0; }
.jf-strength label { position: relative; min-width: 0; cursor: pointer; }
.jf-strength input { position: absolute; opacity: 0; pointer-events: none; }
.jf-strength span { display: grid; gap: 3px; height: 100%; padding: 10px 12px; border: 1px solid var(--outline2); border-radius: 10px; background: #fff; transition: border-color 140ms ease, background 140ms ease; }
.jf-strength b { color: var(--text2); font-size: 13px; }
.jf-strength small { color: var(--faint2); font-size: 11px; line-height: 1.5; }
.jf-strength input:checked + span { border-color: var(--primary); background: var(--primary-soft); box-shadow: inset 0 0 0 1px var(--primary); }
.jf-strength input:focus-visible + span { outline: 2px solid var(--primary); outline-offset: 2px; }

/* ---------- 模块2：轮次侧栏卡（查看+删除）与启动成功态 ---------- */
.rounds-card { padding: 24px; }
.rounds { list-style: none; margin: 0; padding: 14px 0 0; display: flex; flex-direction: column; gap: 10px; }
.rounds-empty { margin: 14px 0 0; font-size: 13px; color: var(--faint2); }
.r-item { border: 1px solid var(--line2); border-radius: 10px; padding: 0; background: #fff; overflow: hidden; }
.r-head { display: flex; align-items: center; gap: 8px; padding: 10px 12px; cursor: pointer; }
.r-head:hover { background: var(--side-bg); }
.r-item .r-name { font-weight: 600; color: var(--text2); font-size: var(--font-control); flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.r-del {
  border: 1px solid var(--outline2); background: #fff; color: var(--faint2); border-radius: 6px;
  font: inherit; font-size: var(--font-caption); padding: 3px 9px; cursor: pointer; flex: none;
}
.r-del:hover { border-color: var(--err2); color: var(--err2); }
.r-del.confirm { background: var(--err2); border-color: var(--err2); color: #fff; }
.r-del:disabled { opacity: .5; cursor: wait; }
.r-detail { border-top: 1px solid var(--line2); background: var(--bg2); padding: 12px; }
.r-detail dl { margin: 0; display: grid; grid-template-columns: auto 1fr; gap: 6px 12px; }
.r-detail dt { font-size: var(--font-caption); color: var(--faint2); }
.r-detail dd { margin: 0; font-size: var(--font-caption); color: var(--text2); word-break: break-all; }
.rbadge { font-size: var(--font-caption); border-radius: 999px; padding: 2px 10px; background: var(--side-bg); color: var(--muted2); flex: none; }
.rbadge.searching { background: #EEF2FF; color: var(--primary-c); }
.rbadge.draft { background: var(--side-bg); color: var(--faint2); }
.rbadge.completed { background: #E4F9F0; color: var(--ok-green); }
.started { text-align: center; padding: 32px 0 16px; }
.started h3 { font-size: 18px; margin: 0 0 10px; color: var(--text2); }
.started .s-meta { color: var(--muted2); font-size: var(--font-control); margin: 0; }
.started .s-note { color: var(--faint2); font-size: 13px; margin: 12px 0 20px; line-height: 1.8; }

/* ============================================================
   v3.1 / 2026-08-23 — 模块1迁移到 Intelligent Career Orchestrator
   策略：旧组件高度token化，重映射旧token即可全局换肤；
   再对少量硬编码暖色/表面做定向覆盖。v2.9外壳与新页面不受影响。
   ============================================================ */
:root {
  --ink: #191C1D;         /* 深藏青→近黑（中性强调） */
  --ink-2: #2E3132;
  --ink-3: #0F1112;
  --paper: #F8F9FA;
  --text: #191C1D; --muted: #464555; --faint: #686578;
  --line: #E1E3E4; --line-soft: #E9EBEC;
  --signal: #5046E5;      /* 信号橙→主紫（CTA/激活/进行） */
  --signal-ink: #3625CD;
  --ok: #00714D;          /* 新规范secondary绿 */
  --warn: #92400E;        /* 琥珀文字（警示/成长中） */
  --danger: #BA1A1A;
  --font-body: "Inter", -apple-system, "PingFang SC", "Microsoft YaHei", "Noto Sans SC", sans-serif;
  --font-display: "Hanken Grotesk", var(--font-body);
  --radius-lg: 16px;      /* 卡片rounded-xl */
}

/* ---------- 表面与卡片：白卡+细边+柔和阴影 ---------- */
.card, .stat, .rcard, .pf-card { border-color: #F3F4F6; box-shadow: 0 4px 20px rgba(0, 0, 0, .05); }
h1.page-title, .card h2, .card h3 { font-family: var(--font-display); letter-spacing: .1px; }
.eyebrow { font-family: var(--font-body); font-weight: 600; }

/* ---------- 按钮/输入 ---------- */
.btn { font-weight: 500; }
.btn-primary { box-shadow: 0 1px 2px rgba(0, 0, 0, .05); }
.btn-outline:hover { border-color: var(--signal); color: var(--signal-ink); }
input[type=text], input[type=number], input[type=email], select, textarea { border-width: 1px; border-color: #C7C4D8; }
input:focus, select:focus, textarea:focus {
  border-color: var(--signal); box-shadow: 0 0 0 3px rgba(80, 70, 229, .15);
}

/* ---------- 横幅/徽章（新规范状态色） ---------- */
.banner-error { background: #FEF2F2; color: #93000A; border-color: #F1C7C7; }
.banner-info { background: #D8E2FF; color: #004395; border-color: #B9CCF5; }
.banner-success { background: #E4F9F0; color: #005236; border-color: #A8EFD2; }
.badge.ok, .conf-high, .rel-high { background: #E4F9F0; color: #00714D; }
.badge.warn, .conf-low { background: #FFF7ED; color: #92400E; }
.conf-mid, .rel-mid { background: #E7E8E9; color: #464555; }
.badge.dim { background: #E7E8E9; color: var(--faint2); }

/* ---------- 上传区/弹窗 ---------- */
.dropzone { border-color: #C7C4D8; background: linear-gradient(180deg, #FFFFFF, #F8F9FA); }
.dropzone:hover, .dropzone.drag { border-color: var(--signal); background: rgba(54, 37, 205, .04); }
.modal-mask { background: rgba(0, 0, 0, .43); }

/* ---------- 工作台/简历库卡片交互（悬停紫色+抬升阴影） ---------- */
.phase-card:hover, .rcard:hover { border-color: var(--signal); box-shadow: 0 8px 30px rgba(0, 0, 0, .08); }
.phase-card .st-tag { font-family: var(--font-body); font-weight: 600; letter-spacing: .5px; }

/* ---------- step3 档案头与诊断（品牌紫强调） ---------- */
.avatar-photo { border-color: var(--line); background: #E7E8E9; }
.avatar-fallback { background: var(--signal); }
.comp-tag, .mp-target { background: var(--signal); }
.t-insight { color: var(--signal-ink); background: rgba(54, 37, 205, .06); border-left-color: var(--signal); }
.bt-summary, .behavior-value p, .quote-card { border-left-color: var(--signal); }
.behavior-value i { color: var(--signal); }
.value-statement::before { color: var(--signal); }
.mod-link:hover { background: rgba(54, 37, 205, .06); }
.pri-cont { background: #EEF2FF; color: #3625CD; }
.pri-high { background: #FFF7ED; color: #9A3412; }
.mp-grow { border-left-color: var(--signal); }
.mp-grow i { color: var(--signal-ink); }
.z-grow i { color: var(--signal-ink); }
.chip-grow { border-color: #F5D0A9; background: #FFF7ED; color: #92400E; }

/* 紧迫成长方向：新琥珀（警示优先级） */
.urgent-growth { background: #FFF7ED; border-color: #FDDCAB; }
.ug-item { border-bottom-color: #F5D0A9; }
.ug-item b { color: #9A3412; }
.ug-item p { color: #7C4A1E; }
.ug-evidence { color: #A16207; }

/* 词云端：中性渐变 */
.cloud-box { background: linear-gradient(180deg, #FFFFFF, #F7F8F9); border-color: #E1E3E4; }

/* ============================================================
   v3.2 / 2026-08-23 — 页头层级重构（设计审查落地）
   顶栏面包屑下放内容区；模块1步骤条统一为stepflow视觉（紧凑非吸顶）；
   step2文件名去徽章化；简历库卡操作分层。
   ============================================================ */

/* 内容区面包屑（层级：面包屑→H1→副题→步骤条，各说一件事） */
.page-crumb { font-size: var(--font-caption); color: var(--faint); margin: 0 0 10px; }
.page-crumb a { color: inherit; text-decoration: none; border-bottom: 1px dashed var(--faint); padding-bottom: 1px; transition: color 120ms ease, border-color 120ms ease; }
.page-crumb a:hover { color: var(--signal-ink); border-bottom-color: var(--signal); }

/* stepflow紧凑版：模块1流程页用（非吸顶，无背景条） */
.stepflow.mini { position: static; background: none; border-bottom: 0; padding: 0; margin: 0 0 24px; }
.stepflow .st-done { color: var(--muted); }
.stepflow .st-done b::after { content: none; }

/* step2 简历文件名：数据用mono小字（不再占用置信度徽章） */
.file-name { font-family: var(--font-mono); font-size: var(--font-caption); color: var(--faint); word-break: break-all; }

/* 简历库卡片次级操作：文字链接（主按钮保持btn层级） */
.r-link {
  border: 0; background: none; color: var(--faint); font: inherit; font-size: 13px;
  cursor: pointer; padding: 4px 6px; border-radius: 6px; transition: color 140ms ease, background 140ms ease;
}
.r-link:hover { color: var(--text); background: var(--line-soft); }
.r-link.danger:hover { color: var(--danger); background: #FEF2F2; }

/* ============================================================
   v3.3 / 2026-08-23 — 设计稿确认落地（mockups/ 已确认）
   ① 画布统一1120px ② 圆角三档：容器16/内嵌10/胶囊999
   ③ 字号整数阶梯 ④ 按钮两档40/32 ⑤ 密度压缩：减少纵向滚动，
   关键页争取一屏呈现（工作台/上传页≤720px视口可容纳）。
   ============================================================ */
:root { --canvas: 1120px; --gap-sec2: 20px; }

/* ---------- 画布与页头节奏 ---------- */
.content { max-width: var(--canvas); padding: 24px 32px 48px; }
.jobs { max-width: none; }
.page-sub { margin-bottom: 16px; font-size: var(--font-control); }
.page-crumb { margin-bottom: 8px; }
.stepflow.mini { margin-bottom: 20px; }
.stepflow { margin: -4px 0 16px; padding: 10px 8px 8px; }

/* ---------- 卡片与区块间距（密度压缩） ---------- */
.card { padding: 18px 20px; margin-bottom: var(--gap-sec2); }
.jb-card { padding: 18px 20px; margin-bottom: var(--gap-sec2); }
.jb-form { gap: 14px 28px; padding: 18px 0 4px; }
.jf-label { padding-top: 9px; }
.dossier-grid, .skill-mosaic { gap: var(--gap-sec2); }
.dcol > .card { margin-bottom: var(--gap-sec2); }
.actions { margin-top: 20px; }
.grid-2 { gap: 16px 20px; }
label { margin-bottom: 6px; }
.chips { margin-top: 8px; }

/* ---------- 字号整数阶梯 ---------- */
.card h2, .card h3 { font-size: var(--font-section); }
.hint { font-size: 13px; }
.banner { font-size: 13px; }
.btn { font-size: var(--font-control); min-height: 40px; padding: 0 20px; }
.btn-sm { min-height: 32px; padding: 0 14px; font-size: 13px; }
.jb-btn { min-height: 40px; padding: 9px 22px; font-size: var(--font-control); }
.jb-btn-sm { min-height: 32px; padding: 6px 16px; font-size: 13px; }
input[type=text], input[type=number], input[type=email], select, textarea { font-size: var(--font-control); }

/* ---------- 圆角三档制：内嵌10 / 胶囊999 ---------- */
.btn, .jb-btn { border-radius: 10px; }
input[type=text], input[type=number], input[type=email], select, textarea { border-radius: 10px; }
.banner { border-radius: 10px; }
.jf-chip, .summary-block .row span { border-radius: 999px; }
.t-insight, .action-item, .gap-item, .mp-row, .urgent-growth, .item-card, .im-steps li, .feat-ico, .jf-plat, .jb-card-ico { border-radius: 10px; }
.jf-plat { border-width: 2px; }
.im-steps li { border-radius: 10px; }
.dropzone, .pf-card { border-radius: 16px; }
.progress, .dim-bar { border-radius: 999px; }

/* ---------- 工作台：一屏化 ---------- */
.hero { margin-bottom: 20px; }
.stat-row { gap: var(--gap-sec2); margin-bottom: var(--gap-sec2); }
.stat { padding: 16px 20px; }
.stat .v { font-size: 24px; }
.pipeline { gap: 14px; }
.phase-card { padding: 14px; }
.phase-card .no { font-size: 20px; }
.next-slim { display: flex; align-items: center; gap: 16px; padding: 16px 22px; flex-wrap: wrap; }
.next-slim p { flex: 1; min-width: 240px; margin: 0; color: var(--muted); font-size: var(--font-control); }

/* ---------- step2 文件卡：紧凑单行 ---------- */
.file-row { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.file-ico { width: 40px; height: 40px; border-radius: 10px; background: var(--primary-tint); color: var(--primary); display: grid; place-items: center; flex: none; }
.file-info { min-width: 0; flex: 1; }
.file-title { font-size: var(--font-card-title); font-weight: 600; }

/* ---------- step3：报告页密度 ---------- */
.t-node { grid-template-columns: 92px 1fr; gap: 12px; padding-bottom: 12px; }
.t-node:not(:last-child)::before { left: 98px; }
.dim-row { padding: 3px 0; }
.comp-tags { margin: 10px 0; gap: 8px; }
.dh-headline { margin: 2px 0 6px; }
.avatar-photo { width: 80px; height: 80px; }
.diag-overall .v { font-size: 44px; }
.summary-block { padding: 12px 0; }
.edu-row { padding: 8px 0; }
.zone-row { padding: 7px 0; }
.bt-trait { padding: 6px 0; }

/* ---------- 上传区/弹窗微调 ---------- */
.dropzone { padding: 40px 32px; }
.im-steps { gap: 10px; }
.im-feats > div { gap: 6px; }
.im-body { padding: 26px 36px; gap: 26px; }
.im-head { padding: 26px 36px; }
.im-foot { padding: 14px 36px; }

/* ---------- v3.3 补充：工作台一屏化冲刺（-165px） ---------- */
body { line-height: 1.62; }
.content { padding-top: 20px; }
.hero { margin-bottom: 14px; }
.stat { padding: 14px 20px; }
.stat .v { font-size: 22px; }
.stat .note { font-size: var(--font-caption); }
.pipeline { gap: 12px; }
.phase-card { padding: 12px; gap: 4px; }
.phase-card .no { font-size: 18px; }
.phase-card .ds { line-height: 1.45; }
.card h2 { margin-bottom: 2px; }
.hint { margin-bottom: 12px; }
.next-slim { padding: 12px 20px; }

/* ---------- v3.3 补充：统计横条（三卡合一，省一整行） ---------- */
.stat-strip { display: flex; gap: 0; padding: 0; margin-bottom: 20px; flex-wrap: wrap; }
.stat-strip .stat { flex: 1; min-width: 200px; border: 0; box-shadow: none; border-radius: 0; padding: 14px 20px; }
.stat-strip .stat + .stat { border-left: 1px solid var(--line-soft); }
.stat-strip .stat:first-child { border-radius: 16px 0 0 16px; }
.stat-strip .stat:last-child { border-radius: 0 16px 16px 0; }
@media (max-width: 720px) {
  .stat-strip { flex-direction: column; }
  .stat-strip .stat + .stat { border-left: 0; border-top: 1px solid var(--line-soft); }
  .stat-strip .stat:first-child { border-radius: 16px 16px 0 0; }
  .stat-strip .stat:last-child { border-radius: 0 0 16px 16px; }
}

/* ---------- v3.3 补充：一屏化最后收口 ---------- */
.content { padding-bottom: 40px; }
.hero { margin-bottom: 12px; }

/* ============================================================
   v3.4 / 2026-08-23 — 五项反馈修复
   ①简历库卡片接入新表面体系 ②问卷/确认弹窗现代化（sv-*体系）
   ③step3报告页间距回调（v3.3压过狠） ④step2校验前移（模板层）
   ============================================================ */

/* ---------- 简历库：卡片接入新表面（hairline+阴影+圆角16+悬停抬升） ---------- */
.rcards { gap: 16px; }
.rcard {
  border-color: #F3F4F6; box-shadow: 0 4px 20px rgba(0, 0, 0, .05);
  border-radius: 12px; padding: 16px; gap: 8px;
}
.rcard:hover { border-color: var(--signal); box-shadow: 0 8px 30px rgba(0, 0, 0, .08); transform: translateY(-2px); }
.rcard-actions { border-top-color: var(--line-soft); padding-top: 12px; gap: 6px; }
.rcard-title { font-family: var(--font-display); font-size: var(--font-card-title); font-weight: 600; line-height: 1.5; }

/* ---------- 弹窗现代化（问卷/确认/通用小弹窗） ---------- */
.modal { border-radius: 16px; box-shadow: 0 24px 64px rgba(0, 0, 0, .25); }
.sv-head {
  display: flex; align-items: flex-start; gap: 14px; padding: 22px 26px 18px;
  border-bottom: 1px solid var(--line-soft);
}
.sv-head h3 { margin: 0; font: 700 17px/1.4 var(--font-display); }
.sv-head p { margin: 3px 0 0; font-size: 13px; color: var(--faint); }
.sv-ico {
  width: 42px; height: 42px; border-radius: 10px; background: var(--primary-tint);
  color: var(--primary); display: grid; place-items: center; flex: none;
}
.sv-flag { margin-left: auto; flex: none; }
.sv-body { padding: 18px 26px; }
.sv-foot {
  display: flex; gap: 12px; justify-content: flex-end; align-items: center;
  padding: 14px 26px; border-top: 1px solid var(--line-soft);
  background: #F9FAFB; border-radius: 0 0 16px 16px;
}
.confirm-summary { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; font-size: var(--font-control); color: var(--muted); }
.confirm-summary b { font-size: 16px; color: var(--text); }
.confirm-summary span { background: var(--tint); color: var(--primary); border-radius: 999px; padding: 3px 12px; font-size: 13px; }
.confirm-modal { max-width: 480px; padding: 0; }

/* 问卷弹窗适配新结构 */
.survey-modal { padding: 0; max-width: 560px; }
.survey-modal > .survey-body { padding: 18px 26px; overflow-y: auto; flex: 1; }
.survey-modal label { margin: 12px 0 6px; font-size: var(--font-control); }
.survey-modal label:first-child { margin-top: 0; }
.survey-foot {
  display: flex; gap: 12px; justify-content: space-between; align-items: center;
  padding: 14px 26px; border-top: 1px solid var(--line-soft);
  background: #F9FAFB; border-radius: 0 0 16px 16px; position: sticky; bottom: 0;
}

/* 生成进度弹窗 */
#gen-mask .modal { padding: 24px 28px; max-width: 420px; }
#gen-mask h3 { margin: 0 0 8px; font: 600 var(--font-dialog)/1.4 var(--font-display); }

/* ---------- step3 报告页：间距回调（内容舒展，模块内不再挤压） ---------- */
.dossier-grid .card, .dcol > .card { padding: 18px 20px; margin-bottom: 20px; }
.dossier-head { gap: 22px; }
.avatar-photo { width: 88px; height: 88px; }
.dh-name-row h2 { font-size: 20px; }
.card h2 { margin-bottom: 4px; }
.card .hint { margin-bottom: 14px; }
.layer-head { margin-bottom: 4px; }
.layer-text { margin: 12px 0 0; line-height: 1.75; }
.comp-tags { margin: 14px 0; gap: 8px; }
.t-node { padding-bottom: 16px; gap: 14px; }
.t-node:not(:last-child)::before { left: 100px; }
.t-list { margin: 0 0 8px; }
.t-list li { margin: 3px 0; }
.t-gh { margin: 10px 0 3px; }
.dim-row { padding: 5px 0; }
.diag-top { margin-top: 14px; }
.diag-texts { gap: 14px; }
.summary-block { padding: 16px 0; }
.edu-row { padding: 11px 0; }
.zone-row { padding: 10px 0; }
.bt-trait { padding: 9px 0; }
.bt-summary { margin-bottom: 12px; }
.mp-row { padding: 11px 14px; }
.mp-layers { gap: 10px; }
.gap-item { padding: 14px 18px; }
.action-item { padding: 12px 16px; }
.urgent-growth { padding: 14px 18px; }
.quote { line-height: 1.75; }

/* ============================================================
   v3.5 / 2026-08-23 — 画像报告页6项反馈修复
   ============================================================ */

/* ① 市场定位：当前定位/目标改为清晰圆角芯片；与下层三区的间距 */
.mp-flow { gap: 16px; margin: 16px 0 0; }
.mp-cur, .mp-target { padding: 8px 16px; border-radius: 10px; font-size: var(--font-control); line-height: 1.5; }
.mp-cur { background: #F3F4F5; border: 1px solid var(--line-soft); color: var(--muted); }
.mp-target { background: var(--signal); color: #fff; }
.mp-layers { gap: 10px; margin-top: 16px; }
.comp-tags { margin-bottom: 12px; }

/* ② 成长潜力区与紧迫成长方向的间距 */
.mp-layers .mp-row:last-child { margin-bottom: 2px; }
.urgent-growth { margin-top: 22px; }

/* ③ 匹配度诊断：总分与右侧维度条的左右间距 */
.diag-top { gap: 36px; margin-top: 16px; }
.diag-overall { min-width: 120px; padding-right: 8px; }
.diag-dims { min-width: 280px; }

/* ④ 简历分析：建议条目之间的间距 */
.gap-list { gap: 14px; }
.gap-head { margin-bottom: 4px; }
.gap-evidence { margin: 8px 0 6px; }

/* ⑥ 教育背景：学校在上，专业左+时间右两行结构 */
.edu-row {
  display: grid; grid-template-columns: 1fr auto; gap: 3px 12px;
  align-items: baseline; padding: 12px 0; border-bottom: 1px solid var(--line-soft); flex-wrap: nowrap;
}
.edu-row:last-of-type { border-bottom: 0; }
.edu-school { grid-column: 1 / -1; font-weight: 600; font-size: var(--font-card-title); }
.edu-time { text-align: right; }

/* ============================================================
   v3.6 / 2026-08-23 — 简历库操作精简 + 技能三区纵向排列
   ============================================================ */

/* 技能图谱三区统计：从横向换行改为从上到下整行排列 */
.zone-stats { display: flex; flex-direction: column; align-items: stretch; gap: 0; margin-bottom: 16px; }
.zone-row { display: grid; grid-template-columns: 130px 1fr; gap: 10px; padding: 10px 0; border-bottom: 1px solid var(--line-soft); align-items: baseline; }
.zone-row:last-child { border-bottom: 0; }
.zone-row i { font-style: normal; font-size: 13px; font-weight: 700; }
.zone-row i b { font-family: var(--font-mono); }
.zone-row p { margin: 0; font-size: 13px; color: var(--muted); line-height: 1.7; }
.z-core i { color: var(--ok); } .z-base i { color: var(--muted); } .z-grow i { color: var(--signal-ink); }

/* 危险色弹窗组件（删除确认） */
.sv-ico.danger { background: #FEF2F2; color: var(--err2); }
.btn-danger-solid { background: var(--err2); color: #fff; }
.btn-danger-solid:hover { background: #991616; }

/* ============================================================
   v3.7 / 2026-08-23 — 行为特质标签组间距舒展（漏项补修）
   ============================================================ */
.bt-label { margin: 20px 0 8px; }
.bt-summary + .bt-label, .behavior-value + .bt-label { margin-top: 12px; }
.bt-label + .chips { margin: 0 0 8px; gap: 10px; }
.bt-label + .chips .chip { padding: 6px 14px; font-size: 13px; }

/* ============================================================
   v3.8 / 2026-08-23 — 职业经历时间列：单行显示（年份不换行）
   ============================================================ */
.t-node { grid-template-columns: 122px 1fr; gap: 12px; }
.t-when { white-space: nowrap; }
.t-node:not(:last-child)::before { left: 134px; }

/* ============================================================
   v3.9 / 2026-08-23 — 简历分析双列卡片 + 教育背景移至求职策略下
   ============================================================ */
.gap-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; align-items: stretch; }
.gap-item { padding: 16px 18px; }
@media (max-width: 900px) { .gap-list { grid-template-columns: 1fr; } }

/* ---------- 任务3.3：轮次卡采集进度行 ---------- */
.r-scan { font-size: var(--font-caption); color: var(--faint); flex: none; max-width: 46%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.r-item.open .r-scan { max-width: 100%; white-space: normal; }

/* ============================================================
   v4.0 / 2026-08-27 — 任务3.6 扫描进度监控页（jobs/scan.html）
   ============================================================ */
.scan-grid { grid-template-columns: minmax(0, 1fr) 300px; }
.scan-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; margin-bottom: 14px; }
.scan-head .pt { font-size: var(--font-page); }
.scan-params { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 20px; }
.s-chip { display: inline-flex; align-items: baseline; gap: 6px; background: #fff; border: 1px solid var(--line2); border-radius: 999px; padding: 5px 14px; font-size: 13px; color: var(--text2); }
.s-chip i { font-style: normal; font-size: var(--font-caption); color: var(--faint2); }
.scan-overall { display: flex; gap: 28px; align-items: center; flex-wrap: wrap; }
.so-num { text-align: center; flex: none; }
.so-num .v { display: block; font: 700 46px/1.1 var(--font-display2); color: var(--primary); }
.so-num .k { font-size: var(--font-caption); color: var(--faint2); }
.so-right { flex: 1; min-width: 0; }
.so-statusline { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; flex-wrap: wrap; }
.so-statustext { font-size: var(--font-control); color: var(--muted2); }
.so-sub { margin: 8px 0 0; font-size: var(--font-caption); color: var(--faint2); }
.scan-progress { height: 10px; background: rgba(54, 37, 205, .1); border-radius: 999px; overflow: hidden; }
.scan-progress-fill { height: 100%; width: 0; border-radius: 999px; background: linear-gradient(90deg, #5046E5, #7B72F0); transition: width 500ms ease; }
.scan-progress-fill.indeterminate { width: 35%; animation: scan-indet 1.4s ease-in-out infinite alternate; }
@keyframes scan-indet { from { transform: translateX(-40%); } to { transform: translateX(220%); } }
.scan-facts { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)) minmax(170px, 1.6fr); gap: 2px; margin-top: 20px; padding: 10px; border: 1px solid #E7E4FF; border-radius: 14px; background: linear-gradient(135deg, #FAFAFF 0%, #F5F7FF 100%); }
.scan-fact { min-width: 0; padding: 9px 12px; border-right: 1px solid #E8EAF4; }
.scan-fact:last-child { border-right: 0; }
.scan-fact b { display: block; color: var(--primary); font: 700 20px/1.2 var(--font-display2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.scan-fact span { display: block; margin-top: 4px; color: var(--faint2); font-size: var(--font-caption); white-space: nowrap; }
.scan-fact-reason { position: relative; }
.scan-fact-reason b { color: var(--primary); font-size: 14px; line-height: 1.45; cursor: help; }
.scan-fact-reason::after { content: attr(data-tooltip); position: absolute; z-index: 5; right: 0; bottom: calc(100% + 9px); width: max-content; max-width: 290px; padding: 8px 10px; border: 1px solid #D9D6FF; border-radius: 8px; background: #242044; box-shadow: 0 8px 22px rgba(28, 23, 86, .18); color: #fff; font: 500 12px/1.5 var(--font-display2); white-space: normal; opacity: 0; visibility: hidden; transform: translateY(4px); pointer-events: none; transition: opacity 140ms ease, transform 140ms ease, visibility 140ms ease; }
.scan-fact-reason:hover::after, .scan-fact-reason:focus-within::after { opacity: 1; visibility: visible; transform: translateY(0); }
.scan-platforms { display: flex; gap: 12px; margin-top: 20px; flex-wrap: wrap; }
.scan-plat { display: flex; align-items: center; gap: 12px; border: 1px solid var(--line2); border-radius: 10px; padding: 12px 16px; min-width: 260px; background: #fff; }
.scan-plat .pi { width: 40px; height: 40px; border-radius: 8px; display: grid; place-items: center; font-weight: 700; flex: none; }
.scan-plat .sp-main { flex: 1; min-width: 0; }
.scan-plat b { font-size: var(--font-control); display: block; color: var(--text2); }
.scan-plat small { display: block; font-size: var(--font-caption); color: var(--faint2); margin-top: 1px; }
.rbadge.waiting { background: #FFF7ED; color: #92400E; }
.rbadge.doing { background: #EEF2FF; color: var(--primary); animation: pulse 1.6s ease infinite; }
.rbadge.ok { background: #E4F9F0; color: var(--ok-green); }
.rbadge.fail { background: var(--err2-bg); color: var(--err2); }
.scan-actions { display: flex; gap: 12px; margin-top: 20px; padding-top: 16px; border-top: 1px solid var(--line2); flex-wrap: wrap; }
.scan-logtoggle { display: flex; align-items: center; gap: 8px; width: 100%; border: 0; background: none; font: 500 var(--font-control)/1.4 var(--font-display2); color: var(--text2); cursor: pointer; padding: 0; }
.scan-logtoggle .log-count { font: 500 var(--font-caption) var(--font-mono); color: var(--faint2); background: var(--line2); border-radius: 999px; padding: 1px 8px; }
.scan-logtoggle .chev { margin-left: auto; transition: transform 160ms ease; }
.scan-logtoggle.open .chev { transform: rotate(180deg); }
.scan-logs { list-style: none; margin: 14px 0 0; padding: 0; max-height: 280px; overflow-y: auto; font: 400 var(--font-caption)/1.8 var(--font-mono); color: var(--muted2); }
.scan-logs li { display: flex; gap: 10px; border-bottom: 1px dashed var(--line2); padding: 5px 0; }
.scan-logs time { color: var(--faint2); flex: none; }
.scan-tips { margin-top: 16px; }
.scan-tips p { margin: 0 0 10px; font-size: 13px; color: var(--muted2); line-height: 1.7; }
.scan-tips .dim { color: var(--faint2); font-size: var(--font-caption); }
@media (max-width: 1100px) { .scan-grid { grid-template-columns: 1fr; } }
@media (max-width: 760px) {
  .scan-facts { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0; }
  .scan-fact { border-right: 0; border-bottom: 1px solid #E8EAF4; }
  .scan-fact:nth-last-child(-n+2) { border-bottom: 0; }
}
.r-monitor { display: inline-block; margin-top: 10px; font-size: 13px; font-weight: 600; color: var(--primary); text-decoration: none; }
.r-monitor:hover { text-decoration: underline; }

/* ---------- v4.1 / 2026-08-28 — 监控页间距修复（用户反馈：横幅贴合/右栏宽度/说明贴线） ---------- */
.jobs .banner { margin: 4px 0 22px; }                        /* 状态横幅上下留呼吸感（原下距16px视觉贴合） */
.scan-params { margin-bottom: 22px; }                        /* 参数行与横幅/卡片区同步拉开 */


/* ---------- 已采集岗位列表（扫描页即时查看，任务3.7前过渡） ---------- */
.posting-list { list-style: none; margin: 14px 0 0; padding: 0; display: flex; flex-direction: column; gap: 12px; }
.posting-item { border: 1px solid var(--line2); border-radius: 10px; padding: 14px 16px; background: #fff; }
.posting-item .p-head { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.posting-item .p-title { font-size: var(--font-control); font-weight: 600; color: var(--text2); text-decoration: none; flex: 1; min-width: 0; }
a.p-title:hover { color: var(--primary); }
.posting-item .p-salary { font: 600 14px var(--font-display2); color: var(--primary); flex: none; }
.posting-item .p-meta { margin: 4px 0 0; font-size: var(--font-caption); color: var(--faint2); }
.posting-item .p-brief { margin: 8px 0 0; font-size: var(--font-caption); color: var(--muted2); line-height: 1.6; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }

/* ============================================================
   v4.1 / 2026-08-27 — 求职任务页重构 + 扫描监控CMD日志/倒计时
   ============================================================ */

/* ---------- 求职任务页：轮次卡片列表为主体 ---------- */
.jobs { max-width: 1120px; }
.rounds-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; margin: 4px 0 18px; flex-wrap: wrap; }
.round-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 330px), 1fr)); gap: 16px; }
.round-card {
  background: #fff; border: 1px solid #F3F4F6; border-radius: 12px; box-shadow: 0 4px 20px rgba(0, 0, 0, .05);
  padding: 16px; display: flex; flex-direction: column; gap: 8px; cursor: pointer; position: relative;
  transition: border-color .14s ease, box-shadow .14s ease, transform .14s ease;
}
.round-card:hover { border-color: var(--primary); box-shadow: 0 8px 30px rgba(0, 0, 0, .08); transform: translateY(-2px); }
.round-card:focus-visible { outline: 2px solid var(--primary-c); outline-offset: 2px; }
.round-card.running { border-color: var(--primary-c); }
.round-card.running::before {
  content: ""; position: absolute; left: 0; top: 16px; bottom: 16px; width: 3px;
  background: var(--primary); border-radius: 0 3px 3px 0;
}
.rc-head { display: flex; align-items: center; gap: 10px; min-width: 0; }
.rc-name { font: 600 var(--font-card-title)/1.5 var(--font-display2); color: var(--text2); flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rc-meta { margin: 0; font-size: 13px; color: var(--muted2); }
.rc-data { display: flex; align-items: center; gap: 12px; margin-top: 4px; }
.rc-num { font-size: var(--font-caption); color: var(--faint2); flex: none; }
.rc-num b { font: 700 20px var(--font-display2); color: var(--primary); }
.rc-bar { flex: 1; height: 8px; background: rgba(54, 37, 205, .1); border-radius: 999px; overflow: hidden; }
.rc-bar i { display: block; height: 100%; background: linear-gradient(90deg, #5046E5, #7B72F0); border-radius: 999px; transition: width .5s ease; }
.round-card.running .rc-bar i { animation: barPulse 1.6s ease infinite; }
@keyframes barPulse { 50% { opacity: .65; } }
.rc-sub { margin: 0; font-size: var(--font-caption); color: var(--faint2); }
.rc-foot { display: flex; align-items: center; gap: 10px; border-top: 1px solid var(--line-soft); padding-top: 12px; margin-top: auto; }
.rc-foot .rc-time { font: 500 var(--font-caption) var(--font-mono); color: var(--faint2); margin-left: auto; }
.r-del { border: 1px solid var(--outline2); background: #fff; color: var(--faint2); border-radius: 6px; font: inherit; font-size: var(--font-caption); padding: 3px 10px; cursor: pointer; flex: none; }
.r-del:hover { border-color: var(--err2); color: var(--err2); }
.r-del.confirm { background: var(--err2); border-color: var(--err2); color: #fff; }
.round-empty { text-align: center; padding: 56px 24px; background: #fff; border: 1px dashed var(--outline2); border-radius: 16px; }
.round-empty p { margin: 0 0 16px; color: var(--muted2); }
.round-empty b { color: var(--text2); }
.round-pagination { display: flex; align-items: center; justify-content: center; gap: 14px; margin-top: 22px; }
.round-pagination button { min-height: 36px; padding: 0 14px; border: 1px solid var(--outline2); border-radius: 8px; background: #fff; color: var(--muted2); font: 500 var(--font-caption) var(--font-body2); cursor: pointer; }
.round-pagination button:hover:not(:disabled) { border-color: var(--primary-c); color: var(--primary); }
.round-pagination button:focus-visible { outline: 2px solid var(--primary-c); outline-offset: 2px; }
.round-pagination button:disabled { opacity: .42; cursor: not-allowed; }
.round-pagination span { min-width: 150px; color: var(--faint2); font-size: var(--font-caption); text-align: center; font-variant-numeric: tabular-nums; }
@media (max-width: 520px) {
  .round-pagination { gap: 8px; }
  .round-pagination button { padding-inline: 11px; }
  .round-pagination span { min-width: 0; flex: 1; }
}

/* ---------- 搜索条件配置弹窗（宽版） ---------- */
.plan-modal { max-width: 720px; }
.plan-body { max-height: calc(100vh - 300px); overflow-y: auto; }
@media (max-height: 720px) { .plan-body { max-height: calc(100vh - 260px); } }

.plan-body .jb-card-foot { display: none; }

/* ---------- 扫描监控：CMD终端日志 + 倒计时 ---------- */
.so-timer { font: 600 var(--font-caption) var(--font-mono); color: var(--primary); background: rgba(54, 37, 205, .08); border-radius: 999px; padding: 2px 10px; }
.so-timer.dim { color: var(--faint2); background: var(--line2); font-weight: 500; }
.cmd-card { background: #101216; border-radius: 16px; padding: 0; margin-bottom: 20px; box-shadow: 0 4px 20px rgba(0, 0, 0, .12); overflow: hidden; }
.cmd-card .scan-logtoggle { color: #E5E7EB; padding: 12px 18px; width: 100%; }
.cmd-card .scan-logtoggle .log-count { color: #9CA3AF; background: #ffffff1a; }
.cmd-card .scan-logtoggle:hover { background: #ffffff08; }
.cmd-card .scan-logs {
  margin: 0; padding: 4px 18px 16px; max-height: 320px; list-style: none;
  font: 400 var(--font-caption)/1.9 var(--font-mono); color: #86EFAC; background: transparent;
}
.cmd-card .scan-logs li { display: flex; gap: 10px; align-items: baseline; border-bottom: 0; padding: 1px 0; }
.cmd-card .scan-logs time { color: #6B7280; flex: none; }
.cmd-card .scan-logs i { flex: none; width: 6px; height: 6px; border-radius: 50%; background: #22C55E; align-self: center; box-shadow: 0 0 6px #22C55E99; }
.cmd-card .scan-logs li:first-child i, .cmd-card .scan-logs li:last-child i { animation: cmdBlink 1.4s ease infinite; }
@keyframes cmdBlink { 50% { opacity: .3; } }

/* ============================================================
   v4.2 / 2026-08-27 — 六项反馈：弹窗滚动条/CMD滚动条/岗位卡网格
   ============================================================ */

/* ① 弹窗去双滚动条：外层禁止滚动（内容区唯一滚动），滚动条视觉隐藏但可滑动 */
.jb-modal-mask, .modal-mask { overflow: hidden; }
.plan-body, .im-body, .jb-modal { scrollbar-width: thin;  }
.plan-body::-webkit-scrollbar, .im-body::-webkit-scrollbar, .jb-modal::-webkit-scrollbar { width: 8px; }
.survey-body, .survey-modal { scrollbar-width: thin; }
.survey-body::-webkit-scrollbar, .survey-modal::-webkit-scrollbar { width: 8px; }

/* ④ CMD日志滚动条黑底 */
.cmd-card .scan-logs::-webkit-scrollbar { width: 8px; display: block; }
.cmd-card .scan-logs::-webkit-scrollbar-track { background: #0B0D10; }
.cmd-card .scan-logs::-webkit-scrollbar-thumb { background: #2A2F37; border-radius: 4px; }
.cmd-card .scan-logs::-webkit-scrollbar-thumb:hover { background: #3A404A; }
.cmd-card .scan-logs { scrollbar-color: #2A2F37 #0B0D10; scrollbar-width: thin; }

/* ⑤⑥ 已采集岗位：卡片网格（一行~4个）+ 详情/查看岗位 */
.posting-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 14px; margin: 16px 0 0; }
.posting-card { border: 1px solid var(--line2); border-radius: 12px; padding: 14px 16px 12px; background: #fff; display: flex; flex-direction: column; gap: 6px; transition: border-color .14s ease, box-shadow .14s ease; }
.posting-card:hover { border-color: var(--primary-c); box-shadow: 0 6px 24px rgba(0, 0, 0, .07); }
.posting-card .p-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; }
.posting-card .p-title { font-size: var(--font-control); font-weight: 600; color: var(--text2); flex: 1; min-width: 0; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.posting-card .p-salary { font: 700 14px var(--font-display2); color: var(--primary); flex: none; }
.posting-card .p-meta { margin: 0; font-size: var(--font-caption); color: var(--faint2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.posting-card .p-brief { margin: 2px 0 0; font-size: var(--font-caption); color: var(--muted2); line-height: 1.6; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.posting-card .p-brief.open { display: block; -webkit-line-clamp: unset; overflow-y: auto; max-height: 220px; white-space: pre-wrap; }
.posting-card.is-excluded { opacity: .62; background: #F8F8FA; }
.posting-card.is-excluded .p-title { text-decoration: line-through; }
.posting-card .p-foot { display: flex; gap: 8px; margin-top: auto; padding-top: 8px; }
.p-act { border: 1px solid var(--outline2); background: #fff; color: var(--muted2); border-radius: 6px; font: 500 var(--font-caption) var(--font-body2); padding: 4px 12px; cursor: pointer; text-decoration: none; flex: none; }
.p-act:hover { border-color: var(--primary-c); color: var(--primary); }
.p-act-danger { color: #B42318; border-color: #F1B6B0; }
.p-act-danger:hover { border-color: #B42318; color: #912018; }
.p-act-danger:disabled { cursor: default; opacity: .7; }
.p-act.primary { background: var(--primary); border-color: var(--primary); color: #fff; }
.p-act.primary:hover { background: var(--primary-c); }
@media (max-width: 900px) { .posting-grid { grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); } }

/* ============================================================
   v4.3 / 2026-08-27 — 岗位详情弹窗（BOSS岗位页布局）
   ============================================================ */
.pd-modal { max-width: 640px; }
.pd-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; padding: 24px 28px 18px; border-bottom: 1px solid var(--line2); }
.pd-head h2 { margin: 0 0 8px; font: 700 20px/1.4 var(--font-display2); color: var(--text2); }
.pd-salaryline { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; }
.pd-salary { font: 600 var(--font-section)/1.4 var(--font-display2); color: var(--primary); }
.pd-meta { font-size: 13px; color: var(--faint2); }
.pd-close { border: 0; background: none; color: var(--faint2); cursor: pointer; padding: 6px; border-radius: 8px; flex: none; }
.pd-close:hover { background: var(--line2); color: var(--text2); }
.pd-body { padding: 20px 28px; max-height: calc(100vh - 320px); overflow-y: auto; font-size: var(--font-control); line-height: 1.9; color: var(--muted2); white-space: pre-wrap; word-break: break-word; scrollbar-width: thin; }
.pd-body h3 { margin: 18px 0 8px; color: var(--text2); font-size: 15px; line-height: 1.55; }
.pd-body h3:first-child { margin-top: 0; }
.pd-body p { margin: 0 0 10px; white-space: pre-wrap; overflow-wrap: anywhere; }
.pd-body .pd-list-line { padding-left: 1.8em; text-indent: -1.8em; }
.pd-body::-webkit-scrollbar { width: 8px; }
.pd-foot { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 14px 28px; border-top: 1px solid var(--line2); background: #F9FAFB; border-radius: 0 0 16px 16px; }
.pd-hint { font-size: var(--font-caption); color: var(--faint2); }

/* ============================================================
   v4.2 / 2026-08-28 — 任务3.7 岗位短名单页（jobs/shortlist.html）
   签名元素：匹配度得分环（conic-gradient，色彩随三档变化）
   ============================================================ */
.sl-wrap { max-width: 1120px; }
.sl-progress { padding: 18px 26px; }
.slp-row { display: flex; align-items: center; gap: 12px; margin-bottom: 12px; flex-wrap: wrap; }
.slp-count { margin-left: auto; font: 600 15px var(--font-mono); color: var(--text2); }

/* 三档统计胶囊（点击切档） */
.sl-stats { display: flex; gap: 10px; margin-bottom: 14px; flex-wrap: wrap; }
.sl-stat { display: inline-flex; align-items: center; gap: 8px; border: 1px solid var(--line2); background: #fff; border-radius: 999px; padding: 8px 18px; font: 600 13.5px var(--font-display2); color: var(--muted2); cursor: pointer; transition: border-color 140ms ease, color 140ms ease; }
.sl-stat b { font: 700 15px var(--font-display2); color: var(--text2); }
.sl-stat:hover { border-color: var(--primary); }
.sl-stat.is-selected { border-color: var(--primary); color: var(--primary); background: #fff; box-shadow: 0 0 0 3px rgba(80, 70, 229, .08); }
.dot { width: 8px; height: 8px; border-radius: 999px; flex: none; }
.dot-ok { background: #00A36C; }
.dot-warn { background: #D97706; }
.dot-dim { background: #98A2B3; }
.sl-hint { margin: 0 0 18px; font-size: 13px; color: var(--faint2); }
.shortlist-pre-note { display: flex; gap: 8px; flex-wrap: wrap; margin: 0 0 14px; padding: 9px 11px; border: 1px solid var(--line2); border-radius: 8px; background: #FAFAFF; color: var(--faint2); font-size: 12px; line-height: 1.55; }
.shortlist-pre-note span { color: var(--primary); font-weight: 600; }

/* 匹配度得分环（卡片与详情弹窗共用；--p=分数，--rs=直径，--ring-c=环色） */
.sl-ring { position: relative; flex: none; width: var(--rs, 54px); height: var(--rs, 54px); border-radius: 50%; background: conic-gradient(var(--ring-c, #98A2B3) calc(var(--p, 0) * 1%), var(--line2) 0); display: grid; place-items: center; }
.sl-ring::before { content: ""; position: absolute; inset: 4px; border-radius: 50%; background: #fff; }
.sl-ring b { position: relative; z-index: 1; font: 700 15px/1 var(--font-display2); color: var(--text2); }
.sl-ring-lg { --rs: 78px; }
.sl-ring-lg b { font-size: 24px; }
.ring-ok { --ring-c: #00A36C; }
.ring-ok b { color: #00714D; }
.ring-warn { --ring-c: #D97706; }
.ring-warn b { color: #92400E; }
.ring-dim { --ring-c: #B6bac3; }
.ring-dim b { color: var(--faint2); }

/* 岗位卡片：左得分环 + 右信息；左侧3px档位色条 */
.sl-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 330px), 1fr)); gap: 16px; margin-bottom: 24px; }
.sl-card { display: flex; gap: 16px; background: #fff; border: 1px solid var(--line2); border-radius: 16px; padding: 18px 20px; box-shadow: var(--shadow-card2); transition: box-shadow 140ms ease, transform 140ms ease; }
.sl-card:hover { box-shadow: 0 8px 30px rgba(0, 0, 0, .08); transform: translateY(-1px); }
.sl-card.tier-selected { border-left: 3px solid #00A36C; }
.sl-card.tier-review { border-left: 3px solid #D97706; }
.sl-card.tier-rejected { border-left: 3px solid #D9DDE3; }
.sl-card.tier-excluded { border-left: 3px solid #D9DDE3; opacity: .68; }
.sl-card.tier-pending { border-left: 3px dashed #D9DDE3; }
.slc-main { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.slc-head { display: flex; align-items: baseline; gap: 10px; }
.slc-reason { margin: 8px 0 12px; font-size: var(--font-caption); color: var(--muted2); line-height: 1.6; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.mini-tag { display: inline-block; margin-left: 6px; font-size: var(--font-caption); color: var(--primary); background: #EEF2FF; border-radius: 999px; padding: 1px 8px; vertical-align: 1px; }
.p-act.promote { color: #00714D; font-weight: 600; }
.p-act.exclude { color: var(--err2); }

/* 空态 / 底部操作条 */
.sl-empty { text-align: center; color: var(--faint2); font-size: var(--font-control); }
.sl-foot { display: flex; align-items: center; justify-content: space-between; gap: 16px; background: #fff; border: 1px solid var(--line2); border-radius: 16px; padding: 16px 24px; box-shadow: var(--shadow-card2); }
.sl-foot-note { margin: 0; font-size: 13px; color: var(--faint2); }
.sl-foot .jb-btn:disabled { opacity: .45; cursor: not-allowed; }

/* 详情弹窗（扩展现有pd-modal）：5维度条 + 理由 + JD */
.sl-detail { max-width: 720px; }
.pd-titleline { display: flex; align-items: center; gap: 16px; }
.sl-dims { display: flex; flex-direction: column; gap: 14px; margin-bottom: 18px; }
.sl-dim-head { display: flex; align-items: baseline; justify-content: space-between; margin-bottom: 6px; font-size: var(--font-control); color: var(--text2); font-weight: 600; }
.sl-dim-head .w { font-style: normal; margin-left: 8px; font: 500 var(--font-caption) var(--font-mono); color: var(--faint2); }
.sl-dim-head b { font: 700 15px var(--font-display2); color: var(--primary); }
.sl-dim-bar { height: 6px; background: var(--line2); border-radius: 999px; overflow: hidden; }
.sl-dim-bar i { display: block; height: 100%; width: calc(var(--p, 0) * 1%); border-radius: 999px; background: linear-gradient(90deg, #5046E5, #7B72F0); }
.sl-dim-reason { margin: 5px 0 0; font-size: var(--font-caption); color: var(--faint2); }
.sl-reason { margin-bottom: 18px; }
.sl-reason h3, .sl-jd h3 { margin: 0 0 8px; font: 600 14px var(--font-display2); color: var(--text2); }
.sl-reason p { margin: 0; font-size: 13px; color: var(--muted2); line-height: 1.7; }
.sl-jd pre { margin: 0; white-space: pre-wrap; word-break: break-word; font: 400 13px/1.8 var(--font-body2); color: var(--muted2); }
.banner-cta { display: inline-block; margin-left: 12px; color: inherit; font-weight: 700; text-decoration: underline; text-underline-offset: 3px; white-space: nowrap; }
.banner-cta:hover { opacity: .8; }
.sl-entry { background: var(--primary); border-color: var(--primary); color: #fff; }

/* ============================================================
   v4.3 / 2026-08-28 — 六项UI反馈修复（顶栏间距/横幅内边距/短名单列表化/按钮间距）
   ============================================================ */
/* 顶栏右侧状态与头像间距。 */
.topbar { gap: 22px; }

/* 3. jobs域横幅内边距加宽（"🎉扫描完成"文字原贴左边缘） */
.jobs .banner { padding: 12px 20px; }

/* 6. 短名单改单列列表：一行一个岗位，横向铺开 */
.sl-grid { display: flex; flex-direction: column; gap: 12px; }
.sl-card { flex-direction: row; align-items: center; gap: 16px; padding: 14px 20px; }
.sl-card:hover { transform: none; }
.sl-ring { --rs: 46px; }
.sl-ring b { font-size: 13px; }
.slc-main { flex-direction: row; align-items: center; gap: 14px; flex-wrap: wrap; }
.slc-info { flex: 1; min-width: 280px; }
.slc-main .p-meta { margin: 3px 0 0; }
.slc-reason { margin: 4px 0 0; -webkit-line-clamp: 1; white-space: normal; }
.slc-main .p-foot { margin-left: auto; margin-top: 0; padding-top: 0; gap: 10px; flex-wrap: nowrap; }

/* 按钮间距与触达面积（详情/查看岗位/排除三钮原贴合） */
.posting-card .p-foot, .slc-main .p-foot { gap: 10px; }

/* 5. 详情弹窗JD排版（清洗后的结构化文本） */
.sl-jd pre { font-size: 13px; line-height: 1.9; }

/* ============================================================
   v4.4 / 2026-08-28 — 短名单两列布局 + 按钮间距根治 + 弹窗滚动锁定
   ============================================================ */
.sl-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; }
@media (max-width: 1000px) { .sl-grid { grid-template-columns: 1fr; } }
.sl-card { gap: 14px; padding: 16px 18px; align-items: flex-start; }
/* 两列卡片：环+信息主体；操作行沉底独立分隔 */
.slc-main { flex-direction: column; align-items: stretch; gap: 0; }
.slc-info { min-width: 0; }
.slc-reason { -webkit-line-clamp: 2; }
.slc-main .p-foot { margin: 12px 0 0; padding: 10px 0 0; border-top: 1px dashed var(--line2);
  gap: 12px; justify-content: flex-start; }
.slc-main .p-foot .p-act.exclude, .slc-main .p-foot .p-act.promote { margin-left: auto; }
/* 按钮间距根治：显式间距+独立触达面积 */
.posting-card .p-foot, .slc-main .p-foot { gap: 12px; }

/* ---------- v4.5 / 2026-08-28 — 操作按钮间距二次加大（用户二连反馈贴合） ---------- */
.slc-main .p-foot { gap: 16px; }
.posting-card .p-foot { gap: 14px; }

/* ============================================================
   v4.6 / 2026-08-28 — 操作按钮规格终版（三连反馈：弃gap改margin+高特异性+标准按钮尺寸）
   ============================================================ */
.jobs .sl-card .p-foot { gap: 10px; }
.jobs .posting-card .p-foot { gap: 10px; }

/* ============================================================
   v4.7 / 2026-08-28 — 四档分层 + 分析报告弹窗（m2_match v1.1.0增强）
   ============================================================ */
.sl-card.tier-abandoned { border-left: 3px solid #E5E7EB; opacity: .6; }
.p-act.link { color: var(--primary); }

.an-modal .pd-salaryline { align-items: center; gap: 14px; }
.an-summary { background: #EEF2FF; border: 1px solid #D8E2FF; border-radius: 10px; padding: 12px 16px; margin-bottom: 18px; }
.an-summary p { margin: 0; font-size: var(--font-control); line-height: 1.7; color: #1D2433; }
.an-skills { margin-bottom: 18px; }
.an-skills h3, .an-strengths h3, .an-gaps h3 { margin: 0 0 10px; font: 600 14px var(--font-display2); color: var(--text2); }
.an-skill-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.an-skill-cols h4 { margin: 0 0 8px; font-size: var(--font-caption); color: var(--faint2); font-weight: 600; }
.chip-row { display: flex; flex-wrap: wrap; gap: 6px; }
.chip { font-size: var(--font-caption); border-radius: 999px; padding: 3px 10px; line-height: 1.4; }
.chip-hit { background: #E4F9F0; color: #00714D; }
.chip-miss { background: #FBEBEA; color: #8C2F2F; }
.chip-none { font-size: var(--font-caption); color: var(--faint2); }
.an-list { list-style: none; margin: 0 0 18px; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.an-list.ok li { background: #F0FDF6; border: 1px solid #C8F0DC; border-radius: 10px; padding: 9px 14px; font-size: 13px; color: #1A5E3C; line-height: 1.6; }
.an-list.gap li { background: #FFF9F1; border: 1px solid #F5E3C8; border-radius: 10px; padding: 10px 14px; font-size: 13px; line-height: 1.6; }
.an-list.gap li b { display: inline-block; margin-right: 8px; color: #92400E; font-size: var(--font-caption); background: #FDF0DD; border-radius: 999px; padding: 1px 9px; }
.an-list.gap li p { margin: 4px 0 0; font-size: var(--font-caption); color: var(--faint2); }
.an-legacy { margin: 4px 0 0; font-size: var(--font-caption); color: var(--faint2); background: var(--line2); border-radius: 8px; padding: 8px 12px; }
.sl-dim-detail { margin: 3px 0 0; font-size: var(--font-caption); color: var(--muted2); line-height: 1.6; }

/* ============================================================
   v4.8 / 2026-08-28 — 弹窗留白根治 + 分析弹窗加高
   根因：.pd-body 的 pre-wrap 是监控页JD直显遗留——区块化弹窗里
   模板HTML的换行/缩进被渲染成150-300px空白带。pre标签自身保留换行即可。
   ============================================================ */
.pd-body { white-space: normal; line-height: 1.7; }
.sl-jd pre { white-space: pre-wrap; }
/* 分析报告内容区加高（原100vh-320px偏矮，长报告一屏内展示更多） */
.an-modal .pd-body { max-height: calc(100vh - 230px); }
/* 区块间距紧凑化 */
.an-modal .sl-dims { gap: 12px; margin-bottom: 14px; }
.an-modal .an-summary { margin-bottom: 14px; }
.an-modal .an-skills, .an-modal .an-strengths, .an-modal .an-gaps { margin-bottom: 14px; }
.an-modal .an-list { margin: 0 0 14px; gap: 6px; }
.an-modal .pd-head { padding: 20px 26px 14px; }
.an-modal .pd-body { padding: 16px 26px; }

/* ============================================================
   v4.9 / 2026-08-28 — 弹窗头/底固定+内容区滚动；按钮间距统一；标题链接
   ============================================================ */
/* 弹窗改为三段结构：头部+内容+底部全部固定，仅 pd-body 内部滚动
   （原 jb-modal 整窗滚动会把标题和关闭按钮滚出视野） */
.pd-modal { display: flex; flex-direction: column; overflow: hidden; }
.pd-modal .pd-body { flex: 1; min-height: 0; overflow-y: auto; max-height: none; }
.an-modal { max-height: calc(100vh - 60px); }

/* 操作按钮间距统一：排除/升级不再 margin-left:auto（窄卡换行时 auto 产生贴紧错觉），
   全部按统一 18px 相邻间距排布 */
.jobs .sl-card .p-foot { flex-wrap: wrap; row-gap: 8px; }

/* 卡片岗位名超链接（跳BOSS原页） */
a.p-title { text-decoration: none; cursor: pointer; }
a.p-title:hover { color: var(--primary); text-decoration: underline; text-underline-offset: 3px; }
.pd-foot-btns { display: inline-flex; gap: 10px; }

/* v4.10 — 按钮换行行距加大（已排除档四钮换行后上下贴近） */
.jobs .sl-card .p-foot { row-gap: 14px; }

/* v4.11 — 按钮紧凑化：四钮稳定一行放下（换行只是兜底而非常态）
   中匹配/已排除卡四钮总宽逼近内容区宽度临界→常态换行→两行视觉显挤 */
.jobs .sl-card .p-foot { row-gap: 12px; }

/* ============================================================
   v4.12 / 2026-08-28 — 档位调整菜单（全档位自由升降，details零JS开合）
   ============================================================ */
.tier-menu { position: relative; display: inline-block; }
.tier-menu summary { list-style: none; cursor: pointer; user-select: none; }
.tier-menu summary::-webkit-details-marker { display: none; }
.tm-menu { position: absolute; top: calc(100% + 6px); right: 0; min-width: 148px;
  background: #fff; border: 1px solid var(--line2); border-radius: 10px;
  box-shadow: 0 12px 36px rgba(0, 0, 0, .14); padding: 6px; z-index: 60;
  display: flex; flex-direction: column; }
.tm-item { border: 0; background: none; text-align: left; padding: 8px 12px;
  border-radius: 7px; font: 500 13px var(--font-body2); color: var(--text2);
  cursor: pointer; }
.tm-item:hover { background: #F3F4F6; }
.tm-item:disabled { color: var(--faint2); cursor: default; background: #F8F9FA; }
.tm-item.cur { font-weight: 600; }
.tm-item.cur::after { content: " ✓"; color: var(--primary); }
.tm-restore { border-top: 1px solid var(--line2); border-radius: 0 0 7px 7px; margin-top: 4px; padding-top: 9px; }

/* ============================================================
   v4.13 / 2026-08-29 — 按钮间距终版（清算日）
   今日v4.3~v4.11共9条margin/gap历史规则相互叠代，加上截图测量误报
   导致"反复修不好"。本块一次性清零全部历史margin，唯一间距来源=flex gap。
   ============================================================ */
.jobs .sl-card .p-foot { gap: 14px; }
.jobs .sl-card .p-foot .p-act,
.jobs .sl-card .p-foot .tier-menu { margin-left: 0 !important; }  /* 清算历史margin规则 */
/* v4.13补：sl-card的p-foot缺display:flex——历史gap规则从未生效的总根因（block元素无gap） */
.jobs .sl-card .p-foot { display: flex; flex-wrap: wrap; align-items: center; row-gap: 12px; }

/* ============================================================
   v4.14 / 2026-08-29 — 任务3.9 投递策略确认页（jobs/delivery.html）
   ============================================================ */
.dl-wrap { max-width: 1280px; }
.dl-summary { display: flex; align-items: center; gap: 40px; padding: 22px 28px; flex-wrap: wrap; }
.dl-stat b { display: block; font: 700 30px/1.2 var(--font-display2); color: var(--primary); }
.dl-stat span { font-size: var(--font-caption); color: var(--faint2); }
.dl-note { margin: 0 0 0 auto; max-width: 340px; font-size: var(--font-caption); color: var(--faint2); line-height: 1.7; }
.dl-list { display: flex; flex-direction: column; }
.dl-row { display: flex; align-items: center; flex-wrap: nowrap; gap: 6px; padding: 13px 4px; border-bottom: 1px solid var(--line2); }
.dl-row:last-child { border-bottom: 0; }
.dl-row .p-title { flex: 1 1 auto; min-width: 0; font-size: var(--font-control); font-weight: 600; color: var(--text2); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dl-row > .p-act, .dl-row > .regen-menu { flex: none; white-space: nowrap; }
.dl-row > .p-act { min-width: 64px; padding-left: 8px; padding-right: 8px; text-align: center; }
.dl-row > .dl-remove { min-width: 32px; width: 32px; padding: 0; font-size: 20px; line-height: 1; }

/* compact user-owned LLM configuration */
.top-config{border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:9px;padding:7px 11px;font:600 var(--font-caption)/1 var(--font-body2);cursor:pointer}.top-config:hover{border-color:var(--signal);color:var(--signal)}
.top-config{display:inline-flex;align-items:center;gap:7px}.llm-dot{width:7px;height:7px;border-radius:50%;background:#94a3b8;box-shadow:0 0 0 3px #94a3b822}.llm-dot.on{background:#2b9348;box-shadow:0 0 0 3px #2b934833}
.llm-modal[hidden]{display:none}.llm-modal{position:fixed;inset:0;z-index:1000;display:grid;place-items:center}.llm-backdrop{position:absolute;inset:0;background:#10182888;backdrop-filter:blur(3px)}.llm-dialog{position:relative;width:min(430px,calc(100vw - 32px));padding:28px;border:1px solid var(--line);border-radius:18px;background:var(--card);box-shadow:0 24px 80px #11182740}.llm-dialog h2{margin:2px 0 6px}.llm-note{margin:0 0 18px;color:var(--muted);font-size:13px;line-height:1.5}.llm-close{position:absolute;right:14px;top:10px;border:0;background:none;color:var(--muted);font-size:24px;cursor:pointer}.llm-dialog label{display:grid;gap:6px;margin:12px 0;font-size:var(--font-caption);color:var(--muted)}.llm-dialog input,.llm-dialog select{width:100%;box-sizing:border-box;border:1px solid var(--line);border-radius:8px;background:var(--paper);color:var(--ink);padding:10px;font:inherit}.llm-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:20px}.llm-actions button{border-radius:8px;padding:9px 14px;border:1px solid var(--line);cursor:pointer}.llm-actions .btn-primary{background:var(--signal);border-color:var(--signal);color:white}.llm-status{min-height:18px;margin:12px 0 0;color:#c2410c;font-size:var(--font-caption)}.llm-status.ok{color:#15803d}
.llm-dialog{background-color:#fff!important;color:#1f2d3d}.llm-dialog input,.llm-dialog select{background-color:#f2f4f6!important;color:#1f2d3d!important}
.dl-row > .easy-editor { color: var(--primary); border-style: dashed; }
.dl-row .regen-menu > summary { min-width: 76px; padding-left: 8px; padding-right: 8px; text-align: center; white-space: nowrap; }
.dl-row.is-excluded { opacity: .7; }
.dl-company { flex: 0 1 130px; width: 130px; font-size: var(--font-caption); color: var(--muted2); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dl-platform { flex: 0 0 58px; width: 58px; font-size: var(--font-caption); color: var(--faint2); }
.dl-score { flex: 0 0 28px; width: 28px; text-align: right; font: 700 15px var(--font-display2); color: var(--primary); }
.dl-restag { flex: none; font-size: var(--font-caption); color: var(--primary); background: #EEF2FF; border-radius: 999px; padding: 2px 10px; }
.dl-empty { margin: 8px 0; font-size: var(--font-control); color: var(--faint2); text-align: center; padding: 18px 0; }
.dl-excluded { padding: 16px 26px; }
.dl-excluded summary { cursor: pointer; font: 500 var(--font-control)/1.4 var(--font-display2); color: var(--muted2); list-style: none; }
.dl-excluded summary::-webkit-details-marker { display: none; }
.dl-excluded summary::before { content: "▸ "; color: var(--faint2); }
.dl-excluded[open] summary::before { content: "▾ "; }
.dl-excluded .dl-list { margin-top: 8px; }
/* Step5确认弹窗 */
.dc-modal { max-width: 760px; display: flex; flex-direction: column; overflow: hidden; }
.dc-sub { margin: 6px 0 0; font-size: 13px; color: var(--muted2); }
.dc-modal .pd-body { flex: 1; min-height: 0; overflow-y: auto; white-space: normal; padding: 16px 26px; }
.dc-table { width: 100%; border-collapse: collapse; font-size: var(--font-caption); }
.dc-table th { text-align: left; font-size: var(--font-caption); color: var(--faint2); font-weight: 600; padding: 6px 8px; border-bottom: 1px solid var(--line2); }
.dc-table td { padding: 8px; border-bottom: 1px solid var(--line2); color: var(--muted2); vertical-align: middle; }
.dc-table td.dc-title { color: var(--text2); font-weight: 600; max-width: 220px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dc-warn { margin: 14px 0 0; font-size: var(--font-caption); color: #92400E; background: #FFF7ED; border: 1px solid #F5E3C8; border-radius: 8px; padding: 8px 12px; }

/* v4.15 — 短名单操作条上移至页头下方（原页尾，列表长时难触达） */
.sl-foot { margin-bottom: 20px; }

/* v4.16 — 档位统计与确认操作左右并排（档位左/确认最右；窄屏自动换行） */
.sl-toolbar { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; margin-bottom: 14px; }
.sl-toolbar .sl-stats { margin-bottom: 0; }
.sl-toolbar .sl-foot { margin-bottom: 0; margin-left: auto; padding: 10px 18px; gap: 14px; }
.sl-toolbar .sl-foot .sl-foot-note { max-width: 300px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
@media (max-width: 900px) { .sl-toolbar .sl-foot { margin-left: 0; width: 100%; } }


/* ============================================================
   v4.17 / 2026-08-29 — 投递策略四档页（高/中/低/已排除平铺）
   ============================================================ */
.sl-toolbar .dv-go { flex: none; }
.dv-tier { margin-bottom: 18px; }
.dv-tier .jb-card-head { position: relative; padding-right: 26px; }
.dv-actions { margin-left: auto; display: inline-flex; align-items: center; gap: 10px; flex: none; }
.dv-actions .jb-btn, .dv-actions .p-act { white-space: nowrap; }
.dv-actions .p-act:disabled { opacity: .58; cursor: wait; }
.dv-tier .dv-n { color: var(--primary); font-size: 18px; }
.dv-high .jb-card-head { border-bottom-color: #C8F0DC; }
.dv-mid .jb-card-head { border-bottom-color: #F5E3C8; }
.dv-excl .jb-card-head { border-bottom-color: var(--line2); }
.dv-excl .dl-row { opacity: .72; }
.dl-restag.done { background: #E4F9F0; color: #00714D; }
.dv-status { margin: 4px 0 0; font-size: 13px; color: var(--muted2); }
.dl-tip b { margin-right: 8px; }

/* ============================================================
   v4.18 / 2026-08-29 — 定制任务进度条（每岗位）+ 按钮定制语义
   ============================================================ */
.dl-gen { display: inline-flex; align-items: center; gap: 7px; flex: none;
  font-size: var(--font-caption); color: var(--muted2); }
.dl-gen-bar { width: 54px; height: 5px; border-radius: 999px; background: var(--line2); overflow: hidden; display: inline-block; }
.dl-gen-bar b { display: block; height: 100%; width: 0; border-radius: 999px; background: var(--primary); }
.dl-gen.gen-run { color: var(--primary); }
.dl-gen.gen-run .dl-gen-bar b { width: 35%; animation: scan-indet 1.4s ease-in-out infinite alternate; }
.dl-gen.gen-done { color: #00714D; }
.dl-gen.gen-done .dl-gen-bar b { width: 100%; background: #00A36C; }
.dl-gen.gen-error { color: var(--err2); }
.dl-gen.gen-error .dl-gen-bar b { width: 100%; background: var(--err2); }
.dl-gen.gen-wait { color: var(--faint2); }
.dl-gen.gen-wait .dl-gen-bar b { width: 12%; background: #98A2B3; }

/* v4.19 — 真实进度（0-100%，无脉动）：档位总进度条+岗位条改百分比填充 */
.dv-prog { display: flex; align-items: center; gap: 10px; padding: 12px 26px 14px; border-bottom: 1px solid var(--line2); }
.dv-prog-bar { flex: 1; height: 8px; border-radius: 999px; background: var(--line2); overflow: hidden; }
.dv-prog-bar i { display: block; height: 100%; width: 0; border-radius: 999px;
  background: linear-gradient(90deg, #5046E5, #7B72F0); transition: width 600ms ease; }
.dv-prog-txt { flex: none; font: 600 var(--font-caption) var(--font-mono); color: var(--primary); min-width: 92px; text-align: right; }
.dl-gen.gen-run .dl-gen-bar b { width: 50%; animation: none; }  /* 单岗LLM生成无子进度：静态中点 */

/* v4.20 — 打招呼语查看（行内展开） */
.dl-greet { margin: -1px 4px 10px; background: #F5F5FF; border: 1px solid #E2E2F5;
  border-radius: 10px; padding: 12px 16px; }
.dl-greet b { display: block; font-size: var(--font-caption); color: var(--primary); margin-bottom: 6px; }
.dl-greet p { margin: 0; font-size: 13px; line-height: 1.8; color: var(--text2); white-space: pre-wrap; }

/* v4.21 — 定制简历查看入口（模块3接入前的状态展开区） */
.dl-greet.dl-resume { background: #F8F9FB; border-color: var(--line2); }
.dl-greet.dl-resume b { color: var(--muted2); }
.dl-greet.dl-resume p i { font-style: normal; color: #00714D; font-weight: 600; }

/* v4.22 — 打招呼语复制按钮 + 简历PDF入口 */
.dg-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 6px; }
.dg-head b { font-size: var(--font-caption); color: var(--primary); }
.dg-head .p-act { padding: 3px 12px; min-height: 26px; font-size: var(--font-caption); }

/* v4.23 — 简历右侧1:1分屏预览面板 + 原链接按钮 */
.pdf-panel { position: fixed; top: 0; right: 0; width: 50%; height: 100vh; z-index: 90;
  background: #fff; border-left: 1px solid var(--line2); box-shadow: -12px 0 40px rgba(0,0,0,.12);
  display: flex; flex-direction: column; }
.pdf-panel[hidden] { display: none; }
.pp-head { display: flex; align-items: center; justify-content: space-between;
  padding: 12px 20px; border-bottom: 1px solid var(--line2); flex: none; }
.pp-head b { font: 600 var(--font-card-title)/1.4 var(--font-display2); color: var(--text2); }
.pp-btns { display: inline-flex; align-items: center; gap: 10px; }
.pp-close { border: 0; background: var(--line2); color: var(--muted2); border-radius: 8px;
  width: 30px; height: 30px; display: grid; place-items: center; cursor: pointer; }
.pp-close:hover { background: #E7E8E9; color: var(--text2); }
#pp-frame { flex: 1; width: 100%; border: 0; }
.dg-actions { display: inline-flex; align-items: center; gap: 8px; }

/* 打招呼语候选列表：固定标题操作，正文独立滚动。 */
.greet-modal { position: fixed; inset: 0; z-index: 120; display: grid; place-items: center; padding: 24px; background: rgb(16 24 40 / .48); backdrop-filter: blur(5px); }
.greet-modal[hidden] { display: none; }
.greet-modal-card { width: min(760px, 100%); max-height: min(86vh, 760px); overflow: hidden; border: 1px solid rgb(255 255 255 / .7); border-radius: 18px; background: var(--surface, #fff); box-shadow: 0 24px 70px rgb(16 24 40 / .24); display: flex; flex-direction: column; }
.greet-modal-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 20px; padding: 22px 26px 16px; border-bottom: 1px solid var(--line2); }
.greet-kicker { display: block; margin-bottom: 4px; color: var(--primary); font: 600 var(--font-caption) var(--font-mono); letter-spacing: .08em; text-transform: uppercase; }
.greet-modal-head h2 { margin: 0; color: var(--text2); font: 700 21px var(--font-display2); }
.greet-modal-head p { margin: 5px 0 0; color: var(--muted2); font-size: var(--font-caption); }
.greet-modal-body { min-height: 0; overflow-y: auto; padding: 18px 24px 24px; scrollbar-width: thin; scrollbar-color: var(--outline2) transparent; }
.greet-head-actions { display: inline-flex; align-items: center; gap: 10px; }
.greet-section-label { color: var(--primary); font: 600 12px var(--font-mono); }
.greet-copy { margin-bottom: 12px; padding: 12px 16px 16px; border-radius: 10px; background: var(--surface, #fff); border: 1px solid var(--line2); }
.greet-copy:last-child { margin-bottom: 0; }
.greet-option-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 6px; }
.greet-copy p { margin: 0; color: var(--text2); font-size: var(--font-reading); line-height: 1.8; white-space: pre-wrap; overflow-wrap: anywhere; }
.greet-message { margin: 0 0 14px; color: var(--muted2); font-size: var(--font-caption); line-height: 1.6; }
.greet-loading { min-height: 200px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px; color: var(--text2); text-align: center; }
.greet-loading[hidden] { display: none; }
.greet-loading b { font-size: var(--font-reading); }
.greet-loading small { color: var(--muted2); font-size: var(--font-caption); }
.greet-spinner { width: 25px; height: 25px; border: 3px solid color-mix(in srgb, var(--primary) 22%, transparent); border-top-color: var(--primary); border-radius: 50%; animation: greet-spin .8s linear infinite; }
.gen-action { position: relative; padding-right: 28px !important; }
.gen-action::after { content: ""; position: absolute; right: 10px; top: 50%; width: 10px; height: 10px; margin-top: -6px; border: 2px solid currentColor; border-right-color: transparent; border-radius: 50%; animation: greet-spin .8s linear infinite; }
@keyframes greet-spin { to { transform: rotate(360deg); } }
.re-frame-wrap { position: relative; }
.re-frame-loading { position: absolute; inset: 0; z-index: 2; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px; background: var(--canvas-bg, #f4f7fb); color: var(--text2); }
.re-frame-loading[hidden] { display: none; }
.re-frame-loading b { font-size: var(--font-reading); }
.re-frame-loading small { color: var(--muted2); font-size: var(--font-caption); }
.re-frame-spinner { width: 26px; height: 26px; border: 3px solid color-mix(in srgb, var(--primary) 20%, transparent); border-top-color: var(--primary); border-radius: 50%; animation: greet-spin .8s linear infinite; }
body.greet-open { overflow: hidden; }
@media (max-width: 640px) { .greet-modal { padding: 12px; } .greet-modal-head, .greet-modal-body { padding-left: 18px; padding-right: 18px; } .greet-modal-card { max-height: 92vh; border-radius: 14px; } }

/* v4.24 — 简历预览推挤布局：面板打开时整页让出右半（1:1真分屏，非覆盖） */
body.pdf-open { padding-right: 50vw; box-sizing: border-box; }
body.pdf-open .topbar { width: auto; min-width: 0; }
@media (max-width: 900px) {
  body.pdf-open { padding-right: 0; }
  .pdf-panel { width: 100vw; }
}

/* v4.25 — 推挤!important强化 + inline预览 */


/* v4.26 — 自研HTML简历预览弹窗（蒙版+居中，弃浏览器PDF viewer） */
.rv-modal { max-width: 720px; display: flex; flex-direction: column; overflow: hidden; }
.rv-modal .pd-body { white-space: normal; flex: 1; min-height: 0; overflow-y: auto; background: #fff; }
.rv-doc { max-width: 620px; margin: 0 auto; padding: 6px 4px 20px; }
.rv-head h1 { margin: 0; font: 700 24px var(--font-display2); color: var(--ink2, #191C1D); }
.rv-role { margin: 6px 0 0; font: 600 14px var(--font-display2); color: var(--primary); }
.rv-summary { margin: 8px 0 0; font-size: 13px; color: var(--muted2); line-height: 1.8; }
.rv-doc section { margin-top: 18px; }
.rv-doc section h3 { margin: 0 0 10px; font: 600 14px var(--font-display2); color: var(--text2);
  border-bottom: 1px solid var(--line2); padding-bottom: 6px; }
.rv-doc ul { margin: 0; padding-left: 18px; }
.rv-doc li { font-size: 13px; color: var(--muted2); line-height: 1.8; }
.rv-skills { display: flex; flex-wrap: wrap; gap: 7px; margin: 0; }
.rv-skills span { font-size: var(--font-caption); background: #EEF2FF; color: var(--primary); border-radius: 999px; padding: 4px 12px; }
.rv-exp { margin-bottom: 14px; }
.rv-exp-head { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.rv-exp-head b { font-size: var(--font-control); color: var(--text2); }
.rv-exp-head span { font-size: var(--font-caption); color: var(--muted2); }
.rv-exp-head i { font-style: normal; margin-left: auto; font: 500 var(--font-caption) var(--font-mono); color: var(--faint2); }
.rv-pt { margin: 4px 0 0; font-size: var(--font-caption); color: var(--muted2); line-height: 1.7; }
.rv-loading { text-align: center; color: var(--faint2); padding: 40px 0; font-size: 13px; }

/* v4.27 — 简历右侧全高面板（iframe渲染AI的PDF）+ 编辑视图 */
.rv-panel { position: fixed; top: 0; right: 0; width: 50%; height: 100vh; z-index: 90;
  background: #fff; border-left: 1px solid var(--line2); box-shadow: -12px 0 40px rgba(0,0,0,.12);
  display: flex; flex-direction: column; }
.rv-panel[hidden] { display: none; }
.rv-panel .pp-head { padding: 12px 20px; }
.rv-sub { margin: 2px 0 0; font-size: var(--font-caption); color: var(--faint2); }
#rv-frame { flex: 1; width: 100%; border: 0; }
.rv-edit { position: absolute; inset: 52px 0 0 0; background: #F8F9FB; overflow-y: auto; }
.rve-scroll { padding: 18px 22px 30px; display: flex; flex-direction: column; gap: 12px; }
.rv-edit label { display: flex; flex-direction: column; gap: 5px; font-size: var(--font-caption);
  color: var(--muted2); font-weight: 600; }
.rv-edit input, .rv-edit textarea { border: 1px solid var(--line2); border-radius: 8px;
  padding: 8px 11px; font: 400 13px var(--font-body2); background: #fff; color: var(--text2); }
.rv-edit input:focus, .rv-edit textarea:focus { outline: 2px solid rgba(80,70,229,.25); border-color: var(--primary); }
.re-exp { background: #fff; border: 1px solid var(--line2); border-radius: 10px; padding: 10px 12px;
  display: flex; flex-direction: column; gap: 8px; }
.re-exp-row { display: grid; grid-template-columns: 1.2fr 1fr 0.9fr; gap: 8px; }
.re-del { color: var(--err2); align-self: flex-end; }
.rve-foot { display: flex; gap: 10px; margin-top: 6px; }
.rve-note { font-size: var(--font-caption); color: var(--faint2); margin: 0; }
@media (max-width: 900px) { .rv-panel { width: 100vw; } }

/* v4.28 — 编辑器左右分栏（ResumeEditor式所见即所得） */
.rve-cols { display: grid; grid-template-columns: minmax(300px, 46%) 1fr; height: 100%; }
.rve-live { background: #EDEEF0; overflow-y: auto; padding: 18px 16px; }
.rve-live .rv-doc { background: #fff; border-radius: 4px; padding: 26px 28px;
  box-shadow: 0 2px 10px rgba(0,0,0,.08); max-width: 560px; margin: 0 auto; min-height: 400px; }
.rv-head h1 { margin: 0; font: 700 22px var(--font-display2); color: var(--text2); }
.rv-role { margin: 5px 0 0; font: 600 13.5px var(--font-display2); color: var(--primary); }
.rv-summary { margin: 7px 0 0; font-size: var(--font-caption); color: var(--muted2); line-height: 1.8; }
.rv-doc section { margin-top: 16px; }
.rv-doc section h3 { margin: 0 0 8px; font: 600 13px var(--font-display2); color: var(--text2);
  border-bottom: 1px solid var(--line2); padding-bottom: 5px; }
.rv-doc ul { margin: 0; padding-left: 17px; }
.rv-doc li, .rv-doc p { font-size: var(--font-caption); color: var(--muted2); line-height: 1.75; margin: 2px 0; }
.rv-skills { display: flex; flex-wrap: wrap; gap: 6px; margin: 0; }
.rv-skills span { font-size: var(--font-caption); background: #EEF2FF; color: var(--primary); border-radius: 999px; padding: 3px 11px; }
.rv-exp { margin-bottom: 12px; }
.rv-exp-head { display: flex; align-items: baseline; gap: 9px; flex-wrap: wrap; }
.rv-exp-head b { font-size: 13px; color: var(--text2); }
.rv-exp-head span { font-size: var(--font-caption); color: var(--muted2); }
.rv-exp-head i { font-style: normal; margin-left: auto; font: 500 var(--font-caption) var(--font-mono); color: var(--faint2); }
@media (max-width: 1100px) { .rve-cols { grid-template-columns: 1fr; } .rve-live { display: none; } }

/* v4.29 — 简历编辑平台页（ResumeEditor承载） */
.re-hero p { margin: 6px 0 0; font-size: var(--font-control); color: var(--muted2); }
.re-frame-wrap { background: #fff; border: 1px solid var(--line2); border-radius: 16px;
  overflow: hidden; height: calc(100vh - 260px); min-height: 480px; box-shadow: var(--shadow-card2); }
.re-frame-wrap iframe { width: 100%; height: 100%; border: 0; display: block; visibility: hidden; }
.re-frame-wrap[data-frame-ready="1"] iframe { visibility: visible; }

/* v4.30 — 编辑平台：草稿卡片+自动保存状态 */
.draft-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)); gap: 12px; padding: 4px 0; }
.draft-card { display: flex; align-items: center; gap: 12px; border: 1px solid var(--line2);
  border-radius: 12px; padding: 12px 14px; background: #fff; }
.draft-card.from-task { border-left: 3px solid var(--primary); }
.dc-main { flex: 1; min-width: 0; }
.dc-name { display: block; font-size: 13px; color: var(--text2); overflow: hidden;
  text-overflow: ellipsis; white-space: nowrap; }
.dc-meta { margin: 3px 0 0; font-size: var(--font-caption); color: var(--primary); }
.dc-time { margin: 2px 0 0; font: 500 var(--font-caption) var(--font-mono); color: var(--faint2); }
.re-autosave { margin: 10px 2px 0; font-size: var(--font-caption); color: var(--faint2); }

/* v4.31 — 编辑平台全屏化：窄工具条+编辑器占满 */
.re-full { max-width: none; padding: 0 !important; display: flex; flex-direction: column; height: 100%; }
.re-toolbar { flex: none; display: flex; align-items: center; justify-content: space-between;
  gap: 12px; padding: 8px 16px; background: #fff; border-bottom: 1px solid var(--line2); }
.re-tb-left, .re-tb-right { display: inline-flex; align-items: center; gap: 10px; }
.re-title-input { width: min(280px, 30vw); border: 1px solid var(--line2); border-radius: 8px; background: #fff; color: var(--text2); padding: 7px 10px; font-size: var(--font-control); font-weight: 600; }
.re-title-input:focus { outline: 2px solid color-mix(in srgb, var(--primary) 30%, transparent); border-color: var(--primary); }
.re-max { flex: 1; height: auto; min-height: 0; border: 0; border-radius: 0; }
.re-drafts { margin: 12px 16px; padding: 16px; }
.re-autosave { font-size: var(--font-caption); color: var(--faint2); }

/* v4.32 — 简历编辑卡片列表页（简历管理风格） */
.draft-page-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 290px), 1fr)); gap: 16px; }
.draft-page-card { position: relative; background: #fff; border: 1px solid var(--line2);
  border-radius: 16px; padding: 18px 20px 16px; box-shadow: var(--shadow-card2);
  display: flex; flex-direction: column; gap: 7px; transition: box-shadow 140ms ease, transform 140ms ease; }
.draft-page-card:hover { box-shadow: 0 8px 30px rgba(0,0,0,.08); transform: translateY(-1px); }
.draft-page-card.from-task { border-top: 3px solid var(--primary); }
.dpc-badge { position: absolute; top: 14px; right: 16px; font-size: var(--font-caption);
  background: #EEF2FF; color: var(--primary); border-radius: 999px; padding: 2px 10px; }
.draft-page-card:not(.from-task) .dpc-badge { background: var(--line2); color: var(--muted2); }
.dpc-name { font-size: var(--font-control); color: var(--text2); line-height: 1.5; padding-right: 76px;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.dpc-meta { margin: 0; font-size: var(--font-caption); color: var(--muted2); }
.dpc-time { margin: 0; font: 500 var(--font-caption) var(--font-mono); color: var(--faint2); }
.draft-page-card .jb-btn { margin-top: 8px; align-self: flex-start; }

/* v4.33 — 编辑器页全屏：突破content外壳padding/max-width（24px 32px） */
body.re-fullscreen .content { max-width: none; padding: 0; margin: 0; }
body.re-fullscreen .jobs.re-full { max-width: none; height: 100vh; overflow: hidden; }
body.re-fullscreen .re-toolbar { border-top: 0; }

/* v4.36 — easy-resume 独立工作区：隐藏主导航，返回按钮保留在编辑器工具条 */
body.easy-editor-fullscreen { overflow: hidden; }
body.easy-editor-fullscreen .topbar,
body.easy-editor-fullscreen .side { display: none; }
body.easy-editor-fullscreen .shell,
body.easy-editor-fullscreen .content { width: 100%; max-width: none; min-height: 100vh; }
body.easy-editor-fullscreen .content { padding: 0; margin: 0; }
body.easy-editor-fullscreen .jobs.re-full { height: 100vh; }
body.easy-editor-fullscreen .re-toolbar { min-height: 52px; padding: 8px 20px; }

/* v4.34 — 草稿卡片复制简历库rcard风格 + 求职任务来源顶条 */
.draft-rcard.from-task { border-top: 3px solid var(--primary); }

/* v4.37 — 简历按求职任务归档：任务卡片进入对应简历列表 */
.resume-manager-head { margin-bottom: 18px; }
.resume-manager-head .page-sub { margin: 4px 0 0; }
.resume-manager-summary { margin: 9px 0 0; color: var(--faint2); font: 500 var(--font-caption) var(--font-mono); font-variant-numeric: tabular-nums; }
.resume-task-grid { margin-bottom: 18px; }
.resume-task-grid[hidden], .resume-task-detail[hidden] { display: none; }
.resume-task-card { width: 100%; min-height: 216px; box-sizing: border-box; color: inherit; font-family: var(--font-body2); text-align: left; text-decoration: none; }
.resume-task-card .rc-head, .resume-task-card .rc-data, .resume-task-card .rc-foot { width: 100%; }
.resume-task-card .rc-meta, .resume-task-card .rc-sub { display: block; width: 100%; }
.resume-task-card .rc-meta { min-height: 39px; line-height: 1.55; }
.resume-task-card .rc-foot .jb-btn { pointer-events: none; }
.resume-task-detail { overflow: hidden; margin-top: 4px; border: 1px solid var(--line2); border-radius: 14px; background: #fff; }
.resume-task-detail-page { margin-top: 0; }
.resume-task-detail-head { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 16px 18px; border-bottom: 1px solid var(--line-soft); background: #FCFCFD; }
.resume-task-detail-head h2 { margin: 0; color: var(--text2); font: 600 16px/1.4 var(--font-display2); }
.resume-task-detail-head p { margin: 3px 0 0; color: var(--faint2); font-size: var(--font-caption); }
.resume-task-panel { padding: 0 18px 8px; }
.resume-draft-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 20px; min-height: 86px; padding: 14px 0; border-bottom: 1px solid var(--line-soft); }
.resume-draft-row:last-child { border-bottom: 0; }
.resume-draft-main { display: grid; gap: 4px; min-width: 0; }
.resume-draft-title { display: flex; align-items: center; gap: 8px; min-width: 0; }
.resume-draft-title b { overflow: hidden; color: var(--text2); font-size: var(--font-card-title); font-weight: 600; text-overflow: ellipsis; white-space: nowrap; }
.resume-draft-main p { margin: 0; color: var(--muted2); font-size: var(--font-caption); }
.resume-draft-main time { color: var(--faint2); font-size: var(--font-caption); font-variant-numeric: tabular-nums; }
.resume-draft-actions { display: flex; align-items: center; gap: 7px; }
.resume-draft-actions .r-link { min-height: 32px; padding: 0 8px; }
.resume-draft-actions .r-del { border: 0; background: transparent; }
.resume-draft-actions .r-del.confirm { background: var(--err2); color: #fff; }
.resume-manager .sl-empty { display: grid; justify-items: center; gap: 8px; padding: 48px 24px; text-align: center; }
.resume-manager .sl-empty[hidden] { display: none; }
.resume-manager .sl-empty p { margin: 0; }
.resume-manager .sl-empty p + p { color: var(--muted2); font-size: var(--font-control); }
@media (max-width: 640px) {
  .resume-manager-head { align-items: stretch; }
  .resume-manager-head > .jb-btn { width: 100%; }
  .resume-task-card { min-height: 0; }
  .resume-task-detail-head { align-items: flex-start; }
  .resume-task-panel { padding: 0 14px 6px; }
  .resume-draft-row { grid-template-columns: 1fr; gap: 12px; padding: 16px 0; }
  .resume-draft-actions { display: grid; grid-template-columns: 1fr auto auto; }
  .resume-draft-actions .jb-btn, .resume-draft-actions .r-link { min-height: 44px; }
}

/* v4.35 — 重新生成菜单与批量按钮 */
.regen-menu .tm-item { font-size: var(--font-caption); }
.dv-batch-regen { color: var(--muted2); }
.dv-status.is-error { color: var(--err2); }
@media (max-width: 760px) {
  .dl-row { flex-wrap: wrap; }
  .dv-tier .jb-card-head { align-items: flex-start; flex-wrap: wrap; }
  .dv-actions { width: 100%; margin: 4px 0 0 42px; flex-wrap: wrap; }
  .dv-actions .jb-btn, .dv-actions .p-act { flex: 1 1 auto; }
}
@media (max-width: 980px) {
  .dl-row .p-title { flex-basis: 220px; }
  .dl-company { flex-basis: 120px; width: 120px; }
  .dl-platform { flex-basis: 56px; width: 56px; }
  .dl-row > .p-act { min-width: 72px; padding-left: 10px; padding-right: 10px; }
  .dl-row .regen-menu > summary { min-width: 82px; padding-left: 9px; padding-right: 9px; }
}

/* Job library: collected-posting list and a persistent reading pane. */
.job-library .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
.content:has(> .job-library) { max-width: none; padding-bottom: 20px; }
.job-library { height: calc(100dvh - var(--topbar-height) - 40px); min-height: 480px; display: flex; flex-direction: column; }
.jl-heading { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 18px; }
.jl-heading .page-sub { margin: 0; }
.jl-filters { position: relative; display: flex; flex-wrap: nowrap; flex-shrink: 0; align-items: center; gap: 8px; padding: 12px; overflow-x: auto; scrollbar-width: thin; scrollbar-color: #C9CBD5 transparent; border: 1px solid var(--line2); border-radius: 10px; background: #fff; }
.jl-filters label { margin: 0; min-width: 108px; flex: 1 0 108px; }
.jl-filters .jl-search { position: relative; min-width: 176px; flex: 1.7 0 176px; }
.jl-filter-actions { display: flex; flex: none; align-items: center; justify-content: flex-end; gap: 10px; white-space: nowrap; }
.jl-search svg { position: absolute; left: 11px; top: 50%; transform: translateY(-50%); color: var(--faint2); pointer-events: none; }
.jl-search input { padding-left: 36px; }
.jl-filters select { text-overflow: ellipsis; padding-right: 20px; }
.jl-reset { color: var(--muted2); font-size: var(--font-control); padding: 8px 4px; text-underline-offset: 4px; }
.jl-summary { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 8px; padding: 12px 0; color: var(--faint2); font-size: var(--font-caption); }
.jl-summary p { margin: 0; }
.jl-summary strong { color: var(--text2); font-weight: 600; }
.jl-workspace { display: grid; grid-template-columns: minmax(280px, 32%) minmax(0, 1fr); gap: 16px; flex: 1; min-height: 0; }
.jl-results { min-height: 0; min-width: 0; display: flex; flex-direction: column; }
.jl-list { min-height: 0; overflow-y: auto; padding: 2px 6px 2px 2px; display: flex; flex-direction: column; gap: 6px; }
.jl-list, .jl-detail-scroll { scrollbar-width: thin; scrollbar-color: #C9CBD5 transparent; scrollbar-gutter: stable; overscroll-behavior-y: contain; }
.jl-list::-webkit-scrollbar, .jl-detail-scroll::-webkit-scrollbar { width: 6px; }
.jl-list::-webkit-scrollbar-thumb, .jl-detail-scroll::-webkit-scrollbar-thumb { background: #C9CBD5; border-radius: 8px; }
.jl-list::-webkit-scrollbar-thumb:hover, .jl-detail-scroll::-webkit-scrollbar-thumb:hover { background: #9699AA; }
.jl-job { display: block; flex: none; border: 1px solid var(--line2); border-radius: 12px; background: #fff; color: var(--text2); text-decoration: none; overflow: hidden; transition: border-color 150ms, background 150ms; }
.jl-job:hover { border-color: var(--primary-c); }
.jl-job.is-selected { border-color: var(--primary-c); background: #F7F6FF; box-shadow: inset 0 0 0 1px var(--primary-c); }
.jl-job-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; padding: 8px 12px 2px; }
.jl-job-top h2 { margin: 0; min-width: 0; flex: 1; font: 600 var(--font-card-title)/1.5 var(--font-body2); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.jl-job.is-selected h2 { color: var(--primary); }
.jl-salary { color: #BB4B24; font-weight: 600; white-space: nowrap; font-variant-numeric: tabular-nums; }
.jl-job-top .jl-salary { font-size: var(--font-reading); }
.jl-job-line { display: flex; align-items: center; gap: 8px; margin: 0 12px; min-width: 0; color: var(--muted2); font-size: var(--font-caption); line-height: 18px; }
.jl-job-line > span { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
.jl-job-line .jl-card-company { flex: 1; }
.jl-job-requirements { justify-content: space-between; color: var(--faint2); margin-bottom: 8px; }
.jl-card-favorite { color: var(--primary); flex: none; }
.jl-detail { min-width: 0; min-height: 0; background: #fff; border: 1px solid var(--line2); border-radius: 12px; overflow: hidden; }
.jl-detail-scroll { height: 100%; overflow-y: auto; padding: 24px; scrollbar-width: thin; }
.jl-detail-head { display: flex; justify-content: space-between; align-items: baseline; gap: 16px; }
.jl-detail-head h2 { margin: 0; font-size: var(--font-dialog); line-height: 1.5; overflow-wrap: anywhere; }
.jl-detail-head .jl-salary { font-size: var(--font-dialog); }
.jl-detail-meta { display: flex; gap: 8px 14px; flex-wrap: wrap; margin: 12px 0 20px; color: var(--faint2); font-size: var(--font-caption); }
.jl-detail-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.jl-status { margin: 8px 0; font-size: var(--font-caption); color: var(--primary); min-height: 18px; }
.jl-detail[aria-busy=true] .jl-description { opacity: .45; }
.jl-employer { display: flex; align-items: center; gap: 12px; padding: 16px 0; border-top: 1px solid var(--line2); border-bottom: 1px solid var(--line2); }
.jl-company-icon { display: grid; place-items: center; width: 38px; height: 38px; background: var(--primary-soft); color: var(--primary); border-radius: 8px; flex: none; }
.jl-employer h3 { font-size: var(--font-card-title); margin: 0; font-weight: 600; }
.jl-employer div > span { color: var(--faint2); font-size: var(--font-caption); }
.jl-description { margin-top: 24px; }
.jl-description h3 { font-size: var(--font-section); margin: 0 0 16px; }
#jl-jd, .job-viewer-text { white-space: pre-wrap; overflow-wrap: anywhere; font-size: var(--font-reading); line-height: 1.85; max-width: 75ch; }
.jl-source { margin-top: 28px; padding-top: 16px; border-top: 1px solid var(--line2); font-size: var(--font-caption); color: var(--faint2); }
.jl-source div { display: flex; flex-wrap: wrap; gap: 8px 12px; }
.jl-source a { color: var(--primary); text-underline-offset: 3px; }
.jl-source p { margin: 8px 0 0; }
.jl-back { display: none !important; }
.jl-empty { margin-top: 16px; flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 12px; background: #fff; border: 1px dashed var(--line2); border-radius: 12px; padding: 40px 20px; text-align: center; }
.jl-empty svg, .jl-empty p { color: var(--faint2); }
.jl-empty h2 { font-size: var(--font-section); margin: 0; }
.jl-empty p { margin: 0 0 8px; font-size: var(--font-control); }
@media (max-width: 1100px) {
  .jl-workspace { grid-template-columns: minmax(260px, 38%) minmax(0, 1fr); }
  .jl-detail-head { flex-wrap: wrap; gap: 6px; }
  .jl-detail-scroll { padding: 18px; }
}
@media (max-width: 900px) {
  .job-library { height: auto; min-height: 0; }
  .jl-workspace { flex: none; height: 680px; }
}
@media (max-width: 640px) {
  .jl-heading { align-items: flex-start; flex-wrap: wrap; }
  .jl-reset { display: inline-flex; align-items: center; min-height: 44px; }
  .jl-summary > span { display: none; }
  .jl-workspace { display: block; height: auto; }
  .jl-list { overflow: visible; padding: 2px; scrollbar-gutter: auto; }
  .jl-detail { display: none; }
  .jl-workspace.show-detail .jl-results { display: none; }
  .jl-workspace.show-detail .jl-detail { display: block; }
  .jl-workspace.show-detail .jl-back { display: inline-flex !important; margin: 0 0 16px -8px; }
  .jl-detail-scroll { height: auto; overflow: visible; }
}

.jl-delete { color: #B42318; margin-left: auto; }
.jl-detail-actions [aria-pressed=true] { color: var(--primary); background: var(--primary-soft); border-color: var(--primary-c); }
.jl-link-help { margin-bottom: 16px !important; }
.jl-notice { position: fixed; z-index: 50; bottom: 20px; left: 50%; transform: translateX(-50%); display: flex; align-items: center; gap: 12px; max-width: calc(100vw - 32px); padding: 8px 14px; background: #fff; border: 1px solid var(--line2); border-radius: 10px; box-shadow: 0 4px 24px #191C1D1A; font-size: var(--font-control); }
.jl-notice span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.jl-notice button { flex: none; }
.jl-confirm { max-width: min(420px, calc(100vw - 32px)); padding: 24px; border: 1px solid var(--line2); border-radius: 16px; color: var(--text2); }
.jl-confirm::backdrop { background: rgb(16 24 40 / .48); }
.jl-confirm h2 { margin: 0 0 12px; font-size: var(--font-dialog); }
.jl-confirm p { font-size: var(--font-reading); line-height: 1.6; overflow-wrap: anywhere; }
.jl-confirm > div { display: flex; justify-content: flex-end; gap: 8px; margin-top: 24px; }
.jl-danger { background: #B42318; color: #fff; border-color: #B42318; }
.dl-row button.p-title-link { border: 0; background: transparent; padding: 4px 0; text-align: left; cursor: pointer; font-family: inherit; line-height: 1.5; }
.dl-row button.p-title-link:hover { color: var(--primary); text-decoration: underline; text-underline-offset: 3px; }
.job-viewer { width: min(820px, calc(100vw - 40px)); height: min(760px, calc(100dvh - 64px)); max-width: none; max-height: none; padding: 0; border: 1px solid var(--line2); border-radius: 16px; color: var(--text2); background: #fff; overflow: hidden; box-shadow: 0 24px 80px rgb(16 24 40 / .18); }
.job-viewer[open] { display: flex; flex-direction: column; }
.job-viewer::backdrop { background: rgb(16 24 40 / .48); }
html:has(.job-viewer[open]) { overflow: hidden; }
.job-viewer-header { padding: 14px 24px 18px; flex: none; border-bottom: 1px solid var(--line2); }
.job-viewer-top { display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px; font-size: var(--font-caption); color: var(--faint2); }
.job-viewer-label { display: flex; gap: 10px; align-items: center; }
#jv-platform:not(:empty) { color: var(--primary); background: var(--primary-soft); padding: 2px 7px; border-radius: 4px; }
.job-viewer #jv-close { width: 32px; min-width: 32px; height: 32px; min-height: 32px; border: 0; border-radius: 8px; background: transparent; color: var(--muted2); font-size: 20px; }
.job-viewer #jv-close:hover { background: #F2F3F5; }
.job-viewer .jl-detail-head { gap: 10px 24px; }
.job-viewer .jl-detail-head h2 { font-weight: 600; }
.job-viewer-company { display: flex; align-items: center; gap: 7px; margin: 7px 0 12px; color: var(--muted2); font-size: var(--font-control); }
.job-viewer-company svg { flex: none; color: var(--faint2); }
.job-viewer-tags { display: flex; gap: 6px; flex-wrap: wrap; }
.job-viewer-tags > span { padding: 3px 8px; border-radius: 5px; background: #F5F6F8; color: var(--muted2); font-size: var(--font-caption); line-height: 1.5; }
.job-viewer-tags > .is-missing { background: transparent; border: 1px dashed var(--line2); padding: 2px 7px; color: var(--faint2); }
.job-viewer-scroll { flex: 1; padding: 22px 24px; min-height: 0; overflow-y: auto; scrollbar-width: thin; scrollbar-color: #C9CBD5 transparent; overscroll-behavior: contain; }
.job-viewer-section-title { margin: 0 0 18px; font-size: var(--font-reading); font-weight: 600; }
.job-viewer .job-viewer-text { max-width: none; white-space: normal; color: #414650; }
.job-viewer-text p { margin: 0 0 10px; }
.job-viewer-text h4 { margin: 24px 0 10px; color: var(--text2); font-size: var(--font-reading); font-weight: 600; line-height: 1.6; }
.job-viewer-text h4:first-child { margin-top: 0; }
.job-viewer-text .job-viewer-list-line { padding-left: 1.8em; text-indent: -1.8em; margin-bottom: 7px; }
.job-viewer-footer { flex: none; display: flex; align-items: center; justify-content: space-between; gap: 12px 20px; padding: 14px 24px; border-top: 1px solid var(--line2); background: #FAFAFC; }
.job-viewer-source { min-width: 0; display: flex; flex-direction: column; gap: 3px; font-size: var(--font-caption); color: var(--faint2); }
.job-viewer-source a { color: var(--muted2); text-decoration: none; }
.job-viewer-source a:hover { color: var(--primary); text-decoration: underline; }
.job-viewer-footer .jl-detail-actions { flex: none; }
#jv-feedback { color: var(--primary); }
#jv-feedback:empty, .job-viewer .jl-status:empty { display: none; }
@media (max-width: 640px) {
  .job-viewer { width: calc(100vw - 24px); height: calc(100dvh - 24px); border-radius: 12px; }
  .job-viewer-header { padding: 10px 18px 14px; }
  .job-viewer #jv-close { width: 44px; height: 44px; }
  .job-viewer-top { margin-bottom: 6px; }
  .job-viewer-scroll { padding: 18px; }
  .job-viewer-footer { flex-direction: column-reverse; align-items: stretch; padding: 12px 18px; gap: 10px; }
  .job-viewer-footer .jl-detail-actions > * { flex: 1; }
  .job-viewer-source { flex-direction: row; flex-wrap: wrap; justify-content: space-between; gap: 4px 10px; }
  .dl-row button.p-title-link { min-height: 44px; }
}
@media (prefers-reduced-motion: reduce) { .jl-job { transition: none; } }

/* Shared UI contract: page typography, controls, dialogs and responsive shell. */
h1.page-title, .jobs .pt, .scan-head .pt { font-size: var(--font-page); line-height: 1.3; letter-spacing: -.02em; }
.card h2, .card h3, .jb-card-head h2, .jb-card-head h3, .layer-head h2 { font-size: var(--font-section); line-height: 1.4; }
button, input, select, textarea { font-family: var(--font-body2); }
input::placeholder, textarea::placeholder { color: var(--faint2); opacity: 1; }
input, textarea { caret-color: var(--primary); }
::selection { background: #DBD8FF; color: #191C1D; }
:focus-visible { outline: 2px solid var(--primary); outline-offset: 3px; }
:is(.btn, .jb-btn, .p-act, .r-del, .r-link, .top-config, :where(.llm-actions) button, .mod-link, .pb-open) {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  min-height: var(--control-height); padding: 6px 12px; border-radius: var(--control-radius);
  font: 500 var(--font-control)/1.4 var(--font-body2); white-space: nowrap; text-decoration: none;
}
:is(.btn-sm, .jb-btn-sm, .p-act, .r-del, .r-link, .mod-link) { min-height: var(--control-compact); padding: 4px 10px; }
:is(.pd-close, .pp-close, .llm-close) { display: inline-grid; place-items: center; min-width: 36px; min-height: 36px; padding: 6px; flex: none; }
.chip button, .jf-chip button { min-width: 28px; min-height: 28px; border-radius: 6px; }
.llm-dialog label { font-size: var(--font-control); }
.llm-dialog input, .llm-dialog select { min-height: var(--control-height); padding: 7px 10px; font-size: var(--font-control); font-weight: 400; line-height: 1.4; }
.llm-actions button { min-height: var(--control-height); padding: 6px 12px; font: 500 var(--font-control)/1.4 var(--font-body2); }
.sl-dim-detail, .an-list.gap li p, .an-summary, .sl-jd pre, .pd-body { font-size: var(--font-control); line-height: 1.75; }
.sl-jd pre { font-family: var(--font-body2); }
.cmd-card .scan-logs time { color: #A8B1C0; }
.rcard-title, .rc-name, .dc-name { white-space: normal; overflow-wrap: anywhere; }
.avatar-photo[hidden] { display: none; }
.salary-range { display: flex; align-items: center; gap: 10px; }
.salary-range input { min-width: 0; flex: 1; }

.modal-mask, .llm-modal, .greet-modal {
  inset: 0; padding: 24px; background: rgb(16 24 40 / .48); backdrop-filter: none;
}
.llm-backdrop { background: transparent; backdrop-filter: none; }
.modal, .jb-modal, .llm-dialog, .greet-modal-card {
  max-height: calc(100dvh - 48px); border-radius: 16px; scrollbar-width: thin;
  scrollbar-color: var(--outline2) transparent;
}
.llm-dialog { overflow-y: auto; }
.plan-modal { display: flex; flex-direction: column; overflow: hidden; }
.plan-modal .plan-body { flex: 1; min-height: 0; max-height: none; overflow-y: auto; }
.sv-head, .sv-foot, .pd-head, .pd-foot, .greet-modal-head { flex: none; }
.pd-foot, .pd-foot-btns, .greet-head-actions { flex-wrap: wrap; }
.modal[role=dialog] h3, .jb-modal h2, .llm-dialog h2, .greet-modal-head h2 { font-size: var(--font-dialog); line-height: 1.4; }
.jb-modal h3 { font-size: var(--font-section); line-height: 1.4; }
:is(.sv-head, .pd-head, .im-head) :is(h2, h3) { font-size: var(--font-dialog); line-height: 1.4; }
.jf-ctrl, .jf-cityinput input { min-width: 0; }
.jb-form > .jf-label { padding-top: 10px; }
.re-toolbar { flex-wrap: wrap; }
.re-tb-left { flex: 1 1 360px; min-width: 0; flex-wrap: wrap; }
.re-tb-right { flex-wrap: wrap; }
.re-title-input { flex: 1; min-width: 120px; width: auto; min-height: var(--control-height); }
.re-autosave { margin: 0; }
body.easy-editor-fullscreen .jobs.re-full { height: 100dvh; }

@media (max-width: 900px) {
  .topbar { position: relative; height: auto; min-height: 64px; flex-wrap: wrap; gap: 12px; padding: 12px 16px; }
  .brand, .top-config, .avatar { flex-shrink: 0; white-space: nowrap; }
  .side { flex-direction: row; align-items: center; gap: 12px; padding: 10px 16px; overflow-x: auto; }
  .side-add { flex: none; margin: 0; min-height: 44px; border-radius: 8px; padding: 10px 14px; }
  .side nav { flex-direction: row; flex: none; gap: 6px; }
  .nav-item { white-space: nowrap; padding: 10px 12px; min-height: 44px; }
  .side-foot, .nav-div { display: none; }
  .content { min-width: 0; padding: 24px 16px 40px; }
  .plug-banner { flex-wrap: wrap; align-items: flex-start; }
  .plug-banner .pb-body { flex: 1 1 calc(100% - 48px); }
  .plug-banner .pb-pill { margin-left: 0; min-height: 44px; }
  .stepflow { position: static; }
  .scan-head { flex-wrap: wrap; }
  .scan-grid > *, .scan-overall > * { min-width: 0; }
}
@media (max-width: 640px) {
  :root { --font-page: 24px; --control-height: 44px; --control-compact: 44px; }
  .topbar { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 10px; }
  .topbar .spacer { display: none; }
  .brand { grid-column: 1; grid-row: 1; font-size: 18px; }
  .topbar .avatar { grid-column: 2; grid-row: 1; justify-self: end; }
  .topbar .pill { grid-column: 1; grid-row: 2; justify-self: start; min-height: 44px; }
  .top-config { grid-column: 2; grid-row: 2; }
  .jb-form, .plan-body .jb-form { grid-template-columns: minmax(0, 1fr); gap: 8px; }
  .jb-form > .jf-label { padding-top: 12px; }
  .jf-label span { display: inline; margin-left: 8px; }
  .jf-salary { gap: 8px; }
  .jf-salary input[type=number] { width: 88px; min-width: 0; }
  .jf-inline { flex-wrap: wrap; }
  .modal-mask, .llm-modal, .greet-modal { padding: 12px; }
  .modal, .jb-modal, .llm-dialog, .greet-modal-card { width: 100%; max-height: calc(100dvh - 24px); }
  .sv-head, .sv-body, .sv-foot, .im-head, .im-body, .im-foot,
  .pd-head, .pd-body, .pd-foot, .an-modal .pd-head, .an-modal .pd-body,
  .greet-modal-head, .greet-modal-body { padding: 16px; }
  .im-body { gap: 24px; }
  .im-fail { margin: 0 16px 16px; }
  .im-actions, .sv-foot, .survey-foot { flex-wrap: wrap; gap: 8px; }
  .im-feats { flex-direction: column; align-items: stretch; }
  .im-feats > div { max-width: none; width: auto; }
  .scan-overall { gap: 16px; }
  .scan-plat { min-width: 0; width: 100%; }
  .so-right { flex-basis: 100%; }
  .so-statusline, .scan-head .actions { flex-wrap: wrap; }
  body.easy-editor-fullscreen .re-toolbar { padding: 10px 12px; gap: 8px; }
  .re-tb-left, .re-tb-right { width: 100%; gap: 8px; }
  .re-tb-left .re-autosave { flex-basis: 100%; }
  .re-tb-right { display: grid; grid-template-columns: 44px 44px minmax(0, 1fr); }
  .re-tb-right .p-act { padding: 8px; }
  #re-export-btn { grid-column: 1 / 3; }
  .pd-close, .pp-close, .llm-close, .chip button, .jf-chip button { min-width: 44px; min-height: 44px; }
  .dv-actions { margin-left: 0; }
  .dl-row > .dl-remove { width: 44px; min-width: 44px; }
  .pd-titleline, .greet-modal-head { flex-wrap: wrap; }
}
@media (pointer: coarse) {
  :root { --control-height: 44px; --control-compact: 44px; }
  .pd-close, .pp-close, .llm-close, .chip button, .jf-chip button { min-width: 44px; min-height: 44px; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
}

/* Delivery workspace: job selection, full JD, and application preparation. */
.content:has(> .delivery-page) { max-width: none; padding: 20px 24px 16px; }
.delivery-page { max-width: none; width: 100%; height: calc(100dvh - var(--topbar-height) - 36px); display: flex; flex-direction: column; }
.delivery-page .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
.delivery-page .dl-wrap { max-width: none; flex: 1; min-height: 0; display: flex; flex-direction: column; }
.delivery-page .stepflow { position: static; flex: none; margin: 0 0 14px; padding: 0; border: 0; }
.delivery-page-title { flex: none; margin: 0 0 12px; }
.delivery-task-progress {
  position: fixed; top: calc(var(--topbar-height) + 14px); right: 24px; z-index: 90;
  width: min(360px, calc(100vw - var(--sidebar-w) - 48px)); padding: 14px 16px;
  border: 1px solid #DCD9FA; border-radius: 14px; background: rgba(255, 255, 255, .97);
  box-shadow: 0 16px 40px rgba(31, 25, 82, .16); backdrop-filter: blur(12px);
}
.delivery-task-progress-head, .delivery-task-progress-meta { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.delivery-task-progress-head > span { display: inline-flex; align-items: center; gap: 7px; color: var(--primary); font-size: 11px; }
.delivery-task-progress-head i { width: 7px; height: 7px; border-radius: 50%; background: var(--primary); box-shadow: 0 0 0 4px rgba(79, 70, 229, .10); animation: delivery-task-pulse 1.4s ease-in-out infinite; }
.delivery-task-progress-head strong { color: var(--primary); font: 700 13px var(--font-mono); }
.delivery-task-progress-copy { display: grid; gap: 2px; margin: 9px 0 10px; }
.delivery-task-progress-copy b { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--text2); font-size: 13px; }
.delivery-task-progress-copy span { color: var(--muted2); font-size: 11px; }
.delivery-task-progress-bar { height: 6px; overflow: hidden; border-radius: 999px; background: #ECEAFB; }
.delivery-task-progress-bar i { display: block; width: 0; height: 100%; border-radius: inherit; background: linear-gradient(90deg, #4F46E5, #8278F2); transition: width 500ms ease; }
.delivery-task-progress-meta { margin-top: 8px; color: var(--faint2); font-size: 10px; }
.delivery-task-progress-meta span:last-child { color: var(--primary); font-weight: 600; }
.delivery-task-progress.is-done { border-color: #B7E5CF; }
.delivery-task-progress.is-done .delivery-task-progress-head i, .delivery-task-progress.is-done .delivery-task-progress-bar i { background: var(--ok-green); animation: none; }
.delivery-task-progress.is-done .delivery-task-progress-head strong, .delivery-task-progress.is-done .delivery-task-progress-meta span:last-child { color: var(--ok-green); }
.delivery-task-progress.is-error { border-color: #F1C7C7; }
.delivery-task-progress.is-error .delivery-task-progress-head i, .delivery-task-progress.is-error .delivery-task-progress-bar i { background: var(--err2); animation: none; }
.delivery-task-progress.is-error .delivery-task-progress-head strong, .delivery-task-progress.is-error .delivery-task-progress-meta span:last-child { color: var(--err2); }
@keyframes delivery-task-pulse { 50% { opacity: .45; transform: scale(.82); } }
.delivery-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 14px; }
.delivery-toolbar-actions { display: flex; align-items: center; gap: 8px; flex: none; }
.delivery-tiers { display: flex; gap: 6px; overflow-x: auto; }
.delivery-tiers button { display: flex; gap: 8px; align-items: center; border: 1px solid transparent; border-radius: 8px; padding: 8px 12px; background: transparent; color: var(--muted2); font: 500 13px var(--font-body2); white-space: nowrap; cursor: pointer; }
.delivery-tiers button[aria-pressed=true] { background: var(--primary-soft); color: var(--primary); border-color: var(--outline2); }
.delivery-tiers button span { font-size: 12px; font-variant-numeric: tabular-nums; }
.delivery-search { position: relative; width: 220px; flex: none; }
.delivery-search input { width: 100%; min-height: 36px; font-size: 13px; padding: 7px 10px; border: 1px solid var(--line2); border-radius: 8px; background: white; }
.delivery-workspace { display: grid; grid-template-columns: minmax(220px, 24%) minmax(0, 1fr) minmax(300px, 32%); gap: 12px; flex: 1; min-height: 0; }
.delivery-sidebar, .delivery-detail, .delivery-inspector { min-width: 0; min-height: 0; border: 1px solid var(--line2); border-radius: 12px; background: white; overflow: hidden; display: flex; flex-direction: column; }
.delivery-sidebar .dv-tier { margin: 0; min-height: 0; height: 100%; display: flex; flex-direction: column; }
.delivery-sidebar .dv-tier[hidden] { display: none; }
.delivery-list-tools { display: flex; flex-wrap: wrap; gap: 6px; padding: 12px; border-bottom: 1px solid var(--line2); font-size: 12px; color: var(--muted2); }
.delivery-list-tools .p-act { font-size: 12px; padding: 5px 8px; }
.delivery-sidebar .dl-list { padding: 8px; flex: 1; min-height: 0; overflow-y: auto; }
.delivery-job { display: flex; flex-direction: column; gap: 7px; width: 100%; text-align: left; padding: 12px; margin-bottom: 6px; border: 1px solid transparent; border-radius: 8px; background: transparent; cursor: pointer; font-family: var(--font-body2); }
.delivery-job:hover { background: var(--bg2); }
.delivery-job[aria-pressed=true] { border-color: var(--primary); background: var(--primary-soft); }
.delivery-job[hidden] { display: none; }
.delivery-job-title { width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--text2); font-size: 14px; font-weight: 600; }
.delivery-job-company { width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--muted2); font-size: 12px; }
.delivery-job-bottom { display: flex; justify-content: space-between; gap: 8px; color: var(--faint2); font-size: 12px; }
.delivery-job-bottom > span:first-child { color: #BC542D; flex: none; }
.delivery-job-bottom > span:last-child { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.delivery-pane-head { display: flex; justify-content: space-between; align-items: center; padding: 14px 18px; border-bottom: 1px solid var(--line2); flex: none; }
.delivery-pane-head h2 { font-size: 14px; margin: 0; }
.delivery-pane-head > span { color: var(--faint2); font-size: 12px; }
.delivery-detail-scroll, .delivery-inspector-scroll { min-height: 0; flex: 1; overflow-y: auto; padding: 18px; }
.delivery-sidebar .dl-list, .delivery-detail-scroll, .delivery-inspector-scroll { scrollbar-width: thin; scrollbar-color: #C9CBD5 transparent; overscroll-behavior-y: contain; }
.delivery-job-title-row { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; margin-bottom: 6px; }
.delivery-job-title-row h2 { flex: 1; min-width: 0; }
.delivery-job-title-actions { display: flex; flex: none; flex-direction: column; align-items: flex-end; gap: 7px; }
.delivery-job-title-actions .p-act { margin: 0; }
.delivery-origin { display: flex; align-items: center; gap: 5px; color: var(--faint2); font-size: 12px; white-space: nowrap; }
.delivery-origin a { color: var(--primary); }
.delivery-job-heading h2 { font-size: 18px; line-height: 1.5; margin: 0; overflow-wrap: anywhere; }
.delivery-job-heading > strong { display: block; color: #BC542D; font-size: 17px; margin-bottom: 12px; }
.delivery-salary-source { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin: 0 0 12px; }
.delivery-salary-source > strong { color: #BC542D; font-size: 17px; white-space: nowrap; }
.delivery-salary-source .delivery-origin { margin-left: auto; }
.delivery-job-heading p { font-size: 13px; color: var(--muted2); }
.delivery-company-line { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; }
.delivery-company-line > p { margin: 0; }
.delivery-meta { display: flex; flex-wrap: wrap; gap: 6px; margin: 0; }
.delivery-meta span { font-size: 12px; background: var(--bg2); padding: 4px 7px; border-radius: 4px; }
.delivery-jd { margin-top: 22px; padding-top: 18px; border-top: 1px solid var(--line2); }
.delivery-jd h3, .delivery-section h3 { font-size: 14px; margin: 0 0 14px; }
.delivery-jd h4 { font-size: 14px; margin: 22px 0 10px; }
.delivery-jd p { font-size: 14px; color: #414650; line-height: 1.82; margin: 0 0 11px; overflow-wrap: anywhere; }
.delivery-jd .job-description-list-line { padding-left: 1.65em; text-indent: -1.65em; margin-bottom: 8px; }
.delivery-jd h4 + .job-description-list-line { margin-top: 2px; }
.delivery-section { padding-bottom: 20px; margin-bottom: 20px; border-bottom: 1px solid var(--line2); }
.delivery-section:last-child { margin: 0; padding: 0; border: 0; }
.delivery-section p { font-size: 13px; line-height: 1.75; color: var(--muted2); margin: 0 0 12px; }
.delivery-section-head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 8px; margin-bottom: 12px; }
.delivery-section-head h3 { margin: 0; }
.delivery-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.delivery-actions .regen-menu .tm-menu { left: 0; right: auto; z-index: 60; }

/* ---------- 用户认证与账号 ---------- */
.account-menu { position: relative; flex: none; }
.account-menu > summary { list-style: none; cursor: pointer; }
.account-menu > summary::-webkit-details-marker { display: none; }
.account-menu[open] > .avatar { color: var(--primary); border-color: rgba(54, 37, 205, .35); background: var(--primary-soft); }
.account-popover {
  position: absolute; right: 0; top: calc(100% + 10px); z-index: 80; width: 224px;
  padding: 8px; border: 1px solid var(--line2); border-radius: 12px; background: #fff;
  box-shadow: 0 16px 44px rgba(29, 24, 73, .14);
}
.account-identity { display: flex; flex-direction: column; gap: 2px; padding: 10px 10px 12px; border-bottom: 1px solid var(--line-soft); margin-bottom: 5px; }
.account-identity b { font-size: 13px; color: var(--text2); }
.account-identity span { overflow: hidden; color: var(--faint2); font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }
.account-popover a, .account-popover button {
  display: flex; width: 100%; min-height: 34px; align-items: center; padding: 7px 10px;
  border: 0; border-radius: 7px; background: transparent; color: var(--muted2);
  font: inherit; font-size: 12px; text-align: left; text-decoration: none; cursor: pointer;
}
.account-popover a:hover, .account-popover button:hover { background: var(--side-bg); color: var(--text2); }
.account-popover button { color: var(--err2); }
.side-foot { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.auth-body {
  min-height: 100dvh; display: grid; grid-template-columns: minmax(0, 1fr); place-items: center; padding: 28px;
  background:
    radial-gradient(circle at 14% 8%, rgba(80, 70, 229, .12), transparent 32%),
    linear-gradient(135deg, #f7f7fc 0%, #eef0f7 100%);
  color: var(--text2); font-family: var(--font-body2);
}
.auth-shell {
  width: 100%; max-width: 1040px; min-height: 640px; display: grid; grid-template-columns: minmax(0, 1.08fr) minmax(0, .92fr);
  overflow: hidden; border: 1px solid rgba(199, 196, 216, .68); border-radius: 22px;
  background: #fff; box-shadow: 0 28px 80px rgba(29, 24, 73, .13);
}
.auth-brand-panel {
  position: relative; display: flex; flex-direction: column; padding: 44px 48px; overflow: hidden;
  background: linear-gradient(150deg, #211691 0%, #3b2fd2 58%, #594ee8 100%); color: #fff;
}
.auth-brand-panel::after {
  content: ""; position: absolute; right: -130px; bottom: -160px; width: 420px; height: 420px;
  border: 1px solid rgba(255,255,255,.16); border-radius: 50%; box-shadow: 0 0 0 54px rgba(255,255,255,.035), 0 0 0 108px rgba(255,255,255,.025);
}
.auth-brand { display: inline-flex; align-items: center; gap: 11px; color: #fff; font: 700 18px/1.2 var(--font-display2); text-decoration: none; z-index: 1; }
.auth-brand .sigil { width: 34px; height: 34px; display: grid; place-items: center; border-radius: 9px; background: rgba(255,255,255,.16); font-size: 15px; }
.auth-brand small { display: block; margin-top: 2px; color: rgba(255,255,255,.58); font: 600 8px/1 var(--font-mono); letter-spacing: 1.5px; }
.auth-hero-copy { position: relative; z-index: 1; margin: auto 0 34px; max-width: 440px; }
.auth-eyebrow { display: block; margin-bottom: 12px; color: #7469f1; font: 700 10px/1 var(--font-mono); letter-spacing: 1.8px; }
.auth-brand-panel .auth-eyebrow { color: #bdb7ff; }
.auth-hero-copy h1 { margin: 0 0 18px; font: 700 34px/1.3 var(--font-display2); letter-spacing: -.5px; }
.auth-hero-copy p { margin: 0; max-width: 390px; color: rgba(255,255,255,.72); font-size: 14px; line-height: 1.8; }
.auth-flow { position: relative; z-index: 1; display: flex; gap: 22px; margin: 0; padding: 0; list-style: none; }
.auth-flow li { display: flex; flex: 0 0 auto; flex-direction: column; gap: 6px; max-width: none; color: rgba(255,255,255,.72); font-size: 11px; line-height: 1.5; white-space: nowrap; }
.auth-flow b { color: #c7c2ff; font: 600 10px/1 var(--font-mono); }
.auth-card { align-self: center; width: min(360px, calc(100% - 48px)); margin: 38px auto; }
.auth-tabs { display: grid; grid-template-columns: 1fr 1fr; gap: 4px; padding: 4px; border-radius: 10px; background: var(--side-bg); }
.auth-tabs button { min-height: 36px; border: 0; border-radius: 7px; background: transparent; color: var(--faint2); font: 600 13px/1 var(--font-body2); cursor: pointer; }
.auth-tabs button.is-active { background: #fff; color: var(--primary); box-shadow: 0 2px 8px rgba(28, 24, 77, .08); }
.auth-heading { margin: 30px 0 22px; }
.auth-heading h2 { margin: 0 0 7px; font: 700 24px/1.3 var(--font-display2); }
.auth-heading p, .auth-compact-card > p, .account-page-shell > header p { margin: 0; color: var(--faint2); font-size: 12px; }
.auth-card label, .auth-compact-card label, .account-settings-card label { margin: 15px 0 0; color: var(--muted2); font-size: 12px; }
.auth-card input:not([type=checkbox]), .auth-compact-card input, .account-settings-card input {
  width: 100%; min-height: 42px; margin-top: 6px; padding: 9px 12px; border: 1px solid var(--outline2);
  border-radius: 9px; background: #fff; color: var(--text2); font: 400 13px/1.4 var(--font-body2);
  transition: border-color .15s ease, box-shadow .15s ease;
}
.auth-card input:focus, .auth-compact-card input:focus, .account-settings-card input:focus { outline: 0; border-color: var(--primary-c); box-shadow: 0 0 0 3px var(--primary-tint); }
.auth-form-row { display: flex; align-items: center; justify-content: space-between; margin-top: 14px; font-size: 11px; }
.auth-form-row a, .auth-back { color: var(--primary); text-decoration: none; }
.auth-link-button{border:0;background:transparent;color:var(--primary);font:inherit;cursor:pointer;padding:0}
.auth-resend-button{display:inline-flex;align-items:center;justify-content:center;min-width:164px;min-height:38px;padding:8px 14px;border:1px solid var(--primary);border-radius:8px;background:#fff;color:var(--primary);font:600 12px/1.4 var(--font-body2);font-variant-numeric:tabular-nums;cursor:pointer;transition:background .15s,border-color .15s,color .15s}
.auth-resend-button:hover:not(:disabled){background:var(--primary-tint)}
.auth-resend-button:focus-visible{outline:2px solid var(--primary);outline-offset:3px}
.auth-resend-button:disabled{border-color:#d8dce3;background:#f1f3f6;color:#747b88;cursor:not-allowed;box-shadow:none}
.auth-remember { display: inline-flex !important; align-items: center; gap: 6px; margin: 0 !important; color: var(--faint2) !important; font-weight: 400 !important; }
.auth-remember input { accent-color: var(--primary); }
.auth-submit { width: 100%; min-height: 42px; margin-top: 8px; border: 0; border-radius: 9px; background: var(--primary); color: #fff; font: 600 13px/1 var(--font-body2); cursor: pointer; box-shadow: 0 7px 18px rgba(54,37,205,.2); }
.auth-submit:hover { background: var(--primary-c); }
.auth-submit:disabled { opacity: .65; cursor: wait; }
.auth-message { min-height: 20px; margin: 10px 0 0; color: var(--faint2); font-size: 11px; line-height: 1.5; }
.auth-message.is-error { color: var(--err2); }
.auth-message.is-success { color: var(--ok-green); }
.auth-terms { margin: 20px 0 0; color: var(--faint2); font-size: 10px; line-height: 1.6; text-align: center; }
.auth-single { display: grid; }
.auth-compact-card { width: min(420px, 100%); padding: 38px; border: 1px solid var(--line2); border-radius: 18px; background: #fff; box-shadow: 0 20px 60px rgba(29,24,73,.12); }
.auth-compact-card h1 { margin: 16px 0 8px; font: 700 25px/1.25 var(--font-display2); }
.auth-mini-icon { display: grid; width: 38px; height: 38px; margin-top: 28px; place-items: center; border-radius: 10px; background: var(--primary-tint); color: var(--primary); }

.account-page-shell { max-width: 760px; margin: 0 auto; }
.account-page-shell > header { margin-bottom: 24px; }
.account-page-shell > header h1 { margin: 0 0 6px; font: 700 26px/1.3 var(--font-display2); }
.account-settings-card { padding: 26px; border: 1px solid var(--line2); border-radius: 14px; background: #fff; box-shadow: var(--shadow-card2); }
.account-profile-row { display: flex; align-items: center; gap: 14px; }
.account-large-avatar { display: grid; width: 48px; height: 48px; place-items: center; border-radius: 13px; background: var(--primary-tint); color: var(--primary); font-weight: 700; }
.account-profile-row > div { display: flex; flex-direction: column; }
.account-profile-row b { font-size: 14px; }
.account-profile-row span { color: var(--faint2); font-size: 12px; }
.account-profile-row small { width: fit-content; margin-top: 4px; padding: 2px 7px; border-radius: 999px; background: var(--ok-bg); color: var(--ok-green); font-size: 9px; }
.account-divider { height: 1px; margin: 24px 0; background: var(--line-soft); }
.account-form-heading h2 { margin: 0 0 4px; font-size: 16px; }
.account-form-heading p { margin: 0; color: var(--faint2); font-size: 11px; }
.account-password-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
@media (max-width: 760px) {
  .im-connect-actions { grid-template-columns: 1fr; }
  .im-connect-visuals { grid-template-columns: 1fr; }
  .im-browser-shot { min-height: 210px; }
  .im-plugin-example { min-height: 238px; }
}

@media (max-width: 760px) {
  .auth-body { padding: 14px; }
  .auth-shell { min-height: auto; grid-template-columns: 1fr; }
  .auth-brand-panel { min-height: 220px; padding: 28px; }
  .auth-hero-copy { margin: 42px 0 0; }
  .auth-hero-copy h1 { font-size: 24px; }
  .auth-flow { display: none; }
  .auth-card { width: auto; margin: 28px; }
  .account-password-grid { grid-template-columns: 1fr; gap: 0; }
}
.delivery-dimension { margin: 10px 0; font-size: 12px; }
.delivery-dimension summary { display: flex; align-items: center; gap: 10px; cursor: pointer; }
.delivery-dimension summary > span { flex: none; width: 58px; }
.delivery-dimension meter { flex: 1; width: 60px; height: 6px; border: 0; }
.delivery-dimension meter::-webkit-meter-bar { background: var(--line2); border: 0; border-radius: 4px; }
.delivery-dimension meter::-webkit-meter-optimum-value { background: var(--primary-c); }
.delivery-dimension b { width: 22px; text-align: right; color: var(--primary); }
.delivery-dimension p { margin-top: 8px; font-size: 12px; }
.delivery-analysis-notes { font-size: 12px; color: var(--muted2); margin-top: 12px; line-height: 1.8; }
.delivery-analysis-notes summary { cursor: pointer; }
.delivery-analysis-notes ul { padding-left: 18px; }
.delivery-inspector .greet-copy { padding: 10px 12px; }
.delivery-inspector .greet-copy p { font-size: 13px; margin: 0; }
.delivery-empty { color: var(--faint2); font-size: 13px; line-height: 1.7; padding: 10px 0; }
.delivery-page .dv-status { margin: 10px 0 0; font-size: 12px; }
@media (max-width: 1250px) and (min-width: 761px) {
  .delivery-page { height: auto; }
  .delivery-workspace { flex: none; }
  .delivery-workspace { grid-template-columns: 230px minmax(0, 1fr); height: auto; align-items: start; }
  .delivery-sidebar { grid-row: span 2; position: sticky; top: 72px; height: calc(100dvh - 110px); }
  .delivery-detail { max-height: 620px; }
  .delivery-inspector { grid-column: 2; max-height: 760px; }
}
@media (max-width: 760px) {
  .delivery-page { height: auto; }
  .delivery-workspace { flex: none; }
  .delivery-toolbar { flex-direction: column; align-items: stretch; gap: 10px; }
  .delivery-toolbar-actions { width: 100%; }
  .delivery-task-progress { top: calc(var(--topbar-height) + 10px); right: 12px; width: calc(100vw - 24px); }
  .delivery-search { width: 100%; }
  .delivery-tiers button { padding: 8px 10px; min-height: 40px; }
  .delivery-workspace { display: flex; flex-direction: column; height: auto; min-height: 0; }
  .delivery-sidebar { height: 290px; flex: none; }
  .delivery-detail { max-height: 560px; }
  .delivery-inspector { max-height: 780px; }
  .delivery-detail-scroll, .delivery-inspector-scroll { padding: 16px; }
}

/* Shortlist workspace: jobs, full description, and match analysis in one view. */
.content:has(> .shortlist-page) { max-width: none; padding: 20px 24px 16px; }
.shortlist-page { max-width: none; width: 100%; height: calc(100dvh - var(--topbar-height) - 36px); display: flex; flex-direction: column; }
.shortlist-page .stepflow { position: static; flex: none; margin: 0 0 14px; padding: 0; border: 0; }
.shortlist-wrap { max-width: none; flex: 1; min-height: 0; display: flex; flex-direction: column; }
.shortlist-heading { display: flex; align-items: flex-end; justify-content: space-between; gap: 18px; margin-bottom: 12px; }
.shortlist-heading h1 { margin: 0 0 3px; }
.shortlist-heading p { margin: 0; color: var(--faint2); font-size: 12px; }
.shortlist-heading-actions { display: flex; align-items: center; gap: 8px; flex: none; }
.shortlist-progress{position:fixed;z-index:1500;inset:0;display:grid;place-items:center;padding:24px;background:rgba(20,18,29,.34);backdrop-filter:blur(9px);-webkit-backdrop-filter:blur(9px)}
.shortlist-progress[hidden]{display:none}
.shortlist-progress-card{width:min(460px,calc(100vw - 32px));box-sizing:border-box;padding:22px;border:1px solid rgba(255,255,255,.72);border-radius:16px;background:rgba(255,255,255,.94);box-shadow:0 24px 70px rgba(20,18,29,.24)}
.shortlist-progress .slp-row{margin-bottom:12px}.shortlist-progress-card>p{margin:12px 0 0;color:var(--faint2);font-size:11px;line-height:1.6}
.shortlist-rule-note{margin:8px 0 0;padding:7px 9px;border-radius:7px;background:#fff;color:var(--muted2)!important;font-size:11px!important}
.shortlist-retry { flex: none; margin: 0 0 10px; }
.shortlist-toolbar { display: flex; flex: none; gap: 6px; margin-bottom: 12px; overflow-x: auto; }
.shortlist-toolbar button { display: flex; align-items: center; gap: 8px; padding: 8px 12px; border: 1px solid transparent; border-radius: 8px; background: transparent; color: var(--muted2); font: 500 13px var(--font-body2); white-space: nowrap; cursor: pointer; }
.shortlist-toolbar button:hover { background: var(--bg2); }
.shortlist-toolbar button[aria-pressed=true] { border-color: var(--outline2); background: var(--primary-soft); color: var(--primary); }
.shortlist-toolbar button span { font-size: 12px; font-variant-numeric: tabular-nums; }
.shortlist-list-head { flex: none; padding: 13px 14px 11px; border-bottom: 1px solid var(--line2); }
.shortlist-list-head > div { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; }
.shortlist-list-head strong { font-size: 13px; color: var(--text2); }
.shortlist-list-head span, .shortlist-list-head p { color: var(--faint2); font-size: 11px; }
.shortlist-list-head p { margin: 5px 0 0; line-height: 1.5; }
.shortlist-job-list { flex: 1; min-height: 0; overflow-y: auto; padding: 8px; scrollbar-width: thin; scrollbar-color: #C9CBD5 transparent; overscroll-behavior-y: contain; }
.shortlist-empty { padding: 20px 14px; }
.shortlist-job-list .mini-tag { margin-left: 6px; padding: 1px 5px; font-size: 10px; }
.shortlist-workspace { grid-template-columns: minmax(220px, 23%) minmax(340px, 1fr) minmax(310px, 32%); }
.shortlist-salary-source { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin: 0 0 12px; }
.shortlist-salary-source > strong { color: #BC542D; font-size: 17px; white-space: nowrap; }
.shortlist-salary-source .delivery-origin { margin-left: auto; }
.shortlist-tier-control { margin: -2px 0 14px; padding: 0 0 14px; border-bottom: 1px solid var(--line2); }
.shortlist-tier-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 34px; }
.shortlist-tier-row > div:first-child { display: flex; align-items: baseline; gap: 8px; min-width: 0; }
.shortlist-tier-row h3 { margin: 0; font-size: 14px; }
.shortlist-tier-row > div:first-child > span { color: var(--primary); font-size: 12px; white-space: nowrap; }
.shortlist-tier-menu { flex: none; }
.shortlist-tier-menu > summary { min-width: 92px; display: inline-flex; align-items: center; justify-content: center; gap: 6px; }
.shortlist-tier-menu[open] > summary { border-color: var(--primary); color: var(--primary); background: var(--primary-soft); }
.shortlist-tier-menu .tm-menu { min-width: 156px; }
.shortlist-section-title { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 10px; }
.shortlist-section-title h3, .shortlist-analysis-section h3 { margin: 0; font-size: 14px; }
.shortlist-section-title span { color: var(--primary); font-size: 12px; }
.shortlist-inspector .an-summary { padding: 12px 14px; margin: 0 0 18px; }
.shortlist-summary-head { display: flex; align-items: center; gap: 8px; margin-bottom: 7px; }
.shortlist-summary-head strong { font-size: 13px; }
.shortlist-inspector .an-summary p { font-size: 12px; line-height: 1.7; }
.shortlist-analysis-section { padding-bottom: 18px; margin-bottom: 18px; border-bottom: 1px solid var(--line2); }
.shortlist-analysis-section:last-child { padding: 0; margin: 0; border: 0; }
.shortlist-analysis-section h3 { margin-bottom: 12px; }
.shortlist-inspector .sl-dims { margin-bottom: 0; gap: 12px; }
.shortlist-inspector .an-skill-cols { grid-template-columns: 1fr; gap: 10px; }
.shortlist-inspector .an-list { margin-bottom: 0; }
.shortlist-status { min-height: 18px; margin: 6px 0 0; color: var(--faint2); font-size: 11px; }
.match-profile-modal { max-width: 660px; display: flex; flex-direction: column; overflow: hidden; }
.match-profile-body { padding: 22px 28px 26px; overflow-y: auto; }
.match-profile-field { display: block; margin-bottom: 7px; color: var(--text2); font-size: 13px; font-weight: 600; }
.match-profile-body > select { width: 100%; min-height: var(--control-height); padding: 7px 10px; border: 1px solid var(--outline2); border-radius: 8px; background: var(--bg2); color: var(--text2); font: inherit; font-size: 13px; }
.match-profile-body > select:focus { outline: 2px solid rgba(80, 70, 229, .18); border-color: var(--primary); }
.profile-snapshot { margin-top: 18px; padding-top: 17px; border-top: 1px solid var(--line2); }
.profile-snapshot-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.profile-snapshot-head h4 { margin: 0; color: var(--text2); font-size: 15px; }
.profile-snapshot-head span { flex: none; padding: 3px 8px; border-radius: 999px; background: var(--primary-soft); color: var(--primary); font-size: 11px; }
.profile-snapshot > p { margin: 6px 0 14px; color: var(--faint2); font-size: 12px; line-height: 1.6; }
.profile-snapshot dl { display: grid; grid-template-columns: 1fr 1fr; gap: 0 22px; margin: 0; }
.profile-snapshot dl > div { display: grid; grid-template-columns: 72px minmax(0, 1fr); gap: 8px; padding: 9px 0; border-bottom: 1px solid var(--line-soft); min-width: 0; }
.profile-snapshot dt { color: var(--faint2); font-size: 12px; }
.profile-snapshot dd { margin: 0; color: var(--text2); font-size: 12px; line-height: 1.55; overflow-wrap: anywhere; }
.profile-snapshot dl > div:last-child { grid-column: 1 / -1; }
.match-profile-empty { padding: 20px 0 8px; text-align: center; }
.match-profile-empty strong { color: var(--text2); }
.match-profile-empty p { margin: 7px 0 18px; color: var(--faint2); font-size: 13px; }
@media (max-width: 1250px) {
  .shortlist-page { height: auto; }
  .shortlist-workspace { grid-template-columns: 230px minmax(0, 1fr); height: auto; align-items: start; }
}
@media (max-width: 760px) {
  .content:has(> .shortlist-page) { padding: 16px; }
  .shortlist-heading { align-items: flex-start; flex-direction: column; }
  .shortlist-heading-actions { width: 100%; }
  .shortlist-heading-actions .jb-btn { flex: 1; }
  .shortlist-toolbar button { min-height: 40px; padding: 8px 10px; }
  .shortlist-workspace { display: flex; flex-direction: column; }
  .profile-snapshot dl { grid-template-columns: 1fr; }
  .profile-snapshot dl > div:last-child { grid-column: auto; }
  .jf-multi-options { grid-template-columns: 1fr; }
  .jf-strength { grid-template-columns: 1fr; }
}

/* Global text toasts for background generation and retry feedback. */
.text-toast-stack { position: fixed; top: calc(var(--topbar-height) + 14px); right: 20px; z-index: 1800; display: grid; gap: 9px; width: min(380px, calc(100vw - 32px)); pointer-events: none; }
.text-toast { position: relative; padding: 11px 14px 11px 36px; border: 1px solid var(--line2); border-radius: 10px; background: #fff; box-shadow: 0 14px 38px rgba(16, 24, 40, .16); color: var(--text2); font-size: 13px; line-height: 1.55; animation: text-toast-in 180ms ease-out both; }
.text-toast::before { content: ""; position: absolute; left: 15px; top: 17px; width: 8px; height: 8px; border-radius: 50%; background: #667085; }
.text-toast.is-success { border-color: #B7E4CD; background: #F4FCF8; }
.text-toast.is-success::before { background: #159766; }
.text-toast.is-error { border-color: #F2C6C2; background: #FFF7F6; color: #7A271A; }
.text-toast.is-error::before { background: #D92D20; }
.text-toast.is-info { border-color: #D8D5FA; background: #F8F7FF; }
.text-toast.is-info::before { background: var(--primary); }
.text-toast.is-leaving { animation: text-toast-out 180ms ease-in both; }

/* Workbench: six-step operating path, live task state, and account-risk guidance. */
.wb-dashboard { display: grid; gap: 16px; }
.wb-hero { display: flex; align-items: flex-end; justify-content: space-between; gap: 24px; padding: 2px 0 4px; }
.wb-hero h1 { margin: 0; color: var(--text2); font: 700 28px/1.3 var(--font-display2); letter-spacing: -.02em; }
.wb-hero p { margin: 7px 0 0; color: var(--muted2); font-size: 14px; }
.wb-hero-actions { display: flex; flex: none; gap: 8px; }
.wb-section-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; }
.wb-section-head h2 { margin: 0; color: var(--text2); font: 700 16px/1.4 var(--font-display2); }
.wb-section-head p { margin: 3px 0 0; color: var(--faint2); font-size: 12px; }
.wb-journey, .wb-overview, .wb-recent { border: 1px solid var(--line2); border-radius: 14px; background: #fff; }
.wb-journey { padding: 18px; }
.wb-progress-count { flex: none; padding: 4px 9px; border-radius: 999px; background: var(--primary-soft); color: var(--primary); font-size: 11px; font-weight: 600; }
.wb-flow { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); margin-top: 16px; border: 1px solid var(--line2); border-radius: 10px; overflow: hidden; }
.wb-step { position: relative; display: flex; min-width: 0; min-height: 118px; flex-direction: column; gap: 7px; padding: 12px; color: var(--text2); text-decoration: none; background: #fff; transition: background 140ms ease; }
.wb-step + .wb-step { border-left: 1px solid var(--line2); }
.wb-step:hover { background: #F8F8FC; }
.wb-step-index { color: #A4A7B2; font-size: 11px; font-weight: 700; font-variant-numeric: tabular-nums; letter-spacing: .08em; }
.wb-step-copy { display: grid; gap: 4px; }
.wb-step-copy b { font-size: 13px; line-height: 1.45; }
.wb-step-copy small { color: var(--faint2); font-size: 11px; line-height: 1.5; }
.wb-step-state { margin-top: auto; color: var(--faint2); font-size: 11px; }
.wb-step.is-done .wb-step-index, .wb-step.is-done .wb-step-state { color: #16855B; }
.wb-step.is-current { background: var(--primary-soft); box-shadow: inset 0 3px 0 var(--primary); }
.wb-step.is-current .wb-step-index, .wb-step.is-current .wb-step-state { color: var(--primary); font-weight: 600; }
.wb-step.is-waiting { background: #FBFBFC; }
.wb-main-grid { display: grid; grid-template-columns: minmax(260px, .78fr) minmax(0, 1.22fr); gap: 16px; }
.wb-next { display: flex; flex-direction: column; align-items: flex-start; min-height: 188px; padding: 20px; border-radius: 14px; background: #25215F; color: #fff; }
.wb-next-label { color: #C9C4FF; font-size: 11px; font-weight: 600; letter-spacing: .05em; }
.wb-next h2 { margin: 10px 0 5px; color: #fff; font: 700 20px/1.4 var(--font-display2); }
.wb-next p { max-width: 40ch; margin: 0 0 18px; color: #DCD9F6; font-size: 13px; line-height: 1.65; }
.wb-next .btn { margin-top: auto; border-color: #fff; background: #fff; color: #25215F; }
.wb-next .btn:hover { background: #F1F0FF; }
.wb-overview { padding: 18px; }
.wb-metrics { display: grid; grid-template-columns: 1fr 1fr; margin: 14px 0 0; border-top: 1px solid var(--line2); border-left: 1px solid var(--line2); }
.wb-metrics > div { padding: 12px 14px; border-right: 1px solid var(--line2); border-bottom: 1px solid var(--line2); }
.wb-metrics dt { color: var(--faint2); font-size: 11px; }
.wb-metrics dd { margin: 3px 0 0; color: var(--text2); font-size: 20px; font-weight: 700; font-variant-numeric: tabular-nums; }
.wb-metrics dd small { color: var(--muted2); font-size: 11px; font-weight: 400; }
.wb-recent { padding: 18px; }
.wb-section-head > a { color: var(--primary); font-size: 12px; text-decoration: none; }
.wb-round-list { margin-top: 12px; border-top: 1px solid var(--line2); }
.wb-round { display: grid; grid-template-columns: minmax(0, 1fr) auto 72px 18px; align-items: center; gap: 12px; padding: 11px 2px; color: var(--text2); text-decoration: none; border-bottom: 1px solid var(--line2); }
.wb-round:last-child { border-bottom: 0; padding-bottom: 0; }
.wb-round-main { display: grid; min-width: 0; gap: 2px; }
.wb-round-main b { overflow: hidden; font-size: 13px; text-overflow: ellipsis; white-space: nowrap; }
.wb-round-main small { overflow: hidden; color: var(--faint2); font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }
.wb-round-status { padding: 3px 7px; border-radius: 999px; background: var(--primary-soft); color: var(--primary); font-size: 10px; white-space: nowrap; }
.wb-round time { color: var(--faint2); font-size: 10px; font-variant-numeric: tabular-nums; }
.wb-round-arrow { color: var(--primary); transition: transform 140ms ease; }
.wb-round:hover .wb-round-arrow { transform: translateX(3px); }
.wb-round-empty { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-top: 12px; padding-top: 14px; border-top: 1px solid var(--line2); }
.wb-round-empty p { margin: 0; color: var(--muted2); font-size: 13px; }
.wb-safety { display: grid; grid-template-columns: 24px minmax(0, 1fr) auto; align-items: start; gap: 12px; padding: 15px 17px; border: 1px solid #E8D7A8; border-radius: 12px; background: #FFF9EA; color: #5E4A16; }
.wb-safety > svg { margin-top: 1px; color: #9B7418; }
.wb-safety h2 { margin: 0 0 4px; font-size: 13px; }
.wb-safety p { margin: 0; max-width: 92ch; font-size: 12px; line-height: 1.65; }
.wb-safety > a { align-self: center; color: #725513; font-size: 12px; font-weight: 600; white-space: nowrap; text-underline-offset: 3px; }

.jobs-usage-brief { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin: 0 0 12px; padding: 10px 12px; border: 1px solid #E8D7A8; border-radius: 9px; background: #FFF9EA; color: #5E4A16; }
.jobs-usage-brief > div { display: flex; align-items: baseline; gap: 9px; min-width: 0; }
.jobs-usage-brief b { flex: none; font-size: 12px; }
.jobs-usage-brief span { overflow: hidden; font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }
.jobs-usage-brief button { flex: none; padding: 2px 0; border: 0; background: transparent; color: #725513; font: 600 11px var(--font-body2); text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }
body.job-usage-open { overflow: hidden; }
.job-usage-mask { z-index: 1900; }
.job-usage-dialog { width: min(620px, calc(100vw - 32px)); overflow: hidden; border-radius: 16px; background: #fff; box-shadow: 0 24px 70px rgba(16, 24, 40, .24); }
.job-usage-dialog > header { display: flex; align-items: flex-start; gap: 13px; padding: 20px 22px 16px; border-bottom: 1px solid var(--line2); }
.job-usage-icon { display: grid; flex: none; place-items: center; width: 40px; height: 40px; border-radius: 10px; background: #FFF4D7; color: #926C13; }
.job-usage-dialog h2 { margin: 0; color: var(--text2); font: 700 19px/1.4 var(--font-display2); }
.job-usage-dialog header p { margin: 4px 0 0; color: var(--muted2); font-size: 12px; }
.job-usage-body { padding: 18px 22px; }
.job-usage-body ol { display: grid; gap: 13px; margin: 0; padding: 0; list-style: none; counter-reset: usage; }
.job-usage-body li { display: grid; grid-template-columns: 22px minmax(0, 1fr); gap: 2px 8px; counter-increment: usage; }
.job-usage-body li::before { content: counter(usage); grid-row: 1 / span 2; display: grid; place-items: center; width: 22px; height: 22px; border-radius: 50%; background: var(--primary-soft); color: var(--primary); font-size: 10px; font-weight: 700; }
.job-usage-body li b { color: var(--text2); font-size: 13px; }
.job-usage-body li span { color: var(--muted2); font-size: 12px; line-height: 1.65; }
.job-usage-consent { display: flex; align-items: flex-start; gap: 9px; margin: 18px 0 0; padding: 12px; border-radius: 9px; background: #F7F7FA; color: var(--text2); font-size: 12px; line-height: 1.55; cursor: pointer; }
.job-usage-consent input { flex: none; margin: 3px 0 0; accent-color: var(--primary); }
.job-usage-status { min-height: 18px; margin: 6px 0 -5px; color: #B42318; font-size: 11px; }
.job-usage-dialog > footer { display: flex; justify-content: flex-end; gap: 9px; padding: 14px 22px; border-top: 1px solid var(--line2); background: #FCFCFD; }

@media (max-width: 1100px) {
  .wb-flow { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .wb-step:nth-child(4) { border-left: 0; }
  .wb-step:nth-child(n+4) { border-top: 1px solid var(--line2); }
}
@media (max-width: 700px) {
  .wb-hero { align-items: flex-start; flex-direction: column; }
  .wb-hero-actions { width: 100%; }
  .wb-hero-actions .btn { flex: 1; }
  .wb-flow { grid-template-columns: 1fr; }
  .wb-step { min-height: 92px; }
  .wb-step + .wb-step, .wb-step:nth-child(4) { border-left: 0; border-top: 1px solid var(--line2); }
  .wb-main-grid { grid-template-columns: 1fr; }
  .wb-round { grid-template-columns: minmax(0, 1fr) auto 16px; }
  .wb-round time { display: none; }
  .wb-safety { grid-template-columns: 24px minmax(0, 1fr); }
  .wb-safety > a { grid-column: 2; justify-self: start; }
  .jobs-usage-brief { align-items: flex-start; }
  .jobs-usage-brief > div { display: grid; gap: 1px; }
  .jobs-usage-brief span { white-space: normal; }
  .job-usage-dialog > footer { flex-direction: column-reverse; }
  .job-usage-dialog > footer .btn { width: 100%; }
}
@keyframes text-toast-in { from { opacity: 0; transform: translateY(-8px); } to { opacity: 1; transform: translateY(0); } }
@keyframes text-toast-out { to { opacity: 0; transform: translateY(-5px); } }
@media (max-width: 760px) { .text-toast-stack { top: calc(var(--topbar-height) + 8px); right: 16px; } }

/* Account center: every account mutation stays in a focused overlay. */
.account-mask,.admin-mask{left:0!important;padding:20px;z-index:1500;background:rgba(15,23,42,.52);backdrop-filter:blur(4px)}
.account-backdrop{position:absolute;inset:0;width:100%;height:100%;border:0;background:transparent;cursor:default}
.account-dialog{position:relative;width:min(520px,100%);overflow:hidden;border-radius:16px;background:#fff;box-shadow:0 26px 74px rgba(15,23,42,.28)}
.account-dialog-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:21px 23px 17px;border-bottom:1px solid var(--line2)}
.account-dialog-head h2{margin:0;color:var(--text2);font:700 19px/1.35 var(--font-display2);letter-spacing:-.2px}.account-dialog-head p{margin:5px 0 0;color:var(--faint2);font-size:12px;line-height:1.6}
.account-dialog-close{position:relative;display:grid;width:34px;height:34px;flex:0 0 auto;place-items:center;border:0;border-radius:9px;background:var(--side-bg);color:var(--muted2);cursor:pointer}.account-dialog-close::before,.account-dialog-close::after{position:absolute;width:14px;height:1.5px;border-radius:2px;background:currentColor;content:""}.account-dialog-close::before{transform:rotate(45deg)}.account-dialog-close::after{transform:rotate(-45deg)}.account-dialog-close:hover{background:var(--primary-tint);color:var(--primary)}
.account-dialog-identity{display:flex;align-items:center;gap:13px}.account-dialog-avatar{display:grid;width:43px;height:43px;place-items:center;border-radius:12px;background:var(--primary);color:#fff;font-weight:700}.account-dialog-identity h2{font-size:16px}.account-dialog-identity p{max-width:320px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.account-action-list{display:grid;padding:8px}.account-action-row{display:flex;align-items:center;justify-content:space-between;gap:18px;width:100%;padding:13px 14px;border:0;border-radius:10px;background:transparent;color:var(--text2);text-align:left;text-decoration:none;cursor:pointer}.account-action-row:hover{background:var(--side-bg)}.account-action-row span{display:grid;gap:3px}.account-action-row b{font-size:13px}.account-action-row small{color:var(--faint2);font-size:11px;line-height:1.5}.account-action-row em{flex:0 0 auto;color:var(--primary);font-size:11px;font-style:normal}.account-action-row.is-danger b,.account-action-row.is-danger em{color:var(--err2)}
.account-dialog-body{display:grid;gap:14px;padding:20px 23px}.account-dialog-body label{display:grid;gap:6px;color:var(--muted2);font-size:12px;font-weight:600}.account-dialog-body input,.account-dialog-body select{width:100%;min-height:40px;box-sizing:border-box;border:1px solid var(--line2);border-radius:9px;background:#fff;padding:8px 11px;color:var(--text2);font:400 13px/1.4 var(--font-body2)}.account-dialog-body input:focus,.account-dialog-body select:focus{outline:0;border-color:var(--primary-c);box-shadow:0 0 0 3px var(--primary-tint)}
.account-form-message{min-height:18px;margin:0;color:var(--err2);font-size:11px;line-height:1.5}.account-form-message.is-success{color:var(--ok-green)}
.account-dialog-foot{display:flex;justify-content:flex-end;gap:9px;padding:14px 23px;border-top:1px solid var(--line2);background:#fcfcfd}.account-dialog-foot .btn{min-width:88px}.account-dialog-split{display:grid;grid-template-columns:auto 1fr auto auto}.account-danger-dialog .account-dialog-head{background:#fff9f8}.account-danger-dialog .account-dialog-head h2{color:var(--err2)}

/* Super-admin audit console. */
.admin-console{width:100%;max-width:1440px;margin:0 auto}.admin-page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:18px}.admin-page-head h1{margin:0 0 5px;font:700 26px/1.25 var(--font-display2);letter-spacing:-.35px}.admin-page-head p,.admin-panel header p,.admin-panel-toolbar p{margin:0;color:var(--faint2);font-size:12px}
.admin-tabs{display:flex;gap:4px;margin-bottom:16px;padding:4px;border:1px solid var(--line2);border-radius:11px;background:#fff;width:max-content}.admin-tabs button{min-height:34px;padding:0 15px;border:0;border-radius:7px;background:transparent;color:var(--muted2);font:600 12px var(--font-body2);cursor:pointer}.admin-tabs button.is-active{background:var(--primary);color:#fff;box-shadow:0 4px 12px rgba(54,37,205,.2)}
.admin-loading{padding:48px 20px;color:var(--faint2);text-align:center}.admin-view[hidden]{display:none}.admin-metric-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));overflow:hidden;margin-bottom:16px;border:1px solid var(--line2);border-radius:14px;background:#fff;box-shadow:var(--shadow-card2)}.admin-metric-strip>div{display:grid;gap:6px;padding:19px 21px;border-right:1px solid var(--line2)}.admin-metric-strip>div:nth-child(4n){border-right:0}.admin-metric-strip>div:nth-child(n+5){border-top:1px solid var(--line2)}.admin-metric-strip span{color:var(--faint2);font-size:11px}.admin-metric-strip strong{font:700 25px/1 var(--font-display2);font-variant-numeric:tabular-nums}
.admin-overview-grid{display:grid;gap:16px}.admin-panel{overflow:hidden;border:1px solid var(--line2);border-radius:14px;background:#fff;box-shadow:var(--shadow-card2)}.admin-panel>header,.admin-panel-toolbar{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:18px 20px;border-bottom:1px solid var(--line2)}.admin-panel h2{margin:0 0 4px;font:700 16px/1.3 var(--font-display2)}.admin-text-button,.admin-row-action{border:0;background:transparent;color:var(--primary);font:600 11px var(--font-body2);cursor:pointer}
.admin-llm-panel{margin-bottom:16px}.admin-llm-health{padding:5px 9px;border-radius:999px;background:var(--ok-bg);color:var(--ok-green);font-size:10px;font-weight:700}.admin-llm-health.is-warning{background:#fff6dc;color:#725513}.admin-llm-metrics{display:grid;grid-template-columns:repeat(6,minmax(0,1fr))}.admin-llm-metrics>div{display:grid;gap:5px;min-width:0;padding:16px 20px;border-right:1px solid var(--line-soft)}.admin-llm-metrics>div:last-child{border-right:0}.admin-llm-metrics span{color:var(--faint2);font-size:10px}.admin-llm-metrics strong{overflow:hidden;color:var(--text2);font:700 18px/1.15 var(--font-display2);font-variant-numeric:tabular-nums;text-overflow:ellipsis;white-space:nowrap}.admin-llm-note{margin:0;padding:12px 20px;border-top:1px solid var(--line-soft);background:#fcfcfd;color:var(--faint2);font-size:10px;line-height:1.6;overflow-wrap:anywhere}
.admin-llm-controls{display:flex;align-items:flex-end;gap:10px}.admin-llm-controls label{display:grid;gap:4px}.admin-llm-controls label>span{color:var(--faint2);font-size:9px}.admin-llm-controls select{min-width:210px;height:34px;padding:0 30px 0 10px;border:1px solid var(--line2);border-radius:8px;background:#fff;color:var(--text2);font:500 11px var(--font-body2)}.admin-llm-controls select:focus-visible{outline:2px solid var(--primary);outline-offset:2px}
.admin-llm-account-panel{margin-bottom:16px}.admin-llm-account-table{overflow-x:auto}.admin-llm-account-head,.admin-llm-account-row{display:grid;grid-template-columns:minmax(220px,1.5fr) 110px minmax(200px,1.25fr) 120px 90px 90px;align-items:center;gap:14px;min-width:900px;padding:0 20px}.admin-llm-account-head{min-height:38px;border-bottom:1px solid var(--line-soft);background:#fcfcfd;color:var(--faint2);font-size:9px;font-weight:700}.admin-llm-account-row{width:100%;min-height:64px;border:0;border-bottom:1px solid var(--line-soft);background:#fff;color:var(--text2);font:400 11px var(--font-body2);text-align:left;cursor:pointer}.admin-llm-account-row:last-child{border-bottom:0}.admin-llm-account-row:hover,.admin-llm-account-row.is-active{background:var(--primary-soft)}.admin-llm-account-row:focus-visible{outline:2px solid var(--primary);outline-offset:-2px}.admin-llm-account-row>span{display:grid;gap:4px;min-width:0}.admin-llm-account-row strong,.admin-llm-account-row b,.admin-llm-account-row small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-llm-account-row small{color:var(--faint2);font-size:9px}.admin-llm-account-row b{font-size:11px;font-variant-numeric:tabular-nums}
.admin-llm-operation-panel{margin-bottom:16px}.admin-llm-operation-table{overflow-x:auto}.admin-llm-operation-head,.admin-llm-operation-row{display:grid;grid-template-columns:minmax(190px,1.35fr) repeat(5,minmax(125px,1fr));align-items:center;gap:14px;min-width:920px;padding:0 20px}.admin-llm-operation-head{min-height:38px;border-bottom:1px solid var(--line-soft);background:#fcfcfd;color:var(--faint2);font-size:9px;font-weight:700}.admin-llm-operation-row{min-height:64px;border-bottom:1px solid var(--line-soft);font-variant-numeric:tabular-nums}.admin-llm-operation-row:last-child{border-bottom:0}.admin-llm-operation-row>div,.admin-llm-operation-row>span{display:grid;gap:4px;min-width:0}.admin-llm-operation-row strong,.admin-llm-operation-row b{overflow:hidden;color:var(--text2);font-size:11px;text-overflow:ellipsis;white-space:nowrap}.admin-llm-operation-row small{overflow:hidden;color:var(--faint2);font-size:9px;text-overflow:ellipsis;white-space:nowrap}
.admin-llm-task-panel{margin-bottom:16px}.admin-recent-panel{margin-bottom:16px}.admin-panel-limit{color:var(--faint2);font-size:10px}.admin-llm-task-list{max-height:560px;overflow:auto;scrollbar-width:thin}.admin-llm-task{border-bottom:1px solid var(--line-soft)}.admin-llm-task:last-child{border-bottom:0}.admin-llm-task summary{display:grid;grid-template-columns:minmax(220px,1.4fr) minmax(170px,.9fr) 125px 80px 78px;align-items:center;gap:16px;min-height:68px;padding:0 20px;cursor:pointer;list-style-position:inside}.admin-llm-task summary:hover{background:#fafafa}.admin-llm-task summary:focus-visible{outline:2px solid var(--primary);outline-offset:-2px}.admin-llm-task summary>div,.admin-llm-task-account{display:grid;gap:3px;min-width:0}.admin-llm-task summary strong,.admin-llm-task summary small,.admin-llm-task summary>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-llm-task summary strong{font-size:12px}.admin-llm-task summary small,.admin-llm-task summary>span{color:var(--faint2);font-size:10px}.admin-llm-task-account b{overflow:hidden;color:var(--text2);font-size:10px;text-overflow:ellipsis;white-space:nowrap}.admin-llm-task summary>b{font-size:11px;font-variant-numeric:tabular-nums}.admin-llm-status{width:max-content;padding:4px 8px;border-radius:999px;background:var(--side-bg);color:var(--muted2);font-size:10px;font-weight:700}.admin-llm-status.is-succeeded{background:var(--ok-bg);color:var(--ok-green)}.admin-llm-status.is-failed,.admin-llm-status.is-invalid{background:var(--err-bg);color:var(--err2)}.admin-llm-status.is-running,.admin-llm-status.is-awaiting_validation{background:var(--primary-tint);color:var(--primary)}.admin-llm-task-body{padding:0 20px 18px;background:#fcfcfd}.admin-llm-task-meta{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;overflow:hidden;border:1px solid var(--line-soft);border-radius:10px;background:var(--line-soft)}.admin-llm-task-meta>div{display:grid;gap:4px;min-width:0;padding:12px;background:#fff}.admin-llm-task-meta span{color:var(--faint2);font-size:9px}.admin-llm-task-meta b{overflow:hidden;font-size:10px;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.admin-llm-attempts{margin-top:12px;overflow-x:auto}.admin-llm-attempt{display:grid;grid-template-columns:105px 78px repeat(2,92px) 70px 82px 72px minmax(140px,1fr);align-items:center;gap:10px;min-width:820px;padding:10px 12px;border-bottom:1px solid var(--line-soft);background:#fff;color:var(--muted2);font-size:10px}.admin-llm-attempt:last-child{border-bottom:0}.admin-llm-attempt b{color:var(--text2);font-size:10px}.admin-llm-attempt span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-variant-numeric:tabular-nums}
.admin-search{display:flex;align-items:center;gap:7px;width:min(310px,100%);min-height:38px;padding:0 11px;border:1px solid var(--line2);border-radius:9px;background:#fff;color:var(--faint2)}.admin-search input,.admin-audit-filters input,.admin-audit-filters select{border:0;outline:0;background:transparent;color:var(--text2);font:400 12px var(--font-body2)}.admin-search input{width:100%}.admin-user-table{overflow-x:auto}.admin-table-head,.admin-table-row{display:grid;grid-template-columns:minmax(240px,1.7fr) 120px 150px 82px 112px 52px;align-items:center;gap:14px;min-width:800px;padding:0 20px}.admin-table-head{min-height:38px;border-bottom:1px solid var(--line2);background:#fafafb;color:var(--faint2);font-size:10px;font-weight:600}.admin-table-row{min-height:66px;border-bottom:1px solid var(--line-soft);font-size:12px}.admin-table-row:last-child{border-bottom:0}.admin-user-cell{display:flex;align-items:center;gap:10px;min-width:0}.admin-user-cell>span{display:grid;width:34px;height:34px;flex:0 0 auto;place-items:center;border-radius:9px;background:var(--primary-tint);color:var(--primary);font-weight:700}.admin-user-cell>div{display:grid;gap:2px;min-width:0}.admin-user-cell b,.admin-user-cell small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-user-cell small,.admin-table-row time{color:var(--faint2);font-size:10px}.admin-role{width:max-content;padding:4px 8px;border-radius:999px;background:var(--side-bg);color:var(--muted2);font-size:10px}.admin-role.is-admin{background:var(--primary-tint);color:var(--primary)}.admin-status{display:flex;align-items:center;gap:6px;color:var(--muted2);font-size:10px}.admin-status i{width:6px;height:6px;border-radius:50%;background:var(--err2)}.admin-status.is-on i{background:var(--ok-green)}.admin-balance{font-size:11px;font-variant-numeric:tabular-nums}
.admin-audit-filters{display:flex;align-items:center;gap:8px}.admin-audit-filters input,.admin-audit-filters select{min-height:36px;padding:0 10px;border:1px solid var(--line2);border-radius:8px}.admin-audit-row{display:grid;grid-template-columns:142px minmax(180px,.8fr) minmax(260px,1.4fr) 110px;align-items:center;gap:16px;padding:14px 20px;border-bottom:1px solid var(--line-soft)}.admin-audit-row:last-child{border-bottom:0}.admin-audit-row time,.admin-audit-row code{color:var(--faint2);font:400 10px var(--font-mono);font-variant-numeric:tabular-nums}.admin-audit-row>div{display:grid;gap:3px}.admin-audit-row strong{font-size:12px}.admin-audit-row span{color:var(--faint2);font-size:10px}.admin-audit-row p{margin:0;color:var(--muted2);font-size:11px;line-height:1.5;overflow-wrap:anywhere}.admin-pagination{display:flex;align-items:center;justify-content:flex-end;gap:12px;padding:14px 20px;border-top:1px solid var(--line2);background:#fcfcfd}.admin-pagination button{min-height:32px;padding:0 11px;border:1px solid var(--line2);border-radius:7px;background:#fff;color:var(--muted2);font-size:11px;cursor:pointer}.admin-pagination button:disabled{opacity:.4;cursor:not-allowed}.admin-pagination span{color:var(--faint2);font-size:10px}.admin-empty{padding:34px 20px;color:var(--faint2);font-size:12px;text-align:center}.admin-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.admin-inline-action{margin-left:6px;padding:0;border:0;background:transparent;color:var(--primary);font:600 11px var(--font-body2);cursor:pointer}.admin-resume-table{overflow-x:auto}.admin-resume-head,.admin-resume-row{display:grid;grid-template-columns:minmax(240px,1.3fr) minmax(200px,1fr) 90px 150px 52px;align-items:center;gap:14px;min-width:820px;padding:0 20px}.admin-resume-head{min-height:38px;border-bottom:1px solid var(--line2);background:#fafafb;color:var(--faint2);font-size:10px;font-weight:600}.admin-resume-row{min-height:66px;border-bottom:1px solid var(--line-soft);font-size:12px}.admin-resume-row:last-child{border-bottom:0}.admin-resume-row>div{display:grid;gap:3px;min-width:0}.admin-resume-row b,.admin-resume-row small,.admin-resume-row>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-resume-row small,.admin-resume-row time{color:var(--faint2);font-size:10px}.admin-resume-dialog{position:relative;z-index:1;display:flex;flex-direction:column;width:min(900px,calc(100vw - 40px));height:min(86vh,820px);overflow:hidden;border:1px solid var(--line2);border-radius:16px;background:#fff;box-shadow:0 28px 90px rgba(15,23,42,.28)}.admin-resume-preview{flex:1;min-height:0;overflow:auto;padding:24px 30px;background:#fafafa;color:var(--text2);font:400 13px/1.85 var(--font-body2);white-space:pre-wrap;overflow-wrap:anywhere;scrollbar-width:thin}.admin-resume-dialog .account-dialog-foot{flex:none}

@media(max-width:1000px){.admin-metric-strip,.admin-llm-metrics{grid-template-columns:repeat(3,1fr)}.admin-metric-strip>div:nth-child(3),.admin-llm-metrics>div:nth-child(3){border-right:0}.admin-metric-strip>div:nth-child(n+4),.admin-llm-metrics>div:nth-child(n+4){border-top:1px solid var(--line2)}.admin-overview-grid{grid-template-columns:1fr}.admin-llm-task summary{grid-template-columns:minmax(220px,1.4fr) 125px 80px 78px}.admin-llm-task summary>span:first-of-type{display:none}.admin-llm-task-meta{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-audit-row{grid-template-columns:125px minmax(160px,.8fr) minmax(220px,1.4fr)}.admin-audit-row code{display:none}}
@media(max-width:700px){.account-mask,.admin-mask{padding:12px}.account-dialog{max-height:calc(100dvh - 24px);overflow-y:auto}.account-dialog-head,.account-dialog-body,.account-dialog-foot{padding-left:17px;padding-right:17px}.account-dialog-split{grid-template-columns:1fr 1fr}.account-dialog-split span{display:none}.admin-page-head,.admin-panel-toolbar,.admin-llm-panel>header{align-items:stretch;flex-direction:column}.admin-page-head .btn,.admin-search,.admin-llm-controls select{width:100%}.admin-llm-controls{align-items:flex-end}.admin-llm-controls label{min-width:0;flex:1}.admin-tabs{width:100%;box-sizing:border-box;overflow-x:auto}.admin-tabs button{flex:1;min-width:max-content;padding:0 8px}.admin-metric-strip,.admin-llm-metrics{grid-template-columns:1fr 1fr}.admin-metric-strip>div,.admin-llm-metrics>div{border-top:1px solid var(--line2)}.admin-metric-strip>div:nth-child(-n+2),.admin-llm-metrics>div:nth-child(-n+2){border-top:0}.admin-metric-strip>div:nth-child(even),.admin-llm-metrics>div:nth-child(even){border-right:0}.admin-llm-task summary{grid-template-columns:minmax(0,1fr) auto;gap:8px;min-height:62px;padding:10px 16px}.admin-llm-task summary>b,.admin-llm-task summary>span:not(.admin-llm-status){display:none}.admin-llm-task-body{padding:0 12px 12px}.admin-llm-task-meta{grid-template-columns:1fr}.admin-audit-filters{align-items:stretch;flex-direction:column}.admin-audit-row{grid-template-columns:1fr;gap:6px}.admin-audit-row time{order:2}.admin-form-grid{grid-template-columns:1fr}.admin-resume-dialog{width:calc(100vw - 24px);height:calc(100dvh - 24px);border-radius:12px}}

/* Settings center: fixed at the bottom of the sidebar, with account and model management in one overlay. */
.side-bottom{display:grid;gap:8px;margin-top:auto;padding-top:12px;border-top:1px solid var(--line2)}
.side-settings-button{width:100%;border:0;background:transparent;font-family:var(--font-body2);text-align:left;cursor:pointer}
.side-foot{display:flex;align-items:center;gap:9px;width:100%;margin:0;padding:10px 8px 0;border:0;background:transparent;color:var(--faint2);font:400 10px var(--font-body2);cursor:pointer;text-align:left}
.side-foot>span{display:grid;width:26px;height:26px;flex:0 0 auto;place-items:center;border-radius:8px;background:#fff;color:var(--primary);font-size:11px;font-weight:700}
.side-foot>b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}
.side-foot:hover b{color:var(--text2)}
.settings-mask[hidden]{display:none}.settings-mask{left:0!important;padding:20px;z-index:1450;background:rgba(15,23,42,.52);backdrop-filter:blur(4px)}
.settings-dialog{position:relative;width:min(820px,100%);height:min(610px,calc(100dvh - 40px));overflow:hidden;border-radius:17px;background:#fff;box-shadow:0 28px 80px rgba(15,23,42,.3)}
.settings-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;height:78px;box-sizing:border-box;padding:17px 20px 15px 23px;border-bottom:1px solid var(--line2)}
.settings-head h2{margin:0;color:var(--text2);font:700 20px/1.35 var(--font-display2)}.settings-head p{margin:4px 0 0;color:var(--faint2);font-size:11px}
.settings-layout{display:grid;grid-template-columns:190px minmax(0,1fr);height:calc(100% - 78px)}
.settings-tabs{display:flex;flex-direction:column;gap:5px;padding:16px 12px;border-right:1px solid var(--line2);background:#fafafb}
.settings-tabs button{display:flex;align-items:center;gap:9px;width:100%;min-height:39px;padding:0 11px;border:0;border-radius:9px;background:transparent;color:var(--muted2);font:600 12px var(--font-body2);cursor:pointer;text-align:left}
.settings-tabs button:hover{background:var(--side-bg);color:var(--text2)}.settings-tabs button.is-active{background:var(--primary-tint);color:var(--primary)}
.settings-content{min-width:0;overflow-y:auto}.settings-panel{padding:24px 26px}.settings-panel[hidden]{display:none}
.settings-section-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:20px}.settings-section-head h3{margin:0 0 5px;color:var(--text2);font:700 17px/1.35 var(--font-display2)}.settings-section-head p{margin:0;color:var(--faint2);font-size:11px;line-height:1.55}
.settings-role,.settings-source{flex:0 0 auto;padding:5px 9px;border-radius:999px;background:var(--side-bg);color:var(--faint2);font-size:10px;font-weight:600}.settings-source.is-user{background:var(--primary-tint);color:var(--primary)}
.settings-identity-card{display:flex;align-items:center;gap:12px;padding:17px;border:1px solid var(--line2);border-radius:12px;background:#fff}.settings-identity-card>span{display:grid;width:40px;height:40px;flex:0 0 auto;place-items:center;border-radius:11px;background:var(--primary);color:#fff;font-weight:700}.settings-identity-card>div{min-width:0}.settings-identity-card b{font-size:13px}.settings-identity-card p{overflow:hidden;margin:3px 0 0;color:var(--faint2);font-size:11px;text-overflow:ellipsis;white-space:nowrap}.settings-identity-card em{margin-left:auto;color:var(--ok-green);font-size:10px;font-style:normal;white-space:nowrap}
.settings-action-list{display:grid;margin-top:16px;border:1px solid var(--line2);border-radius:12px;overflow:hidden}.settings-action-list>button{display:flex;align-items:center;justify-content:space-between;gap:18px;min-height:64px;padding:12px 16px;border:0;border-bottom:1px solid var(--line-soft);background:#fff;color:var(--text2);font-family:var(--font-body2);text-align:left;cursor:pointer}.settings-action-list>button:last-child{border-bottom:0}.settings-action-list>button:hover{background:#fafafb}.settings-action-list span{display:grid;gap:3px}.settings-action-list b{font-size:12px}.settings-action-list small{color:var(--faint2);font-size:10px}.settings-action-list em{color:var(--primary);font-size:10px;font-style:normal}
.settings-model-head{align-items:center}.settings-model-head .btn{min-height:35px;padding:0 13px;white-space:nowrap}
.settings-model-list{display:grid;gap:8px}.settings-model-row{display:grid;grid-template-columns:92px minmax(0,1fr) auto auto;align-items:center;gap:12px;min-height:66px;padding:10px 13px;border:1px solid var(--line2);border-radius:11px;background:#fff}.settings-model-row.is-active{border-color:rgba(54,37,205,.35);background:var(--primary-soft)}
.settings-model-provider{width:max-content;padding:5px 8px;border-radius:7px;background:var(--side-bg);color:var(--muted2);font-size:10px;font-weight:700}.settings-model-info{display:grid;gap:3px;min-width:0}.settings-model-info b,.settings-model-info small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.settings-model-info b{font-size:12px}.settings-model-info small{color:var(--faint2);font-size:9px}.settings-model-active{padding:4px 8px;border-radius:999px;background:var(--ok-bg);color:var(--ok-green);font-size:9px;font-style:normal;font-weight:700;white-space:nowrap}
.settings-model-actions{display:flex;align-items:center;gap:3px}.settings-model-actions button{min-height:30px;padding:0 7px;border:0;border-radius:7px;background:transparent;color:var(--primary);font:600 10px var(--font-body2);cursor:pointer;white-space:nowrap}.settings-model-actions button:hover{background:var(--primary-tint)}.settings-model-actions button.is-danger{color:var(--err2)}.settings-model-actions button:disabled{opacity:.5;cursor:wait}
.settings-model-empty{display:grid;gap:5px;margin:0;padding:26px 18px;border:1px dashed var(--outline2);border-radius:11px;color:var(--faint2);font-size:11px;text-align:center}.settings-model-empty b{color:var(--text2);font-size:12px}.settings-model-empty.is-error{color:var(--err2)}
.settings-model-form{display:grid;gap:14px}.settings-model-form[hidden]{display:none}.settings-model-editor{margin-top:16px;padding:17px;border:1px solid var(--line2);border-radius:12px;background:#fafafb}.settings-editor-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding-bottom:13px;border-bottom:1px solid var(--line2)}.settings-editor-head h4{margin:0 0 4px;font:700 14px/1.3 var(--font-display2)}.settings-editor-head p{margin:0;color:var(--faint2);font-size:10px}.settings-editor-close{border:0;background:transparent;color:var(--primary);font:600 10px var(--font-body2);cursor:pointer}
.settings-model-form label{display:grid;gap:6px;color:var(--muted2);font-size:11px;font-weight:600}.settings-model-form input,.settings-model-form select{width:100%;min-height:40px;box-sizing:border-box;border:1px solid var(--line2);border-radius:9px;background:#fff;padding:8px 11px;color:var(--text2);font:400 12px/1.4 var(--font-body2)}.settings-model-form input:focus,.settings-model-form select:focus{outline:0;border-color:var(--primary-c);box-shadow:0 0 0 3px var(--primary-tint)}.settings-model-form select:disabled{color:var(--faint2);background:var(--side-bg);cursor:not-allowed}
.settings-model-endpoint{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:9px}.settings-model-endpoint .btn{min-height:40px;white-space:nowrap}.settings-key-note{margin:-3px 0 0;color:var(--faint2);font-size:10px}.settings-form-message{min-height:18px;margin:0;color:var(--muted2);font-size:11px}.settings-form-message.is-error{color:var(--err2)}.settings-form-message.is-success{color:var(--ok-green)}
.settings-form-actions{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:9px;margin-top:2px;padding-top:16px;border-top:1px solid var(--line2)}.settings-form-actions .btn{min-height:36px}
.admin-table-head,.admin-table-row{grid-template-columns:minmax(220px,1.7fr) 112px 140px 82px 72px 102px 52px;gap:12px;min-width:900px}
.settings-supporter-summary{display:flex;align-items:center;justify-content:space-between;gap:18px;margin:0 0 14px;padding:13px 15px;border:1px solid var(--line2);border-radius:12px;background:#fafafb}.settings-supporter-summary>div{min-width:0}.settings-supporter-summary b{display:block;margin-bottom:3px;color:var(--text2);font-size:12px}.settings-supporter-summary p{margin:0;color:var(--faint2);font-size:10px;line-height:1.55}.settings-supporter-summary.is-active{border-color:rgba(5,150,105,.24);background:var(--ok-bg)}.settings-supporter-summary.is-locked>span{flex:none;padding:5px 8px;border-radius:7px;background:var(--side-bg);color:var(--muted2);font-size:9px;font-weight:700;white-space:nowrap}.settings-supporter-summary dl{display:flex;flex:none;gap:18px;margin:0}.settings-supporter-summary dl>div{display:grid;gap:2px}.settings-supporter-summary dt{color:var(--faint2);font-size:9px}.settings-supporter-summary dd{margin:0;color:var(--ok-green);font-size:11px;font-weight:700;font-variant-numeric:tabular-nums}.settings-model-active.is-locked{background:var(--err-bg);color:var(--err2)}#settings-model-add:disabled{opacity:.45;cursor:not-allowed}
.settings-benefit-overview{display:grid;grid-template-columns:1fr 1fr;gap:1px;overflow:hidden;margin-bottom:16px;border:1px solid var(--line2);border-radius:12px;background:var(--line2)}.settings-benefit-overview>div{display:grid;gap:4px;min-width:0;padding:18px;background:#fff}.settings-benefit-overview span{color:var(--faint2);font-size:10px}.settings-benefit-overview b{color:var(--text2);font-size:15px;font-variant-numeric:tabular-nums}.settings-benefit-overview small{color:var(--muted2);font-size:10px;line-height:1.5}.settings-benefit-overview>p{grid-column:1/-1;margin:0;padding:24px;background:#fff;color:var(--faint2);font-size:11px;text-align:center}.settings-benefit-overview>p.is-error{color:var(--err2)}.settings-redeem-form{display:grid;gap:13px;padding:17px;border:1px solid var(--line2);border-radius:12px;background:#fafafb}.settings-redeem-form>div:first-child{display:grid;gap:3px}.settings-redeem-form label{color:var(--text2);font-size:12px;font-weight:700}.settings-redeem-form p{margin:0;color:var(--faint2);font-size:10px;line-height:1.5}.settings-redeem-control{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:9px}.settings-redeem-control input{min-width:0;min-height:40px;box-sizing:border-box;border:1px solid var(--line2);border-radius:9px;background:#fff;padding:8px 11px;color:var(--text2);font:600 12px var(--font-mono);letter-spacing:.04em;text-transform:uppercase}.settings-redeem-control input:focus{outline:0;border-color:var(--primary-c);box-shadow:0 0 0 3px var(--primary-tint)}.settings-payment-note{margin:13px 0 0;color:var(--faint2);font-size:10px;line-height:1.6}
.admin-benefit-metrics{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));overflow:hidden;margin-bottom:16px;border:1px solid var(--line2);border-radius:12px;background:var(--line2)}.admin-benefit-metrics>div{display:grid;gap:5px;min-width:0;padding:15px;background:#fff}.admin-benefit-metrics span{color:var(--faint2);font-size:9px}.admin-benefit-metrics strong{overflow:hidden;color:var(--text2);font-size:14px;text-overflow:ellipsis;white-space:nowrap;font-variant-numeric:tabular-nums}.admin-platform-panel,.admin-code-panel,.admin-benefit-table-panel{margin-bottom:16px}.admin-platform-form{display:grid;grid-template-columns:1fr 1fr 1.2fr;gap:13px;padding:18px 20px}.admin-platform-form label,.admin-code-form label{display:grid;gap:6px;color:var(--muted2);font-size:10px;font-weight:600}.admin-platform-form input,.admin-platform-form select,.admin-code-form input,.admin-code-form select{width:100%;min-height:38px;box-sizing:border-box;border:1px solid var(--line2);border-radius:8px;background:#fff;padding:7px 10px;color:var(--text2);font:400 11px var(--font-body2)}.admin-platform-form input:focus,.admin-platform-form select:focus,.admin-code-form input:focus,.admin-code-form select:focus{outline:0;border-color:var(--primary-c);box-shadow:0 0 0 3px var(--primary-tint)}.admin-platform-form input:disabled{background:var(--side-bg);color:var(--faint2)}.admin-pricing-controls{display:grid;grid-column:1/-1;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px}.admin-pricing-note,.admin-pricing-source{grid-column:1/-1;margin:-2px 0 0;color:var(--faint2);font-size:10px;line-height:1.55}.admin-pricing-source{margin-top:-9px}.admin-pricing-source a{margin-left:3px;color:var(--primary);font-weight:600;text-underline-offset:2px}.admin-platform-form .admin-rate-grid{grid-column:1/-1;grid-template-columns:repeat(3,minmax(0,1fr))}.admin-platform-form>.account-form-message{grid-column:1/-1;margin:0}.admin-platform-form>footer{display:flex;grid-column:1/-1;justify-content:flex-end;gap:8px;padding-top:3px}.admin-code-form{display:grid;grid-template-columns:1.2fr repeat(3,minmax(110px,.7fr)) auto;align-items:end;gap:12px;padding:18px 20px}.admin-code-form label small{color:var(--faint2);font-size:9px;font-weight:400;line-height:1.45}.admin-code-form>.btn{min-height:38px}.admin-code-result{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;padding:0 20px 18px}.admin-code-result[hidden]{display:none}.admin-code-result>div{display:grid;grid-column:1/-1;gap:2px}.admin-code-result b{font-size:11px}.admin-code-result span{color:var(--faint2);font-size:9px}.admin-code-result textarea{min-height:76px;resize:vertical;border:1px solid var(--line2);border-radius:9px;padding:10px;color:var(--text2);font:600 11px/1.6 var(--font-mono)}.admin-benefit-table{overflow-x:auto}.admin-benefit-head,.admin-benefit-row{display:grid;grid-template-columns:minmax(210px,1.25fr) 110px 110px minmax(190px,1fr) 90px;align-items:center;gap:14px;min-width:760px;padding:0 20px}.admin-benefit-table.is-codes .admin-benefit-head,.admin-benefit-table.is-codes .admin-benefit-row{grid-template-columns:minmax(150px,1fr) 110px 140px 140px 80px minmax(170px,1fr);min-width:950px}.admin-benefit-head{min-height:38px;border-bottom:1px solid var(--line2);background:#fafafb;color:var(--faint2);font-size:9px;font-weight:700}.admin-benefit-row{min-height:58px;border-bottom:1px solid var(--line-soft);color:var(--muted2);font-size:10px}.admin-benefit-row:last-child{border-bottom:0}.admin-benefit-row b{overflow:hidden;color:var(--text2);font-size:11px;text-overflow:ellipsis;white-space:nowrap}.admin-benefit-row time{font-variant-numeric:tabular-nums}.admin-code-actions{display:flex;align-items:center;gap:8px;min-width:0}.admin-code-actions .admin-inline-action{margin:0}.admin-code-actions .admin-inline-action.is-danger{color:var(--err2)}.admin-code-actions button:disabled{opacity:.4;cursor:not-allowed}.admin-code-actions small{color:var(--faint2);white-space:nowrap}
body.settings-open{overflow:hidden}
.re-ai-costs{padding-left:10px;border-left:1px solid var(--line2);color:var(--faint2);font-size:10px;white-space:nowrap}
.ai-point-note{margin-left:auto;color:var(--faint2);font-size:10px;line-height:1.45}
@media(max-width:900px){.side-bottom{display:flex;flex:none;margin:0;padding:0;border:0}.side-settings-button{width:auto;flex:none}.side-foot{display:none}}
@media(max-width:1100px){.admin-benefit-metrics{grid-template-columns:repeat(3,minmax(0,1fr))}.admin-platform-form{grid-template-columns:1fr 1fr}.admin-pricing-controls{grid-template-columns:1fr 1fr}.admin-code-form{grid-template-columns:1fr 1fr}.admin-code-form>.btn{width:100%}}
@media(max-width:700px){.settings-mask{padding:12px}.settings-dialog{height:min(650px,calc(100dvh - 24px))}.settings-head{height:72px;padding:15px 17px}.settings-layout{grid-template-columns:1fr;height:calc(100% - 72px)}.settings-tabs{flex-direction:row;padding:9px 12px;border-right:0;border-bottom:1px solid var(--line2);overflow-x:auto}.settings-tabs button{justify-content:center;min-width:max-content}.settings-content{min-height:0}.settings-panel{padding:19px 17px}.settings-supporter-summary{align-items:flex-start;flex-direction:column}.settings-supporter-summary dl{width:100%;justify-content:space-between}.settings-benefit-overview{grid-template-columns:1fr}.settings-redeem-control{grid-template-columns:1fr}.settings-redeem-control .btn{width:100%}.settings-model-row{grid-template-columns:76px minmax(0,1fr) auto}.settings-model-actions{grid-column:1/-1;justify-content:flex-end;border-top:1px solid var(--line-soft);padding-top:7px}.settings-model-endpoint{grid-template-columns:1fr}.settings-model-endpoint .btn{width:100%}.settings-form-actions{grid-template-columns:1fr 1fr}.settings-form-actions>span{display:none}.settings-form-actions .btn{width:100%}.admin-platform-form,.admin-pricing-controls,.admin-platform-form .admin-rate-grid{grid-template-columns:1fr}}

/* Platform routing: primary and fallback are intentionally presented as two calm, inspectable cards. */
.admin-route-block{display:grid;grid-column:1/-1;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px;padding:16px;border:1px solid var(--line2);border-radius:12px;background:#fff}.admin-route-primary{border-color:#dcd8ff;background:linear-gradient(135deg,#fbfaff,#fff)}.admin-route-fallback{border-color:#d5e9e3;background:linear-gradient(135deg,#f8fffc,#fff)}.admin-route-heading,.admin-route-help,.admin-route-block>.admin-form-grid,.admin-route-block>.admin-pricing-controls{grid-column:1/-1}.admin-route-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.admin-route-heading h3{margin:2px 0 0;color:var(--text2);font-size:14px}.admin-route-kicker{color:var(--primary);font-size:9px;font-weight:800;letter-spacing:.12em;text-transform:uppercase}.admin-route-badge{padding:5px 9px;border-radius:999px;background:var(--primary-tint);color:var(--primary);font-size:9px;font-weight:700}.admin-route-help{margin:0;color:var(--faint2);font-size:10px;line-height:1.55}.admin-switch{display:flex!important;align-items:center;gap:7px;cursor:pointer!important;color:var(--primary)!important}.admin-switch input{width:16px!important;min-height:16px!important;accent-color:var(--primary)}.admin-route-status{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin:0 20px 18px;padding:10px 12px;border:1px solid var(--line2);border-radius:9px;background:#fafafb;color:var(--muted2);font-size:10px}.admin-route-status b{color:var(--text2)}.admin-route-dot{width:7px;height:7px;border-radius:50%;background:var(--ok-green);box-shadow:0 0 0 4px rgba(18,166,118,.1)}.admin-route-dot.is-fallback{background:#ee9b35;box-shadow:0 0 0 4px rgba(238,155,53,.12)}.admin-fallback-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.admin-fallback-policy{grid-template-columns:repeat(3,minmax(0,1fr))}.admin-route-block small{display:block;margin-top:4px;color:var(--faint2);font-size:9px;font-weight:400}
.admin-route-block label{display:grid;gap:6px;color:var(--muted2);font-size:10px;font-weight:600}
.admin-model-picker{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:7px;align-items:center}.admin-model-picker input{min-width:0}.admin-model-fetch{min-height:32px;padding:0 10px;border:1px solid var(--line2);border-radius:7px;background:#fff;color:var(--primary);font-size:10px;font-weight:700;cursor:pointer;white-space:nowrap}.admin-model-fetch:hover{border-color:var(--primary);background:var(--primary-tint)}.admin-model-fetch:disabled{opacity:.55;cursor:wait}
@media(max-width:1100px){.admin-route-block{grid-template-columns:1fr 1fr}.admin-fallback-grid{grid-template-columns:1fr 1fr}.admin-fallback-policy{grid-template-columns:1fr 1fr}}
@media(max-width:700px){.admin-route-block{grid-template-columns:1fr}.admin-fallback-grid,.admin-fallback-policy{grid-template-columns:1fr}.admin-route-status{margin-left:14px;margin-right:14px}}

/* Community: public product feedback, discussion, and administrator-assisted diagnosis. */
.top-community-link{display:inline-flex;align-items:center;gap:7px;min-height:36px;padding:0 11px;border-radius:8px;color:var(--muted2);font-size:12px;font-weight:600;text-decoration:none;white-space:nowrap}.top-community-link:hover,.top-community-link.is-active{background:var(--primary-tint);color:var(--primary)}
.community-page,.community-detail{width:100%;max-width:920px;margin:0 auto}.community-head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin:3px 0 18px}.community-head h1{margin:0;color:var(--text2);font:700 28px/1.3 var(--font-display2);letter-spacing:-.02em}.community-head p{max-width:66ch;margin:6px 0 0;color:var(--muted2);font-size:13px}.community-head .btn{flex:none}
.community-filters{display:flex;gap:5px;margin-bottom:12px;padding:4px;border:1px solid var(--line2);border-radius:11px;background:#fff;width:max-content;max-width:100%;overflow-x:auto}.community-filters button{min-height:34px;padding:0 14px;border:0;border-radius:7px;background:transparent;color:var(--muted2);font:600 12px var(--font-body2);white-space:nowrap;cursor:pointer}.community-filters button:hover{background:var(--side-bg);color:var(--text2)}.community-filters button.is-active{background:var(--primary);color:#fff}
.community-feed{overflow:hidden;border:1px solid var(--line2);border-radius:14px;background:#fff;box-shadow:var(--shadow-card2)}.community-row{position:relative;display:grid;gap:9px;padding:18px 20px;border-bottom:1px solid var(--line-soft)}.community-row:last-child{border-bottom:0}.community-row:hover{background:#fafafb}.community-row>a{position:absolute;inset:0;z-index:1}.community-row>a:focus-visible{outline:2px solid var(--primary);outline-offset:-3px}.community-row-meta{display:flex;align-items:center;gap:8px;min-width:0;color:var(--faint2);font-size:10px}.community-row-meta time{margin-inline-start:auto;font-variant-numeric:tabular-nums}.community-row-meta>span:not(.community-kind){padding:3px 7px;border-radius:999px;background:var(--side-bg);color:var(--muted2);font-weight:600}.community-row-meta>span.is-diagnosed{background:var(--ok-bg);color:var(--ok-green)}.community-kind{width:max-content;padding:4px 8px;border-radius:999px;background:var(--primary-tint);color:var(--primary);font-size:10px;font-weight:700}.community-kind.is-feedback{background:#FFF4E8;color:#A8500A}.community-row h2{overflow-wrap:anywhere;margin:0;color:var(--text2);font:700 16px/1.45 var(--font-display2)}.community-row>p{display:-webkit-box;overflow:hidden;margin:0;color:var(--muted2);font-size:12px;line-height:1.7;overflow-wrap:anywhere;-webkit-box-orient:vertical;-webkit-line-clamp:3;white-space:pre-line}.community-row>footer{display:flex;align-items:center;gap:14px;margin-top:3px;color:var(--faint2);font-size:10px}.community-row>footer b{margin-inline-start:auto;color:var(--primary);font-size:11px}.community-author{display:inline-flex;align-items:center;gap:7px;min-width:0}.community-author i,.community-article-author>i,.community-comment>i{display:grid;width:26px;height:26px;flex:0 0 auto;place-items:center;border-radius:8px;background:var(--primary-tint);color:var(--primary);font-size:10px;font-style:normal;font-weight:700}
.community-state{display:grid;justify-items:center;gap:7px;padding:58px 22px;color:var(--faint2);font-size:12px;text-align:center}.community-state b{color:var(--text2);font-size:14px}.community-state span{max-width:52ch;overflow-wrap:anywhere}.community-state .btn{margin-top:7px}.community-state.is-error{color:var(--err2)}.community-pagination{display:flex;align-items:center;justify-content:flex-end;gap:12px;padding:14px 2px}.community-pagination[hidden]{display:none}.community-pagination button{min-height:34px;padding:0 12px;border:1px solid var(--line2);border-radius:8px;background:#fff;color:var(--muted2);font:600 11px var(--font-body2);cursor:pointer}.community-pagination button:disabled{opacity:.45;cursor:not-allowed}.community-pagination span{color:var(--faint2);font-size:10px;font-variant-numeric:tabular-nums}
.community-mask[hidden]{display:none}.community-mask{left:0!important;z-index:1460;padding:20px;background:rgba(15,23,42,.52);backdrop-filter:blur(4px)}.community-form{width:min(640px,100%);max-height:calc(100dvh - 40px);overflow-y:auto}.community-form .account-dialog-body{display:grid;gap:13px}.community-form label{display:grid;gap:6px;margin:0;color:var(--muted2);font-size:11px}.community-form input,.community-form select,.community-form textarea,.community-comment-form textarea{width:100%;box-sizing:border-box;border:1px solid var(--line2);border-radius:9px;background:#fff;padding:9px 11px;color:var(--text2);font:400 13px/1.6 var(--font-body2);resize:vertical}.community-form input,.community-form select{min-height:42px}.community-form input:focus,.community-form select:focus,.community-form textarea:focus,.community-comment-form textarea:focus{outline:0;border-color:var(--primary-c);box-shadow:0 0 0 3px var(--primary-tint)}.community-form-note{display:flex;align-items:center;justify-content:space-between;gap:14px;color:var(--faint2);font-size:10px}.community-form-note b{flex:none;font-variant-numeric:tabular-nums}.community-modal-open{overflow:hidden}
.community-back{display:inline-flex;margin-bottom:14px;color:var(--primary);font-size:12px;font-weight:600;text-decoration:none}.community-back::before{content:"←";margin-inline-end:7px}.community-article{overflow:hidden;border:1px solid var(--line2);border-radius:14px;background:#fff;box-shadow:var(--shadow-card2)}.community-article>header{padding:22px 24px 18px;border-bottom:1px solid var(--line-soft)}.community-article h1{max-width:30ch;margin:10px 0 14px;color:var(--text2);font:700 clamp(22px,3vw,30px)/1.35 var(--font-display2);letter-spacing:-.02em;overflow-wrap:anywhere}.community-article-author{display:flex;align-items:center;gap:9px}.community-article-author>i{width:32px;height:32px}.community-article-author>span{display:grid;gap:2px}.community-article-author b{font-size:11px}.community-article-author small{color:var(--faint2);font-size:10px}.community-article-content{padding:24px;color:var(--text2);font-size:14px;line-height:1.9;overflow-wrap:anywhere;white-space:pre-wrap}.community-owner-actions{display:flex;justify-content:flex-end;gap:8px;padding:14px 24px;border-top:1px solid var(--line-soft);background:#fcfcfd}
.community-diagnosis{margin-top:16px;overflow:hidden;border:1px solid #D8D5FA;border-radius:14px;background:#F8F7FF}.community-diagnosis>header{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;padding:18px 20px;border-bottom:1px solid #E5E2FB}.community-diagnosis>header span{color:var(--primary);font-size:10px;font-weight:700}.community-diagnosis h2{max-width:55ch;margin:4px 0 0;color:var(--text2);font:700 15px/1.5 var(--font-display2);overflow-wrap:anywhere}.community-diagnosis>header>div:last-child{display:flex;flex:none;gap:6px}.community-diagnosis>header b{padding:4px 8px;border-radius:999px;background:#fff;color:var(--muted2);font-size:9px}.community-diagnosis>header b.is-priority-high,.community-diagnosis>header b.is-priority-urgent{background:var(--err-bg);color:var(--err2)}.community-diagnosis dl{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin:0}.community-diagnosis dl>div{padding:17px 20px;border-inline-end:1px solid #E5E2FB}.community-diagnosis dl>div:last-child{border-inline-end:0}.community-diagnosis dt{margin-bottom:7px;color:var(--primary);font-size:10px;font-weight:700}.community-diagnosis dd{margin:0;color:var(--muted2);font-size:11px;line-height:1.7;overflow-wrap:anywhere}.community-evidence{padding:0 20px 16px}.community-evidence>b{font-size:10px}.community-evidence ul{margin:7px 0 0;padding-inline-start:18px;color:var(--muted2);font-size:10px}.community-diagnosis>footer{padding:10px 20px;border-top:1px solid #E5E2FB;color:var(--faint2);font-size:9px}
.community-comments{margin-top:16px;border:1px solid var(--line2);border-radius:14px;background:#fff}.community-comments[hidden]{display:none}.community-comments>header{display:flex;align-items:center;justify-content:space-between;padding:17px 20px;border-bottom:1px solid var(--line2)}.community-comments>header h2{margin:0;font:700 16px/1.4 var(--font-display2)}.community-comments>header span{color:var(--faint2);font-size:10px}.community-comment-form{padding:17px 20px;border-bottom:1px solid var(--line2);background:#fcfcfd}.community-comment-form label{display:block;margin:0 0 7px;color:var(--text2);font-size:11px}.community-comment-form textarea{min-height:96px}.community-comment-form>footer{display:flex;align-items:center;justify-content:flex-end;gap:12px;margin-top:8px}.community-comment-form>footer span{color:var(--faint2);font-size:9px}.community-comment-form .account-form-message{margin:6px 0 0}.community-comment{display:grid;grid-template-columns:32px minmax(0,1fr);gap:11px;padding:16px 20px;border-bottom:1px solid var(--line-soft)}.community-comment:last-child{border-bottom:0}.community-comment>div{min-width:0}.community-comment header{display:flex;align-items:center;gap:9px}.community-comment header b{font-size:11px}.community-comment header time{color:var(--faint2);font-size:9px}.community-comment header button{margin-inline-start:auto;border:0;background:transparent;color:var(--err2);font:600 10px var(--font-body2);cursor:pointer}.community-comment p{margin:7px 0 0;color:var(--muted2);font-size:12px;line-height:1.75;overflow-wrap:anywhere;white-space:pre-wrap}.community-comment-empty,.community-comment-limit{margin:0;padding:28px 20px;color:var(--faint2);font-size:11px;text-align:center}.community-comment-limit{padding:9px 20px;border-bottom:1px solid var(--line-soft);background:#fcfcfd}
@media(max-width:700px){.topbar .top-community-link{grid-column:1;grid-row:2;justify-self:start;min-height:44px}.topbar .pill{grid-column:2;grid-row:2;justify-self:end;min-height:44px}.community-head{align-items:stretch;flex-direction:column;gap:14px}.community-head .btn{width:100%}.community-filters{width:100%}.community-filters button{flex:1}.community-row{padding:16px}.community-row>footer{flex-wrap:wrap}.community-row>footer b{margin-inline-start:auto}.community-mask{padding:12px}.community-form{max-height:calc(100dvh - 24px)}.community-form input,.community-form select,.community-form textarea,.community-comment-form textarea{font-size:16px}.community-form-note{align-items:flex-start;flex-direction:column}.community-article>header,.community-article-content{padding:18px}.community-owner-actions{padding:12px 18px}.community-diagnosis>header{align-items:stretch;flex-direction:column}.community-diagnosis>header>div:last-child{flex-wrap:wrap}.community-diagnosis dl{grid-template-columns:1fr}.community-diagnosis dl>div{border-inline-end:0;border-bottom:1px solid #E5E2FB}.community-diagnosis dl>div:last-child{border-bottom:0}.community-comment-form,.community-comment{padding-inline:16px}}
.admin-community-list{max-height:680px;overflow-y:auto;scrollbar-width:thin}.admin-community-row{display:grid;gap:9px;padding:18px 20px;border-bottom:1px solid var(--line-soft)}.admin-community-row:last-child{border-bottom:0}.admin-community-meta{display:flex;align-items:center;gap:8px;min-width:0}.admin-community-meta>b{font-size:11px}.admin-community-meta>small,.admin-community-meta>time{color:var(--faint2);font-size:9px}.admin-community-meta>time{margin-inline-start:auto;font-variant-numeric:tabular-nums}.admin-community-row h3{margin:0;color:var(--text2);font:700 14px/1.5 var(--font-display2);overflow-wrap:anywhere}.admin-community-content{display:-webkit-box;overflow:hidden;margin:0;color:var(--muted2);font-size:11px;line-height:1.65;overflow-wrap:anywhere;-webkit-box-orient:vertical;-webkit-line-clamp:3;white-space:pre-line}.admin-community-diagnosis{display:grid;gap:3px;padding:11px 13px;border-radius:9px;background:var(--primary-soft)}.admin-community-diagnosis b{font-size:11px}.admin-community-diagnosis span{color:var(--primary);font-size:9px;font-weight:600}.admin-community-diagnosis p{margin:3px 0 0;color:var(--muted2);font-size:10px;line-height:1.6;overflow-wrap:anywhere}.admin-community-pending{padding:10px 12px;border:1px dashed var(--outline2);border-radius:9px;color:var(--faint2);font-size:10px}.admin-community-row>footer{display:flex;align-items:center;justify-content:flex-end;gap:10px}.admin-community-row>footer>span{margin-inline-end:auto;color:var(--faint2);font-size:10px}.admin-community-row>footer .admin-row-action{text-decoration:none}.admin-community-row>footer .btn{min-height:32px;padding:0 11px;font-size:10px}.admin-community-row>footer .btn:disabled{cursor:wait;opacity:.6}
@media(max-width:700px){.admin-community-meta{align-items:flex-start;flex-wrap:wrap}.admin-community-meta>time{width:100%;margin:0}.admin-community-row{padding:16px}.admin-community-row>footer{flex-wrap:wrap}.admin-community-row>footer>span{width:100%;margin:0}.admin-community-row>footer .btn{flex:1}}
.community-image-field{display:grid;gap:9px}.community-image-field>div:first-child{display:flex;align-items:center;justify-content:space-between;gap:12px}.community-image-field>div:first-child>b{color:var(--muted2);font-size:11px}.community-image-field>div:first-child>span{color:var(--faint2);font-size:10px;font-variant-numeric:tabular-nums}.community-image-picker{position:relative;display:block!important;min-height:64px;padding:12px 14px!important;border:1px dashed var(--outline2);border-radius:10px;background:var(--side-bg);cursor:pointer}.community-image-picker:hover{border-color:var(--primary-c);background:var(--primary-soft)}.community-image-picker:focus-within{outline:2px solid var(--primary);outline-offset:2px}.community-image-picker input{position:absolute!important;width:1px!important;height:1px!important;overflow:hidden!important;padding:0!important;border:0!important;opacity:0}.community-image-picker>span{display:grid;gap:3px}.community-image-picker>span>b{color:var(--primary);font-size:12px}.community-image-picker>span>small{color:var(--faint2);font-size:10px;line-height:1.5}.community-image-preview,.community-existing-images{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}.community-image-preview[hidden],.community-existing-images[hidden]{display:none}.community-image-preview figure,.community-existing-images figure{position:relative;min-width:0;margin:0}.community-image-preview img,.community-existing-images img{display:block;width:100%;aspect-ratio:1;object-fit:cover;border-radius:9px;background:var(--side-bg)}.community-image-preview figcaption{overflow:hidden;margin-top:4px;color:var(--faint2);font-size:9px;text-overflow:ellipsis;white-space:nowrap}.community-image-preview button,.community-existing-images button{position:absolute;inset-block-start:5px;inset-inline-end:5px;min-height:27px;padding:0 8px;border:0;border-radius:7px;background:rgba(22,20,34,.86);color:#fff;font:600 9px var(--font-body2);cursor:pointer}.community-image-preview button:hover,.community-existing-images button:hover{background:var(--err2)}
.community-media{display:grid;gap:7px}.community-media img{display:block;width:100%;height:100%;object-fit:cover;background:var(--side-bg)}.community-media.is-feed{grid-template-columns:repeat(5,minmax(0,1fr));max-width:560px}.community-media.is-feed img{aspect-ratio:4/3;border-radius:8px}.community-media.is-feed[data-count="1"]{grid-template-columns:minmax(0,280px)}.community-media.is-feed[data-count="2"]{grid-template-columns:repeat(2,minmax(0,210px))}.community-media.is-feed[data-count="3"],.community-media.is-feed[data-count="4"]{grid-template-columns:repeat(4,minmax(0,1fr))}.community-media.is-detail{grid-template-columns:repeat(2,minmax(0,1fr));padding:0 24px 24px}.community-media.is-detail a{display:block;overflow:hidden;min-width:0;border-radius:11px;background:var(--side-bg)}.community-media.is-detail a:focus-visible{outline:2px solid var(--primary);outline-offset:3px}.community-media.is-detail img{aspect-ratio:16/10;transition:transform .22s ease-out}.community-media.is-detail a:hover img{transform:scale(1.018)}.community-media.is-detail[data-count="1"]{grid-template-columns:minmax(0,640px)}.community-media.is-detail[data-count="3"] a:first-child,.community-media.is-detail[data-count="5"] a:first-child{grid-row:span 2}.community-media.is-detail[data-count="3"] a:first-child img,.community-media.is-detail[data-count="5"] a:first-child img{aspect-ratio:auto;min-height:100%}.community-media.is-comment{grid-template-columns:repeat(5,minmax(0,86px));margin-top:10px}.community-media.is-comment a{display:block;overflow:hidden;border-radius:8px}.community-media.is-comment img{aspect-ratio:1}.community-comment-image-tools{display:flex;align-items:center;gap:10px;margin-top:9px}.community-comment-image-tools>label{position:relative;display:inline-flex;align-items:center;gap:8px;min-height:34px;margin:0;padding:0 11px;border:1px solid var(--line2);border-radius:8px;background:#fff;color:var(--primary);font-size:10px;font-weight:700;cursor:pointer}.community-comment-image-tools>label:hover{background:var(--primary-soft);border-color:var(--primary-c)}.community-comment-image-tools>label:focus-within{outline:2px solid var(--primary);outline-offset:2px}.community-comment-image-tools input{position:absolute;width:1px;height:1px;overflow:hidden;opacity:0}.community-comment-image-tools small,.community-comment-image-tools>span{color:var(--faint2);font-size:9px;font-weight:400}.community-comment-image-tools>span{margin-inline-start:auto;font-variant-numeric:tabular-nums}.is-comment-preview{margin-top:9px}.admin-community-images{display:flex;gap:7px;overflow-x:auto}.admin-community-images a{display:block;width:74px;flex:0 0 74px;border-radius:8px;overflow:hidden}.admin-community-images img{display:block;width:100%;aspect-ratio:1;object-fit:cover;background:var(--side-bg)}
@media(max-width:700px){.community-image-preview,.community-existing-images{grid-template-columns:repeat(3,minmax(0,1fr))}.community-media.is-feed{grid-template-columns:repeat(3,minmax(0,1fr))}.community-media.is-feed[data-count="3"],.community-media.is-feed[data-count="4"]{grid-template-columns:repeat(3,minmax(0,1fr))}.community-media.is-detail{grid-template-columns:1fr;padding:0 18px 18px}.community-media.is-detail[data-count="3"] a:first-child,.community-media.is-detail[data-count="5"] a:first-child{grid-row:auto}.community-media.is-detail[data-count="3"] a:first-child img,.community-media.is-detail[data-count="5"] a:first-child img{aspect-ratio:16/10;min-height:0}.community-media.is-comment{grid-template-columns:repeat(3,minmax(0,1fr))}.community-comment-image-tools small{display:none}}
.admin-pricing-unit{align-self:end;min-height:38px;display:flex;align-items:center;color:var(--muted2);font-size:10px;font-weight:600}

/* 画像/画像确认底部操作栏。 */
.profile-actions{align-items:center;gap:18px;padding:14px 16px;border:1px solid var(--line2);border-radius:14px;background:#fff;box-shadow:0 4px 18px rgba(25,28,29,.06)}
.profile-actions-main{display:flex;align-items:center;justify-content:flex-end;gap:14px;flex:1 1 auto;min-width:0}
.profile-actions-main .ai-point-note{flex:1 1 220px;max-width:390px;margin:0;color:var(--muted2)}
.profile-action-group{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex:none;flex-wrap:wrap}
.profile-actions .btn-outline{border-color:#B8B8C8;background:#FAFAFC;color:#2D2B43;box-shadow:0 1px 2px rgba(25,28,29,.04)}
.profile-actions .btn-outline:hover{border-color:var(--primary-c);background:var(--primary-soft);color:var(--primary)}
.profile-actions .btn-primary,.profile-actions .btn-dark{box-shadow:0 5px 12px rgba(80,70,229,.18)}
.profile-actions-confirm{align-items:flex-end}.profile-actions-confirm .profile-actions-main{align-items:flex-end}.profile-actions-confirm .ai-point-note{align-self:center}
@media (max-width:760px){
  .profile-actions{align-items:stretch;flex-direction:column;gap:12px}
  .profile-actions-main{align-items:stretch;flex-direction:column;gap:10px}
  .profile-actions-main .ai-point-note{max-width:none;flex-basis:auto}
  .profile-action-group{justify-content:stretch}.profile-action-group .btn{flex:1 1 180px}.profile-action-back{width:100%}
}

.model-pill{font:inherit;font-size:var(--font-caption);cursor:pointer;white-space:nowrap}
#plugin-pill { box-sizing: border-box; width: 112px; flex-shrink: 0; justify-content: center; }
#model-pill { box-sizing: border-box; width: 248px; flex-shrink: 0; justify-content: center; }
.model-pill:focus-visible{outline:2px solid var(--primary);outline-offset:2px}
.admin-llm-account-head,.admin-llm-account-row{grid-template-columns:minmax(220px,1.5fr) 110px minmax(200px,1.25fr) 120px 90px;min-width:800px}
.admin-table-head,.admin-table-row{grid-template-columns:minmax(240px,1.7fr) 120px 150px 82px 112px 52px}
@media(max-width:700px){.topbar .model-pill{grid-column:1/-1;grid-row:3;justify-self:start;min-height:44px}}
