Frontier Creatives · brand guide · v1.3 · September 2026

A metaphor for design and the messy middle.

72 straight lines whose envelope reads as a curve. Connect them one way and you get a star; another way, a bloom; another, a spiral. The same simple elements, transformed by how they relate and a metaphor. That is what we share and teach people about AI; from something at harmony to purposefully chaotic to harmony again in different form.


01 · The mark

The mark is the morph.

The logo is the stitch star, tilted 20 degrees, in coral. But the full identity is motion: on the site the mark re-stitches between its canonical figures as you scroll. Frozen states each have a job.

StarIdentity at rest. Nav, favicon, avatar, anything official.
CardioidEvents. Volume announcements, Luma banners, posters.
PursuitThinking. Field notes headers, essays, process content.

02 · Color

Dark first. Coral speaks.

The ground is true black; on OLED the page disappears and the geometry floats. Warm ivory text, one loud coral, and the palette tints in reserve. Interactive text (links, and list-row titles on hover) warms to the coral accent #E9805E. Dark is the only surfaced mode; a light warm-paper variant stays dormant behind ?light as a print and forced-light fallback.

ground
#000000 · the void
the accent
#E76F51 · geometry, emphasis
CTA fill
#BE4A2B · white text 5.0:1
accent text
#E9805E · coral ink on dark
text
#F2EDE5 / C4BBB0 / 9C9287
well
#0C0A09 · recessed field fill: inputs, textareas, selects
surface
#1A1714 · raised: cards, code, quiet buttons
hairline
#221D18 · dividers, rules
border
#3E362F · inputs, outlines

