Archetype Spec · Editorial / Marketing

Harbor

An editorial-grade design system for services firms, portfolios, and marketing sites. Structure felt, not seen.

Version v1.1 Theme Dark-first Accent Single-hue teal #66D9C2 Density Generous · 4px–160px Icons Phosphor Light/Regular · 1.5px stroke WCAG AA minimum · AAA body
§1.1

Color system

Surfaces

Page background
--color-bg
#141312
Surface default
--color-surface
#1A1918
Surface raised
--color-surface-2
#1E1D1B
Surface offset
--color-surface-offset
#222120
Surface dynamic
--color-surface-dynamic
#26251F

Text levels

Text primary
--color-text
#F5F4F0
Text muted
--color-text-muted
rgba(245,244,240,0.70)
Text faint
--color-text-faint
rgba(245,244,240,0.40)
Text inverse
--color-text-inverse
#141312

Accent — single hue, 4 states

Primary
--color-primary
#66D9C2
Hover lift
--color-primary-hover
#7EE5D0
Pressed
--color-primary-active
#55C2AC
Subtle bg tint
--color-primary-subtle
rgba(102,217,194,0.12)

Semantic trio (no info level)

Success
--color-success
#7BC97A
Warning
--color-warning
#E8B24D
Error
--color-error
#E07B6D

Accessibility verification (dark mode)

Foreground Background Ratio Use case Status
--color-text--color-bg15.8:1Body text on page bgAAA
--color-text--color-surface14.6:1Body text on surfaceAAA
--color-text-muted--color-bg10.4:1Secondary copyAAA
--color-text-faint--color-bg5.3:1Metadata, captionsAA
--color-primary--color-bg9.8:1Links, accent textAAA
--color-text-inverse--color-primary9.8:1Text on CTA buttonAAA
--color-primary--color-surface9.1:1Active nav, iconsAAA
--color-success--color-bg7.4:1Success badgesAAA
--color-warning--color-bg6.1:1Warning badgesAAA
--color-error--color-bg4.7:1Error (supplement with icon)AA
§1.2

Typography

All sizes use fluid clamp() — no fixed pixel declarations. Instrument Serif italic carries editorial emphasis; Inter handles body. Italic is reserved for display headlines and pull quotes — never body copy.

Type scale

--text-heroclamp(2.5rem → 6rem)
Page hero, editorial display
Harbor
--text-2xlclamp(2rem → 3.5rem)
Page sub-heads (h2)
Structure felt
--text-xlclamp(1.5rem → 2.25rem)
Section headings h3/h4
Editorial rhythm
--text-lgclamp(1.125rem → 1.5rem)
Leads, sub-heads
Cut expense reports from 45 minutes to 3.
--text-baseclamp(1rem → 1.125rem)
Body default
We design with restraint. Services firms need atmosphere, not noise.
--text-smclamp(0.875rem → 1rem)
Labels, helper text
Supporting label text · form helpers · card metadata
--text-xsclamp(0.75rem → 0.875rem)
Captions, metadata, eyebrows
EYEBROW · OVERLINE · METADATA

Font families

--font-serif"Instrument Serif", Georgia, serif — italic display
--font-sans"Inter", "General Sans", system-ui, sans-serif — body

Weight scale

--weight-regular400 — body, leads
--weight-medium500 — buttons, eyebrows
--weight-semibold600 — sub-headings
--weight-bold700 — headlines (sparingly; italic serif leads)

Line heights & letter spacing

--leading-tight1.15 — hero + h1/h2 display
--leading-snug1.30 — h3/h4 sub-heads
--leading-normal1.55 — body default
--leading-relaxed1.75 — long-form leads
--tracking-tight-0.02em — display headings
--tracking-normal0 — body
--tracking-wide0.08em — eyebrow / overline
§1.3

Spacing scale

14-step scale on a 4px base. Generous density — whitespace IS the design. Section padding uses fluid clamp().

