/* ================= 岗位宝 · 终端风格 v2 ================= */

/* ---------- 主题：暗金（默认） ---------- */
:root,
[data-theme="dark"] {
  --bg: #0b0e11; --panel: #12161c; --panel2: #171c23;
  --border: #232a33; --border2: #2e3742;
  --text: #eaecef; --muted: #848e9c; --dim: #5e6673;
  --red: #f6465d; --red-dim: rgba(246,70,93,.12);
  --green: #2ebd85; --green-dim: rgba(46,189,133,.12);
  --amber: #f0b90b; --amber-dim: rgba(240,185,11,.12);
  --blue: #4a90d9; --blue-dim: rgba(74,144,217,.12);
  --cyan: #25c2d6; --purple: #a06bff;
  --hover-bg: #1a2029; --head-bg: #171c23;
  --select-bg: #2a3340;
  --input-bg: #0e1218; --shadow: rgba(0,0,0,.5);
}
/* ---------- 主题：深蓝 ---------- */
[data-theme="darkblue"] {
  --bg: #0a1628; --panel: #0f1f38; --panel2: #142944;
  --border: #1e3a5f; --border2: #2a4a73;
  --text: #d6e4f5; --muted: #7a9cc6; --dim: #4a6a8e;
  --red: #ff4757; --red-dim: rgba(255,71,87,.12);
  --green: #2ed573; --green-dim: rgba(46,213,115,.12);
  --amber: #ffa502; --amber-dim: rgba(255,165,2,.12);
  --blue: #54a0ff; --blue-dim: rgba(84,160,255,.12);
  --cyan: #00d2d3; --purple: #9b59b6;
  --hover-bg: #1a3252; --head-bg: #142944;
  --select-bg: #1e4274;
  --input-bg: #0a1628; --shadow: rgba(0,10,30,.6);
}
/* ---------- 主题：暗绿 ---------- */
[data-theme="darkgreen"] {
  --bg: #0a1410; --panel: #0f1e17; --panel2: #142820;
  --border: #1e3a2d; --border2: #2a5040;
  --text: #d4f0e0; --muted: #7aa890; --dim: #4a7060;
  --red: #ff6b6b; --red-dim: rgba(255,107,107,.12);
  --green: #6bcb77; --green-dim: rgba(107,203,119,.12);
  --amber: #ffd93d; --amber-dim: rgba(255,217,61,.12);
  --blue: #4d96ff; --blue-dim: rgba(77,150,255,.12);
  --cyan: #20c997; --purple: #a29bfe;
  --hover-bg: #1a3028; --head-bg: #142820;
  --select-bg: #1e4038;
  --input-bg: #0a1410; --shadow: rgba(0,20,10,.6);
}
/* ---------- 主题：浅色 ---------- */
[data-theme="light"] {
  --bg: #f5f6fa; --panel: #ffffff; --panel2: #f0f2f8;
  --border: #e2e5ed; --border2: #d1d5dd;
  --text: #1a1a2e; --muted: #6b7280; --dim: #9ca3af;
  --red: #e53e3e; --red-dim: rgba(229,62,62,.1);
  --green: #2f855a; --green-dim: rgba(47,133,90,.1);
  --amber: #d97706; --amber-dim: rgba(217,119,6,.1);
  --blue: #3182ce; --blue-dim: rgba(49,130,206,.1);
  --cyan: #0987a0; --purple: #805ad5;
  --hover-bg: #f0f4ff; --head-bg: #f0f2f8;
  --select-bg: #e0e8f8;
  --input-bg: #ffffff; --shadow: rgba(0,0,0,.15);
}

* { margin: 0; padding: 0; box-sizing: border-box; }
html, body { height: 100%; }
body {
  background: var(--bg); color: var(--text);
  font-family: -apple-system, "Segoe UI", "Microsoft YaHei", sans-serif; font-size: 13px;
  overflow: hidden; transition: background .3s, color .3s;
}
.hidden { display: none !important; }
b { font-family: "JetBrains Mono", Consolas, monospace; font-variant-numeric: tabular-nums; }
::selection { background: var(--amber-dim); }
::-webkit-scrollbar { width: 8px; height: 8px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: var(--border2); border-radius: 4px; }
::-webkit-scrollbar-thumb:hover { background: var(--muted); }

/* ---------- 通用按钮 ---------- */
.btn-primary {
  width: 100%; padding: 11px; border: 0; border-radius: 6px;
  background: var(--amber); color: #1e2026; font-size: 14px; font-weight: 700;
  cursor: pointer; letter-spacing: 4px; transition: filter .2s, transform .1s;
}
.btn-primary:hover { filter: brightness(1.1); }
.btn-primary:active { transform: scale(.98); }
.btn-ghost {
  background: none; border: 1px solid var(--border2); color: var(--muted);
  padding: 5px 12px; border-radius: 4px; cursor: pointer; font-size: 12px;
  transition: all .2s;
}
.btn-ghost:hover { color: var(--text); border-color: var(--muted); background: var(--panel2); }
.btn-mini {
  padding: 5px 14px; border-radius: 4px; border: 1px solid var(--amber);
  background: var(--amber); color: #1e2026; font-weight: 700; cursor: pointer; font-size: 12px;
  transition: filter .2s, transform .1s;
}
.btn-mini:hover { filter: brightness(1.1); }
.btn-mini:active { transform: scale(.97); }

