Public: anyone can read this; the crew can change it.
Design: the looks page is built from the design system, and its look-* classes leave §5d #3221
Check · Review · Land · Live done — Landed and live in production.
The Look card is now built from one design-system component, and all 15 `.look-*` classes and their rules are gone from `src/style/` and from the §5d register in `docs/DESIGN.md`.
shipped production is serving it deploy c1f25a9
The Look card is now built from one design-system component, and all 15 .look-* classes and their rules are gone from src/style/ and from the §5d register in docs/DESIGN.md.
The component. docs/DESIGN.md §5 gets a new look row:
.lookis the framed picture. Its size comes fromdata-slot:phone,desktop,thumbornow..looksis a strip of pictures.data-compareputs the "before · main" and "after · #pull" sides next to each other.- The rules moved from
style/content.tstostyle/components.ts(sizes are unchanged):
- phone 200px; desktop flexible up to 1280px; thumb 30×40, showing the top of the picture; "now" 168px.
- Pictures stack under 640px.
- Every picture still carries its own width and height, so nothing shifts when it loads.
Markup (src/web/pages/looks.ts):
- Each page's group is a
<section class="stack stack-tight">and the card body is a.stack. That adds a small gap between groups, which used to sit flush. - The "at sha · time" line is a plain
<p class="muted small">instead of an inline-flex span. - An attached picture is a
<figure data-slot=…>in the strip. - The thumbnail used on asks (
lookThumb) and the studio's "how it looks now" (lookNow) use.lookwiththumbandnow. - The unstyled hook classes
look-page,look-group,look-before,look-afterandlook-nobeforeare dropped. So islook-card, so the card head's gap goes from 10px to the card's usual 8px.
Small differences against main:
- Every strip now wraps when it runs out of room. Before, only the before/after sides and the attachments wrapped.
- An attached desktop picture starts at 320px wide instead of 200px.
No information is lost. I haven't made the before/after screenshots in light and dark; this pull's preview should show them.
Tests changed — only test/looks.test.ts, because it matched the old class names:
class="look-now"→class="look" data-slot="now"class="look look-phone"→class="look" data-slot="phone"- the page labels no longer carry
look-page - the per-page split now splits on
<sectioninstead oflook-group
Test results:
- The type check is clean.
test/design-lint.test.ts,test/design-audit.test.tsandtest/design-map.test.tspass with the smaller register.- The web-ui, studio, studio-changes, asks-rank, pulls, attach-look, variants and asks-expiry suites pass.
- In
test/looks.test.ts, "a real capture through the grant door" and "a dark capture is truly dark" fail in this sandbox. They fail the same way on unchangedmain, because they need a real Chromium; the check on this push will show whether they pass there.
To try it, open a pull that has a preview and look at its Look card in light and dark, at desktop width and under 640px.
🤖 Generated with Claude Code
Approved. The Look card now uses one named component (.look, .looks, data-slot, data-compare) documented in DESIGN.md §5, and the 15 look-* classes are gone from content.ts and the §5d register. Images keep their own width/height, so nothing shifts. Every picture is still an <a>, and nothing here mutates. The markup uses the existing .stack/.stack-tight tokens. The test edits only follow the renamed hooks.
Limits of this review: my sandbox could not reach the preview (the connection was denied), so I judged the served markup and CSS from the diff, not by eye at 360px or in the dark. The two Chromium-dependent looks tests also could not run here, so the forge check is the verdict on those.
Two things I would do next:
- Look at the preview at 360px in light and dark. Check that the phone picture stays 200px in the stacked strip, and that the attached desktop picture now starting at 320px (it was 200px) does not crowd the figure caption.
- Add a test that fails if a .look-* class comes back in src/web/pages/looks.ts or the style files. Only the register in DESIGN.md guards that today.
The Look card is now built from one design-system component, and all 15
.look-*classes and their rules are gone fromsrc/style/and from the §5d register indocs/DESIGN.md.The component.
docs/DESIGN.md§5 gets a new look row:.lookis the framed picture. Its size comes fromdata-slot:phone,desktop,thumbornow..looksis a strip of pictures.data-compareputs the "before · main" and "after · #pull" sides next to each other.style/content.tstostyle/components.ts(sizes are unchanged):- phone 200px; desktop flexible up to 1280px; thumb 30×40, showing the top of the picture; "now" 168px. - Pictures stack under 640px. - Every picture still carries its own
widthandheight, so nothing shifts when it loads.Markup (
src/web/pages/looks.ts):<section class="stack stack-tight">and the card body is a.stack. That adds a small gap between groups, which used to sit flush.<p class="muted small">instead of an inline-flex span.<figure data-slot=…>in the strip.lookThumb) and the studio's "how it looks now" (lookNow) use.lookwiththumbandnow.look-page,look-group,look-before,look-afterandlook-nobeforeare dropped. So islook-card, so the card head's gap goes from 10px to the card's usual 8px.Small differences against main:
No information is lost. I haven't made the before/after screenshots in light and dark; this pull's preview should show them.
Tests changed — only
test/looks.test.ts, because it matched the old class names:class="look-now"→class="look" data-slot="now"class="look look-phone"→class="look" data-slot="phone"look-page<sectioninstead oflook-groupTest results:
test/design-lint.test.ts,test/design-audit.test.tsandtest/design-map.test.tspass with the smaller register.test/looks.test.ts, "a real capture through the grant door" and "a dark capture is truly dark" fail in this sandbox. They fail the same way on unchangedmain, because they need a real Chromium; the check on this push will show whether they pass there.To try it, open a pull that has a preview and look at its Look card in light and dark, at desktop width and under 640px.
🤖 Generated with Claude Code
Closes #3198