.recruit-tools {
  display: grid;
  grid-template-columns: minmax(0, 3fr) minmax(0, 2fr);
  gap: 20px;
  margin: 20px 0;
}
.recruit-tools .dash-panel { min-width: 0; }
.recruit-fields {
  display: flex;
  flex-wrap: wrap;
  align-items: end;
  gap: 10px;
  margin-bottom: 16px;
}
.recruit-fields label { flex: 1 1 140px; min-width: 0; }
.recruit-fields input, .recruit-fields select { width: 100%; }
.recruit-fields button { flex: 0 0 auto; }
.recruit-tools details, .recruit-history-item { margin: 14px 0; }
.recruit-history-item { padding: 10px 0; border-bottom: 1px solid var(--line); }
.recruit-history-item summary, .recruit-tools summary { cursor: pointer; font-weight: 650; }
.recruit-check { display: flex; align-items: center; gap: 8px; margin: 6px 0; }
.recruit-check input, #recruit-contacts input { min-width: 18px; min-height: 18px; width: auto; }
.recruit-roster { margin-top: 20px; }
.roster-site { margin: 18px 0 26px; }
.roster-site h3 { margin-bottom: 4px; }
.roster-site p { margin: 0 0 12px; }
.roster-site table { width: 100%; border-collapse: collapse; }
.roster-site td, .roster-site th { border: 1px solid var(--line); padding: 8px; }
.roster-site td small, .roster-site td strong { display: block; }
.roster-site td strong { overflow-wrap: anywhere; }
.roster-booked { background: #eaf1e6; }
.roster-free { background: #fff5dd; }
.roster-closed { background: #f2f2ef; color: #59645c; }
#recruit-confirm { max-height: 85vh; overflow: auto; }
#recruit-confirm-body ul { max-height: 30vh; overflow: auto; }
.qr-card { max-width: 640px; margin: 40px auto; padding: 24px; text-align: center; }
.qr-card img { display: block; width: min(100%, 340px); height: auto; margin: 16px auto; }
@media (max-width: 850px) {
  .recruit-tools { grid-template-columns: 1fr; }
}
@media print {
  @page { size: A4 landscape; margin: 12mm; }
  body { background: #fff; color: #000; }
  body[data-recruitment] .topbar, body[data-recruitment] #notice,
  body[data-recruitment] #admin-content > :not(.recruit-roster),
  .recruit-screen, #toast, .qr-print { display: none !important; }
  body[data-recruitment] .admin-main, .recruit-roster { margin: 0; padding: 0; max-width: none; border: 0; box-shadow: none; }
  .roster-site + .roster-site { break-before: page; }
  .roster-site h3, .roster-site p { break-after: avoid; }
  .roster-site .table-wrap { overflow: visible; }
  .roster-site table { min-width: 0; font-size: 10pt; }
  .roster-site thead { display: table-header-group; }
  .roster-site tr { break-inside: avoid; }
  .roster-site td, .roster-site th { border-color: #777; padding: 4px 6px; }
  .qr-card { margin: 0 auto; }
}
