/* Machine-activity arc — a highlight that travels the card's border while an
   agent is ACTUALLY working the card (amber-slow when the heartbeat is gone).
   Queued/attached cards do NOT animate — that's the footer's named-agent chip.
   The tone rides --kanban-tone, set inline from the column meta. Painted as an
   overlay ring (mask keeps only the border band) so the card stays flat. */

@property --kanban-arc-angle {
  syntax: '<angle>';
  inherits: false;
  initial-value: 0deg;
}

.kanban-arc {
  pointer-events: none;
  position: absolute;
  inset: -1px; /* sit on the card's own border line */
  border-radius: inherit;
  padding: 1.5px; /* arc thickness */
  background: conic-gradient(
    from var(--kanban-arc-angle),
    transparent 0deg,
    var(--kanban-tone, var(--ui-stroke-primary)) 55deg,
    transparent 110deg
  );
  -webkit-mask:
    linear-gradient(#000 0 0) content-box,
    linear-gradient(#000 0 0);
  mask:
    linear-gradient(#000 0 0) content-box,
    linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
  mask-composite: exclude;
  animation: kanban-arc-spin 2.2s linear infinite;
}

/* Running but no heartbeat: amber crawl — still claimed, health unknown. */
.kanban-arc--stale {
  --kanban-tone: #fbbf24;
  animation-duration: 6s;
}

@keyframes kanban-arc-spin {
  to {
    --kanban-arc-angle: 360deg;
  }
}
