/* The mission page: summary card, pad provisioning, task list, transcript
   rows and the Changes view; the swarm page's steps. */

/* ── Summary card ──────────────────────────────────────────────────────── */

.summary-card {
  margin: 0 calc(var(--nax-space-6) + var(--nax-space-1)) var(--nax-space-3);
  padding: var(--nax-space-3) var(--nax-space-4);
  border: 1px solid var(--nax-ink-10);
  border-left: 3px solid var(--nax-green);
  border-radius: var(--nax-r-lg);
  background: var(--nax-surface);
  box-shadow: var(--nax-sh);
}

.summary-card[data-status="failed"] { border-left-color: var(--nax-red); }

.summary-card-header {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--nax-space-2);
}

.summary-card-header h2 {
  flex: 1;
  margin: 0;
  font-size: 14px;
  font-weight: 600;
}

.summary-text { margin: var(--nax-space-2) 0 0; }

/* The rest of a long summary, folded so the transcript keeps its room. */
.summary-more { margin-top: var(--nax-space-1); }

.summary-more summary {
  color: var(--nax-accent);
  font-size: 12px;
  cursor: pointer;
}

.summary-more[open] summary { margin-bottom: var(--nax-space-2); }

.summary-facts {
  display: flex;
  flex-wrap: wrap;
  gap: var(--nax-space-2) var(--nax-space-6);
  margin: var(--nax-space-3) 0 0;
}

.summary-facts dt {
  color: var(--nax-ink-70);
  font-size: 12px;
}

.summary-facts dd { margin: 0; }

.check-status { font-weight: 500; }
.check-status[data-status="passed"] { color: var(--nax-green-text); }
.check-status[data-status="failed"] { color: var(--nax-red-text); }
.check-status[data-status="skipped"] { color: var(--nax-ink-70); }

/* ── Pad provisioning: a "spinning up" checklist ───────────────────────── */

.pad-provisioning {
  padding: var(--nax-space-2) var(--nax-space-3);
  border-bottom: 1px solid var(--nax-ink-10);
}

.pad-provisioning summary {
  display: flex;
  align-items: center;
  gap: var(--nax-space-2);
  cursor: pointer;
  font-weight: 500;
}

.pad-provisioning[data-status="failed"] summary { color: var(--nax-red-text); }

.pad-provisioning-count {
  margin-left: auto;
  color: var(--nax-ink-70);
  font-family: var(--nax-font-mono);
  font-size: 11px;
  font-weight: 400;
}

.pad-provisioning .pad-steps {
  display: flex;
  flex-direction: column;
  gap: var(--nax-space-1);
  margin: var(--nax-space-2) 0 0;
}

.pad-provisioning .pad-step {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: var(--nax-space-2);
  padding: 0;
  border-bottom: none;
  color: var(--nax-ink-70);
}

.pad-provisioning .pad-step::before {
  content: "";
  flex: 0 0 auto;
  width: var(--nax-space-3);
  height: var(--nax-space-3);
  border: 1px solid var(--nax-ink-30);
  border-radius: 50%;
}

.pad-provisioning .pad-step[data-status="running"] { color: var(--nax-ink); }
.pad-provisioning .pad-step[data-status="running"]::before {
  border-color: var(--nax-accent);
  border-right-color: transparent;
  animation: pad-step-spin 0.8s linear infinite;
}

.pad-provisioning .pad-step[data-status="done"] { color: var(--nax-ink); }
.pad-provisioning .pad-step[data-status="done"]::before {
  content: "✓";
  display: grid;
  place-items: center;
  border-color: var(--nax-green);
  background: var(--nax-green);
  color: var(--nax-on-accent);
  font-size: 9px;
}

.pad-provisioning .pad-step[data-status="failed"] { color: var(--nax-red-text); }
.pad-provisioning .pad-step[data-status="failed"]::before {
  content: "!";
  display: grid;
  place-items: center;
  border-color: var(--nax-red);
  background: var(--nax-red);
  color: var(--nax-on-accent);
  font-size: 9px;
}

.pad-provisioning .pad-step-status {
  margin-left: auto;
  font-family: var(--nax-font-mono);
  font-size: 11px;
}