Supporting tints (sand #F4A261, sage #A8D5BA, teal #3B7A9D) survive from the light system for tags and gentle category color; sparingly, never as fields. Every text pairing clears WCAG AA (4.5:1); each hue has a designated ink for use as text; bright hues never set type.

The ground, documented

The warm cast is a recipe, not a background color; this page uses it too. The base is pure #000000. Over it, every section carries a full-bleed wash at 5 to 6 percent alpha, alternating coral rgba(231,111,81,.05) and sand rgba(244,162,97,.06), melting to transparent at the top and bottom edge so sections blend instead of banding. That is the entire chocolate-espresso feel: true black doing the OLED disappearing act, with a breath of warmth where the eye rests. The light variant inverts it; a warm-paper base carrying the same two tints, fainter still. Raised elements on the black ground use these warm near-black tones, never a neutral gray.


03 · Type

Inter over Krub.

An evening for people who make things.

Display · Inter bold · tight tracking (−0.02em) · line height ~1.06 · sentence case, always

Body runs in Krub at 17px with a 1.7 line height, warm and loopless. The eyebrow is the only uppercase in the system: 13px, tracked +0.08em, coral. No monospace anywhere; the system has no clinical register. Scale: 12 / 13 / 14 / 16 / 17 / 22 / 28 / 36 / 48 / 64 / 80.


04 · Texture

The figures are the texture.

No patterns, no noise, no stock. Background texture is the brand geometry at architectural scale: figures filling a full section and bleeding off the page, alternating sides down the scroll (right, left, right, left).

RuleValue
The skeleton (non-negotiable)72 lines · 18 rings x 4 arms · ring-major order · consistent rotation. Any figure honoring it morphs fluidly into any other.
Standalone vs fieldTwo treatments of the same geometry, picked by whether anything sits on top of it. Standalone (the animated mark, hero bands, exported loops, anything alone in its own frame) keeps full-opacity coral at the mark’s own weight; around 3.2px at the size it ships. Field (behind type, section backgrounds) drops to the values below. The 0.38 / 0.8px treatment exists to sit under text; with nothing on top of it, it disappears.
Field lines, dark#E76F51 at 0.38 opacity, 0.8px non-scaling stroke
Field lines, light#C2B5A1 at 0.5 (0.4 mobile)
PlacementSection-filling, off-page bleed, alternating sides; never centered as an object
ResolutionFigures hold fully stitched through their section; the morph (the messy middle) lives only between sections
ProtectionSelection-style bars, background-colored, measured from real text line boxes, drawn under all text. Lines never cross a glyph.

Content protection, documented

Where the field crosses text, no line may touch a glyph. The fix is a measured highlight layer, and it has four rules we learned by breaking each one:

RuleWhy it exists
Bars are background-coloredBlack on dark, white on light. They read as the geometry parting around the words, never as cards or panels.
Measure the text, not the boxRange.getClientRects() per element. A block element (eyebrow, label) reports full column width and would over-cover; the range hugs the actual glyphs.
Above the figures, below all textThe bars live on their own layer between the line field and the type. Wrong paint order and the lines cover the bars instead.
The layer may never inflate the pageGive it real height; a zero-height SVG is clipped in Safari and the bars vanish. Measure the document with the layer collapsed, and guard the resize observer on width so a height change can never loop the layout into infinite growth.

Placing a figure, documented

A placed figure is a master under a similarity transform, and nothing else. Everything the scroll sequence needs is three numbers per keyframe.

p′ = centre + scale × R(θ) × (p − (400, 400))

Applied to every line of assets/textures/fc-figure-*.svg, in file order. The file order is the load-bearing part: figures morph by interpolating line i of one keyframe toward line i of the next, so line i has to keep its structural role. The masters are authored on the shared skeleton and already satisfy that. Rebuilding a figure from its own construction does not, and the failure only shows up in motion.

RuleWhy it exists
Place the master, never rebuild itA regenerated cardioid (a monotonic sweep) and a regenerated star (four arms of eighteen rings) each look correct standing still and share no line order. Line i lands somewhere unrelated in the next figure, half the field swings across the frame, and the morph is spaghetti. The masters already hold the order.
Never translate an existing keyframePlaced figures are full-bleed, wider than the viewBox. Sliding one sideways to a new centre pushes most of it off frame and it reads as a fan rather than a figure. Re-place from the master at the centre you want.
Decode with a similarity fitKeyframes carry rotation. A scale-and-translate fit on a rotated keyframe reports error in the hundreds of pixels and looks like the line order is broken. It is not; the figure is turned.
Interpolate plainlyGiven a shared line order, a straight cartesian lerp per endpoint is smooth. Reindexing, polar interpolation, and dissolve-and-restitch are all fixes for a problem that lives in the data, not the interpolation.

Both directions are scripted: tools/place-figure.py place <figure> --scale --rot --centre emits a keyframe, and tools/place-figure.py decode <figure> --keyframe recovers the three numbers from one that exists, so an established composition can be reproduced exactly. The live homepage decodes to under a quarter-pixel:

KeyframeFigureScaleRotationCentre
0star2.19761040, 380
1cardioid2.2095−20°300, 460
2pursuit2.2893−20°1310, 390
3star2.7209−40°420, 450

Sides alternate down the scroll, right, left, right, left, and the sequence itself is free: the lightning talk page runs cardioid, pursuit, star, cardioid on the same centres.


05 · Motion

Scroll is the timeline.


06 · Voice

One decibel below normal.

Warm, plain, confident; a small gathering run by people with taste. Sentence case everywhere. Digits when functional: 120, 5pm, 2026. Say less; one idea per section, air around each. "We" for hosts, "you" for the reader. No em-dashes, ever; commas, colons, semicolons, periods.

Avoid: corporate SaaS, startup pitch, transit dashboard, design influencer energy. No buzzwords, no exclamation marketing, no emoji.


07 · Events

Volumes.

Every gathering is a numbered volume with its own theme title: Vol. 03 · Designing with AI. Field Notes issues mirror the volume numbers; the event and its recap are two halves of one object. Archive rows lead with the volume; dates ride trailing. A past volume is marked Complete in the lead column, eyebrow style in tertiary ink, never in the row title; the eyebrow is the only label style and titles stay sentence case.

A row carries one of three states, and only one of them is colored. The volume the hero is currently advertising takes coral on its number, and it is the only coral in the list; completed volumes recede instead, title to secondary ink and supporting line to tertiary, beside the Complete marker; anything upcoming but not yet the headline sits at full strength in neutral ink. The coral moves forward when the hero rolls.

Coral marks what a reader can act on now, so it never lands on Complete: spending the accent on finished events makes the loudest moments in the list the ones nobody can attend, and coral uppercase with tracking reads as a live eyebrow rather than a status. Nor is an already-tertiary element faded to signal state. The volume number and the date on a past row stay at full tertiary; at 72% they measure 2.82:1 against paper, under AA for 14px, and the date is information. The title carries the recession.


08 · Photography

Ratio picks the layout.

Photography is documentary: real rooms, real people, no stock and no staging. It arrives at mixed aspect ratios, so the layout adapts to the frame rather than cropping every frame to fit the layout.

When a hairline is earned

The instinct on a true-black ground is to outline every photo. Measure first: sample the mean luminance of the outer 6px on each edge. Above ~40 the frame separates on its own and a border is chrome the guide does not want. Below ~40 on a given edge, that one image may take a --dark-border hairline. Ten photos were measured for the Vol. 02 recap; one edge on one photo qualified, so the run ships borderless.

Export

JPEG, mozjpeg at quality 80, 4:2:0, progressive, metadata stripped. Three widths per photo, 800 / 1200 / 1600, wired with srcset and a real sizes string so no frame is ever upscaled at 1x, 2x, or 3x. Name by volume and story order: vol-02-01-full-room-800.jpg. Always set width and height; the highlight bars measure real line boxes and lazily-loaded images without reserved space move the layout underneath them.


09 · Overlays

Dark, regardless.

An overlay (the photo viewer, any future modal) is always a dark surface, so it pins the dark tokens rather than inheriting the page's. Inheriting puts light-mode ink on a black ground the moment someone opens ?light.


10 · Assets

Everything generates.

Download the full asset pack zip · instructions + tokens + components + logo + textures · ~11 MB

Give this to your AI

The pack ships with GIVE-THIS-TO-YOUR-AI.md. Paste it into whatever you build with, alongside the SVGs. It carries the skeleton rule, the placement formula, the two stroke treatments, the content-protection contract, and the reference composition, so an assistant can generate any figure, any in-between frame, any size, and get it right the first time. The pack also ships the token files and place-figure.py, so the values it quotes can be read rather than retyped. It also carries the recipe for the animated loop, so any starting figure or length can be rendered rather than shipped as another file. The eight core components come with it, so a page built from the pack gets our buttons and inputs rather than invented ones.

It leads with the mistake everyone makes: regenerating a figure from its own construction instead of placing the master. That looks correct standing still and turns to spaghetti the moment it moves.

Logo

fc-mark.svg (coral, transparent) · fc-mark-on-black.svg · fc-mark-light-bg.svg (#BE4A2B for light grounds) · fc-mark-1600.png · fc-mark-black-1600.png · animated 800 MP4 · animated 800 GIF

Texture figures

star · cardioid · pursuit (coral) · star gray · cardioid gray · pursuit gray (light mode)

All assets derive from the shared 72-line keyframes; request any figure, any in-between frame, any size.

Frontier Creatives · frontiercreatives.design · assembled with the messy middle fully visible.