The Nautes Design Language
Version: 0.3.0 Status: Draft — iterating with Hans-Jakob Last updated: 2026-02-05 Token source: `tokens/nautes.json v3.0.0
1. Point of View
Hanlon exists to extend what people can do. Not to impress with technology, but to redesign work so that the people doing it get their time and focus back. The design language must embody the same principle: extend the reader's ability to understand, trust, and act.
Authority through restraint. A confident brand does not need to scream. Hanlon's visual identity is rooted in quiet modernism — the belief that precision and warmth can coexist, that negative space is a design element (not emptiness), and that the work speaks without shouting.
We design for trust, not attention. Every element earns its place.
Why Quiet Modernism
Quiet modernism emerged as a response to sensory overload in digital culture. It intentionally creates space for thought and breath. Where earlier minimalism felt cold and sterile — stark white boxes — quiet modernism introduces warmth and humanity through material authenticity, organic textures, and functional precision.
This fits Hanlon for three reasons:
- Our clients are overwhelmed. They are small business owners drowning in noise — AI hype, tool fatigue, vendor pitches. Our design should feel like a pause from that.
- Our work is precise. We redesign workflows from first principles. The design language should mirror that: carefully considered, nothing wasted.
- We are one person. There is no committee smoothing edges. The design can be opinionated and consistent in a way that only a single-founder brand can achieve.
What We Are Not
- Not cold. We are restrained, not austere. Warm cream backgrounds and generous spacing create approachability.
- Not trendy. We do not chase design trends. Quiet modernism is not a trend — it is a maturity in design thinking.
- Not flashy. If a visitor notices the design before the content, we have failed.
- Not corporate. We are professional without being institutional. One person, not a department.
2. Design Principles
Three principles — Presence, Posture, Craft — that guide every design decision. Use them to make, advocate, and evaluate.
2.1 Earned Presence
Every element must justify its existence. If it does not serve the reader, it does not belong.
| Apply when | Guidance |
|---|---|
| Adding a visual element | Ask: does this earn its place? Decoration without purpose violates the language. |
| Choosing between two approaches | Choose the one with fewer elements that achieves the same outcome. |
| Evaluating a page | If you removed this element, would the page lose meaning? If not, remove it. |
| Designing surfaces | Surfaces must be authentic. Use warm cream honestly. Elevation comes from subtle borders and spacing, not heavy shadows. If an effect does not communicate state change, remove it. |
| Choosing imagery | Photography should feel natural and unposed. Illustrations clean and purposeful. |
Test: Can you explain in one sentence why this element exists? Does this surface feel like it exists in a real space? If not, it has not earned its presence.
2.2 Quiet Authority
Confidence expressed through restraint, not volume. Evidence over claims. Show, do not tell.
| Apply when | Guidance |
|---|---|
| Writing copy | No exclamation marks. No hooks. Let the content be the CTA. |
| Choosing emphasis | Typography weight and negative space create emphasis, not color variation. Navy is the only color. |
| Designing CTAs | One primary action per section. No competing calls to action. Minimal text. |
| Structuring a page | Hero sections are spacious and unhurried. Information density increases as you scroll. Lead with the simplest framing — depth rewards exploration. |
| Designing interactions | Micro-interactions are subtle (1-2px movement, 200ms duration). Nothing jumps or bounces. Progressive disclosure over information dump. |
Test: Would a senior consultant at a trusted firm present information this way? If a reader only sees the first viewport, do they feel calm and oriented? If it feels like marketing or information overload, dial it back.
2.3 Human Precision
Technical excellence that still feels warm. Nordic clarity with functional warmth.
| Apply when | Guidance |
|---|---|
| Setting type | Barlow Condensed's geometric boldness for impact. Barlow regular's openness for reading. One family, full range. |
| Aligning to grid | Everything snaps to the 8px grid, but optical adjustments are acceptable when mathematical alignment feels wrong. |
| Building components | Corners are gently rounded (8px default), not sharp. Padding is generous. Touch targets exceed minimums. |
Test: Does this feel like it was made by a person who cares, or by a system that calculated? Both precision and warmth must be present.
3. Color System
Philosophy
Navy is the brand. Not an accent to decorate with — navy IS Hanlon. Deep, authoritative, Nordic. It serves as both text color and interactive accent. The differentiation between reading text and interactive elements comes from treatment (underlines, fills, weight) not from color contrast.
The palette has three families: warm cream (backgrounds), deep navy (text and brand), and muted slate (the bridge between them). No competing chromatic accents. Maximum restraint.
Light mode first. Dark mode will follow by inverting the scale.
Light Mode Palette
Backgrounds (Warm Cream)
| Token | Value | Role | Contrast w/ navy |
|---|---|---|---|
background.primary |
#FAF7F2 |
Page background — barely tinted warm white | 12.9:1 (AAA) |
background.secondary |
#F0ECE3 |
Cards, elevated surfaces | 11.8:1 (AAA) |
background.tertiary |
#E5E0D6 |
Hover backgrounds, active sections | 10.2:1 (AAA) |
background.elevated |
#D8D2C6 |
Dropdowns, tooltips | 8.5:1 (AAA) |
Text (Navy)
| Token | Value | Role | On cream |
|---|---|---|---|
text.primary |
#1E2B5A |
Main body text — deepest navy | 12.9:1 (AAA) |
text.secondary |
#4A5575 |
Supporting text, captions | 7.1:1 (AAA) |
text.muted |
#6E7694 |
Placeholders, hints | 4.5:1 (AA) |
text.inverted |
#FAF7F2 |
Text on navy backgrounds | 12.9:1 (AAA) |
Accent (Navy = Brand)
| Token | Value | Role |
|---|---|---|
accent.default |
#2D3A6E |
Links, buttons, interactive elements |
accent.hover |
#3D4D85 |
Hover state — slightly lighter to show change |
accent.active |
#1E2B5A |
Pressed state — matches text.primary |
accent.muted |
#8B96BE |
Badges, subtle indicators, disabled interactive |
Neutral (Warm scale)
| Step | Value | Role |
|---|---|---|
| 50 | #FDFBF7 |
Lightest — barely tinted |
| 100 | #FAF7F2 |
Page background |
| 200 | #F0ECE3 |
Card surfaces |
| 300 | #E5E0D6 |
Borders, dividers |
| 400 | #C4BDB0 |
Muted borders |
| 500 | #9A9488 |
Disabled states |
| 600 | #706B62 |
Muted warm text |
| 700 | #4A5575 |
Secondary text (bridges to navy) |
| 800 | #2D3A6E |
Brand navy |
| 900 | #1E2B5A |
Primary text, deepest navy |
| 950 | #141D42 |
Near-black navy |
Semantic
| Token | Value | Role |
|---|---|---|
success |
#2D7D46 |
Confirmation, completion |
successLight |
#3A9A5A |
Success hover |
successDark |
#1F5E33 |
Success pressed |
warning |
#B87A1E |
Caution states |
warningLight |
#D49030 |
Warning hover |
warningDark |
#966315 |
Warning pressed |
error |
#C23B3B |
Errors, destructive actions |
errorLight |
#D54E4E |
Error hover |
errorDark |
#A02E2E |
Error pressed |
info |
#2D3A6E |
Informational (= accent.default) |
Color Usage Rules
- Navy is both text and accent. Interactive elements are distinguished by treatment (underline, fill, weight change), not by using a different color. This is maximum restraint.
- The 95/5 rule. A page should be almost entirely cream and navy. The only other colors are semantic (success green, warning amber, error red) — and those appear only in functional contexts.
- No competing colors. There is no secondary brand color. No highlight color. Navy and cream are the brand.
- Contrast first. All text must meet WCAG AA contrast ratios (4.5:1 for normal text, 3:1 for large text). The palette is designed to exceed this at every combination.
- Warm undertone throughout. Backgrounds carry a warm cream undertone. Never use cool grays or pure whites (#FFFFFF, #F5F5F5). Even the lightest background is
#FDFBF7.
Future: Dark Mode
When dark mode is added, the palette inverts:
background.primary→#1E2B5A(deep navy)text.primary→#FAF7F2(warm cream)accent.default→#8B96BE(lighter navy for visibility on dark)- Font weights shift lighter (body 300) to compensate for luminous screens
4. Typography
Philosophy
Typography is the primary design element. In quiet modernism, type does the work that decoration does in other systems. One typeface family, used across its full range, creates the entire visual hierarchy. The drama comes from the contrast between condensed bold display and open regular body — not from mixing typeface families.
The System: Barlow
Barlow — A slightly rounded, low-contrast, grotesk sans-serif by Jeremy Tribby. Available on Google Fonts as a variable font.
Two widths, one family:
Barlow Condensed — Display and headlines
- Condensed proportions create impact without needing large sizes
- Used at SemiBold (600) and Medium (500) weights
- Negative letter-spacing (-0.01em to -0.02em) for tight, editorial titling
- Used for: h1–h3, hero text, section titles, pull quotes
Barlow — Body text, UI, and everything else
- Regular width for comfortable reading
- Used at Light (300), Regular (400), and Medium (500) weights
- Default letter-spacing (0) for body, slightly open (0.02em–0.08em) for labels and overlines
- Used for: body text, subtitles, navigation, buttons, labels, captions, metadata
Type Hierarchy
| Use | Family | Weight | Spacing | Size |
|---|---|---|---|---|
| H1 hero display | Barlow Condensed | 600 (SemiBold) | -0.02em | 72px (4xl) |
| H2 section heads | Barlow Condensed | 600 (SemiBold) | -0.01em | 56px (3xl) |
| H3 sub-sections | Barlow Condensed | 500 (Medium) | -0.01em | 40px (2xl) |
| H4 headings | Barlow | 500 (Medium) | 0 | 32px (xl) |
| H5–H6 small heads | Barlow | 500 (Medium) | 0 | 24px (lg) |
| Body text | Barlow | 400 (Regular) | 0 | 18px (base) |
| Body light | Barlow | 300 (Light) | 0 | 18px (base) |
| Navigation | Barlow | 500 (Medium) | 0.02em | 14px (sm) |
| Buttons | Barlow | 500 (Medium) | 0.02em | 16px |
| Labels, tags | Barlow | 500 (Medium) | 0.08em | 12px (xs, uppercase) |
| Captions | Barlow | 400 (Regular) | 0.01em | 14px (sm) |
Type Scale
Perfect Fourth ratio (1.333) from an 18px base, snapped to 8px baseline grid.
| Token | Size | Typical use |
|---|---|---|
xs |
10px (0.625rem) | Fine print |
sm |
14px (0.875rem) | Labels, captions, nav |
base |
18px (1.125rem) | Body text default |
lg |
24px (1.5rem) | Large body, h5, h6 |
xl |
32px (2rem) | h4 headings |
2xl |
40px (2.5rem) | h3 headings |
3xl |
56px (3.5rem) | h2 display |
4xl |
72px (4.5rem) | h1 hero display |
Line Height
Two contexts, both on the 8px grid:
| Context | Use | Ratio |
|---|---|---|
| Display | Headlines, hero, marketing, UI | Generous — 1.22 to 1.78 depending on size |
| Prose | Articles, long-form reading | Tighter — 1.33 ratio for reading focus |
Display line heights decrease as font size increases (large type needs less relative leading). Prose line heights stay consistent for rhythm.
Mixed-Italic Headlines
Headlines can mix upright and italic text within the same line to create emphasis. The italic words carry the same weight (600 SemiBold) as the upright — differentiation comes from style alone, not weight. This is the Quiet Modernism approach: confident emphasis without shouting.
Extend what
*your team* can do
Use italic for the human element, the key differentiator, or the action word. Never italicize more than half the headline.
Weight Scale Summary
The system uses a clear three-tier weight structure:
| Tier | Weight | Use |
|---|---|---|
| Display | 600 (SemiBold) | H1, H2 headlines |
| Structural | 500 (Medium) | H3, H4, navigation, buttons, labels |
| Reading | 400 (Regular) / 300 (Light) | Body text, subtitles, captions |
Typography Rules
- One typeface family. Barlow (regular and condensed). No other typefaces without updating this document.
- Hierarchy through width, size, and weight. Condensed for display. Regular for body. SemiBold for impact. Medium for UI. This creates a rich hierarchy within a single family.
- Prose width: 65ch. Long-form text never exceeds 65 characters per line.
- No contractions in professional content. "We are" not "We're." See Voice & Tone Profile.
- Uppercase is earned. Only use uppercase for overline labels and tags — with wide letter-spacing (0.08em+). Never for headings or body text.
- Mixed italic headlines keep the same weight. When combining upright and italic in headlines, both use 600 SemiBold. Style contrast only, no weight tricks.
5. Layout & Grid
Philosophy
Layout is the architecture of trust. In quiet modernism, the arrangement of elements communicates as much as the elements themselves. Generous space signals confidence. Tight spacing signals density. The grid provides structure; the guidelines provide meaning.
The Grid
- Base unit: 8px
- Columns: Flexible — content dictates column count, not a fixed 12-column grid
- Container max-width: 1440px
- Prose max-width: 65ch (optimal reading width)
Page Gutters
| Viewport | Gutter | Token |
|---|---|---|
| Mobile (< 768px) | 32px | layout.pageGutterMobile |
| Tablet (768–1023px) | 48px | layout.pageGutterTablet |
| Desktop (1024px+) | 64px | layout.pageGutterDesktop |
Section Rhythm
Sections alternate between three gap sizes to create breathing rhythm:
| Gap | Value | Use |
|---|---|---|
| Small | 80px | Between closely related content blocks |
| Medium | 128px | Standard section separation |
| Large | 192px | Major section transitions (e.g., hero → first content section) |
Rule: The first section gap (below the hero) should always be large. Interior sections use medium. Related subsections use small.
Compositional Rules
The 60/40 principle. Approximately 60% of any viewport should be negative space (background, margins, padding). Content occupies 40%. This ratio creates the quiet modernism feel.
Asymmetry over symmetry. Prefer content-heavy left columns with breathing room on the right. An 8/4 or 7/5 split feels more editorial and less corporate than a centered layout.
Horizontal integration. Content should feel connected to its environment, not floating in space. Subtle borders, shared background colors, and alignment to the grid create this connection.
Card density. Maximum 3 items per row on desktop. 2 on tablet. 1 on mobile. Cards use
32pxinternal padding and24pxgaps between them.Hero sections breathe. The hero viewport should be unhurried. Minimal text. Maximum space. The scroll indicator invites exploration — the hero does not try to explain everything.
Breakpoints
| Name | Width | Columns |
|---|---|---|
sm |
640px | 1 |
md |
768px | 1–2 |
lg |
1024px | 2–3 |
xl |
1280px | 2–3 |
2xl |
1440px | Full layout |
6. Spacing & Rhythm
The 8px Grid
All spacing derives from an 8px base unit. This creates visual rhythm and alignment across the entire interface.
| Multiplier | Value | Common use |
|---|---|---|
| 0.5x | 4px | Tight inline spacing, icon gaps |
| 1x | 8px | Minimum gap, tight element spacing |
| 2x | 16px | Standard inline spacing, form gaps |
| 3x | 24px | Card gaps, list item spacing |
| 4x | 32px | Card padding, section sub-spacing |
| 6x | 48px | Component group spacing |
| 8x | 64px | Page gutters (desktop) |
| 10x | 80px | Section gap (small) |
| 16x | 128px | Section gap (medium) |
| 24x | 192px | Section gap (large) |
Spacing Rules
- Always snap to grid. No arbitrary pixel values. If 8px feels too tight and 16px feels too loose, question the layout rather than introducing 12px.
- Vertical > horizontal. When in doubt, add more vertical space rather than more horizontal space. Quiet modernism breathes vertically.
- Inside generous, outside tight. Cards have generous internal padding (32px) but tight gaps between them (24px). This creates cohesive groups with clear internal hierarchy.
- Section transitions are events. The gap between sections should feel intentional — a pause, not a gap. Use the section rhythm scale consistently.
7. Motion & Animation
Philosophy
Motion in quiet modernism is functional, not decorative. Every animation communicates a state change — hover, press, transition, appear. Nothing moves for the sake of movement.
Timing
| Token | Duration | Use |
|---|---|---|
fast |
150ms | Color changes, opacity shifts |
default |
200ms | Most state transitions |
slow |
300ms | Layout shifts, content reveals |
slower |
400ms | Page transitions, modal entries |
Motion Rules
- Subtle scale. Maximum movement: 2px translation, 2% scale. Nothing jumps, slides dramatically, or bounces.
- Ease-out for enters, ease-in for exits. Elements arriving in view decelerate. Elements leaving accelerate away.
- Respect reduced motion. When
prefers-reduced-motion: reduceis set, all transitions and animations are disabled. No exceptions. - One property at a time. Avoid animating multiple properties simultaneously. A hover lifts OR changes color, rarely both.
- Page loads are calm. A single, subtle fade-in (400ms, ease-out). No staggered animations, no reveal sequences.
8. Component Patterns
Surfaces
Cards — The primary container for grouped content.
- Background:
background.secondary(#F0ECE3) - Border: 1px,
neutral.300(#E5E0D6) - Border radius: 8px (default)
- Padding: 32px (24px on mobile)
- Hover: Border shifts to
accent.default(#2D3A6E) at 30% opacity, subtle shadow-sm - Never stack more than one elevation level (no cards inside cards)
Sections — Full-width page divisions.
- Background alternates between
background.primaryandbackground.secondary - No visible borders between sections — spacing creates separation
- Content within sections respects the container max-width
Navy sections — For emphasis (use sparingly).
- Background:
accent.default(#2D3A6E) ortext.primary(#1E2B5A) - Text:
text.inverted(#FAF7F2) - Maximum one navy section per page. This is the visual "event" — overuse dilutes impact.
Interactive Elements
Buttons — Three variants, always restrained.
- Primary: Navy (
accent.default) background, cream (text.inverted) text. The single most important action. - Secondary: Transparent with navy border (1.5px), navy text. Supporting actions.
- Ghost: Navy text only, subtle cream hover background. Tertiary actions.
- All variants: Barlow Medium (500), minimum 44px touch target, 8px border radius, letter-spacing 0.02em
Links — Inline text links.
- Color:
accent.default(#2D3A6E) — same family as body text but slightly lighter to differentiate - Underline on hover (animated expansion, 200ms)
- No underline by default in navigation. Subtle underline by default in prose content.
- Visited state:
text.secondary(#4A5575)
Navigation — Clean, minimal.
- Barlow Medium (500), letter-spacing 0.02em
- Active page indicated by heavier weight (600) and
aria-current="page" - No background highlights, no underlines, no accent color — weight change is sufficient
Content Patterns
Hero sections
- Generous vertical padding (minimum 192px top/bottom)
- Barlow Condensed SemiBold headline at
4xl(72px), optionally with mixed italic - Maximum one supporting paragraph in Barlow Light (300) at
lg(24px) - One CTA maximum. Or none — the content can be the CTA.
- Scroll indicator (subtle, animated) invites exploration
Article/prose content
- Max-width: 65ch
- Body text at
base(18px) in Barlow Regular, prose line-height (1.33 ratio) - Headings in Barlow Condensed SemiBold (600) / Medium (500)
- Generous spacing between paragraphs (1.5em margin-bottom)
- Pull quotes in Barlow Condensed at
2xl, indented, lighter weight (400)
9. Imagery & Visual Assets
Photography (when used)
- Natural light, unstaged feel
- Muted color grading that harmonizes with the cream and navy palette
- Desaturated or duotone (navy + cream) processing for brand consistency
- People in working contexts, not posing
- No stock photography aesthetic
Illustrations & Icons
- Line-based, minimal
- Single color (navy) or duotone (navy + cream)
- Consistent stroke weight across all icons
- Functional, not decorative — every icon communicates meaning
Logo
- Clean, geometric mark
- Works at all sizes from favicon to hero
- Designed for both cream and navy backgrounds
- See
~/Projects/hanlon.agency/public/logo-dark.svg
10. Voice & Tone (Reference)
The design language and the verbal language are inseparable. Quiet modernism applies to words as much as visuals.
Full reference: ~/Hanlon/brand/COMMUNICATIONS_GUIDE.md
PAI sync: ~/.claude/skills/_HANLON/VoiceAndToneProfile.md
Key principles summarized:
- Professional but human. No contractions, but conversational rhythm.
- Evidence-forward. Show the work. Let results speak.
- Anti-salesy. No formula structures, no hook language, no CTA pressure.
- Teaching over selling. LinkedIn/newsletters build trust through insight, not promotion.
Appendix A: Token Reference
All design tokens are defined in nautes.json (v3.0.0). The Nautes CLI (nautes.ts) generates:
- CSS custom properties (
nautes.css) - TypeScript exports (
nautes.ts) - Tailwind config extension (
nautes-tailwind.js) - PAI brand reference (
nautes-brand.json)
Run bun ~/Hanlon/design/nautes/nautes.ts build to regenerate from tokens.
Appendix B: Accessibility Requirements
- WCAG AA minimum for all text contrast ratios (4.5:1 normal, 3:1 large)
- 44px minimum touch targets on all interactive elements
- Focus visible ring on all interactive elements (2px, navy, offset cream)
- Skip-to-content link on every page
- Semantic HTML — one h1 per page, logical heading hierarchy
- Reduced motion respected globally via
prefers-reduced-motionmedia query - Alt text on all meaningful images. Decorative images get
aria-hidden="true"
Appendix C: Design Decision Log
| Date | Decision | Rationale |
|---|---|---|
| 2026-02-05 | Navy + cream palette, drop violet | Navy = trust, authority, Nordic. Warm cream = quiet modernism warmth. Maximum restraint. |
| 2026-02-05 | Barlow all-sans, drop Cormorant Garamond | Single family with condensed variant. Geometric, utilitarian, Dutch/Swiss character. Condensed display + regular body creates hierarchy within one family. |
| 2026-02-05 | Navy as both text AND accent | Maximum restraint. Interactive elements differentiated by treatment (underline, fill), not color. |
| 2026-02-05 | Light mode first, dark mode later | Aligns with quiet modernism warmth. Ship one mode well. |
| 2026-02-05 | Lighter weights: 600/500/400/300 | Original Bold (700) dropped. H1/H2 at SemiBold (600), structural at Medium (500), body at Regular/Light. Maximum weight: 600. |
| 2026-02-05 | Mixed-italic headlines, same weight | Italic emphasis in headlines keeps 600 SemiBold — style-only contrast, no weight tricks. Quiet Modernism. |
| 2026-02-05 | Body Light (300) added | Light weight for subtitles, introductory paragraphs, and hero supporting text. Softer voice. |
| 2026-02-05 | Three design principles (Presence / Posture / Craft) | Consolidated from 5. Material Honesty folded into Earned Presence. Slow Reveal folded into Quiet Authority. Fewer principles, more memorable. |
| 2026-01-22 | 8px base grid | Industry standard, aligns with Tailwind spacing |
| 2026-01-22 | Perfect Fourth type scale | 1.333 ratio from 18px base, grid-snapped |
This document is the source of truth for Hanlon's design language. Tokens live in nautes.json. Voice lives in the Communications Guide. This document connects them.