--space-1 4px · 0.25rem
--space-2 8px · 0.5rem
--space-3 12px · 0.75rem
--space-4 16px · 1rem
--space-6 24px · 1.5rem
--space-8 32px · 2rem
--space-12 48px · 3rem
--space-16 64px · 4rem
--space-20 80px · 5rem
--space-24 96px · 6rem
--space-32 128px · 8rem
--space-40 160px · 10rem

Section & content tokens

--section-padding-yclamp(4rem, 8vw, 10rem) — vertical section rhythm
--section-padding-xclamp(1.5rem, 5vw, 6rem) — horizontal gutters
--content-narrow640px — reading column, pull quotes
--content-default960px — articles, value rows
--content-wide1200px — case studies, hero compositions
--content-max1440px — full-bleed compositions
§1.4

Elevation

Default elevation via background surface shift. Shadows reserved for floating elements only. All shadows are warm — derived from the teal primary. Cold #000 rgba shadows are banned.

--shadow-sm
0 1px 2px teal/0.08 — card hover
--shadow-md
0 4px 16px teal/0.12 — dropdown, popover
--shadow-lg
0 12px 40px teal/0.18 — dialog, drawer
--shadow-xl
0 24px 80px teal/0.24 — hero overlay, full-screen modal
CSS note: The canonical spec uses oklch(from var(--color-primary) l c h / 0.08) (relative color syntax). The fallback values above are rgba equivalents for broad browser support. Both are warm — never cold rgba(0,0,0,…).
§1.5

Shape & borders

Radii scale — 6 steps

--radius-sm · 4px
Chips, badges, small inputs
--radius-md · 8px
Buttons, cards, dialogs
--radius-lg · 12px
Feature cards, hero blocks
--radius-xl · 16px
Image frames
--radius-2xl · 24px
Pull-quote blocks, major surfaces
--radius-full · 9999px
Pills — badges, avatars, chips

Borders

--color-dividerrgba(255,255,255,0.06) — hairline separators
--color-borderrgba(255,255,255,0.12) — component outlines
Banned: Never apply both border AND shadow to the same element (double visual weight). Never use pill-rounded corners (32px+) on cards — that belongs to Current.
§1.6

Motion

Use motion sparingly: hover state changes, scroll-spy active nav, section reveal on enter. Reduced-motion fallback: fade-only at --duration-fast.

Duration tokens

--duration-fast120ms — hover color, icon swap
--duration-base200ms — default — buttons, dropdowns
--duration-slow350ms — dialog open, drawer slide
--duration-editorial600ms — section reveal, scroll-spy

Easing tokens

--ease-outcubic-bezier(0.16, 1, 0.3, 1) — springy exit, best for UI
--ease-standardcubic-bezier(0.4, 0, 0.2, 1) — balanced enter/exit
--transition-uivar(--duration-base) var(--ease-out) — default shorthand

Reduced-motion rule

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: var(--duration-fast) !important;
  }
}
/* Remove transform animations entirely — do not just shorten them */

Banned motion patterns

Parallax > 20% offset
Scroll-jacking of any kind
Animated gradient backgrounds
Bouncing micro-animations
Marquee / ticker animations
§1.7

Iconography

Phosphor (light or regular weight) is the sole icon family for Harbor. The light + regular weights carry editorial warmth and rounded character that match Harbor's serif italic display and warm oklch shadows. Stroke: 1.5px. Grid: 24px (16px for inline UI). Color: currentColor only — never hex. Line icons only — no filled icons except severity badges.

NOT Lucide. Lucide is too utilitarian — that belongs to Sentinel. Harbor requires Phosphor's editorial warmth. Substitute Iconoir (closest equivalent) only if Phosphor is unavailable in your toolchain.

Sample icon set — Phosphor light weight, 1.5px stroke, 24px grid

House
User
Envelope
Article
Pencil
MagnifyingGlass
Bookmark
Calendar
Link
Share
Bell
Gear
Check
X
Warning
Spinner
Line vs filled: All Harbor icons are line weight. The Warning triangle above is the sole exception — severity badges (success/warning/error) may use the filled/solid Phosphor variant for stronger visual signal. Never use filled icons as general UI decoration.
§2

