/* Workers screen. Only what the shared sheet does not already carry: the two-column split, the label/value field row, and the observations ring. */ .workers-split { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); gap: 14px; align-items: start; } .workers-detail { min-width: 0; } .workers .worker-row { cursor: pointer; } .workers .worker-row[aria-selected='true'] { background: var(--bg-2); box-shadow: inset 3px 0 0 var(--accent); } .workers .status-cell { display: inline-flex; align-items: center; gap: 8px; white-space: nowrap; } .workers .worker-id { font-size: 15px; color: var(--accent-hi); } .workers .dim { color: var(--text-lo); } .workers .task-link { display: inline-flex; align-items: baseline; gap: 8px; min-width: 0; } .workers .task-link .mono { color: var(--accent-hi); } .workers .task-link:hover .mono { text-decoration: underline; } .workers .task-title { color: var(--text-mid); font-size: 13px; } /* A human label, a machine value, on one line. Law 1 drawn as geometry. */ .workers .field { display: flex; gap: 16px; align-items: baseline; padding: 5px 0; } .workers .field-name { flex: none; width: 150px; color: var(--text-mid); font-size: 13px; } .workers .field-value { min-width: 0; display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; } .workers .chips { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 12px; } .workers .steps { margin: 0 0 12px; padding-left: 20px; color: var(--text-mid); display: flex; flex-direction: column; gap: 4px; } .workers .reg-lead { display: flex; align-items: center; gap: 8px; margin: 0 0 10px; color: var(--text-hi); } .workers .reg-lead svg { color: var(--accent); } /* ── the observations ring ─────────────────────────────────────────── One distinct failure per row, with its repeat count kept whole. A count of 41 means something looped 41 times; that number is the finding, so it gets weight instead of a parenthesis. */ .workers .obs-latest { margin: 0 0 12px; border-style: solid; border-color: var(--line-hi); white-space: pre-wrap; overflow-wrap: anywhere; } .workers .obs { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; } .workers .obs-item { background: var(--bg-2); border: 1px solid var(--line); border-radius: var(--r-sm); padding: 10px 12px; } .workers .obs-head { display: flex; gap: 10px; align-items: baseline; } .workers .obs-count { flex: none; font-size: 15px; color: var(--text-hi); min-width: 42px; text-align: right; } /* Repeats are the signal that something is stuck rather than merely broken. */ .workers .obs-count[data-repeat='true'] { color: var(--accent-hi); } .workers .obs-msg { min-width: 0; color: var(--text-machine); font-size: 12.5px; white-space: pre-wrap; overflow-wrap: anywhere; } .workers .obs-when { display: flex; flex-wrap: wrap; align-items: baseline; gap: 8px; margin-top: 8px; padding-left: 52px; font-size: 12px; } .workers .obs-when .mono { color: var(--text-lo); } @media (max-width: 1100px) { .workers-split { grid-template-columns: 1fr; } .workers .obs-when { padding-left: 0; } .workers .field { flex-direction: column; gap: 2px; } .workers .field-name { width: auto; } }