/* ============================================================
   新版视觉主题 · Token 与外壳组件
   依据：pm2muc0thb82e52vl-muc0u33k/设计规范提取.md（2026-09-22 定稿）
   作用域：所有会覆盖旧样式的规则统一写在 .new-theme 下，
           避免影响旧版页面（index.html / career-portal.html）
   批次：第 1 批 —— 资源 + 外壳（顶部栏 / 侧边栏）
         按钮、卡片、标签等内容组件在第 2 批按规范重做
   ============================================================ */

/* 思源黑体：静态 Regular 400 子集（GBK 全字集 + 项目源码字符），5.07MB
   由 tools/build_font_subset.py 生成（源字体 13.5MB 的 SourceHanSansSC-VF.ttf.woff2 不入库）。
   新增文案缺字时重跑该脚本，并同步改这里的 ?v= 版本号以刷新浏览器缓存 */
@font-face {
  font-family: "SourceHanSansSC";
  src: url("/static/fonts/SourceHanSansSC-Regular-subset.woff2?v=20260923") format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

:root {
  /* 主色 */
  --color-primary: #54C2F2;
  --color-primary-end: #899BFA;
  --color-primary-gradient: linear-gradient(135deg, #54C2F2 0%, #899BFA 100%);
  /* 选中项填充渐变：起点 #E7F5FA（原型实测），终点较浅以保证 #54C2F2 文字可读；
     #85BEF9 作为阴影色（27% 透明）而非填充终点 —— 原型实测为阴影属性 */
  --color-nav-gradient: linear-gradient(90deg, #E7F5FA 0%, #CFE9F7 100%);
  --color-nav-shadow: 0 2px 8px rgba(133, 190, 249, .27);

  /* 文字 */
  --color-text-primary: #101010;
  --color-text-secondary: #626262;
  --color-text-muted: #8B8B8B;
  --color-text-white: #FFFFFF;

  /* 背景 */
  --color-bg-page: #FFFFFF;
  --color-bg-canvas: #EFEFEF;

  /* 边框 / 功能 */
  --color-border: #E2E2E2;
  --color-danger: #E49B8D;
  --color-bg-disabled: #F4F4F5;
  --color-text-disabled: #C0C0C0;
  --color-tag-success-bg: #E7F5FA;
  --color-tag-danger-bg: #FDE8E4;

  /* 圆角 */
  --radius-lg: 16px;
  --radius-md: 10px;
  --radius-sm: 6px;

  /* 字体 */
  --font-family: "SourceHanSansSC", "PingFang SC", "Microsoft YaHei", sans-serif;
  --font-size-hero: 28px;
  --font-size-title: 22px;
  --font-size-card: 20px;
  --font-size-nav: 18px;
  --font-size-tag: 16px;
  --font-size-body: 14px;
  --font-size-caption: 12px;
  --font-weight-regular: 400;

  /* 间距 */
  --space-xs: 4px;
  --space-sm: 8px;
  --space-md: 12px;
  --space-lg: 16px;
  --space-xl: 20px;
  --space-2xl: 24px;
  --space-3xl: 32px;

  /* 阴影 */
  --shadow-card: 0 2px 8px rgba(0, 0, 0, .06);
  --shadow-modal: 0 8px 32px rgba(0, 0, 0, .12);
  --shadow-hover: 0 4px 16px rgba(0, 0, 0, .1);

  /* 外壳尺寸 */
  --header-height: 77px;   /* 53px 控件 + 12px×2 内边距 */
  --sidebar-width: 218px;
  --nav-item-height: 60px;
}

/* 覆盖旧主题变量：做训练 / B站学习 等视图大量使用 var(--primary)、var(--gray-*)，
   theme.css 在页面内联 style 之后加载，同名变量以此处为准，
   无需逐个改 JS 即可整体换肤 */
:root {
  --primary: #54C2F2;
  --primary-hover: #45B8EE;
  --primary-light: #E7F5FA;
  --red: #E49B8D;
  --red-light: #FDE8E4;
  --teal: #2CC5B1;
  --teal-light: #E7F5FA;
  --font-sans: "SourceHanSansSC", "PingFang SC", "Microsoft YaHei", sans-serif;
  --gray-50: #FAFCFB;
  --gray-100: #F4F4F5;
  --gray-200: #E2E2E2;
  --gray-300: #C0C0C0;
  --gray-400: #8B8B8B;
  --gray-500: #8B8B8B;
  --gray-600: #626262;
  --gray-700: #626262;
  --gray-800: #101010;
  --gray-900: #101010;
}

/* ============ 基础 ============ */
/* 页面最底层填充 #FAFCFB（原型实测） */
.new-theme {
  font-family: var(--font-family);
  font-weight: var(--font-weight-regular);
  color: var(--color-text-primary);
  background: #FAFCFB;
}

/* ============ 顶部导航栏 ============ */
.new-theme .app-header {
  background: #FFFFFF;
  border-bottom: 1px solid var(--color-border);
  padding: 12px 20px;
  gap: 12px;
  min-height: var(--header-height);
  box-sizing: border-box;
}
.new-theme .app-header .brand-logo {
  width: 34px; height: 34px; display: block; flex-shrink: 0;
}
.new-theme .app-header .app-title {
  font-size: var(--font-size-title);
  color: var(--color-text-primary);
  line-height: 1.2;
}
.new-theme .app-header .breadcrumb {
  font-size: var(--font-size-body);
  color: var(--color-text-secondary);
  margin-top: 2px;
}
.new-theme .app-header .breadcrumb .sep {
  margin: 0 6px; color: var(--color-text-muted);
}
.new-theme .app-header .breadcrumb .active {
  color: var(--color-primary);
}
.new-theme .app-header .spacer { flex: 1; }

/* 用户信息容器 146×53（点击整个容器 → 弹出「确认退出登录」确认框） */
.new-theme .user-box {
  display: flex; align-items: center; gap: var(--space-sm);
  width: 146px; height: 53px; box-sizing: border-box; padding: 0 var(--space-md);
  background: #FFFFFF; border: 1px solid var(--color-border);
  border-radius: var(--radius-md); flex-shrink: 0;
  cursor: pointer;
}
.new-theme .user-avatar {
  width: 34px; height: 34px; border-radius: 50%; flex-shrink: 0;
  background: var(--color-primary-gradient);
  color: #FFFFFF; font-size: var(--font-size-body);
  display: flex; align-items: center; justify-content: center;
}
.new-theme .user-name {
  flex: 1; min-width: 0;
  font-size: var(--font-size-body); color: var(--color-text-primary);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
/* 用户信息容器右侧下拉指示箭头（原型实测：chevron-right 顺时针旋转 90° 得到的向下箭头，
   W16 H16，圆角 0，图标色 #BBBBBB，线条型非实心） */
.new-theme .user-caret {
  flex-shrink: 0; margin-left: var(--space-xs);
  width: 16px; height: 16px; border-radius: 0;
  background-repeat: no-repeat;
  background-position: center;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16' fill='none'%3E%3Cpath d='M4 6.5L8 10.5L12 6.5' stroke='%23BBBBBB' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
}
/* 说明：用户区下拉菜单已移除 —— 原型无该浮层设计稿，且 hover 菜单存在
   「间隙断 hover 导致点不到」「尺寸难与用户区配平」等固有问题。
   现交互：点击整个用户区 → 弹出「确认退出登录」确认框。 */

/* 设置按钮 53×53（本期隐藏，样式先就位） */
.new-theme .settings-btn {
  width: 53px; height: 53px; box-sizing: border-box;
  background: #FFFFFF; border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  color: var(--color-text-muted);
  display: flex; align-items: center; justify-content: center;
}

/* ============ 侧边栏（218px） ============ */
.new-theme .app-layout {
  min-height: calc(100vh - var(--header-height));
}
.new-theme .sidebar {
  width: var(--sidebar-width); flex-shrink: 0;
  padding: var(--space-lg) var(--space-md);
  box-sizing: border-box;
  position: sticky; top: var(--header-height);
  min-height: calc(100vh - var(--header-height));
  /* 原型实测：圆角 0，填充 #EFF5F9，描边 #E2E2E2 */
  background: #EFF5F9;
  border: 1px solid var(--color-border);
  border-radius: 0;
}
.new-theme .side-tab {
  display: flex; align-items: center; gap: var(--space-md);
  width: 100%; height: var(--nav-item-height);
  padding: 0 14px; box-sizing: border-box;
  border-radius: var(--radius-lg);
  cursor: pointer; user-select: none;
  font-size: var(--font-size-nav);
  color: var(--color-text-secondary);
  margin-bottom: var(--space-sm);
  transition: background .15s, color .15s;
}
/* 图标容器 32×32，内部字形 24px（emoji 占位，后续换 SVG 图标） */
.new-theme .side-tab .si {
  width: 32px; height: 32px; flex-shrink: 0;
  font-size: 24px; line-height: 32px; text-align: center;
}
.new-theme .side-tab .sl { font-weight: var(--font-weight-regular); }
.new-theme .side-tab:hover { background: #FFFFFF; }
/* 选中项：圆角 16 + 浅色横向渐变 + 阴影 #85BEF9 27%（原型实测） */
.new-theme .side-tab.active {
  background: var(--color-nav-gradient);
  color: var(--color-primary);
  box-shadow: var(--color-nav-shadow);
}
.new-theme .side-tab.active .sl { font-weight: var(--font-weight-regular); }
/* 选中态右侧箭头指示（原型实测：X208 Y150 W24 H24，圆角 0，图标色 #54C2F2）
   线条型 chevron-right 图标，非实心字符 */
.new-theme .side-tab::after {
  content: "";
  margin-left: auto;
  width: 24px; height: 24px; flex-shrink: 0;
  border-radius: 0;
  background-repeat: no-repeat;
  background-position: center;
  /* 原型真实图标 iconPark-right（自 modao-icons-1.json 的 fill_1 提取，viewBox 48） */
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48'%3E%3Cpath d='M19 12L31 24L19 36' fill='none' stroke='%2354C2F2' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  opacity: 0;
  transition: opacity .15s;
}
.new-theme .side-tab.active::after { opacity: 1; }

/* ============ 头部高度变化后的偏移修正 ============
   旧样式中写死 57px（顶栏高）与 103px（顶栏 + 46px 内边距），
   新版顶栏为 77px，此处统一改为变量计算，避免布局错位 */
.new-theme .learn-left { max-height: calc(100vh - var(--header-height) - 46px); }
.new-theme .practice-page { min-height: calc(100vh - var(--header-height) - 46px); }

/* ============================================================
   第 2 批：知行伴学内容区（按钮 / 学习计划卡 / 章节列表 / 进度条 / 标签 / 空状态）
   依据规范 §3 按钮、§7.3 主内容区、§7.4 卡片与分割线
   ============================================================ */

/* ---------- 按钮体系（规范 §3） ---------- */
/* 一级按钮1：高 44，渐变填充，圆角 16，18px 白字
   用 min-height 而非 height：字体/图标变高时可自然撑开，不被裁切。
   student.html 内联样式里有一份同名兜底（防 theme.css 未加载/命旧缓存） */
.new-theme .btn-lv1 {
  min-height: 44px; padding: 0 var(--space-xl); box-sizing: border-box;
  border: none; border-radius: var(--radius-lg);
  background: var(--color-primary-gradient); color: #FFFFFF;
  font-family: inherit; font-size: var(--font-size-nav); font-weight: var(--font-weight-regular);
  display: inline-flex; align-items: center; justify-content: center; gap: var(--space-sm);
  cursor: pointer; white-space: nowrap;
}
/* 一级按钮2（"添加章节"）：与一级按钮1同高 44 */
.new-theme .btn-lv1.btn-lv1-sm { min-height: 44px; }
/* 二级按钮1（强调）：高 36，描边，主题蓝字 */
.new-theme .btn-lv2-accent {
  height: 36px; padding: 0 var(--space-md); box-sizing: border-box;
  border: 1px solid var(--color-border); border-radius: var(--radius-md);
  background: transparent; color: var(--color-primary);
  font-family: inherit; font-size: var(--font-size-body);
  display: inline-flex; align-items: center; gap: 6px;
  cursor: pointer; white-space: nowrap;
}
/* 二级按钮2（中性）：高 36，描边，中灰字 */
.new-theme .btn-lv2 {
  height: 36px; padding: 0 var(--space-lg); box-sizing: border-box;
  border: 1px solid var(--color-border); border-radius: var(--radius-md);
  background: transparent; color: var(--color-text-muted);
  font-family: inherit; font-size: var(--font-size-body);
  display: inline-flex; align-items: center; gap: 6px;
  cursor: pointer; white-space: nowrap;
}
/* 二级按钮重要：高 36，渐变填充，白字 */
.new-theme .btn-lv2-primary {
  height: 36px; padding: 0 var(--space-lg); box-sizing: border-box;
  border: none; border-radius: var(--radius-md);
  background: var(--color-primary-gradient); color: #FFFFFF;
  font-family: inherit; font-size: var(--font-size-body);
  display: inline-flex; align-items: center; gap: 6px;
  cursor: pointer; white-space: nowrap;
}
/* 二级按钮成功（投递/确认）：高 36，绿色填充，白字 —— 与优化按钮形成双色强调 */
.new-theme .btn-lv2-success {
  height: 36px; padding: 0 var(--space-lg); box-sizing: border-box;
  border: none; border-radius: var(--radius-md);
  background: #10B981; color: #FFFFFF;
  font-family: inherit; font-size: var(--font-size-body);
  display: inline-flex; align-items: center; gap: 6px;
  cursor: pointer; white-space: nowrap;
}
.new-theme .btn-lv2-save {
  height: 36px; padding: 0 var(--space-lg); box-sizing: border-box;
  border: 1px solid #BEE3F8; border-radius: var(--radius-md);
  background: #EFF8FF; color: #2878A8;
  font-family: inherit; font-size: var(--font-size-body);
  display: inline-flex; align-items: center; gap: 6px;
  cursor: pointer; white-space: nowrap;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.6);
}
.new-theme .btn-lv2-save::before {
  content: "";
  width: 14px; height: 14px; flex: 0 0 14px;
  border: 2px solid currentColor; border-radius: 3px; box-sizing: border-box;
  background: linear-gradient(currentColor, currentColor) 50% 72% / 7px 2px no-repeat;
  opacity: .9;
}
/* 危险操作（删除 / 删除资源）：描边，珊瑚红字 */
.new-theme .btn-danger-ghost {
  height: 36px; padding: 0 var(--space-md); box-sizing: border-box;
  border: 1px solid var(--color-border); border-radius: var(--radius-md);
  background: transparent; color: var(--color-danger);
  font-family: inherit; font-size: var(--font-size-body);
  display: inline-flex; align-items: center;
  cursor: pointer; white-space: nowrap;
}

/* ---------- 区块标题 / 空状态 ---------- */
.new-theme .section-title {
  font-size: var(--font-size-nav); color: var(--color-text-secondary);
}
.new-theme .empty { color: var(--color-text-muted); font-size: var(--font-size-body); }
.new-theme .chapter-empty {
  font-size: var(--font-size-body); color: var(--color-text-muted); margin-top: 10px;
}

/* ---------- 学习计划卡（规范 §7.4：内容卡片圆角 10px） ---------- */
.new-theme .plan-card {
  background: #FFFFFF; border: 1px solid var(--color-border);
  border-radius: var(--radius-md); padding: var(--space-lg);
  cursor: pointer;
}
.new-theme .plan-card:hover { box-shadow: var(--shadow-card); }
.new-theme .plan-card.selected {
  border-color: var(--color-primary);
  box-shadow: 0 0 0 1px var(--color-primary);
}
.new-theme .plan-card-head {
  display: flex; justify-content: space-between; align-items: flex-start; gap: var(--space-sm);
}
.new-theme .plan-title { font-size: var(--font-size-card); color: var(--color-text-primary); }
.new-theme .plan-actions { display: flex; gap: 6px; flex-shrink: 0; }
.new-theme .plan-meta { font-size: var(--font-size-body); color: var(--color-text-secondary); margin-top: 3px; }
.new-theme .plan-progress { margin-top: var(--space-sm); }
.new-theme .progress-head {
  display: flex; justify-content: space-between;
  font-size: var(--font-size-caption); color: var(--color-text-secondary);
}
.new-theme .progress-pct { color: var(--color-primary); }
.new-theme .progress-track {
  height: 6px; background: var(--color-bg-disabled);
  border-radius: 4px; overflow: hidden; margin-top: var(--space-xs);
}
.new-theme .progress-fill { height: 100%; background: var(--color-primary); border-radius: 4px; }
.new-theme .progress-sub {
  font-size: var(--font-size-caption); color: var(--color-text-secondary); margin-top: var(--space-xs);
}
.new-theme .plan-foot {
  display: flex; gap: var(--space-sm); flex-wrap: wrap;
  font-size: var(--font-size-body); color: var(--color-text-secondary); margin-top: var(--space-sm);
}
/* "课程积分 / 暂无成绩" 标签：填充 #EFF5F9 + 描边 #E2E2E2（原型实测） */
.new-theme .plan-tag {
  display: inline-flex; align-items: center; gap: var(--space-xs);
  height: 28px; padding: 0 var(--space-sm); box-sizing: border-box;
  border: 1px solid var(--color-border); border-radius: var(--radius-sm);
  background: #EFF5F9;
  font-size: var(--font-size-body); color: var(--color-text-muted);
}

/* ---------- 章节卡 ---------- */
.new-theme .chapter-card {
  background: #FFFFFF; border: 1px solid var(--color-border);
  border-radius: var(--radius-md); padding: var(--space-lg);
  margin-bottom: var(--space-md);
}
.new-theme .chapter-head { display: flex; align-items: center; gap: var(--space-sm); flex-wrap: wrap; }
.new-theme .chapter-title {
  display: flex; align-items: center; gap: var(--space-sm);
  font-size: var(--font-size-nav); color: var(--color-text-primary);
  flex: 1; min-width: 0;
}
/* 章节序号：方形徽章 25×25，圆角 6，填充 #E7F5FA（原型实测） */
.new-theme .chapter-no {
  flex-shrink: 0; width: 25px; height: 25px; border-radius: 6px;
  background: #E7F5FA; color: var(--color-primary);
  font-size: var(--font-size-caption);
  display: inline-flex; align-items: center; justify-content: center;
}
.new-theme .score { font-size: var(--font-size-caption); color: var(--color-primary); margin-left: var(--space-xs); }

/* ---------- 资源卡 ---------- */
/* 资源项不再套外层框（原型对比：多余），仅保留间距与底部分割感 */
.new-theme .res-card {
  margin-top: 10px; padding: 0;
  border: none; background: transparent;
}
.new-theme .res-head { display: flex; align-items: center; gap: var(--space-sm); }
.new-theme .res-icon { font-size: var(--font-size-tag); }
.new-theme .res-title {
  flex: 1; min-width: 0; font-size: 15px; color: var(--color-text-primary);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.new-theme .res-type { color: var(--color-text-muted); font-size: 13px; }
.new-theme .res-actions { display: flex; gap: 6px; margin-top: var(--space-sm); flex-wrap: wrap; }

/* ---------- 左右分栏之间的竖分割线（原型实测：描边 #E2E2E2） ---------- */
.new-theme .learn-right {
  border-left: 1px solid var(--color-border);
  padding-left: var(--space-lg);
}

/* ---------- 按钮高度变体 ----------
   二级按钮已统一 36（删除/删除资源与「开始学习/知识图谱/练习」等同排同高），
   .h-lg 保留兼容，仅拉齐内边距 */
.new-theme .btn-danger-ghost.h-lg { height: 36px; padding: 0 var(--space-lg); }

/* ---------- 侧边栏导航图标 32×32（规范 §5）----------
   线条型 SVG 图标，未选中 #626262 / 选中 #54C2F2；先隐藏 emoji 占位字形 */
.new-theme .side-tab .si {
  font-size: 0;
  width: 32px; height: 32px; flex-shrink: 0;
  background-repeat: no-repeat; background-position: center; background-size: 24px 24px;
}
/* 知行伴学 = 打开的书 */
.new-theme .side-tab[data-key="learn"] .si {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23626262' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z'/%3E%3Cpath d='M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z'/%3E%3C/svg%3E");
}
/* 岗位市场 = 公文包 */
.new-theme .side-tab[data-key="market"] .si {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23626262' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='2' y='7' width='20' height='14' rx='2'/%3E%3Cpath d='M16 7V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v2'/%3E%3C/svg%3E");
}
/* 我的简历 = 文档 */
.new-theme .side-tab[data-key="resume"] .si {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23626262' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z'/%3E%3Cpath d='M14 2v6h6'/%3E%3Cpath d='M16 13H8'/%3E%3Cpath d='M16 17H8'/%3E%3Cpath d='M10 9H8'/%3E%3C/svg%3E");
}
/* 选中态：图标转主题蓝 #54C2F2 */
.new-theme .side-tab.active[data-key="learn"] .si {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2354C2F2' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z'/%3E%3Cpath d='M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z'/%3E%3C/svg%3E");
}
.new-theme .side-tab.active[data-key="market"] .si {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2354C2F2' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='2' y='7' width='20' height='14' rx='2'/%3E%3Cpath d='M16 7V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v2'/%3E%3C/svg%3E");
}
.new-theme .side-tab.active[data-key="resume"] .si {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2354C2F2' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z'/%3E%3Cpath d='M14 2v6h6'/%3E%3Cpath d='M16 13H8'/%3E%3Cpath d='M16 17H8'/%3E%3Cpath d='M10 9H8'/%3E%3C/svg%3E");
}

/* ---------- 弹框 / 模态框（规范 §9.6）----------
   宽度说明：规范里的 480px 只够放一两行短文案。学生端大量弹框（系统设置 /
   岗位详情 / 匹配明细 / 学习计划 / 简历证据背书等）内容较长，480px 会把内容
   横向挤出去，需要手动拖滚动条才能看全。故基础宽度放宽到 680px，内容最重的
   弹框由调用方追加 .modal-lg（960px）。 */
.new-theme .modal-mask { background: rgba(0, 0, 0, .5); }
.new-theme .modal {
  background: #FFFFFF;
  border-radius: var(--radius-lg);
  padding: var(--space-2xl);
  width: min(680px, 92vw);
  box-shadow: var(--shadow-modal);
  position: relative;
}
.new-theme .modal.modal-lg { width: min(960px, 94vw); }
/* ---------- 弹框统一结构（企业端 / 学生端一致）----------
   约定：弹框为纵向 flex，顶部「拖拽条（+ 右上角 ×）」固定不滚动，
   正文统一放在 .modal-body 内滚动。两端调用方（company.js /
   student.js / career-portal.js）都按该结构注入 DOM。 */
.new-theme .modal {
  display: flex; flex-direction: column;
  max-height: 88vh; overflow: hidden;
}
.new-theme .modal > .modal-head,
.new-theme .modal > .modal-drag { flex: 0 0 auto; }
.new-theme .modal > .modal-body { flex: 1 1 auto; min-height: 0; overflow-y: auto; }
/* modal-head 内的拖拽条：去掉旧版的负外边距，避免与固定头错位 */
.new-theme .modal-head .modal-drag { margin: 0; }
/* 拖拽条通用外观（两端一致） */
.new-theme .modal .modal-drag {
  cursor: grab; user-select: none; -webkit-user-select: none;
  display: flex; align-items: center; justify-content: center;
  height: 16px; border-radius: var(--radius-sm);
}
.new-theme .modal .modal-drag:hover { background: var(--color-bg-disabled); }
.new-theme .modal .modal-drag:active { cursor: grabbing; background: var(--color-border); }
.new-theme .modal .modal-drag-dots {
  width: 24px; height: 16px;
  background-image: radial-gradient(circle, #C4C9D2 1.5px, transparent 2px);
  background-size: 8px 8px;
}
/* 正文内自带的标题栏（岗位详情 / 匹配明细等的 h3 + 右上角 ×）：吸附正文顶部，× 常驻可见 */
.new-theme .modal-body > .pv-head,
.new-theme .modal-body > .jd-head {
  position: sticky; top: 0; z-index: 3; background: #FFFFFF;
}
.new-theme .modal h3 {
  font-size: var(--font-size-nav); color: var(--color-text-primary);
  margin-bottom: var(--space-lg); font-weight: var(--font-weight-regular);
}
.new-theme .modal p {
  font-size: var(--font-size-body); color: var(--color-text-muted); line-height: 1.6;
}
/* 弹框底部按钮：取消（中性描边）+ 确认（渐变填充），右对齐、间距 12 */
.new-theme .modal .btn {
  height: 36px; padding: 0 var(--space-lg); box-sizing: border-box;
  border-radius: var(--radius-md); font-family: inherit;
  font-size: var(--font-size-body); cursor: pointer;
  display: inline-flex; align-items: center; justify-content: center;
}
.new-theme .modal .btn-outline,
.new-theme .modal .btn-lv2 {
  background: transparent; border: 1px solid var(--color-border); color: var(--color-text-muted);
}
.new-theme .modal .btn:not(.btn-outline):not(.btn-lv2) {
  border: none; background: var(--color-primary-gradient); color: #FFFFFF;
}
/* 二次确认浮层：与「确认退出登录」完全同款（同一套 .modal / btn-lv2 / btn 主题），
   但独立浮在 #modalBox 之上，取消后下层弹框不会被顶掉。 */
.new-theme .confirm-mask {
  /* 显式四边兜底：inset 是较新的简写属性，旧内核不支持时仅 position:fixed
     会让浮层失去偏移量、回落到文档流末尾（页面左下角、需滚动才可见）。 */
  position: fixed; top: 0; right: 0; bottom: 0; left: 0; inset: 0; z-index: 10000;
  background: rgba(0, 0, 0, .5);
  display: flex; align-items: center; justify-content: center;
}
/* 宽度沿用 .modal 基础档（与「确认退出登录」一致：min(680px, 92vw)） */
.new-theme .confirm-mask .modal { position: relative; }
.new-theme .confirm-mask .modal h3 { margin-bottom: var(--space-sm); }
/* 顶部拖拽条（与 career-portal 弹框同款灰点条） */
.new-theme .confirm-mask .modal-drag {
  cursor: grab; user-select: none; -webkit-user-select: none;
  display: flex; align-items: center; justify-content: center;
  height: 16px; margin: -12px -12px 6px; border-radius: var(--radius-sm);
}
.new-theme .confirm-mask .modal-drag:hover { background: var(--color-bg-disabled); }
.new-theme .confirm-mask .modal-drag:active { cursor: grabbing; background: var(--color-border); }
.new-theme .confirm-mask .modal-drag-dots {
  width: 24px; height: 16px;
  background-image: radial-gradient(circle, #C4C9D2 1.5px, transparent 2px);
  background-size: 8px 8px;
}
.new-theme .confirm-mask .modal.moving { user-select: none; -webkit-user-select: none; }
/* 简历名：加粗 + 主题色（同字号，不缩小；大写对中文名无意义，故不用 uppercase） */
.new-theme .confirm-mask .cf-resume-name {
  font-weight: 700; color: var(--color-primary);
}

/* ---------- 通用二次确认浮层（学生端 / 企业端共用，见 static/js/nt-confirm.js）----------
   以「确认退出登录」弹框为准。独立于各页 #modalBox：企业端 .app-company .modal 是
   780px 且带 modal-head（含 ×），直接复用会让两端外观不一致，故统一走 .nt-confirm-mask。
   顶部结构「拖拽条撑满 + 右上角 ×」与企业端 modal-head 同款；
   选择器特意带 .modal 提高特异性（0,4,0），避免被 .app-company 的 modal-head/
   modal-close（0,3,0）在页面级覆盖，保证两端尺寸一致。 */
.new-theme .nt-confirm-mask {
  /* 显式四边兜底：inset 是较新的简写属性，旧内核不支持时仅 position:fixed
     会让浮层失去偏移量、回落到文档流末尾（页面左下角、需滚动才可见）。
     线上曾因本规则的 CSS 未随内容更新版本号被旧缓存覆盖，导致退出弹框跑到左下。 */
  position: fixed; top: 0; right: 0; bottom: 0; left: 0; inset: 0; z-index: 10000;
  background: rgba(0, 0, 0, .5);
  display: flex; align-items: center; justify-content: center;
}
.new-theme .nt-confirm-mask .modal .modal-head {
  display: flex; align-items: center; gap: var(--space-sm);
  padding: 0; margin: 0 0 var(--space-sm);
}
.new-theme .nt-confirm-mask .modal .modal-drag {
  cursor: grab; user-select: none; -webkit-user-select: none;
  display: flex; align-items: center; justify-content: center;
  height: 16px; flex: 1; border-radius: var(--radius-sm);
}
.new-theme .nt-confirm-mask .modal .modal-drag:hover { background: var(--color-bg-disabled); }
.new-theme .nt-confirm-mask .modal .modal-drag:active { cursor: grabbing; background: var(--color-border); }
.new-theme .nt-confirm-mask .modal .modal-drag-dots {
  width: 24px; height: 16px;
  background-image: radial-gradient(circle, #C4C9D2 1.5px, transparent 2px);
  background-size: 8px 8px;
}
.new-theme .nt-confirm-mask .modal .modal-close {
  flex-shrink: 0; width: 30px; height: 30px; border: none; border-radius: var(--radius-sm);
  background: transparent; color: var(--color-text-muted); font-size: 18px; line-height: 1;
  cursor: pointer; display: flex; align-items: center; justify-content: center;
}
.new-theme .nt-confirm-mask .modal .modal-close:hover {
  background: var(--color-bg-disabled); color: var(--color-text-primary);
}
.new-theme .nt-confirm-mask .modal.moving { user-select: none; -webkit-user-select: none; }

/* ---------- 通用提示 / 失败提示弹框（static/js/nt-error.js）----------
   外层复用 .nt-confirm-mask（尺寸 / 定位 / 拖拽头 / × 与二次确认弹框一致），
   这里只补充正文、建议、错误码与按钮区样式，视觉对齐原「实践测评」失败弹框。
   注：失败文件明细沿用已有的 .pi-err-block / .pi-err-item 样式（未限定在 #modalBox 内）。 */
.new-theme .nt-alert-mask .nt-alert-title { margin-bottom: var(--space-md); }
.new-theme .nt-alert-mask .nt-alert-msg {
  font-size: var(--font-size-body); line-height: 1.7; color: var(--color-text-primary);
  margin: 6px 0 10px; word-break: break-word; white-space: pre-line;
}
.new-theme .nt-alert-mask .nt-alert-hint {
  background: #FFF6E0; border: 1px solid #F3E4BE; color: #B77C1A;
  border-radius: var(--radius-sm); padding: 8px 10px;
  font-size: var(--font-size-body); line-height: 1.7;
  margin-bottom: 10px; word-break: break-word;
}
.new-theme .nt-alert-mask .nt-alert-code {
  font-size: var(--font-size-caption); color: var(--color-text-muted); margin-bottom: 10px;
}
.new-theme .nt-alert-mask .nt-alert-foot {
  display: flex; justify-content: flex-end; gap: 8px;
  margin-top: var(--space-lg); border-top: 1px solid var(--color-border); padding-top: 12px;
}


.new-theme .apply-save-mask {
  position: fixed;
  top: 0; right: 0; bottom: 0; left: 0;  /* inset 四边兜底 */
  inset: 0;
  z-index: 10001;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
  background: rgba(17, 24, 39, .36);
}
.new-theme .apply-save-dialog {
  width: min(460px, 92vw);
  background: #FFFFFF;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-modal);
  padding: 22px 24px 20px;
}
.new-theme .apply-save-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 16px;
  margin-bottom: 18px;
}
.new-theme .apply-save-head h3 {
  margin: 0 0 6px;
  font-size: var(--font-size-nav);
  color: var(--color-text-primary);
  font-weight: var(--font-weight-regular);
}
.new-theme .apply-save-head p {
  margin: 0;
  font-size: var(--font-size-body);
  color: var(--color-text-muted);
  line-height: 1.6;
}
.new-theme .apply-save-label {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 8px;
  font-size: var(--font-size-body);
  color: var(--color-text-secondary);
}
.new-theme .apply-save-label span {
  padding: 1px 8px;
  border-radius: 999px;
  background: #E7F5FA;
  color: var(--color-primary);
  font-size: var(--font-size-caption);
}
.new-theme .apply-save-input {
  width: 100%;
}
.new-theme .apply-save-tip {
  margin-top: 8px;
  font-size: var(--font-size-caption);
  color: var(--color-text-muted);
  line-height: 1.6;
}
.new-theme .apply-save-error {
  margin-top: 12px;
  padding: 9px 11px;
  border: 1px solid #FECACA;
  border-radius: var(--radius-sm);
  background: #FEF2F2;
  color: #B91C1C;
  font-size: var(--font-size-caption);
  line-height: 1.55;
}
.new-theme .apply-save-foot {
  display: flex;
  justify-content: flex-end;
  gap: 10px;
  margin-top: 20px;
}
.new-theme .apply-save-foot button:disabled,
.new-theme .apply-save-input:disabled {
  cursor: not-allowed;
  opacity: .62;
}

/* ============================================================
   第 2 批扩展：表单 / TAB / 通用卡片 / 标签
   ============================================================ */

/* ---------- 输入框（规范 §9.2）---------- */
.new-theme input[type=text],
.new-theme input[type=password],
.new-theme input[type=email],
.new-theme input[type=number],
.new-theme textarea,
.new-theme select {
  height: 44px; box-sizing: border-box;
  border: 1px solid var(--color-border); border-radius: var(--radius-md);
  padding: 0 var(--space-lg);
  font-family: inherit; font-size: var(--font-size-body); font-weight: var(--font-weight-regular);
  background: #FFFFFF; color: var(--color-text-primary);
}
.new-theme textarea {
  height: auto; min-height: 80px; padding: 10px var(--space-lg); line-height: 1.6;
}
.new-theme input[type=text]::placeholder,
.new-theme input[type=password]::placeholder,
.new-theme input[type=email]::placeholder,
.new-theme textarea::placeholder { color: var(--color-text-muted); }
.new-theme input:focus,
.new-theme textarea:focus,
.new-theme select:focus {
  outline: none; border-color: var(--color-primary);
}
.new-theme input:disabled,
.new-theme textarea:disabled,
.new-theme select:disabled {
  background: var(--color-bg-disabled); color: var(--color-text-muted);
}
/* 表单标签 */
.new-theme .label,
.new-theme .feynman-select label,
.new-theme .exercise-controls label {
  font-size: var(--font-size-body); color: var(--color-text-secondary); font-weight: var(--font-weight-regular);
}
/* 错误提示（§9.2） */
.new-theme .err, .new-theme .field-error {
  font-size: var(--font-size-caption); color: var(--color-danger);
}

/* ---------- TAB 菜单（规范 §6：18px）---------- */
.new-theme .market-tabs,
.new-theme .practice-tabs,
.new-theme .ex-mode-bar {
  background: var(--color-bg-disabled); border-radius: var(--radius-md);
  padding: var(--space-xs); gap: var(--space-xs);
}
.new-theme .market-tab,
.new-theme .practice-tab,
.new-theme .ex-mode-btn {
  font-family: inherit; font-size: var(--font-size-nav); font-weight: var(--font-weight-regular);
  color: var(--color-text-secondary); background: transparent;
  border: none; border-radius: var(--radius-sm);
  padding: 8px 0; cursor: pointer;
}
.new-theme .market-tab.active,
.new-theme .practice-tab.active,
.new-theme .ex-mode-btn.active {
  background: #FFFFFF; color: var(--color-primary); box-shadow: var(--shadow-card);
}

/* ---------- 学生端：企业招聘岗位筛选栏（岗位名称 / 工作地点 + 重置）---------- */
.new-theme .find-filter {
  display: flex; align-items: center; flex-wrap: wrap;
  gap: var(--space-md); margin-bottom: var(--space-lg);
}
.new-theme .find-filter input[type=text] { flex: 1 1 200px; min-width: 160px; }
.new-theme .find-filter .btn-lv2-primary,
.new-theme .find-filter .btn-lv2 { flex-shrink: 0; }

/* ---------- 通用卡片（做训练 / B站学习 等视图）---------- */
.new-theme .card,
.new-theme .framework-graph-container,
.new-theme .framework-tree,
.new-theme .feynman-content,
.new-theme .bili-video-info,
.new-theme .transcript-area,
.new-theme .exercise-card,
.new-theme .exercise-result-summary,
.new-theme .practice-query-panel {
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  background: #FFFFFF;
}
.new-theme .card h2,
.new-theme .plan-detail-head .title {
  font-size: var(--font-size-card); color: var(--color-text-primary); font-weight: var(--font-weight-regular);
}
.new-theme .card h2 .hint { color: var(--color-text-muted); }

/* ---------- 标签 / 徽章（规范 §9.8）---------- */
.new-theme .chip,
.new-theme .tag {
  height: 24px; box-sizing: border-box;
  border-radius: var(--radius-sm); padding: 0 var(--space-sm);
  font-size: var(--font-size-caption);
  display: inline-flex; align-items: center;
  background: var(--color-tag-success-bg); color: var(--color-primary);
}
.new-theme .tag-danger,
.new-theme .chip-danger {
  background: var(--color-tag-danger-bg); color: var(--color-danger);
}

/* ---------- 空状态（规范 §9.12）---------- */
.new-theme .empty {
  text-align: center; color: var(--color-text-muted);
  font-size: var(--font-size-body); padding: 26px 0;
}

/* ---------- 按钮/标签图标（原型真实图标，自 modao-icons-2.json 提取） ----------
   用 mask + currentColor：图标颜色自动跟随所在按钮的文字色 */
.new-theme .btn-icon::before,
.new-theme .tag-icon::before {
  content: ""; display: inline-block; flex-shrink: 0; width: 16px; height: 16px;
  background-color: currentColor;
  -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat;
  -webkit-mask-position: center; mask-position: center;
  -webkit-mask-size: contain; mask-size: contain;
}
.new-theme .btn-icon-learn::before, .new-theme .tag-icon-learn::before { -webkit-mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22%23000%22%3E%3Cpath%20d%3D%22M13%2012h7v1.5h-7zm0-2.5h7V11h-7zm0%205h7V16h-7zM21%204H3c-1.1%200-2%20.9-2%202v13c0%201.1.9%202%202%202h18c1.1%200%202-.9%202-2V6c0-1.1-.9-2-2-2zm0%2015h-9V6h9v13z%22%2F%3E%3C%2Fsvg%3E"); mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22%23000%22%3E%3Cpath%20d%3D%22M13%2012h7v1.5h-7zm0-2.5h7V11h-7zm0%205h7V16h-7zM21%204H3c-1.1%200-2%20.9-2%202v13c0%201.1.9%202%202%202h18c1.1%200%202-.9%202-2V6c0-1.1-.9-2-2-2zm0%2015h-9V6h9v13z%22%2F%3E%3C%2Fsvg%3E"); }
.new-theme .btn-icon-market::before, .new-theme .tag-icon-market::before { -webkit-mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2032%2032%22%20fill%3D%22%23000%22%3E%3Cpath%20d%3D%22M16%202.667c5.155%200%209.333%204.179%209.333%209.333v0h1.432c0.7%200%201.274%200.54%201.329%201.226l0%200.005%201.128%2014.667c0.003%200.031%200.004%200.067%200.004%200.103%200%200.7-0.54%201.274-1.226%201.329l-0.005%200-0.103%200.004h-23.787c-0.736%200-1.333-0.597-1.333-1.333v0l0.004-0.103%201.128-14.667c0.055-0.691%200.629-1.231%201.329-1.231h1.432c0-5.155%204.179-9.333%209.333-9.333v0zM25.529%2014.667h-19.060l-0.924%2012h20.908l-0.924-12zM18.667%2017.333v2.667h-5.333v-2.667h5.333zM16%205.333c-3.58%200-6.501%202.822-6.66%206.363l-0.001%200.014-0.007%200.289h13.333c-0-3.58-2.822-6.501-6.363-6.66l-0.014-0-0.289-0.007z%22%2F%3E%3C%2Fsvg%3E"); mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2032%2032%22%20fill%3D%22%23000%22%3E%3Cpath%20d%3D%22M16%202.667c5.155%200%209.333%204.179%209.333%209.333v0h1.432c0.7%200%201.274%200.54%201.329%201.226l0%200.005%201.128%2014.667c0.003%200.031%200.004%200.067%200.004%200.103%200%200.7-0.54%201.274-1.226%201.329l-0.005%200-0.103%200.004h-23.787c-0.736%200-1.333-0.597-1.333-1.333v0l0.004-0.103%201.128-14.667c0.055-0.691%200.629-1.231%201.329-1.231h1.432c0-5.155%204.179-9.333%209.333-9.333v0zM25.529%2014.667h-19.060l-0.924%2012h20.908l-0.924-12zM18.667%2017.333v2.667h-5.333v-2.667h5.333zM16%205.333c-3.58%200-6.501%202.822-6.66%206.363l-0.001%200.014-0.007%200.289h13.333c-0-3.58-2.822-6.501-6.363-6.66l-0.014-0-0.289-0.007z%22%2F%3E%3C%2Fsvg%3E"); }
.new-theme .btn-icon-resume::before, .new-theme .tag-icon-resume::before { -webkit-mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2032%2032%22%20fill%3D%22%23000%22%3E%3Cpath%20d%3D%22M18.667%2028l-2.667%202.667-2.667-2.667h-6.673c-1.469%200-2.66-1.191-2.66-2.66v0-18.68c0-1.469%201.191-2.66%202.66-2.66h18.68c1.469%200%202.66%201.191%202.66%202.66v18.68c0%201.469-1.191%202.66-2.66%202.66v0h-6.673zM25.333%2025.333v-18.667h-18.667v18.667h7.771l1.563%201.563%201.563-1.563h7.771zM10.629%2024.24c-0.894-0.391-1.662-0.827-2.377-1.332l0.042%200.028c1.686-2.585%204.564-4.269%207.836-4.269%200.002%200%200.004%200%200.006%200h-0c3.2%200%206.023%201.609%207.704%204.063-0.666%200.498-1.42%200.953-2.218%201.332l-0.081%200.035c-1.224-1.682-3.185-2.763-5.399-2.763-0.002%200-0.004%200-0.006%200h0c-2.287%200-4.307%201.152-5.507%202.907zM16%2017.333c-2.577%200-4.667-2.089-4.667-4.667s2.089-4.667%204.667-4.667v0c2.577%200%204.667%202.089%204.667%204.667s-2.089%204.667-4.667%204.667v0zM16%2014.667c1.105%200%202-0.895%202-2s-0.895-2-2-2v0c-1.105%200-2%200.895-2%202s0.895%202%202%202v0z%22%2F%3E%3C%2Fsvg%3E"); mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2032%2032%22%20fill%3D%22%23000%22%3E%3Cpath%20d%3D%22M18.667%2028l-2.667%202.667-2.667-2.667h-6.673c-1.469%200-2.66-1.191-2.66-2.66v0-18.68c0-1.469%201.191-2.66%202.66-2.66h18.68c1.469%200%202.66%201.191%202.66%202.66v18.68c0%201.469-1.191%202.66-2.66%202.66v0h-6.673zM25.333%2025.333v-18.667h-18.667v18.667h7.771l1.563%201.563%201.563-1.563h7.771zM10.629%2024.24c-0.894-0.391-1.662-0.827-2.377-1.332l0.042%200.028c1.686-2.585%204.564-4.269%207.836-4.269%200.002%200%200.004%200%200.006%200h-0c3.2%200%206.023%201.609%207.704%204.063-0.666%200.498-1.42%200.953-2.218%201.332l-0.081%200.035c-1.224-1.682-3.185-2.763-5.399-2.763-0.002%200-0.004%200-0.006%200h0c-2.287%200-4.307%201.152-5.507%202.907zM16%2017.333c-2.577%200-4.667-2.089-4.667-4.667s2.089-4.667%204.667-4.667v0c2.577%200%204.667%202.089%204.667%204.667s-2.089%204.667-4.667%204.667v0zM16%2014.667c1.105%200%202-0.895%202-2s-0.895-2-2-2v0c-1.105%200-2%200.895-2%202s0.895%202%202%202v0z%22%2F%3E%3C%2Fsvg%3E"); }
.new-theme .btn-icon-edit::before, .new-theme .tag-icon-edit::before { -webkit-mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2048%2048%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%224%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M30.4789%2019.0381L36.2127%2013.3043C36.6032%2012.9137%2036.6032%2012.2806%2036.2127%2011.8901L30.627%206.30437C30.2365%205.91384%2029.6033%205.91384%2029.2128%206.30437L23.479%2012.0382M30.4789%2019.0381L15.7628%2033.7541C15.6037%2033.9133%2015.3955%2034.0141%2015.172%2034.0403L9.12504%2034.7482C8.50042%2034.8214%207.96414%2034.3066%208.01161%2033.6795L8.48923%2027.3695C8.50728%2027.1311%208.61018%2026.907%208.77927%2026.7379L23.479%2012.0382M30.4789%2019.0381L23.479%2012.0382M5.99982%2041.9999L41.9998%2041.9998%22%2F%3E%3C%2Fsvg%3E"); mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2048%2048%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%224%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M30.4789%2019.0381L36.2127%2013.3043C36.6032%2012.9137%2036.6032%2012.2806%2036.2127%2011.8901L30.627%206.30437C30.2365%205.91384%2029.6033%205.91384%2029.2128%206.30437L23.479%2012.0382M30.4789%2019.0381L15.7628%2033.7541C15.6037%2033.9133%2015.3955%2034.0141%2015.172%2034.0403L9.12504%2034.7482C8.50042%2034.8214%207.96414%2034.3066%208.01161%2033.6795L8.48923%2027.3695C8.50728%2027.1311%208.61018%2026.907%208.77927%2026.7379L23.479%2012.0382M30.4789%2019.0381L23.479%2012.0382M5.99982%2041.9999L41.9998%2041.9998%22%2F%3E%3C%2Fsvg%3E"); }
.new-theme .btn-icon-delete::before, .new-theme .tag-icon-delete::before { -webkit-mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2048%2048%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%224%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M5%2011L10.5%2011M10.5%2011L10.5%2040C10.5%2040.5523%2010.9477%2041%2011.5%2041L36.5%2041C37.0523%2041%2037.5%2040.5523%2037.5%2040V11M10.5%2011L16%2011M37.5%2011L43%2011M37.5%2011L32%2011M16%2011V7L32%207V11M16%2011L32%2011%22%2F%3E%3Cpath%20d%3D%22M20%2018V33M28%2018V33%22%2F%3E%3C%2Fsvg%3E"); mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2048%2048%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%224%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M5%2011L10.5%2011M10.5%2011L10.5%2040C10.5%2040.5523%2010.9477%2041%2011.5%2041L36.5%2041C37.0523%2041%2037.5%2040.5523%2037.5%2040V11M10.5%2011L16%2011M37.5%2011L43%2011M37.5%2011L32%2011M16%2011V7L32%207V11M16%2011L32%2011%22%2F%3E%3Cpath%20d%3D%22M20%2018V33M28%2018V33%22%2F%3E%3C%2Fsvg%3E"); }
.new-theme .btn-icon-add::before, .new-theme .tag-icon-add::before { -webkit-mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2032%2032%22%20fill%3D%22%23000%22%3E%3Cpath%20d%3D%22M26%2014h-8v-8h-4v8h-8v4h8v8h4v-8h8z%22%2F%3E%3C%2Fsvg%3E"); mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2032%2032%22%20fill%3D%22%23000%22%3E%3Cpath%20d%3D%22M26%2014h-8v-8h-4v8h-8v4h8v8h4v-8h8z%22%2F%3E%3C%2Fsvg%3E"); }
.new-theme .btn-icon-play::before, .new-theme .tag-icon-play::before { -webkit-mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22%23000%22%3E%3Cpath%20d%3D%22M8%205v14l11-7z%22%2F%3E%3C%2Fsvg%3E"); mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22%23000%22%3E%3Cpath%20d%3D%22M8%205v14l11-7z%22%2F%3E%3C%2Fsvg%3E"); }
.new-theme .btn-icon-graph::before, .new-theme .tag-icon-graph::before { -webkit-mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22%23000%22%3E%3Cpath%20d%3D%22M10%2012c-1.1%200-2%20.9-2%202s.9%202%202%202%202-.9%202-2-.9-2-2-2zM6%208c-1.1%200-2%20.9-2%202s.9%202%202%202%202-.9%202-2-.9-2-2-2zm0%208c-1.1%200-2%20.9-2%202s.9%202%202%202%202-.9%202-2-.9-2-2-2zm12-8c1.1%200%202-.9%202-2s-.9-2-2-2-2%20.9-2%202%20.9%202%202%202zm-4%208c-1.1%200-2%20.9-2%202s.9%202%202%202%202-.9%202-2-.9-2-2-2zm4-4c-1.1%200-2%20.9-2%202s.9%202%202%202%202-.9%202-2-.9-2-2-2zm-4-4c-1.1%200-2%20.9-2%202s.9%202%202%202%202-.9%202-2-.9-2-2-2zm-4-4c-1.1%200-2%20.9-2%202s.9%202%202%202%202-.9%202-2-.9-2-2-2z%22%2F%3E%3C%2Fsvg%3E"); mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22%23000%22%3E%3Cpath%20d%3D%22M10%2012c-1.1%200-2%20.9-2%202s.9%202%202%202%202-.9%202-2-.9-2-2-2zM6%208c-1.1%200-2%20.9-2%202s.9%202%202%202%202-.9%202-2-.9-2-2-2zm0%208c-1.1%200-2%20.9-2%202s.9%202%202%202%202-.9%202-2-.9-2-2-2zm12-8c1.1%200%202-.9%202-2s-.9-2-2-2-2%20.9-2%202%20.9%202%202%202zm-4%208c-1.1%200-2%20.9-2%202s.9%202%202%202%202-.9%202-2-.9-2-2-2zm4-4c-1.1%200-2%20.9-2%202s.9%202%202%202%202-.9%202-2-.9-2-2-2zm-4-4c-1.1%200-2%20.9-2%202s.9%202%202%202%202-.9%202-2-.9-2-2-2zm-4-4c-1.1%200-2%20.9-2%202s.9%202%202%202%202-.9%202-2-.9-2-2-2z%22%2F%3E%3C%2Fsvg%3E"); }
.new-theme .btn-icon-exercise::before, .new-theme .tag-icon-exercise::before { -webkit-mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2032%2032%22%20fill%3D%22%23000%22%3E%3Cpath%20d%3D%22M16.889%203.556h-9.908c-0.91%200-1.648%200.738-1.648%201.648v23.371c0%200.91%200.738%201.648%201.648%201.648h16.26c0.91%200%201.648-0.738%201.648-1.648v-17.019c0-0.491-0.398-0.889-0.889-0.889s-0.889%200.398-0.889%200.889v16.889h-16v-23.111h9.778c0.491%200%200.889-0.398%200.889-0.889s-0.398-0.889-0.889-0.889zM15.111%2021.333h-5.333c-0.491%200-0.889%200.398-0.889%200.889s0.398%200.889%200.889%200.889h5.333c0.491%200%200.889-0.398%200.889-0.889s-0.398-0.889-0.889-0.889zM15.111%2024.889h-5.333c-0.491%200-0.889%200.398-0.889%200.889s0.398%200.889%200.889%200.889h5.333c0.491%200%200.889-0.398%200.889-0.889s-0.398-0.889-0.889-0.889zM23.262%201.778c-0.226%200-0.453%200.087-0.628%200.26l-6.736%206.738c-0.114%200.114-0.198%200.257-0.242%200.416l-0.002%200.007-0.919%203.429c-0.156%200.578%200.292%201.113%200.85%201.113%200.076%200%200.155-0.011%200.233-0.032l3.428-0.919c0.16-0.043%200.306-0.126%200.423-0.244l6.74-6.736c0.345-0.348%200.345-0.908%200-1.255l-2.519-2.517c-0.174-0.172-0.4-0.26-0.628-0.26zM23.262%203.925l1.257%201.257-5.948%205.948-1.716%200.46%200.459-1.717%205.948-5.948z%22%2F%3E%3C%2Fsvg%3E"); mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2032%2032%22%20fill%3D%22%23000%22%3E%3Cpath%20d%3D%22M16.889%203.556h-9.908c-0.91%200-1.648%200.738-1.648%201.648v23.371c0%200.91%200.738%201.648%201.648%201.648h16.26c0.91%200%201.648-0.738%201.648-1.648v-17.019c0-0.491-0.398-0.889-0.889-0.889s-0.889%200.398-0.889%200.889v16.889h-16v-23.111h9.778c0.491%200%200.889-0.398%200.889-0.889s-0.398-0.889-0.889-0.889zM15.111%2021.333h-5.333c-0.491%200-0.889%200.398-0.889%200.889s0.398%200.889%200.889%200.889h5.333c0.491%200%200.889-0.398%200.889-0.889s-0.398-0.889-0.889-0.889zM15.111%2024.889h-5.333c-0.491%200-0.889%200.398-0.889%200.889s0.398%200.889%200.889%200.889h5.333c0.491%200%200.889-0.398%200.889-0.889s-0.398-0.889-0.889-0.889zM23.262%201.778c-0.226%200-0.453%200.087-0.628%200.26l-6.736%206.738c-0.114%200.114-0.198%200.257-0.242%200.416l-0.002%200.007-0.919%203.429c-0.156%200.578%200.292%201.113%200.85%201.113%200.076%200%200.155-0.011%200.233-0.032l3.428-0.919c0.16-0.043%200.306-0.126%200.423-0.244l6.74-6.736c0.345-0.348%200.345-0.908%200-1.255l-2.519-2.517c-0.174-0.172-0.4-0.26-0.628-0.26zM23.262%203.925l1.257%201.257-5.948%205.948-1.716%200.46%200.459-1.717%205.948-5.948z%22%2F%3E%3C%2Fsvg%3E"); }
.new-theme .btn-icon-star::before, .new-theme .tag-icon-star::before { -webkit-mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22%23000%22%3E%3Cpath%20d%3D%22M22%209.24l-7.19-.62L12%202%209.19%208.63%202%209.24l5.46%204.73L5.82%2021%2012%2017.27%2018.18%2021l-1.63-7.03L22%209.24zM12%2015.4l-3.76%202.27%201-4.28-3.32-2.88%204.38-.38L12%206.1l1.71%204.04%204.38.38-3.32%202.88%201%204.28L12%2015.4z%22%2F%3E%3C%2Fsvg%3E"); mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22%23000%22%3E%3Cpath%20d%3D%22M22%209.24l-7.19-.62L12%202%209.19%208.63%202%209.24l5.46%204.73L5.82%2021%2012%2017.27%2018.18%2021l-1.63-7.03L22%209.24zM12%2015.4l-3.76%202.27%201-4.28-3.32-2.88%204.38-.38L12%206.1l1.71%204.04%204.38.38-3.32%202.88%201%204.28L12%2015.4z%22%2F%3E%3C%2Fsvg%3E"); }
.new-theme .btn-icon-score::before, .new-theme .tag-icon-score::before { -webkit-mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2032%2032%22%20fill%3D%22%23000%22%3E%3Cpath%20d%3D%22M28.48%208.192c-0.448-0.032-0.928-0.032-1.376-0.064-0.16%200-0.288-0.032-0.352-0.256-0.032-0.16-0.224-0.32-0.352-0.544%200.32-0.864%200.672-1.792%201.056-2.752l-0.064-0.064c-0.256%200.16-0.48%200.32-0.704%200.48-0.576%200.352-1.12%200.704-1.664%201.088-0.138%200.097-0.248%200.227-0.318%200.378l-0.002%200.006c-0.192%200.415-0.462%201.092-0.713%201.778l-0.087%200.27c-0.038%200.105-0.105%200.192-0.19%200.255l-0.002%200.001c-0.544%200.352-1.056%200.704-1.6%201.056-2.048-2.688-4.736-4.224-8.096-4.512-2.944-0.256-5.6%200.576-7.904%202.432-2.515%202.055-4.108%205.157-4.108%208.631%200%202.32%200.71%204.473%201.925%206.256l-0.025-0.038c3.36%204.992%209.888%206.272%2014.816%203.392%205.152-3.008%206.528-9.056%204.8-13.44-0.64%200.384-1.248%200.768-1.856%201.184-0.064%200.064-0.064%200.256-0.032%200.352%200.224%200.928%200.352%201.856%200.288%202.816-0.16%202.432-1.152%204.48-2.976%206.080-1.856%201.664-4.064%202.4-6.56%202.208-4.4-0.385-7.854-3.95-8.063-8.364l-0.001-0.020c-0.288-5.216%204.16-9.6%209.376-9.216%202.528%200.192%204.608%201.28%206.24%203.2l0.192%200.288-2.336%201.504c-1.28-1.504-2.912-2.272-4.928-2.208-1.408%200.032-2.656%200.544-3.712%201.504-2.272%201.984-2.72%205.216-1.088%207.776%201.536%202.432%204.672%203.424%207.36%202.304%202.784-1.152%204.096-4.032%203.616-6.528-0.224%200.16-0.48%200.288-0.704%200.448-0.416%200.288-0.864%200.544-1.28%200.832-0.129%200.102-0.221%200.246-0.255%200.411l-0.001%200.005c-0.448%201.824-1.856%202.976-3.712%203.008-2.016%200-3.776-1.792-3.712-3.808%200.096-2.432%202.304-4.128%204.64-3.552%200.704%200.16%201.312%200.512%201.856%201.088-0.369%200.257-0.922%200.616-1.482%200.964l-0.213%200.124c-0.032%200.032-0.192%200-0.256-0.064-0.672-0.32-1.44-0.224-1.984%200.288-0.512%200.512-0.64%201.28-0.352%201.952%200.32%200.672%201.12%201.088%201.856%200.928%200.768-0.16%201.312-0.768%201.344-1.536%200.032-0.192%200.096-0.32%200.256-0.416%203.136-2.016%206.24-4.032%209.376-6.048%200.128-0.096%200.288-0.16%200.448-0.128%200.736%200%201.472%200.064%202.176%200.096%200.128%200.032%200.256%200.032%200.352-0.032%200.832-0.544%201.696-1.088%202.592-1.696-0.544-0.032-1.024-0.064-1.504-0.096z%22%2F%3E%3C%2Fsvg%3E"); mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2032%2032%22%20fill%3D%22%23000%22%3E%3Cpath%20d%3D%22M28.48%208.192c-0.448-0.032-0.928-0.032-1.376-0.064-0.16%200-0.288-0.032-0.352-0.256-0.032-0.16-0.224-0.32-0.352-0.544%200.32-0.864%200.672-1.792%201.056-2.752l-0.064-0.064c-0.256%200.16-0.48%200.32-0.704%200.48-0.576%200.352-1.12%200.704-1.664%201.088-0.138%200.097-0.248%200.227-0.318%200.378l-0.002%200.006c-0.192%200.415-0.462%201.092-0.713%201.778l-0.087%200.27c-0.038%200.105-0.105%200.192-0.19%200.255l-0.002%200.001c-0.544%200.352-1.056%200.704-1.6%201.056-2.048-2.688-4.736-4.224-8.096-4.512-2.944-0.256-5.6%200.576-7.904%202.432-2.515%202.055-4.108%205.157-4.108%208.631%200%202.32%200.71%204.473%201.925%206.256l-0.025-0.038c3.36%204.992%209.888%206.272%2014.816%203.392%205.152-3.008%206.528-9.056%204.8-13.44-0.64%200.384-1.248%200.768-1.856%201.184-0.064%200.064-0.064%200.256-0.032%200.352%200.224%200.928%200.352%201.856%200.288%202.816-0.16%202.432-1.152%204.48-2.976%206.080-1.856%201.664-4.064%202.4-6.56%202.208-4.4-0.385-7.854-3.95-8.063-8.364l-0.001-0.020c-0.288-5.216%204.16-9.6%209.376-9.216%202.528%200.192%204.608%201.28%206.24%203.2l0.192%200.288-2.336%201.504c-1.28-1.504-2.912-2.272-4.928-2.208-1.408%200.032-2.656%200.544-3.712%201.504-2.272%201.984-2.72%205.216-1.088%207.776%201.536%202.432%204.672%203.424%207.36%202.304%202.784-1.152%204.096-4.032%203.616-6.528-0.224%200.16-0.48%200.288-0.704%200.448-0.416%200.288-0.864%200.544-1.28%200.832-0.129%200.102-0.221%200.246-0.255%200.411l-0.001%200.005c-0.448%201.824-1.856%202.976-3.712%203.008-2.016%200-3.776-1.792-3.712-3.808%200.096-2.432%202.304-4.128%204.64-3.552%200.704%200.16%201.312%200.512%201.856%201.088-0.369%200.257-0.922%200.616-1.482%200.964l-0.213%200.124c-0.032%200.032-0.192%200-0.256-0.064-0.672-0.32-1.44-0.224-1.984%200.288-0.512%200.512-0.64%201.28-0.352%201.952%200.32%200.672%201.12%201.088%201.856%200.928%200.768-0.16%201.312-0.768%201.344-1.536%200.032-0.192%200.096-0.32%200.256-0.416%203.136-2.016%206.24-4.032%209.376-6.048%200.128-0.096%200.288-0.16%200.448-0.128%200.736%200%201.472%200.064%202.176%200.096%200.128%200.032%200.256%200.032%200.352-0.032%200.832-0.544%201.696-1.088%202.592-1.696-0.544-0.032-1.024-0.064-1.504-0.096z%22%2F%3E%3C%2Fsvg%3E"); }
.new-theme .btn-icon-progress::before, .new-theme .tag-icon-progress::before { -webkit-mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2032%2032%22%20fill%3D%22%23000%22%3E%3Cpath%20d%3D%22M5.333%206.667v18.667h21.333v-18.667h-21.333zM4%204h24c0.736%200%201.333%200.597%201.333%201.333v0%2021.333c0%200.736-0.597%201.333-1.333%201.333v0h-24c-0.736%200-1.333-0.597-1.333-1.333v0-21.333c0-0.736%200.597-1.333%201.333-1.333v0zM19.724%2013.057l-2.391-2.391h6.667v6.667l-2.391-2.391-5.152%205.152-2.828-2.828-3.772%203.771-1.885-1.885%205.657-5.657%202.828%202.829%203.267-3.267z%22%2F%3E%3C%2Fsvg%3E"); mask-image: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2032%2032%22%20fill%3D%22%23000%22%3E%3Cpath%20d%3D%22M5.333%206.667v18.667h21.333v-18.667h-21.333zM4%204h24c0.736%200%201.333%200.597%201.333%201.333v0%2021.333c0%200.736-0.597%201.333-1.333%201.333v0h-24c-0.736%200-1.333-0.597-1.333-1.333v0-21.333c0-0.736%200.597-1.333%201.333-1.333v0zM19.724%2013.057l-2.391-2.391h6.667v6.667l-2.391-2.391-5.152%205.152-2.828-2.828-3.772%203.771-1.885-1.885%205.657-5.657%202.828%202.829%203.267-3.267z%22%2F%3E%3C%2Fsvg%3E"); }