.pad-provisioning-error {
  margin: var(--nax-space-2) 0 0;
  padding: var(--nax-space-2);
  border-radius: var(--nax-r);
  background: var(--nax-red-bg);
  color: var(--nax-red-text);
  font-family: var(--nax-font-mono);
  font-size: 12px;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}

@keyframes pad-step-spin { to { transform: rotate(360deg); } }

@media (prefers-reduced-motion: reduce) {
  .pad-provisioning .pad-step[data-status="running"]::before { animation: none; }
}

/* ── Task list ─────────────────────────────────────────────────────────── */

.task-list {
  padding: var(--nax-space-2) var(--nax-space-3);
  border-bottom: 1px solid var(--nax-ink-10);
  background: var(--nax-ink-03);
}

.task-list h2 {
  display: flex;
  align-items: baseline;
  gap: var(--nax-space-2);
  margin: 0;
  font-size: 13px;
  font-weight: 600;
}

.task-list-progress {
  color: var(--nax-ink-70);
  font-family: var(--nax-font-mono);
  font-size: 11px;
  font-weight: 400;
}

.task-list ol {
  display: flex;
  flex-direction: column;
  gap: var(--nax-space-1);
  margin: var(--nax-space-2) 0 0;
  padding: 0;
  list-style: none;
}

.task {
  display: flex;
  align-items: baseline;
  gap: var(--nax-space-2);
}

.task::before {
  content: "○";
  color: var(--nax-ink-40);
}

.task[data-status="in_progress"] { font-weight: 500; }
.task[data-status="in_progress"]::before { content: "◐"; color: var(--nax-accent); }

.task[data-status="completed"] { color: var(--nax-ink-70); }
.task[data-status="completed"] .task-text { text-decoration: line-through; }
.task[data-status="completed"]::before { content: "●"; color: var(--nax-green); }

.task-status {
  margin-left: auto;
  color: var(--nax-ink-70);
  font-family: var(--nax-font-mono);
  font-size: 11px;
  white-space: nowrap;
}

/* ── Transcript rows ───────────────────────────────────────────────────── */

.transcript-output summary { cursor: pointer; }

.transcript-output pre {
  max-height: var(--nax-list-max-h);
  margin: var(--nax-space-2) 0 0;
  padding: var(--nax-space-2);
  overflow: auto;
  border-radius: var(--nax-r);
  background: var(--nax-ink-04);
  color: var(--nax-ink);
  white-space: pre-wrap;
}

.transcript-result[data-result="error"],
.transcript-result[data-result="failed"] { color: var(--nax-red-text); }
.transcript-result[data-result="passed"] { color: var(--nax-green-text); }

/* ── Changes ───────────────────────────────────────────────────────────── */

.changes-summary {
  margin: 0;
  padding: var(--nax-space-3) var(--nax-space-4);
  color: var(--nax-ink-70);
}

.changes-repo > h3 {
  margin: 0;
  padding: var(--nax-space-3) var(--nax-space-4) var(--nax-space-2);
  font-family: var(--nax-font-mono);
  font-size: 12px;
  font-weight: 600;
  overflow-wrap: anywhere;
}

.diff-file {
  margin: 0 var(--nax-space-3) var(--nax-space-3);
  overflow: hidden;
  border: 1px solid var(--nax-ink-10);
  border-radius: var(--nax-r);
}

.diff-file-header {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--nax-space-2);
  padding: var(--nax-space-2) var(--nax-space-3);
  border-bottom: 1px solid var(--nax-ink-10);
  background: var(--nax-ink-03);
}

.diff-file-header :is(h3, h4) {
  flex: 1 1 auto;
  min-width: 0;
  margin: 0;
  font-family: var(--nax-font-mono);
  font-size: 12px;
  font-weight: 500;
  overflow-wrap: anywhere;
}

.diff-file-note {
  color: var(--nax-ink-70);
  font-size: 12px;
}

.diff-file-counts {
  font-family: var(--nax-font-mono);
  font-size: 12px;
}

.diff-added-count { color: var(--nax-green-text); }
.diff-removed-count { color: var(--nax-red-text); }

.diff {
  display: block;
  overflow-x: auto;
  border-collapse: collapse;
  font-family: var(--nax-font-mono);
  font-size: 12px;
  line-height: 1.5;
}

