Can it rebuild a screen from a screenshot?

The prompt
Here is a screenshot of a web app at 1280 × 800 pixels. Build this screen so it looks the same in a 1280 × 800 browser window: the same layout, colours, text, spacing, icons and charts. It must be one complete, self-contained HTML file: inline all CSS and JavaScript, and make no network requests of any kind (no CDNs, web fonts or remote images). Reply with the file in a single ```html code block.
Sent with the screenshot above, as one user message.
What we saw
GPT-6.1 Sol came closest at 97%, in 90 seconds for six cents. Claude Sonnet 5.5 was next at 94%, then Claude Opus 5.5 at 89%. Claude Fable 5.1, Anthropic's priciest model at $50 per million output tokens, got the colours right but came in at 78%, because most of its page sits a few pixels off.
Thinking longer didn't help. Mistral Large 4 thought for 41,000 tokens over ten minutes and came last at 46%. Kimi K3, the most talked-about model in this list, thought for 20,000 tokens and four minutes and landed at 68%. Ember-1, Fireworks' model built on Kimi K3, thought for 12,000 tokens and landed one point lower.
The text was never the problem: every model shows 86 or 87 of the 87 pieces of text, and the two misses are a plus sign drawn as an icon. The heat grid is where they split. It has 70 cells in five shades of orange. GPT-6.1 Sol and the three Claude models got most of them right, Gemini 4 Argon came close, and the other eight drew a pattern of their own.
Results
| Model | Match | Text | Time | Cost |
|---|---|---|---|---|
| GPT-6.1 Sol | 97% | 87 of 87 | 1 min 30 s | $0.060 |
| Claude Sonnet 5.5 | 94% | 87 of 87 | 53 s | $0.084 |
| Claude Opus 5.5 | 89% | 87 of 87 | 48 s | $0.12 |
| MiniMax M3.1 Flash | 78% | 87 of 87 | 3 min 4 s | $0.013 |
| Claude Fable 5.1 | 78% | 87 of 87 | 63 s | $0.30 |
| Gemini 4 Argon | 69% | 87 of 87 | 1 min 39 s | $0.083 |
| Kimi K3 | 68% | 86 of 87 | 4 min 4 s | $0.29 |
| Ember-1 | 67% | 87 of 87 | 3 min 56 s | $0.27 |
| Muse Wonder | 66% | 87 of 87 | 34 s | $0.12 |
| Grok 4.7 | 59% | 87 of 87 | 49 s | $0.040 |
| DeepSeek V4.1 Flash 1017 | 57% | 87 of 87 | 2 min 29 s | $0.009 |
| Muse Spark Open | 53% | 87 of 87 | 80 s | $0.025 |
| Mistral Large 4 | 46% | 86 of 87 | 10 min 25 s | $0.20 |
GPT-6.1 Sol OpenAI
97% match

1 min 30 s$0.0605.8k tokenseffort mediumText: 87 of 87 pieces right.
Four cells in the Wednesday row of the heat grid have the wrong shade, and the plus on the button is its own. Everything else lines up.
Claude Sonnet 5.5 Anthropic
94% match

53 s$0.0848.1k tokenseffort highText: 87 of 87 pieces right.
Lines up almost everywhere. The parts list sits a few pixels higher, and a cell or two of the heat grid has the wrong shade.
Claude Opus 5.5 Anthropic
89% match

48 s$0.125.5k tokenseffort highText: 87 of 87 pieces right.
Lines up almost everywhere. Several heat-grid cells have the wrong shade.
MiniMax M3.1 Flash MiniMax
78% match

3 min 4 s$0.01321k tokenseffort maxText: 87 of 87 pieces right.
The layout lines up closely, but the heat grid has its own pattern and the synth names in the table lost their bold.
Claude Fable 5.1 Anthropic
78% match

63 s$0.305.7k tokenseffort highText: 87 of 87 pieces right.
The heat grid's shades are nearly all right, but most of the page sits 5 to 7 pixels off: the sidebar items and chart bars higher, the table rows lower.
Gemini 4 Argon Google
69% match

1 min 39 s$0.0838.0k tokenseffort mediumText: 87 of 87 pieces right.
Looks right at a glance, but the cards and table rows are a few pixels taller, so everything below the header drifts down and shows up twice in the differences view.
Kimi K3 Moonshot AI
68% match

4 min 4 s$0.2927k tokenseffort maxText: 86 of 87 pieces right, missing "+ New repair".
Every card and table row comes out a little bigger, so the whole page drifts, and the heat grid has its own pattern.
Ember-1 Fireworks
67% match

3 min 56 s$0.2718k tokenseffort maxText: 87 of 87 pieces right.
Every card and row is taller (the table rows are about 50 pixels apart, against 32), so the table runs to the bottom of the screen and its Due column spills over the edge of its card. The heat grid has its own pattern.
Muse Wonder Meta
66% match

34 s$0.125.8k tokenseffort mediumText: 87 of 87 pieces right.
The heat grid has its own pattern, the table rows are taller, and the due dates in the parts list are grey where the screenshot has them orange.
Grok 4.7 xAI
59% match

49 s$0.0405.9k tokenseffort highText: 87 of 87 pieces right.
The heat grid is paler and has its own pattern, and the cards and table rows are taller, so the lower half drifts down.
DeepSeek V4.1 Flash 1017 DeepSeek
57% match

2 min 29 s$0.00915k tokenseffort highText: 87 of 87 pieces right.
A wider sidebar squeezes the table until faults and dates wrap onto two lines, and the heat grid has its own pattern.
Muse Spark Open Meta
53% match

80 s$0.0255.5k tokenseffort mediumText: 87 of 87 pieces right.
Everything is smaller and packed toward the top: the cards and the bar chart are shorter, so the table starts about 60 pixels higher, and the heat grid has its own pattern.
Mistral Large 4 Mistral
46% match

10 min 25 s$0.2047k tokenseffort highText: 86 of 87 pieces right, missing "+ New repair".
The sidebar is about 100 pixels too wide, the cards are bigger, and the bottom of the table falls off the screen.
How it was checked
Each rebuild was opened with the network off in a 1280 × 800 window and photographed. Match is the structural similarity (SSIM) of that photo and the original, scaled to 640 × 400: 100% is the same picture, and a layout that sits a few pixels off loses a lot. Show differences marks in red where the two differ after both are slightly blurred, so font smoothing alone doesn't count.
Text counts the pieces of text on the original (a label, a number, a table cell) that the rebuild shows exactly.
Every model ran once, with no system prompt, at the effort OpenRouter uses for it by default, with its full output limit (only our $3 stop for runaway answers applies) and up to 60 minutes. Cost is today's list price for the tokens the run used.