diff --git a/.gitignore b/.gitignore index 12b222d..eb3dc2c 100644 --- a/.gitignore +++ b/.gitignore @@ -24,3 +24,7 @@ backups/ # deployment mounts from the host — a release artefact, not source. media/ /media + +# Render working directory for scripts/learn-film.mjs. The finished mp4 and its +# poster are copied into the media directory, which is itself untracked. +.film/ diff --git a/apps/web/src/components/motion/StageRail.tsx b/apps/web/src/components/motion/StageRail.tsx index 9ace0ed..4940285 100644 --- a/apps/web/src/components/motion/StageRail.tsx +++ b/apps/web/src/components/motion/StageRail.tsx @@ -56,7 +56,17 @@ export function StageRail({ const body = ( <> - + {/* + * Wraps rather than truncates. The stage names are a fixed + * vocabulary of eight words we control, and truncation was + * silently rendering "QUALIFICATIO" and "PROCUREMEN" — losing a + * letter is worse than taking a second line. Two attempts to fix + * this by widening the card (8.5rem, then 10, then 11) each + * looked right in a DOM measurement and still clipped on the + * rendered frame, which is the argument for not depending on a + * magic width at all. + */} + {DEMAND_STAGE_LABELS[stage]} @@ -74,12 +84,22 @@ export function StageRail({ ); const shape = cn( - 'tap flex w-[8.5rem] shrink-0 flex-col justify-between gap-2 rounded-xl border p-3 text-left', + // 10rem, not 8.5, so the common labels sit on one line; the two + // longest wrap to two rather than losing a letter. + 'tap flex w-40 shrink-0 flex-col justify-between gap-2 rounded-xl border p-3 text-left', active ? 'border-brand bg-surface-2' : 'border-border bg-surface', ); return ( -
  • + /* + * `shrink-0` belongs on the LI, not only on the card inside it. + * Without it the list item shrank to its flex share — 88px against + * the card's 160 — and every card was overpainted by the next one, + * so the labels lost their last letters with no ellipsis to show + * for it. Three attempts to fix that by widening the card did + * nothing, because the card was never the thing being measured. + */ +
  • {onSelect ? (