/* 凯盛集策.精英会 - 设计系统样式（明艳珊瑚橙 品牌色系 · 暖白轻快底） */
:root {
  --primary: #EC5A2D;            /* 珊瑚橙：文字/描边/选中（白底 3.4:1，满足粗体/图形 3:1） */
  --primary-hover: #D94E22;
  --primary-bright: #FF7A45;    /* 更亮的珊瑚橙：仅用于装饰/大元素 */
  --primary-solid: #EC5A2D;     /* 实心按钮底色（白字 3.4:1） */
  --primary-solid-hover: #D94E22;
  --grad: linear-gradient(120deg, #FFB24D 0%, #FF7A45 45%, #FF5E8A 100%); /* 明艳渐变 */
  --grad-warm: linear-gradient(135deg, #FF9A5A 0%, #EC5A2D 100%);
  --success: #12B886;           /* 鲜亮薄荷绿 */
  --danger: #FF5470;            /* 明艳桃红 */
  --bg: #FFF7F2;                /* 暖白轻快底 */
  --bg-top: #FFF1E8;            /* 顶部暖色晕染 */
  --card: #FFFFFF;
  --border: #F1E4DC;            /* 暖色描边 */
  --text-1: #2B2330;            /* 柔和近黑紫 */
  --text-2: #7C6F79;
  --text-3: #B49FA8;
  --brand-bg: #FFEDE4;          /* 珊瑚浅底（标签/选中） */
  --brand-bg-2: #FFE9F1;        /* 桃粉浅底 */
}

* { margin: 0; padding: 0; box-sizing: border-box; }

body {
  font-family: "Noto Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif;
  background:
    linear-gradient(180deg, var(--bg-top) 0%, #FFF7F2 220px, var(--bg) 360px);
  color: var(--text-1);
  font-size: 14px;
  line-height: 1.6;
}

a { color: var(--primary); text-decoration: none; }
a:hover { opacity: 0.85; }

/* ── 顶部导航 ── */
.nav {
  background: var(--card);
  border-bottom: 1px solid var(--border);
  padding: 0 24px;
  height: 64px;
  display: flex;
  align-items: center;
  gap: 24px;
}
.nav .logo { font-size: 18px; font-weight: 600; color: var(--text-1); }
.nav .menu { display: flex; gap: 24px; flex: 1; }
.nav .menu a { color: var(--text-2); font-size: 15px; padding: 4px 0; }
.nav .menu a.active { color: var(--primary); font-weight: 500; border-bottom: 2px solid var(--primary); }
.nav .btn-primary {
  background: var(--primary-solid); color: #fff; padding: 8px 16px;
  border-radius: 6px; font-size: 13px; font-weight: 500; border: none; cursor: pointer;
}
.nav .user-chip { color: var(--text-2); font-size: 13px; }
.nav .user-chip:hover { color: var(--primary); }
.nav .user-box { display: flex; align-items: center; gap: 14px; }

/* ── 页面容器 ── */
.page { padding: 32px; }
.page-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 24px; }
.page-head h1 { font-size: 24px; font-weight: 600; }
.page-head .sub { color: var(--text-3); font-size: 13px; margin-top: 4px; }

/* ── 筛选栏 ── */
.filter-bar { display: flex; gap: 12px; align-items: center; margin-bottom: 24px; flex-wrap: wrap; }
.filter-bar input[type=text] {
  padding: 8px 12px; border: 1px solid var(--border); border-radius: 8px; font-size: 13px; width: 240px;
}
.filter-bar select {
  padding: 8px 12px; border: 1px solid var(--border); border-radius: 8px; font-size: 13px; background: #fff;
}
.chip {
  padding: 6px 14px; border-radius: 999px; border: 1px solid var(--border);
  font-size: 13px; cursor: pointer; background: #fff; color: var(--text-2);
}
.chip.active { background: var(--brand-bg); color: var(--primary); border-color: var(--primary); }

/* ── 岗位卡片 ── */
.job-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 20px; }
.job-card {
  background: var(--card); border: 1px solid var(--border); border-radius: 12px;
  padding: 20px; display: flex; flex-direction: column; gap: 12px; transition: box-shadow .2s;
}
.job-card:hover { box-shadow: 0 8px 24px rgba(0,0,0,0.08); }
.job-card .title-row { display: flex; align-items: center; gap: 12px; }
.job-card .title { font-size: 16px; font-weight: 600; flex: 1; }
.job-card .salary { color: var(--danger); font-weight: 600; }
.job-card .tags { display: flex; gap: 8px; flex-wrap: wrap; }
.tag {
  padding: 2px 8px; border-radius: 4px; font-size: 12px; background: var(--brand-bg); color: var(--primary);
}
.tag.green { background: #E9F7F1; color: var(--success); }
.tag.gray { background: #FFF4EE; color: var(--text-3); }
.job-card .meta { color: var(--text-3); font-size: 12px; display: flex; gap: 12px; }
.job-card .foot { display: flex; justify-content: space-between; align-items: center; margin-top: 4px; }

/* 状态标签 */
.status-chip { padding: 3px 10px; border-radius: 999px; font-size: 12px; }
.status-chip.doing { background: var(--brand-bg); color: var(--primary); }
.status-chip.urgent { background: #FDECEA; color: var(--danger); }
.status-chip.full { background: #FFF4EE; color: var(--text-3); }
.status-chip.done { background: #E9F7F1; color: var(--success); }
.status-chip.closed { background: #FFF4EE; color: var(--text-3); }
.status-chip.settle { background: #FFF3E0; color: #E37318; }
.status-chip.settle-done { background: #E9F7F1; color: var(--success); }
.status-chip.gray { background: #FFF4EE; color: var(--text-3); }

/* ── 按钮 ── */
.btn {
  padding: 8px 16px; border-radius: 8px; font-size: 13px; cursor: pointer;
  border: 1px solid transparent; display: inline-block;
}
.btn-primary { background: var(--grad-warm); color: #fff; font-weight: 600; box-shadow: 0 4px 12px rgba(236,90,45,.28); }
.btn-primary:hover { background: var(--primary-solid-hover); }
.btn-outline { background: #fff; border-color: #EAD7CC; color: var(--text-1); }
.btn-success { background: var(--success); color: #fff; font-weight: 500; }
.btn-ghost { background: #fff; border-color: var(--border); color: var(--text-1); }
.btn-danger { background: #fff; border-color: #F5B5AE; color: var(--danger); }
.btn-danger:hover { background: var(--danger); color: #fff; }

/* ── 表单 ── */
.form-card {
  background: var(--card); border: 1px solid var(--border); border-radius: 12px; padding: 24px;
  display: flex; flex-direction: column; gap: 20px;
}
.form-section-title { font-size: 16px; font-weight: 600; }
.form-row { display: flex; gap: 16px; }
.form-field { flex: 1; display: flex; flex-direction: column; gap: 6px; }
.form-field label { font-size: 13px; font-weight: 500; }
.form-field label .req { color: var(--danger); }
.form-field input, .form-field select, .form-field textarea {
  padding: 10px 12px; border: 1px solid #EAD7CC; border-radius: 8px; font-size: 13px; font-family: inherit;
}
.form-field textarea { min-height: 120px; resize: vertical; }
.form-field input::placeholder, .form-field textarea::placeholder { color: var(--text-3); }
/* 字段辅助说明：标注该字段与大厅筛选项的对应关系，避免发布端选错导致筛选不到 */
.form-field .field-hint { margin-top: 2px; font-size: 12px; color: var(--text-3); line-height: 1.5; }

/* 双框输入：起始数—最高数 + 单位 + 薪数（发布/编辑岗位通用） */
.range-row { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.range-row input[type="number"] { flex: 1; min-width: 0; width: 100%; }
/* 隐藏数字框自带的增减箭头，保留纯净填写框体验 */
.range-row input[type="number"]::-webkit-outer-spin-button,
.range-row input[type="number"]::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.range-row input[type="number"] { -moz-appearance: textfield; appearance: textfield; }
.range-row .range-narrow { flex: 0 0 88px; width: 88px; min-width: 0; }
.range-sep { color: var(--text-3); font-size: 13px; }
.range-unit { font-size: 13px; color: var(--text-2); font-weight: 500; white-space: nowrap; }
.range-select { flex: 0 0 auto; width: auto; padding: 10px 12px; border: 1px solid #EAD7CC; border-radius: 8px; font-size: 13px; font-family: inherit; background: var(--card); color: var(--text-1); }

/* ── 详情页 ── */
.detail-grid { display: flex; gap: 24px; align-items: flex-start; }
.detail-main { flex: 1; display: flex; flex-direction: column; gap: 20px; }
.detail-side { width: 360px; display: flex; flex-direction: column; gap: 16px; }
.card { background: var(--card); border: 1px solid var(--border); border-radius: 12px; padding: 24px; }
.card h3 { font-size: 16px; font-weight: 600; margin-bottom: 12px; }
.commission-box {
  background: var(--brand-bg); border-radius: 12px; padding: 20px; color: var(--primary);
}
.commission-box .big { font-size: 28px; font-weight: 600; margin: 8px 0; }
.commission-box .rule { font-size: 13px; margin-top: 6px; }
.gradient-card {
  background: linear-gradient(135deg, #EC5A2D, #D94E22); color: #fff; border-radius: 12px; padding: 24px;
}
.gradient-card .big { font-size: 32px; font-weight: 600; margin: 8px 0; }

/* ── 订单时间线 ── */
.order-card { background: var(--card); border: 1px solid var(--border); border-radius: 12px; padding: 20px; margin-bottom: 20px; }
.order-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px; }
.order-head .title { font-size: 16px; font-weight: 600; }
.timeline { display: flex; align-items: center; margin: 16px 0; }
.tl-seg { flex: 1; height: 6px; border-radius: 3px; margin-right: 6px; }
.tl-seg.done { background: var(--success); }
.tl-seg.current { background: var(--primary-solid); }
.tl-seg.todo { background: var(--border); }
.tl-seg.reject { background: #E2D2C8; }
.tl-labels { display: flex; justify-content: space-between; font-size: 12px; color: var(--text-3); margin-bottom: 12px; }
.tl-labels .active { color: var(--primary); font-weight: 500; }
.tl-labels .done-label { color: var(--text-1); }
.tl-labels .reject-label { color: var(--danger); font-weight: 500; }
.order-foot { display: flex; justify-content: space-between; align-items: center; }
.order-foot .note { color: var(--text-2); font-size: 12px; }
.order-foot .actions { display: flex; gap: 12px; }

/* ── 标签栏 ── */
.tab-bar { display: flex; gap: 24px; border-bottom: 1px solid var(--border); margin-bottom: 20px; }
.tab-bar a { color: var(--text-2); font-size: 15px; padding: 10px 0; border-bottom: 2px solid transparent; }
.tab-bar a.active { color: var(--primary); border-bottom-color: var(--primary); font-weight: 500; }

/* ── 角色切换（结算管理：发单方/接单方，仅 admin 双身份显示）── */
.role-switch { display: flex; gap: 12px; margin-bottom: 20px; flex-wrap: wrap; }
.role-switch a {
  padding: 9px 18px; border-radius: 999px; font-size: 14px; font-weight: 500;
  border: 1.5px solid var(--border); color: var(--text-2); background: var(--card);
  text-decoration: none; transition: all .15s var(--ease, ease);
}
.role-switch a:hover { border-color: var(--text-3); color: var(--text-1); }
.role-switch a.active.pub { border-color: #F97316; color: #C2410C; background: #FFF7ED; }
.role-switch a.active.con { border-color: #3B82F6; color: #1D4ED8; background: #EFF6FF; }
html[data-theme="dark"] .role-switch a.active.pub { background: rgba(249,115,22,.16); color: #FDBA74; }
html[data-theme="dark"] .role-switch a.active.con { background: rgba(59,130,246,.16); color: #93C5FD; }

/* ── 登录/注册 ── */
.auth-wrap { display: flex; min-height: 100vh; }
.auth-brand {
  width: 520px; background: linear-gradient(160deg, #EC5A2D, #D94E22);
  color: #fff; display: flex; flex-direction: column; justify-content: center; padding: 80px; gap: 24px;
}
.auth-brand .name { font-size: 28px; font-weight: 600; }
.auth-brand .slogan { font-size: 15px; opacity: 0.9; }
.auth-brand .feat { font-size: 14px; }
.auth-form-wrap { flex: 1; display: flex; align-items: center; justify-content: center; background: var(--bg); }
.auth-card { background: #fff; border-radius: 16px; padding: 40px; width: 460px; display: flex; flex-direction: column; gap: 20px; }
.auth-card h2 { font-size: 24px; font-weight: 600; }
.auth-card .sub { color: var(--text-3); font-size: 13px; }
.role-row { display: flex; gap: 16px; }
.role-card {
  flex: 1; border: 1px solid var(--border); border-radius: 8px; padding: 16px; cursor: pointer;
  display: flex; flex-direction: column; gap: 8px;
}
.role-card.checked { border-color: var(--primary); background: #FFEDE4; }
.role-card .rt { font-size: 15px; font-weight: 600; }
.role-card .rd { font-size: 13px; color: var(--text-2); }
.error-msg { color: var(--danger); font-size: 13px; }
.success-msg {
  background: #E9F7F1; color: var(--success); font-size: 13px;
  padding: 10px 14px; border-radius: 8px;
}
.auth-card .link-center { text-align: center; font-size: 13px; }

/* ── 弹窗 ── */
.modal-overlay {
  position: fixed; inset: 0; background: rgba(0,0,0,0.4);
  display: flex; align-items: center; justify-content: center; z-index: 1000;
}
.modal-box { background: #fff; border-radius: 16px; padding: 32px; width: 640px; max-width: 92vw; display: flex; flex-direction: column; gap: 20px; max-height: 90vh; overflow-y: auto; }
.modal-head { display: flex; justify-content: space-between; align-items: center; }
.modal-head h3 { font-size: 20px; font-weight: 600; }
.modal-foot { display: flex; justify-content: flex-end; gap: 12px; align-items: center; }

/* 多候选人提交：每位候选人一块 */
.cand-row { border: 1px solid #F2E8DF; border-radius: 12px; padding: 14px 16px; margin-bottom: 12px; background: #FFF7F2; }
.cand-row-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; }
.cand-idx { font-size: 13px; font-weight: 600; color: var(--primary-solid); }
.cand-del { border: none; background: transparent; color: #B49FA8; cursor: pointer; font-size: 15px; line-height: 1; padding: 2px 6px; border-radius: 6px; }
.cand-del:hover { color: var(--danger); background: #FDECEC; }
.cand-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-bottom: 12px; }
.cand-grid .form-field { margin-bottom: 0; }
.cand-fileinfo { font-size: 12px; color: var(--text-2); margin-top: 6px; }
.cand-fileinfo a { color: var(--primary-solid); }
@media (max-width: 600px) { .cand-grid { grid-template-columns: 1fr; } }
.btn:disabled, .btn[disabled] { opacity: .5; cursor: not-allowed; }
.btn-outline:disabled { opacity: .5; cursor: not-allowed; }


/* ── 简历上传区（三态：空态 / 已选 / 报错）── */
.upload-zone {
  border: 1.5px dashed #E4D6CD; border-radius: 12px; background: #FFF7F2;
  padding: 28px 20px; text-align: center; cursor: pointer; transition: all .15s;
}
.upload-zone:hover { border-color: var(--primary); background: var(--brand-bg); }
.upload-zone.dragover { border-color: var(--primary); background: var(--brand-bg); }
.upload-zone.error { border-color: var(--danger); background: #FEF6F5; cursor: default; }
.uz-icon { font-size: 34px; line-height: 1; margin-bottom: 10px; }
.uz-title { font-size: 14px; font-weight: 500; color: var(--text-1); }
.uz-sub { font-size: 12px; color: var(--text-3); margin-top: 6px; }

.uz-selected { display: flex; align-items: center; gap: 12px; text-align: left; padding: 4px; }
.uz-file { display: flex; align-items: center; gap: 12px; flex: 1; min-width: 0; }
.uz-file-icon {
  width: 40px; height: 40px; flex: none; border-radius: 8px; background: var(--brand-bg);
  color: var(--primary); display: flex; align-items: center; justify-content: center; font-size: 18px;
}
.uz-file-info { min-width: 0; flex: 1; }
.uz-file-name { font-size: 14px; font-weight: 500; color: var(--text-1); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.uz-file-size { font-size: 12px; color: var(--text-3); margin-top: 2px; }
.uz-check { font-size: 12px; color: var(--success); font-weight: 500; flex: none; }
.uz-del {
  flex: none; width: 28px; height: 28px; border-radius: 6px; border: 1px solid var(--border);
  background: #fff; color: var(--text-2); cursor: pointer; font-size: 14px; line-height: 1;
}
.uz-del:hover { border-color: #F5B5AE; color: var(--danger); }

.uz-error {
  display: flex; align-items: center; gap: 8px; margin-top: 12px;
  background: #FEF6F5; border: 1px solid #F5B5AE; border-radius: 8px; padding: 10px 14px;
  font-size: 13px; color: var(--danger);
}
.uz-err-badge {
  flex: none; width: 18px; height: 18px; border-radius: 50%; background: var(--danger); color: #fff;
  font-size: 12px; font-weight: 700; display: flex; align-items: center; justify-content: center;
}

/* 提交按钮禁用态 */
.btn-primary.is-disabled { background: #E2D2C8; color: #fff; cursor: not-allowed; opacity: 1; }

/* 提示条 */
.notice-bar { background: #fff; border-top: 1px solid var(--border); padding: 14px 40px; color: var(--text-3); font-size: 12px; text-align: center; }
.tip-bar {
  background: var(--brand-bg); color: var(--primary); font-size: 13px;
  padding: 12px 16px; border-radius: 8px; margin-bottom: 16px;
}

.list-end { text-align: center; color: var(--text-3); font-size: 13px; margin-top: 8px; }

/* ── 结算模块 ── */
.stat-cards { display: flex; gap: 16px; margin-bottom: 20px; flex-wrap: wrap; }
.stat-card {
  flex: 1; min-width: 220px; background: #fff; border: 1px solid var(--border);
  border-radius: 12px; padding: 20px 24px;
}
.stat-card .label { font-size: 13px; color: var(--text-3); margin-bottom: 8px; }
.stat-card .value { font-size: 28px; font-weight: 600; line-height: 1.2; }
.stat-card .hint { font-size: 12px; color: var(--text-3); margin-top: 6px; }
.stat-card.pending .value { color: #E37318; }
.stat-card.settled .value { color: var(--success); }

.settle-meta {
  display: flex; flex-wrap: wrap; gap: 12px 32px;
  padding: 14px 0; border-top: 1px dashed var(--border); margin-top: 4px;
}
.settle-meta .meta-item { display: flex; flex-direction: column; gap: 2px; }
.settle-meta .k { font-size: 12px; color: var(--text-3); }
.settle-meta .v { font-size: 13px; color: var(--text-1); }

.settle-form {
  display: flex; align-items: flex-end; gap: 12px; flex-wrap: wrap;
  background: #FFFBF5; border: 1px solid #F5E3C8;
  border-radius: 10px; padding: 16px; margin-top: 12px;
}
.settle-form .field { display: flex; flex-direction: column; gap: 6px; }
.settle-form .field.grow { flex: 1; min-width: 200px; }
.settle-form label { font-size: 12px; color: var(--text-2); }
.settle-form input {
  border: 1px solid var(--border); border-radius: 6px;
  padding: 8px 12px; font-size: 14px; width: 160px; outline: none;
}
.settle-form .field.grow input { width: 100%; }
.settle-form input:focus { border-color: var(--primary); }

.settle-done {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  background: #FFF7F2; border: 1px solid #D6EBE2;
  border-radius: 10px; padding: 14px 16px; margin-top: 12px; flex-wrap: wrap;
}
.settle-done.wait { background: #FFFBF5; border-color: #F5E3C8; }
.settle-done .amount { font-size: 20px; font-weight: 600; color: var(--success); margin-right: 10px; }
.settle-done.wait .amount { color: #E37318; }
.settle-done .at { font-size: 12px; color: var(--text-3); }

/* ── 总管理后台 ── */
.panel { background: #fff; border: 1px solid var(--border); border-radius: 12px; padding: 20px 24px; margin-bottom: 16px; }
.panel-title { font-size: 15px; font-weight: 600; margin-bottom: 12px; }
.panel .empty { text-align: center; color: var(--text-3); padding: 32px 0; font-size: 13px; }
.settled-text { color: var(--success); font-weight: 600; }

.admin-row {
  display: flex; align-items: center; gap: 16px; flex-wrap: wrap;
  padding: 14px 0; border-top: 1px solid var(--border);
}
.admin-row:first-of-type { border-top: none; }
.admin-row .r-main { font-size: 14px; font-weight: 500; min-width: 180px; }
.admin-row .r-sub { font-size: 13px; color: var(--text-3); }
.admin-row .row-actions { display: flex; gap: 8px; margin-left: auto; }
.admin-row form { margin: 0; }

@media (max-width: 900px) {
  .detail-grid { flex-direction: column; }
  .detail-side { width: 100%; }
  .auth-brand { display: none; }
  .form-row { flex-direction: column; }
  .stat-cards { flex-direction: column; }
  .settle-form { flex-direction: column; align-items: stretch; }
  .settle-form input { width: 100%; }
}

/* 简历下载链接 */
.resume-link { color: var(--primary); font-size: 13px; text-decoration: none; margin-left: 8px; white-space: nowrap; }
.resume-link:hover { text-decoration: underline; }

/* ═══════════════════════════════════════════════════════════
   新增组件样式（数据看板 / 消息中心 / 收藏 / FAQ / 文档页 / 分页）
   同时提供暗色模式变量覆盖与响应式适配
   ═══════════════════════════════════════════════════════════ */

/* ── 页头补充 ── */
.page-head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.page-sub { color: var(--text-3); font-size: 13px; }
.page-head-actions { display: flex; gap: 8px; }
.page-narrow { max-width: 860px; margin-left: auto; margin-right: auto; }
.link-btn {
  background: none; border: none; color: var(--primary);
  font-size: 13px; cursor: pointer; text-decoration: none; padding: 0;
}
.link-btn:hover { text-decoration: underline; }

/* ── 空状态 ── */
.empty-tip { color: var(--text-3); font-size: 13px; padding: 20px 0; text-align: center; }
.empty-tip a { color: var(--primary); text-decoration: none; }
.empty-state { text-align: center; padding: 60px 20px; }
.empty-code { font-size: 64px; font-weight: 700; color: var(--border); line-height: 1; margin-bottom: 8px; }
.empty-state h1 { font-size: 22px; margin-bottom: 8px; }
.empty-state p { color: var(--text-2); margin-bottom: 24px; }

/* ── 数据看板：进度漏斗 ── */
.funnel { padding: 8px 0; }
.funnel-row { display: flex; align-items: center; gap: 12px; margin-bottom: 10px; }
.funnel-name { width: 84px; flex: none; font-size: 13px; color: var(--text-2); }
.funnel-bar-wrap { flex: 1; height: 18px; background: var(--bg); border-radius: 4px; overflow: hidden; }
.funnel-bar {
  height: 100%; border-radius: 4px;
  background: linear-gradient(90deg, var(--primary), var(--primary-solid-hover));
  transition: width .4s ease;
}
.funnel-count { width: 36px; flex: none; text-align: right; font-size: 13px; font-weight: 600; color: var(--text-1); }

/* ── 数据看板：两栏 + 列表 ── */
.dash-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.dash-list { display: flex; flex-direction: column; }
.dash-item { padding: 12px 0; border-bottom: 1px solid var(--border); }
.dash-item:last-child { border-bottom: none; }
.dash-item-main { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.dash-item-title { font-size: 14px; font-weight: 500; color: var(--text-1); text-decoration: none; }
a.dash-item-title:hover { color: var(--primary); }
.dash-item-meta { font-size: 12px; color: var(--text-3); margin-top: 4px; }

/* ── 快捷操作按钮组 ── */
.quick-links { display: flex; flex-wrap: wrap; gap: 10px; }

/* ── 消息中心 ── */
.msg-layout { display: grid; grid-template-columns: 300px 1fr; gap: 16px; align-items: start; }
.msg-side, .msg-main { background: var(--card); border: 1px solid var(--border); border-radius: 10px; }
.msg-side-title { padding: 14px 16px; font-weight: 600; font-size: 14px; border-bottom: 1px solid var(--border); }
.thread-list { max-height: 560px; overflow-y: auto; }
.thread-item { display: block; padding: 12px 16px; border-bottom: 1px solid var(--border); text-decoration: none; color: inherit; }
.thread-item:hover { background: var(--brand-bg); }
.thread-item.active { background: var(--brand-bg); border-left: 3px solid var(--primary); padding-left: 13px; }
.thread-top { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.thread-job { font-size: 14px; font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.thread-badge {
  flex: none; min-width: 18px; height: 18px; padding: 0 5px; border-radius: 9px;
  background: var(--danger); color: #fff; font-size: 11px; line-height: 18px; text-align: center;
}
.thread-msg {
  font-size: 12px; color: var(--text-3); margin-top: 4px;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.thread-meta { font-size: 11px; color: var(--text-3); margin-top: 4px; }

.msg-head { padding: 14px 16px; border-bottom: 1px solid var(--border); }
.msg-title { font-size: 15px; font-weight: 600; }
.msg-sub { font-size: 12px; color: var(--text-3); margin-top: 2px; }
.msg-bubbles { padding: 16px; height: 320px; overflow-y: auto; background: var(--bg); }
.bubble-row { display: flex; margin-bottom: 12px; }
.bubble-row.mine { justify-content: flex-end; }
.bubble {
  max-width: 72%; padding: 8px 12px; border-radius: 8px;
  background: var(--card); border: 1px solid var(--border);
}
.bubble-row.mine .bubble { background: var(--primary); border-color: var(--primary); color: #fff; }
.bubble-meta { font-size: 11px; opacity: .7; margin-bottom: 2px; }
.bubble-text { font-size: 14px; line-height: 1.5; word-break: break-word; }
.msg-send { display: flex; gap: 10px; align-items: flex-end; padding: 12px 16px; border-top: 1px solid var(--border); }
.msg-send textarea {
  flex: 1; padding: 8px 10px; border: 1px solid var(--border); border-radius: 6px;
  font-family: inherit; font-size: 14px; resize: vertical; background: var(--card); color: var(--text-1);
}
.msg-send textarea:focus { outline: none; border-color: var(--primary); }

/* ── 通知列表 ── */
.notice-list { padding: 4px 0; }
.notice-item { padding: 12px 16px; border-bottom: 1px solid var(--border); }
.notice-item:last-child { border-bottom: none; }
.notice-item.unread { background: var(--brand-bg); }
.notice-text { font-size: 14px; color: var(--text-1); }
.notice-meta { font-size: 12px; color: var(--text-3); margin-top: 4px; }
.notice-meta a { color: var(--primary); text-decoration: none; }

/* ── 常见问题（折叠）─── */
.faq-list { display: flex; flex-direction: column; gap: 10px; }
.faq-item {
  background: var(--card); border: 1px solid var(--border);
  border-radius: 8px; overflow: hidden;
}
.faq-item summary {
  padding: 14px 16px; cursor: pointer; font-size: 14px; font-weight: 500;
  list-style: none; display: flex; align-items: center; justify-content: space-between;
}
.faq-item summary::-webkit-details-marker { display: none; }
.faq-item summary::after { content: '+'; color: var(--text-3); font-size: 18px; }
.faq-item[open] summary::after { content: '−'; }
.faq-item summary:hover { color: var(--primary); }
.faq-body {
  padding: 0 16px 14px; font-size: 14px; color: var(--text-2); line-height: 1.7;
}
.faq-body b { color: var(--text-1); }

/* ── 文档页（协议 / 隐私）─── */
.doc-body { font-size: 14px; color: var(--text-2); line-height: 1.9; }
.doc-body h2 { font-size: 15px; color: var(--text-1); margin: 24px 0 8px; }
.doc-body h2:first-child { margin-top: 0; }
.doc-body p { margin-bottom: 8px; }
.doc-body b { color: var(--text-1); }

/* ── 分页 ── */
.pager { display: flex; align-items: center; justify-content: center; gap: 6px; margin: 24px 0; flex-wrap: wrap; }
.pager a, .pager span {
  min-width: 34px; height: 34px; padding: 0 10px; border: 1px solid var(--border);
  border-radius: 6px; display: inline-flex; align-items: center; justify-content: center;
  font-size: 13px; text-decoration: none; color: var(--text-2); background: var(--card);
}
.pager a:hover { border-color: var(--primary); color: var(--primary); }
.pager .current { background: var(--primary); border-color: var(--primary); color: #fff; font-weight: 600; }
.pager .disabled { opacity: .45; cursor: not-allowed; }

/* ── 排序条 ── */
.sort-bar { display: flex; align-items: center; gap: 6px; }
.sort-bar a {
  padding: 3px 10px; border-radius: 4px; font-size: 13px;
  text-decoration: none; color: var(--text-2);
}
.sort-bar a:hover { color: var(--primary); }
.sort-bar a.active { background: var(--brand-bg); color: var(--primary); font-weight: 500; }

/* ── 收藏按钮 ── */
.fav-btn {
  background: none; border: none; cursor: pointer; font-size: 13px;
  color: var(--text-3); padding: 4px 6px; border-radius: 4px;
}
.fav-btn:hover { color: var(--primary); background: var(--brand-bg); }
.fav-btn.on { color: var(--primary); }

/* ── 主题切换按钮 ── */
.theme-toggle {
  background: none; border: 1px solid var(--border); border-radius: 6px;
  width: 30px; height: 30px; cursor: pointer; color: var(--text-2);
  font-size: 14px; display: inline-flex; align-items: center; justify-content: center;
}
.theme-toggle:hover { border-color: var(--primary); color: var(--primary); }

/* ═══════════════════════════════════════════════════════════
   暗色模式：通过 <html data-theme="dark"> 覆盖设计变量
   ═══════════════════════════════════════════════════════════ */
html[data-theme="dark"] {
  --primary: #FF9E7A;
  --primary-hover: #FFB38A;
  --primary-solid: #FF9E7A;
  --primary-solid-hover: #FFB38A;
  --success: #3FBF85;
  --danger: #E86A62;
  --bg: #14161C;
  --card: #1D2029;
  --border: #2C303B;
  --text-1: #F1E4DC;
  --text-2: #BCADB5;
  --text-3: #7C6F79;
  --brand-bg: #3A2419;
}
html[data-theme="dark"] body { background: var(--bg); }
html[data-theme="dark"] .msg-bubbles { background: #191C24; }
html[data-theme="dark"] .funnel-bar-wrap { background: #242833; }

/* ── 暗色模式：修正写死白底的组件 ── */
html[data-theme="dark"] .chip,
html[data-theme="dark"] .filter-bar select,
html[data-theme="dark"] .stat-card,
html[data-theme="dark"] .panel,
html[data-theme="dark"] .notice-bar,
html[data-theme="dark"] .auth-card,
html[data-theme="dark"] .modal-box,
html[data-theme="dark"] .uz-del { background: var(--card); }

html[data-theme="dark"] .chip { color: var(--text-2); border-color: var(--border); }
html[data-theme="dark"] .chip.active { background: var(--brand-bg); color: var(--primary); border-color: var(--primary); }
html[data-theme="dark"] .filter-bar select { color: var(--text-1); }
html[data-theme="dark"] .btn-outline { background: transparent; border-color: var(--border); color: var(--text-1); }
html[data-theme="dark"] .btn-outline:hover { background: var(--brand-bg); border-color: var(--primary); }
html[data-theme="dark"] .btn-ghost { background: transparent; border-color: var(--border); color: var(--text-1); }
html[data-theme="dark"] .cand-row { background: #1B1F29; border-color: #2A2F3A; }
html[data-theme="dark"] .cand-idx { color: var(--primary); }
html[data-theme="dark"] .cand-fileinfo { color: var(--text-3); }
html[data-theme="dark"] .btn-danger { background: transparent; border-color: #5c3a3a; color: var(--danger); }
html[data-theme="dark"] .btn-danger:hover { background: var(--danger); color: #fff; }

/* ═══════════════════════════════════════════════════════════
   响应式适配
   ═══════════════════════════════════════════════════════════ */
.ks-nav-toggle { display: none; }

@media (max-width: 1100px) {
  .msg-layout { grid-template-columns: 260px 1fr; }
}

@media (max-width: 900px) {
  .dash-grid { grid-template-columns: 1fr; }
  .msg-layout { grid-template-columns: 1fr; }
  .thread-list { max-height: 220px; }
  .stat-cards { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; }
}

/* 移动端：顶栏折叠为汉堡菜单 */
@media (max-width: 760px) {
  .ks-nav { flex-wrap: wrap; padding: 10px 14px; }
  .ks-nav-toggle {
    display: inline-flex; flex-direction: column; justify-content: center; gap: 4px;
    width: 32px; height: 32px; background: none; border: none; cursor: pointer; padding: 0;
  }
  .ks-nav-toggle span { display: block; height: 2px; width: 18px; background: var(--text-2); border-radius: 1px; }

  .ks-menu, .ks-nav-right {
    display: none; width: 100%; flex-direction: column; align-items: stretch; gap: 2px;
  }
  .ks-nav.menu-open .ks-menu,
  .ks-nav.menu-open .ks-nav-right { display: flex; }

  .ks-menu { order: 3; margin-top: 8px; padding-top: 8px; border-top: 1px solid var(--border); }
  .ks-nav-right { order: 4; margin-top: 8px; padding-top: 8px; border-top: 1px solid var(--border); }
  .ks-navitem, .ks-navlink, .ks-logout { padding: 10px 4px; font-size: 14px; }
  .ks-brand { margin-left: 8px; }

  /* 岗位卡片纵向排列 */
  .ks-card { flex-wrap: wrap; }
  .ks-card-right { width: 100%; justify-content: flex-start; margin-top: 8px; }
  .ks-comm { margin-left: auto; }

  /* 筛选行横向滚动，避免挤压换行 */
  .ks-frow { flex-wrap: nowrap; overflow-x: auto; -webkit-overflow-scrolling: touch; }
  .ks-flabel { flex: none; }

  .page { padding: 14px; }
  .quick-links .btn { flex: 1 1 auto; text-align: center; }
  .bubble { max-width: 86%; }
  .stat-cards { grid-template-columns: 1fr; }
}

/* ═══════════════════════════════════════════════════════════
   设计系统 · 增强层（纯表现层升级：阴影层次 / 动效 / 焦点 / 滚动条 / 骨架屏）
   不影响任何业务逻辑，仅增强视觉与交互质感
   ═══════════════════════════════════════════════════════════ */

/* 扩展设计 token：阴影阶梯、圆角阶梯、缓动、焦点环 */
:root {
  --radius-sm: 8px;
  --radius: 12px;
  --radius-lg: 16px;
  --shadow-xs: 0 1px 2px rgba(16,24,40,.06);
  --shadow-sm: 0 2px 8px rgba(16,24,40,.06);
  --shadow-md: 0 8px 24px rgba(16,24,40,.10);
  --shadow-lg: 0 16px 40px rgba(16,24,40,.14);
  --ring: 0 0 0 3px rgba(0,153,153,.18);
  --ease: cubic-bezier(.4,0,.2,1);
}

/* 全局基础 */
html { scroll-behavior: smooth; }
body { transition: background .25s var(--ease), color .25s var(--ease); }
::selection { background: rgba(0,153,153,.18); color: var(--text-1); }
img, video { border-radius: var(--radius-sm); }

/* 自定义滚动条（Webkit + Firefox） */
* { scrollbar-width: thin; scrollbar-color: #EBD3C7 transparent; }
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb {
  background: #E4D6CD; border-radius: 8px;
  border: 2px solid transparent; background-clip: padding-box;
}
::-webkit-scrollbar-thumb:hover { background: #C3B2BA; }

/* 键盘可见焦点环（可访问性） */
:focus-visible { outline: none; box-shadow: var(--ring); border-radius: 8px; }

/* 按钮微动效 */
.btn {
  transition: background .18s var(--ease), color .18s var(--ease),
              box-shadow .18s var(--ease), transform .12s var(--ease), border-color .18s var(--ease);
}
.btn:active { transform: translateY(1px); }
.btn-primary { box-shadow: var(--shadow-xs); }
.btn-primary:hover { box-shadow: var(--shadow-sm); transform: translateY(-1px); }
.btn-primary:active { transform: translateY(0); }

/* 卡片阴影层次与悬浮（仅补充，不破坏既有 hover） */
.card, .job-card, .order-card, .form-card, .panel, .stat-card,
.msg-side, .msg-main, .pub-section, .commission-box, .gradient-card {
  box-shadow: var(--shadow-sm);
  transition: box-shadow .2s var(--ease), transform .2s var(--ease), border-color .2s var(--ease);
}
.card:hover, .order-card:hover, .panel:hover, .pub-section:hover,
.msg-side:hover, .msg-main:hover { box-shadow: var(--shadow-md); }

/* 表单聚焦高亮（统一所有输入框：通用 / 筛选 / 结算 / 消息 / 候选人） */
.form-field input, .form-field select, .form-field textarea,
.filter-bar input, .filter-bar select,
.settle-form input, .msg-send textarea, .cand-grid input {
  transition: border-color .18s var(--ease), box-shadow .18s var(--ease), background .18s var(--ease);
}
.form-field input:focus, .form-field select:focus, .form-field textarea:focus,
.filter-bar input:focus, .filter-bar select:focus,
.settle-form input:focus, .msg-send textarea:focus, .cand-grid input:focus {
  outline: none; border-color: var(--primary); box-shadow: var(--ring);
}

/* 骨架屏（纯 CSS 占位动画，供列表/详情加载态使用） */
.skeleton {
  background: linear-gradient(90deg, var(--border) 25%, #F7EFE9 37%, var(--border) 63%);
  background-size: 400% 100%;
  animation: ks-shimmer 1.4s ease infinite;
  border-radius: var(--radius-sm);
}
@keyframes ks-shimmer { 0% { background-position: 100% 0; } 100% { background-position: 0 0; } }
html[data-theme="dark"] .skeleton {
  background: linear-gradient(90deg, #2B2330 25%, #2A2E39 37%, #2B2330 63%);
  background-size: 400% 100%;
}

/* 暗色模式：组件阴影与过渡平滑 */
html[data-theme="dark"] .card,
html[data-theme="dark"] .job-card,
html[data-theme="dark"] .panel,
html[data-theme="dark"] .stat-card,
html[data-theme="dark"] .msg-side,
html[data-theme="dark"] .msg-main,
html[data-theme="dark"] .pub-section,
html[data-theme="dark"] .commission-box { box-shadow: 0 2px 8px rgba(0,0,0,.30); }
