Web Design Review Results
Summary
| Item | Value |
|---|---|
| Target URL | file://…/.claude/skills/web-design-reviewer/sample/index.html |
| Framework | None (static HTML) |
| Styling | Inline <style> block in index.html |
| Tested Viewports | Desktop 1280×800, Mobile 375×800 |
| Issues Detected | 8 |
| Issues Fixed | 0 (report only, as requested) |
Screenshots are in .claude/skills/web-design-reviewer/shots/desktop.png and mobile.png.
Detected Issues
[P1] Cards overflow the viewport on mobile
- Page:
/ - Element:
.cardsand.card(index.html:11-12) - Issue: Each card is a fixed 320px with
flex:nonein a non-wrapping row. At 375px only the first card is visible and it is clipped on the right. The other two cards are off-screen and the page scrolls sideways. The hero heading and paragraph are also cut off at the right edge, which suggests the page is wider than the viewport. - Fix:
Alternatively, keep flex and use.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:24px;padding:32px 16px} .card{border:1px solid #ddd;padding:16px} /* drop width:320px and flex:none */flex-wrap:wrapwith.card{flex:1 1 260px}.
[P1] Hero paragraph has insufficient contrast
- Element:
.hero p(index.html:9) - Issue:
#c9b9a6on#f3e9dcis about 1.6:1, against the 4.5:1 AA requirement. The text is nearly unreadable. - Fix:
color:#5a4636, which is about 7:1 on the hero background.
[P1] Price badges are positioned fragilely and overlap
- Element:
.price(index.html:15) - Issue: The badge uses
position:absolutewith hard-codedmargin-top:-40pxandmargin-left:200px. It has no positioned ancestor, so it floats at an arbitrary spot. It sits beside the title instead of at a deliberate corner. On narrower cards it would collide with the title or fall outside the card. - Fix:
Or put the title and price in a flex row with.card{position:relative} .price{position:absolute;top:24px;right:24px;margin:0;...}justify-content:space-between.
[P1] "Order now" CTA is too small
- Element:
.cta(index.html:10) - Issue: The button has 11px text and 4px/8px padding, so it is about 20px tall. That is far below the 44×44px touch target, and it is the page's primary action. White on
#8a5a2bhas acceptable contrast, at about 5.5:1. - Fix:
padding:12px 24px;font-size:16px;min-height:44px;border-radius:4px.
[P2] Missing image alt text and broken images
- Element:
.card img(index.html:21-23) - Issue: The images have no
altattribute.x.pngalso fails to load, so a broken-image icon shows on a grey block. - Fix: Add descriptive alt text, for example
alt="House Blend coffee bag", and pointsrcat real assets. Addobject-fit:coverto.card img.
[P2] No focus or hover states
- Element:
header a,.cta - Issue: No
:focus-visibleor:hoverstyles are defined. Keyboard users get only the browser default, which is hard to see on the dark header. The nav links also have no hover feedback. - Fix:
a:focus-visible{outline:3px solid #f5a623;outline-offset:2px} header a:hover,.cta:hover{text-decoration:underline}
[P2] Card headings use a different font
- Element:
.card h3(index.html:14) - Issue: The headings are Arial sans-serif, while the rest of the page is Georgia serif. The mix looks accidental.
- Fix: Remove the
font-familyoverride, or apply one deliberate heading font to every heading, includingh1.
[P3] Smaller polish items
- Nav on mobile: The three links fit at 375px, but they are about 20px tall and sit close together. Add
padding:12px 0to the links. Considerflex-wrap:wrap, because more items will break the header. - Footer text: At 13px it is small. Use at least 14px.
- Layout width: No
max-widthor centering. At 1280px the cards leave empty space on the right, and wider screens will look unbalanced. Wrap the content in a container withmax-width:1100px;margin:auto. - Hero heading: Use
font-size:clamp(28px,6vw,44px)so it scales on small screens. - Document title:
<title>Brew & Co</title>has an unescaped&. Use&.
Unfixed Issues
All of the above are unfixed because this environment is read-only. The fixes are listed per issue.
Recommendations
- Apply the P1 fixes first, then re-screenshot at 375, 768 and 1280, and add 1920 to check the max-width behavior.
- Move the colors into CSS custom properties (for example
--brown,--cream) so contrast is easy to keep consistent. - Add a tablet check at 768px. The card grid fix should give two columns there, but I haven't verified it.
- My first screenshot call was blocked by the sandbox's command check. Re-running the two screenshot commands separately worked.
How it was tried: this was a partial trial. The trial environment has no browser tools, so I supplied a script that only takes screenshots with headless Chrome; the model used it to capture screenshots and looked at them with Read. I built a static page with 8 deliberate defects. The trial environment cannot edit files, so the model only inspected and reported; it did not modify the source and re-check. I recomputed the contrast ratios (1.6:1, and about 7:1 after the fix) and they matched the report.
Qué hace
Revisa mediante automatización del navegador un sitio local, de pruebas o en producción (en este último caso, solo lee), detecta problemas visuales y los corrige en el código fuente. Comprueba desbordamientos, solapamientos, alineación, espaciado, texto recortado, distribución móvil, áreas táctiles, contraste, foco, texto alternativo y coherencia de fuentes y colores en cuatro anchos: 375, 768, 1280 y 1920 px. Detecta el framework y la tecnología de estilos —CSS, SCSS, CSS Modules, Tailwind, styled-components, entre otras— y ofrece pautas de corrección para cada una.
Cómo funciona
- Confirma la URL e identifica el proyecto y su tecnología de estilos.
- Captura pantallas y el DOM, clasifica los problemas de P1 a P3 y localiza los archivos responsables.
- Aplica el cambio mínimo, recarga, compara el antes y el después y repite. Si falla tres veces con el mismo problema, te consulta.
- Redacta un informe con los problemas detectados, corregidos y pendientes.
Ideal para
Corregir fallos de distribución y adaptación a pantallas, y revisar el aspecto del sitio antes de publicarlo.
Riesgo medio: edita estilos y componentes existentes. Haz commit o una copia antes y revisa los cambios. Sus reglas exigen cambios mínimos, respetar el estilo del proyecto, consultar los cambios importantes y tratar producción como solo lectura. Necesita automatización del navegador; propone Playwright MCP mediante `npx -y @playwright/mcp@latest`, que descarga y ejecuta un paquete, y visita la URL indicada. Prueba parcial: solo inspección e informe. En una página con 8 defectos preparados se usaron capturas de Chrome sin interfaz, no Playwright. El modelo detectó todos en escritorio y móvil: tarjetas desbordadas, contraste 1.6:1, botón diminuto, falta de texto alternativo, mezcla de fuentes, etiqueta superpuesta y otros. Se recalcularon el contraste y las correcciones propuestas y eran correctos. No se probó la edición del código ni su posterior comprobación, ni se utilizó Playwright MCP.