.completion-waitlist-controls,
.completion-waitlist-toolbar,
.completion-waitlist-upload,
.completion-waitlist-row-actions,
.completion-waitlist-roster-controls form,
.completion-waitlist-roster-controls {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  align-items: center;
}

.completion-waitlist-controls {
  align-items: flex-start;
  flex-direction: column;
}

.completion-waitlist-toolbar label,
.completion-waitlist-upload label,
.completion-waitlist-roster-controls label {
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  color: var(--muted);
  font-size: 13px;
  font-weight: 700;
}

.completion-waitlist-toolbar select,
.completion-waitlist-toolbar input,
.completion-waitlist-upload input,
.completion-waitlist-roster-controls select,
.completion-waitlist-roster-controls input {
  min-height: var(--ctl-h-sm);
}

.completion-waitlist-upload .error {
  flex-basis: 100%;
  margin: 0;
}

.completion-waitlist-toolbar .is-disabled {
  opacity: 0.55;
  cursor: not-allowed;
}

.completion-waitlist-kpis {
  grid-template-columns: repeat(5, minmax(0, 1fr));
  margin-bottom: var(--space-3);
}

.completion-waitlist-kpis .metric-card.good {
  box-shadow: inset 4px 0 var(--good);
}

.completion-waitlist-kpis .metric-card.bad {
  box-shadow: inset 4px 0 var(--bad);
}

.completion-waitlist-kpis .metric-card.warn {
  box-shadow: inset var(--space-1) 0 var(--warn);
}

.completion-waitlist-item-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--space-3);
  margin-bottom: var(--space-3);
}

.completion-waitlist-item-tile {
  display: grid;
  gap: var(--space-1);
  padding: var(--space-3);
  border: 1px solid var(--line);
  border-radius: var(--ctl-radius);
  background: var(--panel);
}

.completion-waitlist-item-tile span,
.completion-waitlist-item-tile small {
  color: var(--muted);
}

.completion-waitlist-item-tile strong {
  font-size: 18px;
}

.completion-waitlist-comparison th:not(:first-child),
.completion-waitlist-comparison td:not(:first-child),
.completion-waitlist-roster th:not(:nth-child(3)):not(:last-child),
.completion-waitlist-roster td:not(:nth-child(3)):not(:last-child) {
  text-align: center;
}

.completion-waitlist-pass {
  color: var(--good);
  font-weight: 800;
}

.completion-waitlist-fail {
  color: var(--bad);
  font-weight: 800;
}

.completion-waitlist-status {
  display: inline-block;
  padding: 2px var(--space-2);
  border-radius: 999px;
  font-size: 12px;
  font-weight: 800;
}

.completion-waitlist-status.eligible {
  background: var(--good-soft);
  color: var(--good);
}

.completion-waitlist-status.ineligible {
  background: var(--bad-soft);
  color: var(--bad);
}

.completion-waitlist-status.pending {
  background: var(--warn-soft);
  color: var(--warn);
}

.completion-waitlist-gaps {
  margin-top: var(--space-1);
  color: var(--muted);
  font-size: 12px;
  white-space: nowrap;
}

.completion-waitlist-view .echart {
  min-height: calc(var(--ctl-h) * 9);
  margin-top: var(--space-3);
}

.completion-waitlist-view,
.completion-waitlist-chart-panel {
  min-width: 0;
}

.completion-waitlist-tabs {
  display: flex;
  gap: var(--space-2);
  margin-bottom: var(--space-4);
  border-bottom: 1px solid var(--line);
  padding-bottom: var(--space-2);
}

.completion-waitlist-tabs button {
  background: var(--panel);
  color: var(--muted);
  border: 1px solid var(--line);
  min-height: var(--ctl-h);
}

.completion-waitlist-tabs button[aria-selected="true"] {
  background: var(--brand-soft);
  color: var(--brand);
  border-color: var(--brand);
}

.completion-waitlist-chart-grid,
.completion-waitlist-form-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--space-3);
}

.completion-waitlist-roster-controls {
  margin-bottom: var(--space-3);
}

