/* marks.css — AUTHORED. Never generated, never overwritten by a build.
 *
 * Layer 2 of the visual identity: the inline marks, styled once as a set.
 * Six are specified; four have hooks in the HTML today —
 *
 *   verdict · axis-mark · usage-count · intersection
 *
 * `identifier` is styled in identity.css as `code`, because that is the element
 * the renderer already emits for it and a second hook would be a synonym.
 * `provenance-mark` has no hook because the site never prints `measured` /
 * `invented` / `declared` as a whole cell — it says the same thing in prose in
 * the provenance stamp instead. Both absences are deliberate and neither is a
 * gap in this file.
 *
 * A mark is INLINE and lives in a cell or a sentence, so nothing here may set a
 * width, a display that breaks a line, or a margin that only works in a table.
 */

/* ---- verdict --------------------------------------------------------------
 * The pill. A verdict is a measured judgement about a value, and the three that
 * matter are not equal: `inert` is a trap (it looks like a working token and is
 * not), `vendor` is a caveat, `house` is a plain yes. The colour carries that
 * ranking, so a reader can scan a 428-row table for the traps without reading.
 */
[data-mark="verdict"] {
  font-family: var(--ds-font-mono);
  /* Body, not Caption. `inert` is the word that tells a reader a token is a
   * trap: it is content, and Caption is only ever for labels ABOUT content. */
  font-size: var(--ds-body);
  font-weight: var(--ds-weight-medium);
  padding: 1px 6px;
  border-radius: var(--ds-radius-chip);
  border: 1px solid currentColor;
  white-space: nowrap;
}
[data-mark="verdict"][data-value="house"]   { color: var(--ds-good); }
[data-mark="verdict"][data-value="agrees"]  { color: var(--ds-good); }
[data-mark="verdict"][data-value="vendor"]  { color: var(--content-secondary); }
[data-mark="verdict"][data-value="inert"]   { color: var(--ds-bad); }
[data-mark="verdict"][data-value="drifts"]  { color: var(--ds-warn); }
/* `not comparable` is deliberately NOT a state colour. It exists to stop the
 * numbers lying: counted as drift it looks like a defect, counted as a match it
 * looks fine, and it is neither. A neutral outline says "excluded, on purpose". */
[data-mark="verdict"][data-value="not comparable"] { color: var(--content-subtle);
                                                     border-style: dashed; }
[data-mark="verdict"][data-value="one fetch"] { color: var(--ds-good); }
[data-mark="verdict"][data-value="too large"] { color: var(--ds-warn); }

/* ---- axis-mark -------------------------------------------------------------
 * Presence or absence on one join axis. No pill: there are seven of these per
 * row in the inventory and seven pills would be a rash. Weight and colour only.
 */
[data-mark="axis-mark"] {
  font-family: var(--ds-font-mono);
  font-size: var(--ds-body);
  text-transform: uppercase;
  letter-spacing: var(--ds-track-head);
}
[data-mark="axis-mark"][data-value="yes"] { color: var(--ds-good); }
[data-mark="axis-mark"][data-value="✓"]   { color: var(--ds-good); }
/* An absence is not red. A construct with no Figma counterpart is a fact about
 * coverage, not a fault in the construct — colouring it as an error would make
 * the inventory read as 124 failures.
 *
 * ⚠️ But it is NOT --ds-faint either, and that was the mistake here until
 * 2026-09-10. Faint is documented as "provenance, chrome, anything deferrable",
 * and an absence mark is none of those: *not mapped* is the headline finding of
 * the entire Figma join, and this file was rendering it in the quietest token
 * on the site — the one that also happened to fail AA. A semantic
 * misassignment before it was ever a contrast bug, and fixing only the hex
 * would have left the site whispering its own conclusions.
 *
 * --ds-muted is where a finding belongs: below the brightest step, level with
 * the data around
 * it, and not asking to be skipped. */
[data-mark="axis-mark"][data-value="no"]                  { color: var(--content-secondary); }
[data-mark="axis-mark"][data-value="—"]                   { color: var(--content-secondary); }
[data-mark="axis-mark"][data-value="none"]                { color: var(--content-secondary); }
[data-mark="axis-mark"][data-value="not mapped"]          { color: var(--content-secondary); }
[data-mark="axis-mark"][data-value="never instantiated"]  { color: var(--content-secondary); }

/* ---- usage-count -----------------------------------------------------------
 * Tabular figures so a column of counts lines up on its digits, which is the
 * only reason the column is worth scanning at all.
 */
[data-mark="usage-count"] {
  font-family: var(--ds-font-mono);
  font-variant-numeric: tabular-nums;
  color: var(--content-default);
}
/* Zero uses is the finding on that row — a construct nothing renders. It is the
 * one count that means something other than "a number", which is exactly why it
 * is not set in the deferrable token: it was the loudest thing on the page
 * dressed as the quietest. */
[data-mark="usage-count"][data-value="zero"] { color: var(--content-secondary); }

/* ---- intersection ----------------------------------------------------------
 * The `└ of those,` rows in a tally table. They are a SUBSET of the row above,
 * not a sibling, and a reader who misses that will add them up and get a wrong
 * total. Indent and mute: the shape says "contained by", the colour says
 * "secondary".
 */
[data-mark="intersection"] {
  color: var(--content-secondary);
  padding-left: 0.75em;
}
