body { background: #f5f6f8; }
.picker-wrap { position: relative; }
.picker-list { position: absolute; z-index: 1050; width: 100%; max-height: 360px; overflow-y: auto; }
.picker-list .list-group-item.active { background: #0d6efd; color: #fff; }
.picker-list .list-group-item { cursor: pointer; }
.stat-card .value { font-size: 1.4rem; font-weight: 600; }
.table-sm td, .table-sm th { vertical-align: middle; }
tr.clickable { cursor: pointer; }
tr.clickable:hover { background: #eef4ff; }
.badge-ok { background: #198754; }
.badge-no { background: #dc3545; }
.mono { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; }
.tie-row { background: #fff3cd !important; }
.small-muted { color: #6c757d; font-size: .85rem; }
#flash { position: fixed; top: 70px; right: 12px; z-index: 2000; max-width: 420px; }
.nav-tabs.scroll-x { flex-wrap: nowrap; overflow-x: auto; overflow-y: hidden; white-space: nowrap; -webkit-overflow-scrolling: touch; }
.nav-tabs.scroll-x .nav-link { white-space: nowrap; }
@media (max-width: 768px) {
  #flash { left: 12px; right: 12px; max-width: none; top: 62px; }
  .container-fluid { padding-left: 8px; padding-right: 8px; }
  h4 { font-size: 1.2rem; }
  .stat-card .value { font-size: 1.15rem; }
  .table { font-size: .85rem; }
  .picker-list { max-height: 50vh; }
}
/* 公开页 */
body.public { background: #f0f2f5; }
.public-header { background: #1f3a5f; color: #fff; padding: 12px 0; margin-bottom: 8px; }
.public-header .brand { font-weight: 600; margin-right: 10px; }
.public-header .sub { opacity: .8; }
/* 按钮组选择 */
.choice .btn { margin: 0 4px 4px 0; }
.choice .btn.active { background: #0d6efd; color: #fff; border-color: #0d6efd; }
.choice-label { font-size: .8rem; color: #6c757d; margin-right: 6px; }