/* 侧边栏图标（原型真实图标，mask 着色） */
.new-theme .side-tab[data-key="learn"] .si {
  font-size: 0; width: 32px; height: 32px; flex-shrink: 0;
  background-color: var(--color-text-secondary);
  -webkit-mask: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cpath%20d%3D%22M13%2012h7v1.5h-7zm0-2.5h7V11h-7zm0%205h7V16h-7zM21%204H3c-1.1%200-2%20.9-2%202v13c0%201.1.9%202%202%202h18c1.1%200%202-.9%202-2V6c0-1.1-.9-2-2-2zm0%2015h-9V6h9v13z%22%20fill%3D%22%2523000%22%2F%3E%3C%2Fsvg%3E") no-repeat center / 24px 24px; mask: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cpath%20d%3D%22M13%2012h7v1.5h-7zm0-2.5h7V11h-7zm0%205h7V16h-7zM21%204H3c-1.1%200-2%20.9-2%202v13c0%201.1.9%202%202%202h18c1.1%200%202-.9%202-2V6c0-1.1-.9-2-2-2zm0%2015h-9V6h9v13z%22%20fill%3D%22%2523000%22%2F%3E%3C%2Fsvg%3E") no-repeat center / 24px 24px;
}
.new-theme .side-tab.active[data-key="learn"] .si { background-color: var(--color-primary); }
.new-theme .side-tab[data-key="market"] .si {
  font-size: 0; width: 32px; height: 32px; flex-shrink: 0;
  background-color: var(--color-text-secondary);
  -webkit-mask: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2032%2032%22%3E%3Cpath%20d%3D%22M16%202.667c5.155%200%209.333%204.179%209.333%209.333v0h1.432c0.7%200%201.274%200.54%201.329%201.226l0%200.005%201.128%2014.667c0.003%200.031%200.004%200.067%200.004%200.103%200%200.7-0.54%201.274-1.226%201.329l-0.005%200-0.103%200.004h-23.787c-0.736%200-1.333-0.597-1.333-1.333v0l0.004-0.103%201.128-14.667c0.055-0.691%200.629-1.231%201.329-1.231h1.432c0-5.155%204.179-9.333%209.333-9.333v0zM25.529%2014.667h-19.060l-0.924%2012h20.908l-0.924-12zM18.667%2017.333v2.667h-5.333v-2.667h5.333zM16%205.333c-3.58%200-6.501%202.822-6.66%206.363l-0.001%200.014-0.007%200.289h13.333c-0-3.58-2.822-6.501-6.363-6.66l-0.014-0-0.289-0.007z%22%20fill%3D%22%2523000%22%2F%3E%3C%2Fsvg%3E") no-repeat center / 24px 24px; mask: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2032%2032%22%3E%3Cpath%20d%3D%22M16%202.667c5.155%200%209.333%204.179%209.333%209.333v0h1.432c0.7%200%201.274%200.54%201.329%201.226l0%200.005%201.128%2014.667c0.003%200.031%200.004%200.067%200.004%200.103%200%200.7-0.54%201.274-1.226%201.329l-0.005%200-0.103%200.004h-23.787c-0.736%200-1.333-0.597-1.333-1.333v0l0.004-0.103%201.128-14.667c0.055-0.691%200.629-1.231%201.329-1.231h1.432c0-5.155%204.179-9.333%209.333-9.333v0zM25.529%2014.667h-19.060l-0.924%2012h20.908l-0.924-12zM18.667%2017.333v2.667h-5.333v-2.667h5.333zM16%205.333c-3.58%200-6.501%202.822-6.66%206.363l-0.001%200.014-0.007%200.289h13.333c-0-3.58-2.822-6.501-6.363-6.66l-0.014-0-0.289-0.007z%22%20fill%3D%22%2523000%22%2F%3E%3C%2Fsvg%3E") no-repeat center / 24px 24px;
}
.new-theme .side-tab.active[data-key="market"] .si { background-color: var(--color-primary); }
.new-theme .side-tab[data-key="resume"] .si {
  font-size: 0; width: 32px; height: 32px; flex-shrink: 0;
  background-color: var(--color-text-secondary);
  -webkit-mask: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2032%2032%22%3E%3Cpath%20d%3D%22M18.667%2028l-2.667%202.667-2.667-2.667h-6.673c-1.469%200-2.66-1.191-2.66-2.66v0-18.68c0-1.469%201.191-2.66%202.66-2.66h18.68c1.469%200%202.66%201.191%202.66%202.66v18.68c0%201.469-1.191%202.66-2.66%202.66v0h-6.673zM25.333%2025.333v-18.667h-18.667v18.667h7.771l1.563%201.563%201.563-1.563h7.771zM10.629%2024.24c-0.894-0.391-1.662-0.827-2.377-1.332l0.042%200.028c1.686-2.585%204.564-4.269%207.836-4.269%200.002%200%200.004%200%200.006%200h-0c3.2%200%206.023%201.609%207.704%204.063-0.666%200.498-1.42%200.953-2.218%201.332l-0.081%200.035c-1.224-1.682-3.185-2.763-5.399-2.763-0.002%200-0.004%200-0.006%200h0c-2.287%200-4.307%201.152-5.507%202.907zM16%2017.333c-2.577%200-4.667-2.089-4.667-4.667s2.089-4.667%204.667-4.667v0c2.577%200%204.667%202.089%204.667%204.667s-2.089%204.667-4.667%204.667v0zM16%2014.667c1.105%200%202-0.895%202-2s-0.895-2-2-2v0c-1.105%200-2%200.895-2%202s0.895%202%202%202v0z%22%20fill%3D%22%2523000%22%2F%3E%3C%2Fsvg%3E") no-repeat center / 24px 24px; mask: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2032%2032%22%3E%3Cpath%20d%3D%22M18.667%2028l-2.667%202.667-2.667-2.667h-6.673c-1.469%200-2.66-1.191-2.66-2.66v0-18.68c0-1.469%201.191-2.66%202.66-2.66h18.68c1.469%200%202.66%201.191%202.66%202.66v18.68c0%201.469-1.191%202.66-2.66%202.66v0h-6.673zM25.333%2025.333v-18.667h-18.667v18.667h7.771l1.563%201.563%201.563-1.563h7.771zM10.629%2024.24c-0.894-0.391-1.662-0.827-2.377-1.332l0.042%200.028c1.686-2.585%204.564-4.269%207.836-4.269%200.002%200%200.004%200%200.006%200h-0c3.2%200%206.023%201.609%207.704%204.063-0.666%200.498-1.42%200.953-2.218%201.332l-0.081%200.035c-1.224-1.682-3.185-2.763-5.399-2.763-0.002%200-0.004%200-0.006%200h0c-2.287%200-4.307%201.152-5.507%202.907zM16%2017.333c-2.577%200-4.667-2.089-4.667-4.667s2.089-4.667%204.667-4.667v0c2.577%200%204.667%202.089%204.667%204.667s-2.089%204.667-4.667%204.667v0zM16%2014.667c1.105%200%202-0.895%202-2s-0.895-2-2-2v0c-1.105%200-2%200.895-2%202s0.895%202%202%202v0z%22%20fill%3D%22%2523000%22%2F%3E%3C%2Fsvg%3E") no-repeat center / 24px 24px;
}
.new-theme .side-tab.active[data-key="resume"] .si { background-color: var(--color-primary); }

