body { background-color: #f6f8fa; }
.card { border: 0; box-shadow: 0 1px 3px rgba(0,0,0,.08); }
.table th { white-space: nowrap; }
.badge { font-weight: 500; }
.navbar-brand { font-weight: 700; }
textarea.form-control-sm { min-height: 38px; }

/* 品牌 LOGO */
.brand-logo { display: inline-flex; align-items: center; gap: .5rem; }
.brand-txt { font-weight: 700; letter-spacing: .05em; }
.login-logo { display: flex; flex-direction: column; align-items: center; gap: .5rem; }
.login-logo .brand-txt { font-size: 1.5rem; color: #212529; letter-spacing: .15em; }
.login-sub { font-size: .8rem; color: #6c757d; letter-spacing: .3em; margin-left: .3em; }

/* 岗位职责滚动条 */
body.has-duty-bar { padding-bottom: 3rem; }
.duty-bar {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 1040;
  display: flex; align-items: center; gap: .6rem;
  padding: .45rem .9rem;
  background: linear-gradient(90deg, #0d6efd, #3d8bfd);
  color: #fff; font-size: .85rem;
  box-shadow: 0 -2px 10px rgba(0,0,0,.18);
}
.duty-tag {
  flex: 0 0 auto; background: #fff; color: #0d6efd;
  border-radius: 999px; padding: .08rem .65rem;
  font-size: .72rem; font-weight: 700; letter-spacing: .05em;
}
.duty-viewport { flex: 1 1 auto; overflow: hidden; }
.duty-track {
  display: inline-block; white-space: nowrap; padding-left: 100%;
  animation: duty-scroll 24s linear infinite;
}
.duty-bar:hover .duty-track { animation-play-state: paused; }
@keyframes duty-scroll {
  from { transform: translateX(0); }
  to   { transform: translateX(-100%); }
}
