.roster__badge { width: 64px; }
.roster__group td {
  padding: 6px 10px;
  background: var(--surface-3);
  border-top: 1px solid var(--border-default);
  border-bottom: 1px solid var(--border-subtle);
}
.roster tbody:first-of-type .roster__group td { border-top: 0; }
.roster tbody tr.roster__group:hover { background: var(--surface-3); }
.roster__vacant td { padding-top: 5px; padding-bottom: 5px; opacity: .6; }
.roster__vacant .ic { vertical-align: -2px; }
.roster-filters { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-bottom: 14px; }
.roster-filters__search { flex: 1 1 320px; }
.roster-filters__count { font: 400 12px/1 var(--font-sans); color: var(--text-muted); white-space: nowrap; }

.command__head { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; padding-bottom: 6px; border-bottom: 1px solid var(--border-default); }
.command__eyebrow { display: inline-flex; align-items: center; gap: 6px; font: 600 14px/1.3 var(--font-sans); color: var(--text-primary); white-space: nowrap; }
.command__eyebrow .ic { display: none; }
.command__line { display: none; }
.command__grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(240px, 100%), 1fr)); gap: 8px; }
.post-card {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 10px 12px;
  border: 1px solid var(--border-default);
  border-radius: var(--radius-md);
  background: var(--surface-1);
  color: var(--text-primary);
  text-decoration: none;
  overflow: hidden;
  box-shadow: var(--shadow-1);
}
a.post-card:hover { background: var(--surface-hover); border-color: var(--border-strong); text-decoration: none; color: var(--text-primary); }
a.post-card:hover .post-card__name { text-decoration: underline; }
.post-card__top { display: flex; align-items: center; justify-content: space-between; }
.post-card__no { font: 400 13px/1 var(--font-mono); color: var(--text-muted); }
.post-card__person { display: flex; align-items: center; gap: 10px; min-width: 0; }
.post-card__avatar { flex: none; border-radius: 99px; }
.post-card__avatar .avatar { --size: 44px; }
.post-card__avatar--empty { width: 44px; height: 44px; display: flex; align-items: center; justify-content: center; background: none; border: 1px dashed var(--border-strong); color: var(--text-disabled); }
.post-card__text { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.post-card__rank { order: 2; font: 400 12px/1.3 var(--font-sans); color: var(--text-muted); }
.post-card__name { order: 1; font: 600 15px/1.3 var(--font-sans); color: var(--text-primary); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.post-card__sub { order: 3; font: 400 12px/1.3 var(--font-sans); color: var(--text-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.post-card__foot { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding-top: 8px; border-top: 1px solid var(--border-subtle); min-height: 29px; }
.post-card--vacant { background: transparent; border-style: dashed; }
.post-card--vacant .post-card__name { color: var(--text-disabled); font-weight: 400; }
.post-card.is-away .post-card__avatar { opacity: .6; }

.roster-wrap { border: 1px solid var(--border-default); border-radius: var(--radius-md); background: var(--surface-2); box-shadow: var(--shadow-1); overflow-x: auto; }
.roster { width: 100%; border-collapse: collapse; font: var(--text-small); }
.roster thead th {
  position: sticky;
  top: 0;
  z-index: 2;
  padding: 7px 10px;
  text-align: left;
  background: var(--surface-head);
  border-bottom: 1px solid var(--border-default);
  font: 600 12px/1.3 var(--font-sans);
  color: var(--text-secondary);
  white-space: nowrap;
}
.roster td { padding: 6px 10px; border-bottom: 1px solid var(--border-subtle); vertical-align: middle; }
.roster tbody:last-child tr:last-child td { border-bottom: 0; }
.roster__row { cursor: pointer; }
.roster__row:nth-child(odd) { background: var(--surface-zebra); }
.roster__row:hover { background: var(--accent-subtle); }
.roster__row:hover .person__name { text-decoration: underline; }
.roster__row.is-suspended { background: color-mix(in srgb, var(--danger) 6%, transparent); }
.roster__row.is-away .person__name { color: var(--text-secondary); }
.roster__row--dismissed { opacity: .7; }
.roster__row--dismissed .person__name { color: var(--text-secondary); }
.roster__row--resigned { background: var(--info-subtle); }
.roster__row--resigned .person__name { color: var(--info-fg); }
.roster__row--blacklist { background: var(--danger-subtle); }
.roster__row--blacklist .person__name { color: var(--danger-fg); }
.roster__c-badge { width: 96px; }
.roster__c-div { width: 150px; }
.roster__c-certs { width: 180px; }
.roster__c-status { width: 120px; }
.roster__c-service { width: 120px; }
.roster__c-disc { width: 140px; }

.roster .rank-band td { padding: 0; border-bottom: 1px solid var(--border-default); }
.rank-band__inner {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 6px 10px;
  background: var(--surface-3);
}
tbody:first-of-type .rank-band td { border-top: 0; }
tbody + tbody .rank-band td { border-top: 1px solid var(--border-default); }
.rank-band__name { font: 600 13px/1.3 var(--font-sans); color: var(--text-primary); white-space: nowrap; }
.rank-band__count {
  min-width: 22px;
  height: 18px;
  padding: 0 6px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 99px;
  background: var(--surface-active);
  font: 400 12px/1 var(--font-sans);
  color: var(--text-secondary);
}
.rank-band__meta { margin-left: auto; display: flex; align-items: center; gap: 16px; font: 400 12px/1 var(--font-sans); color: var(--text-muted); white-space: nowrap; }
.rank-band__fill { display: inline-flex; align-items: center; gap: 8px; }
.rank-band__fill .meter { width: 70px; }
.rank-band__rate { font: 600 12px/1 var(--font-sans); color: var(--text-secondary); }

.certbar { display: inline-flex; align-items: center; gap: 8px; }
.certbar__cells { display: inline-flex; gap: 2px; }
.certbar__cells i { width: 6px; height: 14px; border-radius: 1px; background: var(--navy-700); }
.certbar__cells i.is-on { background: var(--accent); }
.certbar__count { font: 600 12px/1 var(--font-sans); color: var(--text-primary); }
.certbar__count small { font-size: 11px; color: var(--text-muted); font-weight: 400; }

.service { display: flex; flex-direction: column; gap: 2px; }
.service__main { font: 400 13px/1.25 var(--font-sans); color: var(--text-primary); }
.service__sub { font: 400 12px/1.25 var(--font-sans); color: var(--text-muted); }

.dpill { --c: var(--text-secondary); display: inline-flex; align-items: center; gap: 4px; height: 20px; padding: 0 6px; border-radius: var(--radius-xs); font: 400 12px/1 var(--font-sans); color: var(--c); background: color-mix(in srgb, var(--c) 10%, transparent); border: 1px solid color-mix(in srgb, var(--c) 30%, transparent); }
.dpill b { font: 600 12px/1 var(--font-sans); }
.dpill--reprimand { --c: var(--danger-fg); }
.dpill--minus { --c: var(--warning-fg); }
.dpill--praise { --c: var(--info-fg); }
.dpill--plus { --c: var(--success-fg); }

.roster__vacant .badge-no { height: 20px; font-size: 12px; }

@media (max-width: 640px) {
  .roster-filters .seg { width: 100%; }
  .rank-band__meta .rank-band__fill span, .rank-band__rate { display: none; }
  .roster thead { display: none; }
  .roster td { padding: 8px; }
  .roster .rank-band td { padding: 0; }
  .rank-band__inner { padding: 6px 8px; }
  .post-card { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 8px; padding: 10px; }
  .post-card__person { grid-column: 1; grid-row: 1; }
  .post-card__top { grid-column: 2; grid-row: 1; flex-direction: column; align-items: flex-end; gap: 6px; }
  .post-card__avatar .avatar { --size: 40px; }
  .post-card__avatar--empty { width: 40px; height: 40px; }
  .post-card__foot { display: none; }
  .post-card .ins--lg { height: 26px; min-width: 26px; }
}

.hire-request { align-items: flex-start; flex-wrap: wrap; }
.hire-request__actions { display: flex; flex-wrap: wrap; align-items: flex-start; gap: 8px; margin-left: auto; }
.hire-request__reject > summary { list-style: none; }
.hire-request__reject > summary::-webkit-details-marker { display: none; }
.hire-request__reject[open] > form { margin-top: 8px; min-width: min(260px, 100%); }
