Reference · v3

Not one single thing

A monochrome system built on tension: the hand-drawn and irregular against the technical and exact. Black and white do the structural work, photography carries the colour, and one deep vermilion is the only pigment the graphic system permits.

Every value on this page is read out of the files that implement it when the page is built. The swatches are the stylesheet's own custom properties, the hashes are computed from the shipping bytes, and the counts come from the asset directory. A specimen here cannot drift from the system it describes.

Before you change anything

The short version, for anyone (or anything) implementing against this system. Everything below this section is the long version.

The mark

  • Copy the supplied file. Never redraw, trace, regenerate, stretch, crop or colour-filter it.
  • Never substitute typography or a generated lookalike.
  • Pick the variant that contrasts with the actual background.
  • Check the hash before trusting a copy.

Canonical paths

  • src/assets/brand/fa-sunmark/ — the mark, both variants
  • src/styles/global.css — every token, the only stylesheet
  • src/assets/elements/ — the element library
  • public/icons/ — the collage cutouts and their index
  • finnastle-lab/fa-design-system — the cross-tool source

Standing rules

  • Two registers. Never merge them.
  • Emphasis is an underline, never a colour swap.
  • Vermilion is a guest. One compositional accent per view; interaction states are not that accent.
  • Age is a dial, not a default.
  • Motion passes the reduced-motion gate or it does not ship.

I

Identity foundations

Two registers

This is the first rule because everything else bends around it. The work goes out under two registers and they are kept apart: art runs a chapter-variable visual language, and business goes out monochrome as Astle Creative. Merging them is the one thing the system forbids outright.

It is enforced in code rather than by discipline. BaseLayout stamps data-register on the root element, and the stylesheet answers:

:root[data-register="studio"] {
  --accent: var(--ink);
  --accent-press: var(--graphite);
}

One line covers light and dark, because --ink is itself theme-dependent and resolves at use. The vermilion is an art-register device and never appears on a business page.

The two panels below carry the real declarations. The second mirrors the root rule onto itself, because :root[data-register] only ever matches the root element; on the site it is set once, on <html>, and the whole page inherits it.

Art register

Emphasis is a link, and the guest shows on hover.

Accent: vermilion
Studio register

Emphasis is a link, and the guest resolves to ink.

Accent: ink

Palette

Monochrome first, with a whisper of warmth so the neutrals never read as default grey. Each swatch below paints itself with the token named on it, so what you see is what the site holds. Hex values are parsed from the stylesheet at build time.

Ink --ink #0f0f0e / #eeece6 Type, marks, rules
Graphite --graphite #6f6b63 / #a29d94 Secondary, captions, metadata
Paper --paper #faf9f6 / #121211 The base surface
Card --card #ffffff / #171716 Inset content
Line --line #e6e3db / #2c2b27 Hairlines and dividers
Line strong --line-strong #d3cfc5 / #3a3934 Section rules
Vermilion --accent #d9360f / #e5451a The one guest. Art register only.
Vermilion press --accent-press #a82908 / #f0673d The guest, pressed

Light value, then dark. Flip the theme with the control in the masthead and every swatch follows, because none of them carries a colour of its own.

Three voices in tension

A three-way argument, and the tension is the point. Never blend them. Against all three sits a fourth, wordless voice: the hand-drawn marks.

Display Instrument Serif --serif

A fearless search for answers

Italic, always. Headlines and the Fearless / Answers duality.

'Instrument Serif', Georgia, 'Times New Roman', serif

Body Cousine --mono

A fearless search for answers

Monospace rigour. Running text, labels, technical voice.

'Cousine', ui-monospace, 'SF Mono', Menlo, Consolas, monospace

Interface Inter --sans

A fearless search for answers

Labels, metadata, navigation. No display size: the serif has that.

'Inter', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif

Scale and measure

Display, h1clamp(2.6rem, 7vw, 4.4rem)Instrument Serif italic
Section, h2clamp(1.7rem, 4vw, 2.4rem)Instrument Serif italic
Label, h30.82remInter, uppercase, graphite
Body0.98remCousine, line-height 1.65
Measure40remEvery reading column on the site
Content width62rem--maxw, main and footer
Shell width78rem.frame, wide enough to hold collage stamps

Grid densities

Four, each an auto-fill track with a minimum. Read from the stylesheet:

  • .gallery → 220px
  • .work-grid → 240px
  • .chapter-thumbs → 96px
  • .icon-grid → 120px

Theme

Light is the default and lives on the bare :root. Dark arrives two ways: a prefers-color-scheme block guarded against an explicit light choice, and a [data-theme="dark"] block so the masthead control wins in both directions. The choice persists in localStorage under fa-theme, read by an inline script before first paint so the page never flashes the wrong ground.

