Concrete
Numbers and facts instead of adjectives.
- „Jedno zadanie naraz”Pricing
- „Średnio 48 godzin na realizację”Pricing
- “One request at a time”Pricing
- “48-hour average delivery”Pricing
How loom.studio looks, sounds and moves — rules, live examples and files in one place.
01
loom.studio is a design subscription studio: one monthly price, one request at a time, a 48-hour average delivery. The identity says what the offer says — order, clarity and nothing beyond what is needed.
Effective design for your company
loom.studio
One axis, one grid, one gap between sections.
Square, circle and triangle guide you through the page — navigation, not decoration.
Only transforms, opacity, clipping and size move; with reduced motion everything stands still.
02
The logo is the name set in Haus Bold. The dot stands on the axis — where ink meets paper.
Haus Bold 700 · −0.01 em · ink on paper
Blue lines: the baseline, the x-height (0.47 em) and the ascenders (0.70 em). Dashed frame: the clear space x on every side. In the axis lockup, the vertical axis cuts the dot.
loom.studio
This is how it stands in the hero — always on the edge of two surfaces: “loom” on the ink, “studio” on the paper, the dot cut by the axis.
Ink on paper
#000000 on #E8E6DF · 16.82 : 1
The primary version.
Paper on ink
#E8E6DF on #000000 · 16.82 : 1
The dark theme and dark surfaces.
White on a gradient
#FFFFFF on ultramarine (#4F59DB) · 5.55 : 1
Dark gradients: ultramarine, orchid, night, ember, night-teal, night-plum.
Black on a light gradient
#000000 on sun (#F0CA42) · 13.23 : 1
Light gradients: sun, blush, paper.
SVG — Black on a light gradientPNG — Black on a light gradient
Logo-to-background contrast is always at least 3 : 1, as for graphics. On a moving gradient, pick the version by the preset’s base colour.
App icon (app/icon.svg): a paper tile 64 × 64, a red square 26 × 26 at (8, 10), a blue circle r 14 at (36, 38), a yellow triangle (44, 28) – (58, 54) – (30, 54). The symbol stands in for the wordmark in avatars, favicons and anywhere the wordmark would be under 82 px wide.
CompositionSVG — CompositionPNG — Composition
App iconSVG — App iconPNG — App icon
The wordmark at 1 : 1 on screen. Any smaller and it loses the dot and the space between letters — use the symbol.
1Stretched or squeezed
2Capitals or a different spelling
3The dot removed or replaced
4Off-palette colour or gradient letters
5Effects: shadow, outline, glow
6Rotated or skewed
7Too little contrast: paper on yellow, 1.27 : 1
8The dot off the axis in the axis lockup
Do
The logo is outlined in them — it looks the same whatever fonts are installed.
Don’t
The wordmark is a drawing, not text — another font or weight makes a different mark.
Do
The logo needs air like any headline.
Don’t
Buttons are for actions; the logo stands alone.
Do
The only exception is the dot cut by the axis in the axis lockup.
Don’t
Motion belongs to the figures and the gradients.
03
Paper and ink carry the page; three primaries give it rhythm. Every value works in the light and the dark theme.
The primaries are figures and accents, not backgrounds.
These never invert with the theme — for surfaces that are always dark or always white.
Accents
Dark shades
Light shades
Third parties
The shades live only in gradients (content/gradients.ts, content/flow-palettes.ts) — never in text or buttons.
One request at a time, a 48-hour average delivery.
One request at a time, a 48-hour average delivery.
The theme is data-theme on <html> or prefers-color-scheme; the choice is kept in the loom-theme cookie. Every token holds two values in light-dark() — here you see both at once. Of the primaries only blue changes: #4F59DB in the light theme, #6A73E4 in the dark one.
| Pair | Ratio | Use |
|---|---|---|
| Ink on paper (and back)#000000 / #E8E6DF | 16.82 : 1 | All text |
| Bone on night#E8E6DF / #040C0D | 15.81 : 1 | All text |
| Bone on deep purple#E8E6DF / #2D0532 | 14.26 : 1 | All text |
| Black on yellow#000000 / #F0CA42 | 13.23 : 1 | All text |
| Black on pink 1#000000 / #F182CF | 8.83 : 1 | All text |
| Blue on white#4F59DB / #FFFFFF | 5.55 : 1 | Text |
| Red on black#ED3434 / #000000 | 5.14 : 1 | Text |
| Blue on black (dark theme)#6A73E4 / #000000 | 5.19 : 1 | Text |
| Blue on paper#4F59DB / #E8E6DF | 4.44 : 1 | Large text and graphics |
| White on red#FFFFFF / #ED3434 | 4.08 : 1 | Large text and graphics |
| Red on paper#ED3434 / #E8E6DF | 3.27 : 1 | Large text and graphics |
| White on pink 2#FFFFFF / #EF5588 | 3.32 : 1 | Graphics only |
| Mid on paper#A6A6A6 / #E8E6DF | 1.95 : 1 | Never text |
| Yellow on paper#F0CA42 / #E8E6DF | 1.27 : 1 | Never alone — with a 2 px ink outline |
Do
That is what makes both themes work by themselves.
Don’t
A new shade starts in styles/globals.css or in the gradient presets.
Do
Rhythm, not wallpaper.
Don’t
Red on paper is 3.27 : 1, blue 4.44 : 1 — too little for text.
Do
Both states look the same everywhere on the site.
Don’t
Planes are solid.
Do
Alone it has 1.27 : 1 — without the outline the triangle disappears.
Don’t
They live only in gradients.
04
One typeface — Haus — in four weights and four sizes per screen. Hierarchy comes from weight, colour and space, not from another size.
Haus
Haus — alphabet, figures and signs
| Role | Desktop ≥ 1024 | Tablet 640–1023 | Phone < 640 | Line-height |
|---|---|---|---|---|
| D — Display--fs-dtext-d | 60 | 56 | 48 | 1 · −0.01 em |
| T — Title--fs-ttext-t | 36 | 32 | 28 | 1.15 |
| M — Main--fs-mtext-m | 24 | 22 | 18 | 1.4 (paragraphs), 1.2 (UI) |
| S — Small--fs-stext-s | 16 | 16 | 14 | 1.4 |
Live, at this screen’s sizes
Brand book
D · on this screen:
Typography
T · on this screen:
One request at a time, a 48-hour average delivery.
M · on this screen:
A caption under a plate, fine print, a table.
S · on this screen:
Do
Even lines, no widows or orphans.
Don’t
Stylelint and an e2e test keep it at four sizes per view.
Do
Typography, not typewriting.
Don’t
Weight does the emphasis.
Do
Nothing is left hanging at the end of a line.
Don’t
Justification opens gaps between words; capitals and tracking tire the eye.
06
Square, circle and triangle are our navigation and our signature. Each figure has its own colour and meaning.
The hero composition at 2 : 1. Box 179 × 138; square 77 × 77 at (0, 0), circle Ø 79 at (46, 46), triangle 87 × 76 at (92, 62), apex up. Layers from the bottom: triangle, circle, square.
In the brand marks the mapping is fixed: the square is red, the circle blue, the triangle yellow. They are always listed in this order; the exceptions are in the rules below.
Hover a figure.
This is how the hero figures respond: the square leads to the portfolio, the circle to the testimonials, the triangle plays the film. Shatter: tiles fly 8 + 6·|d| px out, turn −12 / −6 / 6 / 12°, corner tiles shrink to 0.86. With reduced motion the figures stand still.
Do
Each figure has one primary colour: a red square, a blue circle, a yellow triangle.
Don’t
The one exception: yellow on a light surface gets a 2 px ink outline.
Do
The same in the hero, the tabs, the access code and the loader.
Don’t
Exceptions: the yellow request in the process scenes, the film's red dot and black triangle, and the assistant mark. A star only in the pricing glyph.
Do
At rest the figures stand upright and keep their proportions.
Don’t
The circle in a square, the bars and the horizon fill the grid — they are not brand marks.
07
Living gradients are surfaces, not decoration: they flow slowly, in the brand's colours, and stop when nobody is looking.
WebGL ramp work-ember, darkest first
The seven gradients of the case-study grid: a CSS poster (OrganicGradient) with the liquid WebGL layer (FlowGradient) over it — exactly as in a portfolio cell. “Pause” leaves the poster alone. Click a ramp colour to copy it.
hero-ink
base #000000 / #E8E6DF · blobs #0F2A33 / #F4D9E6, #1B1F5E / #EDE3BD, #2D0532 / #D9DCF3, #3A0A12 / #E3D6E8 (light / dark theme) · WebGL ramp hero
The left half of the hero on desktop. Inverts with the theme.
night-teal
base #040C0D · blobs #0F2A33, #06303A, #1B1F5E · WebGL ramp contact-left
Contact: the left panel on desktop, the whole block on tablet and phone.
night-plum
base #0B0410 · blobs #2D0532, #3A0A12, #1B1F5E · WebGL ramp contact-right
Contact: the right panel on desktop.
assistant-bloom
base #EF5588 · blobs #F182CF, #4F59DB, #ED3434, #F0CA42
The assistant panel on tablet and phone, under one layer of glass.
--pink-gradient: linear-gradient(180deg, #F182CF 0%, #EF5588 100%). It is the assistant's colour and nothing else's — the assistant mark is the only button with a gradient.
hero-mobile.avif
1170 × 1980 · 1.9 kB
The main hero panel on phones: a glow on --color-night.
hero-tablet.avif
1668 × 2176 · 2.8 kB
The main hero panel on tablets: the same glow, a wider crop.
testimonial-bg.avif
2400 × 1680 · 4.2 kB
The testimonial cards: indigo and plum on #2D0532.
Grain · opacity 0.06
Grain · opacity 0.6
The glows are AVIF bitmaps (with a WebP fallback), used where there is no living gradient. The grain /media/grain.png is tiled every 128 px at 0.06 opacity — the only texture of the brand. Next to it, the same grain ten times stronger, so you can see it.
Only system glass has a soft shadow: the top navigation, the dock, the assistant and the cookie card, always with data-surface="glass". There are no shadows or drop-shadows anywhere else. The full glass spec is in section 09.
Do
A panel background, a portfolio cell, the hero — never a lone element on paper.
Don’t
The one exception is the assistant mark.
Do
A new preset goes into content/gradients.ts and content/flow-palettes.ts — the CSS poster first, then the ramp.
Don’t
The blobs are sharp ellipses in motion — the softness comes from motion, not from a filter.
Do
Text has to read on the lightest and on the darkest frame.
Don’t
Off-screen, in a hidden tab and with reduced motion the gradient stands still.
08
We show the work, not stock. The film plays silently without controls, and only real clients’ faces may appear in testimonials.
loom.studio promo film
loom.studio promo film
The mock-up plays for now — we will add the real film soon. [DO UZUPEŁNIENIA]
01 · Black0–3 s
The wordmark assembles letter by letter; the dot drops in as a red circle.
02 · Paper3–6 s
Grid lines draw; the square, circle and triangle slide in.
03 · Blue6–9 s
An app screen scrolls; a yellow element pops in.
04 · Yellow9–12 s
Three shapes orbit and assemble into a circle in a square.
A 12 s loop: four 3 s shots. Every cut is a flat wipe from the left (clip-path), never a dissolve.
--ease-bauhaus
cubic-bezier(0.7, 0, 0.3, 1) · Moves, wipes, morphs
--ease-out
cubic-bezier(0.2, 0.8, 0.2, 1) · Arrivals and hovers
Rhythm: a 3 s shot, a wipe of about 0.4 s, a 12 s loop.
Do
Don’t
The film should look like the site, not like a stock ad.
Do
Don’t
Bauhaus cuts with planes; a dissolve blurs the form.
Do
Don’t
The film plays muted — the picture has to speak for itself.
Do
Don’t
We show the work, not stock.
There are no faces on this page — only the stand-ins the site shows while a photo is missing. A portrait goes on the site only with the consent of the person in it.

Do
Don’t
A testimonial is worth something only when it is real.
Do
Don’t
A screen reader reads it out loud.
Do
Don’t
The picture should belong to the page, not to a player.
09
Buttons, the white field, glass, lines and planes — a small kit the whole site is built from.
Hover a button to see the fill.
On paper
On ink
On fixed dark surfaces
Thicknesses at their real size. We separate with a plane or an ink line — never with a shadow.
The process on desktop: paper in mid in ink, inset by 7 px and 15 px. Planes and cards have square corners.
Corners — nothing else is rounded.
Bullets: a 3 px square, 4 px from the left, level with the cap height.
+37% more leads in the first month
Badge: three overlapping Ø 22 / 24 px portraits, S Regular next to them. [DO WERYFIKACJI] the source of the number.
FAQ
Common questions about us
Section header: the glyph and 8 px of space, the eyebrow in M Light, the title under the glyph without an indent.
A link with a direction: Tri 8 px from the label; in a back link it steps back 3 px on hover.
Do
The others are outlines or plain links.
Don’t
The height always comes from --pill-h; only Tri or the loader may sit inside.
Do
The top navigation, the dock, the assistant, the cookie card — always with data-surface="glass".
Don’t
Pricing, the portfolio and testimonials are flat.
Do
Ink lines: 2, 3, 4 or 5 / 6 px; frames 5 / 7 px.
Don’t
Only buttons, the white field, the cookie card and the Calendly window are rounded.
10
We speak briefly, directly and like people. We promise only what we deliver.
Numbers and facts instead of adjectives.
We talk to one person, as “you” (in Polish a capitalised “Ty”). The studio speaks as “we”.
We reassure, never push. No countdowns, no “today only”.
We say what can go wrong and always give the next step.
Do
Don’t
“Click here” says nothing and the exclamation mark shouts. Lead with the verb.
Do
Don’t
Adjectives instead of a number. Give the time we really deliver.
Do
Don’t
An unproven superlative and three exclamation marks. Say what the offer is.
Do
Don’t
An error code means nothing to a person. Say what happened and give the next step.
Do
Don’t
“Unlimited” promises too much: brands and users are unlimited, requests go one at a time.
Do
Don’t
Jargon, rush and an emoji. Three words are enough.
We say
We avoid
Brands and users are unlimited — requests are done one at a time. That is why we never write “unlimited design”.
AI assistant
Ask about the plan, process and price
Hi! I'm the loom.studio AI assistant. I can explain how the subscription works and help you decide if it fits. What are you working on?
AI can make mistakes. We confirm binding details on a call.
The assistant on this site speaks in exactly this voice. Ask it about the plan, the process or the price.
11
Logo, marks and colours in ready-made files. Use them as they are.
Wordmark — ink
For light backgrounds and light gradients, #000000. Outlined from Haus Bold — no font needed.
Wordmark — paper
For dark backgrounds, #E8E6DF. The PNG is on a transparent background.
Wordmark — white
For dark gradients and saturated colours, #FFFFFF.
Axis lockup
Ink and paper, the dot on the edge between them. The OG image format.
Symbol
Square, circle and triangle — wherever the wordmark would be under 82 px wide.
App icon
The 64 × 64 favicon tile — for avatars and shortcuts.
Colour palette
Core colours in both themes, fixed colours, accents, shades, gradients and WebGL ramps.
CSS tokens
The :root block with light-dark() and the four-size type scale — straight from the site’s code.
Brand kit
Everything above plus the section glyphs, Tri, gradient posters 1920 × 1080, the grain and a README.
The book as a PDF
Print this page or save it as a PDF — every section starts a new page.
Haus
Pier Francesco Martini, 2013. The typeface is licensed, so it is not in the kit — the wordmark files are outlines.
You may use the loom.studio logo and marks to show that you work with us — unchanged and as described here. [DO WERYFIKACJI PRAWNEJ]
Need a brand book like this for your brand?