Datanest · brand guidelines · v1.0

The system, written down.

Most of this already existed — living in globals.css and never described anywhere a person could read it. This page is that description, generated from the same tokens the site renders with, so the two can't drift apart.

01Wordmark

Wordmark

Lowercase, set in Geist Semibold at −0.035em, with “nest” in brand green and a drawn green dot closing the word. No symbol — the logo is the name, so there's nothing to learn to recognise and nothing extra to maintain.

Construction

PropertyValueNote
TypefaceGeistAlready loaded site-wide
Weight600Semibold
CaselowercaseNo capitals, anywhere
Tracking-0.035emSnug, not tight
“data”--foregroundFull-strength ink
“nest”--brand-strongNot --brand — see §03
Dot diameter0.125emTrue circle, sized to the stem
Dot offset0.045emFrom the t, on the baseline
Dot colour--brandThe brighter green; it's a small shape
Why the dot is drawn, not typed

Geist's full stop is designed to end a sentence, not a logo — against a 600-weight stem it reads optically light, and it's the first thing to vanish when the mark is scaled down or printed small. This dot is a true circle at 0.125em, weighted to match the vertical strokes. In the SVG it's a <circle>, not a glyph.

The three versions

Three, and only three. Everything else is a misuse.

Datanest primary lockup
Primary — on light
Datanest reversed lockup
Reversed — on ink
Datanest one-colour lockup
One-colour — for print
The one-colour version is not optional

This wordmark carries its split in colour, and colour is exactly what disappears when a proposal is printed in black, faxed, photocopied, or dropped into a client's greyscale template. Reproduce the primary version in one colour and “datanest” collapses into an undifferentiated word — the whole idea, gone silently.

So the one-colour version carries the split by tone instead of hue: “data” at a 62% tint, “nest” and the dot at full strength. Use it any time the output isn't full colour — given proposals and invoices are where this mark mostly lives, that's not an edge case.

Avatar

Where the full name won't fit, the wordmark reduces to dn. Not an arbitrary abbreviation: the d heads “data” and the n heads “nest”, coloured as they are in the full lockup. It's the wordmark with the middle removed.

Datanest avatar at 16px — no dot16px — no dot
Datanest avatar at 32px32px
Datanest avatar at 180px180px
On any ground
Two rules the avatar needs

The green tile is the exception. A green “n” can't sit on a green ground, so it falls back to the same 62% tonal split the print version uses. One rule, two places.

16px drops the dot. Three glyphs in a 16px square is tight and the dot lands sub-pixel, so it blurs. Every favicon size is redrawn by the generator rather than downscaled from one master.

02Logo use

Logo use

x = the x-height of the wordmark — the height of the “a”. Spatial rules are expressed in it so they scale with the mark rather than being pinned to pixels.

Clear space — 1.5x on all four sides
88px — min
Navbar
Document
Below 88px wide, use the dn. avatar
  • Clear space — 1.5× the x-height on every side. Nothing crosses it, including the page edge or a photo's subject.
  • Minimum size — 88px wide on screen, 22mm in print. Below that the dot stops registering and the split stops reading.
  • The dot never detaches. It belongs to the lockup — not a bullet, not a divider, not a decorative element to reuse.
  • On photography, use the reversed version over an area darkened enough to clear 4.5:1, or place it on a solid panel.
Do

Use --brand-strong for “nest” on light and the brighter green on ink. Different values, deliberately.

Do

Reach for the one-colour version the moment full colour isn't guaranteed.

Don't

Capitalise it. Not “Datanest”, not “DATANEST” — the mark stays lowercase even where a sentence would capitalise.

Don't

Retype it. Tracking, dot size and dot offset are fixed; typing “datanest” in Geist gets none of them right.

Don't

Recolour the split — no client palettes, no seasonal variants, no gradients across the word.

Don't

Add effects or distort it — no shadows, outlines, stretching, rotation or arcs.

The rule that will actually get broken

Someone will type “Datanest” in a deck and think it's the logo. It isn't — that's the company name in body copy, which is capitalised. The logo is the file. Write the name normally in sentences; place the asset when you mean the mark.

03Colour

Colour

One green, two values — it shifts brighter in dark mode because the same value goes muddy on ink. Every swatch below is a conversion of a token already in the stylesheet, not a new colour.

Brand green#41B883--brand · 153 47% 49%
Brand green — dark#44C58B--brand · 153 53% 52%
Brand strong#26794F--brand-strong · 156 52% 32%
Brand soft#E8F8F0--brand-soft · 152 52% 94%
Paper#FCFDFC--background · 150 30% 99%
Ink#0A100E--background dark · 165 22% 5%
Muted text#63746D--muted-foreground
Border#E1EAE6--border · 156 16% 90%
Why the greys look green

None of the neutrals are true grey — each carries a 150–165° hue at 8–16% saturation. That's what makes the palette read as one family instead of green-on-default-grey. If you add a neutral, bias it the same way.