/* ============================================================
   第 3 批：岗位市场 + 我的简历
   - 岗位市场：由 student.js 渲染，内联 style 已改为语义 class（CSS 覆盖不了内联）
   - 我的简历：由 career-portal.js 渲染（新旧共用），规则一律限定在 .new-theme 下；
     career-portal.html 的 body 无 .new-theme → 逐像素不受影响
   ============================================================ */

/* ---------- 岗位市场：卡片网格 ---------- */
.new-theme .market-grid { display: grid; gap: var(--space-lg); grid-template-columns: repeat(3, 1fr); }
@media (max-width: 1100px) { .new-theme .market-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 720px)  { .new-theme .market-grid { grid-template-columns: 1fr; } }

/* ---------- 岗位卡片（规范 §7.4 内容卡片：圆角 10px / 描边 #E2E2E2） ---------- */
.new-theme .job-card {
  background: #FFFFFF; border: 1px solid var(--color-border);
  border-radius: var(--radius-md); padding: var(--space-lg);
  display: flex; flex-direction: column; gap: var(--space-sm);
}
.new-theme .job-card:hover { box-shadow: var(--shadow-hover); transform: none; }
.new-theme .job-card .jt-row { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--space-sm); }
.new-theme .job-card .jt {
  flex: 1; min-width: 0;
  font-size: var(--font-size-card); color: var(--color-text-primary); line-height: 1.4;
}
.new-theme .job-card .meta {
  display: flex; gap: var(--space-md); flex-wrap: wrap;
  font-size: var(--font-size-body); color: var(--color-text-secondary);
}
.new-theme .job-card .row { margin-top: var(--space-xs); }

