Add the intro lede, per-row patina answer marks with DOM-sourced notes, mode-tile hover, and tighter card typography including inline pills and title arrows.
Co-authored-by: Cursor <cursoragent@cursor.com>
Let questionnaire runs finish early or jump into the seven remaining questions from a summary card grid, with hub navigation and per-answer summaries.
Co-authored-by: Cursor <cursoragent@cursor.com>
Add neutralContrastIssue() with a 7:1 ink floor and a 3:1 primary
separation floor, re-run it from renderPreview(), and paint the palette
hint in vermilion while the working neutral is bad. The warning clears
as soon as the neutral is fixed.
Prepared with AI assistance (Cursor).
Co-authored-by: Cursor <cursoragent@cursor.com>
Each option now draws its own page rather than a shared field with a
different column count. Simple grid holds strict paired rows at equal
image measures, balanced alternates wide images against captions, and
freeform crops a lead, adds an upper portrait, and spills the card row
into a set of prints with their own captions and marks. All three carry
handset sequences at the reference measures.
Behind them: one shared alignment-grid component mounted on every body
that asks for it, code-native nav primitives placed at the reference
measures rather than left to their grids, a project image-tone contract
the boards key their fills on, and footer link groups.
Prepared with AI assistance (Cursor).
Co-authored-by: Cursor <cursoragent@cursor.com>
The default lives in each surface's fallback, not in the markup: show()
checks whichever row the fallback names every time a tab opens, so the
checked attribute on the option never survived. Persuade, Operate, and
Read now open on Full palette. Experience keeps Restrained because four
working colors are not on its allow list, and a default pointing at a
blocked row would leave that tab with nothing selected.
The font screen's boards also take the chosen palette under Restrained,
which is the one answer no strategy block rewrites. They were drawing a
page the palette had never reached while screen 03 kept its color under
the same answer.
Prepared with AI assistance (Cursor).
Co-authored-by: Cursor <cursoragent@cursor.com>
The index board grows the parts only a portfolio has: a project rail, a
support row, and a pagination rail restated at the foot of the handset
stack. They mount behind a prop rather than for every board, because the
motion screen reads the same index body through :nth-of-type and a stray
sibling would shift its scenes. Their sheet loads after the boundary,
corner, and depth sheets so it wins ties on source order.
The color strategy question now opens on Full palette.
Prepared with AI assistance (Cursor).
Co-authored-by: Cursor <cursoragent@cursor.com>
The card row's squares came out three different widths: centering the
cards in the gallery shrank each one to its own label, and the square is
a share of its card. The cards take their column again and their contents
do the centering.
On the handset the section title and its paragraph were the smallest type
on a board that has room for more, so both take a step up.
Prepared with AI assistance (Cursor).
Co-authored-by: Cursor <cursoragent@cursor.com>
Font pair screen: drop the phone footer from the type boards, widen the
hero picture, split the editorial band evenly with the card row, center
the desktop cards, and fix the label line heights. The handset takes a
26px headline, stepped section spacing instead of one uniform gap, and a
single centered proof item between chevrons. Every word slot on these
boards now draws lorem rather than product copy, so a pair is judged on
its setting.
Color strategy screen: one-line question, an options panel that hugs its
rows, a preview whose height is free again, and the CTA stack in the same
place the font screen keeps it.
Also nudges the type scale specimen's top and left padding.
Prepared with AI assistance (Cursor).
Co-authored-by: Cursor <cursoragent@cursor.com>
Ship the browsable mosaic document as an isolated HTML file and document the build intent in WHAT.md so the categorization work has a concrete UI target.
Co-authored-by: Cursor <cursoragent@cursor.com>
Restrained mode now reads the palette like screen 02: primary-tinted
headline, tertiary eyebrow, secondary gradient hero, outlined ghost
CTA, and four-role gallery accents. Artboards lift with a soft shadow;
the phone gains surface bars and a second copy line. Each strategy
block sets matching image-gradient stops so committed, full palette,
and drenched transitions stay depthful instead of flat fills.
Co-authored-by: Cursor <cursoragent@cursor.com>
The heading family name sits big in its own face; one sentence in the
body face names its partner in bold and carries the why line. The
sentence demonstrates the body font, so the Heading/Body labels go.
Co-authored-by: Cursor <cursoragent@cursor.com>
Screen 04 drops the kicker and the text eyebrow, renders six large
scrollable specimen cards (heading and body each labeled and set in
their own face), and reuses screen 03's dual desktop-plus-phone
artboards with both hero copy blocks typeset live. The type hero
widens its copy column so wide display faces clear the image block.
Co-authored-by: Cursor <cursoragent@cursor.com>
Screen 03 lets operators compare restrained through drenched strategies on the dual-artboard preview; visual-cues now composes fonts.json before launch, and the picker server exposes it.
Co-authored-by: Cursor <cursoragent@cursor.com>
Show landing and app wireframes side by side with palette-driven accents instead of PRODUCT.md register and /context.json, matching v4's per-surface modes. Assisted-by: Cursor AI agent.
Co-authored-by: Cursor <cursoragent@cursor.com>
Post-rebase repairs after main moved 226 commits (site/ split to the
private impeccable-site repo, DESIGN.md spec now eight sections, register
extraction replaced by extractSectionValue, seed mode rewritten):
- document.md: transplant this branch's seed pipeline (assets, interview,
visual cues, picker) onto main's rewritten file; adopt the canonical
section vocabulary. The interplay with new-work's workshop is left for
PR review.
- picker: vendor kinpaku tokens/kit CSS, hero art, and favicon under
picker/ (site/ no longer exists here); drop the sharp resize step and
ship the compressed JPEG directly; declare astro/sharp-free deps.
- picker-server: read the register via extractSectionValue('Register')
since extractRegister is gone from context.mjs.
- palette.mjs / utils.js / test-suites.mjs / package.json / release.mjs:
rebuild as main's version plus this branch's additions, undoing hunks
the -X theirs replay had clobbered.
- craft.md / shape.md: reset to main (this branch's net change was zero).
- progress bar: animate transform instead of width (design hook finding).
Validation: bun run build green (prose validators clean), bun run test
198/198, picker-server suite 7/7.
AI-assisted (agent-implemented, maintainer-directed).
Co-authored-by: Cursor <cursoragent@cursor.com>