.completion-waitlist-editing {
  background: var(--soft);
}

.completion-waitlist-editing input:not([type="checkbox"]),
.completion-waitlist-editing select {
  min-width: calc(var(--ctl-h) * 2);
  width: 100%;
  min-height: var(--ctl-h-sm);
}

.completion-waitlist-editing input[name="name"],
.completion-waitlist-editing input[name="reason"] {
  min-width: calc(var(--ctl-h) * 3);
}

.completion-waitlist-row-actions {
  flex-wrap: nowrap;
}

.completion-waitlist-exams [data-completion-waitlist-exam-row] {
  cursor: pointer;
}

.completion-waitlist-exams [data-completion-waitlist-exam-row]:hover {
  background: var(--brand-soft);
}

.completion-waitlist-view :focus-visible {
  outline: 2px solid var(--brand);
  outline-offset: var(--space-1);
}

.completion-waitlist-modal {
  width: min(calc(var(--ctl-h) * 16), calc(100vw - var(--space-7)));
  max-height: calc(100dvh - var(--space-7));
  overflow-y: auto;
  padding: var(--space-5);
  border-radius: var(--ctl-radius);
}

.completion-waitlist-modal::backdrop {
  background: var(--track);
}

.completion-waitlist-form-grid label {
  display: grid;
  gap: var(--space-1);
  min-width: 0;
  color: var(--ink);
}

.completion-waitlist-form-grid input:not([type="checkbox"]),
.completion-waitlist-form-grid select,
.completion-waitlist-form-grid textarea {
  width: 100%;
  min-width: 0;
  box-sizing: border-box;
}

.completion-waitlist-form-grid .completion-waitlist-checkbox {
  display: flex;
  align-items: center;
  gap: var(--space-2);
}

.completion-waitlist-full-width {
  grid-column: 1 / -1;
}

.completion-waitlist-modal .error {
  color: var(--bad);
}

.completion-waitlist-modal .toolbar {
  margin-top: var(--space-4);
}

@media (max-width: 760px) {
  .completion-waitlist-kpis,
  .completion-waitlist-item-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .completion-waitlist-toolbar,
  .completion-waitlist-upload,
  .completion-waitlist-roster-controls {
    align-items: stretch;
    width: 100%;
  }

  .completion-waitlist-toolbar label,
  .completion-waitlist-upload label,
  .completion-waitlist-roster-controls label,
  .completion-waitlist-roster-controls form {
    width: 100%;
  }

  .completion-waitlist-toolbar select,
  .completion-waitlist-toolbar input,
  .completion-waitlist-upload input,
  .completion-waitlist-roster-controls select,
  .completion-waitlist-roster-controls input {
    flex: 1;
    min-width: 0;
  }

  .completion-waitlist-chart-grid,
  .completion-waitlist-form-grid {
    grid-template-columns: minmax(0, 1fr);
  }

  .completion-waitlist-tabs {
    gap: var(--space-1);
  }

  .completion-waitlist-tabs button {
    flex: 1;
    padding-inline: var(--space-2);
    min-height: var(--ctl-h-touch);
    white-space: nowrap;
  }

  .completion-waitlist-view .echart {
    min-height: calc(var(--ctl-h) * 8);
  }

  .completion-waitlist-modal {
    padding: var(--space-3);
  }

  .completion-waitlist-modal input:not([type="checkbox"]),
  .completion-waitlist-modal select,
  .completion-waitlist-modal button {
    min-height: var(--ctl-h-touch);
  }
}

/* 시험 대상자 교회별 묶음(2026-09-11) — "전체"에서 교회마다 제목 줄과 골라 보기 단추 */
.completion-waitlist-church-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin: 0 0 10px;
}
.completion-waitlist-exams .completion-waitlist-group-row th {
  text-align: left;
  background: var(--surface-muted, rgba(127, 127, 127, 0.08));
  font-weight: 700;
  padding-top: 10px;
}

/* 지교회 이름 검색(2026-09-11) */
.completion-waitlist-name-search form {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  align-items: center;
}
.completion-waitlist-name-search .hint {
  margin: 6px 0 0;
}
