.puzzle-job-panel {
  display: grid;
  gap: 12px;
  padding: 15px;
  border: 1px solid color-mix(in srgb, var(--accent) 34%, var(--line));
  border-radius: var(--radius);
  background:
    radial-gradient(circle at 100% 0, color-mix(in srgb, var(--accent) 14%, transparent), transparent 48%),
    var(--panel);
  box-shadow: inset 0 1px 0 var(--panel-highlight), 0 10px 26px color-mix(in srgb, var(--shadow-1) 48%, transparent);
}
.puzzle-job-panel[hidden] { display: none; }
.puzzle-job-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.puzzle-job-kicker { margin: 0 0 3px; color: var(--accent-bright); font: 800 9px/1.2 var(--sans); letter-spacing: .1em; text-transform: uppercase; }
.puzzle-job-title { margin: 0; color: var(--text); font: 800 15px/1.25 var(--sans); letter-spacing: -.01em; }
.puzzle-job-state { flex: none; padding: 4px 7px; border: 1px solid var(--line); border-radius: 999px; color: var(--text-muted); background: var(--panel-2); font: 800 9px/1 var(--mono); letter-spacing: .05em; text-transform: uppercase; }
.puzzle-job-banner { display: flex; align-items: center; gap: 9px; min-height: 42px; padding: 10px 11px; border: 1px solid var(--line); border-radius: var(--radius-sm); color: var(--text-muted); background: var(--panel-2); font-size: 12px; line-height: 1.45; }
.puzzle-job-banner.is-pending { border-color: color-mix(in srgb, var(--info) 38%, var(--line)); color: var(--info); background: var(--info-dim); }
.puzzle-job-banner.is-accepted { border-color: color-mix(in srgb, var(--good) 38%, var(--line)); color: var(--good); background: var(--good-dim); }
.puzzle-job-banner.is-rejected { border-color: color-mix(in srgb, var(--warn) 42%, var(--line)); color: var(--warn); background: var(--warn-dim); }
.puzzle-job-banner.is-failed { border-color: color-mix(in srgb, var(--bad) 38%, var(--line)); color: var(--error-text); background: var(--bad-dim); }
.puzzle-job-hint { margin: 0; color: var(--text-muted); font-size: 11px; line-height: 1.5; }
.puzzle-job-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.puzzle-job-actions .btn { flex: 1 1 130px; min-height: 38px; white-space: normal; line-height: 1.25; }
.puzzle-job-status { min-height: 16px; margin: 0; color: var(--text-muted); font-size: 11px; line-height: 1.4; }
.puzzle-job-panel .mini-spinner { flex: none; }

@media (max-width: 520px) {
  .puzzle-job-panel { padding: 13px; }
  .puzzle-job-actions { flex-direction: column; }
  .puzzle-job-actions .btn { flex-basis: auto; width: 100%; }
}

@media (prefers-reduced-motion: reduce) {
  .puzzle-job-panel .mini-spinner { animation-duration: 1.8s; }
}

/* MAX-146 Game Scanner Candidate Styles */
.scan-candidates-list {
  display: grid;
  gap: 10px;
  margin-top: 10px;
  max-height: 480px;
  overflow-y: auto;
  padding-right: 4px;
}
.scan-candidate-card {
  padding: 12px;
  border-radius: var(--radius-sm);
  background: var(--panel-2);
  border: 1px solid var(--line);
  display: grid;
  gap: 8px;
  font-size: 12px;
  transition: opacity .2s ease;
}
.cand-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.cand-badge {
  display: inline-block;
  padding: 2px 7px;
  border-radius: 999px;
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  background: var(--line);
  color: var(--text);
}
.cand-badge.missed_tactic, .cand-badge.missed_mate {
  background: var(--warn-dim);
  color: var(--warn);
}
.cand-badge.found_tactic, .cand-badge.found_mate {
  background: var(--good-dim);
  color: var(--good);
}
.cand-badge.user_error_correction {
  background: var(--bad-dim);
  color: var(--bad);
}
.cand-ply {
  color: var(--text-muted);
  font-size: 11px;
}
.cand-body p {
  margin: 2px 0;
}
.cand-solution {
  color: var(--accent-bright);
}
.cand-themes {
  color: var(--text-muted);
  font-size: 11px;
}
.cand-actions {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-top: 4px;
}
.cand-actions .btn-sm {
  padding: 4px 10px;
  font-size: 11px;
  min-height: 28px;
}
.cand-saved-badge {
  color: var(--good);
  font-weight: 700;
  font-size: 11px;
}
