Marshal Guidelines
Websites, web apps, and brand for startups where quality is non-negotiable.
Introduction
Marshal is a full-stack design and development studio. The identity is deliberately narrow: one mark, one accent, one typeface. Everything else is spacing, hierarchy and restraint — so a listing, a proposal and this document all read as the same company without a single decorative flourish.
The system is near-monochrome on a warm off-white ground. Colour is not used to decorate; it is used to mean something. The single accent appears on marks and status only, at roughly three percent of any composition.
Positioning
A full-stack design and dev partner for funded startups.
Founder-direct
The person on the intro call designs the screens and writes the code. The brand should never imply a larger organisation than there is.
Evidenced
Scope, price and dates are stated plainly. Nothing in the visual language should soften a commitment.
Quiet
Restraint is the differentiator. If an element is not doing work, it comes out.
What this document is
Live
Generated from the same tokens the site runs on. It cannot drift from the product.
Complete
Colour, type, geometry, components and downloadable assets in one place.
Yours
Handed over at the end of a project alongside the repository and the design files.
Lockup scale
The lockup is the mark plus the word, set in Geist SemiBold at 0.86× the mark height with a gap of 0.36× beside it. 16 pixels is the minimum; below that the word stops resolving and the mark goes on alone — which is exactly what the site’s navigation does.
On light and dark
The default. The mark’s circle is #0A0A0A — the ink token exactly — so it needs no plate and casts no halo on the page ground or on white cards.
Clear space
Keep 0.75 × the mark height clear on every side. It scales with the mark, so the rule holds from a favicon to a billboard.
The navigation pill is built to it: 6px of padding around a 28px mark is close enough that nothing else may enter the pill.
Misuse
Never stretch the mark. It is a circle.
Never put the mark on a plate. Its circle is the plate.
Never tint the mark with the accent.
Never set the word in another face or weight.
There is no dark-surface variant. The mark’s circle is #0A0A0A, so on a near-black field it all but disappears — which is why this document sets it on a light plate wherever it appears. The brand currently only ever places it on light surfaces; if that changes, a knocked-out variant needs drawing.
The master is a 200 × 200 transparent PNG. That is enough for screen at every size the system uses, but a vector master is required before any print, embroidery or large-format application — see Exports.
Surfaces
#F1F1EF
--color-page
The ground everything sits on. Warm off-white, never pure.
#FFFFFF
--color-card
Raised surfaces: work cards, pricing, FAQ rows, the nav pill.
#FAFAF9
--color-raised
Hover state for white surfaces. A half-step, no more.
#E7E7E3
--color-deep
Recessed fields: tags, image wells, pressed controls.
Four surfaces, half a step apart. The page is a warm off-white rather than pure white so that cards can lift off it without a shadow. Depth comes from these four values and a 1px line — never from elevation.
Ink
#0A0A0A
--color-primary
Headings and anything that must be read first.
#595956
--color-secondary
Body copy. The default reading colour.
#666663
--color-tertiary
Metadata, captions, eyebrows. Still passes AA.
#FFFFFF
--color-on-ink
Type on the black field.
#B4B4B4
--color-on-ink-muted
Secondary copy on the black field.
Each ink was solved against the ground it is actually for: the first three against the darkest light surface they can land on, the last two against the ink field. Every figure is computed here rather than quoted, and every tier clears 4.5:1 — there is no ink in the system that cannot carry body copy.
Lines
#EAEAE6
--color-line-subtle
Dividers inside a card.
#DEDED9
--color-line
Card and section edges. The workhorse.
#CFCFC9
--color-line-strong
Hover edges and rules that need to be felt.
#838380
--color-line-control
Interactive boundaries only. Solved to clear 3:1.
Three decorative weights and one that is load-bearing. Control is the only line that bounds something interactive, which is why it is solved to 3:1 while the others are free to be nearly invisible.
Accent
#0A0A0A
--color-ink
Primary buttons, the CTA field, the featured tier.
#8B5CF6
--color-signal
Marks only — status dots, rails, the aperture. Never type.
#754ED0
--color-signal-text
The same accent, darkened until it is safe to read.
The accent exists twice on purpose. Signal is the mark colour — status dots, the active rail, the aperture — and clears 3:1, which is all a mark needs. Signal text is the same hue darkened until it clears 4.5:1, and it is the only one of the two that may carry words.
Proportion
A composition is almost entirely ground and card. Ink appears where something must be decided, and the accent gets roughly three percent — a dot, a rail, an aperture. If the accent is doing more than that, something else has stopped working.
Accessibility
Signal on Page grades AA-Large and no higher — enough for a mark, short of the 4.5:1 body text needs, which is exactly the line between the two accent tokens. The moment the accent has to carry a word, Signal text takes over. Every figure is computed from the palette at render time, so this table cannot fall out of step with the swatches above it.
Typeface
Geist. Quiet, precise, and free to use.
Geist is the system’s only face. It is a neo-grotesque with a tall x-height and unfussy terminals — it reads cleanly at 10px in an eyebrow and holds up at 34px in a headline, which is the whole range this brand needs. Geist Mono handles anything that should read as data.
Aa
Geist 400 · 500 · 600
Everything except machine detail.
Open source (SIL OFL). Bundled via next/font — no external request.
Aa
Geist Mono 400 · 500
Eyebrows, URLs, anything that reads as data.
Open source (SIL OFL). Bundled via next/font.
Both are open source under the SIL Open Font License and bundled through next/font, so they are self-hosted and cost no external request. Nothing here needs a licence purchased before you can ship it.
Type scale
A full-stack design and dev partner for funded startups.
Page headline and the closing CTA. One per screen.
Priced by the piece of work
Section headings and prices.
Real full-stack engineering
Card titles, value headings, the founder name.
Who will I actually work with?
FAQ questions and other tappable rows.
Websites, web apps, and brand for startups.
The line under a headline. Sets the tone.
Every proposal carries a fixed scope, a fixed price and a finish date.
Default paragraph.
Code, design files and accounts transfer to you at handover.
Card copy, list items, footnotes.
Book intro call
Navigation and button labels.
Most common
Pills, tags, the featured flag.
tylerdvisuals.com
URLs and machine-ish detail.
RECENT WORK
Uppercase eyebrows above a section.
The scale is hand-set, not derived from a ratio. Eleven steps, each with a job — if a new size is needed, the right move is usually to reuse one of these rather than add a twelfth. Headings carry −0.015em tracking; body sits at zero; the two mono styles open up.
Rules
Sentence case
Headlines and buttons are sentence case. Title Case reads as marketing; the brand is meant to sound assured, not promotional.
Three weights
400, 500, 600. No light, no black, no italics — hierarchy comes from size and space.
Measure
Body copy stops at roughly 68 characters. The hero column is narrower still, at 580px.
Tabular figures
Any number compared against another number — prices, ratios, sizes — uses tabular figures so the columns line up.
Buttons
Every control is a pill; every container is a rounded rectangle. That single distinction does most of the work of telling a reader what is clickable, which is why the radii below are worth protecting.
Surfaces
Project title
ProductCard copy sits at 13px on 19, in the secondary ink.
Let us build something worth shipping
The ink field is the only place the system raises its voice.
Navigation
The navigation is a single floating pill: mark, three links, one action. It never grows a fourth link — anything else belongs in the footer.
Geometry
6px
--radius-sm
Small controls and inline chips.
10px
--radius-md
FAQ rows, dropdowns, tool clusters.
14px
--radius-lg
Cards. The default for anything that holds content.
20px
--radius-xl
The CTA field, and nothing smaller.
full
pill
Buttons, tags, avatars, the nav.
Five measures, each tied to a reading job. The content column at 1120 is the one everything aligns to; the rest are narrower on purpose, because the limit on a line of text is the eye, not the container.
In place
A full-stack design and dev partner for funded startups.
Websites, web apps, and brand for startups where quality is non-negotiable.
The whole system in one view: warm ground, one card, one ink field, one accent dot, and three type sizes. If a new screen needs more than this, the brief is probably wrong.
The mark
No vector master exists. The mark ships as a 200 × 200 transparent PNG, which is sufficient for every screen size this system uses. Before any print, signage, embroidery or favicon set beyond 200px, an SVG or AI original should be produced and added here — it is the one genuine gap in this handoff.
Tokens
Design tokens marshal-tokens.css
The Tailwind v4 @theme block. Drop it into globals.css and the whole system follows.
/* Marshal — design tokens
Generated from the live system at marshal.studio. Tailwind v4 CSS-first:
this block IS the config. There is no tailwind.config.js. */
@theme {
/* surfaces */
--color-page: #f1f1ef; /* Page */
--color-card: #ffffff; /* Card */
--color-raised: #fafaf9; /* Raised */
--color-deep: #e7e7e3; /* Deep */
/* ink */
--color-primary: #0a0a0a; /* Primary */
--color-secondary: #595956; /* Secondary */
…Tokens as JSON marshal-tokens.json
For Style Dictionary, Figma variable importers, or any other pipeline.
{
"name": "Marshal",
"source": "marshal.studio",
"color": {
"surface": {
"page": "#F1F1EF",
"card": "#FFFFFF",
"raised": "#FAFAF9",
"deep": "#E7E7E3"
},
"ink": {
"primary": "#0A0A0A",
"secondary": "#595956",
"tertiary": "#666663",
…Type styles marshal-type.css
Each named style as a class, with the exact size, leading and tracking.
.type-hero {
font-family: "Geist", sans-serif;
font-size: 34px;
line-height: 42px;
letter-spacing: -0.8px;
font-weight: 600;
}
.type-section {
font-family: "Geist", sans-serif;
font-size: 20px;
line-height: 26px;
letter-spacing: -0.3px;
font-weight: 600;
…These are generated from the same values this document displays, so a token file can never disagree with the swatch above it. Paste the CSS into globals.css and the whole system follows — Tailwind v4 is configured in CSS, so that block is the config.
Typefaces
Unusually for a brand handoff, there is nothing to license here. Both faces are open source and already self-hosted in the build, so a new developer can clone the repository and get identical type with no font purchase and no external request.
Where the rest lives
Repository
Source, tokens and components. Transferred to you at handover.
Figma
The design file the build was made from, with components and variables.
Accounts
Hosting, domain and analytics, moved to your ownership.
Marshal hands over everything: code, design files and every account. This document is the map to it, not a substitute for it.