Checked at build: the two dark blocks hold identical values.

The palette is maintained twice by hand, which is a standing risk rather than a feature. This page compares the two blocks on every build so a drift surfaces here instead of on the site.

II

Marks

The FA sunmark

The FA sunmark: a hand-brushed FA monogram with a sun flourish to its right.

The primary identity mark. Hand-brushed, uneven, stamp-like. Reach for this before any other mark when a single symbol has to stand for Finn or for Astle Creative.

It ships as a supplied vector pair and must be copied, never recreated. The hashes below are computed from the bytes in this repository at build time, so they can be checked against any other copy.

FileArtworkUse onviewBoxSHA-256
fa-sunmark-dark.svg Black mark Light backgrounds 0 0 458 319 f370477fea88f421ea58445779e70903672581082a012205ea148df745b11278
fa-sunmark-light.svg White mark Dark backgrounds 0 0 458 319 6eb3d8b95ff3239e1b7f11ec9b9f847fa4a1cb39b694086f10ad82b1ed8ae233

"Dark" and "light" name the mark colour, not the page theme. Both grounds are genuinely transparent: the only full-bleed rect in either file sits inside a clipPath and renders nothing.

How this site renders it

At chrome sizes the site ships one black-ink source and recolours it: --mark-inv is 0 in light and 1 in dark, and .mark applies brightness(0) invert(var(--mark-inv)). One file covers both themes and runs through the WebP pipeline, which does not process SVG.

18px · footer
26px · nav
64px · stamp

Three sizes, one source, recoloured by filter. Below roughly 16px the irregular edges stop reading and the mark becomes a smudge; that is the floor.

Above chrome size, and anywhere the mark sits over photography, the filter cannot be trusted against an arbitrary ground. There, swap to the variant that contrasts, the way the favicons do. The favicons are the only place on the site that currently consumes the white variant.

Secondary marks

A felt-tip sun-ray burst, scalloped and uneven.
Sun-ray flourish. Section break, and an overlay on photography. The vermilion was sampled from the felt-tip fill of this burst, then deepened for ink.
A hand-brushed yin-yang, uneven and organic.
Ink yin-yang. The duality, and the visual thesis of Fearless / Answers. Never replace it with a clean geometric one: the wobble in the linework is the meaning.
A sun printed in newsprint halftone.
Stamps. Collage elements placed as stamps, rotated slightly, bleeding past the content column into the shell. Decorative, always aria-hidden.
The hand-brushed Finn Astle wordmark.
Wordmark. The hand-brushed signature. A light and dark pair, swapped by file rather than filtered, because the brush texture does not survive inversion.

The collage cutouts

The cutouts are the library of artistic elements. This system defines how to use them and does not restate what is in it: they have their own index and their own page. Elements are decorative unless they carry meaning, they sit on a checkerboard in the gallery so transparency stays legible, and they are never recoloured to match a page.

Open the collage cutouts →

III

Image language

Age is a dial, not a default.

The identity has halftone, engraving, photocopy and worn print in it, and none of that means everything should look old. Contemporary paper, card, plastic and clean digital surfaces are equally valid. An imperfection is a decision with a reason: it shows a process, dates a source, or gives the eye something true to hold. Applied by habit, it is costume.

The library names its materials

125 elements, grouped by the prefix that says what each one is made of rather than what it depicts. 99 of them were renamed from subject and joke names to these. The taxonomy is the rule: reach for a material, not a motif.

  • mark- 39 Hand-drawn and scanned marks
  • photo- 22 Photographs
  • clipping- 15 Cut and collaged fragments
  • print- 15 Printed matter, scanned
  • texture- 9 Surfaces and grounds
  • comic- 8 Halftone and comic reproduction
  • engraving- 8 Engraved and line illustration
  • digital- 7 Made on screen
  • badge- 1 Fabric and applique
  • sticker- 1 Adhesive and label stock

The range, in real assets

Six of 125, chosen to show the spread. Halftone and engraving sit in the same library as a clean photograph and a flat digital render, and nothing forces a vintage pass over the top.

Cropping and placement

Work cards crop to a uniform 4/3. Natural heights were tried and abandoned: a grid of mixed aspect ratios reads as a mistake rather than a decision. Because a fixed crop will cut the wrong part of some images, each chapter carries its own focal point in src/lib/work-chapters.ts, so the crop is authored rather than centred by default.