.diff-hunk td {
  padding: var(--nax-space-1) var(--nax-space-3);
  background: var(--nax-blue-bg);
  color: var(--nax-ink-70);
}

.diff-line-number {
  min-width: var(--nax-space-7);
  padding: 0 var(--nax-space-2);
  color: var(--nax-ink-40);
  text-align: right;
  user-select: none;
}

.diff-code {
  width: 100%;
  padding: 0 var(--nax-space-3);
  white-space: pre;
}

.diff-code::before {
  display: inline-block;
  width: var(--nax-space-3);
  color: var(--nax-ink-40);
  user-select: none;
}

.diff-line[data-kind="added"] { background: var(--nax-green-bg); }
.diff-line[data-kind="added"] .diff-code::before { content: "+"; color: var(--nax-green-text); }
.diff-line[data-kind="removed"] { background: var(--nax-red-bg); }
.diff-line[data-kind="removed"] .diff-code::before { content: "−"; color: var(--nax-red-text); }
.diff-line[data-kind="context"] .diff-code::before { content: " "; }
.diff-line[data-kind="note"] .diff-code { color: var(--nax-ink-70); font-style: italic; }

.diff-truncated {
  margin: 0;
  padding: var(--nax-space-3) var(--nax-space-4);
  color: var(--nax-amber-dark);
}

/* ── Run box ───────────────────────────────────────────────────────────── */

/* More than a fifth of the run's tool calls were searches: the spec's
   trigger for giving Minions code search. */
.detail-row dd[data-state="high"] { color: var(--nax-amber-text); }

/* ── Swarm steps: each step indented under its parent ──────────────────── */

.swarm-steps [data-depth="1"] .step-number { padding-inline-start: var(--nax-space-6); }
.swarm-steps [data-depth="2"] .step-number { padding-inline-start: calc(var(--nax-space-6) * 2); }
.swarm-steps [data-depth="3"] .step-number { padding-inline-start: calc(var(--nax-space-6) * 3); }

.swarm-activity,
.idea-activity {
  padding: var(--nax-space-3) var(--nax-space-4);
  border-top: 1px solid var(--nax-ink-10);
}

.swarm-activity ol,
.idea-activity ol,
.merge-order {
  display: grid;
  gap: var(--nax-space-1);
  margin: var(--nax-space-2) 0 0;
  padding-inline-start: var(--nax-space-5);
}

.merge-order { margin: 0; padding-block: var(--nax-space-3); }

@media (max-width: 700px) {
  .summary-card { margin: 0 var(--nax-space-2) var(--nax-space-2); }
  .diff-file { margin: 0 0 var(--nax-space-2); border-radius: 0; border-inline: none; }
}

.review-findings {
  flex-basis: 100%;
  text-align: left;
}

.review-findings ul {
  margin: 0;
  padding-left: var(--nax-space-4);
  color: var(--nax-ink-70);
}

.review-findings li[data-state="dropped"] { color: var(--nax-ink-45); }

/* The top card while a Minion or Gru works, and each lens of Gru's round:
   a pulsing dot while queued or reviewing, as a reply pending in a session. */
.summary-card[data-status="running"] { border-left-color: var(--nax-accent); }

.round-lenses {
  display: flex;
  flex-wrap: wrap;
  gap: var(--nax-space-1) var(--nax-space-4);
  margin: var(--nax-space-2) 0 var(--nax-space-1);
  padding: 0;
  list-style: none;
  font-size: 13px;
}

.round-lenses li {
  display: inline-flex;
  align-items: center;
  gap: var(--nax-space-2);
}

.round-lenses li:is([data-state="queued"], [data-state="running"])::before {
  content: "";
  flex: none;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--nax-accent);
  animation: message-pulse 1.2s ease-in-out infinite;
}

.round-lenses li[data-state="queued"]::before { background: var(--nax-ink-45); }
.round-lenses li[data-state="failed"] { color: var(--nax-red-text); }
.round-lenses li[data-state="skipped"] { color: var(--nax-ink-70); }

@media (prefers-reduced-motion: reduce) {
  .round-lenses li::before { animation: none; }
}

.bake-off td { vertical-align: top; }
.bake-off dl { margin: 0; }
