Constructo Design System
Constructo is a light, practical construction-company site. It reads like a project board pinned over a blueprint: thin grey architectural line drawings on a pale blue wash, tall condensed black uppercase headlines, plain grey body copy and square orange buttons. Colour is rationed: one safety orange for actions and highlights, black for type, and the photography (timber, scaffolding, cranes, concrete) supplies the rest.
Four signatures make it recognisable:
- The orange brush underline. One word in each big headline sits on a hand-drawn orange stroke: FOR BETTER FUTURE. underlines BETTER, OUR AREAS OF EXPERTISE underlines EXPERTISE.
- The slanted header tab. The fixed navigation is a white 90px bar, 1200px wide, whose left and right ends are cut at an angle by 90px CSS border triangles, so it hangs from the top of the viewport like a trapezoid tab.
- Condensed uppercase Oswald against Satoshi. Headings, labels, buttons, menu and footer links are Oswald in uppercase; only the small blog category links switch to Satoshi. Every paragraph is Satoshi in dim grey #54565A, in sentence case.
- The black project grid. Projects sit edge to edge on a black band, three across with 12px gaps, each photo captioned by a white Oswald name and a grey Satoshi category on the same line.
Colors
Surfaces
#FFFFFFPage background, cards, the header tab
#EEF4FCAlice-blue wash: the hero gradient (#EEF4FC to transparent), the Latest News band, the full-screen menu
#F2F4F8Circles behind the service icons
#000000The project grid band and the footer
Ink
#FFFFFFText on primary
#000000Headlines, labels, card titles, menu links
#54565AParagraphs, the testimonial quote, form input text (all p and li tags)
#90949BField labels, blog categories, project categories on black
#FFFFFFText on inverse-canvas
#FFFFFF · 70%Paragraphs on black (.paragraph-white)
#FFFFFF · 60%Footer links, which go to full white on hover
#FFFFFFAction
#E56033Every filled button
#000000Buttons turn black on hover
#E56033Lines & effects
#90949B · 25%1px borders around service cards
#CFCFCF1px bottom rule under form inputs
#FFFFFF · 15%The rule under the footer's top row
Typography
Oswald · display-hero
The quick brown fox jumpsHero title WE BUILD FOR BETTER FUTURE. 120px · 500 · 1.15
Oswald · headline-lg
The quick brown fox jumpsSection titles OUR VISION, OUR AREAS OF EXPERTISE (.title-2, h1). 70px · 500 · 1.2
Oswald · metric-affix
The quick brown fox jumpsThe unit after a metric, the m in 394m. 55px · 500 · 1.0
Oswald · title-lg
The quick brown fox jumpsBlog post titles. 26px · 500 · 1.3
Satoshi · body-quote
The quick brown fox jumpsTestimonial quote (blockquote). 23px · 500 · 1.1
Satoshi · caption
The quick brown fox jumpsProject category beside the name (Construction, Architecture). 17px · 500 · 1.0
Spacing & shape
| Purpose | Value |
|---|---|
| Container | max 1300px, centred (.container) |
| Section rhythm | 100px top and bottom (.section), 80px at ≤991px, 60px at ≤479px; the call-to-action section uses 120px (80px at ≤991px, 60px at ≤479px); the thin lines band uses 40px |
| Breakpoints | 991px, 767px and 479px (Webflow defaults) |
Spacing scale
| Token | Value | Preview |
|---|---|---|
xs | 12px | |
sm | 16px | |
md | 30px | |
lg | 40px | |
xl | 100px |
Layout spacing
| Token | Value | Preview |
|---|---|---|
column-gap | 16px | |
footer-bottom | 30px | |
section-band | 40px | |
footer-top | 60px | |
gutter | 72px | |
nav-height | 90px | |
section | 100px | |
section-cta | 120px |
Border radius
Surfaces
How the surfaces stack, from the page background up. Hex codes and roles are in Colors above.
Motion
| Button hover | background-color #E56033 to #000000, transition: all .3s |
| Link hover | Footer links #FFFFFF99 to #FFFFFF; social icons opacity 1 to 0.6; 200ms transitions on small links |
| Scroll reveal | On scroll into view: opacity 0 to 1 and y 20% → 0%, 500ms; slower reveals use opacity over 1000ms outQuart |
| Menu label roll | MENU text moves up (about y 0% → -100%) with a copy following, 300ms ease |
| Image settle | Photos start at scale 1.2 and ease to scale 1, 500ms |
| Hamburger | Lines rotate and resize, 400ms swingTo |
| Text colour | 400ms ease on hovered titles |
| Cursor parallax | Hero drawing moves ±10px on mouse move, 500ms |
| Menu open | Overlay display none to flex, then opacity 0 to 1, 300ms ease |
Do’s and don’ts
- Set headings, labels, buttons, menu and footer links in Oswald uppercase, and every paragraph in Satoshi 19/500 at ink-muted #54565A.
- Put the orange brush stroke under one key word of each big headline, and only one.
- Use primary #E56033 square buttons (3px radius, 56px tall) that turn black #000000 on hover.
- Alternate white sections with the #EEF4FC wash and full-bleed black bands.
- Keep photos square-cornered and cards at 10px with a 1px #90949B-25% border instead of a shadow.
- Keep the header as the slanted white tab, with only the logo and MENU.
- Add a second accent colour; #FF9302 and #B1B7C0 exist in the variables but aren't part of the look.
- Use Playfair Display or any serif, even though the page loads it.
- Put white text on orange below 14px or in a weight under 500; #FFFFFF on #E56033 is only about 3.4:1, so keep button labels uppercase, 14px+ and weight 500.
- Use ink-subtle #90949B for paragraphs. It is about 3:1 on white, so keep it for 14px+ labels and categories.
- Add drop shadows, gradients on buttons or rounded photos.
- Track headlines tighter or looser than 0, or set them in sentence case.
Example prompt
Any page in the Constructo style
More design systems like this
Construction design systems, the same colors first.
Bring any of them to your AI tool
All Access unlocks all 398 design systems, ready for Claude, ChatGPT, Gemini, Cursor, v0 and Lovable, plus 400+ templates on all 5 platforms.
Get All AccessUpgrade to All AccessHow to use the Constructo design system
Pick a file to see what it’s for and where it goes.
What it is
The whole design system in one markdown file, written for AI: every color, type style, spacing value, component and motion rule, plus do's, don'ts and a ready prompt.
Best for
Claude, ChatGPT, Gemini, Cursor and v0, or any other AI tool that builds pages or code.
How to use it
- Put
DESIGN.mdin your project and mention it in your request, or save it as.cursor/rules/constructo.mdc - For the rule file, start it with a front-matter block that sets
alwaysApply: true, so every chat uses it - Ask: “Build a pricing page using DESIGN.md.” Cursor follows the colors, fonts, spacing and rules
- Put
DESIGN.mdin the project root - Add one line to
CLAUDE.md: “Follow DESIGN.md for all UI.” - Ask for any page or component; Claude reads the file first
- Attach
DESIGN.mdto the chat (or paste it in) - Ask: “Build a landing page in this design system.”
- Keep the file in the chat or project knowledge, so follow-up pages stay on style
What it is
Every token as data, in the W3C Design Tokens format: colors with their roles, type styles, radius, spacing, and component tokens that point at them.
Best for
Figma (Tokens Studio), Style Dictionary and other design-token tools, and build scripts.
How to use it
- In Figma, open Tokens Studio, choose Import, and pick
tokens.json - Or point Style Dictionary’s
sourceat it to generate tokens for any platform - In code, import it like any JSON file
What it is
A Tailwind CSS v4 theme: every color, font, type style, radius and spacing value becomes a Tailwind utility, like bg-canvas, text-headline-lg or rounded-md.
Best for
Tailwind v4 projects, and AI builders that write Tailwind (v0, Lovable, Bolt).
How to use it
- Save
theme.cssnext to your main CSS file - Import it after Tailwind:
@import "tailwindcss"; @import "./theme.css"; - Use the classes:
bg-canvas text-ink rounded-md p-lg
What it is
The same tokens as plain CSS variables on :root. Component values point at the color variables, so changing one color updates everything that uses it.
Best for
Any website: plain CSS, Webflow custom code, Framer, WordPress.
How to use it
- Add it to your stylesheet, or in Webflow paste it into Site settings → Custom code inside a
<style>tag - Use the variables anywhere:
color: var(--color-ink) - Change a token once and every place that uses it follows






