This sheet is the reference for anyone building or designing for eulaw.ai: our own engineers, an agent working in the codebase, or an external agency. Every value here is taken from the shipped stylesheets, not from a mood board, so what you see is what production actually renders.
The engineering companion, with file paths and the rules an agent must follow, is
brand/BRAND.md in the product repository. The authority for the public marketing
site specifically is frontend/docs/brand-style-guide.md, measured from the live
pages; where it and this sheet disagree about the site, that guide wins.
This sheet lives at https://eulaw.ai/brand/. Link to it rather than passing a copy around, so nobody works from a stale version. It prints cleanly from the browser if you need it on paper.
Shown above at its real size. The lockup is measured from .nav-logo on the
live site, not redrawn.
0.75rem)..ai sits a shade brighter than eulaw: #E5E5E5 with
#ffffff on dark, both #14171D once the navbar goes solid.Two themes, always. The marketing site is dark by default and opts into light per page. The product is light by default. Nothing ships until it has been seen in both.
These are measured off the live / and /about. Marketing pages
render light by default. Use these values when designing a page.
Headings, emphasised text#1a202cParagraphs, subheadings#4a5568Captions, metadata#7A7A7APage background#ffffffFull navbar#1a202cSection rulesrgba(128,128,128,0.25)data-theme, so --text-primary resolves to its bare dark
value and a heading styled with it renders white on white. This has caused four
separate bugs. Use a literal, or pair the token with a
:global(.light-landing) override. The --lp-* tokens below are the
exception, they are defined per theme on the element itself.
--lp-bg#181818
--lp-surface-2#252525
--lp-text#FFFFFF
--lp-muted#7A7A7A
--lp-accent#E6CC80
--lp-on-accent#181818
--lp-ok#4ade80
--lp-warn#f59e0b
--lp-bg#ffffff
--lp-surface-2#eef0f4
--lp-text#181818
--lp-muted#4a5568
--lp-accent#7A5C1E
--lp-on-accent#ffffff
--lp-ok#007029
--lp-warn#a4610a
--bg-app#181818
--bg-chat-area#1A1A1A
--bg-dark-surface#252525
--text-primary#FFFFFF
--text-muted#5A5A5A
--border-dark#5A5A5A
--citation-fg#E6CC80
--bg-app#F5F5F5
--bg-chat-area#FFFFFF
--bg-dark-surface#E8E8E8
--text-primary#181818
--text-muted#5A5A5A
--border-dark#D1D5DB
--citation-fg#8A6A1F
#E6CC80 on white fails contrast and is
never permitted. Light mode uses a darkened bronze instead: #7A5C1E for
marketing accents, #8A6A1F for citation markers. This is the single most
common way to break the brand.
One colour, one job. #01300a is a near-black green and it means
this is the action that converts. Hover is #005a15, text is white.
Get Started Try for free Secondary action
--lp-ok), not for decoration. If a design needs two green
buttons, one of them is not the primary action.
/ still sets its serif through --font-serif-display, which is
Georgia. /about and the menu pages moved to Newsreader on 2026-08-17. Unifying
them is a one-line change that has deliberately not been made, because the landing hero is
the highest-traffic surface on the site. New content pages follow the /about
column. Do not change it as an implementation detail.
Scale: 12 · 14 · 16 · 18 · 20 · 24 · 32 · 40 px. Body line-height 1.6, headings 1.2. Headings are sentence case, never Title Case.
.12em to .18em on uppercase mono.
| Kind | Padding | Radius | Size |
|---|---|---|---|
| Standard | 12 × 24 | 8 | 14 / 600 |
| Hero | 16 × 32 | 12 | 16 / 600 |