Voice & content

One primary CTA per section. Action-first verbs. Italic serif on key words only. Numbers over hyperbole. Max line: 68ch paragraphs, 56ch leads, 52ch pull quotes.

Do
"Read the case study"
Specific, verb-first, tells the reader exactly what they get.
Don't
"Learn More"
Zero specificity. AI default slop that erodes trust on first read.
Do
"Cut expense reports from 45 minutes to 3"
Numbers earn trust. Specific claims signal real experience.
Don't
"Revolutionize your workflow"
Hyperbole erodes trust. Reader immediately discounts the claim.
Do
"Upload failed. The file is over 10MB. Try compressing it."
What / Why / How formula. The reader knows exactly what to do.
Don't
"Error: Invalid file."
What happened? Why? What can I do? The reader is left stranded.
Do
We design with restraint.
Italic serif carries emphasis. One word. The sentence earns it.
Don't
WE DESIGN WITH RESTRAINT.
ALL CAPS shouts. Italic whispers meaningfully. Shouting is for billboards.

Banned CTA verbs

Learn More Click Here Submit Get Started Discover Explore Unlock the Power of X Let's embark on

Allowed CTA verbs

Read the case study See how we work Book a 30-minute call See a live demo View the portfolio Download the brief
§3.1

Foundation components

1. Button

4 variants × 3 sizes × 6 states. Arrows ONLY on navigation CTAs — never on submit buttons. Never two primary buttons adjacent.

Variants
Sizes — primary
States
Banned: "Get Started", "Submit →", arrows on non-navigation buttons, two teal primaries adjacent

2. Icon button

sm (28px) · md (36px) · lg (44px)
aria-label required on all. Ghost by default — borders only on dense toolbars.

3. Field (text input + textarea)

Labels ALWAYS above and visible. Floating labels are banned. Hint text below. Error text replaces hint.

We'll send confirmation here.
Email format not recognized. Try name@example.com.

4. Selection controls

Dark mode

5–6. Tag / Badge / Chip

Badge variants
Design Featured Published Draft Archived
Chip (removable / selectable)
Branding Strategy

7. Avatar

Initials only by default. Two-letter monogram on warm tint. Stock photos are banned (governance rule).

IS
IS
IS
IS
sm (24px) · md (32px) · lg (48px) · xl (96px)
§3.2

Composite components

8. Pull quote

Structure should be felt, not seen. The page reads as a composition rather than a control panel.

— Harbor Design Principles · v1.1
No quotation marks. Left rule 2px primary. max-width 52ch. Attribution in --text-sm muted, tracking-wide.

9. Card variants (7)

9a Card — Flat

Brand strategy review

Default 1px border, no shadow. 90% of Harbor cards.

9b Card — Raised

Hovering item

No border. Warm shadow-sm. surface-2 background.

9c Card — Interactive (hover me)

Rebranding a 20-year firm

Hover lifts -2px + shadow-sm. Full card is tap target.

9d Card — Service

Editorial strategy

Icon + h4 + 1-2 sentence body + ghost link.

Read more
4:5 case study image
9e Card — Case study

Revenue up 38% in 6 months

+38% revenue
9f Card — Team
AR

Amara Reyes

DESIGN DIRECTOR

Editorial systems, brand identity, and product design.

9g Card — Stat
42
Projects delivered

10. Alert

Draft saved
Your changes are saved as a draft. Review before publishing.
Article published
Your case study is live. Share it with your network.
Upload failed
The file is over 10MB. Try compressing it before uploading again.

11–12. Toast & Tooltip

Changes saved successfully.
Hover for tooltip
400ms delay · viewport-aware flip · max 240px

15. Tabs

Underline on active (2px primary). ArrowLeft/Right cycles. Max 5 tabs visible.

16. Loading states

Loading case studies…

18. Process diagram

