Studio Nord
Internal · v 1.0.0

Style guide — tokens
and components.

The document the template builds from. Colour tokens, type scale, spacing, and the small set of components used across every page.

(01) Colour tokens

bg / light

#F8F8F6

oklch(97.9% 0.003 106.4)

Background, light mode

surface / light

#F1F0EE

oklch(95.5% 0.003 84.6)

Cards, sections

surface-2

#EAE9E6

oklch(93.4% 0.004 91.4)

Insets, stat panels

text / primary

#1F1F1D

oklch(23.9% 0.004 106.7)

Body, headings

text / muted

#686864

oklch(51.6% 0.006 106.6)

Captions, meta

hairline

#D8D7D3

oklch(87.9% 0.006 95.1)

Rules, borders

accent

#FF5A1F

oklch(68.2% 0.211 37.7)

CTAs, dot, hover

bg / dark

#1A1A18

oklch(21.7% 0.004 106.7)

Background, dark mode

(02) Typography scale

Display / Hero

Fraunces, 350

We design brands.

clamp(3.5rem, 8vw, 9rem)

Display / Italic

Fraunces, 350

Quietly, carefully.

5rem

H1 / Section

Fraunces, 400

Selected work.

4.5rem

H2

Fraunces, 400

Three of us, on purpose.

2.6rem

H3

Fraunces, 400

On the kerning.

1.75rem

Body

Geist, 400

A brand system is a piece of music. There is a tempo, a chorus, and a long bridge where very little happens at all.

17px

Mono / Label

Geist Mono, 500

AVAILABLE Q3 2026 · COPENHAGEN

11px

Mono / Caption

Geist Mono, 400

FIG. 01 — STUDIO PRINCIPAL, MARCH 2026

10px

(03) Tracking scale

Every letter-spacing the template reuses is defined as a token in @theme. Use the named utility, never an arbitrary tracking-[…] value.

tracking-mono-x

0.14em

Studio Nord

↳ mid-section labels

tracking-mono-loose

0.1em

Studio Nord

SectionTag, footer headings

tracking-mono

0.08em

Studio Nord

Mono labels — default

tracking-body

-0.005em

Studio Nord

Body emphasis

tracking-tight

-0.01em

Studio Nord

h3/h4, captions

tracking-snug

-0.015em

Studio Nord

Card titles, marginalia

tracking-display

-0.02em

Studio Nord

Blockquotes, mid headings

tracking-display-lg

-0.025em

Studio Nord

Section headings

tracking-display-xl

-0.03em

Studio Nord

Large display

tracking-hero

-0.035em

Studio Nord

Page hero h1

tracking-hero-xl

-0.045em

Studio Nord

Largest editorial display

(04) Breakpoints

Standard Tailwind breakpoints. The template avoids custom breakpoints — buyers will find their muscle memory honoured.

sm

640px

Mobile landscape, large phones

md

768px

Tablet portrait

lg

1024px

Tablet landscape, small laptop

xl

1280px

Laptop, desktop standard

2xl

1536px

Wide desktop, large monitors

(05) Components

The primitives every page composes from. Each lives in src/components/ and is documented with a live demo so changes you make here propagate visibly everywhere.

Variants — primary · dark · ghost

Btn

src/components/Btn.astro

Pill-shaped call-to-action. Polymorphic: renders <a> when href is set, <button> otherwise. Three variants — primary (accent), dark (near-black), ghost (outline).

Hover to see the hairline fill from left

HeroCta

src/components/HeroCta.astro

Editorial inline link. A muted hairline always sits under it; on hover, an accent-coloured hairline grows in from the left and the arrow translates right. Used in place of pill buttons where a softer affordance reads better.

(01) Example section

SectionTag

src/components/SectionTag.astro

Mono uppercase section label of the form "(01) — Label". Used as the eyebrow on nearly every section across the site.

Studio Nord Studio Nord Studio Nord

Sizes — 18px · 28px · 40px (scales with the size prop)

Wordmark

src/components/Wordmark.astro

Brand mark — italic Studio + roman Nord + pulsing accent dot. Size prop drives font-size (px). Inline by default; pass inline={false} for block-level usage like the footer.

Sample image

Image mode

placeholder mode — striped fallback
400×300 IMG_2733

Placeholder mode

Placeholder

src/components/Placeholder.astro

Editorial figure component. When given an image prop, renders an optimized Astro <Image /> filling a container locked to the aspect ratio. Without an image, falls back to a striped placeholder with a mono caption and a fake IMG_XXXX id — used for in-production work and missing assets so a buyer never sees a broken figure.

↳ Example label

The label sits in the left margin (or stacks above on narrow screens) next to the body it annotates. Use sparingly — the pattern earns its weight by being rare.

Marginalia

src/components/Marginalia.astro

Sidebar note pattern. A small mono uppercase label aligns to the margin (or stacks above on narrow screens) next to a body paragraph. Used heavily in the studio Philosophy section and inside journal articles.

What's the project?

Click between pills · Focus the input to see the label swap to accent

Form field

src/components/sections/contact/Form.astro

Editorial form pattern. Each field is bounded by a top hairline; a small mono uppercase label sits above a large serif input. The label colour swaps to accent on focus, giving the only visual feedback the design needs. For fixed-choice fields, a pill picker variant toggles between an inverted (active) and an outlined (idle) state.

Click between tabs · The accent indicator marks the active filter

Filter tabs

src/components/sections/work/Hero.astro · journal/Hero.astro

Horizontal tab bar bounded by hairlines top + bottom. Mono uppercase labels with the active tab marked by a 1-pixel accent indicator inset 24px from the button edges. Drives a single Alpine state (the filter or tag) on the parent — see /work and /journal for the live patterns.

Hover any link · The accent hairline grows from left to full width

hover-line

src/styles/global.css

The primary inline-link pattern across the site — nav items, footer columns, breadcrumbs, social refs, anywhere a soft secondary CTA is wanted. Apply the class and the link gets an accent-coloured underline that grows from left to full width on hover or focus. Honours prefers-reduced-motion by skipping the transition.

Available Q3 2026

Utility class — pulse-dot

pulse-dot

src/styles/global.css

Animates an element with a soft pulsing scale + opacity loop. Used as a "live" / "available" indicator next to status lines in the nav, footer, and contact stats. Honours prefers-reduced-motion.

Like what you see? · This template is yours for $49 USD Get the template →