/* ---------- 顶栏 ---------- */
.app-view { height: 100vh; display: flex; flex-direction: column; animation: fadeIn .3s ease; }
@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }
.topbar {
  height: 46px; flex: none; display: flex; align-items: center; gap: 14px;
  background: var(--panel); border-bottom: 1px solid var(--border); padding: 0 14px;
  transition: background .3s, border-color .3s;
}
.brand { display: flex; align-items: center; gap: 9px; flex: none; }
.logo-icon {
  width: 52px; height: 52px; border-radius: 12px; background: var(--amber);
  color: #1e2026; font-size: 28px; font-weight: 900;
  display: flex; align-items: center; justify-content: center;
}
.logo-icon.sm { width: 30px; height: 30px; font-size: 16px; border-radius: 7px; }
.brand-name { font-size: 16px; font-weight: 800; letter-spacing: 1px; }
.brand-tag { font-size: 9px; color: var(--dim); font-family: "JetBrains Mono", Consolas, monospace; letter-spacing: 1px; margin-top: 2px; }
.ticker-wrap {
  flex: 1; overflow: hidden; position: relative; height: 46px;
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 4%, #000 96%, transparent);
  mask-image: linear-gradient(90deg, transparent, #000 4%, #000 96%, transparent);
}
.ticker {
  position: absolute; white-space: nowrap; line-height: 46px;
  animation: scroll 40s linear infinite;
  font-family: "JetBrains Mono", Consolas, monospace; font-size: 12px; color: var(--muted);
}
.ticker:hover { animation-play-state: paused; }
.ticker b { color: var(--text); margin: 0 2px; }
.ticker .up { color: var(--red); }
.ticker .down { color: var(--green); }
@keyframes scroll { from { left: 100%; } to { left: -100%; } }
.topbar-right { display: flex; align-items: center; gap: 10px; flex: none; }
.clock { font-family: "JetBrains Mono", Consolas, monospace; color: var(--amber); font-size: 12px; min-width: 150px; text-align: right; }
.user-chip { display: flex; align-items: center; gap: 7px; }
.avatar {
  width: 26px; height: 26px; border-radius: 50%; background: var(--blue-dim);
  color: var(--blue); display: flex; align-items: center; justify-content: center;
  font-size: 12px; font-weight: 700;
}
.avatar.guest { background: var(--panel2); color: var(--dim); }

/* ---------- 主题切换 ---------- */
.theme-switch { display: flex; gap: 2px; padding: 2px; border-radius: 6px; background: var(--panel2); }
.theme-btn {
  width: 28px; height: 26px; border: 0; border-radius: 4px;
  background: none; cursor: pointer; font-size: 14px; opacity: .5;
  transition: opacity .2s, background .2s;
}
.theme-btn:hover { opacity: 1; }
.theme-btn.active { opacity: 1; background: var(--border2); }

/* ---------- 布局 ---------- */
.main-layout { flex: 1; display: flex; min-height: 0; }
.sidebar {
  width: 178px; flex: none; background: var(--panel);
  border-right: 1px solid var(--border); overflow-y: auto;
  display: flex; flex-direction: column;
  transition: background .3s, border-color .3s;
}
.side-section { padding: 14px 0 6px; border-bottom: 1px solid var(--border); }
.side-title {
  color: var(--dim); font-size: 11px; padding: 0 16px 8px;
  display: flex; justify-content: space-between; align-items: center;
}
.pill {
  background: var(--panel2); border: 1px solid var(--border2); color: var(--muted);
  font-size: 10px; padding: 1px 7px; border-radius: 8px; font-family: "JetBrains Mono", Consolas, monospace;
}
.pill.demo { color: var(--amber); border-color: rgba(240,185,11,.35); }
.side-item {
  display: flex; align-items: center; gap: 9px; padding: 8px 16px;
  color: var(--muted); cursor: pointer; font-size: 13px;
  border-left: 2px solid transparent; text-decoration: none;
  transition: all .2s;
}
.side-item:hover { color: var(--text); background: var(--panel2); transform: translateX(2px); }
.side-item.active {
  color: var(--amber); background: var(--amber-dim); border-left-color: var(--amber);
}
.dot { width: 7px; height: 7px; border-radius: 50%; flex: none; display: inline-block; }
.dot-red { background: var(--red); } .dot-green { background: var(--green); }
.dot-blue { background: var(--blue); } .dot-amber { background: var(--amber); }
.dot-cyan { background: var(--cyan); } .dot-purple { background: var(--purple); }
.dot-yellow { background: var(--amber); }
.side-foot { padding: 14px 16px; margin-top: auto; }
.foot-stat { display: flex; justify-content: space-between; color: var(--dim); font-size: 11px; margin-bottom: 6px; }
.foot-stat b { color: var(--muted); }
.foot-note { color: var(--dim); font-size: 10px; line-height: 1.6; margin-top: 10px; opacity: .7; }

/* ---------- 工具栏 ---------- */
.content { flex: 1; display: flex; flex-direction: column; min-width: 0; }
.toolbar {
  flex: none; display: flex; justify-content: space-between; align-items: center; gap: 10px;
  background: var(--panel); border-bottom: 1px solid var(--border);
  padding: 8px 14px;
}
.t-left { display: flex; gap: 8px; align-items: center; flex: 1; }
.t-right { display: flex; gap: 8px; align-items: center; }
.t-search { display: flex; gap: 6px; flex: 1; max-width: 500px; }
.t-search input {
  flex: 1; padding: 6px 12px; border-radius: 4px; background: var(--input-bg);
  border: 1px solid var(--border2); color: var(--text); outline: none; font-size: 12px;
  transition: border-color .2s;
}
.t-search input:focus { border-color: var(--amber); }
.loaded-info { color: var(--dim); font-size: 11px; font-family: "JetBrains Mono", Consolas, monospace; }

/* ---------- 状态条 ---------- */
.status-bar {
  flex: none; background: var(--panel); border-bottom: 1px solid var(--border);
  padding: 6px 14px;
}
.chips { display: flex; gap: 8px; flex-wrap: wrap; }
.chip {
  background: var(--panel2); border: 1px solid var(--border); border-radius: 4px;
  padding: 3px 10px; font-size: 11px; color: var(--muted);
  display: inline-flex; align-items: center; gap: 6px;
  transition: all .2s;
}
.chip b { color: var(--text); }
.chip-red { border-color: rgba(246,70,93,.3); }
.chip-blue { border-color: rgba(74,144,217,.3); }
.chip-green { border-color: rgba(46,189,133,.3); }
.chip-amber { border-color: rgba(240,185,11,.35); color: var(--amber); display: none; cursor: pointer; }
.chip-amber:hover { background: var(--amber-dim); }

/* ---------- 数据表 ---------- */
.table-wrap { flex: 1; overflow: auto; min-height: 0; position: relative; }
.data-table {
  min-width: 100%; border-collapse: collapse; table-layout: fixed;
  font-size: 12px;
}
.data-table thead th {
  position: sticky; top: 0; z-index: 10;
  background: var(--head-bg); border-bottom: 1px solid var(--border2);
  border-right: 1px solid var(--border);
  color: var(--muted); font-weight: 600; font-size: 11px;
  padding: 7px 10px; text-align: left; white-space: nowrap;
  user-select: none; transition: color .2s, background .2s;
}
.data-table thead th .th-text {
  display: inline-block; max-width: 100%; overflow: hidden; text-overflow: ellipsis;
  vertical-align: middle; padding-right: 8px;
}
.data-table thead th:hover { color: var(--amber); }
.data-table thead th .sort-ind { color: var(--amber); font-size: 9px; margin-left: 2px; }
.data-table thead th .filter-icon {
  display: inline-flex; align-items: center; justify-content: center;
  margin-left: 6px; padding: 0 4px; min-width: 16px; height: 16px;
  font-size: 10px; opacity: .7;
  border: 1px solid var(--border2); border-radius: 3px;
  background: var(--panel2); color: var(--muted);
  transition: opacity .15s, background .15s, color .15s, border-color .15s;
  cursor: pointer; user-select: none;
}
.data-table thead th:hover .filter-icon { opacity: 1; border-color: var(--amber); }
.data-table thead th.filter-active .filter-icon {
  opacity: 1; color: var(--amber); border-color: var(--amber); background: var(--amber-dim);
}
.data-table thead th.filter-active { color: var(--amber); }
/* JS 给图标 span 加 active 类（与 th.filter-active 双保险） */
.data-table thead th .filter-icon.active {
  opacity: 1; color: var(--amber); border-color: var(--amber); background: var(--amber-dim);
}
/* 启用筛选的列头加底部指示条，用户一眼看出"当前数据是筛选后的" */
.data-table thead th.filter-active { box-shadow: inset 0 -2px 0 var(--amber); }
.data-table td {
  padding: 6px 10px; border-bottom: 1px solid var(--border); border-right: 1px solid var(--border);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  color: var(--text); vertical-align: middle;
}
.data-table tbody tr { transition: background .15s; cursor: pointer; }
.data-table tbody tr:hover { background: var(--hover-bg); }
.data-table tbody tr:hover td { opacity: 1; }
.data-table tbody tr:hover td.row-num { color: var(--amber); }
.data-table tbody tr.row-selected { background: var(--select-bg) !important; }
.data-table tbody tr.row-selected td { color: var(--text); }
.data-table tbody tr.row-selected td.row-num { color: var(--amber); }
.data-table tbody tr.row-selected .cell-title { color: var(--amber); }

td.row-num, th.row-num { width: 42px; text-align: right; color: var(--dim); font-family: "JetBrains Mono", Consolas, monospace; font-size: 11px; }
.cell-title { color: var(--text); font-weight: 600; cursor: pointer; }
.cell-title:hover { color: var(--amber); }
/* 长文本列统一省略号，防止撑宽表格 */
.cell-title-w, .cell-major, .cell-emp {
  max-width: 260px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
/* 公告列表：标题列固定宽度（尾部 spacer-col 吸收剩余宽度），超长省略号
   ⚠️ table-layout:fixed 在 width:auto 的表格上会被 Chrome 忽略（flex 容器内尤甚），
   必须 width:100% + min-width:max-content 才能让 th 指定宽度精确生效 */
.data-table:has(thead th.spacer-col) { width: 100%; min-width: max-content; }
.cell-ann-title { overflow: hidden; text-overflow: ellipsis; }
th.spacer-col { border-right: none; }
td.spacer-col { padding: 0; }
.cell-num { font-family: "JetBrains Mono", Consolas, monospace; text-align: right; }
.cell-date { font-family: "JetBrains Mono", Consolas, monospace; color: var(--muted); font-size: 11px; }
.cell-major { max-width: 260px; color: var(--muted); }
.cell-emp { max-width: 180px; }

/* ===== 企业目录卡片 ===== */
.co-grid {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  gap: 12px; padding: 16px;
}
.co-card {
  display: flex; align-items: center; gap: 12px; padding: 14px;
  background: var(--panel2); border: 1px solid var(--border); border-radius: 10px;
  cursor: pointer; transition: border-color .15s, transform .1s;
}
.co-card:hover { border-color: var(--blue); transform: translateY(-1px); }
.co-card .row-act { margin-left: auto; margin-right: 0; white-space: nowrap; }
.co-logo {
  width: 46px; height: 46px; border-radius: 10px; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  color: #fff; font-size: 20px; font-weight: 700;
}
.co-logo-img {
  width: 42px; height: 42px; border-radius: 8px; flex-shrink: 0;
  object-fit: contain; background: #fff; padding: 2px;
}
.co-info { min-width: 0; flex: 1; }
.co-name {
  font-size: 14px; font-weight: 600; margin-bottom: 4px;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}

/* ===== 企业目录表格视图 ===== */
.seg { display: inline-flex; border: 1px solid var(--border); border-radius: 8px; overflow: hidden; }
.seg-btn {
  padding: 5px 14px; font-size: 12px; border: none; cursor: pointer;
  background: transparent; color: var(--dim); font-family: inherit;
}
.seg-btn + .seg-btn { border-left: 1px solid var(--border); }
.seg-btn.on { background: var(--blue); color: #fff; }
.dir-row { cursor: pointer; }
.dir-row:hover td { background: var(--panel2); }
.dir-co { display: flex; align-items: center; gap: 10px; min-width: 0; }
.dir-co .co-logo { width: 34px; height: 34px; border-radius: 8px; font-size: 15px; }
.dir-co .co-logo-img { width: 30px; height: 30px; border-radius: 6px; padding: 1px; }
.dir-co-name { min-width: 0; display: flex; align-items: baseline; gap: 6px; flex-wrap: wrap; }
.dir-co-name b {
  font-size: 13.5px; max-width: 150px;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.dir-brand { font-size: 11px; color: var(--dim); }
.dir-desc {
  font-size: 12.5px; color: var(--dim);
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
  overflow: hidden; line-height: 1.45;
}
.dir-chans { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.dir-chan {
  font-size: 11.5px; padding: 2px 9px; border-radius: 20px;
  border: 1px solid var(--border); color: var(--blue); white-space: nowrap;
}
.dir-chan:hover { border-color: var(--blue); background: var(--panel2); }
.dir-more { white-space: nowrap; font-size: 12px; }
.dir-jobs { white-space: nowrap; }
.co-tags { display: flex; flex-wrap: wrap; gap: 4px; margin-bottom: 4px; }
.co-tags .tag { font-size: 10px; padding: 0 6px; }
.co-cnt { font-size: 11px; color: var(--muted); }

.tag {
  display: inline-block; padding: 1px 7px; border-radius: 3px; font-size: 11px;
  font-weight: 600; transition: transform .1s;
}
.tag-red { background: var(--red-dim); color: var(--red); }
.tag-green { background: var(--green-dim); color: var(--green); }
.tag-blue { background: var(--blue-dim); color: var(--blue); }
.tag-amber { background: var(--amber-dim); color: var(--amber); }
.tag-gray { background: var(--panel2); color: var(--muted); }
.tag-cyan { background: rgba(37,194,214,.12); color: var(--cyan); }
.tag-purple { background: rgba(160,107,255,.12); color: var(--purple); }
/* 运营标签徽章（爆/热/急聘/省直/市直/县区 — 行内小徽章，可点击筛选） */
.ops-badge {
  display: inline-block; padding: 0 5px; border-radius: 3px; font-size: 10px;
  font-weight: 700; margin-right: 4px; vertical-align: 1px; cursor: pointer;
  line-height: 16px; white-space: nowrap;
}
.ops-badge:hover { filter: brightness(1.25); }
.ops-boom { background: var(--red); color: #fff; }
.ops-hot { background: var(--amber); color: #fff; }
.ops-urgent { background: rgba(240,180,20,.18); color: var(--amber); border: 1px solid var(--amber); }
.ops-scope { background: var(--blue-dim); color: var(--blue); }
/* 快捷标签筛选条 */
.tagbar { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; padding: 2px 0 6px; }
.tagbar-item {
  display: inline-block; padding: 1px 9px; border-radius: 10px; font-size: 11px;
  font-weight: 600; cursor: pointer; color: var(--muted);
  border: 1px solid var(--border); background: var(--panel); transition: all .12s;
  user-select: none; line-height: 18px;
}
.tagbar-item:hover { color: var(--text); border-color: var(--blue); }
.tagbar-item.on { background: var(--blue); border-color: var(--blue); color: #fff; }
.tagbar-label { font-size: 11px; color: var(--dim); margin-right: 2px; white-space: nowrap; }
/* 页脚合规信息 */
.site-foot {
  padding: 8px 16px 10px; text-align: center; line-height: 1.5;
  border-top: 1px solid var(--border); color: var(--dim); font-size: 11px;
  margin-top: 8px;
}
.site-foot .foot-line { white-space: normal; }
.site-foot .foot-sep { margin: 0 6px; color: var(--border); }
.mono { font-family: "JetBrains Mono", Consolas, monospace; }
.star { cursor: pointer; color: var(--dim); font-size: 14px; user-select: none; transition: transform .15s, color .15s; }
.star:hover { transform: scale(1.3); }
.star.on { color: var(--amber); }
.row-act { color: var(--blue); cursor: pointer; font-size: 11px; margin-right: 8px; }
.row-act:hover { text-decoration: underline; }

/* 行入场动画 */
.data-table tbody tr { animation: rowIn .25s ease-out backwards; }
@keyframes rowIn {
  from { opacity: 0; transform: translateY(4px); }
  to { opacity: 1; transform: translateY(0); }
}
/* 已截止行整体淡化（tr级，动画结束后仍生效） */
tr.closed-row { opacity: .45; }

.table-more {
  display: flex; align-items: center; justify-content: center; gap: 12px;
  padding: 14px; border-top: 1px solid var(--border);
}
.empty-tip { text-align: center; color: var(--dim); padding: 60px 20px; font-size: 13px; }

/* ---------- 表头筛选下拉 ---------- */
.hfilter-pop {
  position: fixed; z-index: 80; min-width: 200px; max-height: 320px; overflow-y: auto;
  background: var(--panel); border: 1px solid var(--border2); border-radius: 6px;
  box-shadow: 0 8px 24px var(--shadow); padding: 6px 0;
  animation: popIn .15s ease-out;
}
@keyframes popIn { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: translateY(0); } }
.hf-item {
  padding: 6px 14px; font-size: 12px; color: var(--muted); cursor: pointer;
  display: flex; align-items: center; gap: 8px; transition: all .15s;
}
.hf-item:hover { background: var(--panel2); color: var(--text); }
.hf-item.active { color: var(--amber); }
.hf-item .hf-check { width: 14px; font-size: 13px; }
.hf-item .hf-count { margin-left: auto; color: var(--dim); font-size: 10px; font-family: "JetBrains Mono", Consolas, monospace; }
.hf-sep { height: 1px; background: var(--border); margin: 4px 0; }
/* 地区分组标题（省份） */
.hf-region-prov {
  display: flex; align-items: center; padding: 6px 14px 3px;
  font-size: 11px; font-weight: 600; color: var(--dim); letter-spacing: .5px;
  border-top: 1px dashed var(--border); margin-top: 4px;
}
.hf-region-prov:first-child { border-top: none; margin-top: 0; }
.hf-region-prov .mp-cnt { margin-left: auto; font-size: 10px; font-weight: 400; font-family: "JetBrains Mono", Consolas, monospace; }
.hf-item .mp-cnt { margin-left: auto; font-size: 10px; color: var(--dim); font-family: "JetBrains Mono", Consolas, monospace; }
.hf-search { padding: 6px 10px; }
.hf-search input {
  width: 100%; padding: 5px 8px; border-radius: 4px; background: var(--input-bg);
  border: 1px solid var(--border2); color: var(--text); outline: none; font-size: 12px;
}
.hf-search input:focus { border-color: var(--amber); }

/* ---------- 专业目录树筛选弹窗 ---------- */
.hfilter-pop.major-pop {
  width: 320px; max-height: 480px; display: flex; flex-direction: column;
  overflow: hidden; padding: 0;
}
.hfilter-pop.major-pop .mp-head { flex-shrink: 0; padding-top: 6px; border-bottom: 1px solid var(--border); }
.mp-unlimited { color: var(--red); font-weight: 600; }
.mp-unlimited:hover, .mp-unlimited.active { background: var(--red-dim); color: var(--red); }
.mp-unlimited .mp-note { margin-left: auto; font-size: 10px; color: var(--dim); font-weight: 400; }
.mp-tabs { display: flex; gap: 4px; padding: 6px 10px 8px; }
.mp-tab {
  flex: 1; text-align: center; padding: 4px 0; font-size: 11px; color: var(--muted);
  border: 1px solid var(--border2); border-radius: 4px; cursor: pointer; transition: all .15s;
}
.mp-tab:hover { color: var(--text); border-color: var(--amber); }
.mp-tab.on { color: var(--amber); border-color: var(--amber); background: var(--amber-dim); font-weight: 600; }
.mp-tree { flex: 1; overflow-y: auto; padding: 4px 0 6px; }
.mp-l1 { display: flex; align-items: center; gap: 6px; padding: 6px 14px; font-size: 12px; font-weight: 600; color: var(--muted); cursor: pointer; }
.mp-l1:hover { background: var(--panel2); color: var(--text); }
.mp-l1.open { color: var(--text); background: var(--panel2); }
.mp-l1 .mp-arrow { width: 12px; font-size: 10px; color: var(--dim); transition: transform .15s; }
.mp-l1 .mp-cnt { margin-left: auto; font-size: 10px; color: var(--dim); font-weight: 400; font-family: "JetBrains Mono", Consolas, monospace; }
.mp-l2 { display: flex; align-items: center; gap: 6px; padding: 5px 14px 5px 32px; font-size: 12px; color: var(--muted); cursor: pointer; }
.mp-l2:hover { background: var(--panel2); color: var(--text); }
.mp-l2.active { color: var(--amber); }
/* 大类下"全部"选项（如 工学·全部）— 与具体专业类区分 */
.mp-all { border-top: 1px dashed var(--border); margin-top: 2px; padding-top: 6px; font-weight: 600; color: var(--text); }
.mp-all .mp-all-label { color: var(--text); }
.mp-all .mp-note { margin-left: auto; font-size: 10px; color: var(--dim); font-weight: 400; }

/* 专业提示浮层 */
.tipbox {
  position: absolute; z-index: 50; max-width: 420px;
  background: var(--panel); border: 1px solid var(--border2); border-radius: 6px;
  padding: 10px 12px; font-size: 11px; color: var(--muted); line-height: 1.7;
  box-shadow: 0 8px 24px var(--shadow); pointer-events: none;
  animation: popIn .15s ease-out;
}
.tipbox b { color: var(--text); }
.tipbox .torig { color: var(--cyan); }

/* ---------- 示例数据横幅 ---------- */
.demo-banner {
  flex: none; background: var(--amber-dim); border-top: 1px solid var(--amber);
  color: var(--muted); font-size: 12px; padding: 8px 14px;
}
.badge-demo {
  background: var(--amber); color: #1e2026; font-weight: 700; font-size: 10px;
  padding: 1px 7px; border-radius: 3px; margin-right: 8px;
}

/* ---------- 列管理面板 ---------- */
.col-mgr-mask { position: fixed; inset: 0; background: rgba(0,0,0,.45); z-index: 110; animation: fadeIn .2s; }
.col-mgr {
  position: fixed; top: 50%; left: 50%; transform: translate(-50%,-50%);
  width: 360px; max-height: 70vh; background: var(--panel);
  border: 1px solid var(--border2); border-radius: 10px; z-index: 120;
  display: flex; flex-direction: column; animation: popIn .2s ease-out;
}
.col-mgr-head {
  display: flex; justify-content: space-between; align-items: center;
  padding: 14px 18px; border-bottom: 1px solid var(--border); font-size: 15px; font-weight: 700;
}
.col-mgr-hint { padding: 8px 18px; color: var(--dim); font-size: 11px; }
.col-mgr-body { flex: 1; overflow-y: auto; padding: 4px 0; }
.cm-item {
  display: flex; align-items: center; gap: 8px; padding: 8px 18px;
  cursor: pointer; font-size: 13px; color: var(--text); transition: background .15s, border-color .15s;
  border: 1px solid transparent; border-radius: 6px; margin: 1px 8px;
}
.cm-item:hover { background: var(--panel2); }
.cm-item.dragging { opacity: .4; }
.cm-item.drag-over { border-color: var(--amber); background: color-mix(in srgb, var(--amber) 10%, transparent); }
.cm-item input { accent-color: var(--amber); width: 16px; height: 16px; }
.cm-item .cm-drag { cursor: grab; color: var(--dim); font-size: 16px; line-height: 1; user-select: none; padding: 0 2px; }
.cm-item .cm-drag:hover { color: var(--amber); }
.cm-item .cm-drag:active { cursor: grabbing; }
.cm-item .cm-label { flex: 1; }
.cm-item .cm-tag { font-size: 10px; color: var(--dim); background: var(--panel2); padding: 1px 6px; border-radius: 3px; }
.cm-item .cm-arrows { display: flex; flex-direction: column; gap: 0; }
.cm-item .cm-arrow { font-size: 9px; padding: 0 4px; background: transparent; border: 1px solid var(--border); color: var(--dim); border-radius: 3px; cursor: pointer; line-height: 14px; }
.cm-item .cm-arrow:hover:not(.disabled) { color: var(--amber); border-color: var(--amber); }
.cm-item .cm-arrow.disabled { opacity: .25; cursor: not-allowed; }
.cm-item.locked { opacity: .5; cursor: not-allowed; }
.cm-item.locked .cm-drag { cursor: not-allowed; }
.col-mgr-foot {
  display: flex; justify-content: space-between; gap: 10px;
  padding: 12px 18px; border-top: 1px solid var(--border);
}

/* ---------- 登录弹窗 ---------- */
.login-modal-mask { position: fixed; inset: 0; background: rgba(0,0,0,.5); z-index: 110; animation: fadeIn .2s; }
.login-modal {
  position: fixed; top: 50%; left: 50%; transform: translate(-50%,-50%);
  width: 380px; background: var(--panel); border: 1px solid var(--border2);
  border-radius: 10px; z-index: 120; overflow: hidden; animation: popIn .25s ease-out;
}
.login-modal-head {
  display: flex; justify-content: space-between; align-items: center;
  padding: 14px 18px; border-bottom: 1px solid var(--border); font-size: 15px; font-weight: 700;
}
.login-modal-body { padding: 18px; }
.login-reason { color: var(--amber); font-size: 12px; margin-bottom: 16px; padding: 8px 12px; background: var(--amber-dim); border-radius: 6px; }
.login-modal-body label { display: block; color: var(--muted); font-size: 12px; margin: 12px 0 6px; }
.login-modal-body input {
  width: 100%; padding: 10px 12px; border-radius: 6px; background: var(--input-bg);
  border: 1px solid var(--border2); color: var(--text); font-size: 14px; outline: none;
  transition: border-color .2s;
}
.login-modal-body input:focus { border-color: var(--amber); }
.login-modal-body .btn-primary { margin-top: 20px; }
.login-hint { color: var(--dim); font-size: 11px; margin-top: 12px; text-align: center; }

/* ---------- 详情抽屉 ---------- */
.drawer-mask { position: fixed; inset: 0; background: rgba(0,0,0,.5); z-index: 90; animation: fadeIn .2s; }
.drawer {
  position: fixed; top: 0; right: -560px; width: 560px; height: 100vh;
  background: var(--panel); border-left: 1px solid var(--border2);
  z-index: 100; transition: right .25s cubic-bezier(.4,0,.2,1); display: flex; flex-direction: column;
}
.drawer.open { right: 0; }
.drawer-head {
  flex: none; display: flex; justify-content: space-between; align-items: center;
  padding: 14px 18px; border-bottom: 1px solid var(--border);
}
.drawer-title { font-size: 15px; font-weight: 700; }
.drawer-body { flex: 1; overflow-y: auto; padding: 16px 18px 40px; }
.drawer-body .d-section { margin-bottom: 18px; animation: rowIn .3s ease-out backwards; }
.drawer-body .d-section:nth-child(1) { animation-delay: 0s; }
.drawer-body .d-section:nth-child(2) { animation-delay: .06s; }
.drawer-body .d-section:nth-child(3) { animation-delay: .12s; }
.drawer-body .d-section:nth-child(4) { animation-delay: .18s; }
.d-section h4 {
  font-size: 12px; color: var(--amber); letter-spacing: 1px;
  border-left: 3px solid var(--amber); padding-left: 8px; margin-bottom: 10px;
}
.d-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1px; background: var(--border); border-radius: 4px; overflow: hidden; }
.d-item { background: var(--panel2); padding: 8px 10px; }
.d-item.wide { grid-column: 1 / -1; }
.d-item .dk { color: var(--dim); font-size: 11px; margin-bottom: 3px; }
.d-item .dv { color: var(--text); font-size: 12px; line-height: 1.6; word-break: break-all; }
.d-links { display: flex; gap: 10px; margin-top: 6px; }
.d-links a { color: var(--blue); font-size: 12px; text-decoration: none; }
.d-links a:hover { text-decoration: underline; }
.d-attach { display: flex; align-items: center; gap: 8px; padding: 7px 10px; background: var(--panel2); margin-bottom: 6px; border-radius: 4px; font-size: 12px; }
.d-attach .ftype { font-family: "JetBrains Mono", Consolas, monospace; color: var(--cyan); font-size: 10px; }

/* ---------- Loading shimmer ---------- */
.shimmer {
  background: linear-gradient(90deg, var(--panel) 25%, var(--panel2) 50%, var(--panel) 75%);
  background-size: 200% 100%;
  animation: shimmer 1.5s infinite;
}
@keyframes shimmer { from { background-position: 200% 0; } to { background-position: -200% 0; } }

@media (max-width: 1100px) {
  .sidebar { width: 150px; }
  .clock { display: none; }
}

/* ================= v3 新增：微信登录 / 付费 / 侧栏分组 ================= */
/* 微信扫码登录 */
.wx-login { text-align: center; }
.qr-box { position: relative; width: 204px; height: 204px; margin: 14px auto 10px; padding: 12px;
  background: #fff; border-radius: 10px; border: 2px solid var(--border); }
.qr-box svg { display: block; image-rendering: pixelated; }
.qr-corner { position: absolute; width: 18px; height: 18px; border: 3px solid var(--green); }
.qr-corner.tl { top: -3px; left: -3px; border-right: none; border-bottom: none; border-radius: 4px 0 0 0; }
.qr-corner.tr { top: -3px; right: -3px; border-left: none; border-bottom: none; border-radius: 0 4px 0 0; }
.qr-corner.bl { bottom: -3px; left: -3px; border-right: none; border-top: none; border-radius: 0 0 0 4px; }
.qr-corner.br { bottom: -3px; right: -3px; border-left: none; border-top: none; border-radius: 0 0 4px 0; }
.wx-tip { color: var(--dim); font-size: 13px; margin: 4px 0 10px; }
.wx-tip b { color: var(--text); }
.wx-status { font-size: 12px; color: var(--amber); margin-bottom: 10px; display: flex; align-items: center; justify-content: center; gap: 6px; }
.wx-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--amber); animation: blink 1.2s infinite; }
.wx-status.ok { color: var(--green); }
.wx-status.ok .wx-dot { background: var(--green); animation: none; }
@keyframes blink { 0%,100% {opacity:1} 50% {opacity:.2} }

/* 会员标识 */
.vip-badge { font-size: 10px; padding: 1px 6px; border-radius: 3px; background: linear-gradient(135deg, #f0b90b, #e08900);
  color: #1a1a1a; font-weight: 700; margin-left: 4px; }
.vip-badge.expiring { background: linear-gradient(135deg, #888, #666); color: #fff; }

/* 付费弹窗 */
.pay-modal-mask { position: fixed; inset: 0; background: rgba(0,0,0,.6); z-index: 1300; backdrop-filter: blur(2px); }
.pay-modal { position: fixed; top: 50%; left: 50%; transform: translate(-50%,-50%); width: 420px; max-width: 94vw;
  max-height: 90vh; overflow-y: auto; background: var(--panel); border: 1px solid var(--border);
  border-radius: 12px; z-index: 1301; animation: popIn .25s ease-out; box-shadow: 0 20px 60px rgba(0,0,0,.5); }
.pay-head { display: flex; justify-content: space-between; align-items: center; padding: 14px 18px;
  border-bottom: 1px solid var(--border); font-weight: 700; font-size: 15px; }
.pay-body { padding: 14px 18px 18px; }
.pay-reason { font-size: 12px; color: var(--amber); margin-bottom: 12px; background: color-mix(in srgb, var(--amber) 10%, transparent);
  padding: 6px 10px; border-radius: 6px; border-left: 3px solid var(--amber); }
.pay-section { border: 1px solid var(--border); border-radius: 10px; padding: 12px 14px; margin-bottom: 12px; }
.pay-sec-title { font-weight: 700; font-size: 14px; margin-bottom: 6px; display: flex; align-items: center; gap: 8px; }
.pay-price-rule { font-size: 13px; color: var(--amber); margin-bottom: 10px; }
.pay-days-quick { display: flex; gap: 8px; margin-bottom: 10px; }
.pay-day-opt { flex: 1; text-align: center; padding: 8px 0; border: 1px solid var(--border); border-radius: 8px;
  cursor: pointer; font-size: 13px; transition: all .15s; user-select: none; }
.pay-day-opt:hover { border-color: var(--amber); }
.pay-day-opt.active { border-color: var(--amber); background: color-mix(in srgb, var(--amber) 15%, transparent); color: var(--amber); font-weight: 700; }
.pay-day-opt small { display: block; font-size: 10px; color: var(--dim); }
.pay-days-custom { display: flex; align-items: center; gap: 8px; font-size: 13px; color: var(--dim); }
.day-step { width: 26px; height: 26px; border: 1px solid var(--border); background: transparent; color: var(--text);
  border-radius: 6px; cursor: pointer; font-size: 15px; line-height: 1; }
.day-step:hover { border-color: var(--amber); color: var(--amber); }
.pay-days-custom b { color: var(--text); min-width: 30px; text-align: center; font-size: 15px; }
.day-subtotal { margin-left: auto; font-size: 12px; }
.day-subtotal b { color: var(--amber); }
.pay-benefit { font-size: 11px; color: var(--dim); margin-top: 10px; line-height: 1.8; }
.pay-addon { display: flex; align-items: center; gap: 10px; cursor: pointer; }
.pay-addon input[type=checkbox] { width: 16px; height: 16px; accent-color: var(--amber); cursor: pointer; }
.pay-addon-name { font-size: 13px; font-weight: 700; display: flex; align-items: center; gap: 6px; }
.pay-addon-desc { font-size: 11px; color: var(--dim); margin-top: 3px; }
.pay-addon-price { margin-left: auto; color: var(--amber); font-size: 17px; }
.pay-addon-price span { font-size: 11px; color: var(--dim); font-weight: 400; }
.pay-methods { display: flex; gap: 10px; margin-bottom: 12px; }
.pay-method { flex: 1; display: flex; align-items: center; justify-content: center; gap: 6px; padding: 10px 0;
  border: 1px solid var(--border); border-radius: 8px; cursor: pointer; font-size: 13px; transition: all .15s; }
.pay-method input { display: none; }
.pay-method.active { border-color: var(--amber); background: color-mix(in srgb, var(--amber) 12%, transparent); font-weight: 700; }
.pay-total { display: flex; justify-content: space-between; align-items: baseline; font-size: 13px; color: var(--dim);
  padding: 10px 4px; border-top: 1px dashed var(--border); margin-bottom: 12px; }
.pay-total b { color: var(--amber); font-size: 20px; }
.pay-hint { font-size: 11px; color: var(--dim); text-align: center; margin-top: 8px; line-height: 1.6; }
.pay-cs { font-size: 12px; color: var(--dim); text-align: center; margin-top: 10px; }
.pay-cs a { color: var(--amber); text-decoration: none; font-weight: 600; }
.pay-cs a:hover { text-decoration: underline; }
.tag-purple { background: rgba(170,110,255,.15); color: #b88df0; border: 1px solid rgba(170,110,255,.3); }

/* 侧栏分组徽标 */
.side-item .soon-pill { margin-left: auto; font-size: 9px; color: var(--dim); border: 1px solid var(--border);
  padding: 0 5px; border-radius: 8px; flex-shrink: 0; }
.side-item .lock-icon { margin-left: auto; color: var(--dim); font-size: 11px; flex-shrink: 0; }
.side-item .cnt-pill { margin-left: auto; font-size: 10px; color: var(--dim); flex-shrink: 0; }
.side-item .tag-purple-mini { margin-left: auto; font-size: 9px; color: #b88df0; border: 1px solid rgba(170,110,255,.3);
  padding: 0 5px; border-radius: 8px; flex-shrink: 0; }
.side-group-gap { height: 14px; }

/* 行业筛选（导航项样式，默认折叠前3项） */
.ind-section { padding: 2px 0 6px; }
.ind-title { font-size: 10px; color: var(--dim); padding: 4px 16px; }
.ind-item { padding: 6px 16px 6px 26px; }
.ind-item .cnt-pill { margin-left: auto; font-family: "JetBrains Mono", Consolas, monospace; }
.ind-item.ind-active { color: var(--blue); background: var(--blue-dim); border-left-color: var(--blue); }
.ind-item.ind-active .cnt-pill { color: var(--blue); }
.side-more {
  display: block; text-align: center; padding: 6px; font-size: 11px;
  color: var(--dim); cursor: pointer; text-decoration: none;
}
.side-more:hover { color: var(--muted); }

/* toast 提示 */
.toast-msg { position: fixed; top: 60px; left: 50%; transform: translate(-50%, -16px); z-index: 1400;
  background: var(--panel); color: var(--text); border: 1px solid var(--amber); border-radius: 8px;
  padding: 10px 22px; font-size: 13px; box-shadow: 0 8px 30px rgba(0,0,0,.4);
  opacity: 0; pointer-events: none; transition: all .25s ease-out; }
.toast-msg.show { opacity: 1; transform: translate(-50%, 0); }

/* ================= 求职计划页 ================= */
.plan-view { display: none; flex-direction: column; height: 100%; overflow: hidden; }
.plan-view.show { display: flex; }

/* 漏斗统计 */
.plan-funnel { display: flex; align-items: stretch; gap: 0; padding: 12px 16px;
  background: var(--panel); border: 1px solid var(--border); border-radius: 10px; margin-bottom: 10px; overflow-x: auto; }
.funnel-stage { flex: 1; min-width: 90px; text-align: center; position: relative; padding: 4px 8px; }
.funnel-stage:not(:last-child)::after { content: ""; position: absolute; right: -1px; top: 20%; height: 60%;
  width: 1px; background: var(--border); }
.funnel-count { font-size: 24px; font-weight: 700; font-family: 'Roboto Mono', monospace; line-height: 1.2; }
.funnel-label { font-size: 11px; color: var(--dim); margin-top: 2px; }
.funnel-stage[data-color="gray"] .funnel-count { color: var(--dim); }
.funnel-stage[data-color="blue"] .funnel-count { color: var(--blue); }
.funnel-stage[data-color="cyan"] .funnel-count { color: #00b7c3; }
.funnel-stage[data-color="amber"] .funnel-count { color: var(--amber); }
.funnel-stage[data-color="purple"] .funnel-count { color: #b88df0; }
.funnel-stage[data-color="green"] .funnel-count { color: var(--green); }

/* 今日待办 */
.plan-todo { display: flex; align-items: center; gap: 8px; padding: 8px 16px; margin-bottom: 8px;
  background: color-mix(in srgb, var(--red) 8%, transparent); border: 1px solid color-mix(in srgb, var(--red) 25%, transparent);
  border-radius: 8px; font-size: 13px; }
.plan-todo .todo-icon { font-size: 16px; }
.plan-todo .todo-items { display: flex; gap: 6px; flex-wrap: wrap; }
.todo-chip { font-size: 11px; padding: 2px 8px; border-radius: 4px; background: var(--bg); border: 1px solid var(--border); cursor: pointer; }
.todo-chip:hover { border-color: var(--red); }

/* 工具栏 */
.plan-toolbar { display: flex; justify-content: space-between; align-items: center; padding: 0 4px 10px; gap: 12px; flex-wrap: wrap; }
.plan-tabs { display: flex; gap: 4px; }
.plan-tab { padding: 6px 14px; border: 1px solid var(--border); background: transparent; color: var(--dim);
  border-radius: 8px; cursor: pointer; font-size: 13px; transition: all .15s; }
.plan-tab:hover { color: var(--text); }
.plan-tab.active { color: var(--amber); border-color: var(--amber); background: color-mix(in srgb, var(--amber) 12%, transparent); font-weight: 700; }
.plan-t-right { display: flex; gap: 8px; align-items: center; }
.plan-select { background: var(--panel); border: 1px solid var(--border); color: var(--text);
  border-radius: 6px; padding: 5px 10px; font-size: 12px; cursor: pointer; }

/* 计划内容区 */
.plan-content { flex: 1; overflow: auto; }

/* === 看板视图 === */
.kanban-board { display: flex; gap: 10px; min-height: 100%; padding: 0 4px 16px; }
.kanban-col { flex: 1; min-width: 240px; max-width: 320px; display: flex; flex-direction: column; gap: 8px; }
.kanban-col-head { display: flex; align-items: center; gap: 6px; padding: 8px 12px; border-radius: 8px 8px 0 0;
  font-size: 13px; font-weight: 700; position: sticky; top: 0; z-index: 2; backdrop-filter: blur(6px); }
.kanban-col-head .stage-icon { font-size: 15px; }
.kanban-col-head .stage-count { margin-left: auto; font-size: 16px; font-family: 'Roboto Mono', monospace;
  background: var(--bg); padding: 1px 8px; border-radius: 4px; }
.kanban-col[data-color="gray"] .kanban-col-head { color: var(--dim); border-bottom: 2px solid var(--dim); }
.kanban-col[data-color="blue"] .kanban-col-head { color: var(--blue); border-bottom: 2px solid var(--blue); }
.kanban-col[data-color="cyan"] .kanban-col-head { color: #00b7c3; border-bottom: 2px solid #00b7c3; }
.kanban-col[data-color="amber"] .kanban-col-head { color: var(--amber); border-bottom: 2px solid var(--amber); }
.kanban-col[data-color="purple"] .kanban-col-head { color: #b88df0; border-bottom: 2px solid #b88df0; }
.kanban-col[data-color="green"] .kanban-col-head { color: var(--green); border-bottom: 2px solid var(--green); }
.kanban-col-body { display: flex; flex-direction: column; gap: 8px; flex: 1; min-height: 60px;
  padding: 4px; border-radius: 0 0 8px 8px; }

/* 卡片 */
.plan-card { background: var(--panel); border: 1px solid var(--border); border-radius: 8px;
  padding: 10px 12px; cursor: pointer; transition: all .15s; animation: cardIn .2s ease-out backwards; }
.plan-card:hover { border-color: var(--amber); box-shadow: 0 4px 16px rgba(0,0,0,.25); transform: translateY(-1px); }
@keyframes cardIn { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: translateY(0); } }
.card-badge { display: inline-block; font-size: 9px; padding: 1px 6px; border-radius: 3px; margin-bottom: 4px; font-weight: 700; }
.card-badge.gw { background: color-mix(in srgb, var(--red) 15%, transparent); color: var(--red); }
.card-badge.tech { background: color-mix(in srgb, var(--purple) 15%, transparent); color: #b88df0; }
.card-badge.other { background: color-mix(in srgb, var(--dim) 15%, transparent); color: var(--dim); }
.card-title { font-size: 13px; font-weight: 600; line-height: 1.35; margin-bottom: 4px; color: var(--text);
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.card-meta { font-size: 11px; color: var(--dim); display: flex; gap: 6px; align-items: center; flex-wrap: wrap; }
.card-deadline { font-size: 11px; font-weight: 700; padding: 1px 6px; border-radius: 4px; display: inline-flex; align-items: center; gap: 3px; }
.card-deadline.urgent { background: color-mix(in srgb, var(--red) 15%, transparent); color: var(--red); }
.card-deadline.soon { background: color-mix(in srgb, var(--amber) 15%, transparent); color: var(--amber); }
.card-deadline.ok { background: color-mix(in srgb, var(--green) 12%, transparent); color: var(--green); }
.card-deadline.passed { color: var(--dim); text-decoration: line-through; }
.card-deadline.open { background: color-mix(in srgb, var(--blue) 14%, transparent); color: var(--blue); }
.card-exam { font-size: 11px; color: var(--dim); margin-top: 3px; display: flex; align-items: center; gap: 4px; }
.card-notes { font-size: 11px; color: var(--dim); margin-top: 4px; padding: 4px 8px;
  background: var(--bg); border-radius: 4px; border-left: 2px solid var(--amber); font-style: italic; }
.card-actions { display: flex; gap: 4px; margin-top: 8px; padding-top: 8px; border-top: 1px solid var(--border); }
.card-act { font-size: 11px; padding: 3px 8px; border: 1px solid var(--border); border-radius: 5px;
  background: transparent; color: var(--dim); cursor: pointer; transition: all .12s; white-space: nowrap; }
.card-act:hover { color: var(--text); border-color: var(--text); }
.card-act.advance { color: var(--amber); border-color: color-mix(in srgb, var(--amber) 40%, transparent); }
.card-act.advance:hover { background: color-mix(in srgb, var(--amber) 15%, transparent); }
.card-act.star.on { color: var(--amber); border-color: var(--amber); }
.kanban-empty { text-align: center; font-size: 11px; color: var(--dim); padding: 20px; border: 1px dashed var(--border); border-radius: 8px; }

/* === 列表视图 === */
.plan-list-table { width: 100%; border-collapse: collapse; table-layout: fixed; font-size: 13px; }
.plan-list-table th { position: sticky; top: 0; background: var(--panel); padding: 8px 10px; text-align: left;
  border-bottom: 2px solid var(--border); font-size: 12px; color: var(--dim); white-space: nowrap; z-index: 2; }
.plan-list-table td { padding: 7px 10px; border-bottom: 1px solid var(--border); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.plan-list-table tr { animation: cardIn .2s ease-out backwards; }
.plan-list-table tr:hover td { background: color-mix(in srgb, var(--amber) 5%, transparent); }
.status-sel { background: var(--bg); border: 1px solid var(--border); color: var(--text); border-radius: 4px;
  padding: 2px 6px; font-size: 12px; cursor: pointer; }

/* === 时间线视图 === */
.timeline { padding: 8px 16px 24px; }
.timeline-day { display: flex; gap: 12px; margin-bottom: 16px; }
.timeline-date { min-width: 64px; text-align: right; font-size: 13px; font-weight: 700; padding-top: 4px; }
.timeline-date .dow { font-size: 10px; color: var(--dim); font-weight: 400; }
.timeline-date.today { color: var(--red); }
.timeline-line { width: 2px; background: var(--border); position: relative; flex-shrink: 0; }
.timeline-items { flex: 1; display: flex; flex-direction: column; gap: 6px; }
.timeline-dot { position: absolute; left: -4px; width: 10px; height: 10px; border-radius: 50%; border: 2px solid var(--panel); }
.timeline-dot.deadline { background: var(--red); }
.timeline-dot.exam { background: var(--amber); }
.timeline-dot.interview { background: #b88df0; }
.timeline-item { font-size: 12px; padding: 6px 10px; background: var(--panel); border: 1px solid var(--border);
  border-radius: 6px; cursor: pointer; transition: all .12s; display: flex; align-items: center; gap: 6px; }
.timeline-item:hover { border-color: var(--amber); }
.timeline-item .tl-type { font-size: 14px; }

/* === 卡片编辑弹窗 === */
.plan-edit-mask { position: fixed; inset: 0; background: rgba(0,0,0,.5); z-index: 1200; }
.plan-edit { position: fixed; top: 50%; left: 50%; transform: translate(-50%,-50%); width: 440px; max-width: 94vw;
  max-height: 86vh; overflow-y: auto; background: var(--panel); border: 1px solid var(--border);
  border-radius: 12px; z-index: 1201; animation: popIn .25s ease-out; box-shadow: 0 20px 60px rgba(0,0,0,.5); }
.plan-edit-head { display: flex; justify-content: space-between; align-items: center; padding: 14px 18px;
  border-bottom: 1px solid var(--border); font-weight: 700; font-size: 15px; }
.plan-edit-body { padding: 14px 18px; display: flex; flex-direction: column; gap: 12px; }
.plan-edit-row { display: flex; flex-direction: column; gap: 4px; }
.plan-edit-row label { font-size: 12px; color: var(--dim); }
.plan-edit-row input, .plan-edit-row select, .plan-edit-row textarea {
  background: var(--bg); border: 1px solid var(--border); color: var(--text); border-radius: 6px;
  padding: 7px 10px; font-size: 13px; font-family: inherit; }
.plan-edit-row textarea { resize: vertical; min-height: 60px; }
.plan-edit-foot { display: flex; gap: 8px; justify-content: flex-end; padding: 0 18px 18px; }

/* ================= AI 助手 ================= */
.ai-ball { position: fixed; bottom: 24px; right: 24px; width: 52px; height: 52px; border-radius: 50%;
  background: linear-gradient(135deg, var(--amber), #e08900); display: flex; align-items: center; justify-content: center;
  font-size: 24px; cursor: pointer; z-index: 800; box-shadow: 0 6px 24px rgba(240,185,11,.35);
  transition: all .2s; animation: aiPulse 2s ease-in-out infinite; }
.ai-ball:hover { transform: scale(1.1); box-shadow: 0 8px 32px rgba(240,185,11,.5); }
@keyframes aiPulse { 0%,100% { box-shadow: 0 6px 24px rgba(240,185,11,.35); } 50% { box-shadow: 0 6px 32px rgba(240,185,11,.55); } }
.ai-ball .ai-dot { position: absolute; top: 2px; right: 2px; width: 10px; height: 10px; border-radius: 50%;
  background: var(--green); border: 2px solid var(--bg); }
.ai-panel { position: fixed; bottom: 88px; right: 24px; width: 380px; max-width: 94vw; height: 500px; max-height: 76vh;
  background: var(--panel); border: 1px solid var(--border); border-radius: 14px; z-index: 801;
  display: flex; flex-direction: column; box-shadow: 0 20px 60px rgba(0,0,0,.5); animation: aiOpen .25s ease-out; }
@keyframes aiOpen { from { opacity: 0; transform: translateY(10px) scale(.96); } to { opacity: 1; transform: translateY(0) scale(1); } }
.ai-panel-head { display: flex; justify-content: space-between; align-items: center; padding: 12px 16px;
  border-bottom: 1px solid var(--border); }
.ai-title { font-weight: 700; font-size: 14px; }
.ai-messages { flex: 1; overflow-y: auto; padding: 12px 16px; display: flex; flex-direction: column; gap: 10px; }
.ai-msg { max-width: 88%; padding: 8px 12px; border-radius: 10px; font-size: 13px; line-height: 1.5; word-break: break-word; }
.ai-msg.bot { background: var(--bg); border: 1px solid var(--border); align-self: flex-start; }
.ai-msg.user { background: color-mix(in srgb, var(--amber) 15%, transparent); border: 1px solid color-mix(in srgb, var(--amber) 30%, transparent);
  align-self: flex-end; color: var(--amber); }
.ai-actions { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; }
.ai-act-btn { font-size: 11px; padding: 4px 10px; border: 1px solid var(--amber); border-radius: 6px;
  background: color-mix(in srgb, var(--amber) 8%, transparent); color: var(--amber); cursor: pointer; transition: all .12s; }
.ai-act-btn:hover { background: color-mix(in srgb, var(--amber) 20%, transparent); }
.ai-quick { display: flex; gap: 6px; padding: 6px 16px; flex-wrap: wrap; }
.ai-quick-btn { font-size: 11px; padding: 4px 10px; border: 1px solid var(--border); border-radius: 14px;
  background: transparent; color: var(--dim); cursor: pointer; transition: all .12s; }
.ai-quick-btn:hover { color: var(--amber); border-color: var(--amber); }
.ai-input-wrap { display: flex; gap: 8px; padding: 10px 16px; border-top: 1px solid var(--border); }
.ai-input-wrap input { flex: 1; background: var(--bg); border: 1px solid var(--border); color: var(--text);
  border-radius: 8px; padding: 8px 12px; font-size: 13px; font-family: inherit; }
.ai-input-wrap input:focus { outline: none; border-color: var(--amber); }
.ai-typing { display: flex; gap: 4px; padding: 4px 0; }
.ai-typing span { width: 7px; height: 7px; border-radius: 50%; background: var(--dim); animation: typing 1.2s infinite; }
.ai-typing span:nth-child(2) { animation-delay: .2s; }
.ai-typing span:nth-child(3) { animation-delay: .4s; }
@keyframes typing { 0%,60%,100% { opacity: .3; transform: scale(1); } 30% { opacity: 1; transform: scale(1.3); } }

/* ===== 艺术库 v1.3 ===== */
/* 机构详情抽屉内岗位条目 */
.art-job-item {
  display: flex; flex-direction: column; gap: 3px;
  padding: 8px 12px; margin-bottom: 6px; cursor: pointer;
  background: var(--panel2); border: 1px solid var(--border); border-radius: 8px;
  transition: all .15s;
}
.art-job-item:hover { border-color: var(--blue); background: var(--blue-dim); }
.art-job-item b { font-size: 13px; }

/* 艺术岗位表格：职责/任职关键词单元格（单行显示，超出截断，悬停 title 看全量） */
.art-kw {
  display: flex; flex-wrap: nowrap; align-items: center;
  height: 18px; overflow: hidden; max-width: 190px;
}

/* ================= v4：移动端适配（≤768px 自动切换，无需单独站点） ================= */
.m-nav-btn { display: none; }
.m-nav-mask { position: fixed; inset: 0; background: rgba(0,0,0,.5); z-index: 890; animation: fadeIn .2s; }

@media (max-width: 768px) {
  body { font-size: 14px; }

  /* ---- 顶栏精简 ---- */
  .topbar { gap: 8px; padding: 0 10px; height: 48px; }
  .m-nav-btn {
    display: inline-flex; align-items: center; justify-content: center;
    width: 36px; height: 34px; font-size: 17px; padding: 0; flex: none;
  }
  .ticker-wrap, .clock, .brand-tag, .theme-switch { display: none; }
  .topbar-right { gap: 6px; }
  .topbar-right .btn-ghost { padding: 5px 8px; font-size: 12px; }
  .brand-name { font-size: 15px; }
  #csBtn { display: none; }

  /* ---- 侧栏 → 抽屉 ---- */
  .main-layout { position: relative; }
  .sidebar {
    position: fixed; left: 0; top: 48px; bottom: 0; width: 236px; flex: none; z-index: 900;
    transform: translateX(-102%); transition: transform .22s ease;
    box-shadow: 8px 0 24px rgba(0,0,0,.35); border-right: 1px solid var(--border2);
  }
  .sidebar.open { transform: translateX(0); }
  .side-item { padding: 11px 16px; font-size: 14px; }

  /* ---- 工具栏换行 ---- */
  .toolbar { flex-wrap: wrap; padding: 8px 10px; gap: 6px; }
  .t-left { flex: 1 1 100%; }
  .t-search { max-width: none; }
  .t-search input { font-size: 14px; padding: 8px 12px; }
  .t-right { flex: 1 1 100%; justify-content: flex-end; flex-wrap: wrap; }
  .loaded-info { display: none; }

  /* ---- 标签条横向滑动 ---- */
  .tagbar { flex-wrap: nowrap; overflow-x: auto; -webkit-overflow-scrolling: touch; padding: 4px 10px 8px; }
  .tagbar-item, .tagbar-label { flex: none; }
  .tagbar-item { font-size: 12px; padding: 3px 12px; }
  .status-bar { padding: 6px 10px; }
  .chips { gap: 6px; }
  .chip { font-size: 12px; padding: 4px 10px; }

  /* ---- 表格 → 卡片列表（通用：所有视图共用） ---- */
  .table-wrap { overflow-x: hidden; }
  .data-table { display: block; min-width: 0; width: 100%; }
  .data-table thead { display: block; }
  .data-table thead tr { display: flex; flex-wrap: wrap; gap: 5px; padding: 8px 10px 2px; }
  .data-table thead th {
    position: static; display: inline-flex; align-items: center;
    width: auto !important; min-width: 0;
    border: 1px solid var(--border); border-radius: 13px; padding: 3px 11px;
    background: var(--panel2); white-space: nowrap; font-size: 11px;
  }
  .data-table thead th .th-text { max-width: none; padding-right: 2px; overflow: visible; }
  .data-table thead th .filter-icon { margin-left: 4px; }
  .data-table thead th.filter-active { box-shadow: none; border-color: var(--amber); }
  .data-table tbody { display: block; }
  .data-table tbody tr {
    display: block; margin: 10px; padding: 2px 0;
    border: 1px solid var(--border); border-radius: 10px; background: var(--panel2);
    overflow: hidden; cursor: pointer;
  }
  .data-table tbody td {
    display: flex; align-items: flex-start; gap: 10px;
    border: none; border-bottom: 1px dashed var(--border);
    padding: 7px 12px; white-space: normal; overflow: visible; text-overflow: unset;
    text-align: left; vertical-align: top;
  }
  .data-table tbody td:last-child { border-bottom: none; }
  /* JS 标注的列名 → 卡片字段标签 */
  .data-table tbody td[data-label]::before {
    content: attr(data-label); flex: none; width: 62px; margin-top: 2px;
    color: var(--dim); font-size: 11px; line-height: 1.5;
  }
  /* 序号列隐藏；收藏星标列作为卡片右上角点缀 */
  .data-table tbody td[data-label="#"] { display: none; }
  .data-table tbody td[data-label="★"] { padding: 4px 12px 0; border-bottom: none; }
  /* 标题单元格 = 卡片头 */
  .data-table tbody td.cell-title {
    border-bottom: 1px solid var(--border); background: var(--panel);
    font-size: 14.5px; font-weight: 700; line-height: 1.5; padding: 10px 12px;
  }
  .data-table tbody td.cell-title::before { display: none; }
  .cell-title-w, .cell-major, .cell-emp { max-width: none; }
  /* 桌面端尾部吸宽空列：移动端卡片化时整体隐藏 */
  .data-table thead th.spacer-col, .data-table tbody td.spacer-col { display: none !important; }
  .data-table tbody tr:has(> td.spacer-col) > td:nth-last-child(2) { border-bottom: none; }
  .cell-num { text-align: left; font-size: 13px; }
  .cell-date { font-size: 12px; }
  .row-act { font-size: 13px; margin-right: 16px; }
  .star { font-size: 17px; padding: 4px; }

  /* ---- 详情抽屉全屏 ---- */
  .drawer { width: 100vw; right: -100vw; border-left: none; }
  .drawer.open { right: 0; }
  .d-grid { grid-template-columns: 1fr; }

  /* ---- 弹窗全屏化 ---- */
  .pay-modal { width: 94vw; max-height: 92vh; }
  .pay-days-quick { flex-wrap: wrap; }
  .col-mgr { width: 94vw; max-height: 86vh; }
  .login-modal { width: 94vw; }

  /* ---- AI 助手 ---- */
  .ai-panel { right: 10px; left: 10px; width: auto; height: 62vh; max-height: 62vh; }
  .ai-ball { right: 14px; bottom: 18px; width: 48px; height: 48px; font-size: 22px; }
  .ai-input-wrap input { font-size: 14px; }

  /* ---- 求职计划 ---- */
  .plan-toolbar { flex-wrap: wrap; gap: 6px; }
  .plan-tabs { width: 100%; }

  /* ---- 加载更多 / 页脚 ---- */
  .table-more { padding: 12px; }
  #loadMoreBtn { padding: 10px 26px; font-size: 13px; }
  .empty-tip { padding: 40px 20px; font-size: 14px; }
  .site-foot .foot-line { font-size: 10px; line-height: 1.8; }
}