1
Discovery & brief
2
Strategy workshop
3
Design concepts
4
Refinement
5
Handoff & launch
Display serif italic numbers. 1px divider connectors. Max 6 steps.
§3.3

Section templates

Any Harbor marketing page is assembled from exactly 6 section templates. The AI assembles — never invents new section types.

01 Hero Editorial
We design with restraint.
Editorial services for firms that want structure felt, not seen. One engagement at a time.
h1 clamp(2.5–6rem) + lede max 56ch + single CTA. No carousels, no stock photos.
02 Value Rows
01
Brand strategy
How you speak before how you look.
02
Visual identity
Systems that scale without diluting.
03
Editorial design
Rhythm that keeps readers reading.
Numbered rows, never 3-col icon grid.
03 Asymmetric Split
Working in the margins
Our best work happens in the 40% nobody designs for.
Read the story
40/60 or 60/40 only. Never 50/50.
04 Metrics Block
42
Projects
8
Countries
12
Years
3 oversized numbers max. surface-dynamic bg. No 4+ metric grids.
05 Case Study
16:9 image

They didn't design our site. They redesigned how we talk about ourselves.

— Founder, Series B SaaS — 38% revenue lift
No quote marks. Left rule. max-width 52ch. One outcome. No sliders.
06 CTA Block
Ready to redesign how your firm communicates?
Single sentence + single button. No gradient bg. No arrows.
§4

Patterns

19. Form layout

Single column, max-width 480–640px. Labels above (never floating). —space-4 between fields, —space-6 between groups. "(required)" inline, not asterisk. Submit row: divider above, buttons right-aligned.

20. Empty state

Nothing published yet

Start by writing your first case study. Great work deserves a great story.

21. Article header

Brand Strategy

Why most rebrand projects fail before the first sketch

Three patterns we've seen in 42 projects — and what teams can do differently starting in week one.

AR
Amara Reyes · April 27, 2026 · 8 min read

22. Service grid

2-col on desktop (NOT 3-col "icon above title" cliché). Card — Service variant. 1-2 sentence descriptions.

Editorial strategy

Positioning and narrative architecture for services firms ready to publish with authority.

Read more

Visual identity

Brand systems that hold at every touchpoint, from pitch deck to packaging.

Read more

23. Pricing block

Starter
$4,800
per project
  • Brand audit
  • 2 case study writeups
Enterprise
Custom
contact us
  • Everything in Pro
  • Ongoing retainer
  • Dedicated lead
Recommended tier uses surface-dynamic bg + primary border. Prices in display serif. No "Popular" badge — background tint IS the signal.

24. Contact / Footer

Harbor

Editorial design for services firms that want to communicate with authority.

© 2026 Harbor. All rights reserved. No newsletter in footer — give it a CTA Block section.
§4P

Print behavior

Harbor sells marketing pages, case studies, and pricing pages that get printed. Every Harbor product ships @media print rules by default. Case studies and pricing pages must print to a single PDF that's pitch-deck quality.

@media print {
  /* ── Hide chrome and CTAs ── */
  .nav, .reading-progress, .theme-toggle,
  .cta-block, .newsletter-block,
  .floating-action { display: none; }

  /* ── Force light mode for printing ── */
  :root {
    --color-bg: #FFFFFF;
    --color-surface: #FAFAF8;
    --color-text: #1A1A1A;
    --color-text-muted: #6B6B6B;
  }

  /* ── Expand body to full printable width ── */
  .article-body,
  .case-study-body { max-width: none; }

  /* ── Show URLs after every external link ── */
  a[href^="http"]::after {
    content: " (" attr(href) ")";
    color: var(--color-text-muted);
    font-size: 0.85em;
  }

  /* ── Page breaks ── */
  h1, h2 { page-break-after: avoid; }
  .case-study-block,
  .pricing-tier { page-break-inside: avoid; }
  .section-divider { page-break-before: always; }

  /* ── Pull quotes keep typographic identity ── */
  .pull-quote {
    font-family: var(--font-serif);
    font-style: italic;
  }

  /* ── Drop warm oklch shadows (printer can't render warmth) ── */
  * { box-shadow: none !important; }
}
Harbor rule: Print rules are included in the canonical tokens.css output of Prompt 1 — no separate print-stylesheet module needed. Case studies and pricing pages must print to a single PDF that's pitch-deck quality for clients and designers.
§3.D

