Design language extracted

Tokyo art books, one red.

https://utrecht.jp/ · 687 elements · 2026-05-14
Intent: landing · 0.29 Material: flat · 0.55 Library: unknown · Shopify-hosted Voice: friendly · third-person Headings: Sentence case · tight Stack: Shopify (keyframe signatures)
4
Colors
4
Font families
11
Spacing
0
Shadows · radii
6
Components
2
Icons
100%
WCAG
74
Score (C)
01 · Color

Four colors. That's it.

Red #db0000 (836 uses) carries the brand entirely — used for text, borders, and full-bleed surfaces. Black ink, white surface, and a single mid-grey complete the palette. No tints, no shades, no semantic ramps.
Brand & neutrals
#db0000
Primary · the red
836 uses · hsl(0 100% 43%)
#000000
Ink · text & borders
299 uses
#ffffff
Surface · page
245 uses
#808080
Muted · captions
20 uses
Material profile
Saturation
0.25 (the red dominates one chromatic position)
Shadow profile
none · 0 detected shadow tokens
Avg radius
0px · sharp corners everywhere
Max radius
0px
Has pills
no
Backdrop blur
no
Gradients
0 · no gradient surfaces
Background patterns
plain · 0 noise / dot / line / mesh / svg-pattern
Imagery
mixed · 2 raster images detected (full-width banners)

Tokens by context

The palette is small enough to enumerate inline. --color-text-* reuses the brand red as the link / accent text token; --color-bg-1 is the same red, used as a full-bleed footer background. Note: success / warning / error / info tokens are declared in the source but serialize as [object Object] — the extractor couldn't read them, so they're documented as absent.

Surface

2 tokens

Just two: a pure white page surface and a pure red full-bleed (used for the footer band and the primary CTA button). No mid-tone, no panel-2, no sunken state.

Layering
--color-bg · page
white-on-white — no inner card surface exists; structure is drawn with hairline borders
#ffffff (surface) #db0000 (--color-bg-1) #000000 (ink)
TokenHexUsed for
--color-bg#ffffffPage background, default card surface (245 uses)
--color-bg-1#db0000Footer band, primary button surface

Text

4 tokens

Black ink for body, the brand red for links and special headings, a single grey for muted, white for reversed-out type on the red footer.

In context
おすすめ / Recommend

--color-text · #000000 — body text. The system mostly stays here.

--color-text-2 · #808080 — muted captions, metadata.

Inline link colored with --color-text-1 reuses the brand red.

This sentence sits at 14px / 400 — Utrecht's only body size.

TokenHexUsed for
--color-text#000000Body text, headings (299 uses)
--color-text-1#db0000Links, navigation, brand emphasis (836 uses — text+border+bg combined)
--color-text-2#808080Muted captions, metadata (20 uses)
--color-text-3#ffffffReversed-out text on the red footer

Borders

1 effective token

Utrecht draws all structural separation with a black 1px hairline. No detected --line-* or --border-* tokens — the border color is just #000000 applied inline.

Border variants
Default hairline
1px #000000
Red hairline (input focus)
1px #db0000
Full-bleed red
--color-bg-1 surface

Status & callout

0 resolvable

The source CSS declares success, warning, error, and info but the extractor serialized them as [object Object] — the values weren't readable. With no resolvable status tokens and a 4-color palette, all status states in the real product likely collapse to the same brand red (errors) or omit color entirely.

02 · Type

One face. One size.

GT America Standard owns 536 of 687 elements. Every detected heading sits at 14px / 400 — the same as body. The system has no display tier; hierarchy is built with spacing and color, not type scale.
Font families
GT America Standard 536× Times 145× Arial GTStandard-M
⚠ Audit recommends limiting to 2 families. Times and Arial appear to be fallback artifacts; GTStandard-M is an alternate weight loaded as a separate family.
GT America is a commercial face from Grilli Type. This preview falls back to Inter; the proportions and tight 14px/14px metrics are preserved.
Type scale (all 2 sizes)
14pxGT America · body, h1 Everything — page title, section headings, body, navigation — sits here. 400 · lh 14 · all
13.33pxGT America · input Form field default — rem-derived (0.833rem at 16px root). 400 · input
Note: the source contains 700-weight glyphs (40 detected uses) but designlang did not surface a 700-size pairing — likely used inline on the same 14px base. The review's own larger H1 / H2 sizes (32–88px) are review-chrome decisions, not source tokens. Utrecht's actual page would render this entire review at 14px.
Weights in use
Aa
400 · regular · 647×
Aa
700 · bold · 40×
03 · Spacing

