
/* ════════════════════════════════════════
   渝职雷达 · 白底彩色点缀 · 透明亚克力
   ════════════════════════════════════════ */

/* ── 亮色(默认:白底 + 彩色光晕点缀 + 亚克力质感) ── */
:root,
[data-theme="light"] {
  --bg0: #dce4f2;
  --bg1: #cad6ea;
  --mesh-a: rgba(59,130,246,.25);
  --mesh-b: rgba(14,165,233,.20);
  --mesh-c: rgba(168,85,247,.18);
  --mesh-d: rgba(20,184,166,.16);
  --mesh-e: rgba(249,115,22,.12);

  /* 亚克力:更透、边框更明显、高光更锐利 */
  --acrylic: rgba(255,255,255,.22);
  --acrylic-2: rgba(255,255,255,.30);
  --acrylic-3: rgba(255,255,255,.40);
  --acrylic-hover: rgba(255,255,255,.50);
  --acrylic-border: rgba(255,255,255,.80);
  --acrylic-highlight: rgba(255,255,255,1);
  /* 二级页/弹层:更高不透明度 + 更强模糊,保证评论等文字可读 */
  --modal-surface: rgba(255,255,255,.94);
  --modal-surface-2: rgba(248,250,252,.98);
  --modal-blur: blur(22px) saturate(1.35);
  --modal-scrim: rgba(15,23,42,.48);
  --acrylic-inset: inset 0 1px 0 rgba(255,255,255,1), inset 0 0 0 1px rgba(255,255,255,.35);
  --acrylic-shadow:
    0 10px 34px rgba(15,23,42,.12),
    0 4px 12px rgba(15,23,42,.06),
    inset 0 1px 0 rgba(255,255,255,1);
  --acrylic-shadow-lg:
    0 24px 56px rgba(15,23,42,.14),
    0 8px 20px rgba(15,23,42,.07),
    inset 0 1px 0 rgba(255,255,255,1);

  --text: #0f172a;
  --text-2: #334155;
  --text-3: #64748b;
  --text-muted: #94a3b8;

  --input-bg: rgba(255,255,255,.30);
  --input-border: rgba(255,255,255,.60);
  --input-text: #0f172a;
  --input-ph: #94a3b8;

  --ok: #059669;
  --new: #ea580c;
  --gov: #e11d48;
  --focus: #0d9488;
  --brand: #2563eb;
  --brand-2: #0891b2;

  --badge-new: linear-gradient(135deg, #fb923c, #f97316);
  --chip-active-bg: #0f172a;
  --chip-active-fg: #fff;
  --nav-blur: blur(30px) saturate(1.5);
  --panel-blur: blur(34px) saturate(1.6);
  --card-blur: blur(28px) saturate(1.5);
}

/* ── 暗色(可选,不再纯黑) ── */
[data-theme="dark"] {
  --bg0: #141b2d;
  --bg1: #1a2340;
  --mesh-a: rgba(96,165,250,.22);
  --mesh-b: rgba(56,189,248,.16);
  --mesh-c: rgba(167,139,250,.14);
  --mesh-d: rgba(45,212,191,.10);
  --mesh-e: rgba(249,115,22,.08);

  --acrylic: rgba(255,255,255,.06);
  --acrylic-2: rgba(255,255,255,.08);
  --acrylic-3: rgba(255,255,255,.11);
  --acrylic-hover: rgba(255,255,255,.12);
  --acrylic-border: rgba(255,255,255,.12);
  --acrylic-highlight: rgba(255,255,255,.18);
  --modal-surface: rgba(22,30,48,.96);
  --modal-surface-2: rgba(18,24,40,.98);
  --modal-blur: blur(24px) saturate(1.25);
  --modal-scrim: rgba(0,0,0,.58);
  --acrylic-inset: inset 0 1px 0 rgba(255,255,255,.10);
  --acrylic-shadow:
    0 8px 28px rgba(0,0,0,.22),
    0 2px 8px rgba(0,0,0,.14),
    inset 0 1px 0 rgba(255,255,255,.08);
  --acrylic-shadow-lg:
    0 18px 42px rgba(0,0,0,.28),
    0 4px 12px rgba(0,0,0,.16),
    inset 0 1px 0 rgba(255,255,255,.10);

  --text: rgba(248,250,252,.94);
  --text-2: rgba(226,232,240,.74);
  --text-3: rgba(148,163,184,.78);
  --text-muted: rgba(148,163,184,.52);

  --input-bg: rgba(255,255,255,.07);
  --input-border: rgba(255,255,255,.12);
  --input-text: rgba(248,250,252,.94);
  --input-ph: rgba(148,163,184,.55);

  --ok: #34d399;
  --new: #fb923c;
  --gov: #fb7185;
  --focus: #2dd4bf;
  --brand: #60a5fa;
  --brand-2: #38bdf8;

  --badge-new: linear-gradient(135deg, #fb923c, #f97316);
  --chip-active-bg: rgba(255,255,255,.94);
  --chip-active-fg: #1d4ed8;
  --nav-blur: blur(24px) saturate(1.25);
  --panel-blur: blur(24px) saturate(1.3);
  --card-blur: blur(18px) saturate(1.2);
}

:root {
  --radius: 20px;
  --radius-sm: 14px;
  --radius-xs: 10px;
  --radius-pill: 999px;
  --ease: .22s cubic-bezier(.4,0,.2,1);
  --max: 1080px;
}

* { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; -webkit-font-smoothing: antialiased; }
body {
  font-family: "Inter", "SF Pro Display", "Segoe UI", "PingFang SC", "Microsoft YaHei", system-ui, sans-serif;
  color: var(--text);
  min-height: 100vh;
  background: var(--bg0);
  line-height: 1.55;
  overflow-x: hidden;
  transition: background .35s ease, color .35s ease;
}
a { color: inherit; text-decoration: none; }
button, input, select { font: inherit; }
button { cursor: pointer; border: none; background: none; color: inherit; }
::selection { background: rgba(96,165,250,.28); }

/* ════════════ 背景:浅灰蓝底 + 彩色光晕(亚克力能透出颜色) ════════════ */
.bg-stage {
  position: fixed; inset: 0; z-index: -2;
  background:
    radial-gradient(820px 460px at 8% 0%, var(--mesh-a), transparent 62%),
    radial-gradient(720px 420px at 92% 8%, var(--mesh-b), transparent 60%),
    radial-gradient(680px 480px at 78% 82%, var(--mesh-c), transparent 62%),
    radial-gradient(560px 380px at 12% 88%, var(--mesh-d), transparent 58%),
    radial-gradient(420px 280px at 48% 42%, var(--mesh-e), transparent 65%),
    linear-gradient(180deg, var(--bg0) 0%, var(--bg1) 48%, var(--bg0) 100%);
}
[data-theme="light"] .bg-stage {
  background:
    radial-gradient(720px 400px at 10% 5%, rgba(59,130,246,.35), transparent 60%),
    radial-gradient(640px 380px at 90% 10%, rgba(14,165,233,.28), transparent 58%),
    radial-gradient(600px 420px at 75% 85%, rgba(168,85,247,.22), transparent 60%),
    radial-gradient(500px 340px at 15% 90%, rgba(20,184,166,.20), transparent 55%),
    radial-gradient(380px 260px at 50% 45%, rgba(249,115,22,.14), transparent 62%),
    linear-gradient(160deg, #dce4f2 0%, #cad6ea 40%, #d4def0 72%, #e0e7f6 100%);
}
[data-theme="light"] .bg-stage::before {
  content: "";
  position: absolute; inset: 0;
  background:
    radial-gradient(circle at 30% 20%, rgba(59,130,246,.06), transparent 25%),
    radial-gradient(circle at 80% 60%, rgba(168,85,247,.05), transparent 22%);
  pointer-events: none;
}
[data-theme="dark"] .bg-stage::before {
  content: "";
  position: absolute; inset: 0;
  background:
    radial-gradient(circle at 50% -8%, rgba(255,255,255,.06), transparent 40%),
    radial-gradient(circle at 20% 30%, rgba(59,130,246,.05), transparent 28%),
    radial-gradient(circle at 85% 55%, rgba(14,165,233,.04), transparent 26%);
  pointer-events: none;
}
.bg-noise {
  position: fixed; inset: 0; z-index: -1; pointer-events: none;
  opacity: .018;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  mix-blend-mode: multiply;
}
[data-theme="dark"] .bg-noise {
  opacity: .03;
  mix-blend-mode: overlay;
}

/* 亚克力通用 */
.acrylic {
  background: var(--acrylic);
  border: 1px solid var(--acrylic-border);
  box-shadow: var(--acrylic-shadow);
  backdrop-filter: var(--panel-blur);
  -webkit-backdrop-filter: var(--panel-blur);
}
.acrylic-edge {
  position: relative;
}
.acrylic-edge::before {
  content: "";
  position: absolute; inset: 0;
  border-radius: inherit;
  pointer-events: none;
  box-shadow: var(--acrylic-inset);
}

/* ════════════ 导航 ════════════ */
.navbar {
  position: sticky; top: 0; z-index: 100;
  background: var(--acrylic);
  border-bottom: 1px solid var(--acrylic-border);
  backdrop-filter: var(--nav-blur);
  -webkit-backdrop-filter: var(--nav-blur);
  box-shadow: 0 1px 0 rgba(255,255,255,.06);
}
.nav-inner {
  max-width: var(--max); margin: 0 auto;
  display: flex; align-items: center; gap: 16px;
  padding: 12px 20px;
  /* 顶栏禁止整体换行，避免菜单被压成竖排中文 */
  flex-wrap: nowrap;
  min-width: 0;
}
.nav-brand { display: flex; align-items: center; gap: 10px; flex-shrink: 0; }
.nav-logo {
  width: 34px; height: 34px; border-radius: 11px;
  display: grid; place-items: center;
  font-weight: 800; font-size: .9rem; color: #fff;
  background: linear-gradient(145deg, var(--brand-2), var(--brand) 55%, #8b5cf6);
  box-shadow:
    0 6px 18px rgba(59,130,246,.28),
    inset 0 1px 0 rgba(255,255,255,.35);
}
.nav-title { font-size: .98rem; font-weight: 750; letter-spacing: .2px; color: var(--text); }
.nav-sub { font-size: .66rem; color: var(--text-muted); margin-top: 1px; }
.region-bar {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  margin: 0 0 14px; padding: 10px 12px;
  border-radius: var(--radius);
  background: var(--acrylic);
  border: 1px solid var(--acrylic-border);
  box-shadow: var(--acrylic-shadow);
  backdrop-filter: var(--card-blur);
  -webkit-backdrop-filter: var(--card-blur);
}
.region-label {
  font-size: .72rem; font-weight: 700; color: var(--text-3);
  letter-spacing: .4px; white-space: nowrap;
}
.region-tabs, .city-tabs {
  display: flex; flex-wrap: wrap; gap: 6px; align-items: center;
}
.city-tabs-board {
  flex: 1 1 100%;
  width: 100%;
  display: block;
}

.region-tab, .city-tab {
  appearance: none; border: 1px solid var(--acrylic-border);
  background: var(--acrylic-2); color: var(--text-2);
  border-radius: 999px; padding: 6px 12px;
  font-size: .78rem; font-weight: 650; cursor: pointer;
  transition: var(--ease);
}
.region-tab:hover, .city-tab:hover {
  color: var(--text); background: var(--acrylic-3);
}
.region-tab.active, .city-tab.active {
  color: #fff;
  background: linear-gradient(135deg, var(--brand-2), var(--brand));
  border-color: transparent;
  box-shadow: 0 6px 16px rgba(59,130,246,.25);
}
.city-tab.soon, .cluster-tab.soon {
  opacity: .72; cursor: pointer;
  border-style: dashed;
}
.city-tab.soon.live { opacity: 1; border-style: solid; }
.city-tab.soon:hover, .cluster-tab.soon:hover { background: var(--acrylic-2); color: var(--text-2); }
.city-tab.live:not(.active) {
  border-color: rgba(16,185,129,.55);
  background: linear-gradient(135deg, rgba(16,185,129,.14), rgba(59,130,246,.10));
  color: var(--text);
  font-weight: 780;
  box-shadow: 0 0 0 1px rgba(16,185,129,.18);
}
.city-tab.live:not(.active)::before {
  content: "";
  display: inline-block;
  width: 6px; height: 6px; border-radius: 50%;
  margin-right: 5px; vertical-align: middle;
  background: #10b981;
  box-shadow: 0 0 0 3px rgba(16,185,129,.2);
}
.city-tab.center {
  border-color: rgba(245,158,11,.45);
  box-shadow: 0 0 0 1px rgba(245,158,11,.12);
}
.city-subarea-hint {
  width: 100%;
  font-size: .7rem;
  color: var(--text-3);
  margin-top: 2px;
}
.expect-box {
  padding: 28px 18px;
  text-align: center;
  border-radius: var(--radius);
  border: 1px dashed var(--acrylic-border);
  background: var(--acrylic);
  color: var(--text-2);
}
.expect-box h3 { margin: 0 0 8px; font-size: 1rem; color: var(--text); }
.expect-box p { margin: 0; font-size: .84rem; line-height: 1.55; color: var(--text-3); }
.expect-box .expect-actions { margin-top: 14px; display:flex; gap:8px; justify-content:center; flex-wrap:wrap; }

/* -- 区县片区网格排版 -- */
.city-board {
  display: flex;
  flex-direction: column;
  gap: 10px;
  width: 100%;
}
.city-board-head {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
}
.city-board-meta {
  margin-left: auto;
  font-size: .7rem;
  color: var(--text-3);
  white-space: nowrap;
}
.city-group {
  border: 1px solid var(--acrylic-border);
  background: var(--acrylic-2);
  border-radius: 14px;
  padding: 8px 10px 10px;
}
.city-group-title {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: .7rem;
  font-weight: 750;
  color: var(--text-3);
  letter-spacing: .3px;
  margin-bottom: 7px;
}
.city-group-title .dot {
  width: 6px; height: 6px; border-radius: 50%;
  background: var(--brand);
  box-shadow: 0 0 0 3px rgba(59,130,246,.15);
  flex: 0 0 auto;
}
.city-group-title .cnt {
  margin-left: auto;
  font-weight: 650;
  opacity: .85;
}
.city-group-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  align-items: center;
}
.city-tab {
  min-height: 30px;
  line-height: 1.1;
}
.city-tab .st-badge {
  margin-left: 4px;
  font-size: .62rem;
  font-weight: 700;
  opacity: .78;
}
.city-board-foot {
  font-size: .7rem;
  color: var(--text-3);
  line-height: 1.45;
}
@media (max-width: 640px) {
  .city-board-meta { margin-left: 0; width: 100%; }
  .city-group { padding: 8px; }
  .region-tab, .city-tab, .cluster-tab { padding: 6px 10px; font-size: .74rem; }
}

.city-tab.center:not(.active)::after {
  content: "中心";
  margin-left: 4px;
  font-size: .62rem;
  font-weight: 800;
  color: #b45309;
}
.city-tab.center.active::after {
  content: "中心";
  margin-left: 4px;
  font-size: .62rem;
  font-weight: 800;
  color: rgba(255,255,255,.9);
}
.cluster-tabs {
  display: flex; flex-wrap: wrap; gap: 6px; align-items: center;
}
.cluster-sep {
  width: 1px; height: 18px; margin: 0 4px;
  background: var(--acrylic-border);
  opacity: .9;
  flex: 0 0 auto;
}
.cluster-tab.overview:not(.active) {
  border-color: rgba(37,99,235,.35);
  font-weight: 750;
}
.cluster-tab {
  appearance: none; border: 1px solid var(--acrylic-border);
  background: var(--acrylic-2); color: var(--text-2);
  border-radius: 999px; padding: 6px 12px;
  font-size: .78rem; font-weight: 650; cursor: pointer;
  transition: var(--ease);
}
.cluster-tab:hover { color: var(--text); background: var(--acrylic-3); }
.cluster-tab.active {
  color: #fff;
  background: linear-gradient(135deg, #0ea5e9, #2563eb);
  border-color: transparent;
  box-shadow: 0 6px 16px rgba(37,99,235,.28);
}
.cluster-note {
  width: 100%;
  font-size: .72rem; color: var(--text-3);
  margin-top: 2px;
}
.city-soon-tip {
  font-size: .72rem; color: var(--text-3);
}
.region-bar-refs a {
  color: var(--brand);
  text-decoration: none;
  font-size: .7rem;
  margin-left: 6px;
}
.region-bar-refs a:hover { text-decoration: underline; }

.nav-vip {
  display: none;
  font-size: .68rem; font-weight: 800;
  padding: 4px 9px; border-radius: 999px;
  letter-spacing: .3px;
  color: #7c2d12;
  background: linear-gradient(135deg, #fde68a, #fbbf24 55%, #f59e0b);
  border: 1px solid rgba(245,158,11,.45);
  box-shadow: 0 4px 12px rgba(245,158,11,.25);
}
.nav-vip.show { display: inline-flex; align-items: center; }
.nav-vip.v2 { color: #1e3a8a; background: linear-gradient(135deg,#bfdbfe,#60a5fa 55%,#3b82f6); border-color: rgba(59,130,246,.4); }
.nav-vip.v3 { color: #fff; background: linear-gradient(135deg,#fbbf24,#f59e0b 40%,#b45309); }
.nav-sponsor {
  display: none; align-items: center; gap: 4px;
  font-size: .66rem; font-weight: 800; padding: 3px 9px; border-radius: 999px;
  color: #7c2d12;
  background: linear-gradient(135deg, #fde68a, #fbbf24 55%, #f59e0b);
  border: 1px solid rgba(245,158,11,.45);
  box-shadow: 0 3px 10px rgba(245,158,11,.22);
  max-width: 110px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.nav-sponsor.show { display: inline-flex; }
.sponsor-banner {
  display: flex; flex-wrap: wrap; gap: 8px; align-items: center;
  margin: 0 0 12px; padding: 10px 12px; border-radius: 14px;
  border: 1px solid rgba(245,158,11,.35);
  background: linear-gradient(135deg, rgba(251,191,36,.16), rgba(245,158,11,.06));
}
.sponsor-banner .sb-title { font-weight: 800; color: #b45309; }
html[data-theme="dark"] .sponsor-banner .sb-title { color: #fde68a; }
.forum-quota.vip {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 6px 10px; border-radius: 999px;
  font-weight: 750; color: #1e3a8a;
  background: linear-gradient(135deg, rgba(191,219,254,.55), rgba(96,165,250,.25));
  border: 1px solid rgba(59,130,246,.35);
}
html[data-theme="dark"] .forum-quota.vip { color: #bfdbfe; }
.forum-quota.free {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 6px 10px; border-radius: 999px;
  font-weight: 650; color: var(--text-2);
  background: var(--acrylic-2); border: 1px solid var(--acrylic-border);
}
.forum-vip-cta {
  margin-left: auto; font-size: .72rem; font-weight: 700;
  color: #b45309; cursor: pointer; text-decoration: underline;
}
.sponsor-title-pill.lg { font-size: .78rem; padding: 4px 10px; }
.hourly-pill {
  font-size: .7rem; font-weight: 800; padding: 2px 8px; border-radius: 999px;
  color: #065f46; background: rgba(16,185,129,.14); border: 1px solid rgba(16,185,129,.35);
}
html[data-theme="dark"] .hourly-pill { color: #6ee7b7; }
.hourly-meta { font-size: .72rem; color: var(--text-3); margin-top: 2px; }
.hourly-lock-banner {
  margin: 0 0 12px; padding: 12px 14px; border-radius: 14px;
  border: 1px dashed rgba(245,158,11,.45);
  background: linear-gradient(135deg, rgba(251,191,36,.12), rgba(245,158,11,.05));
  font-size: .82rem; color: var(--text-2); line-height: 1.5;
}
.hourly-lock-banner strong { color: #b45309; }
.hourly-stats {
  display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 8px;
  margin: 0 0 12px;
}
@media (max-width: 800px) { .hourly-stats { grid-template-columns: repeat(2, minmax(0,1fr)); } }
.hourly-stat {
  padding: 10px 12px; border-radius: 12px;
  background: var(--acrylic); border: 1px solid var(--acrylic-border);
}
.hourly-stat .n { font-size: 1.05rem; font-weight: 800; color: var(--text); }
.hourly-stat .l { font-size: .72rem; color: var(--text-3); margin-top: 2px; }
.hourly-assumptions {
  font-size: .72rem; color: var(--text-3); margin: -4px 0 12px;
}
/* 市场快照 */
.market-panel {
  margin: 0 0 14px; padding: 14px 16px; border-radius: 16px;
  background: var(--acrylic); border: 1px solid var(--acrylic-border);
  backdrop-filter: blur(12px);
}
.market-panel-head {
  display: flex; align-items: flex-start; justify-content: space-between; gap: 12px;
  margin-bottom: 10px;
}
.market-panel-title { font-size: .95rem; font-weight: 800; color: var(--text); }
.market-panel-sub { font-size: .72rem; color: var(--text-3); margin-top: 2px; }
.market-grid {
  display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 8px;
}
@media (max-width: 800px) { .market-grid { grid-template-columns: repeat(2, minmax(0,1fr)); } }
.market-card {
  padding: 10px 12px; border-radius: 12px;
  background: var(--acrylic-2, rgba(255,255,255,.04));
  border: 1px solid var(--acrylic-border);
}
.market-card .n { font-size: 1.05rem; font-weight: 800; color: var(--text); }
.market-card .l { font-size: .72rem; color: var(--text-3); margin-top: 2px; }
.market-bars { margin-top: 12px; display: flex; flex-direction: column; gap: 8px; }
.market-bar-row { display: grid; grid-template-columns: 72px 1fr 48px; gap: 8px; align-items: center; font-size: .75rem; color: var(--text-2); }
.market-bar-track {
  height: 8px; border-radius: 999px; background: rgba(148,163,184,.2); overflow: hidden;
}
.market-bar-fill {
  height: 100%; border-radius: 999px;
  background: linear-gradient(90deg, rgba(59,130,246,.85), rgba(16,185,129,.85));
}
.market-bar-fill.social { background: linear-gradient(90deg, rgba(16,185,129,.9), rgba(52,211,153,.7)); }
.market-bar-fill.warn { background: linear-gradient(90deg, rgba(245,158,11,.85), rgba(251,191,36,.7)); }
.market-foot { font-size: .7rem; color: var(--text-3); margin-top: 10px; line-height: 1.45; }
.market-foot a { color: var(--brand); font-weight: 650; text-decoration: none; }
.market-foot a:hover { text-decoration: underline; }
.legal-link-row { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.legal-link-pill {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 4px 10px; border-radius: 999px; font-size: .68rem; font-weight: 650;
  color: var(--brand); background: rgba(37,99,235,.08);
  border: 1px solid rgba(37,99,235,.18); text-decoration: none;
}
.legal-link-pill:hover { background: rgba(37,99,235,.14); }
.cq-minwage-box {
  margin-top: 10px; padding: 10px 12px; border-radius: 12px;
  background: rgba(16,185,129,.08); border: 1px solid rgba(16,185,129,.22);
  font-size: .72rem; color: var(--text-2); line-height: 1.5;
}
.cq-minwage-box strong { color: var(--text); }
.company-check-row { display: flex; flex-wrap: wrap; gap: 6px; margin: 6px 0 10px; }
.company-check-btn {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 6px 10px; border-radius: 999px; font-size: .72rem; font-weight: 700;
  text-decoration: none; color: var(--text-2);
  background: var(--acrylic-2); border: 1px solid var(--acrylic-border);
  transition: var(--ease);
}
.company-check-btn:hover { background: var(--acrylic-hover); color: var(--text); transform: translateY(-1px); }
.company-check-btn.primary { color: #0f766e; border-color: rgba(13,148,136,.28); background: rgba(13,148,136,.1); }
.tag.company-link { cursor: pointer; text-decoration: none; }
.tag.company-link:hover { filter: brightness(1.05); box-shadow: 0 0 0 1px rgba(109,40,217,.25); }
.market-sources {
  display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px;
}
.market-src-pill {
  font-size: .68rem; font-weight: 650; padding: 3px 8px; border-radius: 999px;
  background: rgba(59,130,246,.1); border: 1px solid rgba(59,130,246,.25); color: var(--text-2);
}
/* VIP 金色昵称 */
.gold-name, .btn-ghost.logged-in.gold-name {
  background: linear-gradient(105deg, #b45309 0%, #f59e0b 28%, #fde68a 50%, #fbbf24 72%, #d97706 100%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent !important;
  font-weight: 800;
  filter: drop-shadow(0 0 6px rgba(245,158,11,.35));
}
html[data-theme="dark"] .gold-name,
html[data-theme="dark"] .btn-ghost.logged-in.gold-name {
  background: linear-gradient(105deg, #fbbf24 0%, #fde68a 40%, #fff7d6 55%, #fbbf24 100%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent !important;
  filter: drop-shadow(0 0 8px rgba(251,191,36,.45));
}
.recharge-card.promo {
  border-color: rgba(245,158,11,.55);
  background: linear-gradient(145deg, rgba(251,191,36,.14), rgba(245,158,11,.06));
  position: relative;
}
.recharge-card.promo::before {
  content: attr(data-badge);
  position: absolute; top: -8px; right: 8px;
  font-size: .62rem; font-weight: 800;
  padding: 2px 8px; border-radius: 999px;
  color: #7c2d12;
  background: linear-gradient(135deg,#fde68a,#f59e0b);
  box-shadow: 0 2px 8px rgba(245,158,11,.3);
}
.recharge-card.promo .price { color: #b45309; }
html[data-theme="dark"] .recharge-card.promo .price { color: #fbbf24; }
.promo-banner {
  margin: 0 0 12px; padding: 10px 12px; border-radius: 12px;
  background: linear-gradient(90deg, rgba(251,191,36,.16), rgba(245,158,11,.08));
  border: 1px dashed rgba(245,158,11,.45);
  font-size: .78rem; color: var(--text-2); line-height: 1.5;
}
.promo-banner strong { color: #b45309; }
html[data-theme="dark"] .promo-banner strong { color: #fbbf24; }
.vip-filter-bar {
  display: none; flex-wrap: wrap; gap: 8px; align-items: center;
  margin: 0 0 12px; padding: 10px 12px;
  border-radius: var(--radius);
  background: var(--acrylic);
  border: 1px solid var(--acrylic-border);
}
.vip-filter-bar.show { display: flex; }
.vip-filter-bar .vip-label {
  font-size: .72rem; font-weight: 750; color: #b45309;
  white-space: nowrap;
}
.vip-filter-bar label {
  display: inline-flex; align-items: center; gap: 5px;
  font-size: .76rem; color: var(--text-2);
  padding: 5px 10px; border-radius: 999px;
  background: var(--acrylic-2);
  border: 1px solid var(--acrylic-border);
  cursor: pointer; user-select: none;
}
.vip-filter-bar label input { accent-color: var(--brand); }
.vip-filter-bar select, .vip-filter-bar input[type="number"] {
  height: 30px; border-radius: 999px;
  border: 1px solid var(--acrylic-border);
  background: var(--acrylic-2); color: var(--text);
  padding: 0 10px; font-size: .76rem;
}
.vip-lock-hint {
  font-size: .72rem; color: var(--text-3);
}
.badge.vip-boost {
  background: linear-gradient(135deg,#fde68a,#f59e0b);
  color: #7c2d12; font-weight: 750;
}
/*
 * 导航布局契约（防竖排中文，2026-07-23）
 * 1. .nav-link 永远 white-space:nowrap + flex:0 0 auto，禁止按字折行
 * 2. 空间不够时：先藏次要徽章/时间，再藏「收藏/对比」，最后才横向滚动
 * 3. 新增顶栏入口时必须评估中宽屏；禁止只靠缩小 padding 硬塞
 * 4. 不要给 .nav-link 设固定过窄 width / max-width，中文会变成「岗/位」竖排
 */
.nav-links {
  display: flex; align-items: center; gap: 2px;
  flex: 1 1 auto; margin-left: 8px;
  min-width: 0;
  flex-wrap: nowrap;
  overflow-x: auto;
  overscroll-behavior-x: contain;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
}
.nav-links::-webkit-scrollbar { display: none; }
.nav-link {
  color: var(--text-3);
  padding: 7px 13px;
  border-radius: var(--radius-pill);
  font-size: .8rem; font-weight: 600;
  transition: var(--ease);
  white-space: nowrap !important;
  flex: 0 0 auto;
  writing-mode: horizontal-tb !important;
  text-orientation: mixed;
  word-break: keep-all;
  overflow-wrap: normal;
  line-height: 1.2;
  max-width: none;
}
.nav-link:hover { color: var(--text); background: var(--acrylic-2); }
.nav-link.active {
  color: var(--text);
  background: var(--acrylic-3);
  box-shadow: inset 0 1px 0 var(--acrylic-highlight);
}
/* 移动端汉堡：默认隐藏，≤860 显示 */
.nav-menu-toggle {
  display: none;
  width: 36px; height: 34px;
  border-radius: var(--radius-pill);
  border: 1px solid var(--acrylic-border);
  background: var(--acrylic-2);
  color: var(--text);
  font-size: 1.05rem; line-height: 1;
  cursor: pointer;
  flex: 0 0 auto;
  align-items: center; justify-content: center;
}
.nav-menu-toggle:hover { background: var(--acrylic-3); }
.nav-right {
  display: flex; align-items: center; gap: 8px;
  flex: 0 0 auto;
  flex-shrink: 0;
  min-width: 0;
}
.nav-pill {
  font-size: .7rem; color: var(--text-3);
  padding: 5px 10px; border-radius: var(--radius-pill);
  background: var(--acrylic-2);
  border: 1px solid var(--acrylic-border);
}
.nav-timebox {
  display: flex; flex-direction: column; align-items: flex-end; gap: 2px;
  max-width: 220px;
}
.nav-pill.live-clock {
  font-variant-numeric: tabular-nums;
  font-weight: 700;
  color: var(--text-2);
  letter-spacing: .02em;
}
.nav-pill.data-updated {
  font-size: .65rem;
  max-width: 220px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  cursor: help;
}
.data-freshness-bar {
  margin: 8px 0 0;
  font-size: .78rem;
  color: var(--text-3);
  display: flex; flex-wrap: wrap; gap: 8px 14px; align-items: center;
}
.data-freshness-bar strong { color: var(--text-2); font-weight: 700; }
.auth-temp-hint {
  font-size: .75rem;
  color: var(--warn, #b45309);
  background: rgba(251,191,36,.12);
  border: 1px solid rgba(251,191,36,.35);
  border-radius: 10px;
  padding: 8px 10px;
  margin: 0 0 12px;
  line-height: 1.45;
}
@media (max-width: 720px) {
  .nav-timebox { display: none; }
}
.icon-btn, .btn-ghost {
  height: 34px;
  border-radius: var(--radius-pill);
  border: 1px solid var(--acrylic-border);
  background: var(--acrylic-2);
  color: var(--text-2);
  font-size: .8rem; font-weight: 600;
  transition: var(--ease);
  display: inline-flex; align-items: center; justify-content: center;
}
.icon-btn { width: 34px; font-size: .95rem; }
.btn-ghost { padding: 0 14px; }
.icon-btn:hover, .btn-ghost:hover {
  background: var(--acrylic-hover);
  color: var(--text);
  transform: translateY(-1px);
}

/* ════════════ 布局 ════════════ */
.shell { max-width: var(--max); margin: 0 auto; padding: 0 20px 64px; }

/* ════════════ Hero ════════════ */
.hero { padding: 36px 0 20px; }
.hero-kicker {
  display: inline-flex; align-items: center; gap: 8px;
  font-size: .72rem; font-weight: 650; letter-spacing: .6px;
  text-transform: uppercase; color: var(--text-3);
  margin-bottom: 12px;
}
.hero-kicker i {
  width: 6px; height: 6px; border-radius: 50%;
  background: var(--brand-2);
  box-shadow: 0 0 12px var(--brand-2);
}
.hero h1 {
  font-size: clamp(1.55rem, 3.2vw, 2.15rem);
  font-weight: 800; letter-spacing: -.4px;
  color: var(--text); line-height: 1.25;
  margin-bottom: 8px;
}
.hero h1 em {
  font-style: normal;
  background: linear-gradient(120deg, var(--brand-2), var(--brand) 50%, #a78bfa);
  -webkit-background-clip: text; background-clip: text; color: transparent;
}
.hero-tagline {
  color: var(--text-3); font-size: .9rem;
  margin-bottom: 22px; max-width: 40em;
  display: flex; flex-direction: column; gap: 6px;
  line-height: 1.45;
}
.hero-tagline-main {
  color: var(--text-2);
  font-size: .95rem;
  font-weight: 650;
}
.hero-tagline-sub {
  color: var(--text-3);
  font-size: .82rem;
}

/* 搜索亚克力板 */
.search-panel {
  border-radius: 24px;
  padding: 16px;
  background: var(--acrylic);
  border: 1px solid var(--acrylic-border);
  box-shadow: var(--acrylic-shadow-lg);
  backdrop-filter: var(--panel-blur);
  -webkit-backdrop-filter: var(--panel-blur);
  position: relative;
}
.search-panel::before {
  content: ""; position: absolute; inset: 0; border-radius: inherit; pointer-events: none;
  box-shadow: var(--acrylic-inset);
  background: linear-gradient(180deg, rgba(255,255,255,.06), transparent 40%);
}
.search-row {
  position: relative;
  display: grid;
  grid-template-columns: 1fr auto auto auto;
  gap: 8px;
}
.search-row input,
.search-row select {
  background: var(--input-bg);
  border: 1px solid var(--input-border);
  border-radius: var(--radius-sm);
  padding: 12px 14px;
  color: var(--input-text);
  outline: none;
  transition: var(--ease);
  backdrop-filter: blur(8px);
}
.search-row input::placeholder { color: var(--input-ph); }
.search-row input:focus,
.search-row select:focus {
  border-color: rgba(96,165,250,.45);
  box-shadow: 0 0 0 3px rgba(96,165,250,.12);
}
.search-row select { min-width: 124px; cursor: pointer; }
.btn-primary {
  border-radius: var(--radius-sm);
  padding: 12px 18px;
  font-weight: 700; font-size: .86rem; color: #fff;
  background: linear-gradient(135deg, var(--brand), var(--brand-2));
  box-shadow: 0 8px 22px rgba(37,99,235,.28), inset 0 1px 0 rgba(255,255,255,.25);
  transition: var(--ease);
}
.btn-primary:hover { transform: translateY(-1px); box-shadow: 0 10px 26px rgba(37,99,235,.36); }
.btn-soft {
  border-radius: var(--radius-sm);
  padding: 12px 14px;
  font-weight: 650; font-size: .8rem;
  color: var(--text-2);
  background: var(--acrylic-2);
  border: 1px solid var(--acrylic-border);
  transition: var(--ease);
}
.btn-soft:hover { background: var(--acrylic-hover); color: var(--text); }
.btn-soft.active {
  color: var(--new);
  background: rgba(249,115,22,.12);
  border-color: rgba(249,115,22,.28);
}

.filter-bar {
  position: relative;
  display: flex; flex-wrap: wrap; gap: 6px; align-items: center;
  margin-top: 12px;
}
.toggle-btn {
  border-radius: var(--radius-pill);
  padding: 6px 12px;
  font-size: .74rem; font-weight: 600;
  color: var(--text-3);
  background: var(--acrylic-2);
  border: 1px solid transparent;
  transition: var(--ease);
}
.toggle-btn:hover { color: var(--text); background: var(--acrylic-3); }
.toggle-btn.active {
  color: var(--brand-2);
  background: rgba(56,189,248,.12);
  border-color: rgba(56,189,248,.22);
}
.toggle-btn.danger.active {
  color: var(--gov);
  background: rgba(244,63,94,.10);
  border-color: rgba(244,63,94,.22);
}
.filter-hint { margin-left: auto; font-size: .7rem; color: var(--text-muted); }

.chips {
  position: relative;
  display: flex; flex-wrap: wrap; gap: 6px;
  margin-top: 12px;
}
.chip {
  border-radius: var(--radius-pill);
  padding: 6px 12px;
  font-size: .76rem; font-weight: 600;
  color: var(--text-3);
  background: var(--acrylic-2);
  border: 1px solid transparent;
  transition: var(--ease);
}
.chip:hover { color: var(--text); background: var(--acrylic-3); }
.chip.muted {
  opacity: .55;
  order: 99;
  font-size: .72rem;
  border-style: dashed;
  color: var(--muted);
}
.chip.muted:hover { opacity: .85; }
.chip.active {
  background: var(--chip-active-bg);
  color: var(--chip-active-fg);
  border-color: transparent;
  box-shadow: 0 4px 14px rgba(0,0,0,.08);
}
.chip.focus.active { color: var(--focus); }

/* ════════════ 横幅 ════════════ */
.banner {
  display: none;
  margin: 16px 0;
  padding: 12px 16px;
  border-radius: var(--radius);
  font-size: .84rem; color: var(--text-2);
  background: var(--acrylic);
  border: 1px solid var(--acrylic-border);
  box-shadow: var(--acrylic-shadow);
  backdrop-filter: var(--card-blur);
  -webkit-backdrop-filter: var(--card-blur);
}
.banner strong { color: var(--new); font-weight: 750; }

/* ════════════ 统计 ════════════ */
.stats {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 10px;
  margin: 0 0 20px;
}
.stat-card {
  position: relative;
  text-align: center;
  padding: 16px 10px;
  border-radius: var(--radius);
  background: var(--acrylic);
  border: 1px solid var(--acrylic-border);
  box-shadow: var(--acrylic-shadow);
  backdrop-filter: var(--card-blur);
  -webkit-backdrop-filter: var(--card-blur);
  cursor: pointer;
  transition: var(--ease);
  overflow: hidden;
}
.stat-card::before {
  content: ""; position: absolute; inset: 0; border-radius: inherit; pointer-events: none;
  box-shadow: var(--acrylic-inset);
  background: linear-gradient(160deg, rgba(255,255,255,.07), transparent 45%);
}
.stat-card:hover {
  transform: translateY(-2px);
  background: var(--acrylic-hover);
  box-shadow: var(--acrylic-shadow-lg);
}
.stat-card.active {
  border-color: rgba(96,165,250,.35);
  box-shadow: var(--acrylic-shadow-lg), 0 0 0 1px rgba(96,165,250,.12);
}
.stat-num {
  position: relative;
  font-size: 1.45rem; font-weight: 800; letter-spacing: -.8px;
  color: var(--text);
}
.stat-card.gov .stat-num { color: var(--gov); }
.stat-card.new .stat-num { color: var(--new); }
.stat-card.focus .stat-num { color: var(--focus); }
.stat-label {
  position: relative;
  margin-top: 4px;
  font-size: .7rem; font-weight: 600; color: var(--text-3);
}

/* ════════════ 情报 ════════════ */
.intel-panel {
  margin: 0 0 22px;
  border-radius: 22px;
  background: var(--acrylic);
  border: 1px solid var(--acrylic-border);
  box-shadow: var(--acrylic-shadow);
  backdrop-filter: var(--panel-blur);
  -webkit-backdrop-filter: var(--panel-blur);
  overflow: hidden;
}
.intel-panel::before {
  content: ""; display: block;
  box-shadow: var(--acrylic-inset);
}
.intel-head {
  display: flex; justify-content: space-between; align-items: center;
  padding: 14px 18px;
  border-bottom: 1px solid var(--acrylic-border);
  background: linear-gradient(180deg, rgba(255,255,255,.04), transparent);
}
.intel-title { font-size: .88rem; font-weight: 750; color: var(--text); }
.intel-sub { font-size: .7rem; color: var(--text-muted); margin-top: 2px; }
.intel-toggle {
  border-radius: var(--radius-pill);
  padding: 5px 12px;
  font-size: .72rem; font-weight: 600;
  color: var(--text-3);
  border: 1px solid var(--acrylic-border);
  background: var(--acrylic-2);
  transition: var(--ease);
}
.intel-toggle:hover { color: var(--text); background: var(--acrylic-hover); }
.intel-body { padding: 16px 18px; }
.intel-body.collapsed { display: none; }
.intel-block + .intel-block { margin-top: 16px; }
.intel-label {
  font-size: .7rem; font-weight: 700;
  letter-spacing: .4px; color: var(--text-muted);
  margin-bottom: 10px;
}

.grid-2 { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; }
.mini-card {
  display: flex; gap: 12px; align-items: flex-start;
  padding: 13px;
  border-radius: var(--radius-sm);
  background: var(--acrylic-2);
  border: 1px solid transparent;
  transition: var(--ease);
}
.mini-card:hover {
  background: var(--acrylic-hover);
  border-color: var(--acrylic-border);
  transform: translateY(-1px);
}
.mini-card .ico {
  width: 34px; height: 34px; border-radius: 11px; flex-shrink: 0;
  display: grid; place-items: center;
  background: rgba(96,165,250,.12);
  border: 1px solid rgba(96,165,250,.12);
}
.mini-card .t { font-size: .86rem; font-weight: 700; color: var(--text); margin-bottom: 2px; }
.mini-card .s { font-size: .72rem; color: var(--text-3); }

/* ════════════ 分区标题 ════════════ */
.section-title {
  display: flex; align-items: center; gap: 12px;
  margin: 8px 0 12px;
  font-size: .88rem; font-weight: 750; color: var(--text);
}
.section-title::after {
  content: ""; flex: 1; height: 1px;
  background: linear-gradient(90deg, var(--acrylic-border), transparent);
}

/* ════════════ 分类 ════════════ */
.cat-row { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 14px; }
.cat-chip {
  border-radius: var(--radius-pill);
  padding: 8px 14px;
  font-size: .78rem; font-weight: 600;
  color: var(--text-3);
  background: var(--acrylic);
  border: 1px solid var(--acrylic-border);
  box-shadow: var(--acrylic-shadow);
  backdrop-filter: var(--card-blur);
  -webkit-backdrop-filter: var(--card-blur);
  transition: var(--ease);
}
.cat-chip:hover { color: var(--text); background: var(--acrylic-hover); }
.cat-chip.active {
  color: #fff;
  background: linear-gradient(135deg, var(--brand), var(--brand-2));
  border-color: transparent;
  box-shadow: 0 8px 20px rgba(37,99,235,.28), inset 0 1px 0 rgba(255,255,255,.25);
}
.cat-chip span { margin-left: 6px; opacity: .65; font-size: .68rem; }

/* ════════════ 结果条 ════════════ */
.result-bar {
  display: flex; justify-content: space-between; gap: 8px; flex-wrap: wrap;
  color: var(--text-muted); font-size: .78rem;
  margin: 0 0 12px;
}

/* ════════════ 岗位卡片(亚克力) ════════════ */
.list { display: flex; flex-direction: column; gap: 10px; }
.job-card {
  position: relative;
  padding: 16px 16px 14px 18px;
  border-radius: var(--radius);
  background: var(--acrylic);
  border: 1px solid var(--acrylic-border);
  box-shadow: var(--acrylic-shadow);
  backdrop-filter: var(--card-blur);
  -webkit-backdrop-filter: var(--card-blur);
  cursor: pointer;
  transition: var(--ease);
  overflow: hidden;
}
.job-card::before {
  content: "";
  position: absolute; left: 0; top: 12px; bottom: 12px; width: 3px;
  border-radius: 0 3px 3px 0;
  background: rgba(148,163,184,.35);
}
.job-card::after {
  content: "";
  position: absolute; inset: 0; border-radius: inherit; pointer-events: none;
  box-shadow: var(--acrylic-inset);
  background: linear-gradient(135deg, rgba(255,255,255,.05), transparent 42%);
}
.job-card:hover {
  transform: translateY(-2px);
  background: var(--acrylic-hover);
  box-shadow: var(--acrylic-shadow-lg);
  border-color: rgba(96,165,250,.22);
}
.job-card.gov::before { background: linear-gradient(180deg, #fda4af, var(--gov)); }
.job-card.is-new::before { background: linear-gradient(180deg, #fdba74, var(--new)); }
.job-card.is-new.gov::before { background: linear-gradient(180deg, #fda4af, var(--gov)); }
.job-card.dead { opacity: .48; filter: grayscale(.2); }
.job-card.dead .job-title { text-decoration: line-through; text-decoration-color: var(--text-muted); }

.job-head {
  position: relative; z-index: 1;
  display: flex; justify-content: space-between; gap: 12px; align-items: flex-start;
}
.title-wrap { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; min-width: 0; }
.job-title {
  font-size: 1rem; font-weight: 750; letter-spacing: -.15px;
  line-height: 1.35; color: var(--text);
}
.job-salary {
  font-size: .92rem; font-weight: 750; color: var(--ok);
  text-align: right; white-space: normal; max-width: 42%;
  line-height: 1.25;
}
.job-salary .sal-main { white-space: nowrap; }
.job-salary .sal-hourly {
  display: block;
  margin-top: 3px;
  font-size: .72rem;
  font-weight: 700;
  color: #059669;
  white-space: nowrap;
}
html[data-theme="dark"] .job-salary .sal-hourly { color: #6ee7b7; }
/* 游客：整条岗位卡毛玻璃锁定 */
.job-card.locked {
  position: relative;
  overflow: hidden;
  cursor: pointer;
  user-select: none;
}
.job-card.locked .job-title,
.job-card.locked .job-salary,
.job-card.locked .job-meta {
  filter: blur(6px);
  opacity: .55;
  pointer-events: none;
}
.job-card.locked::after {
  /* 覆盖默认亚克力高光伪元素，做锁定遮罩底 */
  content: '';
  position: absolute;
  inset: 0;
  border-radius: inherit;
  pointer-events: none;
  background: linear-gradient(180deg, rgba(255,255,255,.18), rgba(255,255,255,.42));
  box-shadow: none;
  z-index: 2;
}
html[data-theme="dark"] .job-card.locked::after {
  background: linear-gradient(180deg, rgba(0,0,0,.18), rgba(0,0,0,.42));
}
.job-card-lock-mask {
  position: absolute;
  inset: 0;
  z-index: 3;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 8px;
  text-align: center;
  padding: 12px;
  pointer-events: none;
}
.job-card-lock-mask .lock-title {
  font-weight: 800;
  font-size: .9rem;
  color: var(--brand);
}
.job-card-lock-mask .lock-sub {
  font-size: .74rem;
  color: var(--text-2);
  max-width: 92%;
  line-height: 1.4;
}
.access-tier-banner {
  margin: 8px 0 12px;
  padding: 10px 12px;
  border-radius: 12px;
  border: 1px dashed var(--acrylic-border);
  background: var(--acrylic-2);
  font-size: .78rem;
  color: var(--text-2);
  line-height: 1.45;
}
.access-tier-banner strong { color: var(--brand); }
.access-tier-banner a {
  color: var(--brand);
  font-weight: 700;
  cursor: pointer;
  text-decoration: none;
}
.job-salary .sal-hourly-sub {
  display: block;
  margin-top: 2px;
  font-size: .64rem;
  font-weight: 550;
  color: var(--text-3);
  white-space: normal;
  line-height: 1.3;
}
.detail-hourly-box {
  margin: 0 0 12px; padding: 10px 12px; border-radius: 12px;
  background: rgba(16,185,129,.08);
  border: 1px solid rgba(16,185,129,.28);
  font-size: .8rem; color: var(--text-2); line-height: 1.45;
}
.detail-hourly-box strong { color: #047857; font-size: .88rem; }
html[data-theme="dark"] .detail-hourly-box strong { color: #6ee7b7; }

.job-meta {
  position: relative; z-index: 1;
  display: flex; flex-wrap: wrap; gap: 6px;
  margin-top: 11px;
}

.tag {
  display: inline-flex; align-items: center; gap: 3px;
  border-radius: 8px;
  padding: 3px 8px;
  font-size: .7rem; font-weight: 550;
  color: var(--text-3);
  background: var(--acrylic-2);
  border: 1px solid transparent;
}
.tag.source { color: var(--brand); background: rgba(96,165,250,.10); }
.tag.company {
  color: #a78bfa; background: rgba(167,139,250,.10);
  max-width: 220px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
[data-theme="light"] .tag.company { color: #6d28d9; }

.badge {
  font-size: .64rem; font-weight: 700;
  border-radius: 7px; padding: 3px 7px; white-space: nowrap;
}
.badge.wz { color: var(--ok); background: rgba(16,185,129,.12); }
.badge.cq { color: #fbbf24; background: rgba(245,158,11,.12); }
[data-theme="light"] .badge.cq { color: #d97706; }
.badge.gov { color: var(--gov); background: rgba(244,63,94,.10); }
.badge.new {
  color: #fff; background: var(--badge-new);
  box-shadow: 0 3px 10px rgba(249,115,22,.22);
}
.badge.focus { color: var(--focus); background: rgba(20,184,166,.12); }
.badge.merged { color: #818cf8; background: rgba(99,102,241,.12); }
.badge.cat { color: #38bdf8; background: rgba(14,165,233,.12); }
[data-theme="light"] .badge.cat { color: #0284c7; }
.badge.dead { color: var(--gov); background: rgba(244,63,94,.10); }
.badge.ok { color: var(--ok); background: rgba(16,185,129,.12); }
.badge.unk { color: var(--text-muted); background: var(--acrylic-2); }

/* ════════════ 空 / 错 ════════════ */
.empty, .error-box {
  text-align: center;
  padding: 48px 18px;
  border-radius: var(--radius);
  color: var(--text-3);
  background: var(--acrylic);
  border: 1px dashed var(--acrylic-border);
  backdrop-filter: var(--card-blur);
  -webkit-backdrop-filter: var(--card-blur);
}
.error-box {
  color: var(--gov);
  border-style: solid;
  border-color: rgba(244,63,94,.2);
  background: rgba(244,63,94,.06);
}
.error-box code {
  display: block; margin-top: 10px;
  padding: 10px; border-radius: 10px;
  background: var(--acrylic-2);
  color: var(--text); font-size: .8rem;
}

/* ════════════ 页脚 ════════════ */
.footer {
  text-align: center;
  color: var(--text-muted);
  font-size: .72rem;
  padding: 36px 8px 8px;
  line-height: 1.9;
}

/* ════════════ 回到顶部 ════════════ */
.backtop {
  position: fixed; right: 18px; bottom: 18px; z-index: 90;
  width: 42px; height: 42px; border-radius: 50%;
  color: #fff; font-size: 1.05rem;
  background: linear-gradient(135deg, var(--brand), var(--brand-2));
  box-shadow: 0 10px 28px rgba(37,99,235,.32), inset 0 1px 0 rgba(255,255,255,.28);
  opacity: 0; pointer-events: none;
  transition: var(--ease);
  backdrop-filter: blur(8px);
}
.backtop.show { opacity: 1; pointer-events: auto; }
.backtop:hover { transform: translateY(-2px); }

/* ════════════ 响应式 ════════════ */
@media (max-width: 860px) {
  .stats { grid-template-columns: repeat(2, 1fr); }
  .grid-2 { grid-template-columns: 1fr; }
  .search-row { grid-template-columns: 1fr 1fr; }
  .search-row input { grid-column: 1 / -1; }
  .nav-menu-toggle { display: inline-flex; }
  .nav-inner { position: relative; flex-wrap: wrap; }
  .nav-links {
    display: none;
    position: absolute;
    left: 12px; right: 12px; top: calc(100% + 6px);
    z-index: 120;
    flex-direction: column;
    align-items: stretch;
    gap: 4px;
    margin-left: 0;
    padding: 10px;
    border-radius: 16px;
    background: var(--acrylic);
    border: 1px solid var(--acrylic-border);
    box-shadow: var(--acrylic-shadow);
    backdrop-filter: var(--nav-blur);
    -webkit-backdrop-filter: var(--nav-blur);
    overflow-x: hidden;
    overflow-y: auto;
    max-height: min(70vh, 420px);
  }
  .nav-links.is-open { display: flex; }
  .nav-links .nav-link {
    width: 100%;
    padding: 10px 12px;
    font-size: .86rem;
    border-radius: 12px;
  }
  .nav-links .nav-link.nav-utility { display: flex; } /* 抽屉内重新显示收藏/对比 */
  .nav-timebox { display: none; }
}
@media (max-width: 520px) {
  .shell { padding: 0 14px 48px; }
  .hero { padding: 24px 0 16px; }
  .job-head { flex-direction: column; gap: 6px; }
  .nav-inner { padding: 10px 14px; gap: 8px; }
  .search-row { grid-template-columns: 1fr; }
  .search-row input, .search-row select, .search-row button { width: 100%; }
  .filter-hint { width: 100%; margin-left: 0; }
}

/* ── Skeleton / Loading ── */
.skeleton-card {
  border-radius: 16px; padding: 18px 20px; margin-bottom: 12px;
  background: var(--acrylic); border: 1px solid var(--card-border);
  animation: sk-pulse 1.4s ease-in-out infinite;
}
.skeleton-card .sk-line {
  height: 14px; border-radius: 7px; margin-bottom: 8px;
  background: var(--text-3); opacity: .15;
}
.skeleton-card .sk-line.w60 { width: 60%; }
.skeleton-card .sk-line.w40 { width: 40%; }
.skeleton-card .sk-line.w80 { width: 80%; }
@keyframes sk-pulse {
  0%,100% { opacity: 1; }
  50% { opacity: .5; }
}
.loading-overlay {
  position: fixed; inset: 0; z-index: 9999;
  display: flex; align-items: center; justify-content: center;
  background: rgba(0,0,0,.15); backdrop-filter: blur(4px);
  opacity: 0; pointer-events: none; transition: opacity .2s;
}
.loading-overlay.show { opacity: 1; pointer-events: auto; }
.spinner {
  width: 40px; height: 40px; border-radius: 50%;
  border: 3px solid var(--acrylic-hover);
  border-top-color: var(--accent);
  animation: spin .8s linear infinite;
}
@keyframes spin { to { transform: rotate(360deg); } }

/* ── 分页加载更多 ── */
.load-more {
  text-align: center; padding: 20px 0 12px;
}
.load-more button {
  padding: 10px 28px; border-radius: 24px; font-size: .82rem;
  background: var(--acrylic); border: 1px solid var(--card-border);
  color: var(--text); cursor: pointer; transition: all .2s;
}
.load-more button:hover { background: var(--acrylic-hover); }
.load-more .lm-hint { display: block; margin-top: 6px; font-size: .72rem; color: var(--text-3); }

/* ── 排序栏 ── */
.sort-bar { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.sort-label { font-size: .76rem; color: var(--text-3); }
.sort-btn {
  padding: 3px 10px; border-radius: 14px; font-size: .74rem;
  background: transparent; border: 1px solid var(--card-border);
  color: var(--text-2); cursor: pointer; transition: all .15s;
}
.sort-btn:hover { background: var(--acrylic-hover); }
.sort-btn.active { background: var(--accent); color: #fff; border-color: var(--accent); }
.sort-hint { font-size: .7rem; color: var(--text-3); margin-left: 4px; }

/* ── v10 框架:政府公示 / 用户中心 ── */
.gov-board {
  margin: 18px 0 8px; padding: 16px 18px; border-radius: 20px;
  background: var(--acrylic); border: 1px solid var(--acrylic-border);
  box-shadow: var(--acrylic-shadow); backdrop-filter: var(--panel-blur);
}
.gov-board-head { display:flex; justify-content:space-between; align-items:center; gap:10px; margin-bottom:10px; }
.gov-board-title { font-size:.95rem; font-weight:800; color:var(--text); }
.gov-board-sub { font-size:.74rem; color:var(--text-3); }
.gov-board-list { display:grid; gap:8px; }
.gov-board-item {
  display:flex; justify-content:space-between; gap:10px; align-items:flex-start;
  padding:10px 12px; border-radius:14px; background:var(--acrylic-2);
  border:1px solid var(--acrylic-border); cursor:pointer; transition:var(--ease);
}
.gov-board-item:hover { background:var(--acrylic-hover); }
.gov-board-item .gb-title { font-size:.84rem; font-weight:650; color:var(--text); line-height:1.4; }
.gov-board-item .gb-meta { font-size:.72rem; color:var(--text-3); margin-top:3px; }
.gov-board-item .gb-date { font-size:.72rem; color:var(--text-muted); white-space:nowrap; }

.nav-userbox { display:flex; align-items:center; gap:8px; flex-shrink: 0; }
.nav-level {
  display:none; align-items:center; gap:4px; padding:3px 8px; border-radius:999px;
  font-size:.7rem; font-weight:700; background:var(--acrylic-2); border:1px solid var(--acrylic-border); color:var(--text-2);
}
.nav-level.show { display:inline-flex; }
.nav-checkin {
  display:none; padding:4px 10px; border-radius:999px; font-size:.72rem; font-weight:700;
  border:1px solid var(--card-border); background:transparent; color:var(--text-2); cursor:pointer;
}
.nav-checkin.show { display:inline-flex; }
.nav-checkin.done { opacity:.65; }
.nav-checkin:hover { background:var(--acrylic-hover); }

.oauth-row { display:flex; gap:8px; margin-top:14px; }
.oauth-btn {
  flex:1; padding:9px 10px; border-radius:12px; font-size:.78rem; font-weight:650;
  border:1px solid var(--acrylic-border); background:var(--acrylic-2); color:var(--text-3);
  cursor:not-allowed; opacity:.75; text-align:center;
}
.oauth-hint { font-size:.7rem; color:var(--text-muted); margin-top:8px; text-align:center; }

.user-stat-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:8px; margin:12px 0 16px; }
.user-stat {
  padding:10px 8px; border-radius:14px; background:var(--acrylic-2); border:1px solid var(--acrylic-border); text-align:center;
}
.user-stat .n { font-size:1.05rem; font-weight:800; color:var(--text); }
.user-stat .l { font-size:.68rem; color:var(--text-3); margin-top:2px; }
.menu-btn {
  width:100%; text-align:left; padding:10px 12px; border-radius:12px; border:1px solid var(--acrylic-border);
  background:var(--acrylic-2); color:var(--text-2); font-size:.84rem; font-weight:650; cursor:pointer;
}
.menu-btn:hover { background:var(--acrylic-hover); }
.menu-btn.danger { color:var(--gov); }
.fw-tag {
  display:inline-flex; align-items:center; gap:4px; padding:2px 8px; border-radius:999px;
  font-size:.68rem; font-weight:700; background:rgba(245,158,11,.12); color:#d97706; border:1px solid rgba(245,158,11,.25);
}
.fw-muted { font-size:.76rem; color:var(--text-3); line-height:1.55; }
.skill-pill {
  display:inline-block; padding:4px 10px; border-radius:999px; margin:0 6px 6px 0;
  font-size:.72rem; background:var(--acrylic-2); border:1px solid var(--acrylic-border); color:var(--text-2);
}
.recharge-grid { display:grid; grid-template-columns:1fr 1fr; gap:8px; }
.recharge-card {
  padding:12px; border-radius:14px; border:1px solid var(--acrylic-border); background:var(--acrylic-2);
  cursor:pointer; text-align:center; transition:var(--ease);
}
.recharge-card:hover, .recharge-card.active { border-color:var(--accent); background:rgba(96,165,250,.08); }
.recharge-card .price { font-size:1rem; font-weight:800; color:var(--text); }
.recharge-card .desc { font-size:.72rem; color:var(--text-3); margin-top:4px; }

/* 签到日历 */
.cal-grid { display:grid; grid-template-columns:repeat(7,1fr); gap:4px; margin-top:10px; }
.cal-cell {
  aspect-ratio:1; border-radius:10px; display:grid; place-items:center;
  font-size:.68rem; font-weight:700; color:var(--text-3);
  background:var(--acrylic-2); border:1px solid transparent;
}
.cal-cell.head { background:transparent; border:none; color:var(--text-muted); font-weight:600; aspect-ratio:auto; padding:2px 0; }
.cal-cell.done { background:rgba(16,185,129,.18); color:#059669; border-color:rgba(16,185,129,.25); }
.cal-cell.today { box-shadow:0 0 0 2px rgba(96,165,250,.45) inset; }
.cal-cell.empty { background:transparent; border:none; }
.reward-row { display:flex; flex-wrap:wrap; gap:6px; margin-top:10px; }
.reward-chip {
  padding:4px 8px; border-radius:999px; font-size:.68rem; font-weight:700;
  background:var(--acrylic-2); border:1px solid var(--acrylic-border); color:var(--text-2);
}

/* 星级评价 */
.star-row { display:flex; gap:4px; align-items:center; }
.star-btn {
  width:30px; height:30px; border-radius:8px; border:1px solid var(--acrylic-border);
  background:var(--acrylic-2); color:var(--text-3); cursor:pointer; font-size:.95rem;
}
.star-btn.on { color:#f59e0b; background:rgba(245,158,11,.12); border-color:rgba(245,158,11,.3); }
.rating-badge {
  display:inline-flex; align-items:center; gap:3px; padding:2px 8px; border-radius:999px;
  font-size:.68rem; font-weight:700; background:rgba(245,158,11,.12); color:#d97706;
  border:1px solid rgba(245,158,11,.25);
}
.rating-item { padding:10px 0; border-top:1px solid var(--acrylic-border); }
.rating-item .r-head { display:flex; justify-content:space-between; gap:8px; margin-bottom:4px; }
.rating-item .r-user { font-size:.8rem; font-weight:650; color:var(--text-2); }
.rating-item .r-stars { color:#f59e0b; font-size:.78rem; letter-spacing:1px; }
.rating-item .r-body { font-size:.82rem; color:var(--text); line-height:1.5; }

/* 主页经历时间线 */
.tl-list { display:grid; gap:8px; margin-top:6px; }
.tl-item {
  padding:10px 12px; border-radius:12px; background:var(--acrylic-2);
  border:1px solid var(--acrylic-border);
}
.tl-item .tl-t { font-size:.82rem; font-weight:700; color:var(--text); }
.tl-item .tl-s { font-size:.72rem; color:var(--text-3); margin-top:2px; }
.avatar-wrap { position:relative; width:64px; height:64px; flex-shrink:0; }
.avatar-img, .avatar-fallback {
  width:64px; height:64px; border-radius:18px; object-fit:cover;
  background:var(--acrylic-3); display:grid; place-items:center;
  font-weight:800; color:var(--text); font-size:1.2rem;
}
.avatar-upload-btn {
  position:absolute; right:-4px; bottom:-4px; width:24px; height:24px; border-radius:50%;
  border:none; background:var(--accent); color:#fff; font-size:.7rem; cursor:pointer;
  display:grid; place-items:center;
}
.exp-row { display:grid; grid-template-columns:1fr 1fr auto; gap:6px; margin-bottom:6px; align-items:center; }
.exp-row input { width:100%; }
.exp-del { border:none; background:transparent; color:var(--gov); cursor:pointer; font-size:.78rem; }

/* ── v10.1 UI ── */
.sort-btn.dir-btn { min-width: 36px; }
.page-size-sel, .view-mode-sel {
  height: 30px; border-radius: 999px; border: 1px solid var(--acrylic-border);
  background: var(--acrylic-2); color: var(--text); padding: 0 10px; font-size: .76rem;
}
.extra-filters { display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin: 0 0 12px; }
.extra-filters select {
  height: 32px; border-radius: 999px; border: 1px solid var(--acrylic-border);
  background: var(--acrylic-2); color: var(--text); padding: 0 12px; font-size: .76rem;
}
.list.card-mode {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 12px;
}
.list.card-mode .job-card {
  display: flex; flex-direction: column; min-height: 168px;
}
.list.card-mode .job-head { flex-direction: column; align-items: flex-start; gap: 6px; }
.list.card-mode .job-salary { font-size: 1rem; }
.panel-fold { cursor: pointer; user-select: none; }
.panel-fold .fold-ico { margin-left: 6px; font-size: .7rem; color: var(--text-3); }
.section-collapsed .collapsible-body { display: none !important; }
.hot-panel, .forum-panel {
  margin: 14px 0 18px; padding: 14px 16px; border-radius: var(--radius);
  background: var(--acrylic); border: 1px solid var(--acrylic-border);
}
.hot-grid { display:grid; grid-template-columns: 1fr 1fr; gap: 12px; }
@media (max-width: 800px) { .hot-grid { grid-template-columns: 1fr; } }
.hot-block-title { font-size: .82rem; font-weight: 750; margin-bottom: 8px; color: var(--text-2); }
.hot-bars { display:flex; flex-direction:column; gap:6px; }
.hot-bar-row { display:grid; grid-template-columns: 88px 1fr 36px; gap:8px; align-items:center; font-size:.74rem; }
.hot-bar-row .name { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color: var(--text-2); }
.hot-bar-row .track { height: 8px; border-radius: 999px; background: var(--acrylic-2); overflow:hidden; }
.hot-bar-row .fill { height:100%; border-radius:999px; background: linear-gradient(90deg, var(--brand), #60a5fa); }
.hot-bar-row .n { color: var(--text-3); text-align:right; }
.word-cloud { display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.word-cloud .w {
  padding: 4px 10px; border-radius: 999px; border: 1px solid var(--acrylic-border);
  background: var(--acrylic-2); color: var(--text-2); line-height: 1.2;
}
.forum-stream {
  max-height: 320px; overflow:auto; display:flex; flex-direction:column; gap:8px;
  padding: 8px; border-radius: 12px; background: var(--acrylic-2);
  border: 1px solid var(--acrylic-border); margin-bottom: 10px;
}
.forum-item { padding: 8px 10px; border-radius: 10px; background: var(--acrylic); border: 1px solid var(--acrylic-border); }
.forum-item .fh { display:flex; justify-content:space-between; gap:8px; margin-bottom:4px; font-size:.72rem; color:var(--text-3); }
.forum-item .fn { font-weight:700; color: var(--text-2); }
.forum-item .fb { font-size:.84rem; color:var(--text); line-height:1.45; word-break:break-word; }
.forum-compose { display:flex; gap:8px; align-items:flex-end; }
.forum-compose textarea {
  flex:1; min-height: 64px; resize: vertical; border-radius: 12px;
  border: 1px solid var(--acrylic-border); background: var(--acrylic-2);
  color: var(--text); padding: 10px; font-size: .84rem;
}
.forum-quota { font-size:.72rem; color: var(--text-3); margin-top:6px; }
.sponsor-title-pill {
  display:inline-flex; align-items:center; gap:4px;
  font-size:.68rem; font-weight:800; padding:2px 8px; border-radius:999px;
  color:#7c2d12; background: linear-gradient(135deg,#fde68a,#fbbf24); border:1px solid rgba(245,158,11,.4);
}
.quick-tag-row { display:flex; flex-wrap:wrap; gap:6px; margin: 8px 0; }
.quick-tag {
  padding: 5px 10px; border-radius: 999px; font-size: .72rem; font-weight: 650;
  border: 1px solid var(--acrylic-border); background: var(--acrylic-2);
  color: var(--text-3); cursor: pointer; user-select: none;
}
.quick-tag.active.pos { background: rgba(16,185,129,.15); color: var(--ok); border-color: rgba(16,185,129,.35); }
.quick-tag.active.neg { background: rgba(239,68,68,.12); color: #ef4444; border-color: rgba(239,68,68,.35); }
.job-rest-pill, .job-social-pill {
  font-size: .68rem; font-weight: 700; padding: 2px 8px; border-radius: 999px;
  border: 1px solid var(--acrylic-border); background: var(--acrylic-2); color: var(--text-2);
}

/* ── 法律知识库 ── */
.legal-hub {
  margin: 18px 0 22px;
  padding: 16px 18px 18px;
  border-radius: 18px;
  background: var(--acrylic);
  border: 1px solid var(--acrylic-border);
  box-shadow: var(--shadow-soft, 0 8px 28px rgba(15,23,42,.06));
}
.legal-hub-head {
  display: flex; justify-content: space-between; align-items: flex-start; gap: 12px;
  margin-bottom: 12px;
}
.legal-hub-title { font-size: 1.05rem; font-weight: 800; color: var(--text); letter-spacing: -.2px; }
.legal-hub-sub { font-size: .76rem; color: var(--text-3); margin-top: 4px; line-height: 1.45; max-width: 52rem; }
.legal-tabs {
  display: flex; flex-wrap: wrap; gap: 6px; margin: 4px 0 12px;
}
.legal-tab {
  appearance: none; border: 1px solid var(--acrylic-border);
  background: var(--acrylic-2); color: var(--text-2);
  border-radius: 999px; padding: 6px 12px;
  font-size: .74rem; font-weight: 650; cursor: pointer;
}
.legal-tab:hover { color: var(--text); background: var(--acrylic-3, var(--acrylic-2)); }
.legal-tab.active {
  color: #fff; border-color: transparent;
  background: linear-gradient(135deg, #0f766e, #2563eb);
  box-shadow: 0 6px 16px rgba(37,99,235,.22);
}
.legal-cq-banner {
  display: grid; grid-template-columns: 1.2fr 1fr; gap: 10px;
  margin-bottom: 12px;
}
@media (max-width: 800px) { .legal-cq-banner { grid-template-columns: 1fr; } }
.legal-card {
  padding: 12px 14px; border-radius: 14px;
  background: var(--acrylic-2); border: 1px solid var(--acrylic-border);
}
.legal-card h4 { margin: 0 0 6px; font-size: .86rem; font-weight: 800; color: var(--text); }
.legal-card p, .legal-card li { font-size: .76rem; color: var(--text-2); line-height: 1.5; }
.legal-card ul { margin: 6px 0 0; padding-left: 18px; }
.legal-card .big {
  font-size: 1.15rem; font-weight: 800; color: #0f766e; letter-spacing: -.3px;
}
html[data-theme="dark"] .legal-card .big { color: #5eead4; }
.legal-items { display: flex; flex-direction: column; gap: 10px; }
.legal-item {
  padding: 12px 14px; border-radius: 14px;
  background: var(--acrylic-2); border: 1px solid var(--acrylic-border);
}
.legal-item-head {
  display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-bottom: 6px;
}
.legal-item-title { font-size: .9rem; font-weight: 750; color: var(--text); }
.legal-badge {
  font-size: .64rem; font-weight: 800; padding: 2px 7px; border-radius: 999px;
  background: rgba(37,99,235,.12); color: #1d4ed8; border: 1px solid rgba(37,99,235,.25);
}
.legal-badge.cq { background: rgba(245,158,11,.14); color: #b45309; border-color: rgba(245,158,11,.35); }
.legal-badge.partial { background: rgba(148,163,184,.18); color: var(--text-3); }
.legal-badge.planned { background: rgba(148,163,184,.12); color: var(--text-3); border-style: dashed; }
.legal-item-summary { font-size: .76rem; color: var(--text-3); margin-bottom: 6px; }
.legal-item-points { margin: 0; padding-left: 18px; }
.legal-item-points li { font-size: .76rem; color: var(--text-2); line-height: 1.55; margin: 3px 0; }
.legal-tags { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 8px; }
.legal-tag {
  font-size: .64rem; font-weight: 650; padding: 2px 7px; border-radius: 999px;
  color: var(--text-3); background: var(--acrylic); border: 1px solid var(--acrylic-border);
}
.legal-links { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.legal-hub-foot {
  margin-top: 12px; font-size: .72rem; color: var(--text-3); line-height: 1.5;
  padding-top: 10px; border-top: 1px dashed var(--acrylic-border);
}
.legal-search-row { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 10px; }
.legal-search-row input {
  flex: 1; min-width: 180px; border-radius: 12px; padding: 8px 12px;
  border: 1px solid var(--input-border, var(--acrylic-border));
  background: var(--input-bg, var(--acrylic-2)); color: var(--input-text, var(--text));
  font-size: .8rem;
}


/* ── B1 收藏 / 对比 ── */
.job-card { position: relative; }
.job-actions {
  display: flex; gap: 6px; flex-wrap: wrap; margin-top: 8px; align-items: center;
}
.job-act-btn {
  font-size: .68rem; font-weight: 700; padding: 4px 10px; border-radius: 999px;
  border: 1px solid var(--acrylic-border); background: var(--acrylic-2);
  color: var(--text-2); cursor: pointer; transition: var(--ease, .15s ease);
}
.job-act-btn:hover { border-color: rgba(96,165,250,.45); color: var(--text); }
.job-act-btn.fav-on {
  color: #e11d48; background: rgba(244,63,94,.1); border-color: rgba(244,63,94,.35);
}
.job-act-btn.cmp-on {
  color: #1d4ed8; background: rgba(37,99,235,.1); border-color: rgba(37,99,235,.35);
}
.compare-tray {
  position: fixed; left: 50%; transform: translateX(-50%);
  bottom: 18px; z-index: 150; max-width: min(920px, calc(100vw - 24px));
  width: 100%; padding: 12px 14px; border-radius: 18px;
  background: var(--modal-surface, rgba(255,255,255,.94));
  border: 1px solid var(--acrylic-border); box-shadow: var(--acrylic-shadow-lg, 0 16px 40px rgba(15,23,42,.18));
  backdrop-filter: blur(16px); display: none;
}
.compare-tray.show { display: block; }
.compare-tray-head {
  display: flex; justify-content: space-between; align-items: center; gap: 10px; margin-bottom: 8px;
}
.compare-tray-title { font-size: .82rem; font-weight: 800; color: var(--text); }
.compare-tray-chips { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 10px; }
.compare-chip {
  font-size: .7rem; font-weight: 650; padding: 4px 8px; border-radius: 999px;
  background: var(--acrylic-2); border: 1px solid var(--acrylic-border); color: var(--text-2);
  max-width: 180px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.compare-chip button {
  border: 0; background: transparent; color: var(--text-3); cursor: pointer; margin-left: 4px; font-weight: 800;
}
.compare-tray-actions { display: flex; gap: 8px; flex-wrap: wrap; justify-content: flex-end; }
.compare-table-wrap { overflow-x: auto; margin-top: 8px; }
.compare-table {
  width: 100%; border-collapse: collapse; font-size: .74rem; min-width: 520px;
}
.compare-table th, .compare-table td {
  border: 1px solid var(--acrylic-border); padding: 8px 10px; vertical-align: top;
  color: var(--text-2); background: var(--acrylic-2);
}
.compare-table th {
  background: var(--acrylic); color: var(--text); font-weight: 750; text-align: left;
}
.compare-table td.metric { font-weight: 700; color: var(--text-3); width: 88px; white-space: nowrap; }
.compare-better { color: #059669 !important; font-weight: 800; }
.fav-limit-hint { font-size: .72rem; color: var(--text-3); margin: 6px 0 10px; }

/* 中宽屏递进收起：先次要信息，再辅助菜单，保证主菜单横排可读 */
@media (max-width: 1280px) {
  .nav-inner { gap: 10px; padding: 10px 14px; }
  .nav-link { padding: 6px 10px; font-size: .76rem; }
  .nav-right { gap: 6px; }
  .nav-timebox { max-width: 150px; }
  .nav-pill.data-updated { max-width: 120px; }
}
@media (max-width: 1120px) {
  .nav-sub { display: none; }
  .nav-sponsor { display: none; }
  .nav-level { display: none !important; }
  .nav-link { padding: 5px 8px; font-size: .74rem; }
}
@media (max-width: 1024px) {
  /* 辅助入口：HTML 需带 .nav-utility（收藏/对比） */
  .nav-link.nav-utility { display: none; }
  .nav-timebox { display: none; }
  .nav-checkin { display: none !important; }
}
@media (max-width: 960px) {
  .nav-link { padding: 5px 7px; font-size: .72rem; }
  .nav-vip { transform: scale(0.92); transform-origin: center; }
}

/* ── Mobile responsive enhancement ── */
@media (max-width: 640px) {
  .nav-links { gap: 4px; }
  .nav-link { font-size: .72rem; padding: 4px 6px; white-space: nowrap; flex: 0 0 auto; }
  .job-card { padding: 12px; border-radius: 14px; }
  .job-title { font-size: .92rem; }
  .job-meta { gap: 4px; flex-wrap: wrap; }
  .compare-table { font-size: .68rem; min-width: 320px; }
  .modal-card { max-width: 96%; border-radius: 18px; padding: 18px; }
  .compare-tray { bottom: 8px; left: 8px; right: 8px; border-radius: 14px; }
  .filter-hint { font-size: .72rem; }
  .stats { grid-template-columns: 1fr 1fr; gap: 8px; }
  .stat-box { padding: 10px; border-radius: 12px; }
  .stat-box .stat-num { font-size: 1.3rem; }
  .nav-pill { display: none; }
  .hero h1 { font-size: 1.4rem; }
  .hero-sub { font-size: .82rem; }
  .hourly-stats { grid-template-columns: 1fr; }
  .market-grid { grid-template-columns: 1fr; }
  .legal-cq-banner { grid-template-columns: 1fr; }
  .hot-grid { grid-template-columns: 1fr; }
}
@media (max-width: 400px) {
  .nav-brand .nav-sub { display: none; }
  .nav-links { gap: 2px; }
  .nav-link { font-size: .68rem; padding: 3px 4px; white-space: nowrap; flex: 0 0 auto; }
  .shell { padding: 0 8px 40px; }
}

/* ── Skeleton shimmer ── */
@keyframes sk-shimmer {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}
.skeleton-card.shimmer {
  background: linear-gradient(90deg, var(--acrylic-2) 25%, var(--acrylic-3, rgba(255,255,255,.06)) 50%, var(--acrylic-2) 75%);
  background-size: 200% 100%;
  animation: sk-shimmer 1.5s infinite linear;
}



/* ── multipage 2026-07-21 ── */
.nav-links a.nav-link.is-active,
.nav-links a.nav-link.active { color: var(--brand); font-weight: 750; }
.promo-rail {
  display: grid;
  grid-template-columns: 1.4fr 1fr 1fr;
  gap: 12px;
  margin: 0 0 18px;
}
@media (max-width: 900px) {
  .promo-rail { grid-template-columns: 1fr; }
}
.promo-card {
  position: relative;
  border-radius: 18px;
  overflow: hidden;
  min-height: 140px;
  border: 1px solid var(--acrylic-border);
  background: var(--acrylic-2);
  box-shadow: var(--acrylic-shadow, 0 8px 24px rgba(15,23,42,.08));
  display: block;
  text-decoration: none;
  color: inherit;
  transition: transform .2s ease, box-shadow .2s ease;
}
.promo-card:hover { transform: translateY(-2px); }
.promo-card img {
  width: 100%; height: 100%; min-height: 140px;
  object-fit: cover; display: block;
  filter: saturate(1.05);
}
.promo-card .promo-overlay {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(15,23,42,.05) 20%, rgba(15,23,42,.72) 100%);
  display: flex; flex-direction: column; justify-content: flex-end;
  padding: 14px 16px;
}
.promo-card .promo-kicker {
  font-size: .68rem; font-weight: 700; letter-spacing: .04em;
  color: rgba(255,255,255,.78); text-transform: uppercase;
}
.promo-card .promo-title {
  font-size: 1.05rem; font-weight: 800; color: #fff; margin-top: 4px;
}
.promo-card .promo-sub {
  font-size: .78rem; color: rgba(255,255,255,.88); margin-top: 2px;
}
.dash-strip {
  display: flex; flex-wrap: wrap; gap: 10px 14px;
  padding: 12px 14px; margin: 0 0 16px;
  border-radius: 14px;
  border: 1px solid var(--acrylic-border);
  background: var(--acrylic-2);
  font-size: .82rem; color: var(--text-2);
}
.dash-strip .dash-item strong {
  color: var(--text); font-weight: 800; margin-right: 4px;
}
.dash-columns {
  display: grid;
  grid-template-columns: 1.35fr 1fr;
  gap: 16px;
  margin-bottom: 18px;
  align-items: start;
}
@media (max-width: 960px) {
  .dash-columns { grid-template-columns: 1fr; }
}
.dash-col {
  border-radius: 16px;
  border: 1px solid var(--acrylic-border);
  background: var(--acrylic-1, var(--acrylic-2));
  padding: 12px 12px 14px;
}
.dash-col-head {
  display: flex; justify-content: space-between; align-items: baseline;
  gap: 8px; margin-bottom: 10px; padding: 0 4px;
}
.dash-col-title { font-size: .95rem; font-weight: 800; color: var(--text); }
.dash-col-link {
  font-size: .78rem; font-weight: 700; color: var(--brand);
  text-decoration: none; cursor: pointer;
}
.dash-entry-row {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px;
  margin: 12px 0 20px;
}
@media (max-width: 720px) {
  .dash-entry-row { grid-template-columns: 1fr; }
}
.dash-entry {
  border-radius: 14px;
  border: 1px solid var(--acrylic-border);
  background: var(--acrylic-2);
  padding: 14px 14px;
  text-decoration: none; color: inherit;
  transition: border-color .15s ease;
}
.dash-entry:hover { border-color: rgba(59,130,246,.45); }
.dash-entry h3 { margin: 0 0 4px; font-size: .92rem; font-weight: 800; }
.dash-entry p { margin: 0; font-size: .78rem; color: var(--text-3); line-height: 1.4; }
.page-banner {
  padding: 18px 0 8px;
}
.page-banner h1 {
  font-size: clamp(1.35rem, 2.6vw, 1.75rem);
  font-weight: 800; margin: 0 0 6px; color: var(--text);
}
.page-banner p { margin: 0; color: var(--text-3); font-size: .9rem; }
body[data-page="overview"] .section-jobs-full { display: none !important; }
#featuredJobs .job-card { margin-bottom: 8px; }
#featuredJobs .list { display: flex; flex-direction: column; gap: 8px; }
.forum-only-note, .legal-only-note {
  font-size: .8rem; color: var(--text-3); margin: 0 0 12px;
}

/* 岗位页独立地理选择 */
.jobs-geo-wrap {
  margin: 8px 0 16px;
  padding: 12px 14px 10px;
  border-radius: 16px;
  border: 1px solid var(--acrylic-border);
  background: var(--acrylic-2);
}
.jobs-geo-head {
  display: flex; justify-content: space-between; align-items: flex-start;
  gap: 12px; margin-bottom: 10px; flex-wrap: wrap;
}
.jobs-geo-title { font-size: .95rem; font-weight: 800; color: var(--text); }
.jobs-geo-sub { font-size: .78rem; color: var(--text-3); margin-top: 2px; }
body[data-page="jobs"] .jobs-geo-wrap .region-bar { margin: 0; }
body[data-page="jobs"] #jobsGeoSub strong { color: var(--text); font-weight: 700; }

/* P0 态势条增强 */
.dash-strip { gap: 8px 12px; }
.dash-strip .dash-item {
  display: inline-flex; align-items: baseline; gap: 2px;
  padding: 4px 8px; border-radius: 999px;
  background: rgba(255,255,255,.18);
  border: 1px solid rgba(255,255,255,.35);
}
[data-theme="dark"] .dash-strip .dash-item {
  background: rgba(15,23,42,.35);
  border-color: rgba(148,163,184,.25);
}
.dash-strip .dash-item.is-muted { opacity: .85; }
.dash-strip .dash-item .dash-hint {
  margin-left: 4px; font-size: .72rem; color: var(--text-3); font-weight: 500;
}
.dash-p0-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  margin: 0 0 16px;
}
@media (max-width: 960px) {
  .dash-p0-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 520px) {
  .dash-p0-grid { grid-template-columns: 1fr; }
}
.dash-p0-card {
  border-radius: 14px;
  border: 1px solid var(--acrylic-border);
  background: var(--acrylic-2);
  padding: 12px 12px 10px;
}
.dash-p0-card .k { font-size: .72rem; color: var(--text-3); font-weight: 700; letter-spacing: .02em; }
.dash-p0-card .v { font-size: 1.15rem; font-weight: 800; color: var(--text); margin-top: 4px; }
.dash-p0-card .s { font-size: .72rem; color: var(--text-3); margin-top: 4px; line-height: 1.35; }

/* 地图页 · 筹备占位 */
.map-soon-card {
  max-width: 860px;
  margin: 8px auto 40px;
  padding: 22px 22px 18px;
  border-radius: 20px;
  border: 1px solid var(--acrylic-border);
  background: linear-gradient(145deg, var(--acrylic-3), var(--acrylic-2));
  box-shadow: var(--acrylic-shadow);
}
.map-soon-badge {
  display: inline-block;
  font-size: .72rem; font-weight: 800; letter-spacing: .06em;
  color: #0369a1;
  background: rgba(56,189,248,.18);
  border: 1px solid rgba(56,189,248,.35);
  padding: 4px 10px; border-radius: 999px;
}
.map-soon-title {
  margin: 12px 0 8px;
  font-size: 1.35rem; font-weight: 800; color: var(--text);
}
.map-soon-lead {
  margin: 0 0 16px;
  font-size: .9rem; line-height: 1.55; color: var(--text-2);
}
.map-soon-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  margin-bottom: 16px;
}
@media (max-width: 640px) {
  .map-soon-grid { grid-template-columns: 1fr; }
}
.map-soon-item {
  padding: 12px 12px;
  border-radius: 14px;
  border: 1px solid var(--acrylic-border);
  background: rgba(255,255,255,.22);
}
.map-soon-item .k { font-size: .82rem; font-weight: 800; color: var(--text); }
.map-soon-item .s { margin-top: 4px; font-size: .78rem; color: var(--text-3); line-height: 1.45; }
.map-soon-roadmap { display: flex; flex-direction: column; gap: 8px; margin: 8px 0 16px; }
.map-soon-step {
  display: flex; align-items: flex-start; gap: 10px;
  font-size: .84rem; color: var(--text-2);
}
.map-soon-step span {
  flex: 0 0 22px; height: 22px; border-radius: 50%;
  display: inline-flex; align-items: center; justify-content: center;
  font-size: .72rem; font-weight: 800; color: #fff;
  background: linear-gradient(135deg, #3b82f6, #0ea5e9);
}
.map-soon-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 10px; }
.map-soon-foot { margin: 0; font-size: .75rem; color: var(--text-muted); }

/* 总览：找岗引导（搜索已迁岗位页） */
.overview-search-cta {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between;
  gap: 12px 16px;
  margin: 0 0 16px;
  padding: 14px 16px;
  border-radius: 16px;
  border: 1px solid var(--acrylic-border);
  background: linear-gradient(120deg, rgba(59,130,246,.12), rgba(14,165,233,.10));
}
.overview-search-cta-title { font-weight: 800; font-size: .95rem; color: var(--text); }
.overview-search-cta-sub { font-size: .78rem; color: var(--text-3); margin-top: 2px; }
.btn-primary-cta {
  display: inline-flex; align-items: center;
  padding: 10px 16px; border-radius: 999px;
  font-size: .86rem; font-weight: 800; text-decoration: none;
  color: #fff;
  background: linear-gradient(135deg, #2563eb, #0ea5e9);
  box-shadow: 0 8px 20px rgba(37,99,235,.25);
}
.btn-primary-cta:hover { filter: brightness(1.05); }
.jobs-search-note {
  margin: 0 0 8px;
  font-size: .78rem; color: var(--text-3);
}
body[data-page="jobs"] .search-panel { margin-bottom: 14px; }

/* 本站动态（替代岗位指标 pills/六卡） */
.site-pulse {
  margin: 0 0 18px;
  padding: 16px 16px 14px;
  border-radius: 18px;
  border: 1px solid var(--acrylic-border);
  background: var(--acrylic-2);
  box-shadow: var(--acrylic-shadow);
}
.site-pulse-head {
  display: flex; justify-content: space-between; align-items: flex-start;
  gap: 10px; margin-bottom: 12px;
}
.site-pulse-title { font-size: 1.02rem; font-weight: 800; color: var(--text); }
.site-pulse-sub { font-size: .78rem; color: var(--text-3); margin-top: 2px; }
.site-pulse-badge {
  font-size: .7rem; font-weight: 800; letter-spacing: .04em;
  padding: 4px 10px; border-radius: 999px;
  color: #6d28d9;
  background: rgba(167,139,250,.2);
  border: 1px solid rgba(167,139,250,.35);
}
.site-pulse-kpis {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  margin-bottom: 14px;
}
@media (max-width: 900px) {
  .site-pulse-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
.pulse-kpi {
  padding: 12px 12px 10px;
  border-radius: 14px;
  border: 1px solid var(--acrylic-border);
  background: rgba(255,255,255,.22);
}
.pulse-kpi .k { font-size: .72rem; font-weight: 700; color: var(--text-3); }
.pulse-kpi .v { font-size: 1.25rem; font-weight: 800; color: var(--text); margin-top: 4px; font-variant-numeric: tabular-nums; }
.pulse-kpi .s { font-size: .7rem; color: var(--text-muted); margin-top: 4px; line-height: 1.35; }
.site-pulse-cols {
  display: grid;
  grid-template-columns: 1.2fr 1fr;
  gap: 12px;
}
@media (max-width: 800px) {
  .site-pulse-cols { grid-template-columns: 1fr; }
}
.site-pulse-col {
  padding: 12px;
  border-radius: 14px;
  border: 1px solid var(--acrylic-border);
  background: rgba(255,255,255,.14);
}
.site-pulse-col-title {
  font-size: .82rem; font-weight: 800; color: var(--text);
  margin-bottom: 8px;
}
.site-pulse-list { display: flex; flex-direction: column; gap: 6px; }
.pulse-look-item {
  display: flex; justify-content: space-between; align-items: baseline; gap: 8px;
  padding: 8px 8px;
  border-radius: 10px;
  text-decoration: none; color: inherit;
  border: 1px solid transparent;
}
.pulse-look-item:hover {
  border-color: rgba(59,130,246,.35);
  background: rgba(255,255,255,.2);
}
.pulse-look-item .t {
  font-size: .82rem; font-weight: 700; color: var(--text);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.pulse-look-item .m { font-size: .72rem; color: var(--text-3); flex-shrink: 0; }
.site-pulse-links {
  display: flex; flex-wrap: wrap; gap: 8px;
}
.site-pulse-links a {
  font-size: .78rem; font-weight: 700;
  padding: 6px 10px; border-radius: 999px;
  text-decoration: none; color: var(--text-2);
  border: 1px solid var(--acrylic-border);
  background: rgba(255,255,255,.2);
}
.site-pulse-links a:hover { border-color: rgba(59,130,246,.4); color: var(--text); }
.site-pulse-feedback p {
  margin: 0 0 8px; font-size: .78rem; color: var(--text-3); line-height: 1.45;
}
.site-pulse-actions { display: flex; flex-wrap: wrap; gap: 8px; }

/* 本站动态瘦身：不与精选/热点看板抢岗位列表 */
.site-pulse-slim .site-pulse-kpis { margin-bottom: 10px; }
.site-pulse-foot {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between;
  gap: 10px;
  padding-top: 4px;
}
.featured-foot {
  margin-top: 10px; font-size: .82rem; font-weight: 700;
}
.featured-foot a { color: var(--brand, #2563eb); text-decoration: none; }
.pulse-job-link { display: block; text-decoration: none; color: inherit; }


/* map schematic */
.map-visual-wrap {
  margin: 16px 0 20px;
  padding: 16px 16px 12px;
  border-radius: 18px;
  background: var(--card, rgba(255,255,255,.55));
  border: 1px solid var(--border, rgba(120,130,160,.18));
  backdrop-filter: blur(12px);
}
.map-visual-head {
  display: flex; flex-wrap: wrap; gap: 10px 16px;
  align-items: flex-start; justify-content: space-between;
  margin-bottom: 10px;
}
.map-visual-title { font-weight: 750; font-size: 1rem; }
.map-visual-sub { font-size: .78rem; opacity: .72; margin-top: 2px; }
.map-visual-legend {
  display: flex; flex-wrap: wrap; gap: 8px 12px;
  font-size: .75rem; opacity: .85;
}
.map-visual-legend .dot {
  display: inline-block; width: 8px; height: 8px; border-radius: 50%;
  margin-right: 4px; vertical-align: middle;
}
.map-visual-legend .dot.metro { background: #638cff; }
.map-visual-legend .dot.ne { background: #34d399; }
.map-visual-legend .dot.se { background: #fbbf24; }
.map-visual-legend .dot.core { background: #4f46e5; }
.map-canvas {
  border-radius: 14px;
  background: linear-gradient(160deg, rgba(248,250,255,.9), rgba(240,248,255,.55));
  border: 1px solid rgba(120,140,180,.12);
  overflow: hidden;
}
[data-theme="dark"] .map-canvas {
  background: linear-gradient(160deg, rgba(20,24,40,.9), rgba(15,20,35,.7));
}
.cq-map-svg { width: 100%; height: auto; display: block; color: var(--text, #334); }
.map-quick-links { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.map-quick-links .chip {
  display: inline-flex; padding: 6px 12px; border-radius: 999px;
  border: 1px solid var(--border, rgba(120,130,160,.2));
  text-decoration: none; color: inherit; font-size: .8rem;
}

/* tianditu map */
.map-tdt-wrap {
  margin: 16px 0 12px;
  padding: 16px 16px 12px;
  border-radius: 18px;
  background: var(--card, rgba(255,255,255,.55));
  border: 1px solid var(--border, rgba(120,130,160,.18));
  backdrop-filter: blur(12px);
}
.tianditu-map {
  width: 100%;
  height: min(62vh, 520px);
  min-height: 360px;
  border-radius: 14px;
  overflow: hidden;
  border: 1px solid rgba(120,140,180,.15);
  background: #e8eef8;
}
[data-theme="dark"] .tianditu-map { background: #1a2030; }
.map-tdt-status {
  margin-top: 8px;
  font-size: .78rem;
  opacity: .78;
}
.map-tdt-status.ok { color: #059669; opacity: 1; }
.map-tdt-status.err { color: #dc2626; opacity: 1; }
.map-visual-wrap.is-collapsed .map-canvas,
.map-visual-wrap.is-collapsed .map-quick-links { display: none; }
.map-visual-wrap.is-collapsed .map-visual-sub::after {
  content: "（已折叠，可点「展开示意底图」）";
  opacity: .7;
}
.map-visual-wrap.is-collapsed:not(.is-open) .map-visual-legend { display: none; }
.map-quick-links button.chip {
  cursor: pointer;
  font: inherit;
  background: transparent;
  color: inherit;
}

/* 登录成功瞬间高亮导航 */
#navLoginBtn.logged-in {
  font-weight: 700;
  border-color: rgba(16,185,129,.45);
  background: rgba(16,185,129,.12);
  color: var(--text);
}
#navLoginBtn.auth-just-in {
  animation: authInPulse 1.2s ease 2;
  box-shadow: 0 0 0 0 rgba(16,185,129,.45);
}
@keyframes authInPulse {
  0% { box-shadow: 0 0 0 0 rgba(16,185,129,.5); }
  70% { box-shadow: 0 0 0 10px rgba(16,185,129,0); }
  100% { box-shadow: 0 0 0 0 rgba(16,185,129,0); }
}
#toast { z-index: 400 !important; }


/* ════════════════════════════════════════
   独立个人主页 profile.html · GitHub/论坛风
   ════════════════════════════════════════ */
.pf-page { max-width: 1080px; margin: 0 auto; padding: 18px 16px 48px; }
.pf-loading, .pf-gate { padding: 48px 16px; text-align: center; color: var(--text-2); }
.pf-gate .pf-card { max-width: 480px; margin: 0 auto; text-align: left; }
.pf-gate h1 { margin: 0 0 8px; font-size: 1.35rem; color: var(--text); }
.pf-hero {
  position: relative; border-radius: 20px; overflow: hidden;
  border: 1px solid var(--acrylic-border); background: var(--acrylic);
  backdrop-filter: blur(16px) saturate(1.2); margin-bottom: 16px;
  box-shadow: var(--acrylic-shadow, 0 10px 30px rgba(15,23,42,.08));
}
.pf-hero.is-vip .pf-cover {
  background:
    radial-gradient(ellipse 80% 80% at 20% 0%, rgba(251,191,36,.45), transparent 55%),
    radial-gradient(ellipse 70% 70% at 90% 30%, rgba(59,130,246,.35), transparent 50%),
    linear-gradient(135deg, #1e3a5f, #0f172a 60%, #312e81);
}
.pf-cover {
  height: 120px;
  background:
    radial-gradient(ellipse 90% 80% at 15% 0%, rgba(59,130,246,.4), transparent 55%),
    radial-gradient(ellipse 70% 70% at 85% 20%, rgba(14,165,233,.3), transparent 50%),
    linear-gradient(135deg, #1e40af, #0f172a 55%, #164e63);
}
html[data-theme="light"] .pf-cover {
  background:
    radial-gradient(ellipse 90% 80% at 15% 0%, rgba(59,130,246,.35), transparent 55%),
    radial-gradient(ellipse 70% 70% at 85% 20%, rgba(168,85,247,.22), transparent 50%),
    linear-gradient(135deg, #dbeafe, #e0e7ff 50%, #cffafe);
}
.pf-hero-inner {
  display: flex; flex-wrap: wrap; gap: 16px; justify-content: space-between;
  padding: 0 20px 16px; margin-top: -36px; align-items: flex-end;
}
.pf-hero-left { display: flex; gap: 14px; align-items: flex-end; flex: 1; min-width: 240px; }
.pf-avatar-wrap { position: relative; flex-shrink: 0; }
.pf-avatar {
  width: 88px; height: 88px; border-radius: 22px; object-fit: cover;
  border: 3px solid var(--modal-surface, #fff);
  box-shadow: 0 8px 24px rgba(15,23,42,.18); background: var(--acrylic-3);
  display: grid; place-items: center; font-weight: 800; font-size: 1.6rem; color: var(--text);
}
.pf-avatar.lg { width: 96px; height: 96px; border-radius: 24px; }
.pf-avatar-fallback { background: linear-gradient(135deg, #3b82f6, #06b6d4); color: #fff; }
.pf-avatar-edit {
  position: absolute; right: -4px; bottom: -4px; width: 30px; height: 30px; border-radius: 50%;
  background: var(--brand, #3b82f6); color: #fff; display: grid; place-items: center;
  cursor: pointer; font-size: .78rem; border: 2px solid var(--modal-surface, #fff);
}
.pf-name { margin: 0; font-size: 1.45rem; font-weight: 800; color: var(--text); line-height: 1.2; }
.pf-handle { font-size: .78rem; color: var(--text-3); margin-top: 2px; }
.pf-badges { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.pf-badge {
  font-size: .68rem; font-weight: 750; padding: 3px 8px; border-radius: 999px;
  border: 1px solid var(--acrylic-border); background: var(--acrylic-2); color: var(--text-2);
}
.pf-badge.vip { background: rgba(245,158,11,.18); color: #b45309; border-color: rgba(245,158,11,.4); }
.pf-badge.status { background: rgba(16,185,129,.14); color: #047857; border-color: rgba(16,185,129,.35); }
.pf-badge.sponsor { background: linear-gradient(135deg,#fde68a,#fbbf24); color: #7c2d12; border: none; }
.pf-badge.admin { background: rgba(99,102,241,.15); color: #4338ca; }
.pf-badge.lv { color: var(--text-2); }
.pf-bio { margin: 10px 0 0; font-size: .9rem; color: var(--text-2); line-height: 1.5; max-width: 520px; }
.pf-hero-actions { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; padding-bottom: 4px; }
.pf-stats {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px;
  padding: 0 16px 16px; border-top: 1px solid var(--acrylic-border); margin-top: 4px; padding-top: 14px;
}
.pf-stats.mini { grid-template-columns: repeat(3, 1fr); border: none; margin: 0; padding: 0; }
.pf-stat {
  text-align: center; padding: 10px 6px; border-radius: 14px;
  background: var(--acrylic-2); border: 1px solid var(--acrylic-border);
}
.pf-stat .n { font-size: 1.05rem; font-weight: 800; color: var(--text); }
.pf-stat .l { font-size: .68rem; color: var(--text-3); margin-top: 2px; }
.pf-layout { display: grid; grid-template-columns: 280px 1fr; gap: 16px; align-items: start; }
@media (max-width: 860px) {
  .pf-layout { grid-template-columns: 1fr; }
  .pf-stats { grid-template-columns: repeat(2, 1fr); }
  .pf-hero-inner { margin-top: -28px; }
  .pf-avatar, .pf-avatar.lg { width: 76px; height: 76px; border-radius: 18px; }
}
.pf-card {
  padding: 14px 16px; border-radius: 16px; margin-bottom: 12px;
  background: var(--acrylic); border: 1px solid var(--acrylic-border);
  backdrop-filter: blur(12px);
}
.pf-card-title { font-size: .82rem; font-weight: 800; color: var(--text); margin-bottom: 10px; }
.pf-card-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; }
.pf-card-head .pf-card-title { margin: 0; }
.pf-meta-row {
  display: flex; justify-content: space-between; gap: 10px; font-size: .8rem;
  padding: 6px 0; border-bottom: 1px dashed var(--acrylic-border); color: var(--text-3);
}
.pf-meta-row:last-child { border-bottom: none; }
.pf-meta-row b { color: var(--text); font-weight: 650; text-align: right; }
.pf-skills { display: flex; flex-wrap: wrap; gap: 6px; }
.pf-skill {
  font-size: .72rem; font-weight: 700; padding: 4px 10px; border-radius: 999px;
  background: rgba(59,130,246,.12); color: var(--brand, #2563eb); border: 1px solid rgba(59,130,246,.25);
}
.pf-empty { font-size: .8rem; color: var(--text-3); padding: 8px 0; }
.pf-empty.err { color: #ef4444; }
.pf-tip-text, .pf-hint { font-size: .74rem; color: var(--text-3); line-height: 1.5; margin: 0; }
.pf-hint { margin-top: 10px; }
.pf-tabs {
  display: flex; flex-wrap: wrap; gap: 4px; margin-bottom: 12px; padding: 4px;
  border-radius: 14px; background: var(--acrylic); border: 1px solid var(--acrylic-border);
}
.pf-tab {
  border: none; background: transparent; color: var(--text-3); font-weight: 700;
  font-size: .8rem; padding: 8px 12px; border-radius: 10px; cursor: pointer;
}
.pf-tab.active { background: var(--acrylic-3); color: var(--brand, #2563eb); }
.pf-lead { font-size: .9rem; color: var(--text-2); line-height: 1.55; margin: 0 0 14px; }
.pf-sec-label { font-size: .75rem; font-weight: 800; color: var(--text-2); margin: 0 0 8px; }
.pf-overview-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
@media (max-width: 700px) { .pf-overview-grid { grid-template-columns: 1fr; } }
.pf-timeline { display: flex; flex-direction: column; gap: 0; }
.pf-tl-item { display: grid; grid-template-columns: 16px 1fr; gap: 10px; }
.pf-tl-dot {
  width: 10px; height: 10px; border-radius: 50%; margin-top: 6px;
  background: var(--brand, #3b82f6); box-shadow: 0 0 0 3px rgba(59,130,246,.2);
}
.pf-tl-dot.work { background: #10b981; box-shadow: 0 0 0 3px rgba(16,185,129,.2); }
.pf-tl-body { padding-bottom: 12px; border-left: none; }
.pf-tl-title { font-size: .86rem; font-weight: 750; color: var(--text); }
.pf-tl-sub { font-size: .74rem; color: var(--text-3); margin-top: 2px; line-height: 1.4; }
.pf-social-row {
  display: flex; justify-content: space-between; font-size: .8rem; padding: 5px 0; color: var(--text-3);
}
.pf-social-row b { color: var(--text); }
.pf-toast {
  position: fixed; left: 50%; bottom: 28px; transform: translateX(-50%) translateY(20px);
  background: rgba(15,23,42,.92); color: #fff; padding: 10px 16px; border-radius: 999px;
  font-size: .84rem; opacity: 0; pointer-events: none; transition: .2s; z-index: 500;
}
.pf-toast.show { opacity: 1; transform: translateX(-50%) translateY(0); }
.pf-toast.err { background: rgba(185,28,28,.95); }
.pf-modal-mask {
  position: fixed; inset: 0; background: var(--modal-scrim, rgba(15,23,42,.48));
  display: none; align-items: center; justify-content: center; z-index: 450; padding: 16px;
}
.pf-modal-mask.show { display: flex; }
.pf-modal {
  width: min(560px, 100%); max-height: min(88vh, 720px); overflow: auto;
  background: var(--modal-surface, #fff); border-radius: 18px; padding: 16px 18px;
  border: 1px solid var(--acrylic-border); box-shadow: 0 20px 50px rgba(0,0,0,.2);
}
.pf-modal-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px; }
.pf-modal-title { font-weight: 800; font-size: 1rem; color: var(--text); }
.pf-modal-close { border: none; background: transparent; font-size: 1rem; cursor: pointer; color: var(--text-3); }
.pf-form label { display: block; font-size: .76rem; font-weight: 700; color: var(--text-2); margin: 8px 0; }
.pf-form input, .pf-form textarea, .pf-form select {
  width: 100%; margin-top: 4px; border-radius: 10px; border: 1px solid var(--acrylic-border);
  background: var(--acrylic-2); color: var(--text); padding: 8px 10px; font-size: .84rem;
  box-sizing: border-box;
}
.pf-form textarea { min-height: 72px; resize: vertical; }
.pf-form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.pf-exp-row {
  display: grid; grid-template-columns: 1fr 1fr auto auto; gap: 6px; margin-bottom: 6px; align-items: center;
}
.pf-exp-row.work { grid-template-columns: 1fr 1fr 1fr auto; }
.pf-exp-row .full { grid-column: 1 / -2; }
.pf-x { border: none; background: transparent; color: #ef4444; cursor: pointer; font-size: .78rem; }
.pf-modal-actions { display: flex; justify-content: flex-end; gap: 8px; margin-top: 14px; }
.btn-xs { font-size: .72rem !important; padding: 4px 10px !important; }
.nav-link[href="profile.html"].is-active,
.nav-link[href="profile.html"].active { color: var(--brand); font-weight: 750; }

/* ── profile social v2: heat / fav / forum / cover ── */
.pf-heat-wrap { overflow-x: auto; }
.pf-heat-grid { display: flex; gap: 3px; min-width: min(100%, 720px); padding: 4px 0 8px; }
.pf-heat-col { display: flex; flex-direction: column; gap: 3px; }
.pf-heat-cell {
  width: 11px; height: 11px; border-radius: 2px;
  background: rgba(148,163,184,.22); display: block;
}
html[data-theme="dark"] .pf-heat-cell { background: rgba(148,163,184,.15); }
.pf-heat-cell.l1 { background: #bbf7d0; }
.pf-heat-cell.l2 { background: #4ade80; }
.pf-heat-cell.l3 { background: #16a34a; }
.pf-heat-cell.l4 { background: #166534; }
html[data-theme="dark"] .pf-heat-cell.l1 { background: #14532d; }
html[data-theme="dark"] .pf-heat-cell.l2 { background: #15803d; }
html[data-theme="dark"] .pf-heat-cell.l3 { background: #22c55e; }
html[data-theme="dark"] .pf-heat-cell.l4 { background: #86efac; }
.pf-heat-cell.empty { background: transparent; }
.pf-heat-meta {
  display: flex; flex-wrap: wrap; gap: 10px 14px; align-items: center;
  font-size: .74rem; color: var(--text-3); margin-top: 6px;
}
.pf-heat-meta b { color: var(--text); }
.pf-heat-legend { display: inline-flex; align-items: center; gap: 3px; margin-left: auto; }
.pf-heat-legend i {
  width: 10px; height: 10px; border-radius: 2px; display: inline-block;
  background: rgba(148,163,184,.22);
}
.pf-heat-legend i.l1 { background: #bbf7d0; }
.pf-heat-legend i.l2 { background: #4ade80; }
.pf-heat-legend i.l3 { background: #16a34a; }
.pf-heat-legend i.l4 { background: #166534; }

.pf-fav-list { display: flex; flex-direction: column; gap: 8px; }
.pf-fav-item {
  display: block; padding: 10px 12px; border-radius: 12px; text-decoration: none;
  border: 1px solid var(--acrylic-border); background: var(--acrylic-2); color: inherit;
  transition: border-color .15s, transform .15s;
}
.pf-fav-item:hover { border-color: var(--brand, #3b82f6); transform: translateY(-1px); }
.pf-fav-title { font-size: .88rem; font-weight: 750; color: var(--text); }
.pf-fav-sub { font-size: .74rem; color: var(--text-3); margin-top: 3px; }
.pf-fav-note { margin-bottom: 8px; font-size: .74rem; }
.pf-warn { color: #b45309; background: rgba(245,158,11,.12); padding: 4px 8px; border-radius: 8px; }
.pf-ok { color: #047857; background: rgba(16,185,129,.12); padding: 4px 8px; border-radius: 8px; }

.pf-forum-list { display: flex; flex-direction: column; gap: 10px; }
.pf-forum-item {
  padding: 10px 12px; border-radius: 12px; border: 1px solid var(--acrylic-border);
  background: var(--acrylic-2);
}
.pf-forum-h {
  display: flex; justify-content: space-between; gap: 10px;
  font-size: .72rem; color: var(--text-3); margin-bottom: 6px;
}
.pf-forum-b { font-size: .86rem; color: var(--text); line-height: 1.5; white-space: pre-wrap; }

.pf-cover-presets {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(100px, 1fr)); gap: 8px; margin-bottom: 10px;
}
.pf-cover-preset {
  height: 56px; border-radius: 12px; border: 2px solid transparent; cursor: pointer;
  position: relative; overflow: hidden; color: #fff; font-size: .72rem; font-weight: 800;
}
.pf-cover-preset span {
  position: absolute; left: 8px; bottom: 6px; text-shadow: 0 1px 3px rgba(0,0,0,.45);
}
.pf-cover-preset.active { border-color: #fbbf24; box-shadow: 0 0 0 2px rgba(251,191,36,.35); }
.pf-hero.has-cover .pf-cover { opacity: 1; }
.pf-check { display: flex !important; align-items: center; gap: 8px; font-weight: 700; }
.pf-check input { width: auto !important; margin: 0 !important; }


/* ── 高校毕业生官方求职指引（区县专属，见 data-geo-scope） ── */
.grad-guide[hidden] { display: none !important; }
.grad-guide {
  margin: 14px 0 18px;
  padding: 16px 16px 14px;
  border-radius: 18px;
  background: var(--acrylic-2, rgba(255,255,255,.28));
  border: 1px solid var(--acrylic-border, rgba(255,255,255,.75));
  box-shadow: var(--acrylic-shadow);
  backdrop-filter: blur(16px) saturate(1.2);
  -webkit-backdrop-filter: blur(16px) saturate(1.2);
}
.grad-guide-head {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  justify-content: space-between;
  gap: 10px 16px;
  margin-bottom: 12px;
}
.grad-guide-kicker {
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: .04em;
  color: var(--accent, #2563eb);
  margin-bottom: 4px;
}
.grad-guide-title {
  font-size: 1.05rem;
  font-weight: 800;
  color: var(--text);
  line-height: 1.35;
}
.grad-guide-sub {
  font-size: .78rem;
  color: var(--text-3, #64748b);
  margin-top: 4px;
  line-height: 1.45;
  max-width: 46rem;
}
.grad-guide-more {
  font-size: .8rem;
  font-weight: 700;
  color: var(--accent, #2563eb);
  text-decoration: none;
  white-space: nowrap;
  padding: 8px 12px;
  border-radius: 999px;
  background: rgba(37, 99, 235, .1);
  border: 1px solid rgba(37, 99, 235, .2);
}
.grad-guide-more:hover { filter: brightness(1.05); }
.grad-guide-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
}
@media (max-width: 960px) {
  .grad-guide-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 520px) {
  .grad-guide-grid { grid-template-columns: 1fr; }
}
.grad-guide-card {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 12px 12px 11px;
  border-radius: 14px;
  text-decoration: none;
  color: inherit;
  background: var(--acrylic, rgba(255,255,255,.22));
  border: 1px solid var(--acrylic-border, rgba(255,255,255,.7));
  transition: transform .15s ease, background .15s ease;
}
.grad-guide-card:hover {
  transform: translateY(-1px);
  background: var(--acrylic-hover, rgba(255,255,255,.45));
}
.grad-guide-ico { font-size: 1.15rem; line-height: 1; }
.grad-guide-name {
  font-size: .88rem;
  font-weight: 800;
  color: var(--text);
}
.grad-guide-desc {
  font-size: .74rem;
  color: var(--text-3, #64748b);
  line-height: 1.4;
}
.grad-guide-foot {
  margin-top: 12px;
  padding-top: 10px;
  border-top: 1px solid rgba(148, 163, 184, .28);
  font-size: .76rem;
  color: var(--text-2, #334155);
  line-height: 1.55;
}
.grad-guide-foot strong { color: var(--text); font-weight: 750; }
.grad-guide-foot a { color: var(--accent, #2563eb); font-weight: 650; text-decoration: none; }
.grad-guide-foot-sep { margin: 0 .35em; color: var(--text-3, #94a3b8); }


/* ── 反馈版块 ── */
.fb-page { max-width: 720px; margin: 0 auto 40px; }
.fb-card {
  padding: 18px 18px 20px;
  border-radius: 18px;
  border: 1px solid var(--acrylic-border, rgba(120,130,160,.18));
  background: var(--card, rgba(255,255,255,.55));
  backdrop-filter: blur(14px);
}
.fb-card h1 { margin: 0 0 6px; font-size: 1.25rem; }
.fb-lead { margin: 0 0 14px; font-size: .86rem; color: var(--text-3); line-height: 1.55; }
.fb-hints { margin-bottom: 12px; }
.fb-hint { margin: 0 0 6px; font-size: .8rem; color: var(--text-2); line-height: 1.45; }
.fb-hint.muted { color: var(--text-3); }
.fb-hint a { color: var(--brand, #2563eb); }
.fb-form label {
  display: block; margin: 0 0 12px;
  font-size: .78rem; font-weight: 700; color: var(--text-2);
}
.fb-form input, .fb-form select, .fb-form textarea {
  display: block; width: 100%; margin-top: 6px;
  box-sizing: border-box;
  border-radius: 12px; border: 1px solid var(--acrylic-border, rgba(120,130,160,.22));
  background: rgba(255,255,255,.35);
  color: var(--text);
  padding: 10px 12px; font-size: .88rem;
  font-family: inherit;
}
[data-theme="dark"] .fb-form input,
[data-theme="dark"] .fb-form select,
[data-theme="dark"] .fb-form textarea {
  background: rgba(20,24,40,.55);
}
.fb-form textarea { resize: vertical; min-height: 140px; line-height: 1.5; }
.fb-actions { display: flex; flex-wrap: wrap; gap: 10px; justify-content: flex-end; margin-top: 4px; }
.fb-fallback-text {
  white-space: pre-wrap; word-break: break-word;
  font-size: .75rem; line-height: 1.45;
  padding: 10px 12px; border-radius: 12px;
  background: rgba(0,0,0,.04); border: 1px dashed var(--acrylic-border);
  max-height: 180px; overflow: auto; margin: 0 0 12px;
}
.fb-foot-link { margin: 12px 0 0; font-size: .78rem; color: var(--text-3); }
.fb-foot-link a { color: var(--brand, #2563eb); font-weight: 700; }
.fb-modal-mask {
  position: fixed; inset: 0; z-index: 1200;
  background: rgba(10,14,28,.45);
  display: flex; align-items: center; justify-content: center;
  padding: 16px;
}
.fb-modal-mask[hidden] { display: none !important; }
.fb-modal-card {
  width: min(520px, 100%);
  max-height: min(90vh, 720px);
  overflow: auto;
  border-radius: 18px;
  background: var(--card, #fff);
  border: 1px solid var(--acrylic-border);
  box-shadow: 0 20px 50px rgba(0,0,0,.25);
  padding: 0;
}
.fb-modal-card .modal-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 14px 16px; border-bottom: 1px solid var(--acrylic-border);
}
.fb-modal-card .modal-body { padding: 14px 16px 16px; }
.nav-link.nav-feedback { font-weight: 750; }