Collage stamps are the deliberate exception to the content column. They sit outside it and bleed into the shell, which is why .frame runs to 78rem with overflow-x: clip rather than letting them cause a horizontal scroll.

Provenance

Four kinds, kept distinct. The caption carries the difference.

Authentic
A photograph or scan of a thing that existed. Caption says what and when if it matters.
Manipulated
A photograph altered beyond crop and levels. The caption says so.
Assembled
Collage and hand-made composition. Credited as artwork, not as a photograph.
Generated
Made by a model. Labelled, every time, without exception.

When not to use an image at all

The certificates piece lists eight courses. The badges were set in type rather than shown as a picture of the issuer's artwork, because the badges are in four colours that are not ours, and because a picture of a list is how the copy and the heading came to disagree in the first place. Type cannot drift from itself. A screenshot can.

Alt text

Describe what is in the picture, not what it is for. A decorative mark takes an empty alt and aria-hidden. A mark carrying identity takes real alt text. Never restate a caption the screen reader has just read.

IV

Digital design language

Page archetypes

Six, and no page invents a seventh without a reason.

HomepageProposition, proof, studio call, the explore cards, sign-off.
EditorialStandfirst, meta line, 40rem column, follow-on links.
Studio caseBusiness register. Accordion sections, anchored by slug.
Tool pageCard per tool, tag, blurb, one or two links out.
GalleryUniform crop, authored focal points, chapter thumbnails.
PoemPer-line rendering, so a soft wrap reads differently from an authored break.

Links and emphasis

Links inherit their colour and carry a 1px underline at a 0.15em offset. The guest appears on hover, as the underline colour, and nowhere else. Emphasis inside the mono body is an underline at 1.5px, never a weight change and never a colour swap: a monospace bold reads as a different typeface, which breaks the voice.

Here is a link, and here is emphasis, in the body voice.

Interaction states

Every interactive thing needs a visible keyboard state. The ring is 2px of ink at a 2px offset, and it is not optional.

Focusable link Tab to them.

Technical and filmic detail

Hairlines, measurement marks, metadata lines and film tags earn a place when they carry navigation, provenance or real technical information. They become decoration the moment they carry none, and the system has already paid for that once: a dashed film-strip spine was documented as "the recurring structural rule" for two months without ever being built. The test is whether removing the detail loses the reader anything.

V

Motion and atmosphere

This is a short section and it should be. Counted from the stylesheet at build time: 2 transitions on the whole site, both on the work card, and a global reduced-motion block that is present.

Implemented

Work-card hover: a 0.25s opacity and transform cue, and a 0.4s image scale, both behind @media (hover: hover). The reduced-motion block resets both.

Approved

Nothing beyond the above.

Scoped

An atmospheric homepage panel and an extended-footer wordmark. Scoped only, with a release gate. No branch, no prototype, nothing in the repository.

Not absorbed

The GPU sky examples cited in that scope. Referenced once, never prototyped here, and not part of this system by default.

The gate

Before any motion moves from scoped to approved it needs all six:

  1. A stated design purpose. Not "it felt flat".
  2. Reduced-motion behaviour that is a real alternative, not a freeze.
  3. A performance budget, measured on a phone.
  4. Responsive behaviour down to 320px.
  5. Keyboard and screen-reader behaviour, and no new focus traps.
  6. A fallback that renders before JavaScript and survives without it.

Motion should demonstrate technical proficiency without costing anyone usability. The reduced-motion block at the foot of the stylesheet is the floor, and it is already global.

VI

Retired

Dropped rules are recorded rather than deleted, so nobody reinstates one by reading an old file. A documented mark with no asset is how the next person ends up drawing their own.

WasValueWhy it wentRetired
Sage frame --frame: #c9d0c0 Declared as web chrome on 30 August and consumed by no rule on the site in the two months since. 2026-10-25
Old amber #dd5b1e Too light, too bright. Replaced by vermilion sampled from the felt-tip sun burst and deepened for ink. V2
Third grey --ink-3: #a59f95 Two greys have carried the site since launch. Never implemented. 2026-10-25
Inter display scale Display 48 / Title 24 Gave Inter a display role that belongs to the serif. Never implemented. 2026-10-25
Cloud mark Outline, white fill, shadow ledge Documented as a secondary mark with a specified treatment. No asset has ever existed. 2026-10-25
Filmic side tab Dashed film-strip spine Called "the recurring structural rule" and implemented nowhere. 2026-10-25

Built from src/styles/global.css, src/assets/brand/fa-sunmark/ and src/assets/elements/. The canonical cross-tool copy of the mark lives at finnastle-lab/fa-design-system.

Public availability does not grant ownership of Finn Astle's brand identity.