An arbitrary scale.

11 detected values from 4px hairline to 497px section gap — but the steps don't follow a base unit. The audit flag "No consistent spacing base unit detected — values appear arbitrary" reflects an editorial / per-page authoring style rather than a tokenized scale.
s0 · 4px
hairline
s1 · 29px
7.25×
s2 · 58px
14.5×
s3 · 76px
19×
s4 · 88px
22×
s5 · 114px
28.5×
s6 · 131px
32.75×
s7 · 158px
39.5×
s8 · 233px
58.25×
s9 · 345px
86×
s10 · 497px
124×
04 · Elevation & shape

None. Flat by commitment.

No shadow tokens, no radius tokens, no gradients. The radius scale in design-tokens.json is literally {}. Cards, modals, buttons, inputs — all sharp-cornered, all bordered with a 1px line, all no-shadow. The system uses the void of elevation as elevation.
Shadow scale
0 tokens · {}
Radius scale
0 tokens · {}
Gradient count
0
Pill use (hasPill)
no
Backdrop blur
no
Inset shadows
0
Z-index layers
8 (just two effective layers: sticky 10–12 and base −100 to 9)
05 · Motion

One duration. One curve.

Hover any card. A single 600ms cubic-bezier(0.19, 1, 0.22, 1) ease-out (the "expo-out" curve) handles transforms and background transitions. Linear handles utility transitions like visibility / opacity.
lg
600ms · cubic-bezier(0.19, 1, 0.22, 1) · expo-out
utility
linear · visibility / opacity
feel
mechanical · scroll-linked: yes
The 0.19/1/0.22/1 curve is a strong expo-out: instant at the start, easing into a long settle. Reads as deliberate and editorial.
Keyframes detected
  • shopify-rotator · 0° → 270° rotate
  • shopify-dash · stroke-dashoffset animation
  • acceleratedCheckoutLoadingSkeleton · opacity pulse 1 → 0.5 → 1
These keyframe names are Shopify defaults — confirms the storefront platform even though stack-intel didn't flag it.
06 · Icons

Two. Both filled.

Only 2 SVG icons detected — both fill-only, both bespoke, both larger than the typical UI 24px grid (size class xl). Probably the logo mark and a single decorative glyph. The product itself relies on text labels rather than iconography.
2
Total icons
2
Fill only
0
Stroke only
0px
Avg stroke
xl
Size class
red/white
Colors
The detected icons have empty class attributes — they're inline-authored SVGs rather than a library set. icon-system.library = unknown. The dominant color is rgb(219, 0, 0) (the brand red) with rgb(255, 255, 255) for the inverted footer instance.
07 · Components

Six patterns. All hairline.

Detected: buttons, inputs, links, navigation, footer, modals. No cards, badges, dropdowns, accordions, tabs, tooltips, or switches. Every primitive shares the same shape vocabulary — sharp corners, 1px borders, GT America at 14px.

Buttons

2 instances detected · 1 anatomy variant · red-on-white default

Inputs

6 instances · sharp corners · black hairline → red on focus

Navigation

34 instances · 5 nav rows detected on the page · bilingual JP/EN

Modals

13 instances · sharp corners · z-index 1000 (declared in product CSS)
ニュースレター登録 / Subscribe

新しい本の入荷情報や、TOKYO ART BOOK FAIR のお知らせをお届けします。

Get notified about new arrivals and Tokyo Art Book Fair announcements.

08 · Voice