/* ---------- 匹配度徽章 / 招聘状态标签（规范 §9.8） ---------- */
.new-theme .mb {
  height: 24px; padding: 0 var(--space-sm); box-sizing: border-box;
  border-radius: var(--radius-sm); border: 1px solid transparent;
  font-size: var(--font-size-caption); font-weight: var(--font-weight-regular);
}
/* 计算中 / 未建档 */
.new-theme .mb-load,
.new-theme .mb-na { background: #FFFFFF; color: var(--color-text-muted); border-color: var(--color-border); }
.new-theme .mb-na { border-style: dashed; }
/* ≥70%：成功标签 */
.new-theme .mb-hi { background: var(--color-tag-success-bg); color: var(--color-primary); }
/* 40%–70%：中间态（规范未定义，按中性推导） */
.new-theme .mb-mid { background: var(--color-bg-disabled); color: var(--color-text-secondary); border-color: var(--color-border); }
/* <40%：警告标签 */
.new-theme .mb-lo { background: var(--color-tag-danger-bg); color: var(--color-danger); }

/* ---------- 岗位卡片「匹配度」标签：绿(≥60%) / 淡黄(30%~60%) / 灰(<30%) ----------
   「智能推荐」「企业招聘岗位」「我的岗位记录」三个页签的匹配度背景色规则已统一，
   均用 mb-r-*。上面的 .mb-hi/.mb-mid/.mb-lo 现仅用于「硬条件」标签（REC_HARD_LABEL），
   不再承担岗位卡片的匹配度高亮。 */
.new-theme .mb-r-hi  { background: #E8F7EE; color: #1F8A4C; border-color: #CFEBD9; }
.new-theme .mb-r-mid { background: #FFF6E0; color: #B77C1A; border-color: #F3E4BE; }
.new-theme .mb-r-lo  { background: var(--color-bg-disabled); color: var(--color-text-muted);
                       border-color: var(--color-border); }

/* ---------- 学生端：智能推荐提示条（向量腿降级说明）---------- */
.new-theme .rec-tip {
  background: var(--color-bg-disabled); color: var(--color-text-secondary);
  border: 1px solid var(--color-border); border-radius: var(--radius-sm);
  padding: 8px 12px; margin-bottom: var(--space-md); font-size: var(--font-size-caption);
}

.new-theme .jtag {
  display: inline-flex; align-items: center; vertical-align: middle; margin-left: 6px;
  height: 24px; padding: 0 var(--space-sm); box-sizing: border-box;
  border-radius: var(--radius-sm); font-size: var(--font-size-caption);
}
.new-theme .jtag-on  { background: var(--color-tag-success-bg); color: var(--color-primary); }
.new-theme .jtag-off { background: var(--color-bg-disabled); color: var(--color-text-muted); }

/* ---------- 已完成态按钮（已投递 / 已生成学习计划） ---------- */
.new-theme .btn-done {
  height: 36px; padding: 0 var(--space-lg); box-sizing: border-box;
  border: 1px solid transparent; border-radius: var(--radius-md);
  background: var(--color-tag-success-bg); color: var(--color-primary);
  font-family: inherit; font-size: var(--font-size-body);
  display: inline-flex; align-items: center; gap: 6px;
  white-space: nowrap; cursor: not-allowed;
}
.new-theme .btn.btn-done:disabled,
.new-theme .btn-done[disabled] { opacity: 1; }

/* 分页：已统一为通用组件 NtPager（见 static/css/components.css），
   旧的 .pager / .pager-info 规则随各页接入后移除。 */

/* ---------- 岗位详情弹窗 ---------- */
.new-theme .jd-head { display: flex; justify-content: space-between; align-items: flex-start; gap: var(--space-sm); }
.new-theme .jd-title { margin: 0; font-size: var(--font-size-nav); color: var(--color-text-primary); font-weight: var(--font-weight-regular); }
.new-theme .jd-close {
  border: none; background: transparent; font-size: 22px; line-height: 1;
  cursor: pointer; color: var(--color-text-muted); padding: 0 4px; flex-shrink: 0;
}
.new-theme .jd-close:hover { color: var(--color-text-primary); }
.new-theme .jd-meta { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin: var(--space-sm) 0 var(--space-md); }
.new-theme .jd-text { margin-bottom: var(--space-md); font-size: var(--font-size-body); line-height: 1.7; color: var(--color-text-secondary); }
.new-theme .jd-block { margin-bottom: var(--space-md); }
.new-theme .jd-label { display: block; font-size: var(--font-size-body); color: var(--color-text-primary); margin-bottom: var(--space-xs); }
.new-theme .jd-none { font-size: var(--font-size-caption); color: var(--color-text-muted); }
.new-theme .jd-foot { display: flex; justify-content: flex-end; gap: var(--space-sm); }

/* ---------- 匹配明细弹窗 ---------- */
.new-theme .pv-head { display: flex; justify-content: space-between; align-items: flex-start; gap: var(--space-sm); }
.new-theme .pv-head h3 { margin: 0; }
.new-theme .pv-sec { margin-bottom: var(--space-md); }
.new-theme .pv-label { display: block; font-size: var(--font-size-body); color: var(--color-text-primary); margin-bottom: var(--space-xs); }
.new-theme .pv-label.danger { color: var(--color-danger); }
.new-theme .pv-foot { margin-top: var(--space-md); }

/* ---------- 手动添加岗位 ---------- */
.new-theme .ma-card {
  background: #FFFFFF; border: 1px solid var(--color-border);
  border-radius: var(--radius-md); padding: var(--space-lg);
}
.new-theme .ma-title { font-size: var(--font-size-card); color: var(--color-text-primary); }
.new-theme .ma-desc { font-size: var(--font-size-body); color: var(--color-text-secondary); margin: var(--space-xs) 0 var(--space-md); }
.new-theme .ma-note { font-size: var(--font-size-body); color: var(--color-text-secondary); }
.new-theme .ma-err  { font-size: var(--font-size-body); color: var(--color-danger); }
.new-theme .ma-ok {
  margin-top: var(--space-md); padding: var(--space-md) var(--space-lg);
  background: var(--color-tag-success-bg); border: 1px solid transparent; border-radius: var(--radius-md);
}
.new-theme .ma-ok-title { font-size: var(--font-size-nav); font-weight: var(--font-weight-regular); color: var(--color-primary); }
.new-theme .ma-ok-sub { font-size: var(--font-size-caption); color: var(--color-primary); margin-top: var(--space-xs); }

/* ============================================================
   我的简历（career-portal.js 渲染，作用域隔离）
   ============================================================ */
.new-theme #portalMain { padding: 0; }
.new-theme #portalMain .card {
  background: #FFFFFF; border: 1px solid var(--color-border);
  border-radius: var(--radius-md); padding: var(--space-2xl);
  box-shadow: none; margin-bottom: var(--space-lg);
}
.new-theme #portalMain .card h2 {
  display: flex; align-items: center;
  gap: var(--space-sm); margin-bottom: var(--space-lg);
  font-size: var(--font-size-card); color: var(--color-text-primary); font-weight: var(--font-weight-regular);
}

/* ---------- 步骤块（1 上传简历 / 2 动作 / 3 画像 / 4 导出） ---------- */
.new-theme .step-block { margin-bottom: var(--space-2xl); }
.new-theme .step-head { display: flex; align-items: center; gap: var(--space-sm); margin-bottom: var(--space-md); }
.new-theme .step-num {
  width: 24px; height: 24px; margin-right: 0;
  background: var(--color-primary); color: #FFFFFF;
  font-size: var(--font-size-caption); font-weight: var(--font-weight-regular);
}
.new-theme .step-title { font-size: var(--font-size-nav); color: var(--color-text-primary); font-weight: var(--font-weight-regular); }
.new-theme .step-sub { font-size: var(--font-size-body); color: var(--color-text-muted); }
.new-theme .step-body { padding-left: 32px; }
.new-theme .file-hint { align-self: center; font-size: var(--font-size-caption); color: var(--color-text-muted); }
/* 简历文本框：career-portal.js 内联写了字号/行高，需 !important 才能落到新 Token */
.new-theme textarea#resumeText {
  min-height: 180px !important;
  font-size: var(--font-size-body) !important; line-height: 1.7 !important;
}

