/* ===== 幽灵职位 · 共享基础样式 ===== */
*, *::before, *::after { box-sizing:border-box; }
html, body { margin:0; padding:0; }
body {
  font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Arial, sans-serif;
  color: #1f2329;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
a { text-decoration:none; color:inherit; }
button { font-family:inherit; cursor:pointer; }
input, select, textarea { font-family:inherit; }

/* 自定义滚动条 */
::-webkit-scrollbar { width:7px; height:7px; }
::-webkit-scrollbar-thumb { background:#d0d0d0; border-radius:4px; }
::-webkit-scrollbar-thumb:hover { background:#b0b0b0; }
::-webkit-scrollbar-track { background:transparent; }

/* 头像组件 */
.avatar {
  display:inline-flex; align-items:center; justify-content:center;
  border-radius:50%; color:#fff; font-size:13px; font-weight:600;
  flex-shrink:0; user-select:none;
}

/* 页脚 */
.skel-footer {
  color:#b0b0b0; font-size:11px; text-align:center; padding:24px 0 36px;
  line-height:1.8;
}
.skel-footer a { color:#8c8c8c; margin:0 8px; cursor:default; }

/* 过渡 */
.fade-in { animation: fadeIn .25s ease; }
@keyframes fadeIn { from{opacity:0;transform:translateY(4px)} to{opacity:1;transform:translateY(0)} }

/* ===== 通用顶栏导航 ===== */
.gj-topbar {
  background:#fff;
  border-bottom:1px solid #e8e8e8;
  padding:0;
  height:40px;
  display:flex;
  align-items:center;
  font-size:12px;
  color:#999;
  user-select:none;
}
.gj-topbar a {
  color:#666;
  text-decoration:none;
  padding:0 14px;
  height:100%;
  display:inline-flex;
  align-items:center;
  cursor:pointer;
  transition:color .12s;
}
.gj-topbar a:hover { color:#333; }
.gj-topbar a.back-link { color:#999; }
.gj-topbar a.back-link::before { content:'‹ '; font-size:16px; }
.gj-topbar .spacer { flex:1; }
.gj-topbar .brand-tag { font-size:10px; color:#bbb; padding-right:14px; }

/* ===== 黑屏过渡 ===== */
#gjTransition {
  position:fixed; top:0; left:0; right:0; bottom:0;
  background:#000; z-index:99999; opacity:0; pointer-events:none;
  transition:opacity .15s ease;
}
#gjTransition.active { opacity:1; pointer-events:auto; }