Friendly, third-person, bilingual.

The site addresses the reader in the third person (typical of Japanese commercial copy) and pairs every Japanese heading with an English translation. Only one CTA verb was detected — submit — because the page is structurally minimal: most "actions" are direct links.
Sample headings
/ Recommend
/ Restock
/ Utrecht
CTA verbs & button labels
submit
A single verb across the entire surface. Almost every other interaction is a styled link with a literal label ("All Products", "Categories", "Access").
Voice metadata
Tone
Friendly
Pronoun posture
Third-person
Heading case
Sentence case
Heading length
Tight
Total buttons
1
Total headings
2 detected (more exist; the extractor matched 2)
Bilingual
Yes — every heading pairs JP / EN
09 · Anatomy

5 nav layers, one body, one footer.

The reading order has nav-nav-nav-nav-nav-content-footer-nav — five nav sections in a row at the top. This is the brand wordmark + utility row + main menu + breadcrumb + login row pattern typical of Japanese commercial sites. The single "content" section runs ~5,000px tall before the red footer band.
navBrand wordmark · Access (header utility row)0.40
navAccess0.90
navNews0.90
navAll Products · Categories · Publishers · Sale · Search0.90
navLog in0.90
contentおすすめ / Recommend · 再入荷商品 / Restock · ~5064px tall0.30
footerSite footer · 941px band0.95
navニュースレターに登録 / Subscribe to our newsletter0.90
Note: 6 of 8 sections are classified nav — a heuristic stretch. In practice the first 5 nav rows form the multi-tier header, and the trailing nav is the newsletter footer block. intent.json flagged needsSmart: true on most sections for this reason.
10 · Accessibility

100%. One pair, one pass.

Only one foreground/background pair was detected by the extractor: white on red. It clears WCAG AA at 5.23:1. The rest of the page (black on white, etc.) wasn't enumerated by the run — but those pairs clear AAA trivially.
100%
WCAG contrast score
1 passing pair · 0 failing · across 687 elements
Aa Sample text
#ffffff on #db0000 · footer
5.23:1 AA
Aa Sample text
#000000 on #ffffff · body
21.0:1 AAA
Aa Sample text
#db0000 on #ffffff · link
5.23:1 AA
Aa Sample text
#808080 on #ffffff · muted
3.95:1 AA-lg
11 · Audit

Design Score: 74 / 100 (C).

Five issues — most are CSS hygiene rather than visual design problems. The typography and spacing scores drag the overall grade, but the actual visual coherence is high (single accent color, perfect WCAG, consistent sharp-corner shape vocabulary).
⚠ Warning · Medium
4 font families
Recommendation: limit to 2 (heading + body). Times, Arial, and GTStandard-M look like fallback artifacts — only GT America Standard is actively designed.
⚠ Warning · High
No consistent spacing base unit
Values appear arbitrary (4, 29, 58, 76, 88, 114, 131, 158, 233, 345, 497). Likely page-by-page editorial authoring rather than a tokenized system.
⚠ Warning · Medium
34 !important rules
Prefer specificity over overrides. Common in Shopify themes where theme CSS competes with global stylesheets.
⚠ Warning · Medium
87% of CSS unused
A purge step (PurgeCSS / Shopify theme cleanup) would meaningfully reduce shipped stylesheet weight.
⚠ Warning · High
1,774 duplicate CSS declarations
Multiple stylesheet entry points emitting overlapping rules. Bundler-level dedupe is the cheap fix.
✓ Strength
Tight, disciplined color palette
Only 4 colors. Brand red anchors 836 uses. Color discipline score: 100/100.
✓ Strength
Consistent border radii
0 radius tokens, 0 detected radius uses — the system commits fully to sharp corners. Radius discipline: 100/100.
✓ Strength
Strong accessibility compliance
Every detected pair clears WCAG. A11y score: 100/100.
12 · Resources

Generated artifacts.

23 output files in this directory. Click to open.
designlang v12.10.0 · extracted 2026-05-14 · review compiled 2026-05-14