Domain layer

Domain components are composed FROM Layer 1–3 using Harbor's rules. Each inherits the states and accessibility requirements of its constituent primitives. Below are 5 named examples for editorial / marketing products.

25. Blog post card

Composes: Card-Interactive (9c) + Avatar (7) + display serif h2 with italic emphasis

Brand Strategy

Why most rebrand projects fail before the first sketch

Three patterns we've seen across 42 projects — and what teams can do differently starting in week one.

AR
Amara Reyes · 8 min read
Editorial Systems

Structure should be felt, not seen

How Harbor's single-accent rule forces composition thinking instead of decoration-by-default.

MK
Marcus Ko · 5 min read

26. Author bio block

Composes: Avatar-xl (7) + body paragraph + icon buttons (2). Initials variant default — real photos only for case-study attribution.

AR

Amara Reyes

Design Director · Harbor

Amara leads editorial strategy and visual identity for Harbor's client engagements. She's worked with services firms in 8 countries over 12 years, helping them communicate with the authority their work deserves.

27. Service tier card

Composes: Card-Service (9d) + Pull quote (8) + numbered list. 2-col grid on desktop — NOT 3-col.

Editorial strategy

Positioning, narrative architecture, and content infrastructure for services firms ready to publish with authority.

  • Brand voice audit and positioning brief
  • Editorial calendar and content architecture
  • 5 long-form case study writeups
  • Distribution strategy
See case studies

Visual identity

Brand systems built to scale — logo, typography, color, and the usage rules that protect them across teams.

  • Logo and visual mark system
  • Typography and color tokens
  • Brand guidelines document (print-ready)
  • Application templates (web, deck, document)
See case studies

28. Case study testimonial block

Composes: Card-CaseStudy (9e) + Pull quote (8) + Card-Stat (9g). Outcome stat in display serif. No quote marks.

4:5 image

They didn't design our site. They redesigned how we talk about ourselves — and the revenue followed.

+38%
Revenue lift · 6 months post-launch
— Founder, Series B SaaS · Meridian Labs

29. Editorial newsletter inline block

Composes: CTA Block (template 06) + Field (3) + Button (1). Appears ONCE per article, after 60% scroll. Never as popup, sticky bar, or scroll-triggered modal.

§5

Accessibility

WCAG 2.1 conformance

  • Body text ≥ 4.5:1 (AA). Primary body text achieves AAA (15.8:1). All Harbor default pairings verified in §1.1 table.
  • Large text (18pt+ or 14pt bold) ≥ 3:1. Harbor display headings meet AAA at every viewport width.
  • Non-text UI (icons, focus rings, chart elements) ≥ 3:1. --color-primary on --color-bg = 9.8:1.
  • Focus indicator: 2px outline, offset 2px, --color-focus-ring (teal at 60% opacity). Applied to all interactive elements.
  • Focus ring uses :focus-visible (keyboard users only) — pointer devices don't see the ring.
  • Skip-to-content link at top of every page. Present in this spec page.
  • All icon-only buttons have aria-label. Decorative SVGs have aria-hidden="true".
  • All form fields have programmatic labels via label[for]. Floating labels are banned in Harbor.
  • Live regions for toasts, async results, validation errors (aria-live="polite" default; "assertive" for errors).
  • prefers-reduced-motion honored — transform animations removed entirely (not just shortened).

Keyboard navigation map

Tab / Shift+TabForward / backward through all focusable elements in DOM order
Enter / SpaceActivate buttons, toggles, links, checkboxes
EscClose dialogs, drawers, popovers, menus — return focus to trigger
ArrowLeft / ArrowRightNavigate within tabs, radio groups, menus, listboxes
Home / EndJump to first / last item in lists and tab panels