Contrast — measured, not assumed

PairSampleRatioVerdict
Brand strong on paperEngineered to last4.94:1AA
Brand green on paperEngineered to last2.50:1Fills only
Brand strong on inkEngineered to last9.94:1AAA
Muted on paperEngineered to last4.87:1AA
Muted on inkEngineered to last7.68:1AAA
A defect this document found, and fixed

--brand-strong was 156 52% 36%, measuring 4.10:1 on paper — fine for headings, short of the 4.5:1 body text needs. The site's 11–12px mono kickers use that colour, so they were failing AA. It's now 32%, which measures 4.94:1 and passes. Dark mode never had the problem.

How much of each

Ground 60%
Structure 25%
Green 15%

Green is the accent, not the field: one primary action per view, the kicker label, the hero underline, and the logo. The old bought logo's full-bleed green block was the opposite of this rule.

04Type

Type

Three faces, strict roles. This page is set in all three, so what you're reading is the specimen.

Display — Bricolage Grotesque · 500–800
Ideas, engineered to last
--font-display · headings only · tracking −0.02em · text-wrap: balance
Text — Geist · variable 100–900 · also carries the logo
We build software that people actually use. Custom apps, mobile and SaaS platforms, from the first sketch through to launch.
--font-sans · body, UI, buttons, the wordmark · "ss01","cv01","cv03" · max 68ch
Mono — JetBrains Mono · 400 / 500 / 600
Software & AI engineering studio
--font-mono · kickers, labels, data, code · 0.22em tracking · never body copy
  • Never mix display and body roles. Bricolage above 24px, Geist below. A Bricolage paragraph reads as a mistake.
  • Tracking tightens as size grows — −0.042em at hero, −0.02em at section, 0 at body, +0.22em at kicker.
  • The logo's −0.035em is its own value, not part of the text scale. Don't apply it to headings.
05Surfaces

Surfaces

The blueprint grid, green glow and film grain are a real part of the identity, so they're specified here rather than left as one-off CSS.

Geometry

  • Radius 0.85rem base. Pills go full round; video scales it to 28px because the pixels are bigger.
  • Borders — always 1px, always --border.
  • Elevation — light mode gets a faint shadow; dark mode uses a lighter surface instead. Never both.

Atmosphere

  • Blueprint grid — 64px, or 28px for the small variant, foreground at 5%. Always masked so it never reaches an edge.
  • Green glow — radial, blurred 40px. Two or three per page maximum, behind content.
  • Grain — fractal noise at 40% multiply. Hero and full-bleed sections only.
The rule that keeps it from getting noisy

Grid, glow and grain are a set — pick at most two per section. All three at once is where the treatment stops reading as considered and starts reading as a template. The logo never sits on all three.

06Motion

Motion

Slow, few, and skippable. Taken verbatim from the keyframes in the stylesheet.

NameSpecWhere
fade-up0.9s cubic-bezier(.22,1,.36,1)Entrances, staggered 90ms
fade-in1.1s easeBackgrounds, images
float-slow9s ease-in-out infiniteGlow blobs only
ticker38s linear infiniteLogo cloud marquee
  • Stagger, don't scatter. One orchestrated entrance per section beats five independent ones.
  • Never animate the logo. No draw-on, no dot bouncing into place, no colour-fill reveal on “nest”.
  • prefers-reduced-motion is non-negotiable — anything new joins that block on the same commit.
07Voice

Voice

Plain, specific, unhurried. The register is a competent person explaining their work, not a company announcing itself.

Capability

We build software that people actually use.

Leveraging cutting-edge technology to deliver transformative solutions.

AI work

We build AI products, and consult on AI workflows — when AI is genuinely the right tool.

AI-powered, AI-first, AI-native everything.

Scope

From the first sketch through to launch.

End-to-end holistic delivery across the full lifecycle.

Where you are

Auckland. Delivering worldwide.

A globally distributed team of world-class engineers.

  • Say the specific thing. “Auckland” beats “globally distributed”. Named constraints are credibility.
  • Qualify honestly. “When AI is genuinely the right tool” is the most trust-building sentence on the site.
  • No exclamation marks, and none of: unlock, empower, seamless, robust, leverage.
  • Buttons say what happens. “Book a time”, then a confirmation that says “Booked”.
08Assets

Assets

Everything is generated from one script and one font file.

Regenerating

Every file above — plus the favicons and the React component the navbar uses — comes out of one script. Letters are outlined to real vector paths through HarfBuzz, so nothing depends on a font being installed.

python business/brand/generate.py

Change a value in the spec, rerun, and every asset follows. Don't hand-edit the outputs.

Still open

The green has no Pantone match yet — a naive CMYK conversion of #41B883 lands near C65 M0 Y29 K28, which is fine for an office laser printer and not for anything a client pays for. Bright greens shift on uncoated stock, so that needs pinning against a physical swatch book once.