div.send looks like a button but is a div with a text cursor: it can't be focused, ignores Enter and screen readers don't announce it.

<button type="submit"> (or <a href> if it navigates) with the same style.The CSS asks for Inter with no @font-face. It's installed on this machine, so it looks right here; most visitors get the next font in the stack.

font-display: swap) or drop it from the stack and use the system font on purpose.#A9AFA4 on #FBF8F2, 14px. Needs 4.5:1 (WCAG AA).


#6D7368 (4.63:1).#8B8F87 on #F6F0E6, 18px. Needs 4.5:1 (WCAG AA).

#6B6F67 (4.55:1).#8A8F86 on #F6F0E6, 13.5px. Needs 4.5:1 (WCAG AA).

#6A6F66 (4.57:1).3.12 · 3.34 · 3.40 · 3.71 · 3.93
166px wider than the screen, starting at article.card.
repeat(auto-fill, minmax(min(100%, 16rem), 1fr)), min-width: 0 on flex children, tables inside an overflow-x: auto wrapper.In use: 4px ×3, 6px ×1, 8px ×1, 10px ×1, 12px ×4, 16px ×1, 20px ×1. Close values (10, 12, 16) read as mistakes, not choices.



--r-sm, --r-md, --r-lg, --r-pill), and each component picks one.An element with a 12px radius inside a 16px one, 10px from its edge. The corners aren't parallel and the inner one looks swollen.

16 − 10 = 6px, or calc(var(--r-lg) - var(--pad)).rgba(0, 0, 0, 0.5) 0px 2px 4px 0px: black at high opacity with little blur reads as a dirty edge, not depth.

Values like 11px ×7, 5px ×6, 26px ×5, 13px ×4, 22px ×4, 23px ×4, 14px ×3, 18px ×3. Almost equal to their neighbors on the scale, they create 1 to 3px misalignments.



4 8 12 16 24 32 48 64) and tokens for it.Height, radius and font size: 46px · 6px · 15.5px, 46px · pill · 14px, 46px · 8px · 15px.



Nothing changes when the pointer is over them: they feel dead.


:hover (background 6 to 10% darker), :active 1px down, and a 150ms transition on the properties that change.The icon sits 3.2px below the center of the text line.

display:inline-flex; align-items:center on the button.In use: 12 13 13.5 14 15 15.5 17 18 21 22 23 28 46. Pairs nobody can tell apart: 13/13.5, 13.5/14, 14/15, 15/15.5, 17/18, 21/22, 22/23.




rem tokens: for example 13 · 15 · 17 · 21 · 28 · 44.About 130 characters per line. Past 75, reading tires and the eye misses the next line.

max-width: 34em (about 65 characters) on paragraphs.#2F4A3A ×7 #2E4B3B ×1 #304A39 ×1#8A8F86 ×5 #8B8F87 ×1#C8643B ×4 #C9663C ×1
Nobody sees the difference; the code keeps both forever.



34 of 34 color declarations use raw values instead of variables (0 use tokens). Changing the brand becomes a treasure hunt.
--bg, --text, --accent…) on top of a scale; see palette.css.30px instead of 32px (-2px, 3 blocks)34px instead of 30px (+4px, 3 blocks)
Nobody notices the number; everyone feels the page is crooked.


max-width + margin-inline: auto + one padding-inline token) for every section, instead of padding per section.Gaps between sections: 72px → 58px → 64px → 66px. Values this close look like mistakes.
--s-8: 64px), and a bigger one only where the subject really changes.Ensure all page content is contained by landmarks


Ensure the order of headings is semantically correct

Ensure the document has a main landmark

Without hyphenation, the web opens gaps between words to fill each line.

text-align: start.Small capitals crowd each other without a little space between them.


letter-spacing: .06em to .1em on uppercase labels.At 46px letters already look apart; positive tracking pushes them further.

letter-spacing: -0.01em to -0.025em on large headings.Prices and amounts in columns with proportional digits: they don't stack under each other.

font-variant-numeric: tabular-nums on tables, prices and totals.No prefers-color-scheme: dark rule. Not required; if you want one, the tokens below include the dark version.
@media (prefers-color-scheme: dark).The first Tab stop is not a link to the main content, so keyboard users go through the whole menu on every page. WCAG 2.4.1
Made by /coleoni-interface · skills.coleoni.com