Screen reader requirements

Test matrix: VoiceOver (Safari/macOS) + NVDA (Firefox/Windows) as minimum. TalkBack (Chrome/Android) for mobile-accessible pages.
Color-only encoding is banned. Status badges use both color AND icon (redundant encoding for colorblind users).
Error messages follow What/Why/How formula. aria-invalid="true" + aria-describedby on invalid fields.
§6

Versioning & governance

SemVer policy

MAJORBreaking token rename, removed component, breaking API change
MINORNew component, new variant, new token, deprecation notice
PATCHBug fix, doc update, non-visual refactor

Deprecation policy: deprecated tokens/components ship for 2 MINOR versions before removal. Deprecation warnings logged in console at build time.

Harbor governance overrides (additions to universal gates)

  • Warm oklch shadows enforced — any cold #000-based rgba shadow fails CI
  • Single accent enforced — any secondary accent ramp fails lint
  • Typography is fluid clamp — any --text-* declared in fixed px fails lint
  • Serif italic display reserved for editorial emphasis — no italic body class allowed
  • Floating label class banned — fails component lint
  • Indigo/purple banned in any token — fails token lint
  • Avatar component defaults to initials variant — stock-photo variant fails review
  • One primary CTA per section — template lint flags multi-primary rendering
  • Hero variants limited to template 01 (Hero Editorial) — no carousel hero in compiled templates

Changelog

v1.1
2026-04-27
  • Phosphor icon family (light/regular weight) as canonical — replaces generic SVG guidance
  • BYOC required-roles section (16 colors for palette validation)
  • Sample adjectives and real-world examples to WHEN TO PICK
  • FAILURE MODES section (5 scenarios with cross-archetype references)
  • PRINT BEHAVIOR — canonical @media print stylesheet in Layer 3
  • Domain layer expanded to 5 named components (Blog post card, Author bio, Service tier card, Case study testimonial, Editorial newsletter inline)
  • Spacing scale visual bug: label/bar overlap resolved with CSS grid explicit columns
  • Chapter header: removed decorative solid block above title (eyebrow → title → tagline)
v1.0
2026-01-15
  • Initial spec: token system, typography, spacing, elevation, radii, motion
  • Component library: foundation (1–7) + composite (8–18) + patterns (19–24)
  • 6 section templates, banned patterns catalog, voice rules
  • WCAG accessibility verification table
BYOC

Required color roles

When using Prompt 1b (Bring Your Own Colors variant), your supplied palette must cover all 16 semantic roles below. Prompt 1b validates coverage before generating tokens.css.

1
Page background
Warm off-black (dark) or warm off-white (light). Never pure #000 or #FFF.
2
Surface — default
Raised one tint from page background.
3
Surface — raised
Raised two tints from page background.
4
Surface — offset
For contrast blocks, alternate sections.
5
Surface — dynamic
Warmer tone for feature blocks (e.g., metrics block background).
6
Text — primary
Warm off-white (dark mode) / warm off-black (light mode).
7
Text — muted
70% of primary text — secondary copy, card bodies.
8
Text — faint
40% of primary text — metadata, captions, eyebrows.
9
Text — inverse
Text on accent CTA buttons (dark-on-teal or white-on-dark-teal).
10
Accent — primary
The SINGLE accent hue (Harbor rule: one hue, 4 states only).
11
Accent — hover
Primary lifted ~5% lightness for hover state.
12
Accent — active
Primary darkened ~5% lightness for pressed state.
13
Accent — subtle
Primary at 12% opacity — background tint for selected states, nav active.
14
Border — divider
Hairline separator (~6% opacity of text color).
15
Border — outline
Component outlines, card borders (~12% opacity of text color).
16
Focus ring
Accent primary at 60% opacity — keyboard focus indicator.

Rejected palettes (Prompt 1b will fail)

