.queue-line { stroke: var(--line); stroke-width: 1; }
.moving-thread { cursor: pointer; transition: transform 260ms cubic-bezier(.22, 1, .36, 1); }
.moving-thread .thread-body { fill: var(--selected); stroke: var(--accent); stroke-width: 1.5; }
.moving-thread[data-state=blocked] .thread-body { fill: oklch(95% .025 75); stroke: var(--waiting); }
.moving-thread[data-state=owner] .thread-body { fill: var(--accent); }
.moving-thread[data-state=owner] text { fill: var(--paper); }
.moving-thread text { font: 14px ui-monospace, monospace; pointer-events: none; }
.moving-thread .thread-focus { fill: transparent; stroke: transparent; pointer-events: all; }
.moving-thread[aria-pressed=true] .thread-focus { stroke: var(--accent); stroke-width: 1.5; }
.moving-thread:focus { outline: none; }
.moving-thread:focus-visible .thread-focus { stroke: var(--accent); stroke-width: 2; stroke-dasharray: 3 2; }
.permit-count { font: 16px ui-monospace, monospace; }
@media (prefers-reduced-motion: reduce) { .moving-thread { transition: none; } }
@media print { #controls { display: none; } #static-diagram > img { display: block; } }
