diff --git a/src/client/components/Dailies.tsx b/src/client/components/Dailies.tsx index bbb4cb1..e612f4e 100644 --- a/src/client/components/Dailies.tsx +++ b/src/client/components/Dailies.tsx @@ -120,6 +120,11 @@ export function Dailies({ * The same pill whether it is a game's standing chore or an event that repeats: * to the reader at 23:50 they are the same job, and the distinction between * "the app knows about this" and "a wiki published it" is ours, not theirs. + * + * The game's hue is on the border in both states — softly when the job is + * outstanding, fully once it is done. A chip that only takes its colour on + * completion means the strip you actually scan, the unfinished one, is a row of + * identical grey pills with no clue which game each belongs to. */ function TickChip({ label, @@ -150,20 +155,25 @@ function TickChip({ title={title} className="flex max-w-[15rem] items-center gap-2 rounded-full border px-3 py-1.5 text-xs font-medium transition-colors" style={{ - borderColor: isDone ? hue : "var(--color-hairline)", - color: isDone ? hue : "var(--color-faint)", - background: isDone ? `color-mix(in srgb, ${hue} 14%, transparent)` : "transparent", + borderColor: isDone ? hue : `color-mix(in srgb, ${hue} 34%, transparent)`, + // Colour identifies the game; done-ness is carried by the tick, the + // full-strength border and the wash. Keeping the label readable matters + // more than saturating it, so an outstanding chip stays on muted ink. + color: isDone ? hue : "var(--color-muted)", + background: isDone + ? `color-mix(in srgb, ${hue} 14%, transparent)` + : `color-mix(in srgb, ${hue} 5%, transparent)`, }} > {label}