Multi-hue ramps (more than ONE accent hue)
Pure #000 / #FFF surfaces or text colors
Indigo / purple in any role (Harbor anti-pattern — clichéd "AI startup" signal)
More than 4 accent states (Harbor rule: primary / hover / active / subtle only)
Selection

When to pick Harbor

Pick Harbor if the product is a marketing site, editorial site, brand-forward portfolio, services firm, agency site, content publication, blog, or documentation-marketing hybrid. Reader spends 1–3 minutes per session, primarily reading.

Sample adjectives that route to Harbor

Archetype-selection aid (Finding 5 demoted-adjective routing). If three or more of your brand adjectives are in this list, Harbor is likely your archetype.

warm editorial restrained considered craft-forward atmospheric curated serif quiet spacious brand-led marketing portfolio agency-grade magazine-rhythm

Real-world examples

Calibrate against these public sites that exemplify Harbor's principles.

  • Stripe.com homepage — single accent, generous whitespace, serif italic display emphasis
  • Linear.app marketing site — restrained palette, atmospheric case studies, sparse iconography
  • Vercel.com marketing — single hue, asymmetric splits, no gradient circle clichés
  • Apple.com (selected product pages) — editorial rhythm, product-as-hero without UI noise
  • Mailchimp brand site — warm, illustrated restraint, curated voice
  • Notion.so marketing — quiet palette, generous type scale, atmospheric section breaks
  • Pentagram, IDEO, Instrument — most agency portfolio sites follow this pattern naturally

Do NOT pick Harbor if…

  • Users spend hours per session doing tasks → Sentinel (compact density, multi-ramp, data UI)
  • Touch targets, gestures, bottom nav matter → Current (44px enforced, mobile-first)
  • Information density beats whitespace → Lattice (max density, data-explorer)
  • Body text IS the hero (docs, long-form prose) → Meridian (utilitarian headings, body-as-hero)
  • You need 9-step color granularity for status / severity / charts → Sentinel
  • Mobile-first consumer app with bold saturation → Current
Failure modes

What breaks first when Harbor is misapplied

When teams force Harbor onto the wrong use case, predictable failures appear in this order. Use these as early-warning signs that the archetype is wrong — not as bugs to fix.

1
Data crowding (Harbor on a dashboard / data product)
Symptom: Tables collapse because Harbor's generous spacing leaves no room for rows. 5 rows visible where 50 are needed. Root cause: Harbor's spacing scale starts at 4px and goes to 160px — product UI needs density, not atmosphere.
Switch to Sentinel (compact density) or Lattice (max density).
2
Status-color exhaustion (Harbor on a workflow product)
Symptom: You start adding a "review" badge color, then "approval pending", then "blocked", then "draft" — running out of accent variants because Harbor allows ONE accent. Root cause: Single-hue rule is incompatible with multi-status workflows.
Switch to Sentinel (multi-ramp + semantic color system).
3
Touch-target failures (Harbor on mobile-first)
Symptom: Buttons feel imprecise on phones, taps miss, users complain. Harbor doesn't enforce 44px minimums. Root cause: Harbor is desktop-editorial first; mobile is a responsive afterthought, not the primary target.
Switch to Current (44px touch targets enforced throughout).
4
Editorial display crowding (Harbor on long-form docs)
Symptom: Serif italic display headlines feel showy mid-article; readers complain the page "feels marketing-y". Root cause: Harbor's display-italic emphasis is for hero moments, not body content. Using it throughout a docs page breaks the signal.
Switch to Meridian (utilitarian headings, body-as-hero, 1.7 line-height).
5
The "feels samey" failure (Harbor everywhere on a multi-page site)
Symptom: Every page reads atmospheric and slow even when the content is utilitarian (FAQ, status page, search results). Root cause: Harbor's atmospheric rhythm is great for hero surfaces, fatiguing for utility pages.
Use Harbor for hero / brand surfaces only; layer Sentinel or Meridian for utility surfaces per Hybrid Products in Governance.