/* ==========================================================================
   app.css — 本项目在 styles.css 设计系统之上的补充样式
   只放「设计系统里没有、但本应用需要」的极少量类，不改动 styles.css。
   ========================================================================== */

/* ---------- 校测占比：去底色，数值文字纯红 (#FF0000) ----------
   按需求去掉所有背景色（红/黄/绿分档底、表头标识底），仅把占比数值统一显示为纯红。
   浏览模式下无值的「—」保持灰色（.num.muted 不被覆盖）。 */
/* 校测占比文字分档色（无底色，仅文字着色；无值「—」保持灰）：
   >90 纯红 / 85~90 黄 / 80~85 浅绿 / <80 绿 */
.result-grid td.ratio-red .num:not(.muted), .plan-table td.ratio-red .cell2 { color: #FF0000; }
.result-grid td.ratio-yellow .num:not(.muted), .plan-table td.ratio-yellow .cell2 { color: #C9A100; }
.result-grid td.ratio-lightgreen .num:not(.muted), .plan-table td.ratio-lightgreen .cell2 { color: #2E9E5B; }
.result-grid td.ratio-green .num:not(.muted), .plan-table td.ratio-green .cell2 { color: #1B7A3D; }

/* ---------- 滚动条加粗（用户要求「滚动条粗点」） ---------- */
/* styles.css 里把全局滚动条设为 width:8px / scrollbar-width:thin。
   这里覆盖为 14px（页面主滚动条 / 浮层 / 下拉），见下方 .table-scroll 另有 18px。
   ⚠ 关键：scrollbar-width 只要不是 auto，Chromium 就会忽略 ::-webkit-scrollbar
   自定义样式 —— 所以第一行必须显式写 auto，宽度才会生效。 */
* { scrollbar-width: auto; scrollbar-color: #b3c2d4 transparent; }
::-webkit-scrollbar { width: 14px; height: 14px; }
::-webkit-scrollbar-track { background: #f1f5f9; border-radius: 99px; }
::-webkit-scrollbar-thumb {
  background: #b3c2d4; border-radius: 99px;
  border: 2px solid transparent; background-clip: content-box;
}
::-webkit-scrollbar-thumb:hover { background: #94a3b8; background-clip: content-box; }
::-webkit-scrollbar-corner { background: #f1f5f9; }

/* 结果表滚动容器：再粗一档，长表格拖拽更好抓（18px，滑块可见宽约 12px） */
.table-scroll { scrollbar-width: auto; scrollbar-color: #9fb0c6 #eef2f7; }
.table-scroll::-webkit-scrollbar { width: 18px; height: 18px; }
.table-scroll::-webkit-scrollbar-track { background: #eef2f7; border-radius: 99px; }
.table-scroll::-webkit-scrollbar-thumb {
  background: #9fb0c6; border-radius: 99px;
  border: 2px solid transparent; background-clip: content-box;
}
.table-scroll::-webkit-scrollbar-thumb:hover { background: #7e91ab; background-clip: content-box; }
@media (max-width: 720px) {
  /* 窄屏：手机可用系统默认滚动条（更顺手），这里不再覆盖 */
  * { scrollbar-width: thin; }
  ::-webkit-scrollbar { width: 8px; height: 8px; }
  ::-webkit-scrollbar-thumb { background: #c3cede; border: 2px solid transparent; background-clip: content-box; }
}

/* ---------- 头部查询栏（本次新增功能） ---------- */
.header-query { margin-top: .62rem; }
.header-query .query-bar { padding: .6rem .85rem; border-radius: var(--r-xl); }
.header-query .query-bar .field > label { display: flex; align-items: center; gap: .22rem; }
.header-query .query-bar .field > label svg.i { font-size: .78rem; color: var(--brand); }
.field > label .req { color: var(--red); font-style: normal; font-weight: 700; }

.mini-check {
  display: inline-flex; align-items: center; gap: .32rem;
  font-size: .74rem; font-weight: 600; color: var(--ink-5);
  cursor: pointer; user-select: none; white-space: nowrap;
}

/* 手机号唯一性提示 */
.uni-hint {
  display: flex; align-items: center; gap: .34rem;
  font-size: .73rem; font-weight: 600;
  padding: .3rem .6rem; border-radius: var(--r-md);
  background: var(--surface-3); color: var(--muted);
}
.uni-hint svg.i { font-size: .82rem; }
.uni-hint.good { background: var(--green-bg); color: var(--green-ink); }
.uni-hint.warn { background: var(--amber-bg); color: var(--amber-ink); }
.uni-hint.bad  { background: var(--red-bg);   color: var(--red-ink); }

/* ---------- 等第小胶囊 ---------- */
.grade-chips { display: flex; flex-wrap: wrap; gap: .2rem; }
.gchip {
  display: inline-flex; align-items: center; gap: .22rem;
  font-size: .64rem; font-weight: 700; line-height: 1.5;
  padding: .06rem .34rem; border-radius: var(--r-sm);
  /* 未填等第用 --muted 而非 --muted-2，保证在表格里读得清 */
  background: var(--surface-3); color: var(--muted);
  border: 1px solid var(--line-2);
  font-variant-numeric: tabular-nums;
}
/* 科目名压轻、等第加粗：两段各自成 flex 子项，靠上面的 gap 分隔，
   不会像拼成单个文本节点那样糊成一团 */
.gchip b { font-weight: 500; opacity: .92; }
.gchip i { font-style: normal; font-weight: 800; }
.gchip:not(.has) i { font-weight: 600; opacity: .75; }
.gchip.has { border-color: transparent; }
.gchip.has[data-g="A"] { background: var(--green-bg); color: var(--green-ink); }
.gchip.has[data-g="B"] { background: var(--brand-100); color: var(--brand-deep); }
.gchip.has[data-g="C"] { background: var(--amber-bg); color: var(--amber-ink); }
.gchip.has[data-g="D"] { background: #ffedd5; color: #9a3412; }
.gchip.has[data-g="E"] { background: var(--red-bg); color: var(--red-ink); }
.grade-chips.sm { gap: .16rem; }
.grade-chips.sm .gchip { font-size: .6rem; padding: .02rem .26rem; gap: .16rem; }

/* ---------- 详情/警告行（复用 .rb-line + .rb-warn） ---------- */
.rb-line {
  display: flex; align-items: center; gap: .42rem; flex-wrap: wrap;
  font-size: .8rem; color: var(--ink-3);
}
.rb-line b { font-size: .88rem; color: var(--brand-ink); }
.rb-line svg.i { font-size: .86rem; color: var(--brand); flex: none; }
.rb-line code {
  font-family: var(--mono); font-size: .76rem;
  background: #fff; border: 1px solid var(--brand-200);
  padding: .06rem .42rem; border-radius: var(--r-sm); color: var(--brand-deep);
}
.rb-warn {
  background: var(--amber-bg); color: var(--amber-ink);
  border-radius: var(--r-md); padding: .32rem .6rem; font-weight: 600;
}
.rb-warn svg.i { color: var(--amber); }

/* ---------- 报名条件明细（结构化列：A~E 门数上限 + 科目等第下限） ---------- */
/* 全部条件排成一行（通栏），超出宽度自动换行，不再每行一条 */
.cond-list {
  margin-top: .55rem; display: flex; flex-direction: row; flex-wrap: wrap;
  gap: .34rem; align-items: center;
}
.cond-list .rb-line { width: auto; white-space: nowrap; }
.rb-ok {
  background: var(--green-bg); color: var(--green-ink);
  border-radius: var(--r-md); padding: .3rem .6rem; font-weight: 600;
}
.rb-ok svg.i { color: var(--green); }
.rb-bad {
  background: var(--red-bg); color: var(--red-ink);
  border-radius: var(--r-md); padding: .3rem .6rem; font-weight: 600;
}
.rb-bad svg.i { color: var(--red); }
.rb-muted {
  background: var(--surface-3); color: var(--muted);
  border-radius: var(--r-md); padding: .3rem .6rem; font-weight: 600;
}
.rb-muted svg.i { color: var(--muted); }
.cond-tag {
  display: inline-block; margin-left: .45rem; vertical-align: middle;
  font-size: .68rem; font-weight: 700; letter-spacing: .02em;
  padding: .1rem .5rem; border-radius: 999px;
}
.cond-tag svg.i { font-size: .68rem; margin-right: .16rem; vertical-align: -.06rem; }
.cond-tag.good { background: var(--green-bg); color: var(--green-ink); }
.cond-tag.bad { background: var(--red-bg); color: var(--red-ink); }
.cond-tag.muted { background: var(--surface-3); color: var(--muted); }

/* 是否入围徽标：不符合报名条件（优先于分数结论） */
.badge.unfit { background: var(--amber-bg); color: #92400e; border: 1px solid #fcd34d; }

/* ---------- 面板撑满内容区，表格内部滚动 ---------- */
.page > .panel { flex: 1 1 auto; }
.conv-method {
  font-size: .68rem; color: var(--muted);
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
  overflow: hidden; max-width: 190px; line-height: 1.4;
}
.conv-box {
  background: var(--surface-1); border: 1px solid var(--line-3);
  border-radius: var(--r-lg); padding: .7rem .9rem;
  font-size: .82rem; color: var(--ink-3); line-height: 1.7;
}
.warn-list { margin-top: .7rem; display: flex; flex-direction: column; gap: .3rem; }

/* ---------- 可读性：提高次要文字的对比度 ----------
   设计系统里次要文字用 --muted-2 (#94a3b8)，在白底上只有 2.56:1，
   低于 WCAG AA 要求的 4.5:1，中文小字尤其吃力。
   这里把承载「信息」而非「装饰」的次要文字统一提到 --muted (#64748b, 4.76:1)。
   纯装饰性的元素（滚动条、输入框占位符）保持原样。 */
.stat .k,
.table-footer .info,
.cell-major .s,
.brandline .sub,
.empty .d,
.page-head .desc,
.auth-hint,
.num.muted {
  color: var(--muted);
}

/* ---------- 头部：十门学考等第 内联在手机号之后（语文 [选择框]） ---------- */
/* 头部查询栏：拆为两行 —— 第一行姓名+手机号（同一行），第二行等第+操作
   用 .query-row.query-row-main / .query-row.query-row-top 提高特异性，覆盖 styles.css 的 .query-row{flex-wrap:wrap} */
.query-row.query-row-top { display: flex; align-items: flex-end; gap: .55rem; flex-wrap: nowrap; }
/* 第一行：姓名 / 手机 的标签与输入框同行（标签在左、输入框在右） */
.query-row.query-row-top .field { flex-direction: row; align-items: center; gap: .45rem; width: auto; }
.query-row.query-row-top .field > label { white-space: nowrap; margin: 0; }
.query-row.query-row-top .field .input { width: 150px; }
.query-row.query-row-main { display: flex; align-items: center; gap: .55rem; flex-wrap: nowrap; }
.grade-inline { display: flex; align-items: center; gap: .42rem .5rem; flex-wrap: nowrap; flex: 1 1 auto; min-width: 0; }
.gpair { display: inline-flex; align-items: center; gap: .32rem; flex: 0 0 auto; }
.gpair-label {
  font-size: .82rem; font-weight: 600; color: var(--ink-3); white-space: nowrap; line-height: 1;
}
.gpair.on .gpair-label { color: var(--ink-1); }
.gpair > .select {
  width: auto; min-width: 60px; font-weight: 700; font-size: .86rem;
  padding: .46rem .95rem .46rem .5rem; line-height: 1.2;
  cursor: pointer; border-radius: var(--r-lg);
  transition: border-color .15s ease, box-shadow .15s ease, background .15s ease;
}
.gpair > .select:hover { border-color: var(--brand); }
.gpair > .select:focus { outline: none; border-color: var(--brand); box-shadow: 0 0 0 3px var(--brand-100); }
.gpair > .select[data-g="A"] { color: var(--green); border-color: #bbf7d0; background: #f6fef9; }
.gpair > .select[data-g="B"] { color: var(--brand); border-color: var(--brand-200); background: var(--brand-tint); }
.gpair > .select[data-g="C"] { color: var(--amber); border-color: #fde68a; background: #fffdf5; }
.gpair > .select[data-g="D"] { color: #ea580c; border-color: #fed7aa; background: #fffaf5; }
.gpair > .select[data-g="E"] { color: var(--red);  border-color: #fecaca; background: #fff8f8; }

/* 十门学考等第汇总（如 1A2B3C3D1E）：跟在十科下拉之后，独立胶囊。
   未填时显示 — 且降饱和；有值时加粗高亮，title 给出完整说明。 */
.gsum {
  flex: 0 0 auto; margin-left: .35rem; padding: .46rem .7rem; line-height: 1.2;
  font-size: .86rem; font-weight: 700; letter-spacing: .02em; white-space: nowrap;
  color: var(--ink-3); background: var(--surface-3); border: 1px dashed var(--line-2);
  border-radius: var(--r-lg); cursor: default; user-select: none;
}
.gsum.has {
  color: var(--ink-1); background: var(--brand-tint);
  border: 1px solid var(--brand-200);
}

/* 与等第同一行的操作组（添加并查询 + 我的学生），行内垂直居中，与十门等第同处一行 */
.query-actions-inline { display: flex; align-items: center; gap: .5rem; flex: 0 0 auto; }
.query-actions-inline .btn { white-space: nowrap; }

/* 机构信息页：Logo 上传 */
.logo-edit { display: flex; flex-wrap: wrap; align-items: center; gap: .8rem; }
.logo-prev {
  width: 88px; height: 88px; border: 1px dashed var(--line); border-radius: var(--r-lg);
  display: flex; align-items: center; justify-content: center; overflow: hidden;
  background: var(--surface-2); flex: none;
}
.logo-prev img { max-width: 100%; max-height: 100%; object-fit: contain; }
.logo-prev .ph { font-size: .7rem; color: var(--muted); padding: 0 .3rem; text-align: center; }
.logo-actions { display: flex; gap: .5rem; align-items: center; }
.logo-file { cursor: pointer; }
.logo-tip { width: 100%; font-size: .72rem; color: var(--muted); line-height: 1.5; }

/* btn-success 白字落在 green-600(#16a34a) 上仅 3.3:1，未达 WCAG AA（小字需 4.5:1）。
   降到 green-700(#15803d) → 约 5.0:1，满足 AA。 */
.btn-success { background: #15803d; border-color: #15803d; }
.btn-success:hover { background: #166534; border-color: #166534; }
.btn-success:active { background: #14532d; border-color: #14532d; }

/* 我的学生选择器弹窗 */
.picker { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: .6rem; }
.picker-item {
  display: flex; flex-direction: column; gap: .28rem; text-align: left;
  padding: .6rem .7rem; border-radius: var(--r-lg);
  background: var(--surface); border: 1px solid var(--line); cursor: pointer;
  font: inherit; color: inherit; transition: border-color .15s, box-shadow .15s, transform .05s;
}
.picker-item:hover { border-color: var(--brand-200); box-shadow: 0 4px 14px rgba(37, 99, 235, .12); }
.picker-item:active { transform: translateY(1px); }
.pi-main { display: flex; align-items: baseline; gap: .45rem; }
.pi-name { font-weight: 700; font-size: .92rem; color: var(--ink-1); }
.pi-no { font-size: .68rem; color: var(--muted); font-variant-numeric: tabular-nums; }
.pi-sub { font-size: .74rem; color: var(--muted); }
.pi-grades { margin-top: .12rem; }

@media (max-width: 1300px) {
  .grade-inline { flex-wrap: nowrap; }
}

/* ---------- 右滑详情：1600px 满屏过宽，收一个舒服的阅读宽度 ---------- */
.slide-panel { max-width: 1120px; }
@media (max-width: 1120px) { .slide-panel { max-width: 100%; } }
.slide-panel .conv-box { font-size: .84rem; }

/* ---------- 加载转圈 ---------- */
svg.i.spin { animation: spin .8s linear infinite; }

/* ---------- 窄屏收敛 ---------- */
@media (max-width: 1180px) {
  .header-row { gap: .6rem; }
  .news-ticker { order: 4; flex: 1 1 100%; margin-top: .35rem; }
  .query-row .field.w-name,
  .query-row .field.w-phone { width: 138px; }
}
@media (max-width: 720px) {
  .brandline .sub { display: none; }
  .app-header { padding: .6rem .8rem; }
  .page { padding: .8rem .8rem 1.2rem; }
  .query-row .field.w-name,
  .query-row .field.w-phone { width: 100%; }
  .query-row .query-actions { margin-left: 0; width: 100%; }
  .grade-grid { grid-template-columns: repeat(auto-fill, minmax(88px, 1fr)); }
}

/* ======================================================================
   首页工作台：查询卡通栏置顶（放得下十门等第），下方为结果表（通栏）
   ====================================================================== */
.home-page { gap: 1rem; }
.home-main { flex: 1 1 auto; width: 100%; min-width: 0; display: flex; flex-direction: column; gap: 1.1rem; min-height: 0; }
.home-main > .panel { flex: 1 1 auto; min-height: 0; }

/* 头部：「高职提前招查询」改为链接回本页的徽标按钮
   尺寸与 .nav-btn 完全一致（padding/字号/字重），保证同一行等高对齐 */
.vip-badge.badge-link {
  text-decoration: none; cursor: pointer;
  padding: .34rem .85rem; font-size: .78rem; font-weight: 600; gap: .34rem;
  /* 护眼调整：实心蓝改为浅蓝底 + 深蓝字，与导航里其他浅色胶囊（绿/黄/粉/天蓝）统一 */
  background: var(--brand-100); color: var(--brand-deep); border: none;
  box-shadow: none;
  transition: background .15s ease;
}
.vip-badge.badge-link:hover { background: var(--brand-200); }
.vip-badge.badge-link:active { background: #b3d1f9; }
.vip-badge.badge-link svg.i { font-size: .82rem; color: var(--brand); }

/* 查询卡 */
.query-card {
  background: linear-gradient(180deg, #ffffff 0%, #f8fbff 100%);
  border: 1px solid var(--brand-100);
  border-radius: var(--r-2xl); padding: 1.1rem 1.25rem 1.2rem;
  box-shadow: 0 10px 30px rgba(37, 99, 235, .08);
  position: relative; overflow: hidden;
  /* 关键：不要被 flex 压缩。它是 .home-page 的 flex 子项，且有 overflow:hidden
     （自动最小尺寸为 0），若不锁住 flex-shrink 会被结果表挤到 0 高而"塌掉"，
     看上去就像结果表和头部学生信息重叠。 */
  flex: 0 0 auto;
}
.query-card::before {
  content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 4px;
  background: linear-gradient(180deg, var(--brand), #60a5fa);
}
.link-btn {
  background: none; border: none; color: var(--brand); font: inherit;
  font-size: .8rem; font-weight: 600; cursor: pointer; padding: .2rem .3rem; border-radius: var(--r-md);
}
.link-btn:hover { background: var(--brand-tint); }

/* 姓名 / 手机号 内联图标输入 */
.qc-inwrap { position: relative; display: flex; align-items: center; }
.qc-inwrap > svg.i { position: absolute; left: .72rem; color: var(--muted-2);
  font-size: .92rem; pointer-events: none; transition: color var(--t-fast); }
.qc-inwrap > .input { padding-left: 2.15rem; }
/* 查询卡输入框边框加色（品牌蓝），悬停加深 */
.qc-inwrap > .input { border-color: #93c5fd; }
.qc-inwrap > .input:hover { border-color: var(--brand); }
.qc-inwrap:focus-within > svg.i { color: var(--brand); }

.qc-fields { display: flex; flex-wrap: nowrap; align-items: center; gap: .55rem 1rem; }
.qc-fields > .field { display: flex; flex-direction: column; gap: .28rem; }
.qc-fields > .field.w-name { flex: 1 1 96px; min-width: 84px; max-width: 148px; }
.qc-fields > .field.w-phone { flex: 1 1 112px; min-width: 104px; max-width: 164px; }
/* 十门等第：把滚动限制在这一段内，左右的操作按钮始终可见 */
.qc-grades { flex: 1 1 auto; min-width: 0; overflow-x: auto; padding-bottom: .35rem; }
.qc-fields .input { width: 100%; box-sizing: border-box; }
.qc-grades .grade-inline { display: flex; flex-wrap: nowrap; gap: .35rem .7rem; align-items: center; }
/* 操作按钮组：固定在等第右侧，不随等第滚动 */
.qc-actions { flex: 0 0 auto; display: flex; align-items: center; gap: .5rem; }
.qc-actions .btn-primary { flex: 0 0 auto; }
/* 第二行：头部查询字段（院校 / 专业 / 性质 / 城市）。
   与第一行 qc-fields 用顶边框隔开；行内紧凑、淡灰底。 */
.qc-head-search {
  display: flex; align-items: center; gap: .45rem .55rem; flex-wrap: wrap;
  margin-top: .7rem; padding-top: .62rem;
  border-top: 1px dashed var(--line-3);
}
.qc-head-search .qfh-label {
  display: inline-flex; align-items: center; gap: .26rem;
  font-size: .74rem; font-weight: 700; color: var(--ink-5);
  padding: .18rem .5rem; border-radius: var(--r-pill);
  background: var(--brand-tint); color: var(--brand-deep);
  flex: 0 0 auto;
}
.qc-head-search .qfh-label svg.i { font-size: .76rem; }
.qc-head-search .qfh-field {
  display: inline-flex; align-items: center; gap: .3rem; flex: 0 1 auto; min-width: 0;
  background: #fff; border: 1px solid #93c5fd; border-radius: var(--r-md);
  padding: .18rem .42rem .18rem .5rem;
}
.qc-head-search .qfh-field:hover { border-color: var(--brand); }
.qc-head-search .qfh-field:focus-within { border-color: var(--brand); box-shadow: 0 0 0 3px var(--brand-100); }
.qc-head-search .qfh-field > label {
  font-size: .72rem; font-weight: 700; color: var(--muted);
  white-space: nowrap; letter-spacing: .02em;
}
.qc-head-search .qfh-field > .input,
.qc-head-search .qfh-field > .select {
  border: none; outline: none; box-shadow: none; background: transparent;
  padding: .18rem .1rem; font-size: .78rem; min-width: 110px;
  width: auto; flex: 1 1 auto; min-height: 0;
}
.qc-head-search .qfh-field > .input:focus,
.qc-head-search .qfh-field > .select:focus { box-shadow: none; border: none; outline: none; }
.qc-head-search .qfh-field > .select { padding-right: 1.2rem; cursor: pointer; font-weight: 700; }
.qc-head-search .qfh-reset { flex: 0 0 auto; padding: .3rem .62rem; border: 1px solid var(--line-2);
  border-radius: var(--r-pill); background: #fff; color: var(--muted); }
.qc-head-search .qfh-reset:hover { border-color: var(--brand); color: var(--brand); background: var(--brand-tint); }
/* 手机号预检提示：作为查询卡的独立整行（挂在 .qc-fields 之后）。
   挂在 140px 宽的手机号字段里会被挤成竖排窄条、盖住等第区。 */
.query-card > .uni-hint { margin-top: .6rem; }

/* ---------- 查询卡高度压缩（用户要求：上下留白、行距、与结果表间距整体收窄） ---------- */
.query-card { padding: .58rem 1rem .62rem; }
/* 第一行（姓名 / 手机 / 十门等第 / 按钮）：行内与标签间距收紧 */
.qc-fields { gap: .26rem .8rem; }
.qc-fields > .field { gap: .16rem; }
.qc-fields .input,
.qc-fields .select { padding-top: .3rem; padding-bottom: .3rem; }
.qc-grades { padding-bottom: .08rem; }
/* 第二行（查询字段）：分隔线以上/以下留白收紧 */
.qc-head-search { margin-top: .4rem; padding-top: .38rem; gap: .26rem .45rem; }
.qc-head-search .qfh-label { padding: .1rem .45rem; }
.qc-head-search .qfh-field { padding: .08rem .42rem .08rem .5rem; }
.qc-head-search .qfh-field > .input,
.qc-head-search .qfh-field > .select { padding: .12rem .1rem; }
.qc-head-search .qfh-reset { padding: .22rem .58rem; }
/* 查询卡与下方结果表之间的间距 */
.home-main { gap: .58rem; }
/* 查询卡整体上移：首页容器顶部留白由 1.1rem 收到 .3rem，
   并与页头（.app-header 下边距 .65rem）贴合，红框那一行更靠上 */
.home-page { padding-top: .3rem; gap: .7rem; }
/* 行内横向间距再收紧一点（姓名 / 手机 / 十门等第 / 按钮之间） */
.qc-fields { gap: .22rem .6rem; }
.qc-grades .grade-inline { gap: .3rem .58rem; }
.query-card > .uni-hint .auto-read { margin-left: .3rem; font-weight: 800; opacity: .85; }

/* ---------- 学生账号只读态（姓名 / 手机号 / 十门学考等第 不可修改） ---------- */
/* 触发条件：.query-card.is-locked（S.studentLock = true，见 app.js#applyStudentLock） */
.query-card.is-locked .qc-inwrap,
.query-card.is-locked .grade-select {
  background: var(--surface-3);
  border-color: var(--line-2);
  box-shadow: none;
  cursor: not-allowed;
}
.query-card.is-locked .name-input,
.query-card.is-locked .phone-input,
.query-card.is-locked .grade-select { color: var(--ink-5); cursor: not-allowed; }
.query-card.is-locked .gpair-label { color: var(--ink-5); }
/* 只读说明条：一行小字，尽量少占纵向空间 */
.qc-lock-hint {
  display: flex; align-items: center; gap: .34rem;
  margin-top: .46rem; padding: .24rem .6rem;
  font-size: .72rem; line-height: 1.35;
  background: var(--brand-tint); color: var(--ink-5); border-radius: var(--r-md);
}
.qc-lock-hint svg.i { color: var(--brand); font-size: .8rem; flex: none; }
.qc-lock-hint b { color: var(--brand-deep); }

/* 导航：我的方案数量徽标 */
.badge-count {
  display: inline-block; min-width: 1.1rem; padding: 0 .32rem; margin-left: .15rem;
  font-size: .68rem; font-weight: 800; line-height: 1.3; text-align: center;
  background: var(--brand); color: #fff; border-radius: 999px; vertical-align: middle;
}

/* 窄屏微调 */
@media (max-width: 1180px) {
  .qc-fields > .field.w-name, .qc-fields > .field.w-phone { width: 140px; }
}

/* ======================================================================
   结果表性能：定宽布局 + 固定行高 + 只挂载可视行（窗口渲染）
   459 行 × 19 列若整表挂载，DOM 会到 2 万多个节点，滚动与「选取」后的
   样式重算都会明显掉帧。改为：
     1) table-layout:fixed，列宽只由 <colgroup> 决定（与内容无关，
        因此滚动时卸载/挂载行不会引起列宽跳动）；
     2) 行高固定 56px，上下用占位行撑出总高，滚动条与整表一致；
     3) 单元格单行截断，长文本靠 title 悬停查看。
   ====================================================================== */
table.grid.result-grid { table-layout: fixed; width: 100%; }
/* 窄屏（手机/小平板）下列数过多，强制最小宽度改为横向滚动，避免被挤压到无法阅读 */
@media (max-width: 720px) { table.grid.result-grid { min-width: 900px; } }
table.grid.result-grid tbody tr {
  height: 64px;
  /* 屏外行跳过布局与绘制：459 行里只有视口内的一二十行真正参与渲染。
     行仍在 DOM 里（浏览器 Ctrl+F 照样能搜到），配合 table-layout:fixed
     的固定列宽，滚动时不会有任何列宽跳动。 */
  content-visibility: auto;
  contain-intrinsic-size: auto 64px;
}
table.grid.result-grid thead th.head-cell { padding: .42rem .3rem; }
table.grid.result-grid tbody td { padding: .36rem .38rem; }
table.grid.result-grid tbody td {
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
/* 占位行：只撑高度，不参与视觉 */
table.grid.result-grid tbody tr.vt-gap,
table.grid.result-grid tbody tr.vt-gap td {
  height: auto; padding: 0; border: 0; background: none;
}
/* 单元格单行截断（.clip）；长文本列用内层 .clip2 两行截断
   （不能直接给 td 设 -webkit-box，那会把 table-cell 挤出表格布局） */
table.grid td.clip { max-width: 100%; }
.clip2 {
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
  overflow: hidden; white-space: normal; line-height: 1.32; max-height: 2.7em;
  font-size: .68rem; color: var(--ink-3);
}
/* 单元格自由换行（不再截断）：长串无空格文本也能折行 */
.cw {
  white-space: normal; overflow-wrap: anywhere; word-break: break-word;
  line-height: 1.34; font-size: .68rem; color: var(--ink-3);
}
/* 结果表内：覆盖 td 默认 nowrap（table.grid.result-grid tbody td 优先级更高），
   确保招生计划 / 入围分 等长串无空格文本也能在固定列宽内折行 */
table.grid.result-grid tbody td.cw,
table.grid.result-grid tbody td .cw {
  white-space: normal; overflow-wrap: anywhere; word-break: break-word;
}
/* 入围分按年份拆行（检索表）：每年一条，如 26分:230 / 25分:200 / 24分:225 */
.result-grid td .qline {
  display: block; white-space: nowrap;
  line-height: 1.5; font-size: .68rem; color: var(--ink-3);
}
.result-grid td .qline .num { font-weight: 700; }
/* 需校测分：高亮配色，突出关键指标 */
.result-grid td .need-score, .num.need-score { color: var(--amber-ink); font-weight: 700; }
.cell-school .name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; display: block; }
.result-grid .school-tags { flex-wrap: nowrap; overflow: hidden; }
.result-grid .cell-major .m { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.result-grid .cell-major .fee { font-size: .66rem; color: var(--muted); margin-top: .1rem; line-height: 1.25; }
.result-grid .cell-major .fee .num { color: var(--ink-3); font-weight: 700; }
.result-grid .cell-major .ratio { font-size: .66rem; color: var(--muted); margin-top: .05rem; line-height: 1.25; }
.result-grid .cell-major .ratio .num { color: var(--ink-3); font-weight: 700; }

/* ======================================================================
   结果区清爽化：去掉外层卡片、表头内联筛选、列间竖线
   ====================================================================== */
/* 结果区不再用 .panel 卡片：直接通栏铺满内容区（表头因此顶到内容左缘） */
.result-area { flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column; }
.result-area > .table-scroll {
  flex: 1 1 auto; min-height: 0;
  border: 1px solid var(--line); border-radius: var(--r-lg);
  background: #fff;
}
/* 列间竖线（加深后的浅灰，更清晰），最后一列不加，避免与表格外框重叠 */
table.grid.result-grid { border: 1.5px solid var(--line-strong); }
table.grid.result-grid th,
table.grid.result-grid td { border-right: 1px solid var(--line-strong); }

/* 查询中骨架：点查询后即时占位，给出「正在匹配」反馈，避免网络等待时界面像卡住 */
.loading-result {
  flex: 1 1 auto; min-height: 0;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: .6rem; padding: 3rem 1rem; color: #8a93a6;
}
.lr-spin {
  width: 34px; height: 34px; border-radius: 50%;
  border: 3px solid #e2e8f0; border-top-color: #3b82f6;
  animation: lr-spin .7s linear infinite;
}
@keyframes lr-spin { to { transform: rotate(360deg); } }
.lr-t { font-size: 1rem; font-weight: 700; color: #334155; }
.lr-d { font-size: .8rem; }
table.grid.result-grid tbody td { border-bottom: 1px solid var(--line-strong); }
table.grid.result-grid th:last-child,
table.grid.result-grid td:last-child { border-right: none; }
table.grid.result-grid tbody tr:last-child td { border-bottom: none; }

/* 表头：字段名（中/左）+ 漏斗筛选图标（右） */
table.grid.result-grid thead th.head-cell {
  vertical-align: middle; padding: .54rem .3rem;
  background: linear-gradient(180deg, #ffffff 0%, var(--surface-1) 100%);
  border-bottom: 2px solid var(--brand-100);
}
.result-grid .th-label {
  display: flex; align-items: center; justify-content: center; gap: .16rem;
  font-size: .66rem; font-weight: 700; letter-spacing: .02em; color: var(--ink-5);
  line-height: 1.2; min-width: 0;
}
.result-grid th.left .th-label { justify-content: flex-start; }
.result-grid .th-txt { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* 漏斗图标按钮 */
.result-grid .th-funnel {
  flex: none; width: 1.05rem; height: 1.05rem; padding: 0; margin: 0;
  display: inline-flex; align-items: center; justify-content: center;
  border: none; background: none; border-radius: var(--r-sm); cursor: pointer;
  color: #c2ccda; transition: color .15s, background .15s;
}
.result-grid .th-funnel:hover { color: var(--brand); background: var(--brand-tint); }
.result-grid .th-funnel svg.i { font-size: .74rem; }
.result-grid .th-funnel.on { color: var(--brand); }
.result-grid .th-funnel.on svg.i { fill: var(--brand-100); }

/* 排序按钮（分差 / 需校测分 / 高考分）：默认灰，升/降序时高亮并显示方向箭头 */
.result-grid .th-sort {
  flex: none; width: 1.05rem; height: 1.05rem; padding: 0; margin: 0;
  display: inline-flex; align-items: center; justify-content: center;
  border: none; background: none; border-radius: var(--r-sm); cursor: pointer;
  color: #c2ccda; transition: color .15s, background .15s;
}
.result-grid .th-sort:hover { color: var(--brand); background: var(--brand-tint); }
.result-grid .th-sort svg.i { font-size: .74rem; }
.result-grid .th-sort.on { color: #fff; background: var(--brand); }
.result-grid .th-sort.on:hover { color: #fff; background: var(--brand-hover); }

/* 悬浮行：左侧品牌强调条 + 即时换色（无过渡，避免大表重绘掉帧） */
table.grid.result-grid tbody tr:hover td { background: var(--brand-tint); }
table.grid.result-grid tbody tr:hover td:first-child { box-shadow: inset 3px 0 0 var(--brand); }
table.grid.result-grid tbody tr.is-picked:hover td { background: #eafaf0; }
/* 操作列「选取」按钮做成胶囊，选中态更醒目 */
table.grid.result-grid td.tight .btn { border-radius: var(--r-pill); min-width: 56px; }

/* 结果表「性质 / 城市」列：去底色，仅彩色文字（与院校详情弹窗的彩色标签区分） */
.result-grid td .tcol {
  display: inline-block; font-size: .7rem; font-weight: 700; line-height: 1.18;
  text-align: center; white-space: normal;
}
.result-grid .tcol-nature { color: #1f7a45; }   /* 绿：公办/民办等 */
.result-grid .tcol-city   { color: #1a5fb4; }   /* 蓝：所在城市 */
/* 性质列：每行 2 字换行（如「一类公办」→ 一类 / 公办） */
.result-grid td.nc-nature .tcol-nature {
  max-width: 2.4em; word-break: break-all;
}

/* ---------- 表头列宽拖拽手柄 ---------- */
/* th 本身是 position:sticky（已属定位元素），可直接作为 resizer 的绝对定位包含块 */
.col-resizer {
  position: absolute; top: 0; right: 0; width: 7px; height: 100%;
  cursor: col-resize; z-index: 6; touch-action: none;
}
.col-resizer::after {
  content: ''; position: absolute; top: 0; right: 1px; width: 2px; height: 100%;
  background: transparent; transition: background .12s;
}
.col-resizer:hover::after, .col-resizer.dragging::after { background: var(--brand); }
body.col-resizing, body.col-resizing * { user-select: none !important; cursor: col-resize !important; }

/* 中职生查询表表头列宽拖拽手柄（与 .col-resizer 同视觉） */
.zz-resizer {
  position: absolute; top: 0; right: 0; width: 7px; height: 100%;
  cursor: col-resize; z-index: 6; touch-action: none;
}
.zz-resizer::after {
  content: ''; position: absolute; top: 0; right: 1px; width: 2px; height: 100%;
  background: transparent; transition: background .12s;
}
.zz-resizer:hover::after, .zz-resizer.dragging::after { background: var(--brand); }
body.zz-resizing, body.zz-resizing * { user-select: none !important; cursor: col-resize !important; }

/* ---------- 表头多选筛选浮层 ---------- */
.cf-panel {
  position: fixed; z-index: 60; width: 240px;
  background: #fff; border: 1px solid var(--line-2); border-radius: var(--r-lg);
  box-shadow: 0 12px 32px rgba(15, 23, 42, .16);
  display: flex; flex-direction: column;
  /* 高度跟随视口：短屏也能完整放下，值列表在内部滚动 */
  max-height: min(440px, calc(100vh - 88px));
  overflow: hidden;
  overscroll-behavior: contain;
  animation: cf-pop .12s ease-out;
}
@keyframes cf-pop { from { opacity: 0; transform: translateY(-4px); } to { opacity: 1; transform: none; } }
.cf-search { display: flex; align-items: center; gap: .3rem; padding: .5rem .55rem .42rem; border-bottom: 1px solid var(--line); }
.cf-search svg.i { font-size: .76rem; color: var(--muted); }
.cf-search-input {
  flex: 1 1 auto; min-width: 0; font-size: .74rem; padding: .3rem .42rem;
  border: 1px solid var(--line-2); border-radius: var(--r-sm); background: #fff; color: var(--ink-2);
}
.cf-search-input:focus { outline: none; border-color: var(--brand); box-shadow: 0 0 0 3px var(--brand-100); }
.cf-top { display: flex; align-items: center; gap: .35rem; padding: .42rem .55rem; }
.cf-count { margin-left: auto; font-size: .68rem; color: var(--muted); font-variant-numeric: tabular-nums; }
.cf-mini {
  font-size: .7rem; font-weight: 600; padding: .18rem .52rem; cursor: pointer;
  border: 1px solid var(--line-2); border-radius: var(--r-sm);
  background: var(--surface-1); color: var(--ink-4);
}
.cf-mini:hover { border-color: var(--brand-200); color: var(--brand); background: var(--brand-tint); }
.cf-list {
  flex: 1 1 auto; min-height: 0; max-height: 260px;
  overflow-y: auto; overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
  padding: .1rem .35rem .3rem;
}
.cf-item {
  display: flex; align-items: center; gap: .42rem; padding: .26rem .35rem;
  border-radius: var(--r-sm); font-size: .74rem; color: var(--ink-3); cursor: pointer;
}
.cf-item:hover { background: var(--surface-1); }
.cf-item input[type="checkbox"] { width: 15px; height: 15px; accent-color: var(--brand); flex: none; cursor: pointer; }
.cf-item span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cf-empty { padding: 1rem .5rem; text-align: center; font-size: .72rem; color: var(--muted); }
.cf-foot {
  display: flex; justify-content: flex-end; gap: .4rem;
  padding: .45rem .55rem; border-top: 1px solid var(--line); background: var(--surface-1);
}

/* 底部信息条：去掉原本属于 .panel 的白底与顶边框，保持清爽 */
.result-area .table-footer { border-top: none; background: transparent; padding: .55rem .15rem 0; }

/* 页面底部居中的机构联系条（地址 + 联系电话）
   来源：机构管理中维护的机构地址与联系电话；学生账号显示其归属志愿师所属机构的信息 */
.contact-bar {
  margin-top: 1.1rem; padding: .72rem .9rem;
  display: flex; flex-direction: column; align-items: center; gap: .3rem;
  text-align: center;
  border-top: 1px dashed var(--line-strong);
  background: linear-gradient(180deg, rgba(37, 99, 235, .035) 0%, rgba(37, 99, 235, 0) 100%);
}
.contact-bar .cb-name {
  font-size: .78rem; font-weight: 700; color: var(--ink); letter-spacing: -.01em;
}
.contact-bar .cb-items {
  display: flex; align-items: center; justify-content: center;
  gap: .5rem 1.4rem; flex-wrap: wrap;
}
/* 底栏中间：地址 + 联系电话，与「共 N 条 · 已选 M 个志愿」同一行 */
.result-area .table-footer .foot-mid {
  flex: 1 1 auto; min-width: 0;
  display: flex; align-items: center; justify-content: center;
  gap: .4rem 1.1rem; flex-wrap: wrap;
  padding: 0 .6rem;
}
/* 机构联系信息原子样式（既用于底部独立联系条，也用于底栏同行的 .foot-mid） */
.cb-item {
  display: inline-flex; align-items: center; gap: .34rem;
  font-size: .74rem; color: var(--ink-3); text-decoration: none; line-height: 1.4;
}
.cb-item svg.i { font-size: .82rem; color: var(--brand); flex: none; }
.cb-item .cb-k { color: var(--muted); }
.cb-item .cb-v { font-weight: 600; color: var(--ink-2, var(--ink)); }
.cb-item.link:hover .cb-v { color: var(--brand); text-decoration: underline; }
@media (max-width: 980px) {
  .result-area .table-footer { flex-wrap: wrap; row-gap: .4rem; }
  .result-area .table-footer .foot-mid { order: 3; flex: 1 1 100%; justify-content: flex-start; padding: 0; }
}
@media (max-width: 640px) {
  .contact-bar { padding: .7rem .5rem; }
  .contact-bar .cb-items { flex-direction: column; align-items: center; gap: .3rem; }
}
/* 底栏右侧：动作按钮整体靠右 */
.table-footer .foot-right { margin-left: auto; display: flex; align-items: center; gap: .55rem; flex-wrap: wrap; justify-content: flex-end; }

/* 结果区空状态：柔和外卡，比纯文字更精致 */
.result-area .empty {
  margin: 0; border: 1px dashed var(--line-3); border-radius: var(--r-2xl);
  background: linear-gradient(180deg, #fff, var(--surface-1));
  box-shadow: var(--sh-xs); color: var(--ink-5);
}

/* ======================================================================
   置顶菜单：我的学生（带学生数徽标）
   ====================================================================== */
.nav-btn.students { background: var(--green-bg); color: var(--green-ink); }
.nav-btn.students svg.i { color: var(--green); }
.nav-btn.students:hover { background: #d1fae5; }

/* 「高职提前招查询」导航胶囊（学生账号可见）：浅蓝底 + 深蓝字，与其他浅色胶囊统一 */
.nav-btn.home { background: var(--brand-100); color: var(--brand-deep); box-shadow: none; }
.nav-btn.home svg.i { color: var(--brand); }
.nav-btn.home:hover { background: var(--brand-200); box-shadow: none; }

/* 「中职生提前招查询」导航胶囊：青色系（与 高职=蓝/学生=绿/机构=琥珀 等区分） */
.nav-btn.zztqz { background: #cffafe; color: #155e75; }
.nav-btn.zztqz svg.i { color: var(--cyan); }
.nav-btn.zztqz:hover { background: #a5f3fc; }

/* （原「学生账号只读提示」.plan-ro-tip 已移除：学生账号现在可自行增删志愿） */

/* 方案页「自动保存」提示（已取消手动「保存方案」按钮，选取 / 移出即落库） */
.plan-auto {
  display: inline-flex; align-items: center; gap: .3rem;
  padding: .3rem .66rem; border-radius: var(--r-pill);
  font-size: .76rem; font-weight: 600;
  background: #ecfdf5; color: #065f46; border: 1px solid #a7f3d0;
}
.plan-auto.saving { background: #eff6ff; color: #1e40af; border-color: #bfdbfe; }
.plan-auto svg.i { font-size: .8rem; }

/* ======================================================================
   我的学生（#/students）：档案墙 —— 统计条 + 卡片网格
   与查询卡里的「我的学生」弹窗功能相同（载入等第并查询），版式不同。
   ====================================================================== */
.students-page { gap: 1rem; }

.stu-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(180px, 100%), 1fr)); gap: .7rem; }
.stu-stat {
  display: flex; align-items: center; gap: .65rem;
  padding: .7rem .85rem; border-radius: var(--r-xl);
  background: #fff; border: 1px solid var(--line-3);
  box-shadow: 0 2px 10px rgba(15, 54, 110, .04);
}
.stu-stat .ico {
  width: 34px; height: 34px; border-radius: var(--r-md); flex: none;
  display: flex; align-items: center; justify-content: center; font-size: .95rem;
}
.stu-stat .ico.blue  { background: var(--brand-100); color: var(--brand); }
.stu-stat .ico.green { background: var(--green-bg);  color: var(--green); }
.stu-stat .ico.pink  { background: var(--pink-bg);   color: var(--pink); }
.stu-stat .tx { min-width: 0; }
.stu-stat .k { font-size: .68rem; font-weight: 700; color: var(--muted); letter-spacing: .02em; }
.stu-stat .v { font-size: 1.15rem; font-weight: 800; color: var(--ink); line-height: 1.15;
  font-variant-numeric: tabular-nums; }

.stu-grid { display: grid; gap: .85rem;
  grid-template-columns: repeat(auto-fill, minmax(min(320px, 100%), 1fr)); }
.stu-card {
  display: flex; flex-direction: column; gap: .6rem;
  padding: .9rem 1rem; border-radius: var(--r-2xl);
  background: #fff; border: 1px solid var(--line-3);
  box-shadow: 0 3px 14px rgba(15, 54, 110, .05);
  transition: border-color .15s, box-shadow .15s, transform .08s;
}
.stu-card:hover { border-color: var(--brand-200); box-shadow: 0 8px 24px rgba(37, 99, 235, .12);
  transform: translateY(-2px); }
.stu-card-head { display: flex; align-items: center; gap: .6rem; }
.stu-avatar {
  width: 40px; height: 40px; border-radius: var(--r-lg); flex: none;
  display: flex; align-items: center; justify-content: center;
  font-size: 1.05rem; font-weight: 800; color: #fff;
  background: linear-gradient(140deg, var(--brand) 0%, #60a5fa 100%);
  box-shadow: 0 4px 10px var(--brand-shadow);
}
.stu-id { flex: 1; min-width: 0; }
.stu-id .n { font-size: .95rem; font-weight: 700; color: var(--ink);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.stu-id .m { font-size: .7rem; color: var(--muted); margin-top: .1rem;
  font-variant-numeric: tabular-nums; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.stu-meta { display: flex; flex-wrap: wrap; gap: .3rem .85rem; }
.stu-meta .mi { display: inline-flex; align-items: center; gap: .28rem;
  font-size: .7rem; color: var(--muted); min-width: 0; }
.stu-meta .mi svg.i { font-size: .74rem; color: var(--muted-2); flex: none; }
.stu-grades { padding: .5rem .55rem; border-radius: var(--r-lg);
  background: var(--surface-1); border: 1px solid var(--line-3); }
.stu-actions { display: flex; gap: .4rem; margin-top: auto; flex-wrap: wrap; }
.stu-actions .btn-danger { flex: none; }

/* 我的学生 · 列表（表格）形式 */
.stu-table-panel { margin: 0; }
.stu-table-wrap { overflow-x: auto; padding: 0; }
.stu-table { width: 100%; border-collapse: collapse; font-size: .8rem; }
.stu-table th, .stu-table td { padding: .6rem .7rem; border-bottom: 1px solid var(--line-3);
  vertical-align: middle; white-space: nowrap; }
.stu-table thead th { font-size: .72rem; font-weight: 700; color: var(--muted);
  background: var(--surface-1); position: static; }
.stu-table tbody tr:last-child td { border-bottom: none; }
.stu-table tbody tr:hover td { background: var(--brand-tint); }
.stu-table .stu-cell { display: flex; align-items: center; gap: .55rem; min-width: 150px; }
.stu-table .stu-grades-inline { max-width: 460px; white-space: normal; }
.stu-table td.num-idx { color: var(--muted); font-variant-numeric: tabular-nums; font-size: .75rem; }
.stu-table .dim { color: var(--muted); }
/* 列序：1序号 2志愿师 3学生 4学校 5建档 6等第 7方案 8状态 9操作 —— 1/5/7/8 居中 */
.stu-table td:nth-child(1), .stu-table td:nth-child(5), .stu-table td:nth-child(7), .stu-table td:nth-child(8) { text-align: center; }
.stu-table thead th:nth-child(1), .stu-table thead th:nth-child(5), .stu-table thead th:nth-child(7), .stu-table thead th:nth-child(8) { text-align: center; }

@media (max-width: 860px) {
  .stu-table .stu-grades-inline { max-width: 300px; }
}

/* 志愿方案列表（复用 .stu-table 表格风格，列居中规则不同） */
.plan-table td, .plan-table th { white-space: nowrap; }
/* 居中列（性质/城市/各分数字段/时间字段等）统一用 .c 标记 */
.plan-table td.c, .plan-table th.c { text-align: center; }
/* 长文本列（折算方式 / 综合分组成 / 测试内容）：限宽 + 两行截断（.clip2 内层） */
.plan-table td.clip-cell { white-space: normal; min-width: 120px; max-width: 210px; }
.plan-table thead th { white-space: nowrap; }
.plan-table .num.brand { color: var(--brand); font-size: .9rem; }
.plan-table .diff-pos { color: #b91c1c; font-weight: 700; }
.plan-table .diff-neg { color: #15803d; font-weight: 700; }
.plan-table .dim { color: var(--muted); }

/* ======================================================================
   志愿方案页面 · 护眼清爽重设计（scope: .plan-page）
   设计意图：豆沙灰绿护眼底 + 暖白（非纯白）卡片 + 青绿签名色，
   舒适行高、斑马纹、悬停淡染与左侧签名条，去刺眼、求整洁大气。
   ====================================================================== */
.plan-page {
  --pe-canvas:    #e7ebe5;   /* 页面护眼底：柔和豆沙灰绿，替代刺眼纯白 */
  --pe-card:      #f7f9f3;   /* 表格卡：暖白（非纯白，护眼） */
  --pe-card-2:    #eef1ea;   /* 斑马纹浅行 */
  --pe-head:      #e3e9dd;   /* 表头底：略深豆沙 */
  --pe-head-ink:  #51604f;   /* 表头/次要文字：沉稳墨绿灰 */
  --pe-line:      #d8ded1;   /* 柔和分隔线（豆沙灰） */
  --pe-line-soft: #e6ebe0;
  --pe-accent:    #3f8f7f;   /* 护眼签名青绿（替代刺眼纯蓝做页面主色） */
  --pe-accent-deep:#2e6e61;
  --pe-accent-soft:#e8f0ec;
  --pe-shadow:    rgba(45, 70, 58, .10);
  background: var(--pe-canvas);
}
/* 标题图标改用护眼青绿，弱化纯蓝 */
.plan-page .page-head h2 { color: var(--pe-accent-deep); }
.plan-page .page-head h2 svg.i { color: var(--pe-accent); }
.plan-page .page-head .desc { color: var(--pe-head-ink); }

/* 自动保存提示：柔和护眼胶囊 */
.plan-page .plan-auto {
  background: var(--pe-accent-soft); color: var(--pe-accent-deep);
  border: 1px solid #cfe2da; font-weight: 600;
}
.plan-page .plan-auto svg.i { color: var(--pe-accent); }

/* 表格外卡：暖白非纯白，柔和边与影 */
.plan-page .stu-table-panel {
  background: var(--pe-card);
  border: 1px solid var(--pe-line);
  border-radius: var(--r-2xl);
  box-shadow: 0 6px 22px var(--pe-shadow);
  overflow: hidden;
}
.plan-page .stu-table-wrap { background: var(--pe-card); }
/* 横向滚动条配护眼色 */
.plan-page .stu-table-wrap::-webkit-scrollbar-track { background: #e9eee4; }
.plan-page .stu-table-wrap::-webkit-scrollbar-thumb { background: #b8c6b6; }

/* 表头：柔和豆沙底 + 青绿下边线，字色沉稳；纵向滚动时可吸附 */
.plan-page .plan-table thead th {
  background: var(--pe-head);
  color: var(--pe-head-ink);
  font-weight: 700;
  letter-spacing: .02em;
  border-bottom: 2px solid var(--pe-accent);
  position: sticky; top: 0; z-index: 3;
}
.plan-page .plan-table thead th.c { text-align: center; }
.plan-page .plan-table thead th.left { text-align: left; }

/* 单元格：舒适内距、数字等宽对齐 */
.plan-page .plan-table th,
.plan-page .plan-table td {
  padding: .58rem .66rem;
  border-bottom: 1px solid var(--pe-line-soft);
  border-right: 1px solid var(--pe-line);   /* 竖向列框（护眼柔和豆沙线） */
  color: var(--ink-3);
}
/* 数据单元格允许换行、垂直居中（单行/短值不受影响） */
.plan-page .plan-table td { white-space: normal; vertical-align: middle; }
/* 长文本内层统一 2 行截断（直接给 td 设 -webkit-box 会破坏 table-cell 布局，故作用于内层元素） */
.plan-page .plan-table .cell2 {
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
  overflow: hidden; white-space: normal;
}
/* 宽文本列限宽，保证 2 行截断生效并控制横向滚动 */
.plan-page .plan-table td:nth-child(4) { max-width: 150px; }  /* 院校名称 */
.plan-page .plan-table td:nth-child(5) { max-width: 140px; }  /* 招生专业 */
.plan-page .plan-table td:nth-child(7) { max-width: 150px; }  /* 备注 */
/* 末列右侧与外框重合，去掉重复竖线 */
.plan-page .plan-table th:last-child,
.plan-page .plan-table td:last-child { border-right: none; }
.plan-page .plan-table td.c,
.plan-page .plan-table th.c { text-align: center; }
.plan-page .plan-table td { font-variant-numeric: tabular-nums; }

/* 斑马纹（护眼浅行）+ 悬停青绿淡染 + 左侧签名条 */
.plan-page .plan-table tbody tr:nth-child(even) td { background: var(--pe-card-2); }
.plan-page .plan-table tbody tr:hover td { background: var(--pe-accent-soft); }
.plan-page .plan-table tbody tr:hover td:first-child { box-shadow: inset 3px 0 0 var(--pe-accent); }
.plan-page .plan-table tbody tr:last-child td { border-bottom: none; }

/* 院校名称 / 专业：主信息加粗清晰 */
.plan-page .plan-table td.left b { color: var(--ink); font-weight: 700; }

/* 您的折算分：保持品牌蓝，更醒目 */
.plan-page .plan-table .num.brand { color: var(--brand); font-weight: 800; font-size: .95rem; }

/* 分差正负：柔和红绿（护眼、不过饱和） */
.plan-page .plan-table .diff-pos { color: #c0392b; font-weight: 700; }
.plan-page .plan-table .diff-neg { color: #2e7d4f; font-weight: 700; }

/* 性质/城市标签：改用护眼豆沙系，更统一 */
.plan-page .plan-table .tag-type { background: #e7efe6; color: #2f5d3f; border-color: #cfe0d2; }
.plan-page .plan-table .tag-city { background: #e6ede9; color: #2c5d56; border-color: #cfe0db; }

/* 序号列柔和 */
.plan-page .plan-table td.num-idx { color: var(--pe-head-ink); font-weight: 600; }

/* 操作按钮：细节按钮柔和化，与护眼主题呼应 */
.plan-page .plan-table .stu-actions .btn-outline { color: var(--pe-accent-deep); border-color: #cfe2da; }
.plan-page .plan-table .stu-actions .btn-outline:hover { background: var(--pe-accent-soft); border-color: var(--pe-accent); }

/* 长文本列：底色更柔 */
.plan-page .plan-table .clip2 { color: var(--ink-4); }

/* 空状态：护眼静谧 */
.plan-page .empty {
  background: var(--pe-card); border: 1px dashed var(--pe-line);
  border-radius: var(--r-2xl); color: var(--pe-head-ink);
}
.plan-page .empty .t { color: var(--pe-accent-deep); }
.plan-page .empty svg.i { color: var(--pe-accent); }

/* 关键列不被挤压：序号居中、性质/城市/操作给最小宽度，操作按钮保持一行 */
.plan-page .plan-table th:first-child,
.plan-page .plan-table td.num-idx { min-width: 46px; text-align: center; }
.plan-page .plan-table th:nth-child(2),
.plan-page .plan-table td:nth-child(2) { min-width: 88px; }
.plan-page .plan-table th:nth-child(3),
.plan-page .plan-table td:nth-child(3) { min-width: 66px; }
.plan-page .plan-table th:last-child,
.plan-page .plan-table td:last-child { min-width: 134px; }
.plan-page .plan-table .stu-actions { flex-wrap: nowrap; }

/* 一屏自适应：表格面板占满剩余高度，仅表格区内部滚动（横/纵），整页不出现滚动条 */
.plan-page { height: 100%; }
.plan-page .panel.stu-table-panel {
  flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column;
  overflow: hidden;   /* 圆角裁切内部滚动内容 */
}
.plan-page .panel.stu-table-panel > .panel-body.stu-table-wrap {
  flex: 1 1 auto; min-height: 0; overflow: auto; padding: 0;
  border-radius: 0 0 var(--r-2xl) var(--r-2xl);
}
/* 空状态也撑满一屏并居中 */
.plan-page > .empty {
  flex: 1 1 auto; min-height: 0; display: flex; flex-direction: column;
  align-items: center; justify-content: center;
}
/* 表头吸顶：纵向滚动时列名常驻，横向滚动照常 */
.plan-page .plan-table thead th {
  position: sticky; top: 0; z-index: 3; background: var(--pe-head);
}


/* ======================================================================
   机构管理：卡片式分区（机构标识 / 基本信息 / 账号信息）
   ====================================================================== */
.org-page { gap: 1rem; }
.org-new-hint {
  display: flex; align-items: flex-start; gap: .5rem;
  margin: 0 .2rem; padding: .7rem .85rem;
  background: #eef6ff; border: 1px solid #bcd5f0; color: #16477e;
  border-radius: var(--r-lg); font-size: .78rem; line-height: 1.5;
}
.org-new-hint > svg.i { flex: none; margin-top: .1rem; color: #2563eb; }
.org-new-hint > span { min-width: 0; }
.org-hero { display: flex; align-items: center; gap: .7rem; min-width: 0; }
.org-avatar {
  width: 46px; height: 46px; border-radius: var(--r-lg); flex: none; overflow: hidden;
  display: flex; align-items: center; justify-content: center;
  background: linear-gradient(140deg, var(--brand) 0%, #60a5fa 100%);
  color: #fff; font-size: 1.15rem; box-shadow: 0 4px 12px var(--brand-shadow);
}
.org-avatar img { width: 100%; height: 100%; object-fit: cover; background: #fff; display: block; }
.org-hero-tx { min-width: 0; }
.org-hero-tx h2 { font-size: 1.15rem; }
.org-hero-tx .desc { font-size: .74rem; color: var(--muted); margin-top: .15rem; }

.org-grid {
  display: grid; gap: .85rem; align-items: start;
  grid-template-columns: minmax(280px, 1fr) minmax(340px, 1.35fr);
}
.org-card {
  background: #fff; border: 1px solid var(--line-3); border-radius: var(--r-2xl);
  box-shadow: 0 3px 14px rgba(15, 54, 110, .05); overflow: hidden; min-width: 0;
}
/* 左列上下堆两张，右列基本信息通高 */
.org-card:nth-of-type(1) { grid-column: 1; grid-row: 1; }
.org-card:nth-of-type(2) { grid-column: 2; grid-row: 1 / span 2; }
.org-card:nth-of-type(3) { grid-column: 1; grid-row: 2; }
.org-card-head {
  display: flex; align-items: center; gap: .45rem;
  padding: .75rem 1rem; border-bottom: 1px solid var(--line);
  background: linear-gradient(180deg, #fff 0%, var(--surface-1) 100%);
}
.org-card-head > svg.i { color: var(--brand); font-size: .92rem; }
.org-card-head h3 { font-size: .88rem; font-weight: 700; color: var(--ink); }
.org-card-hint { margin-left: auto; font-size: .68rem; color: var(--muted-2); }
.org-card-body { padding: 1rem; }

.org-form { display: grid; grid-template-columns: 1fr 1fr; gap: .7rem .9rem; }
.org-field { display: flex; flex-direction: column; gap: .28rem; min-width: 0; }
.org-field.full { grid-column: 1 / -1; }
.org-field > label { font-size: .68rem; font-weight: 700; color: var(--muted); letter-spacing: .02em; }
.org-field .input { font-size: .82rem; }

.org-stats { display: grid; grid-template-columns: 1fr 1fr; gap: .55rem; }

/* 账号信息卡里的「修改注册信息」分区：标题条 + 底部说明/按钮行 */
.prof-sep {
  display: flex; align-items: center; gap: .34rem;
  margin: .9rem 0 .6rem; padding-top: .7rem;
  border-top: 1px dashed var(--line-2);
  font-size: .74rem; font-weight: 700; color: var(--ink-4); letter-spacing: .02em;
}
.prof-sep svg.i { font-size: .84rem; color: var(--brand); flex: none; }
.prof-foot {
  margin-top: .8rem; padding-top: .7rem; border-top: 1px dashed var(--line-2);
  display: flex; align-items: center; justify-content: space-between; gap: .8rem;
  flex-wrap: wrap;
}
.prof-tip {
  display: flex; align-items: flex-start; gap: .34rem;
  flex: 1 1 220px; min-width: 0;
  font-size: .7rem; line-height: 1.5; color: var(--muted);
}
.prof-tip svg.i { font-size: .78rem; color: var(--amber); flex: none; margin-top: .12rem; }
@media (max-width: 640px) {
  .prof-foot { flex-direction: column; align-items: stretch; }
  .prof-foot .btn { width: 100%; justify-content: center; }
}
.org-stat { display: flex; align-items: center; gap: .55rem; padding: .55rem .65rem;
  border-radius: var(--r-lg); background: var(--surface-1); border: 1px solid var(--line-3); min-width: 0; }
.org-stat .ico { width: 30px; height: 30px; border-radius: var(--r-md); flex: none;
  display: flex; align-items: center; justify-content: center; font-size: .85rem; }
.org-stat .ico.blue  { background: var(--brand-100); color: var(--brand); }
.org-stat .ico.green { background: var(--green-bg);  color: var(--green); }
.org-stat .ico.pink  { background: var(--pink-bg);   color: var(--pink); }
.org-stat .ico.gray  { background: var(--surface-3); color: var(--ink-4); }
.org-stat .tx { min-width: 0; }
.org-stat .k { font-size: .64rem; font-weight: 700; color: var(--muted); }
.org-stat .v { font-size: .92rem; font-weight: 800; color: var(--ink); line-height: 1.2;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* 会员服务卡片（第 4 张，左列第 3 行；学生不可见故不渲染） */
.org-card:nth-of-type(4) { grid-column: 1; grid-row: 3; }
.org-actions { display: flex; flex-direction: column; gap: .6rem; margin-top: .2rem; }
.org-action { display: flex; align-items: center; gap: .8rem; width: 100%; text-align: left;
  padding: .7rem .85rem; border: 1px solid var(--line-3); border-radius: var(--r-lg);
  background: #fff; cursor: pointer; transition: var(--t-fast); }
.org-action:hover { border-color: var(--brand); background: var(--surface-1); }
.oa-ico { width: 34px; height: 34px; border-radius: var(--r-md); flex: none;
  display: flex; align-items: center; justify-content: center; font-size: 1rem; }
.oa-ico.gold { background: var(--amber-bg); color: var(--amber); }
.oa-ico.blue { background: var(--brand-100); color: var(--brand); }
.oa-tx { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.oa-tx b { font-size: .86rem; color: var(--ink); }
.oa-tx small { font-size: .68rem; color: var(--muted-2); }
.oa-arrow { color: var(--muted-2); }

/* 充值弹窗 */
.plan-box { border: 1px solid var(--line-3); border-radius: var(--r-2xl); padding: 1rem;
  text-align: center; background: linear-gradient(180deg, #fff, var(--surface-1)); }
.plan-box.popular { border-color: var(--amber); }
.plan-name { font-weight: 700; color: var(--ink); font-size: .9rem; }
.plan-price { font-size: 1.6rem; font-weight: 800; color: var(--ink); margin: .3rem 0; }
.plan-price small { font-size: .8rem; font-weight: 600; color: var(--muted); }
.plan-desc { font-size: .72rem; color: var(--muted-2); }
.recharge-qr { text-align: center; margin-top: 1rem; }
.recharge-qr .qr-img { width: 200px; height: 200px; margin: 0 auto; display: block;
  border: 1px solid var(--line-3); border-radius: var(--r-lg); background: #fff; padding: 6px; }
.recharge-qr .qr-tip { font-size: .74rem; color: var(--muted); margin-top: .5rem; }
.recharge-qr .qr-order { font-size: .66rem; color: var(--muted-2); margin-top: .3rem;
  word-break: break-all; }
.recharge-records { margin-top: 1rem; }
.rec-head { display: flex; justify-content: space-between; font-size: .74rem; color: var(--ink-2);
  font-weight: 700; margin-bottom: .4rem; }
.rec-sub { color: var(--muted-2); font-weight: 500; }
.rec-empty { font-size: .74rem; color: var(--muted-2); padding: .4rem 0; }
.rec-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .35rem; }
.rec-item { display: flex; align-items: center; gap: .5rem; font-size: .76rem; padding: .4rem .55rem;
  border: 1px solid var(--line-3); border-radius: var(--r-md); background: var(--surface-1); }
.rec-plan { flex: 1; min-width: 0; color: var(--ink-2); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rec-amt { color: var(--green); font-weight: 700; }
.rec-time { color: var(--muted-2); font-size: .66rem; }

/* 客服弹窗 */
.svc-opt { display: flex; align-items: center; gap: .8rem; width: 100%; text-align: left;
  padding: .8rem .9rem; border: 1px solid var(--line-3); border-radius: var(--r-lg);
  background: #fff; cursor: pointer; margin-bottom: .6rem; }
.svc-opt.disabled { opacity: .6; cursor: default; }
.svc-opt.svc-qr { cursor: default; flex-wrap: wrap; }
.svc-ico { width: 32px; height: 32px; border-radius: var(--r-md); flex: none;
  display: flex; align-items: center; justify-content: center; background: var(--brand-100); color: var(--brand); font-size: 1rem; }
.svc-tx { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.svc-tx b { font-size: .86rem; color: var(--ink); }
.svc-tx small { font-size: .7rem; color: var(--muted-2); }
.svc-arrow { color: var(--muted-2); }
.svc-qr-img { width: 150px; height: 150px; object-fit: contain; border: 1px solid var(--line-3);
  border-radius: var(--r-md); background: #fff; margin-top: .5rem; }

/* ======================================================================
   页面自适应（响应式）
   宽表仍保留固定列宽 + 容器内横向滚动（窗口渲染依赖固定列宽），
   这里负责让外壳、查询卡、卡片网格在不同宽度下都不溢出、不错位。
   ====================================================================== */

/* 中屏：机构管理收成单列 */
@media (max-width: 1080px) {
  .org-grid { grid-template-columns: 1fr; }
  .org-card:nth-of-type(1),
  .org-card:nth-of-type(2),
  .org-card:nth-of-type(3) { grid-column: auto; grid-row: auto; }
}

/* 窄屏：查询卡改纵向流式，等第区独占一行 */
@media (max-width: 900px) {
  .app-header { padding: .6rem 1rem .55rem; }
  .page { padding: .9rem 1rem 1.2rem; }
  .brandline h1 { font-size: 1rem; }
  .nav-actions { width: 100%; margin-left: 0; justify-content: flex-start; }
  .qc-fields { flex-wrap: wrap; row-gap: .6rem; align-items: flex-end; }
  .qc-grades { flex: 1 1 100%; min-width: 0; overflow: visible; }
  .qc-grades .grade-inline { flex-wrap: wrap; }
  .qc-actions { order: 5; width: 100%; }
  .qc-actions .btn-primary { flex: 1; justify-content: center; }
  .result-area > .table-scroll { border-radius: var(--r-md); }
}

/* 手机：单列卡片、控件满宽 */
@media (max-width: 720px) {
  .page { padding: .8rem .8rem 1rem; gap: .75rem; }
  .qc-fields > .field.w-name,
  .qc-fields > .field.w-phone { width: calc(50% - .3rem); }
  .qc-actions { width: 100%; }
  .qc-actions .btn-primary { flex: 1; justify-content: center; }
  .stu-grid, .stu-stats { grid-template-columns: 1fr; }
  .org-form, .org-stats { grid-template-columns: 1fr; }
  .cf-panel { width: min(320px, calc(100vw - 24px)); }
  .table-footer { flex-wrap: wrap; row-gap: .4rem; }
  .modal.wide { max-width: 100%; }
}

@media (max-width: 480px) {
  .qc-fields > .field.w-name,
  .qc-fields > .field.w-phone { width: 100%; }
  .brandline .logo,
  .brandline .logo .logo-img { width: 32px; height: 32px; }
  .brandline h1 { font-size: .92rem; }
  .page-head h2 { font-size: 1.02rem; }
  .stu-actions .btn-primary { flex: 1; justify-content: center; }
}

/* ============ 院校参考静态区块（院校介绍 / 王牌专业 / 专业就业方向） ============ */
.intro-section {
  background: linear-gradient(180deg, var(--brand-tint, #f5f8ff), #fff 62%);
  border: 1px solid var(--brand-200, #d7e3f7);
  box-shadow: inset 0 1px 0 #fff;
}
.intro-section > h4 { display: flex; align-items: center; gap: .42rem; }
.intro-tag {
  font-size: .66rem; font-weight: 600; letter-spacing: .02em;
  color: var(--brand-deep, #2b4a7a); background: var(--brand-100, #e7effb);
  border: 1px solid var(--brand-200, #d7e3f7);
  padding: .1rem .44rem; border-radius: 999px; white-space: nowrap;
}
.intro-grid {
  display: grid; gap: .65rem; margin-top: .6rem;
  grid-template-columns: repeat(3, 1fr);
}
.intro-card {
  background: var(--surface, #fff); border: 1px solid var(--brand-150, #e2ebf8);
  border-radius: var(--r-md, 12px); padding: .6rem .72rem;
  display: flex; flex-direction: column; min-width: 0;
}
.intro-card-wide { grid-column: 1 / -1; }
.intro-h {
  display: flex; align-items: center; gap: .36rem;
  font-size: .82rem; font-weight: 700; color: var(--brand-ink, #1f3a63);
  margin-bottom: .42rem;
}
.intro-h svg.i { color: var(--brand, #3563c1); flex: none; }
.intro-b {
  font-size: .82rem; line-height: 1.65; color: var(--ink-3, #45506a);
  flex: 1; min-width: 0; word-break: break-word; text-align: justify;
}
.intro-empty { color: var(--ink-5, #9aa3b5); font-style: italic; }
/* 院校简介：长文本默认收起 4 行，点「展开全文」展开 */
.intro-b.clamp {
  display: -webkit-box; -webkit-line-clamp: 4; -webkit-box-orient: vertical;
  overflow: hidden;
}
.intro-more {
  align-self: flex-start; margin-top: .42rem;
  display: inline-flex; align-items: center; gap: .18rem;
  font-size: .74rem; font-weight: 700; color: var(--brand, #3563c1);
  background: var(--brand-50, #f3f7fe); border: 1px solid var(--brand-150, #e2ebf8);
  border-radius: 999px; padding: .14rem .5rem; cursor: pointer;
}
.intro-more:hover { background: var(--brand-100, #e7effb); }
.intro-more svg.i { width: 13px; height: 13px; transition: transform .18s ease; }
.intro-more.is-open svg.i { transform: rotate(180deg); }
/* 就业岗位标签云（t_time.gangwei 文本切分） */
.job-chips { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: .34rem; }
.job-chip {
  font-size: .76rem; font-weight: 600; color: var(--brand-deep, #2b4a7a);
  background: var(--brand-50, #f3f7fe); border: 1px solid var(--brand-150, #e2ebf8);
  border-radius: 999px; padding: .16rem .5rem; max-width: 100%;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
/* 就业岗位：岗位/行业/地区/就业率/薪资 */
.jobs-box { padding: 0; }
.jobs-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .42rem; }
.job-item {
  display: flex; align-items: center; justify-content: space-between; gap: .5rem;
  background: var(--brand-50, #f3f7fe); border: 1px solid var(--brand-150, #e2ebf8);
  border-radius: 8px; padding: .3rem .5rem; min-width: 0;
}
.job-name { font-size: .8rem; color: var(--brand-ink, #1f3a63); font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.job-pct {
  flex: none; font-size: .72rem; font-weight: 700; color: #c0392b;
  background: #fdecea; border: 1px solid #f6c9c4; border-radius: 999px;
  padding: .04rem .42rem; white-space: nowrap;
}
/* 键值式要点：就业岗位 / 主要行业 / 就业地区 / 就业率 / 平均薪资 */
.jobfacts { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: .34rem; }
.jobfact {
  display: flex; align-items: center; gap: .5rem;
  background: var(--brand-50, #f3f7fe); border: 1px solid var(--brand-150, #e2ebf8);
  border-radius: 8px; padding: .3rem .5rem; min-width: 0;
}
.jobfact-k {
  flex: none; font-size: .72rem; font-weight: 700; color: var(--brand-deep, #2b4a7a);
  background: var(--brand-100, #e7effb); border: 1px solid var(--brand-200, #d7e3f7);
  border-radius: 6px; padding: .06rem .4rem; white-space: nowrap;
}
.jobfact-v {
  font-size: .8rem; color: var(--ink-3, #45506a); font-weight: 600; min-width: 0;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.jobfact-src { margin-top: .4rem; font-size: .7rem; color: var(--ink-5, #9aa3b5); }
@media (max-width: 600px) {
  .intro-grid { grid-template-columns: 1fr; }
  .intro-card-wide { grid-column: auto; }
}

/* ======================================================================
   检索页（#/home）护眼色调（2026-09-18）
   长时间查表容易眼疲劳：整页换成低饱和豆沙绿画布，查询卡 / 结果表
   表头 / 悬浮行同步转浅绿系；红色警示、等第彩色胶囊等功能色保持不变。
   只作用于 .home-page，其他页面（方案 / 学生 / 机构）不受影响。
   ====================================================================== */
.home-page {
  background: linear-gradient(180deg, #f4f8f1 0%, #edf4e8 100%);
}
/* 查询卡：白底 + 浅绿描边 + 柔和阴影，左侧竖条由亮蓝改青绿渐变 */
.home-page .query-card {
  background: linear-gradient(180deg, #ffffff 0%, #f7fbf4 100%);
  border-color: #d7e6d0;
  box-shadow: 0 10px 30px rgba(74, 124, 74, .08);
}
.home-page .query-card::before {
  background: linear-gradient(180deg, #7fae7f 0%, #b9d9b0 100%);
}
/* 查询卡输入框 / 第二行筛选字段：亮蓝边框改灰绿 */
.home-page .qc-inwrap > .input { border-color: #bdd6b6; }
.home-page .qc-inwrap > .input:hover { border-color: #7fae7f; }
.home-page .qc-head-search .qfh-field { border-color: #c8dcc2; }
.home-page .qc-head-search .qfh-field:hover,
.home-page .qc-head-search .qfh-field:focus-within {
  border-color: #7fae7f;
  box-shadow: 0 0 0 3px rgba(127, 174, 127, .14);
}
.home-page .qc-head-search .qfh-label { background: #edf5ea; color: #3d6b2f; }
.home-page .qc-head-search .qfh-reset:hover {
  border-color: #7fae7f; color: #3d6b2f; background: #edf5ea;
}
/* 结果表：表头浅绿渐变，悬浮行白 → 浅豆沙绿（已选行仍偏绿，不受影响） */
.home-page .result-area > .table-scroll { background: #fdfefc; }
.home-page table.grid.result-grid thead th.head-cell {
  background: linear-gradient(180deg, #f3f8ee 0%, #e9f2e2 100%);
  border-bottom: 2px solid #d5e6ca;
}
.home-page table.grid.result-grid tbody tr:hover td { background: #f0f7e9; }
/* 筛选浮层 hover 同步柔绿 */
.home-page .cf-item:hover { background: #f0f7e9; }
/* 滚动条颜色同步（结果表滚动条；页面主滚动条为各页共用，保持不变） */
.home-page .table-scroll { scrollbar-color: #a9c4a1 #edf3e6; }

/* ===== 系统管理员 · 用户管理 ===== */
.users-page { padding: 18px 22px 40px; max-width: 1080px; margin: 0 auto; }
.users-head { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; margin-bottom: 16px; }
.users-head h2 { font-size: 20px; margin: 0; color: #284b1f; }
.users-tabs { display: inline-flex; gap: 6px; }
.utab { border: 1px solid #cfe0c4; background: #f4f8ef; color: #4d6b3f; padding: 7px 14px; border-radius: 8px; cursor: pointer; font-size: 14px; }
.utab.active { background: #3d6b2f; color: #fff; border-color: #3d6b2f; }
.users-search { margin-left: auto; display: inline-flex; gap: 8px; }
.users-kw { width: 240px; padding: 8px 10px; border: 1px solid #d3e0c8; border-radius: 8px; font-size: 14px; }
.users-table { width: 100%; border-collapse: collapse; background: #fff; border-radius: 10px; overflow: hidden; box-shadow: 0 1px 6px rgba(60,90,40,.08); }
.users-table th, .users-table td { padding: 10px 12px; text-align: left; border-bottom: 1px solid #eef2e8; font-size: 13.5px; }
.users-table thead th { background: linear-gradient(180deg,#f3f8ee,#e9f2e2); color: #356a2a; font-weight: 600; border-bottom: 2px solid #d5e6ca; }
.users-table tbody tr:hover td { background: #f6faf1; }
.users-table td.ops { white-space: nowrap; }
.users-table .link-btn { margin-right: 8px; }
.empty { padding: 40px; text-align: center; color: #9aab90; }
.users-page .muted { color: #9aab90; font-size: 12.5px; margin-top: 8px; }

/* ===================== 中职生提前招查询页 ===================== */
.zztqz-page { padding: .6rem 1.6rem 1.4rem; max-width: none; margin: 0; gap: 0; }
.zztqz-head { margin-bottom: .3rem; }
.zztqz-head h2 { display: flex; align-items: center; gap: .5rem; font-size: 22px; line-height: 1.1; margin: 0; color: #284b1f; }
.zztqz-head h2 svg { width: 22px; height: 22px; color: var(--brand); }
.zztqz-head .zztqz-sub { font-size: 13.5px; font-weight: 400; color: var(--muted); margin-left: .8rem; }
.zztqz-filter { display: flex; flex-wrap: wrap; gap: .6rem; align-items: center; margin-bottom: .45rem; }
.zztqz-filter .input { width: 260px; }
.zztqz-filter .select { width: auto; min-width: 150px; max-width: 220px; flex: 0 1 auto; }
.zztqz-list { min-height: 120px; }
.zztqz-table-wrap { border: 1px solid var(--line, #e2e8f0); border-radius: 12px; background: #fff; box-shadow: 0 6px 20px -16px rgba(15,23,42,.35); overflow: visible; }
/* overflow:visible 后最后一行补圆角，保持外框观感 */
.zztqz-table tbody tr:last-child td:first-child { border-bottom-left-radius: 11px; }
.zztqz-table tbody tr:last-child td:last-child { border-bottom-right-radius: 11px; }
.zztqz-table { width: 100%; table-layout: fixed; border-collapse: collapse; font-size: 13px; }
.zztqz-table colgroup col { width: auto; }
.zztqz-table thead th { position: sticky; top: 0; z-index: 5; background: linear-gradient(180deg,#eef6e8,#e2efd8); color: #2f6424; font-weight: 600; border-bottom: 2px solid #cfe3c0; border-right: 1px solid #cfe3c0; text-align: left; padding: 0; white-space: normal; line-height: 1.25; }
.zztqz-table thead th .th-box { display: flex; align-items: center; justify-content: center; gap: .3rem; padding: 7px 8px; }
.zztqz-table thead th .th-txt { flex: 1 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; text-align: center; }
.zztqz-table thead th.c .th-box { justify-content: center; }
.zztqz-table td { padding: 5px 9px; border-bottom: 1px solid #eef2e8; border-right: 1px solid #eef2e8; vertical-align: middle; text-align: left; line-height: 1.3; overflow: hidden; }
.zztqz-table tbody tr:nth-child(even) td { background: #fafdf6; }
.zztqz-table td.c { text-align: center; white-space: nowrap; }
.zztqz-table thead th:last-child,
.zztqz-table td:last-child { border-right: none; }
.zztqz-table td.wrap { white-space: normal; word-break: break-word; }
.zztqz-table tbody tr:hover td { background: #eef7e8; }
.zztqz-table td span { display: block; }
.zztqz-table td .ml { line-height: 1.28; }
.zztqz-table td .ml:first-child { font-weight: 600; color: #2f6424; }
.zztqz-table td span.br2 { display: inline-block; line-height: 1.32; white-space: normal; word-break: break-word; }
/* 院校名称下方的自定义标签：与首页同款，但需抵消 td span{display:block} 的竖排 */
.zztqz-table td .school-tags { margin-top: 2px; }
.zztqz-table td .school-tags .tag { display: inline-block; font-size: .58rem; padding: 0 .34rem; }
/* 底色提亮：淡蓝灰 → 明亮天蓝，密集表格中也清晰可辨 */
.zztqz-table td .school-tags .tag-school { background: #dbeafe; color: #1d4ed8; border-color: #bfdbfe; }
/* 专业名称下方的专升本类别：小号绿字（区别于院校名称的蓝色标签），与首页 zsbOf 同值 */
.zztqz-table td .major-zsb { margin-top: 2px; font-size: .58rem; font-weight: 600; color: #166534; line-height: 1.45; word-break: break-word; }
/* 专业名称整格可点：点击打开「专升本详情」弹窗 */
.zztqz-table td.zz-major-cell { cursor: pointer; }
.zztqz-table td.zz-major-cell:hover span { color: var(--brand, #2f6424); text-decoration: underline; }

/* ========== 专升本详情弹窗（数据来源 zhiyuan 库 t_zsb_*） ========== */
.zsb-modal { max-width: 920px; width: calc(100vw - 3rem); }
.zsb-modal .modal-body { max-height: min(72vh, 640px); overflow: auto; padding: .9rem 1.1rem 1.1rem; }
.zsb-sec { margin-bottom: 1.1rem; }
.zsb-sec:last-child { margin-bottom: 0; }
.zsb-sec h4 { margin: 0 0 .45rem; font-size: .82rem; color: #2f6424; display: flex; align-items: baseline; gap: .5rem; }
.zsb-sec .zsb-sec-sub { font-size: .68rem; font-weight: 500; color: var(--muted, #8a9a82); }
/* 弹窗头部：专业名上色 + 考试科目徽标（按专升本类别映射：语文/数学 + 英语） */
.zsb-modal .modal-head .sub { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem; }
.zsb-modal .modal-head .zsb-major-name { color: #2f6424; font-weight: 700; }
.zsb-modal .modal-head .zsb-subjects { font-size: .68rem; font-weight: 600; color: #1d4ed8; background: #dbeafe; border: 1px solid #bfdbfe; border-radius: 999px; padding: .04rem .55rem; }
/* 多类别考试科目：类别名加粗 + 组间逗号分隔 */
.zsb-subjects .zsb-subj-grp b { color: #1e3a8a; font-weight: 700; }
.zsb-subjects .zsb-subj-grp b::after { content: ' '; }
.zsb-subjects .zsb-subj-sep { color: #93c5fd; margin: 0 .05rem; }
.zsb-cats { display: flex; flex-wrap: wrap; gap: .3rem; }
/* 可报考本科专业：类别 → 专业芯片（来自 t_zsb_plan 2026 年招生计划） */
.zsb-catmajors { max-height: 264px; overflow: auto; border: 1px solid #e3ecdd; border-radius: 8px; background: #fcfdf9; }
.zsb-cm-row { display: flex; gap: .6rem; padding: .45rem .6rem; border-bottom: 1px dashed #e3ecdd; }
.zsb-cm-row:last-child { border-bottom: none; }
.zsb-cm-cat { flex: none; width: 4.6rem; font-size: .72rem; font-weight: 700; color: #2f6424; display: flex; align-items: baseline; gap: .3rem; }
.zsb-cm-cat .zsb-cm-n { font-size: .62rem; font-weight: 600; color: var(--muted, #8a9a82); }
.zsb-cm-list { flex: 1; display: flex; flex-wrap: wrap; gap: .28rem; align-content: flex-start; }
.zsb-cm-chip { border: 1px solid #d5e3cc; background: #fff; color: #4a6b40; border-radius: 999px; font-size: .66rem; line-height: 1.5; padding: .02rem .5rem; cursor: pointer; transition: border-color .15s, color .15s, background .15s; }
.zsb-cm-chip:hover { border-color: #2f6424; color: #2f6424; background: #f2f8ec; }
.zsb-cm-chip.me { background: #2f6424; border-color: #2f6424; color: #fff; font-weight: 600; }
/* 有关联备注条件的芯片：虚线下划线暗示悬停可看条件全文 */
.zsb-cm-chip.hc { text-decoration: underline dotted; text-decoration-color: #9ab592; text-underline-offset: 2px; }
/* 关联备注条件筛选栏 */
.zsb-cond-bar { display: flex; flex-wrap: wrap; gap: .35rem; margin-bottom: .45rem; }
.zsb-cond-input { flex: 1; min-width: 12rem; border: 1px solid #d5e3cc; border-radius: 999px; font-size: .7rem; padding: .18rem .7rem; outline: none; background: #fff; color: #334; }
.zsb-cond-input:focus { border-color: #2f6424; }
.zsb-cond-btn { border: 1px solid #2f6424; background: #2f6424; color: #fff; border-radius: 999px; font-size: .68rem; font-weight: 600; padding: .18rem .8rem; cursor: pointer; }
.zsb-cond-btn.ghost { background: #fff; color: #2f6424; }
.zsb-cond-btn:hover { filter: brightness(1.08); }
.zsb-none { font-size: .74rem; color: var(--muted, #8a9a82); padding: .3rem 0; }
.zsb-table { width: 100%; border-collapse: collapse; font-size: .72rem; }
.zsb-table th, .zsb-table td { border: 1px solid #e3ecdd; padding: .3rem .45rem; text-align: left; }
.zsb-table thead th { background: #f2f8ec; color: #3c5a33; font-weight: 600; white-space: nowrap; }
.zsb-table td.c, .zsb-table th.c { text-align: center; }
.zsb-table td.num { font-variant-numeric: tabular-nums; }
.zsb-table td.k { font-weight: 600; color: #2f6424; white-space: nowrap; }
.zsb-table td.wrap { white-space: normal; word-break: break-word; min-width: 90px; }
/* 长文本（英语要求/备注/全省备注）最多 3 行，悬停看全文 */
.zsb-clip { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.zsb-table tbody tr:nth-child(even) td { background: #fafdf6; }
.zsb-scroll { max-height: 300px; overflow: auto; border: 1px solid #e3ecdd; }
.zsb-scroll .zsb-table th, .zsb-scroll .zsb-table td { border-left: none; border-right: none; }
.zsb-scroll .zsb-table thead th { position: sticky; top: 0; z-index: 1; }
.zsb-tabs { display: flex; flex-wrap: wrap; gap: .3rem; margin-bottom: .45rem; }
.zsb-tab { border: 1px solid #d5e3cc; background: #fff; color: #4a6b40; border-radius: 999px; font-size: .68rem; font-weight: 600; padding: .12rem .6rem; cursor: pointer; }
.zsb-tab.on { background: #2f6424; border-color: #2f6424; color: #fff; }
/* 表头漏斗筛选按钮（独立于结果表的 .th-funnel，避免共用 S.colFilters 状态） */
.zz-funnel {
  flex: none; width: 1.05rem; height: 1.05rem; padding: 0; margin: 0;
  display: inline-flex; align-items: center; justify-content: center;
  border: none; background: none; border-radius: var(--r-sm, 6px); cursor: pointer;
  color: #b6c2b0; transition: color .15s, background .15s;
}
.zz-funnel svg.i { font-size: .74rem; }
.zz-funnel:hover { color: var(--brand, #3f9d4f); background: var(--brand-tint, #eaf6ee); }
.zz-funnel.on { color: var(--brand, #3f9d4f); }
.zz-funnel.on svg.i { fill: var(--brand-100, #d6efdc); }
.zztqz-count { margin-top: .7rem; color: var(--muted); font-size: 12.5px; }
.loading { padding: 40px; text-align: center; color: #9aab90; }
.zztqz-list .empty.err { color: var(--red); }

/* ======================================================================
   引流端（获客）模块
   ====================================================================== */
.drain-page { gap: 1rem; }
.drain-hero { display: flex; align-items: center; gap: .7rem; min-width: 0; }
.drain-hero-ico {
  width: 46px; height: 46px; border-radius: var(--r-lg); flex: none; overflow: hidden;
  display: flex; align-items: center; justify-content: center;
  background: linear-gradient(140deg, #7c3aed 0%, #a855f7 100%);
  color: #fff; font-size: 1.2rem; box-shadow: 0 4px 12px rgba(124, 58, 237, .28);
}
.drain-hero h2 { font-size: 1.15rem; }
.drain-hero .desc { font-size: .74rem; color: var(--muted); margin-top: .15rem; }

.drain-tabs { display: flex; flex-wrap: wrap; gap: .4rem; }
.dtab {
  padding: .5rem .95rem; border-radius: 999px; border: 1px solid var(--line-3);
  background: #fff; color: var(--ink); cursor: pointer; font-size: .85rem;
  transition: all .15s; white-space: nowrap;
}
.dtab:hover { border-color: #c4b5fd; color: #7c3aed; }
.dtab.active {
  background: linear-gradient(140deg, #7c3aed, #a855f7); color: #fff; border-color: transparent;
  box-shadow: 0 4px 12px rgba(124, 58, 237, .28);
}

.drain-body { min-height: 200px; }
.drain-card {
  background: #fff; border: 1px solid var(--line-3); border-radius: var(--r-2xl);
  box-shadow: 0 3px 14px rgba(15, 54, 110, .05); overflow: hidden; min-width: 0;
}
.drain-card-head {
  display: flex; align-items: center; gap: .5rem; padding: .9rem 1.1rem;
  border-bottom: 1px solid var(--line-2);
}
.drain-card-head svg.i { font-size: 1.05rem; color: #7c3aed; }
.drain-card-head h3 { font-size: 1rem; margin: 0; }
.drain-card-hint { margin-left: auto; font-size: .72rem; color: var(--muted); }
.drain-card-body { padding: 1.05rem 1.1rem; }

.drain-field { margin-bottom: .85rem; }
.drain-field > label { display: block; font-size: .78rem; color: var(--muted); margin-bottom: .35rem; }
.drain-code {
  display: inline-flex; align-items: center; padding: .35rem .8rem; border-radius: var(--r-md);
  background: #f3edff; color: #6d28d9; font-weight: 700; letter-spacing: 1px; font-size: 1rem;
}
.drain-link-row { display: flex; gap: .5rem; }
.drain-link-row .input { flex: 1; background: #f7f8fb; }
.drain-switch-row { display: flex; align-items: center; gap: .7rem; }
.drain-switch { position: relative; display: inline-block; width: 44px; height: 24px; flex: none; cursor: pointer; }
.drain-switch input { position: absolute; opacity: 0; width: 100%; height: 100%; margin: 0; cursor: pointer; }
.ds-track {
  position: absolute; inset: 0; border-radius: 999px; background: #cbd5e1; transition: background .2s;
}
.drain-switch input:checked + .ds-track { background: linear-gradient(140deg, #7c3aed, #a855f7); }
.ds-track::after {
  content: ''; position: absolute; top: 3px; left: 3px; width: 18px; height: 18px; border-radius: 50%;
  background: #fff; transition: transform .2s; box-shadow: 0 1px 3px rgba(0, 0, 0, .25);
}
.drain-switch input:checked + .ds-track::after { transform: translateX(20px); }
.drain-switch-tx { display: flex; flex-direction: column; }
.drain-switch-tx b { font-size: .85rem; color: var(--ink); }
.drain-switch-tx small { font-size: .72rem; color: var(--muted); }
.drain-tip {
  display: flex; align-items: flex-start; gap: .45rem; margin-top: .8rem; padding: .65rem .8rem;
  background: #f6f2ff; border: 1px solid #e2d6ff; color: #5b21b6; border-radius: var(--r-lg);
  font-size: .75rem; line-height: 1.55;
}
.drain-tip > svg.i { flex: none; margin-top: .1rem; color: #7c3aed; }
.drain-foot { margin-top: .4rem; }

/* 获客漏斗 */
.fnl-summary { font-size: .85rem; color: var(--ink); margin-bottom: 1rem; }
.fnl-summary b { color: #7c3aed; font-size: 1.05rem; }
.fnl-stages { display: flex; flex-direction: column; gap: .7rem; }
.fnl-stage { background: #faf9ff; border: 1px solid var(--line-2); border-radius: var(--r-lg); padding: .7rem .85rem; }
.fnl-top { display: flex; align-items: center; gap: .5rem; }
.fnl-ico { width: 30px; height: 30px; border-radius: 8px; flex: none; display: inline-flex; align-items: center; justify-content: center; font-size: .9rem; color: #fff; }
.fnl-ico.f0 { background: #6366f1; }
.fnl-ico.f1 { background: #8b5cf6; }
.fnl-ico.f2 { background: #a855f7; }
.fnl-ico.f3 { background: #16a34a; }
.fnl-name { font-size: .85rem; color: var(--ink); }
.fnl-num { margin-left: auto; font-size: 1.15rem; font-weight: 700; color: #6d28d9; }
.fnl-bar-wrap { margin: .5rem 0 .35rem; height: 10px; background: #ece8fb; border-radius: 999px; overflow: hidden; }
.fnl-bar { height: 100%; border-radius: 999px; }
.fnl-bar.f0 { background: linear-gradient(90deg, #6366f1, #818cf8); }
.fnl-bar.f1 { background: linear-gradient(90deg, #8b5cf6, #a78bfa); }
.fnl-bar.f2 { background: linear-gradient(90deg, #a855f7, #c084fc); }
.fnl-bar.f3 { background: linear-gradient(90deg, #16a34a, #4ade80); }
.fnl-meta { font-size: .72rem; color: var(--muted); }

/* 前端老师微信 */
.drain-qr-edit { display: flex; gap: .9rem; align-items: flex-start; flex-wrap: wrap; }
.drain-qr-prev {
  width: 132px; height: 132px; border-radius: var(--r-lg); border: 1px dashed var(--line-3);
  display: flex; align-items: center; justify-content: center; background: #faf9ff; overflow: hidden; flex: none;
}
.drain-qr-prev img { width: 100%; height: 100%; object-fit: contain; background: #fff; }
.drain-qr-prev .ph { color: var(--muted); font-size: .76rem; }
.drain-qr-actions { display: flex; flex-direction: column; gap: .5rem; align-items: flex-start; }
.drain-qr-file { display: inline-flex; }

/* 获客管理表格 */
.drain-leads-toolbar { display: flex; gap: .5rem; align-items: center; margin-bottom: .9rem; flex-wrap: wrap; }
.drain-lead-kw { flex: 1 1 200px; min-width: 140px; padding: .5rem .7rem; border: 1px solid var(--line-3); border-radius: var(--r-md); background: #f7f8fb; font-size: .85rem; }
.drain-lead-status { padding: .5rem .6rem; border: 1px solid var(--line-3); border-radius: var(--r-md); background: #f7f8fb; font-size: .85rem; }
.drain-leads-table { width: 100%; border-collapse: collapse; font-size: .83rem; }
.drain-leads-table th, .drain-leads-table td { padding: .55rem .6rem; border-bottom: 1px solid var(--line-2); text-align: left; }
.drain-leads-table th { color: var(--muted); font-weight: 600; background: #faf9ff; }
.drain-leads-table .ops { text-align: right; }
.drain-status-sel { padding: .3rem .4rem; border: 1px solid var(--line-3); border-radius: var(--r-sm); font-size: .8rem; background: #fff; }
.drain-note-cell { width: 26%; }
.drain-note-input { width: 100%; padding: .3rem .45rem; border: 1px solid transparent; border-radius: var(--r-sm); background: #f7f8fb; font-size: .8rem; }
.drain-note-input:focus { border-color: #c4b5fd; background: #fff; outline: none; }
.drain-empty { text-align: center; color: var(--muted); padding: 1.6rem 0 !important; }

/* 引流端导航按钮 */
.nav-btn.drain { color: #7c3aed; }
.nav-btn.drain:hover { background: #f3edff; }

