Live preview
Styled by its token map
acme.example

Swiss / International Typographic Style

Minimalism

The 1950s Swiss school translated to the web: strict grid, flush-left ragged-right type, one sans-serif family, huge scale contrast, generous whitespace, and a single red accent. Content is the interface.

Palette
bg
#ffffff
text
#111111
text-muted
#6b6b6b
accent
#e30613
border
#111111

About this style

The International Typographic Style emerged from Swiss design schools in the 1950s — Josef Müller-Brockmann, Armin Hofmann, Emil Ruder — and its grid systems became the intellectual foundation of modern layout, including CSS Grid itself. On the web it reads as supreme confidence: no decoration, just typography, structure, and space. It suits portfolios, cultural institutions, architecture studios, and any brand whose content is strong enough to stand naked. The trap is blandness; the style only works when scale contrast is pushed aggressively and the grid is treated as a compositional instrument rather than a constraint.

Inherently high contrast (#111 on #fff passes AAA)
Red #e30613 on white passes AA for large text only — don't use it for small body text
Huge headline sizes need clamp() so they don't overflow small viewports
---
name: swiss-international
description: Apply the Swiss / International Typographic Style visual design system when building or restyling websites and UI. Use whenever the user asks to build, theme, restyle, or "make it look like" Swiss / International Typographic Style, mentions international style, swiss design, helvetica style, or describes strict modular grid, massive type scale contrast, flush-left alignment — even if they don't name the style explicitly. Do NOT use for non-visual tasks or when another named design system is requested.
license: MIT
---

# Swiss / International Typographic Style Design System

The 1950s Swiss school translated to the web: strict grid, flush-left ragged-right type, one sans-serif family, huge scale contrast, generous whitespace, and a single red accent. Content is the interface.

Apply this system holistically: colors, type, spacing, radius, borders, shadows, and motion together produce the look. Token values follow the widely documented recipe for this style. When in doubt, match the reference sites listed at the end.

## When to use

- Building a new page or component that should read as Swiss / International Typographic Style.
- Restyling existing UI to this aesthetic.
- The user names the style, an alias (international style, swiss design, helvetica style, swiss typographic), or describes its traits: strict modular grid; massive type scale contrast; flush-left alignment; single red accent; no decoration.

## Design tokens

### Color palette

- Pure white ground: `#ffffff` (--color-bg)
- Near-black ink: `#111111` (--color-text)
- Captions and metadata: `#6b6b6b` (--color-text-muted)
- Swiss red, used surgically: `#e30613` (--color-accent)
- Rules and dividers, same as ink: `#111111` (--color-border)

### Typography

- Display / headings: Inter (fallback: Helvetica Neue, Helvetica, Arial, sans-serif) (ideal: Neue Haas Grotesk, premium — use Inter as the free substitute)
- Body: Inter (fallback: Helvetica Neue, Helvetica, Arial, sans-serif) (ideal: Neue Haas Grotesk, premium — use Inter as the free substitute)
- Type scale: 1.5 ratio, base 16px — computed steps: 16px / 24px / 36px / 54px / 81px / 122px (body / h5 / h4 / h3 / h2 / h1; scale further for display sizes)
- Headings: weight 700, line-height 1, letter-spacing -0.03em
- Body: line-height 1.5, letter-spacing 0

### Spacing, radius, border

- Spacing scale (px): 8, 16, 24, 32, 48, 64, 96, 128 — Whitespace is the primary design material; sections separated by at least 96px, and asymmetric empty space is deliberate.
- Border radius: none 0px — No rounded corners anywhere.
- Border treatment: 1px solid #111111 — Horizontal rules only, used to structure content like a printed page. No boxes around things.

### Shadows

- none: `none` — The style is perfectly flat; hierarchy comes from scale and position

### Layout

- Max content width: 1440px
- 12-column modular grid, occasionally made visible as hairlines
- Asymmetric layouts: content weighted to one side with deliberate emptiness opposite
- Type aligns to the grid; images crop to grid modules
- Flush-left, ragged-right; never centered or justified body text

### Motion

- Easing: cubic-bezier(0.4, 0, 0.2, 1); durations 120ms / 200ms / 300ms
- Minimal: opacity and small translate only
- No decorative animation; motion only communicates state

## CSS variables (drop-in)

```css
:root {
  --color-bg: #ffffff;
  --color-text: #111111;
  --color-text-muted: #6b6b6b;
  --color-accent: #e30613;
  --color-border: #111111;
  --radius-none: 0px;
  --border-default: 1px solid #111111;
  --font-display: Inter, "Helvetica Neue", Helvetica, Arial, sans-serif;
  --font-body: Inter, "Helvetica Neue", Helvetica, Arial, sans-serif;
  --text-base: 16px;
  --leading-heading: 1;
  --leading-body: 1.5;
  --tracking-heading: -0.03em;
  --tracking-body: 0;
  --ease: cubic-bezier(0.4, 0, 0.2, 1);
  --duration-fast: 120ms;
  --duration-base: 200ms;
  --duration-slow: 300ms;
}
```

Google Fonts: `<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700&display=swap" rel="stylesheet">`

## Component recipes

- **Nav:** Thin top bar, wordmark left, links right in 14px medium; 1px rule below; no background fill
- **Hero:** Headline at 96–160px filling most of the viewport width, small supporting paragraph in one grid column, no imagery required
- **Card:** No card chrome — a grid cell with a rule above, bold title, and body copy; hover underlines the title
- **Button (primary):** Black fill, white text, square corners, generous horizontal padding; red fill for the single most important action
- **Button (secondary):** 1px black border, black text, square corners
- **Form fields:** Bottom-rule-only inputs (1px black underline), floating small-caps label; focus thickens rule to 2px

Where this spec is silent (footers, responsive breakpoints, empty states), derive the treatment from the tokens above and the Do/Don't rules — never fall back to generic defaults. Every interactive element needs a visible keyboard focus state consistent with the style (use the accent color or the border treatment, not the browser default).

## Signature element

Oversized flush-left headlines set tight against a visible modular grid, with a single Swiss-red accent used sparingly — one element per viewport at most. Spend boldness here; keep everything else quiet.

## Do

- Build on a real grid and let it show — alignment is the aesthetic
- Push scale contrast further than feels safe: 16px body against 120px headlines
- Use red exactly once per view
- Let whitespace do the separating; remove boxes and borders around content

## Don't

- No drop shadows, gradients, or rounded corners
- Never center body text or headlines
- No more than one typeface family
- Don't fill empty space — asymmetric emptiness is intentional

## Accessibility notes

- Inherently high contrast (#111 on #fff passes AAA)
- Red #e30613 on white passes AA for large text only — don't use it for small body text
- Huge headline sizes need clamp() so they don't overflow small viewports

## Reference sites

- Swissted: https://www.swissted.com
- Grilli Type: https://www.grilli-type.com
- Museum für Gestaltung: https://museum-gestaltung.ch

For the exhaustive machine-readable spec, see references/tokens.md and tokens.json in this skill folder.

Install this skill

Claude Code — download the zip, then unzip into your skills folder
unzip swiss-international.zip -d ~/.claude/skills/
shadcn/ui — apply as a theme to any shadcn project
npx shadcn add https://claude-design-skills.convoke.software/r/swiss-international.json
claude.ai — upload the zip as a custom skill
Settings → Capabilities → Skills → Upload skill → swiss-international.zip
Download .zip