/* 我的简历：多版本入口（与「解析并提炼能力」主按钮同款填充） */
.new-theme .resume-version-btn {
  margin-left: auto;
}
.new-theme .resume-version-strip {
  display: flex; align-items: center; justify-content: space-between;
  min-height: 42px; padding: 8px 12px; margin: 8px 0 12px;
  border: 1px solid var(--color-border); border-radius: var(--radius-md); background: #FFFFFF;
}
.new-theme .rv-current { display: flex; align-items: center; gap: 8px; min-width: 0; }
.new-theme .rv-name { font-size: var(--font-size-body); color: var(--color-text-primary); font-weight: 600; }
.new-theme .rv-meta { font-size: var(--font-size-caption); color: var(--color-text-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.new-theme .resume-version-drawer {
  position: fixed; top: 0; right: 0; z-index: 1000;
  width: 360px; max-width: 92vw; height: 100vh; box-sizing: border-box;
  padding: var(--space-xl); background: #FFFFFF; border-left: 1px solid var(--color-border);
  box-shadow: -8px 0 24px rgba(15, 23, 42, .12); overflow-y: auto;
}
.new-theme .resume-version-drawer[hidden] { display: none; }
.new-theme .rv-drawer-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; margin-bottom: var(--space-lg); }
.new-theme .rv-list { display: flex; flex-direction: column; gap: var(--space-sm); }
.new-theme .rv-item {
  border: 1px solid var(--color-border); border-radius: var(--radius-md);
  padding: var(--space-md); background: #FFFFFF;
}
.new-theme .rv-item.active { border-color: var(--color-primary); background: var(--color-tag-success-bg); }
.new-theme .rv-main { cursor: pointer; }
.new-theme .rv-title { display: flex; align-items: center; gap: 6px; font-size: var(--font-size-body); color: var(--color-text-primary); }
.new-theme .rv-sub { margin-top: 4px; font-size: var(--font-size-caption); color: var(--color-text-muted); }
.new-theme .rv-actions { display: flex; flex-wrap: wrap; gap: 6px; margin-top: var(--space-sm); }
.new-theme .rv-ai-badge {
  display: inline-flex; align-items: center; height: 22px; padding: 0 8px;
  border-radius: 999px; background: #E7F5FA; color: var(--color-primary);
  font-size: var(--font-size-caption); white-space: nowrap;
}

/* 岗位投递：选择简历 + AI 优化大弹窗 */
.new-theme .apply-resume-picker-body { display: flex; flex-direction: column; min-height: 0; gap: var(--space-md); }
.new-theme .apply-resume-toolbar { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: var(--space-md); align-items: center; }
.new-theme .apply-resume-toolbar input[type=search] {
  width: 100%; height: 40px; border: 1px solid var(--color-border);
  border-radius: var(--radius-md); padding: 0 var(--space-md);
  color: var(--color-text-primary); background: #FFFFFF;
}
.new-theme .apply-resume-count { color: var(--color-text-muted); font-size: var(--font-size-caption); white-space: nowrap; }
/* 选择投递简历：底部按钮行与上方简历列表之间只留留白（不画分隔线），避免按钮贴着列表边框 */
.new-theme .apply-picker-foot {
  margin-top: var(--space-xl);
  gap: var(--space-md);
}
/* 简历列表：全部命中项一次渲染，超出高度在列表内部滚动（列表自身滚动条，
   不拖着整个弹框一起滚；overscroll-behavior 避免滚到底后带动外层滚动） */
.new-theme .apply-resume-results {
  display: grid; gap: var(--space-sm); align-content: start;
  max-height: min(58vh, 560px); min-height: 96px;
  overflow-y: auto; overscroll-behavior: contain; padding-right: 4px;
}
.new-theme .apply-resume-row { scroll-margin-top: 8px; }
.new-theme .apply-resume-list { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: var(--space-md); }
.new-theme .apply-resume-card {
  border: 1px solid var(--color-border); border-radius: var(--radius-md);
  padding: var(--space-md); background: #FFFFFF; cursor: pointer;
}
.new-theme .apply-resume-row {
  display: grid; grid-template-columns: minmax(0, 1fr) auto;
  align-items: center; gap: var(--space-md); min-height: 74px;
}
.new-theme .apply-resume-card:hover,
.new-theme .apply-resume-card.active { border-color: var(--color-primary); background: var(--color-tag-success-bg); }
.new-theme .apply-resume-card.disabled { cursor: not-allowed; opacity: .62; background: var(--color-bg-disabled); }
.new-theme .apply-resume-title { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; font-size: var(--font-size-nav); color: var(--color-text-primary); line-height: 1.35; }
.new-theme .apply-resume-sub { margin-top: 6px; font-size: var(--font-size-body); color: var(--color-text-muted); line-height: 1.45; }
/* 简历名称过长：单行省略号，全称由 title 属性（悬浮）显示 */
.new-theme .resume-name-ellipsis { display: inline-block; max-width: 18em; vertical-align: bottom; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.new-theme .apply-resume-state { display: flex; justify-content: flex-end; }
.new-theme .apply-resume-empty {
  border: 1px dashed var(--color-border); border-radius: var(--radius-md);
  padding: var(--space-lg); color: var(--color-text-muted); text-align: center;
}
.new-theme .apply-resume-empty-action {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: var(--space-sm); min-height: 180px; background: #F8FCFF;
}
.new-theme .apply-resume-empty-title {
  font-size: var(--font-size-nav); font-weight: var(--font-weight-semibold);
  color: var(--color-text-primary);
}
.new-theme .apply-resume-empty-desc {
  max-width: 520px; line-height: 1.6; color: var(--color-text-secondary);
}
.new-theme .apply-opt-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr); gap: var(--space-lg); }
.new-theme .apply-panel-title { font-size: var(--font-size-nav); color: var(--color-text-primary); margin: 0 0 var(--space-sm); }
.new-theme .apply-preview,
.new-theme .apply-jd {
  max-height: 420px; overflow: auto; white-space: pre-wrap;
  border: 1px solid var(--color-border); border-radius: var(--radius-md);
  padding: var(--space-md); background: #F9FAFB; color: var(--color-text-secondary);
  font-family: inherit; font-size: var(--font-size-body); line-height: 1.65;
}
.new-theme .apply-preview.optimized { background: #FFFFFF; border-color: var(--color-primary); }
.new-theme .apply-note { margin: 8px 0; font-size: var(--font-size-caption); color: var(--color-text-muted); }
.new-theme .apply-upload { display: flex; gap: var(--space-sm); align-items: center; flex-wrap: wrap; margin: 8px 0; }
.new-theme .modal.modal-apply {
  width: min(92vw, 2240px);
  height: min(92vh, 1180px);
  max-height: 92vh;
  padding: 0;
  overflow: hidden;
  display: flex;
  flex-direction: column;
}
.new-theme .modal.modal-apply .modal-drag { flex: 0 0 auto; }
.new-theme .apply-modal-shell {
  min-height: 0;
  flex: 1;
  position: relative;
  display: flex;
  flex-direction: column;
  background: #FFFFFF;
}
.new-theme .apply-modal-head {
  display: flex; justify-content: space-between; align-items: flex-start;
  gap: var(--space-md); padding: var(--space-lg) var(--space-2xl) var(--space-md);
  border-bottom: 1px solid var(--color-border);
}
.new-theme .apply-title-row { display: flex; align-items: center; gap: var(--space-sm); flex-wrap: wrap; }
.new-theme .apply-status {
  display: inline-flex; align-items: center; height: 24px; padding: 0 var(--space-sm);
  border-radius: 999px; background: var(--color-tag-success-bg); color: var(--color-success);
  font-size: var(--font-size-caption);
}
.new-theme .apply-sub { margin-top: 6px; color: var(--color-text-muted); font-size: var(--font-size-caption); }
.new-theme .apply-meta-strip {
  display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, .9fr) auto;
  gap: var(--space-sm); padding: var(--space-md) var(--space-2xl);
  background: #F9FAFB; border-bottom: 1px solid var(--color-border);
}
.new-theme .apply-error-banner {
  margin: var(--space-md) var(--space-2xl) 0;
  padding: var(--space-md);
  border: 1px solid #FECACA; border-radius: var(--radius-md);
  background: #FEF2F2; color: #991B1B;
  display: flex; align-items: flex-start; gap: var(--space-sm);
}
.new-theme .apply-error-banner b {
  flex: 0 0 auto; font-size: var(--font-size-body); font-weight: 600;
}
.new-theme .apply-error-banner span {
  min-width: 0; color: #7F1D1D; font-size: var(--font-size-body); line-height: 1.55;
  word-break: break-word;
}
.new-theme .apply-guidance-panel {
  margin: var(--space-md) var(--space-2xl) 0;
  padding: var(--space-md);
  border: 1px solid #BAE6FD;
  border-radius: var(--radius-md);
  background: #F0F9FF;
  color: #075985;
}
.new-theme .apply-guidance-head {
  display: flex; align-items: flex-start; justify-content: space-between; gap: var(--space-md);
}
.new-theme .apply-guidance-head b {
  flex: 0 0 auto; color: #0C4A6E; font-size: var(--font-size-body); font-weight: 600;
}
.new-theme .apply-guidance-head span {
  min-width: 0; color: #0369A1; font-size: var(--font-size-body); line-height: 1.55;
}
.new-theme .apply-guidance-missing {
  display: flex; flex-wrap: wrap; gap: 6px; margin-top: var(--space-sm);
}
.new-theme .apply-guidance-missing span {
  display: inline-flex; align-items: center; min-height: 24px; padding: 0 var(--space-sm);
  border-radius: 999px; background: #E0F2FE; color: #075985; font-size: var(--font-size-caption);
}
.new-theme .apply-guidance-grid {
  display: grid; grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--space-sm); margin-top: var(--space-sm);
}
.new-theme .apply-guidance-grid > div {
  min-width: 0; border: 1px solid #E0F2FE; border-radius: var(--radius-sm);
  background: #FFFFFF; padding: var(--space-sm);
}
.new-theme .apply-guidance-grid strong {
  display: block; margin-bottom: 6px; color: #0C4A6E; font-size: var(--font-size-caption); font-weight: 600;
}
.new-theme .apply-guidance-grid ul {
  margin: 0; padding-left: 18px; color: #075985; font-size: var(--font-size-caption); line-height: 1.6;
}
.new-theme .apply-guidance-empty {
  color: #64748B; font-size: var(--font-size-caption); line-height: 1.6;
}
.new-theme .apply-guidance-actions {
  display: flex; justify-content: flex-end; gap: var(--space-sm); margin-top: var(--space-sm);
}
.new-theme .apply-meta-strip > div {
  min-width: 0; border: 1px solid var(--color-border); border-radius: var(--radius-md);
  background: #FFFFFF; padding: 9px var(--space-md);
}
.new-theme .apply-meta-strip span,
.new-theme .apply-small-label { display: block; color: var(--color-text-muted); font-size: var(--font-size-caption); margin-bottom: 4px; }
.new-theme .apply-meta-strip b {
  display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  color: var(--color-text-primary); font-size: var(--font-size-body); font-weight: var(--font-weight-regular);
}
.new-theme .apply-meta-strip .apply-score {
  display: flex; align-items: center; justify-content: center; white-space: nowrap;
  background: #EEF2FF; border-color: #C7D2FE; color: var(--color-primary);
}
.new-theme .apply-opt-workbench {
  min-height: 0;
  flex: 1 1 auto;
  display: grid;
  grid-template-columns: minmax(720px, 1.55fr) minmax(420px, .85fr);
  gap: var(--space-md);
  padding: var(--space-lg) var(--space-2xl);
  overflow: hidden;
}
.new-theme .apply-resume-stage {
  min-width: 0; min-height: 0; display: grid; gap: var(--space-sm);
}
.new-theme .apply-resume-stage { grid-template-rows: auto minmax(0, 1fr); }
.new-theme .apply-side-rail {
  min-width: 0; min-height: 0; display: flex; flex-direction: column; overflow: auto;
  gap: var(--space-sm); padding-right: 2px;
}
.new-theme .apply-panel { min-height: 0; display: flex; flex-direction: column; }
.new-theme .apply-side-rail .apply-panel:nth-child(1) { flex: 0 0 auto; min-height: 0; }
.new-theme .apply-side-rail .apply-panel:nth-child(2) { flex: 0 1 31%; min-height: 170px; }
.new-theme .apply-side-rail .apply-panel:nth-child(3) { flex: 0 0 auto; min-height: 252px; }
.new-theme .apply-side-rail .apply-panel:nth-child(4) { flex: 1 1 190px; min-height: 170px; }
/* 匹配度面板（投递优化弹窗侧边栏首栏） */
.new-theme .apply-score-compare { display: flex; align-items: center; gap: 8px; font-size: var(--font-size-body); color: var(--color-text-secondary); flex-wrap: wrap; }
.new-theme .apply-score-compare b { font-size: 18px; font-weight: 700; color: var(--color-text-primary); }
.new-theme .apply-score-compare .apply-arrow { color: var(--color-text-muted); }
.new-theme .apply-score-compare .apply-score-up { color: #16A34A; }
.new-theme .apply-score-delta { color: #16A34A; font-size: var(--font-size-caption); font-weight: 700; }
.new-theme .apply-match-section { margin-top: var(--space-sm); }
.new-theme .apply-match-list { max-height: 120px; overflow-y: auto; margin-top: 2px; }
.new-theme .apply-match-item { display: flex; justify-content: space-between; align-items: center; gap: 8px; padding: 4px 0; font-size: var(--font-size-caption); border-bottom: 1px solid #F3F4F6; }
.new-theme .apply-match-level { color: var(--color-text-muted); white-space: nowrap; }
.new-theme .apply-match-suggest { color: var(--color-primary); white-space: nowrap; max-width: 52%; overflow: hidden; text-overflow: ellipsis; text-align: right; }
.new-theme .apply-stage-toolbar,
.new-theme .apply-panel-head,
.new-theme .apply-version-label {
  display: flex; align-items: center; justify-content: space-between; gap: var(--space-sm);
}
.new-theme .apply-preview-tabs {
  display: inline-flex; gap: 3px; padding: 3px; border: 1px solid var(--color-border);
  border-radius: var(--radius-md); background: #F9FAFB;
}
.new-theme .apply-preview-tabs button {
  height: 30px; border: none; border-radius: var(--radius-sm); background: transparent;
  padding: 0 var(--space-md); color: var(--color-text-muted); font-size: var(--font-size-caption);
}
.new-theme .apply-preview-tabs button.active { background: #FFFFFF; color: var(--color-primary); box-shadow: 0 1px 2px rgba(0,0,0,.08); }
.new-theme .apply-preview-tabs button:disabled { opacity: .48; cursor: not-allowed; }
.new-theme .apply-resume-canvas,
.new-theme .apply-panel-box {
  min-height: 0; overflow: auto; border: 1px solid var(--color-border);
  border-radius: var(--radius-md); background: #F9FAFB; padding: var(--space-md);
}
.new-theme .apply-panel-box { flex: 1 1 auto; }
.new-theme .apply-version-label { margin-bottom: var(--space-sm); color: var(--color-text-secondary); font-size: var(--font-size-body); }
.new-theme .apply-resume-paper {
  max-width: 920px; margin: 0 auto;
  border: 1px solid var(--color-border); border-radius: var(--radius-md);
  background: #FFFFFF; padding: var(--space-lg);
}
.new-theme .apply-resume-paper.optimized { border-color: #C7D2FE; box-shadow: 0 0 0 1px rgba(79,70,229,.08); }
.new-theme .apply-person {
  display: flex; align-items: flex-start; justify-content: space-between; gap: var(--space-md);
  padding-bottom: var(--space-md); margin-bottom: var(--space-md); border-bottom: 1px solid var(--color-border);
}
.new-theme .apply-person b { display: block; color: var(--color-text-primary); font-size: 18px; font-weight: var(--font-weight-regular); margin-bottom: 5px; }
.new-theme .apply-person div div { color: var(--color-text-muted); font-size: var(--font-size-caption); }
.new-theme .apply-resume-section { margin-top: var(--space-md); }
.new-theme .apply-section-title {
  border-left: 3px solid var(--color-primary); padding-left: var(--space-sm);
  color: var(--color-primary); font-size: var(--font-size-body); margin-bottom: var(--space-xs);
}
.new-theme .apply-line { color: var(--color-text-secondary); font-size: var(--font-size-body); line-height: 1.7; margin: 4px 0; }
.new-theme .apply-line.muted { color: var(--color-text-muted); font-size: var(--font-size-caption); }
.new-theme .apply-resume-template {
  max-width: 900px; margin: 0 auto; padding: 42px 46px 52px;
  border: 1px solid #E5E7EB; border-radius: var(--radius-md);
  background: #FFFFFF; color: #1F2937; outline: none;
  box-shadow: 0 10px 26px rgba(15,23,42,.06);
}
.new-theme .apply-resume-template[contenteditable="true"]:focus {
  border-color: rgba(82,176,221,.55);
  box-shadow: 0 0 0 3px rgba(82,176,221,.12), 0 10px 26px rgba(15,23,42,.06);
}
.new-theme .apply-template-head {
  display: flex; align-items: flex-start; justify-content: space-between;
  gap: var(--space-xl); margin-bottom: 28px;
}
.new-theme .apply-template-name {
  color: #6DA6A0; font-size: 30px; line-height: 1.15;
  font-weight: 700; letter-spacing: 0; margin-bottom: 8px;
}
.new-theme .apply-template-intro {
  color: #6B7280; font-size: 13px; line-height: 1.6; margin-bottom: 14px;
}
.new-theme .apply-template-meta {
  display: flex; align-items: center; flex-wrap: wrap; gap: 8px 18px;
  color: #4B5563; font-size: 13px; line-height: 1.5;
}
.new-theme .apply-template-meta span {
  position: relative; white-space: nowrap;
}
.new-theme .apply-template-meta span:not(:last-child)::after {
  content: ""; position: absolute; right: -10px; top: 50%;
  width: 3px; height: 3px; border-radius: 50%; background: #C8CDD3;
}
.new-theme .apply-template-section { margin-top: 26px; }
.new-theme .apply-template-rule {
  display: flex; align-items: center; gap: 0; min-height: 34px;
}
.new-theme .apply-template-title {
  flex: 0 0 auto; min-width: 96px; padding: 7px 17px;
  border-radius: 999px; background: #74AAA3; color: #FFFFFF;
  font-size: 16px; line-height: 1.2; font-weight: 700; text-align: center;
}
.new-theme .apply-template-rule i {
  position: relative; display: block; flex: 1 1 auto; height: 1px;
  background: #F0D99B;
}
.new-theme .apply-template-rule i::before,
.new-theme .apply-template-rule i::after {
  content: ""; position: absolute; top: 50%; transform: translateY(-50%);
  width: 6px; height: 6px; border-radius: 50%; background: #F0D99B;
}
.new-theme .apply-template-rule i::before { left: 0; }
.new-theme .apply-template-rule i::after { right: 0; }
.new-theme .apply-template-body {
  margin-top: 12px; color: #111827; font-size: 13px; line-height: 1.75;
}
.new-theme .apply-template-line {
  margin: 5px 0; white-space: pre-wrap; word-break: break-word;
}
.new-theme .apply-template-line b { color: #111827; font-weight: 700; }
.new-theme .apply-template-line.project-heading {
  margin-top: 11px; margin-bottom: 6px; color: #374151; font-weight: 600;
}
.new-theme .apply-template-line.strong-label b {
  display: inline-block; margin-right: 4px; color: #111827; font-weight: 700;
}
.new-theme .apply-template-line.strong-label span { color: #4B5563; }
.new-theme .apply-template-line.wrap-after b {
  display: block; margin: 0 0 2px; line-height: 1.55;
}
.new-theme .apply-template-line.wrap-after span {
  display: block; padding-left: 0; line-height: 1.75;
}
.new-theme .apply-template-line.skill-line {
  color: #374151; line-height: 1.75;
}
.new-theme .apply-template-edit-hint {
  margin-top: 24px; padding-top: 12px; border-top: 1px dashed #E5E7EB;
  color: #9CA3AF; font-size: 12px; line-height: 1.5;
}
.new-theme .apply-jd-card { border: 1px solid var(--color-border); border-radius: var(--radius-md); background: #FFFFFF; padding: var(--space-md); margin-bottom: var(--space-md); }
.new-theme .apply-req-list { display: grid; gap: var(--space-xs); }
.new-theme .apply-req { display: flex; gap: var(--space-sm); align-items: flex-start; }
.new-theme .apply-req span { width: 7px; height: 7px; border-radius: 50%; background: var(--color-primary); flex: none; margin-top: 8px; }
.new-theme .apply-req p { margin: 0; color: var(--color-text-secondary); font-size: var(--font-size-body); line-height: 1.6; }
.new-theme .apply-side-rail textarea {
  width: 100%; min-height: 104px; resize: vertical; border: 1px solid var(--color-border);
  border-radius: var(--radius-md); padding: var(--space-md); font-family: inherit;
  font-size: var(--font-size-body); line-height: 1.65; color: var(--color-text-secondary);
}
.new-theme .apply-upload-requirement {
  margin-top: var(--space-sm); color: var(--color-text-muted);
  font-size: var(--font-size-caption); line-height: 1.55;
}
.new-theme .apply-material-upload {
  display: grid; grid-template-columns: minmax(0, 1fr) auto;
  gap: var(--space-sm); align-items: center; margin: var(--space-sm) 0;
  padding: var(--space-sm); border: 1px dashed var(--color-border); border-radius: var(--radius-md);
  background: #FFFFFF;
}
.new-theme .apply-material-upload input[type=file] { min-width: 0; width: 100%; font-size: var(--font-size-caption); color: var(--color-text-secondary); }
.new-theme .apply-upload-state { color: var(--color-text-muted); font-size: var(--font-size-caption); white-space: nowrap; }
.new-theme .apply-source-list { min-height: 24px; }
.new-theme .apply-change-list { display: grid; gap: var(--space-sm); }
.new-theme .apply-change-item {
  border: 1px solid var(--color-border); border-radius: var(--radius-md);
  background: #FFFFFF; padding: var(--space-md);
}
.new-theme .apply-change-item b { display: block; color: var(--color-text-primary); font-size: var(--font-size-body); font-weight: var(--font-weight-regular); margin-bottom: 4px; }
.new-theme .apply-change-item span { display: block; color: var(--color-text-muted); font-size: var(--font-size-caption); line-height: 1.55; }
.new-theme .apply-gap-list { margin-top: var(--space-md); }
.new-theme .apply-gap {
  display: inline-flex; align-items: center; margin: 0 6px 6px 0; padding: 4px 9px;
  border-radius: 999px; border: 1px solid #FDE68A; background: #FFFBEB; color: #B45309;
  font-size: var(--font-size-caption);
}
.new-theme .apply-gap.ok { border-color: #A7F3D0; background: #ECFDF5; color: var(--color-success); }
.new-theme .apply-empty {
  min-height: 72px; display: flex; align-items: center; justify-content: center; text-align: center;
  border: 1px dashed var(--color-border); border-radius: var(--radius-md); color: var(--color-text-muted);
  font-size: var(--font-size-body); padding: var(--space-lg); background: #FFFFFF;
}
.new-theme .apply-empty.large { min-height: 260px; }
.new-theme .apply-loading-overlay {
  position: absolute; inset: 0; z-index: 8;
  display: flex; align-items: center; justify-content: center;
  background: rgba(255,255,255,.72); backdrop-filter: blur(2px);
}
.new-theme .apply-loading-card {
  display: flex; align-items: center; gap: var(--space-md);
  width: min(440px, 86vw); padding: var(--space-lg) var(--space-xl);
  border: 1px solid var(--color-border); border-radius: var(--radius-md);
  background: #FFFFFF; box-shadow: var(--shadow-modal);
}
.new-theme .apply-loading-card b {
  display: block; color: var(--color-text-primary);
  font-size: var(--font-size-body); font-weight: var(--font-weight-regular);
}
.new-theme .apply-loading-card span {
  display: block; margin-top: 4px; color: var(--color-text-muted);
  font-size: var(--font-size-caption); line-height: 1.5;
}
.new-theme .apply-loading-spinner {
  width: 28px; height: 28px; flex: 0 0 28px;
  border: 3px solid #E7F5FA; border-top-color: var(--color-primary);
  border-radius: 50%; animation: applySpin .8s linear infinite;
}
.new-theme .apply-button-spinner {
  width: 14px; height: 14px; flex: 0 0 14px;
  border: 2px solid rgba(255,255,255,.45);
  border-top-color: currentColor;
  border-radius: 50%;
  animation: applySpin .75s linear infinite;
}
.new-theme .apply-submit-overlay {
  position: absolute; inset: 0; z-index: 30;
  display: flex; align-items: center; justify-content: center;
  padding: var(--space-2xl);
  background: rgba(255,255,255,.82);
  backdrop-filter: blur(3px);
}
.new-theme .apply-submit-card {
  width: min(420px, 86vw);
  padding: 30px 34px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  background: #FFFFFF;
  box-shadow: var(--shadow-modal);
  text-align: center;
}
.new-theme .apply-submit-spinner {
  width: 44px; height: 44px; margin: 0 auto 16px;
  border: 4px solid #E7F5FA;
  border-top-color: var(--color-primary);
  border-radius: 50%;
  animation: applySpin .8s linear infinite;
}
.new-theme .apply-submit-title {
  color: var(--color-text-primary);
  font-size: var(--font-size-nav);
  font-weight: var(--font-weight-medium);
}
.new-theme .apply-submit-desc {
  margin-top: 8px;
  color: var(--color-text-muted);
  font-size: var(--font-size-body);
  line-height: 1.6;
}
.new-theme .apply-submit-progress {
  height: 4px;
  margin-top: 18px;
  overflow: hidden;
  border-radius: 999px;
  background: #E7F5FA;
}
.new-theme .apply-submit-progress span {
  display: block;
  width: 42%;
  height: 100%;
  border-radius: inherit;
  background: var(--color-primary-gradient);
  animation: applySubmitSlide 1.25s ease-in-out infinite;
}
.new-theme .btn-lv2-save .apply-button-spinner {
  border-color: rgba(40,120,168,.24);
  border-top-color: currentColor;
}
.new-theme .apply-resume-card.submitting {
  pointer-events: none;
  opacity: .72;
}
@keyframes applySpin {
  to { transform: rotate(360deg); }
}
@keyframes applySubmitSlide {
  0% { transform: translateX(-120%); }
  50% { transform: translateX(70%); }
  100% { transform: translateX(260%); }
}
.new-theme .apply-modal-foot {
  display: flex; align-items: center; justify-content: space-between; gap: var(--space-md);
  padding: var(--space-md) var(--space-2xl); border-top: 1px solid var(--color-border); background: #FFFFFF;
}
.new-theme .apply-foot-note { color: var(--color-text-muted); font-size: var(--font-size-caption); line-height: 1.5; }
@media (max-width: 900px) {
  .new-theme .apply-opt-grid { grid-template-columns: 1fr; }
}
@media (max-width: 1180px) {
  .new-theme .modal.modal-apply { width: 94vw; height: 90vh; max-height: 90vh; }
  .new-theme .apply-opt-workbench { grid-template-columns: minmax(0, 1fr) minmax(320px, .7fr); }
}
@media (max-width: 820px) {
  .new-theme .modal.modal-apply { width: 96vw; height: 94vh; max-height: 94vh; }
  .new-theme .apply-modal-head,
  .new-theme .apply-error-banner,
  .new-theme .apply-guidance-panel,
  .new-theme .apply-meta-strip,
  .new-theme .apply-opt-workbench,
  .new-theme .apply-modal-foot { padding-left: var(--space-md); padding-right: var(--space-md); }
  .new-theme .apply-error-banner,
  .new-theme .apply-guidance-panel { margin-left: var(--space-md); margin-right: var(--space-md); }
  .new-theme .apply-meta-strip,
  .new-theme .apply-guidance-grid,
  .new-theme .apply-opt-workbench { grid-template-columns: 1fr; }
  .new-theme .apply-opt-workbench { overflow: auto; }
  .new-theme .apply-modal-foot { align-items: stretch; flex-direction: column; }
  .new-theme .apply-modal-foot .jd-foot { justify-content: flex-start; flex-wrap: wrap; }
}

/* ---------- 简历六层子页签 ---------- */
.new-theme .sub-tabs { display: flex; flex-wrap: wrap; gap: var(--space-sm); margin-bottom: var(--space-md); }
.new-theme .sub-tab {
  height: 36px; padding: 0 var(--space-md); box-sizing: border-box;
  border: 1px solid var(--color-border); border-radius: 999px;
  background: #FFFFFF; color: var(--color-text-secondary);
  font-size: var(--font-size-body); font-weight: var(--font-weight-regular);
}
.new-theme .sub-tab:hover { border-color: var(--color-primary); color: var(--color-primary); background: #FFFFFF; }
.new-theme .sub-tab.active {
  background: var(--color-nav-gradient); border-color: transparent;
  color: var(--color-primary); box-shadow: var(--color-nav-shadow);
}
.new-theme .sub-tab .st-dot { width: 6px; height: 6px; border-radius: 50%; background: var(--color-text-disabled); flex-shrink: 0; }
.new-theme .sub-tab.on .st-dot { background: var(--color-primary); }
.new-theme .sub-tab.active .st-dot { background: #FFFFFF; }
.new-theme .sub-panel {
  border: 1px solid var(--color-border); border-radius: var(--radius-md);
  padding: var(--space-lg); background: #FFFFFF;
}
.new-theme .sub-panel-desc {
  font-size: var(--font-size-body); color: var(--color-text-muted);
  margin-bottom: var(--space-md); padding-bottom: var(--space-md);
  border-bottom: 1px dashed var(--color-border);
}

/* ---------- 列表项 / chip / tag ---------- */
.new-theme .list-item {
  border: 1px solid var(--color-border); border-radius: var(--radius-md);
  padding: var(--space-md) var(--space-lg); margin-bottom: var(--space-sm);
  background: #FFFFFF;
}
.new-theme .list-item .li-title { font-size: var(--font-size-nav); color: var(--color-text-primary); font-weight: var(--font-weight-regular); }
.new-theme .list-item .li-sub { font-size: var(--font-size-body); color: var(--color-text-secondary); margin-top: var(--space-xs); line-height: 1.6; }
.new-theme .chip-green { background: var(--color-tag-success-bg); color: var(--color-primary); }
.new-theme .chip-amber,
.new-theme .chip-red { background: var(--color-tag-danger-bg); color: var(--color-danger); }
.new-theme .tag {
  background: var(--color-tag-success-bg); color: var(--color-primary);
  border-radius: var(--radius-sm); padding: 0 var(--space-sm); font-size: var(--font-size-caption);
}

/* ---------- 匹配明细分节内容：字号收一档（分节标题 18px 加粗 > 内容行 16px） ---------- */
.new-theme .cand-sec-body .li-title { font-size: 16px; }
.new-theme .cand-sec-body .li-sub { font-size: 13px; }
/* 候选人详情右栏（简历画像 + 能力清单）：与左栏内容行同档，避免跨栏字号跳变 */
.new-theme .cand-right-body .li-title { font-size: 16px; }
.new-theme .cand-right-body .li-sub { font-size: 13px; }

/* ---------- 分节内容行（候选人详情左栏 / 学生端匹配明细）：统一为外框卡片行 ----------
   外观与 .list-item 完全一致（边框 + 圆角 + 内边距 + 白底 + 卡片间距），
   只是把「左=名称+标签 / 右=说明」做成定式，并保证过长时省略号 + 悬浮全文。 */
/* 候选人详情 / 匹配明细（企业端 + 学生端共用）：行高与分节限高统一，保证两端视觉一致。
   行内容永远单行（.cand-row-l 省略号、.cand-row-r nowrap），故固定行高安全。
   50px = 上下 padding 12×2 + 内容 24 + 上下边框 1×2。 */
.new-theme .cand-row {
  display: flex; align-items: center; justify-content: space-between; gap: 10px;
  border: 1px solid var(--color-border); border-radius: var(--radius-md);
  padding: var(--space-md) var(--space-lg); margin-bottom: var(--space-sm);
  background: #FFFFFF;
  box-sizing: border-box;
  height: 50px;
}
/* 分节内容区限高「正好 4 条」：4×50px + 3×8px 间距 = 224px；
   超过 4 条时内部滚动，默认不露出半个条目。 */
.new-theme .cand-sec-body {
  max-height: 224px;
  overflow-y: auto;
  padding-right: 4px;
}
.new-theme .cand-row-l {
  min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  font-size: 16px; color: var(--color-text-primary);
}
.new-theme .cand-row-l .chip, .new-theme .cand-row-l .tag { margin-left: 4px; }
.new-theme .cand-row-r { flex-shrink: 0; color: var(--color-text-muted); font-size: 14px; white-space: nowrap; }

/* ---------- 折叠块（能力清单） ---------- */
.new-theme .fold-item {
  border: 1px solid var(--color-border); border-radius: var(--radius-md);
  margin-bottom: var(--space-sm); background: #FFFFFF;
}
.new-theme .fold-summary {
  padding: var(--space-md) var(--space-lg);
  font-size: var(--font-size-nav); color: var(--color-text-primary); font-weight: var(--font-weight-regular);
}
.new-theme .fold-summary:hover { background: var(--color-bg-disabled); }
.new-theme .fold-chevron { color: var(--color-text-muted); }
.new-theme .fold-body { padding: 0 var(--space-lg) var(--space-lg); }

/* ---------- 进度条 / 统计卡 ---------- */
.new-theme .score-bar { height: 6px; background: var(--color-bg-disabled); border-radius: 4px; overflow: hidden; }
.new-theme .score-bar > div { height: 100%; border-radius: 4px; background: var(--color-primary); }
.new-theme .stat-cards { gap: var(--space-md); }
.new-theme .stat-card {
  background: #FFFFFF; border: 1px solid var(--color-border);
  border-radius: var(--radius-md); padding: var(--space-lg); text-align: center;
}
.new-theme .stat-card .num { font-size: var(--font-size-hero); font-weight: var(--font-weight-regular); color: var(--color-primary); }
.new-theme .stat-card .lbl { font-size: var(--font-size-body); color: var(--color-text-secondary); margin-top: var(--space-xs); }

/* ---------- 按钮（career-portal 的 btn 体系 → 规范 §3 二级按钮）
   作用域限定在简历容器 #portalMain 与弹框 #modalBox（career-portal.js 的两个渲染目标），
   避免波及 student.js 里同名 .btn 的小尺寸内联按钮 ---------- */
.new-theme #portalMain .btn,
.new-theme #modalBox .btn {
  height: 36px; padding: 0 var(--space-lg); box-sizing: border-box;
  border-radius: var(--radius-md); border: 1px solid transparent;
  font-family: inherit; font-size: var(--font-size-body); font-weight: var(--font-weight-regular);
  display: inline-flex; align-items: center; justify-content: center; gap: 6px;
  white-space: nowrap; transition: opacity .15s;
}
.new-theme #portalMain .btn:hover,
.new-theme #modalBox .btn:hover { filter: none; transform: none; opacity: .88; }
.new-theme #portalMain .btn:disabled,
.new-theme #modalBox .btn:disabled { opacity: .5; cursor: not-allowed; transform: none; }
.new-theme #portalMain .btn-primary,
.new-theme #modalBox .btn-primary { background: var(--color-primary-gradient); color: #FFFFFF; }
.new-theme #portalMain .btn-outline,
.new-theme #modalBox .btn-outline { background: transparent; border-color: var(--color-border); color: var(--color-text-muted); }
.new-theme #portalMain .btn-outline:hover,
.new-theme #modalBox .btn-outline:hover { border-color: var(--color-primary); color: var(--color-primary); }
.new-theme #portalMain .btn-danger,
.new-theme #modalBox .btn-danger { background: var(--color-danger); color: #FFFFFF; border: none; }
.new-theme #portalMain .btn-ghost,
.new-theme #modalBox .btn-ghost { background: transparent; border-color: var(--color-border); color: var(--color-text-secondary); }
.new-theme #portalMain .btn-sm,
.new-theme #modalBox .btn-sm { height: 36px; padding: 0 var(--space-md); border-radius: var(--radius-sm); font-size: var(--font-size-caption); }
/* career-portal 主区（新版渲染）：切换简历 / 解析并提炼能力 / 从文件夹上传 /
   全屏查看简历 / 生成简历 / 证据链明细 / 导出 Word 等统一 36 */
.new-theme #portalMain .btn,
.new-theme #portalMain .btn-sm { height: 36px; }

/* ============================================================
   视觉复核修正（2026-09-23 第 2/3 批复核）
   1) 行内标签图标：span 必须是 inline-flex，否则 ::before 的 16×16 不生效（"学习进度"图标丢失）
   2) 课程积分 / 成绩 标签图标按原型取样着色
   3) 弹框表单内的行内小按钮统一 34 高，与 44 高输入框居中对齐（修"关联岗位/教学大纲错位"）
   4) 章节卡操作按钮（添加学习资源 / 编辑 / 删除）统一 34 高
   5) 资源项图标改「摊开的书」，并把岗位卡片 meta 等处的 emoji 换成线条图标
   ============================================================ */

/* ---------- 图标库（线条型，与原型一致；mask + currentColor 着色） ---------- */
:root {
  /* 摊开的书（左右页各两条横线） */
  --ic-book: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22%23000%22%3E%3Cpath%20d%3D%22M13%2012h7v1.5h-7zm0-2.5h7V11h-7zm0%205h7V16h-7zM21%204H3c-1.1%200-2%20.9-2%202v13c0%201.1.9%202%202%202h18c1.1%200%202-.9%202-2V6c0-1.1-.9-2-2-2zm0%2015h-9V6h9v13z%22%2F%3E%3C%2Fsvg%3E");
  /* 叉号（删除类操作，原型用叉号而非垃圾桶） */
  --ic-close: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M6%206l12%2012M18%206L6%2018%22%2F%3E%3C%2Fsvg%3E");
  --ic-trash: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2048%2048%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%224%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M5%2011L10.5%2011M10.5%2011L10.5%2040C10.5%2040.5523%2010.9477%2041%2011.5%2041L36.5%2041C37.0523%2041%2037.5%2040.5523%2037.5%2040V11M10.5%2011L16%2011M37.5%2011L43%2011M37.5%2011L32%2011M16%2011V7L32%207V11M16%2011L32%2011%22%2F%3E%3Cpath%20d%3D%22M20%2018V33M28%2018V33%22%2F%3E%3C%2Fsvg%3E");
  --ic-pen: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2048%2048%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%224%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M30.4789%2019.0381L36.2127%2013.3043C36.6032%2012.9137%2036.6032%2012.2806%2036.2127%2011.8901L30.627%206.30437C30.2365%205.91384%2029.6033%205.91384%2029.2128%206.30437L23.479%2012.0382M30.4789%2019.0381L15.7628%2033.7541C15.6037%2033.9133%2015.3955%2034.0141%2015.172%2034.0403L9.12504%2034.7482C8.50042%2034.8214%207.96414%2034.3066%208.01161%2033.6795L8.48923%2027.3695C8.50728%2027.1311%208.61018%2026.907%208.77927%2026.7379L23.479%2012.0382M30.4789%2019.0381L23.479%2012.0382M5.99982%2041.9999L41.9998%2041.9998%22%2F%3E%3C%2Fsvg%3E");
  --ic-search: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='M21 21l-4.35-4.35'/%3E%3C/svg%3E");
  --ic-records: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M8 6h13M8 12h13M8 18h13'/%3E%3Cpath d='M3 6h.01M3 12h.01M3 18h.01'/%3E%3C/svg%3E");
  --ic-building: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 21h18'/%3E%3Cpath d='M5 21V7l8-4v18'/%3E%3Cpath d='M19 21V11l-6-4'/%3E%3Cpath d='M9 9h.01M9 13h.01M9 17h.01'/%3E%3C/svg%3E");
  --ic-location: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 10c0 6-8 12-8 12s-8-6-8-12a8 8 0 0 1 16 0z'/%3E%3Ccircle cx='12' cy='10' r='3'/%3E%3C/svg%3E");
  /* 人民币符号 ￥（岗位薪资前缀，替换原美元符号 $） */
  --ic-salary: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 4l6 7 6-7'/%3E%3Cpath d='M12 11v9'/%3E%3Cpath d='M7 14h10'/%3E%3Cpath d='M7 17h10'/%3E%3C/svg%3E");
  --ic-calendar: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='18' rx='2'/%3E%3Cpath d='M16 2v4M8 2v4M3 10h18'/%3E%3C/svg%3E");
  --ic-clock: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 7v5l3 2'/%3E%3C/svg%3E");
  --ic-tag: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20.6 13.4l-7.2 7.2a2 2 0 0 1-2.8 0L2 12V2h10l8.6 8.6a2 2 0 0 1 0 2.8z'/%3E%3Cpath d='M7 7h.01'/%3E%3C/svg%3E");
  --ic-layers: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 2l9 5-9 5-9-5 9-5z'/%3E%3Cpath d='M3 12l9 5 9-5'/%3E%3Cpath d='M3 17l9 5 9-5'/%3E%3C/svg%3E");
  /* 人像上半身（原型 modao-icons-3.json #56「我的岗位记录」，实心） */
  --ic-user: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22%23000%22%3E%3Cpath%20d%3D%22M12%205.9a2.1%202.1%200%201%201%200%204.2%202.1%202.1%200%200%201%200-4.2m0%209c2.97%200%206.1%201.46%206.1%202.1v1.1H5.9V17c0-.64%203.13-2.1%206.1-2.1M12%204C9.79%204%208%205.79%208%208s1.79%204%204%204%204-1.79%204-4-1.79-4-4-4zm0%209c-2.67%200-8%201.34-8%204v3h16v-3c0-2.66-5.33-4-8-4z%22%2F%3E%3C%2Fsvg%3E");
  --ic-target: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Ccircle cx='12' cy='12' r='5'/%3E%3Ccircle cx='12' cy='12' r='1.5'/%3E%3C/svg%3E");
  --ic-briefcase: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2032%2032%22%20fill%3D%22%23000%22%3E%3Cpath%20d%3D%22M16%202.667c5.155%200%209.333%204.179%209.333%209.333v0h1.432c0.7%200%201.274%200.54%201.329%201.226l0%200.005%201.128%2014.667c0.003%200.031%200.004%200.067%200.004%200.103%200%200.7-0.54%201.274-1.226%201.329l-0.005%200-0.103%200.004h-23.787c-0.736%200-1.333-0.597-1.333-1.333v0l0.004-0.103%201.128-14.667c0.055-0.691%200.629-1.231%201.329-1.231h1.432c0-5.155%204.179-9.333%209.333-9.333v0zM25.529%2014.667h-19.060l-0.924%2012h20.908l-0.924-12zM18.667%2017.333v2.667h-5.333v-2.667h5.333zM16%205.333c-3.58%200-6.501%202.822-6.66%206.363l-0.001%200.014-0.007%200.289h13.333c-0-3.58-2.822-6.501-6.363-6.66l-0.014-0-0.289-0.007z%22%2F%3E%3C%2Fsvg%3E");
  --ic-folder: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z'/%3E%3C/svg%3E");
  --ic-doc: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2032%2032%22%20fill%3D%22%23000%22%3E%3Cpath%20d%3D%22M18.667%2028l-2.667%202.667-2.667-2.667h-6.673c-1.469%200-2.66-1.191-2.66-2.66v0-18.68c0-1.469%201.191-2.66%202.66-2.66h18.68c1.469%200%202.66%201.191%202.66%202.66v18.68c0%201.469-1.191%202.66-2.66%202.66v0h-6.673zM25.333%2025.333v-18.667h-18.667v18.667h7.771l1.563%201.563%201.563-1.563h7.771zM10.629%2024.24c-0.894-0.391-1.662-0.827-2.377-1.332l0.042%200.028c1.686-2.585%204.564-4.269%207.836-4.269%200.002%200%200.004%200%200.006%200h-0c3.2%200%206.023%201.609%207.704%204.063-0.666%200.498-1.42%200.953-2.218%201.332l-0.081%200.035c-1.224-1.682-3.185-2.763-5.399-2.763-0.002%200-0.004%200-0.006%200h0c-2.287%200-4.307%201.152-5.507%202.907zM16%2017.333c-2.577%200-4.667-2.089-4.667-4.667s2.089-4.667%204.667-4.667v0c2.577%200%204.667%202.089%204.667%204.667s-2.089%204.667-4.667%204.667v0zM16%2014.667c1.105%200%202-0.895%202-2s-0.895-2-2-2v0c-1.105%200-2%200.895-2%202s0.895%202%202%202v0z%22%2F%3E%3C%2Fsvg%3E");
  --ic-download: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3v12'/%3E%3Cpath d='M7 11l5 5 5-5'/%3E%3Cpath d='M4 21h16'/%3E%3C/svg%3E");
  --ic-graph: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22%23000%22%3E%3Cpath%20d%3D%22M10%2012c-1.1%200-2%20.9-2%202s.9%202%202%202%202-.9%202-2-.9-2-2-2zM6%208c-1.1%200-2%20.9-2%202s.9%202%202%202%202-.9%202-2-.9-2-2-2zm0%208c-1.1%200-2%20.9-2%202s.9%202%202%202%202-.9%202-2-.9-2-2-2zm12-8c1.1%200%202-.9%202-2s-.9-2-2-2-2%20.9-2%202%20.9%202%202%202zm-4%208c-1.1%200-2%20.9-2%202s.9%202%202%202%202-.9%202-2-.9-2-2-2zm4-4c-1.1%200-2%20.9-2%202s.9%202%202%202%202-.9%202-2-.9-2-2-2zm-4-4c-1.1%200-2%20.9-2%202s.9%202%202%202%202-.9%202-2-.9-2-2-2zm-4-4c-1.1%200-2%20.9-2%202s.9%202%202%202%202-.9%202-2-.9-2-2-2z%22%2F%3E%3C%2Fsvg%3E");
  --ic-bulb: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 18h6M10 22h4'/%3E%3Cpath d='M12 2a6 6 0 0 0-3.5 10.9c.5.4.8 1 .9 1.6h5.2c.1-.6.4-1.2.9-1.6A6 6 0 0 0 12 2z'/%3E%3C/svg%3E");
  --ic-check: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 11l3 3 8-8'/%3E%3Cpath d='M3 21h18'/%3E%3C/svg%3E");
  /* 两个空心正方形部分交叠（"粘贴 JD 入库" / "简历画像"） */
  --ic-copy: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2048%2048%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%224%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M31%2031H40C41.1046%2031%2042%2030.1046%2042%2029V8C42%206.89543%2041.1046%206%2040%206H19C17.8954%206%2017%206.89543%2017%208V17%22%2F%3E%3Cpath%20d%3D%22M17%2017H8C6.89543%2017%206%2017.8954%206%2019V40C6%2041.1046%206.89543%2042%208%2042H29C30.1046%2042%2031%2041.1046%2031%2040V31%22%2F%3E%3C%2Fsvg%3E");
  /* 小手：食指与拇指朝上、其余三指握拳 */
  /* 原型 modao-icons-3.json #52「手动添加目标岗位」：IconPark 手形（描边） */
  --ic-hand: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2048%2048%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%224%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M37%2044H17.476C17.3873%2044%2017.3049%2043.9541%2017.2581%2043.8788L7.86011%2028.7273C6.79115%2027.0039%207.14475%2024.7577%208.69148%2023.446C10.6306%2021.8016%2013.584%2022.3036%2014.871%2024.4963L17.3333%2028.6914V7.94203C17.3333%205.76491%2019.0982%204%2021.2754%204C23.4525%204%2025.2174%205.76491%2025.2174%207.94203V17.2709C25.2174%2017.8564%2025.6817%2018.3365%2026.2669%2018.356L37.8882%2018.7443C39.0658%2018.7836%2040%2019.7496%2040%2020.9278V41C40%2042.6569%2038.6569%2044%2037%2044Z%22%2F%3E%3C%2Fsvg%3E");
  /* ── 通用图标（用于替换 UI 文案里的 emoji）── */
  --ic-sparkle: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M11 3l1.7 4.1L16.8 8.8l-4.1 1.7L11 14.6 9.3 10.5 5.2 8.8l4.1-1.7z'/%3E%3Cpath d='M18 15l.8 2 2 .8-2 .8-.8 2-.8-2-2-.8 2-.8z'/%3E%3C/svg%3E");
  --ic-bolt: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M13 2 4.5 13.5H10L9 22l8.5-11.5H12z'/%3E%3C/svg%3E");
  --ic-link: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 13a4.5 4.5 0 0 0 6.8.5l2.6-2.6a4.5 4.5 0 0 0-6.4-6.4L11.5 6'/%3E%3Cpath d='M14 11a4.5 4.5 0 0 0-6.8-.5L4.6 13.1a4.5 4.5 0 0 0 6.4 6.4L12.5 18'/%3E%3C/svg%3E");
  --ic-check-circle: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M8 12.5l2.6 2.6L16 9.7'/%3E%3C/svg%3E");
  --ic-x-circle: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M15 9l-6 6M9 9l6 6'/%3E%3C/svg%3E");
  --ic-robot: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='4' y='8' width='16' height='12' rx='3'/%3E%3Cpath d='M12 8V4'/%3E%3Cpath d='M9.5 13.5h.01M14.5 13.5h.01'/%3E%3Cpath d='M9.5 17.5h5'/%3E%3C/svg%3E");
  --ic-phone: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='6' y='2' width='12' height='20' rx='3'/%3E%3Cpath d='M11 18.5h2'/%3E%3C/svg%3E");
  --ic-key: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='8' cy='15' r='4'/%3E%3Cpath d='M10.8 12.2 20 3'/%3E%3Cpath d='M16 7l2 2M19 4l2 2'/%3E%3C/svg%3E");
  --ic-clipboard: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='8' y='3' width='8' height='4' rx='1'/%3E%3Cpath d='M16 5.5h2A1.5 1.5 0 0 1 19.5 7v12A1.5 1.5 0 0 1 18 20.5H6A1.5 1.5 0 0 1 4.5 19V7A1.5 1.5 0 0 1 6 5.5h2'/%3E%3C/svg%3E");
  --ic-save: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 3h11l3 3v15H5z'/%3E%3Cpath d='M9 3v6h6V3'/%3E%3Cpath d='M8 14h8v7H8z'/%3E%3C/svg%3E");
  --ic-camera: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 8h4l2-3h6l2 3h4v12H3z'/%3E%3Ccircle cx='12' cy='14' r='3.5'/%3E%3C/svg%3E");
  --ic-chart: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 20V10M10 20V4M16 20v-8M22 20H2'/%3E%3C/svg%3E");
  --ic-star: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22%23000%22%3E%3Cpath%20d%3D%22M22%209.24l-7.19-.62L12%202%209.19%208.63%202%209.24l5.46%204.73L5.82%2021%2012%2017.27%2018.18%2021l-1.63-7.03L22%209.24zM12%2015.4l-3.76%202.27%201-4.28-3.32-2.88%204.38-.38L12%206.1l1.71%204.04%204.38.38-3.32%202.88%201%204.28L12%2015.4z%22%2F%3E%3C%2Fsvg%3E");
  --ic-thumbup: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 21V10l4.2-7a2 2 0 0 1 1.8 1v5h4.6a2 2 0 0 1 2 2.4l-1.4 7A2 2 0 0 1 16.2 21z'/%3E%3Cpath d='M7 10H4.5A1.5 1.5 0 0 0 3 11.5V19A1.5 1.5 0 0 0 4.5 20.5H7'/%3E%3C/svg%3E");
  --ic-thumbdown: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 3v11l4.2 7a2 2 0 0 0 1.8-1v-5h4.6a2 2 0 0 0 2-2.4l-1.4-7A2 2 0 0 0 16.2 3z'/%3E%3Cpath d='M7 14H4.5A1.5 1.5 0 0 1 3 12.5V5A1.5 1.5 0 0 1 4.5 3.5H7'/%3E%3C/svg%3E");
  --ic-warning: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3.5 21 19.5H3z'/%3E%3Cpath d='M12 9.5v4'/%3E%3Cpath d='M12 16.5h.01'/%3E%3C/svg%3E");
  --ic-chat: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 14.5a2 2 0 0 1-2 2H8l-4 4V6a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2z'/%3E%3C/svg%3E");
  --ic-arrow-left: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M19 12H5'/%3E%3Cpath d='M11 6l-6 6 6 6'/%3E%3C/svg%3E");
  --ic-mic: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='9' y='3' width='6' height='11' rx='3'/%3E%3Cpath d='M5 11a7 7 0 0 0 14 0'/%3E%3Cpath d='M12 18v3'/%3E%3C/svg%3E");
  --ic-folder: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z'/%3E%3C/svg%3E");
  --ic-home: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 10.5 12 3.5l9 7V20a1.5 1.5 0 0 1-1.5 1.5h-15A1.5 1.5 0 0 1 3 20z'/%3E%3Cpath d='M9.5 21.5V12h5v9.5'/%3E%3C/svg%3E");
  /* 交握的手：中间握合 + 两侧手臂 + 下方袖口 */
  /* 原型 modao-icons-3.json #55「企业招聘岗位」：手托心形（实心） */
  --ic-handshake: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2032%2032%22%20fill%3D%22%23000%22%3E%3Cpath%20d%3D%22M4.215%205.959c1.568-1.569%203.735-2.539%206.129-2.539%202.167%200%204.149%200.796%205.669%202.111l-0.011-0.009c1.508-1.305%203.489-2.099%205.655-2.099%204.786%200%208.667%203.88%208.667%208.667%200%202.158-0.789%204.132-2.094%205.65l0.010-0.011-10.353%2010.387c-0.483%200.483-1.149%200.781-1.886%200.781-0.666%200-1.275-0.244-1.743-0.648l0.003%200.003-0.147-0.135-10.352-10.388c-1.296-1.506-2.086-3.48-2.086-5.639%200-2.393%200.97-4.56%202.539-6.129l0-0zM6.1%207.844c-1.085%201.086-1.757%202.586-1.757%204.242%200%201.557%200.593%202.976%201.566%204.043l-0.004-0.005%200.195%200.205%209.9%209.9%207.071-7.072-4.713-4.713-1.413%201.413c-0.724%200.724-1.724%201.172-2.829%201.172-2.209%200-4-1.791-4-4%200-1.104%200.447-2.104%201.171-2.828l2.803-2.804c-1.016-0.817-2.322-1.311-3.744-1.311-1.558%200-2.977%200.594-4.044%201.567l0.005-0.004-0.205%200.195zM17.415%2011.615c0.241-0.241%200.575-0.39%200.943-0.39s0.701%200.149%200.943%200.39l5.656%205.656%200.944-0.941c1.087-1.086%201.759-2.587%201.759-4.244%200-3.314-2.686-6-6-6-1.558%200-2.978%200.594-4.045%201.568l0.005-0.004-0.204%200.195-4.243%204.243c-0.241%200.241-0.391%200.575-0.391%200.943%200%200.313%200.108%200.601%200.289%200.829l-0.002-0.003%200.104%200.116c0.241%200.241%200.575%200.391%200.943%200.391%200.313%200%200.601-0.108%200.829-0.289l-0.003%200.002%200.116-0.104%202.357-2.357z%22%2F%3E%3C%2Fsvg%3E");
}

/* ---------- 「我的简历」（career-portal.js）图标替换机制 ----------
   career-portal.js 新旧共用，emoji 以 <i class="nt-emoji"> 包裹后：
   旧版 career-portal.html（无 .new-theme）照常显示 emoji；新版隐藏 emoji、改用线条图标 */
.new-theme .nt-emoji { display: none; }
.new-theme .nt-ic { display: inline-flex; align-items: center; gap: 4px; }
.new-theme .nt-ic::before {
  content: ""; flex-shrink: 0; width: 16px; height: 16px;
  background-color: currentColor;
  -webkit-mask: no-repeat center / contain; mask: no-repeat center / contain;
}
.new-theme .nt-ic-user::before      { -webkit-mask-image: var(--ic-user); mask-image: var(--ic-user); }
.new-theme .nt-ic-target::before    { -webkit-mask-image: var(--ic-target); mask-image: var(--ic-target); }
.new-theme .nt-ic-book::before      { -webkit-mask-image: var(--ic-book); mask-image: var(--ic-book); }
.new-theme .nt-ic-briefcase::before { -webkit-mask-image: var(--ic-briefcase); mask-image: var(--ic-briefcase); }
.new-theme .nt-ic-layers::before    { -webkit-mask-image: var(--ic-layers); mask-image: var(--ic-layers); }
.new-theme .nt-ic-pen::before       { -webkit-mask-image: var(--ic-pen); mask-image: var(--ic-pen); }
.new-theme .nt-ic-folder::before    { -webkit-mask-image: var(--ic-folder); mask-image: var(--ic-folder); }
.new-theme .nt-ic-search::before    { -webkit-mask-image: var(--ic-search); mask-image: var(--ic-search); }
.new-theme .nt-ic-doc::before       { -webkit-mask-image: var(--ic-doc); mask-image: var(--ic-doc); }
.new-theme .nt-ic-download::before  { -webkit-mask-image: var(--ic-download); mask-image: var(--ic-download); }
.new-theme .nt-ic-graph::before     { -webkit-mask-image: var(--ic-graph); mask-image: var(--ic-graph); }
/* 标题 / 弹框标题前缀图标 */
.new-theme .ttl-icon-doc::before { -webkit-mask-image: var(--ic-doc); mask-image: var(--ic-doc); }

/* ---------- 1. 行内标签图标（学习进度 / 课程积分 / 成绩） ---------- */
.new-theme .tag-icon { display: inline-flex; align-items: center; gap: 4px; }
/* 原型取样：课程积分图标 #FFD951，成绩图标 #FF9682 */
.new-theme .tag-icon-star::before { background-color: #FFD951; }
.new-theme .tag-icon-score::before { background-color: #FF9682; }
/* 学习进度为 12px 小字，图标收到 14px */
.new-theme .progress-head .tag-icon::before { width: 14px; height: 14px; }

/* ---------- 3. 表单标签行 + 行内小按钮（34 高，与 44 输入框居中对齐） ---------- */
/* 两列表单项（关联岗位 / 关联教学大纲）的标签行同高 → 下方输入框对齐；
   min-height 24 刚好容纳小按钮（原始约 22px），不额外撑高弹框 */
.new-theme .label-row {
  display: flex; align-items: center; min-height: 24px; margin-bottom: 5px;
  font-size: var(--font-size-body); color: var(--color-text-secondary);
}
/* 高度与原始实现保持一致（11px 字 + 1px 8px 内边距，不撑高标签行），
   仅换色系（主色字 + 浅蓝底 + #E2E2E2 描边）、字体族与圆角 */
.new-theme .tag-btn {
  height: auto; padding: 1px 8px; box-sizing: border-box; margin-left: 6px;
  border: 1px solid var(--color-border); border-radius: var(--radius-md);
  background: var(--color-tag-success-bg); color: var(--color-primary);
  font-family: inherit; font-size: 11px; line-height: 1.6;
  display: inline-flex; align-items: center; gap: 4px;
  white-space: nowrap; cursor: pointer;
}

/* ---------- 4. 章节卡操作按钮统一 36（与二级按钮体系同高） ---------- */
.new-theme .chapter-head .btn-lv2,
.new-theme .chapter-head .btn-danger-ghost { height: 36px; padding: 0 var(--space-md); }

/* ---------- 5. 资源项图标：摊开的书 ---------- */
.new-theme .res-icon {
  flex-shrink: 0; width: 20px; height: 20px; font-size: 0;
  background-color: var(--color-text-secondary);
  -webkit-mask: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2048%2048%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%224%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M5%207H16C20.4183%207%2024%2010.5817%2024%2015V42C24%2038.6863%2021.3137%2036%2018%2036H5V7Z%22%2F%3E%3Cpath%20d%3D%22M43%207H32C27.5817%207%2024%2010.5817%2024%2015V42C24%2038.6863%2026.6863%2036%2030%2036H43V7Z%22%2F%3E%3C%2Fsvg%3E") no-repeat center / contain;
  mask: url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2048%2048%22%20fill%3D%22none%22%20stroke%3D%22%23000%22%20stroke-width%3D%224%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M5%207H16C20.4183%207%2024%2010.5817%2024%2015V42C24%2038.6863%2021.3137%2036%2018%2036H5V7Z%22%2F%3E%3Cpath%20d%3D%22M43%207H32C27.5817%207%2024%2010.5817%2024%2015V42C24%2038.6863%2026.6863%2036%2030%2036H43V7Z%22%2F%3E%3C%2Fsvg%3E") no-repeat center / contain;
}
/* 区块标题前的小图标（如"章节"） */
.new-theme .ttl-icon { display: inline-flex; align-items: center; gap: 6px; }
.new-theme .ttl-icon::before {
  content: ""; flex-shrink: 0; width: 18px; height: 18px;
  background-color: currentColor;
  -webkit-mask: no-repeat center / contain; mask: no-repeat center / contain;
}
.new-theme .ttl-icon-book::before { -webkit-mask-image: var(--ic-book); mask-image: var(--ic-book); }

/* 按钮图标尺寸（规范 §5：一级按钮 24×24，二级按钮 18×18） */
.new-theme .btn-lv1.btn-icon::before { width: 24px; height: 24px; }
.new-theme .btn-lv2.btn-icon::before,
.new-theme .btn-lv2-primary.btn-icon::before,
.new-theme .btn-lv2-accent.btn-icon::before,
.new-theme .btn-danger-ghost.btn-icon::before { width: 18px; height: 18px; }
/* 岗位详情：列表/详情图标 */
.new-theme .btn-icon-detail::before, .new-theme .tag-icon-detail::before {
  -webkit-mask-image: var(--ic-records); mask-image: var(--ic-records);
}

/* ---------- 行内信息前缀图标（公司 / 地点 / 薪资 / 时间 / 行业 …） ---------- */
.new-theme .mi { display: inline-flex; align-items: center; gap: 4px; }
.new-theme .mi::before {
  content: ""; flex-shrink: 0; width: 14px; height: 14px;
  background-color: var(--color-text-secondary);
  -webkit-mask: no-repeat center / contain; mask: no-repeat center / contain;
}
.new-theme .mi-pen::before      { -webkit-mask-image: var(--ic-pen); mask-image: var(--ic-pen); }
.new-theme .mi-search::before   { -webkit-mask-image: var(--ic-search); mask-image: var(--ic-search); }
.new-theme .mi-records::before  { -webkit-mask-image: var(--ic-records); mask-image: var(--ic-records); }
.new-theme .mi-org::before      { -webkit-mask-image: var(--ic-building); mask-image: var(--ic-building); }
.new-theme .mi-loc::before      { -webkit-mask-image: var(--ic-location); mask-image: var(--ic-location); }
.new-theme .mi-salary::before   { -webkit-mask-image: var(--ic-salary); mask-image: var(--ic-salary); }
.new-theme .mi-calendar::before { -webkit-mask-image: var(--ic-calendar); mask-image: var(--ic-calendar); }
.new-theme .mi-clock::before    { -webkit-mask-image: var(--ic-clock); mask-image: var(--ic-clock); }
.new-theme .mi-tag::before      { -webkit-mask-image: var(--ic-tag); mask-image: var(--ic-tag); }
.new-theme .mi-layers::before   { -webkit-mask-image: var(--ic-layers); mask-image: var(--ic-layers); }
/* TAB 按钮上的图标：居中排列，图标跟随 TAB 文字色 */
.new-theme .market-tab.mi,
.new-theme .practice-tab.mi { justify-content: center; }
.new-theme .market-tab.mi::before,
.new-theme .practice-tab.mi::before { background-color: currentColor; width: 16px; height: 16px; }
/* 选中态图标色见文末「选中态页签的图标与文字同色（白色）」规则 */
.new-theme .mi-graph::before { -webkit-mask-image: var(--ic-graph); mask-image: var(--ic-graph); }
.new-theme .mi-bulb::before  { -webkit-mask-image: var(--ic-bulb); mask-image: var(--ic-bulb); }
.new-theme .mi-check::before { -webkit-mask-image: var(--ic-check); mask-image: var(--ic-check); }

/* 补：岗位市场其余间距/状态 */
.new-theme .stat-cards { margin-bottom: var(--space-md); }
.new-theme .empty.danger { color: var(--color-danger); }
.new-theme .ma-submit { margin-top: var(--space-md); }
.new-theme #manualJdResult { margin-top: var(--space-md); }

/* ============================================================
   图标配色复核（2026-09-23）
   - 章节标题 / 资源项 / 学习进度：主色 #54C2F2
   - 知识图谱 #54C2F2、练习 #899BFA（渐变终点紫）
   - 删除类操作：叉号图标（原型为叉号，非垃圾桶），色 #E49B8D
   ============================================================ */
.new-theme .ttl-icon-book::before,
.new-theme .nt-ic-book::before { background-color: #54C2F2; }
.new-theme .res-icon { background-color: #54C2F2; }
.new-theme .progress-head .tag-icon::before { background-color: #54C2F2; }
.new-theme .btn-icon-graph::before    { background-color: #54C2F2; }
.new-theme .btn-icon-exercise::before  { background-color: #899BFA; }
/* 「删除」（删除计划 / 删除章节）= 原型垃圾桶 */
.new-theme .btn-icon-delete::before,
.new-theme .tag-icon-delete::before {
  -webkit-mask-image: var(--ic-trash); mask-image: var(--ic-trash);
  background-color: var(--color-danger);
}
/* 「删除资源」= 叉号（与「删除」区分，原型如此） */
.new-theme .btn-icon-remove::before,
.new-theme .tag-icon-remove::before {
  -webkit-mask-image: var(--ic-close); mask-image: var(--ic-close);
  background-color: var(--color-danger);
}

/* ============================================================
   第 4 批：企业端（company.html + company.js）+ 登录页（login.html）
   规范依据：§9.5 登录卡片、§9.6 弹框、§9.7 表格、§9.8 标签、§十一 企业端推导
   作用域：企业端 body.app-company、登录页 body.page-login，
           与学生端 / 旧版互不干扰
   ============================================================ */

/* ---------- 企业端：主区 / 提示条 ---------- */
.new-theme.app-company .app-main { padding: var(--space-lg) var(--space-xl) var(--space-3xl); }
.new-theme.app-company .toast {
  bottom: var(--space-2xl); left: 50%; transform: translateX(-50%);
  border-radius: var(--radius-md); font-size: var(--font-size-body);
  box-shadow: 0 4px 12px rgba(0, 0, 0, .2); max-width: 88vw;
}
.new-theme.app-company .toast.success { background: var(--color-primary); }
.new-theme.app-company .toast.error { background: var(--color-danger); }
.new-theme.app-company .toast.info { background: var(--color-text-secondary); }

/* ---------- 企业端：按钮（规范 §3，统一高 36） ---------- */
.new-theme.app-company .btn {
  height: 36px; padding: 0 var(--space-lg); box-sizing: border-box;
  border: 1px solid transparent; border-radius: var(--radius-md);
  font-family: inherit; font-size: var(--font-size-body); font-weight: var(--font-weight-regular);
  display: inline-flex; align-items: center; justify-content: center; gap: 6px;
  white-space: nowrap; cursor: pointer; transition: opacity .15s;
}
.new-theme.app-company .btn:hover { filter: none; opacity: .88; }
.new-theme.app-company .btn:disabled { opacity: .5; cursor: not-allowed; }
/* 主操作：一级按钮（渐变填充，白字） */
.new-theme.app-company .btn-primary {
  background: var(--color-primary-gradient); color: #FFFFFF;
}
/* 中性：二级按钮2 */
.new-theme.app-company .btn-outline,
.new-theme.app-company .btn-ghost {
  background: transparent; border-color: var(--color-border); color: var(--color-text-muted);
}
.new-theme.app-company .btn-outline:hover,
.new-theme.app-company .btn-ghost:hover { border-color: var(--color-primary); color: var(--color-primary); }
/* 危险操作（删除简历等）：珊瑚红描边 */
.new-theme.app-company .btn-danger {
  background: transparent; border-color: var(--color-border); color: var(--color-danger);
}
.new-theme.app-company .btn-sm { height: 36px; padding: 0 var(--space-md); border-radius: var(--radius-sm); font-size: var(--font-size-caption); }
/* 顶栏一级操作：刷新 / 发布招聘岗位（高 44） */
.new-theme.app-company #btnRefreshJobs,
.new-theme.app-company #btnNewJob { height: 44px; }
/* 企业端弹框底部按钮：覆盖上方 #modalBox/#subModalBox 通用 40/34 规则，统一 36 */
.new-theme.app-company #modalBox .btn,
.new-theme.app-company #subModalBox .btn,
.new-theme.app-company #modalBox .btn-sm,
.new-theme.app-company #subModalBox .btn-sm { height: 36px; }

/* ---------- 企业端：卡片 / 页头 ---------- */
.new-theme.app-company .card {
  background: #FFFFFF; border: 1px solid var(--color-border);
  border-radius: var(--radius-md); padding: var(--space-2xl);
  box-shadow: none; margin-bottom: var(--space-lg);
}
.new-theme.app-company .card h2 {
  font-size: var(--font-size-card); color: var(--color-text-primary);
  font-weight: var(--font-weight-regular); margin-bottom: var(--space-lg);
  display: flex; align-items: center; gap: var(--space-sm);
}
.new-theme.app-company .card h2 .hint { font-size: var(--font-size-body); color: var(--color-text-muted); }
.new-theme.app-company .page-head { margin-bottom: var(--space-lg); }
.new-theme.app-company .page-head .t { font-size: var(--font-size-card); color: var(--color-text-primary); font-weight: var(--font-weight-regular); }
.new-theme.app-company .page-head .back { font-size: var(--font-size-body); color: var(--color-primary); cursor: pointer; }

/* ---------- 企业端：岗位卡片（§十一） ---------- */
.new-theme.app-company .grid { gap: var(--space-lg); }
.new-theme.app-company .grid-3 { grid-template-columns: repeat(auto-fill, minmax(400px, 1fr)); }
.new-theme.app-company .job-card {
  background: #FFFFFF; border: 1px solid var(--color-border);
  border-radius: var(--radius-md); padding: var(--space-xl);
  display: flex; flex-direction: column; gap: var(--space-sm);
}
.new-theme.app-company .job-card .jt {
  font-size: var(--font-size-card); color: var(--color-text-primary);
  font-weight: var(--font-weight-regular);
  display: flex; align-items: center; gap: var(--space-sm); flex-wrap: wrap;
}
.new-theme.app-company .job-card .meta {
  font-size: var(--font-size-body); color: var(--color-text-secondary);
  display: flex; gap: var(--space-md); flex-wrap: wrap;
}
.new-theme.app-company .job-card .row { gap: var(--space-sm); }

/* ---------- 企业端：状态标签（§十一） ---------- */
.new-theme.app-company .badge {
  height: 24px; padding: 0 var(--space-sm); box-sizing: border-box;
  border-radius: var(--radius-sm); font-size: var(--font-size-caption);
  display: inline-flex; align-items: center;
}
.new-theme.app-company .badge-active { background: var(--color-tag-success-bg); color: var(--color-primary); }
.new-theme.app-company .badge-paused { background: var(--color-tag-danger-bg); color: var(--color-danger); }
.new-theme.app-company .badge-archived { background: var(--color-bg-disabled); color: var(--color-text-muted); }
/* 简历管理操作列状态徽章（已筛选/待筛选）：与同行 36px 按钮等高。
   必须放在 .badge 基础规则之后，且用 .badge.badge-act 提高特异性，否则被
   `.new-theme.app-company .badge { height: 24px }` 覆盖回 24px。 */
.new-theme.app-company .badge.badge-act {
  height: 36px; padding: 0 12px; display: inline-flex; align-items: center; justify-content: center;
  vertical-align: middle;
}

/* ---------- 企业端：标签 / 表单 ---------- */
.new-theme.app-company .chip-gray { background: var(--color-bg-disabled); color: var(--color-text-secondary); }
.new-theme.app-company .tag {
  background: var(--color-tag-success-bg); color: var(--color-primary);
  border-radius: var(--radius-sm); padding: 0 var(--space-sm); font-size: var(--font-size-caption);
}
.new-theme.app-company .label {
  font-size: var(--font-size-body); color: var(--color-text-secondary);
  font-weight: var(--font-weight-regular); margin-bottom: 5px; display: block;
}

/* ---------- 企业端：表格（§9.7） ---------- */
/* 候选人 / 简历列表表格（§9.7）：表头 #F4F4F5、行高 48、行分割线 #E2E2E2、容器圆角 10 */
.new-theme.app-company table {
  width: 100%; font-size: var(--font-size-body);
  border: 1px solid var(--color-border); border-radius: var(--radius-md);
  border-collapse: separate; border-spacing: 0; overflow: hidden;
}
.new-theme.app-company th,
.new-theme.app-company td {
  text-align: left; padding: 0 var(--space-md);
  height: var(--table-row-height, 48px);
  border-bottom: 1px solid var(--color-border);
}
.new-theme.app-company tr:last-child td { border-bottom: none; }
.new-theme.app-company th {
  background: var(--color-bg-disabled); color: var(--color-text-secondary);
  font-size: var(--font-size-body); font-weight: var(--font-weight-regular);
}
.new-theme.app-company td { font-size: var(--font-size-body); color: var(--color-text-primary); }
.new-theme.app-company tr:hover td { background: #FAFCFB; }

/* ---------- 企业端：筛选栏 ---------- */
.new-theme.app-company .filter-bar { gap: var(--space-md); margin-bottom: var(--space-lg); }
.new-theme.app-company .filter-bar input[type=text] { flex: 1; min-width: 180px; max-width: 300px; }
.new-theme.app-company .filter-bar select { max-width: 240px; width: auto; }

/* ---------- 企业端：弹框（modal-head + modal-body 结构） ----------
   宽度：恢复 company.html 原本的 780px（新版主题曾压到 720px，导致岗位建模 /
   候选人详情等内容被横向挤压）；内容最重的弹框再由调用方追加 .modal-lg。 */
.new-theme.app-company .modal {
  background: #FFFFFF; border-radius: var(--radius-lg);
  box-shadow: var(--shadow-modal); width: min(780px, 94vw);
}
.new-theme.app-company .modal.modal-lg { width: min(1000px, 94vw); }
/* 候选人详情左右两栏布局专用超宽档 */
.new-theme.app-company .modal.modal-xl { width: min(1380px, 96vw); }
.new-theme.app-company .modal-head { padding: var(--space-md) var(--space-2xl) 0; }
.new-theme.app-company .modal-body { padding: var(--space-sm) var(--space-2xl) var(--space-2xl); }
.new-theme.app-company .modal h3 {
  font-size: var(--font-size-nav); color: var(--color-text-primary);
  font-weight: var(--font-weight-regular); margin-bottom: var(--space-md);
}
.new-theme.app-company .modal .m-sub { font-size: var(--font-size-body); color: var(--color-text-muted); }
.new-theme.app-company .modal-close {
  width: 30px; height: 30px; border: none; border-radius: var(--radius-sm);
  background: transparent; color: var(--color-text-muted); font-size: 18px; line-height: 1;
  cursor: pointer; display: flex; align-items: center; justify-content: center;
}
.new-theme.app-company .modal-close:hover { background: var(--color-bg-disabled); color: var(--color-text-primary); }
.new-theme.app-company .modal-drag:hover { background: var(--color-bg-disabled); }
.new-theme.app-company .modal-drag:active { background: var(--color-border); }
/* 第二层弹框 */
.new-theme.app-company #subModalMask { background: rgba(0, 0, 0, .3); }
.new-theme.app-company #subModalBox { width: min(660px, 92vw); }
.new-theme.app-company #subModalBox.modal-lg { width: min(920px, 94vw); }

/* ---------- 企业端：侧边栏图标（data-key = workspace / jobs / resumes） ---------- */
.new-theme .side-tab[data-key="workspace"] .si {
  font-size: 0; width: 32px; height: 32px; flex-shrink: 0;
  background-color: var(--color-text-secondary);
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M13 12h7v1.5h-7zm0-2.5h7V11h-7zm0 5h7V16h-7zM21 4H3c-1.1 0-2 .9-2 2v13c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 15h-9V6h9v13z' fill='%23000'/%3E%3C/svg%3E") no-repeat center / 24px 24px;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M13 12h7v1.5h-7zm0-2.5h7V11h-7zm0 5h7V16h-7zM21 4H3c-1.1 0-2 .9-2 2v13c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 15h-9V6h9v13z' fill='%23000'/%3E%3C/svg%3E") no-repeat center / 24px 24px;
}
.new-theme .side-tab.active[data-key="workspace"] .si { background-color: var(--color-primary); }
.new-theme .side-tab[data-key="jobs"] .si {
  font-size: 0; width: 32px; height: 32px; flex-shrink: 0;
  background-color: var(--color-text-secondary);
  -webkit-mask: var(--ic-briefcase) no-repeat center / 24px 24px;
  mask: var(--ic-briefcase) no-repeat center / 24px 24px;
}
.new-theme .side-tab.active[data-key="jobs"] .si { background-color: var(--color-primary); }
.new-theme .side-tab[data-key="resumes"] .si {
  font-size: 0; width: 32px; height: 32px; flex-shrink: 0;
  background-color: var(--color-text-secondary);
  -webkit-mask: var(--ic-doc) no-repeat center / 24px 24px;
  mask: var(--ic-doc) no-repeat center / 24px 24px;
}
.new-theme .side-tab.active[data-key="resumes"] .si { background-color: var(--color-primary); }

/* ============================================================
   登录 / 注册卡片（规范 §9.5：宽 400、圆角 16、内边距 32px 40px、
   阴影 0 4px 24px rgba(0,0,0,.08)、标题 22px / #101010 居中、主按钮高 58）
   ============================================================ */
.new-theme.page-login {
  background: linear-gradient(135deg, #E7F5FA 0%, #CFE9F7 100%);
  font-family: var(--font-family); font-weight: var(--font-weight-regular);
}
.new-theme.page-login .auth-card {
  width: 400px; max-width: 92vw;
  padding: var(--space-3xl) 40px;
  border-radius: var(--radius-lg);
  box-shadow: 0 4px 24px rgba(0, 0, 0, .08);
  background: #FFFFFF; text-align: center;
}
.new-theme.page-login .brand-title {
  font-size: var(--font-size-title); color: var(--color-text-primary);
  font-weight: var(--font-weight-regular); margin-bottom: var(--space-xs);
}
.new-theme.page-login .brand-sub {
  font-size: var(--font-size-nav); color: var(--color-text-secondary);
  font-weight: var(--font-weight-regular); margin-bottom: 2px;
}
.new-theme.page-login .brand-en {
  font-size: var(--font-size-body); color: var(--color-text-muted); margin-bottom: var(--space-2xl);
}
.new-theme.page-login .field { margin-bottom: var(--space-lg); text-align: left; }
.new-theme.page-login .field label {
  font-size: var(--font-size-body); color: var(--color-text-secondary);
  font-weight: var(--font-weight-regular); display: block; margin-bottom: var(--space-xs);
}
.new-theme.page-login .err {
  color: var(--color-danger); font-size: var(--font-size-body);
  margin-bottom: var(--space-md); text-align: left;
}
/* 主按钮：一级按钮1 —— 高 58、渐变、圆角 16、18px 白字、满宽 */
.new-theme.page-login .btn-primary {
  width: 100%; height: 58px; box-sizing: border-box;
  border: none; border-radius: var(--radius-lg);
  background: var(--color-primary-gradient); color: #FFFFFF;
  font-family: inherit; font-size: var(--font-size-nav); font-weight: var(--font-weight-regular);
  cursor: pointer;
}
.new-theme.page-login .btn-primary:hover { filter: none; opacity: .88; }
.new-theme.page-login .switch { margin-top: var(--space-md); font-size: var(--font-size-body); color: var(--color-text-secondary); }
.new-theme.page-login .switch a { color: var(--color-primary); text-decoration: none; }
.new-theme.page-login .role-toggle { gap: var(--space-lg); }
.new-theme.page-login .role-opt {
  font-size: var(--font-size-body); color: var(--color-text-secondary); font-weight: var(--font-weight-regular);
}
.new-theme.page-login .role-opt input { accent-color: var(--color-primary); }

/* ============================================================
   视觉复核（2026-09-23 页签卡片化 + 图标修正）
   1) 岗位市场 / 做训练 的页签：独立矩形卡片（原型 W526 × H44、圆角 16）
      选中 = 线性渐变填充 + 白色字与图标；未选中 = 白底 + #E2E2E2 描边 + #818181
   2) "粘贴 JD 入库" / "简历画像" 标题图标 = 两个空心正方形部分交叠，色 #54C2F2
   3) 企业端岗位卡片按钮：中性态提亮，避免被误判为禁用
   4) 简历六层页签 / 能力清单视图页签：与卡片页签同色系
   ============================================================ */

/* ---------- 1. 页签组：三个独立卡片，不再包在灰底大框里 ---------- */
.new-theme .market-tabs,
.new-theme .practice-tabs,
.new-theme .ex-mode-bar {
  display: flex; gap: var(--space-xl);
  padding: 0; margin-bottom: var(--space-lg);
  background: transparent; border-radius: 0;
}
@media (max-width: 900px) {
  .new-theme .market-tabs,
  .new-theme .practice-tabs,
  .new-theme .ex-mode-bar { flex-wrap: wrap; gap: var(--space-md); }
}
.new-theme .market-tab,
.new-theme .practice-tab,
.new-theme .ex-mode-btn {
  flex: 1 1 0; min-width: 0;   /* 横向等分铺满内容区 */
  height: 44px; box-sizing: border-box; padding: 0 var(--space-lg);
  border: 1px solid var(--color-border); border-radius: var(--radius-lg);
  background: #FFFFFF; color: #818181;
  font-family: inherit; font-size: var(--font-size-nav); font-weight: var(--font-weight-regular);
  display: inline-flex; align-items: center; justify-content: center; gap: var(--space-sm);
  cursor: pointer; white-space: nowrap; transition: all .15s;
}
.new-theme .market-tab:hover,
.new-theme .practice-tab:hover,
.new-theme .ex-mode-btn:hover { border-color: var(--color-primary); color: var(--color-primary); }
.new-theme .market-tab.active,
.new-theme .practice-tab.active,
.new-theme .ex-mode-btn.active {
  border-color: transparent;
  background: var(--color-primary-gradient); color: #FFFFFF;
  box-shadow: none;
}
/* 页签图标跟随文字色：未选中 #818181、选中 #FFFFFF */
.new-theme .market-tab.mi::before,
.new-theme .practice-tab.mi::before { width: 20px; height: 20px; background-color: currentColor; }
.new-theme .mi-hand::before      { -webkit-mask-image: var(--ic-hand); mask-image: var(--ic-hand); }
.new-theme .mi-handshake::before { -webkit-mask-image: var(--ic-handshake); mask-image: var(--ic-handshake); }
.new-theme .mi-user::before      { -webkit-mask-image: var(--ic-user); mask-image: var(--ic-user); }
/* 「智能推荐」子页签图标（复用 --ic-sparkle） */
.new-theme .mi-sparkle::before   { -webkit-mask-image: var(--ic-sparkle); mask-image: var(--ic-sparkle); }

/* ---------- emoji → 线条图标（学生端渲染后由 JS 把文案里的 emoji 换成 <i class="nt-ic …">） ---------- */
.new-theme .nt-ic-sparkle::before    { -webkit-mask-image: var(--ic-sparkle); mask-image: var(--ic-sparkle); }
.new-theme .nt-ic-bolt::before       { -webkit-mask-image: var(--ic-bolt); mask-image: var(--ic-bolt); }
.new-theme .nt-ic-bulb::before       { -webkit-mask-image: var(--ic-bulb); mask-image: var(--ic-bulb); }
.new-theme .nt-ic-link::before       { -webkit-mask-image: var(--ic-link); mask-image: var(--ic-link); }
.new-theme .nt-ic-check-circle::before { -webkit-mask-image: var(--ic-check-circle); mask-image: var(--ic-check-circle); }
.new-theme .nt-ic-x-circle::before   { -webkit-mask-image: var(--ic-x-circle); mask-image: var(--ic-x-circle); }
.new-theme .nt-ic-clock::before      { -webkit-mask-image: var(--ic-clock); mask-image: var(--ic-clock); }
.new-theme .nt-ic-robot::before      { -webkit-mask-image: var(--ic-robot); mask-image: var(--ic-robot); }
.new-theme .nt-ic-phone::before      { -webkit-mask-image: var(--ic-phone); mask-image: var(--ic-phone); }
.new-theme .nt-ic-key::before        { -webkit-mask-image: var(--ic-key); mask-image: var(--ic-key); }
.new-theme .nt-ic-clipboard::before  { -webkit-mask-image: var(--ic-clipboard); mask-image: var(--ic-clipboard); }
.new-theme .nt-ic-save::before       { -webkit-mask-image: var(--ic-save); mask-image: var(--ic-save); }
.new-theme .nt-ic-camera::before     { -webkit-mask-image: var(--ic-camera); mask-image: var(--ic-camera); }
.new-theme .nt-ic-chart::before      { -webkit-mask-image: var(--ic-chart); mask-image: var(--ic-chart); }
.new-theme .nt-ic-star::before       { -webkit-mask-image: var(--ic-star); mask-image: var(--ic-star); }
.new-theme .nt-ic-thumbup::before    { -webkit-mask-image: var(--ic-thumbup); mask-image: var(--ic-thumbup); }
.new-theme .nt-ic-thumbdown::before  { -webkit-mask-image: var(--ic-thumbdown); mask-image: var(--ic-thumbdown); }
.new-theme .nt-ic-warning::before    { -webkit-mask-image: var(--ic-warning); mask-image: var(--ic-warning); }
.new-theme .nt-ic-chat::before       { -webkit-mask-image: var(--ic-chat); mask-image: var(--ic-chat); }
.new-theme .nt-ic-arrow-left::before { -webkit-mask-image: var(--ic-arrow-left); mask-image: var(--ic-arrow-left); }
.new-theme .nt-ic-mic::before        { -webkit-mask-image: var(--ic-mic); mask-image: var(--ic-mic); }
.new-theme .nt-ic-folder::before     { -webkit-mask-image: var(--ic-folder); mask-image: var(--ic-folder); }
.new-theme .nt-ic-home::before       { -webkit-mask-image: var(--ic-home); mask-image: var(--ic-home); }
.new-theme .nt-ic-briefcase::before  { -webkit-mask-image: var(--ic-briefcase); mask-image: var(--ic-briefcase); }
.new-theme .nt-ic-location::before   { -webkit-mask-image: var(--ic-location); mask-image: var(--ic-location); }
.new-theme .nt-ic-salary::before     { -webkit-mask-image: var(--ic-salary); mask-image: var(--ic-salary); }
.new-theme .nt-ic-calendar::before   { -webkit-mask-image: var(--ic-calendar); mask-image: var(--ic-calendar); }
.new-theme .nt-ic-tag::before        { -webkit-mask-image: var(--ic-tag); mask-image: var(--ic-tag); }
.new-theme .nt-ic-layers::before     { -webkit-mask-image: var(--ic-layers); mask-image: var(--ic-layers); }
.new-theme .nt-ic-graph::before      { -webkit-mask-image: var(--ic-graph); mask-image: var(--ic-graph); }
.new-theme .nt-ic-search::before     { -webkit-mask-image: var(--ic-search); mask-image: var(--ic-search); }
.new-theme .nt-ic-pen::before        { -webkit-mask-image: var(--ic-pen); mask-image: var(--ic-pen); }
.new-theme .nt-ic-check::before      { -webkit-mask-image: var(--ic-check); mask-image: var(--ic-check); }
.new-theme .nt-ic-close::before      { -webkit-mask-image: var(--ic-close); mask-image: var(--ic-close); }
.new-theme .nt-ic-trash::before     { -webkit-mask-image: var(--ic-trash); mask-image: var(--ic-trash); }
/* 图标在文案流里与文字基线对齐 */
.new-theme .nt-ic { vertical-align: -2px; }
.new-theme .btn .nt-ic,
.new-theme .market-tab .nt-ic,
.new-theme .practice-tab .nt-ic { vertical-align: 0; }

/* ---------- 2. 两个空心正方形部分交叠（"粘贴 JD 入库" / "简历画像"） ---------- */
.new-theme .ttl-icon-copy::before,
.new-theme .nt-ic-copy::before {
  -webkit-mask-image: var(--ic-copy); mask-image: var(--ic-copy);
  background-color: #54C2F2;
}

/* ---------- 3. 企业端岗位卡片按钮：中性态提亮 ---------- */
.new-theme.app-company .btn-outline,
.new-theme.app-company .btn-ghost { color: var(--color-text-secondary); }
.new-theme.app-company .btn-outline:hover,
.new-theme.app-company .btn-ghost:hover {
  border-color: var(--color-primary); color: var(--color-primary);
  background: var(--color-tag-success-bg); opacity: 1;
}
/* 真正的禁用态才用浅灰（与可点击的中性按钮区分开） */
.new-theme.app-company .btn:disabled,
.new-theme.app-company .btn-idle {
  border-color: var(--color-border); color: var(--color-text-disabled);
  background: var(--color-bg-disabled); opacity: 1; cursor: not-allowed;
}
.new-theme.app-company .btn-idle:hover {
  border-color: var(--color-border); color: var(--color-text-disabled);
  background: var(--color-bg-disabled);
}

/* ---------- 4. 简历六层页签 / 能力清单视图页签（胶囊）：与卡片页签同色系 ---------- */
.new-theme .sub-tab { background: #FFFFFF; border-color: var(--color-border); color: #818181; }
.new-theme .sub-tab:hover { border-color: var(--color-primary); color: var(--color-primary); }
.new-theme .sub-tab.active {
  background: var(--color-primary-gradient); border-color: transparent; color: #FFFFFF;
}
.new-theme .sub-tab .st-dot { background: var(--color-text-disabled); }
.new-theme .sub-tab.on .st-dot { background: var(--color-primary); }
.new-theme .sub-tab.active .st-dot { background: #FFFFFF; }

/* 选中态页签的图标与文字同色（白色）：渐变底上再用主色会与背景冲突、看不清 */
.new-theme .market-tab.active.mi::before,
.new-theme .practice-tab.active.mi::before { background-color: currentColor; }

/* ---------- 全局滚动条：滚动条本体 + 上下两端箭头统一 #E2E2E2 ----------
   不加此规则时，学生端 / 企业端 / 登录页用的是 Windows 原生滚动条（深灰滑块 + 深色箭头）。
   轨道保持透明，否则滑块与轨道同为 #E2E2E2 会彼此看不见。 */
::-webkit-scrollbar { width: 6px; height: 6px; }
::-webkit-scrollbar-track,
::-webkit-scrollbar-corner { background: transparent; }
::-webkit-scrollbar-thumb,
::-webkit-scrollbar-thumb:hover { background: #E2E2E2; border-radius: 3px; }
/* 两端按钮不铺底色（透明），只留箭头图形 —— 若按钮也填 #E2E2E2，
   箭头与底色同色会糊成一个方块 */
::-webkit-scrollbar-button,
::-webkit-scrollbar-button:hover,
::-webkit-scrollbar-button:active {
  display: block;
  background-color: transparent;
  background-repeat: no-repeat;
  background-position: center;
}
::-webkit-scrollbar-button:vertical { height: 6px; }
::-webkit-scrollbar-button:horizontal { width: 6px; }
/* 关键：Chrome 在滚动条【每一端】都会渲染 decrement + increment 两个按钮，
   只写 :decrement / :increment 定位不到"哪一端"，两端会各叠出两个三角。
   必须再配 :start / :end 定位，并把每端多出来的那一个隐藏。
   （headless Chrome 截图实测：start = 上/左，end = 下/右） */
::-webkit-scrollbar-button:vertical:start:increment,
::-webkit-scrollbar-button:vertical:end:decrement,
::-webkit-scrollbar-button:horizontal:start:increment,
::-webkit-scrollbar-button:horizontal:end:decrement { display: none; }
/* 箭头图形用 #E2E2E2 描画，且尽量撑满按钮，避免 6px 下三角太小又被看成方点；
   觉得太淡就把这四处 fill 换成 #C0C0C0（--gray-300） */
::-webkit-scrollbar-button:vertical:start:decrement {
  background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='6' height='6' viewBox='0 0 6 6'%3E%3Cpath d='M3 .5 5.8 5.5H.2Z' fill='%23E2E2E2'/%3E%3C/svg%3E");
}
::-webkit-scrollbar-button:vertical:end:increment {
  background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='6' height='6' viewBox='0 0 6 6'%3E%3Cpath d='M3 5.5 .2 .5h5.6Z' fill='%23E2E2E2'/%3E%3C/svg%3E");
}
::-webkit-scrollbar-button:horizontal:start:decrement {
  background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='6' height='6' viewBox='0 0 6 6'%3E%3Cpath d='M.5 3 5.5 .2v5.6Z' fill='%23E2E2E2'/%3E%3C/svg%3E");
}
::-webkit-scrollbar-button:horizontal:end:increment {
  background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='6' height='6' viewBox='0 0 6 6'%3E%3Cpath d='M5.5 3 .5 .2v5.6Z' fill='%23E2E2E2'/%3E%3C/svg%3E");
}

/* ============================================================
   标题字号 / 字重统一（2026-10-09）
   ------------------------------------------------------------------
   背景：
     1) 旧主题里几乎所有标题都被显式压成 400（--font-weight-regular），
        唯独「智能推荐」岗位卡标题（.job-card .jt，来自 portal.css 的 600）
        看起来是加粗的，于是同一套界面里标题时粗时细：
        「知行伴学 / 我的简历 / 手动添加目标岗位」等页面的标题都不加粗。
     2) 「知行伴学」的费曼分节标题（.feynman-block h3，12px）、知识图谱
        树形深层节点（.fw-node.level-2/3，13/12px）比正文（14px）还小，观感别扭。
   目标：
     A) 页面 / 区块 / 卡片 / 列表 / 弹框标题统一加粗（600 半粗）；
     B) 标题字号不小于正文（--font-size-body，14px）。
   范围：学生端（.new-theme）+ 企业端（.new-theme.app-company），
        含学生端内嵌的「我的简历」（career-portal.js，#portalMain）。
   ============================================================ */

/* 补齐设计中缺失的字重 Token：旧代码里 var(--font-weight-semibold/-medium)
   从未定义，会导致整条 font-weight 声明在计算值阶段失效（回退 400）。 */
:root {
  --font-weight-medium: 500;
  --font-weight-semibold: 600;
  --font-weight-bold: 700;
}

/* ---------- A. 标题统一加粗 ----------
   字重取 600 半粗：页面字体只加载了 400，700 是浏览器算法加粗、偏重发糊；
   600 与原型里「智能推荐」岗位卡标题（.job-card .jt）原本的 600 一致。 */
/* 顶栏品牌标题（两端共用） */
.new-theme .app-header .app-title,
/* 登录页品牌标题（.brand-en 为英文副标题，保持常规字重） */
.new-theme.page-login .brand-title,
.new-theme.page-login .brand-sub,
/* 学生端：区块 / 计划卡 / 章节 / 岗位卡 标题
   （章节卡内的视频/资源名 .res-title 属正文信息，刻意不加粗） */
.new-theme .section-title,
.new-theme .plan-title,
.new-theme .plan-detail-head .title,
.new-theme .chapter-title,
.new-theme .ma-title,
.new-theme .ma-ok-title,
.new-theme .job-card .jt,
/* 通用卡片 / 页头标题（学生端 + 企业端） */
.new-theme .card h2,
.new-theme #portalMain .card h2,
.new-theme.app-company .card h2,
.new-theme.app-company .page-head .t,
.new-theme.app-company .job-card .jt,
/* 弹框 / 岗位详情 / 匹配明细标题 */
.new-theme .modal h3,
.new-theme.app-company .modal h3,
.new-theme .jd-title,
.new-theme .pv-head h3,
.new-theme .apply-save-head h3,
/* 「我的简历」（career-portal）：步骤 / 分节 / 列表 / 折叠标题 */
.new-theme .step-title,
.new-theme .apply-panel-title,
.new-theme .apply-section-title,
.new-theme .list-item .li-title,
.new-theme .fold-summary {
  font-weight: var(--font-weight-semibold);
}

/* 标题内的说明性 .hint 保持常规字重，避免整行一齐加粗 */
.new-theme .card h2 .hint,
.new-theme #portalMain .card h2 .hint,
.new-theme.app-company .card h2 .hint,
.new-theme.app-company .page-head .t .hint {
  font-weight: var(--font-weight-regular);
}

/* ---------- B. 标题字号不小于正文（14px） ---------- */
/* 费曼讲解：每个分节标题原为 12px */
.new-theme .feynman-block h3 {
  font-size: var(--font-size-body);
  font-weight: var(--font-weight-semibold);
}
/* 知识图谱树形视图：深层节点标题原为 13 / 12px */
.new-theme .fw-node.level-2 .fw-node-header,
.new-theme .fw-node.level-3 .fw-node-header { font-size: var(--font-size-body); }
/* 问答反馈的小节标题原为 13px */
.new-theme .feedback-title { font-size: var(--font-size-body); }
/* 企业端候选人详情：简历分段标题原为 13px */
.new-theme.app-company .resume-section .rs-head { font-size: var(--font-size-body); }

/* ============================================================
   实践测评（学生端；配色/字体沿用新版主题 token）
   ============================================================ */
/* 侧边栏图标：实践测评 = 带勾选的剪贴板（未选中 #626262 / 选中 #54C2F2，与其他 tab 同规格） */
.new-theme .side-tab[data-key="project"] .si {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23626262' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='8' y='3' width='8' height='4' rx='1'/%3E%3Cpath d='M16 5.5h2A1.5 1.5 0 0 1 19.5 7v12A1.5 1.5 0 0 1 18 20.5H6A1.5 1.5 0 0 1 4.5 19V7A1.5 1.5 0 0 1 6 5.5h2'/%3E%3Cpath d='M9 14l2 2 4-4'/%3E%3C/svg%3E");
}
.new-theme .side-tab.active[data-key="project"] .si {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%2354C2F2' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='8' y='3' width='8' height='4' rx='1'/%3E%3Cpath d='M16 5.5h2A1.5 1.5 0 0 1 19.5 7v12A1.5 1.5 0 0 1 18 20.5H6A1.5 1.5 0 0 1 4.5 19V7A1.5 1.5 0 0 1 6 5.5h2'/%3E%3Cpath d='M9 14l2 2 4-4'/%3E%3C/svg%3E");
}
/* 页头标题前缀图标（与 .ttl-icon-* 同机制，主色 #54C2F2） */
.new-theme .ttl-icon-clip::before {
  -webkit-mask-image: var(--ic-clipboard); mask-image: var(--ic-clipboard);
  background-color: var(--color-primary);
}

/* 无简历引导条（沿用主题警示色）；[hidden] 需显式压制类上的 display，否则空框仍会占位 */
.new-theme .pi-guide {
  display: flex; align-items: center; gap: var(--space-sm); flex-wrap: wrap;
  padding: 12px 14px; margin: 12px 0; border-radius: var(--radius-md);
  background: #FFF6E0; border: 1px solid #F3E4BE; color: #B77C1A;
  font-size: var(--font-size-body);
}
.new-theme .pi-guide[hidden] { display: none; }

/* 上传框 */
.new-theme .pi-drop {
  margin: 14px 0 18px; padding: 26px 18px; text-align: center;
  border: 1.5px dashed var(--color-border); border-radius: var(--radius-md);
  background: var(--color-bg-disabled);
  cursor: pointer; transition: border-color .15s, background .15s;
}
.new-theme .pi-drop:hover,
.new-theme .pi-drop.pi-over { border-color: var(--color-primary); background: var(--color-tag-success-bg); }
.new-theme .pi-drop-icon { font-size: 22px; color: var(--color-primary); }
.new-theme .pi-drop-main { margin-top: 6px; font-size: var(--font-size-tag); font-weight: var(--font-weight-semibold); color: var(--color-text-primary); }
.new-theme .pi-drop-sub { margin-top: 4px; font-size: var(--font-size-caption); color: var(--color-text-muted); }
.new-theme .pi-drop-note { margin-top: 2px; font-size: var(--font-size-caption); color: var(--color-text-disabled); }

/* 列表表格（沿用主题的禁用底/次要文字色） */
.new-theme .pi-table { width: 100%; border-collapse: collapse; font-size: var(--font-size-body); }
.new-theme .pi-table th,
.new-theme .pi-table td { padding: 10px 12px; border-bottom: 1px solid var(--color-border); text-align: left; vertical-align: middle; }
.new-theme .pi-table th { font-weight: var(--font-weight-semibold); color: var(--color-text-secondary); background: var(--color-bg-disabled); white-space: nowrap; }
.new-theme .pi-cell-summary { max-width: 280px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--color-text-secondary); }
.new-theme .pi-cell-time { white-space: nowrap; color: var(--color-text-muted); }
/* 能力项列：与摘要列统一为「单行 + 悬浮看全部」；
   列宽按「3 个 chip + +N」预算：3×(116+4) + 间距 + 折叠 ≈ 415px，故取 440px（留余量）；
   chip 超列宽时在内部省略（.chip 是 inline-flex，text-overflow 不可靠，故覆盖为 inline-block，
   高度改由 line-height 兜住）。 */
.new-theme .pi-cell-abilities { max-width: 440px; white-space: nowrap; overflow: hidden; }
.new-theme .pi-cell-abilities .chip {
  display: inline-block; line-height: 24px; max-width: 116px; vertical-align: middle;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; margin: 0 4px 0 0;
}
.new-theme .pi-more { color: var(--color-text-muted); font-size: var(--font-size-caption); vertical-align: middle; }
/* 未达要求的能力项：弱化/警示色，与达标项区分 */
.new-theme .pi-chip-none { background: var(--color-tag-danger-bg); color: var(--color-danger); border-color: #F1D5CF; }
/* 操作列收窄到内容宽：width:1% 阻止 auto 表格把富余宽度分给它，空间让给摘要 / 能力项 */
.new-theme .pi-cell-ops { width: 1%; white-space: nowrap; }
.new-theme .pi-muted { color: var(--color-text-muted); }
.new-theme .pi-danger { color: var(--color-danger); }

/* 解析遮罩（阻塞式，不可点击穿透） */
.pi-parse-mask {
  position: fixed; inset: 0; z-index: 10050; background: rgba(16, 16, 16, .45);
  display: flex; align-items: center; justify-content: center;
}
.pi-parse-card {
  width: min(420px, 88vw); background: var(--color-bg-page); border-radius: var(--radius-lg); padding: 24px 26px;
  box-shadow: 0 18px 50px rgba(16, 16, 16, .22); text-align: center;
}
.pi-parse-spinner {
  width: 34px; height: 34px; margin: 0 auto 12px; border: 3px solid var(--color-border);
  border-top-color: var(--color-primary); border-radius: 50%; animation: piSpin .8s linear infinite;
}
@keyframes piSpin { to { transform: rotate(360deg); } }
.pi-parse-text { font-size: var(--font-size-tag); font-weight: var(--font-weight-semibold); color: var(--color-text-primary); margin-bottom: 14px; }
.pi-parse-card--plain .pi-parse-text { margin-bottom: 0; }
.pi-parse-card .progress-track { height: 8px; background: var(--color-bg-disabled); border-radius: 6px; overflow: hidden; }
.pi-parse-card .progress-fill { height: 100%; width: 0; background: var(--color-primary); border-radius: 6px; transition: width .2s linear; }
.pi-parse-sub { margin-top: 8px; font-size: var(--font-size-caption); color: var(--color-text-muted); }

/* 弹框内 */
.new-theme .pi-modal-head {
  position: sticky; top: 0; z-index: 2; display: flex; align-items: center; justify-content: space-between;
  gap: 12px; padding: 4px 0 10px; background: var(--color-bg-page); border-bottom: 1px solid var(--color-border);
}
.new-theme .pi-modal-head h3 { margin: 0; font-size: var(--font-size-tag); font-weight: var(--font-weight-semibold); }
.new-theme .pi-meta { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; margin: 14px 0 8px; }
.new-theme .pi-name { font-size: var(--font-size-tag); font-weight: var(--font-weight-semibold); color: var(--color-text-primary); }
.new-theme .pi-time { font-size: var(--font-size-caption); color: var(--color-text-muted); white-space: nowrap; }
.new-theme .pi-summary { font-size: var(--font-size-body); color: var(--color-text-secondary); line-height: 1.7; margin-bottom: 12px; white-space: pre-wrap; }
.new-theme .pi-block { margin: 10px 0 16px; }
.new-theme .pi-block .chip { margin: 2px 6px 2px 0; }
.new-theme .pi-q {
  padding: 12px 14px; margin-bottom: 12px;
  border: 1px solid var(--color-border); border-radius: var(--radius-sm);
  background: var(--color-bg-page);
}
.new-theme .pi-q-title { font-size: var(--font-size-body); font-weight: var(--font-weight-medium); color: var(--color-text-primary); margin-bottom: 8px; }
.new-theme .pi-q-label { font-size: var(--font-size-caption); color: var(--color-text-muted); margin-bottom: 4px; }
.new-theme .pi-q-ans {
  font-size: var(--font-size-body); color: var(--color-text-secondary); line-height: 1.7;
  white-space: pre-wrap;
  background: var(--color-bg-disabled); border: 1px solid var(--color-border);
  border-radius: var(--radius-sm); padding: 8px 10px;
}
/* 超长答案默认折叠（约 7 行）+ 底部渐隐，点击「展开全文」查看 */
.new-theme .pi-q-ans--clamp { position: relative; max-height: 7em; overflow: hidden; }
.new-theme .pi-q-ans--clamp::after {
  content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 2em;
  background: linear-gradient(to bottom, rgba(244, 244, 245, 0), var(--color-bg-disabled));
}
.new-theme .pi-q-ans--open { max-height: none; }
.new-theme .pi-q-ans--open::after { display: none; }
.new-theme .pi-q-toggle {
  display: inline-block; margin-top: 6px; padding: 0; border: none; background: none;
  color: var(--color-primary); font-size: var(--font-size-caption); cursor: pointer; font-family: inherit;
}
.new-theme .pi-q-toggle:hover { text-decoration: underline; }
.new-theme .pi-q-input {
  width: 100%; min-height: 64px; padding: 8px 10px; border: 1px solid var(--color-border); border-radius: var(--radius-sm);
  font-size: var(--font-size-body); font-family: inherit; line-height: 1.6; resize: vertical; box-sizing: border-box;
}
.new-theme .pi-q-input:focus { outline: none; border-color: var(--color-primary); }
.new-theme .pi-q-input.pi-invalid { border-color: var(--color-danger); background: var(--color-tag-danger-bg); }
.new-theme .pi-req { color: var(--color-danger); margin-right: 2px; font-weight: var(--font-weight-semibold); }
.new-theme .pi-req-hint { margin: 2px 0 6px; font-size: var(--font-size-caption); color: var(--color-danger); }
.new-theme .pi-foot-hint { margin-right: auto; font-size: var(--font-size-caption); color: var(--color-danger); }
.new-theme .pi-modal-foot .btn-lv2-primary:disabled { opacity: .5; cursor: not-allowed; }
/* 失败提示弹框内容 */
.new-theme .pi-err-msg { font-size: var(--font-size-body); color: var(--color-text-primary); line-height: 1.7; margin: 6px 0 10px; }
.new-theme .pi-err-hint {
  background: #FFF6E0; border: 1px solid #F3E4BE; color: #B77C1A;
  border-radius: var(--radius-sm); padding: 8px 10px;
  font-size: var(--font-size-body); line-height: 1.7; margin-bottom: 10px;
}
.new-theme .pi-err-code { font-size: var(--font-size-caption); color: var(--color-text-muted); margin-bottom: 10px; }
.new-theme .pi-err-block { border-top: 1px dashed var(--color-border); padding-top: 10px; }
.new-theme .pi-err-label { font-size: var(--font-size-caption); color: var(--color-text-muted); margin-bottom: 4px; }
.new-theme .pi-err-item { font-size: var(--font-size-body); color: var(--color-text-secondary); line-height: 1.7; }
.new-theme .pi-modal-foot {
  position: sticky; bottom: 0; background: var(--color-bg-page); padding: 12px 0 4px;
  display: flex; justify-content: flex-end; gap: 8px; border-top: 1px solid var(--color-border);
}
