Swiss Design (International Typographic Style)
Swiss Design sub-style for the design-it skill: strict 12-column grids, flush-left Helvetica, and one saturated accent color.
Maintainer of this project? Claim this page to edit the listing.
13.5.0Add to Favorites
Install
Add it to your toolbox
Run in your project directory:
curl -fsSL https://spark.entire.vc/get/ag-swiss-design | bash Overview
Swiss Design (International Typographic Style)
A design-it sub-style for Swiss/International Typographic Style: strict grid layouts, Helvetica typography, and one saturated accent color, implemented for web CSS and four app frameworks. Use when a UI needs the disciplined, grid-driven Swiss Design look - never centered text, never serif fonts, never drop shadows.
What it does
Swiss Design (International Typographic Style) is a sub-style reference within the design-it skill family, built around three core principles: mathematical grids (everything aligns to a strict underlying grid, with asymmetry preferred over centering), sans-serif typography (Helvetica as the canonical choice, set flush-left with ragged-right alignment), and objective, documentary-style photography rather than stylized illustration. It is explicitly a child reference of design-it and is not meant to be triggered directly - it applies when a parent design-it request matches this aesthetic.
When to use - and when NOT to
Use this sub-style when a UI needs the disciplined, grid-driven look of mid-century Swiss typographic design: huge contrast between massive headers (e.g. 6rem/60px) and small body text, a near-monochrome palette, and deliberate negative space as a structural element. The style's own rules are explicit about what to avoid: never center-align text, never use serif fonts, and never use drop shadows - all of which would break the flat, grid-disciplined look this style is built around.
Inputs and outputs
The web implementation uses CSS Grid with a 12-column grid-template-columns, where a header spans most columns while deliberately leaving space empty (grid-column: 1 / 11) and body content is indented into a narrower asymmetrical column (grid-column: 4 / 9), styled in Helvetica Neue/Inter/Roboto with a single accent color, #E2001A ("Classic Swiss Red"). The four app implementations reproduce the same asymmetry with platform-native layout primitives: SwiftUI uses alignment: .leading everywhere with a Spacer().frame(width:) to push content off the left margin (never .center); Flutter mandates CrossAxisAlignment.start and pairs a fixed-width SizedBox with an Expanded widget in a Row; React Native contrasts HelveticaNeue-CondensedBlack headers against HelveticaNeue-Regular body text inside a flexDirection: 'row' layout; Jetpack Compose combines a Row, a fixed Spacer, and a Column with Modifier.weight(1f), using plain black Dividers as harsh horizontal structural rules.
.swiss-header {
grid-column: 1 / 11;
font-size: 6vw;
font-weight: 700;
letter-spacing: -0.04em;
}
.swiss-accent { color: #E2001A; }
Integrations
As a design-it sub-style, it's invoked through the parent skill's style-matching rather than called on its own, and is meant to be applied consistently across web CSS and the four listed app frameworks (SwiftUI, Flutter, React Native, Jetpack Compose) for a single project.
Who it's for
Designers and developers building an interface that wants the disciplined, high-contrast look of Swiss/International Typographic Style - strict grids, Helvetica, one saturated accent color, and asymmetrical negative space - across web and native mobile platforms with matching implementation patterns for each.
Source README
Swiss Design (International Typographic Style)
"Form follows function. The grid is absolute. Typography is the primary visual element."
When to Use
Use this sub-style when the user's request matches the aesthetic described above. This is a child reference of the design-it skill and is not meant to be triggered directly.
Core Principles
- Mathematical Grids: Everything aligns to a strict underlying grid. Asymmetry is preferred over centered text.
- Sans-Serif Typography: Helvetica is the king, but any clean, neutral sans-serif works. Flush left, ragged right text alignment.
- Objective Photography: If images are used, they should be objective, documentary-style photos, not stylized illustrations.
Visual DNA
- Colors: Very limited. Usually just black, white, and ONE highly saturated accent color (often primary red, blue, or yellow). The Industrial Chic palette works perfectly.
- Typography:
Helvetica Neue,Inter, orRoboto. Huge contrast in font sizes (e.g., massive 6rem headers paired with 1rem body text). - Layout: Do NOT center text. Ever.
Web Implementation
- Use CSS Grid extensively. Let columns dictate the layout.
- CSS Example:
body {
background-color: #f4f4f4;
color: #111;
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
line-height: 1.4;
}
.swiss-grid {
display: grid;
grid-template-columns: repeat(12, 1fr);
gap: 20px;
padding: 40px;
}
.swiss-header {
grid-column: 1 / 11; /* spans across multiple columns, leaving right side empty */
font-size: 6vw;
font-weight: 700;
text-transform: lowercase; /* Optional, but common in brutalist/swiss */
margin-bottom: 2rem;
line-height: 0.9;
letter-spacing: -0.04em;
}
.swiss-content {
grid-column: 4 / 9; /* Indented alignment */
font-size: 1.25rem;
text-align: left; /* Flush left, ragged right */
}
.swiss-accent {
color: #E2001A; /* Classic Swiss Red */
}
App Implementation
SwiftUI
struct SwissDesignView: View {
var body: some View {
ScrollView {
VStack(alignment: .leading, spacing: 0) {
// Header Block
VStack(alignment: .leading, spacing: 8) {
Text("the grid")
.font(.custom("Helvetica Neue", size: 60))
.fontWeight(.heavy)
.tracking(-2) // Tight letter spacing
Text("is absolute.")
.font(.custom("Helvetica Neue", size: 60))
.fontWeight(.heavy)
.tracking(-2)
.foregroundColor(Color(hex: "E2001A")) // Swiss Red
}
.padding(.horizontal, 24)
.padding(.top, 60)
.padding(.bottom, 40)
Divider().background(Color.black)
// Asymmetrical Content Block
HStack(alignment: .top, spacing: 20) {
// Empty left column (negative space is structural)
Spacer().frame(width: 40)
VStack(alignment: .leading, spacing: 16) {
Text("Form follows function.")
.font(.custom("Helvetica Neue", size: 24))
.fontWeight(.bold)
Text("Typography is the primary visual element. Everything aligns to a strict underlying grid. Asymmetry is preferred over centered text.")
.font(.custom("Helvetica Neue", size: 16))
.lineSpacing(6)
}
.padding(.vertical, 40)
.padding(.trailing, 24)
}
Divider().background(Color.black)
}
.frame(maxWidth: .infinity, alignment: .leading)
}
.background(Color(white: 0.96))
.foregroundColor(.black)
}
}
- Strict
alignment: .leadingeverywhere. Never use.center. - Use
Spacer().frame(width: X)inHStacks to intentionally push content off the left margin, creating the classic Swiss indented asymmetrical grid.
Flutter
class SwissDesignScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: const Color(0xFFF4F4F4),
body: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const SizedBox(height: 80),
// Header
Padding(
padding: const EdgeInsets.symmetric(horizontal: 24.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: const [
Text('the grid', style: TextStyle(fontFamily: 'Helvetica', fontSize: 60, fontWeight: FontWeight.w900, height: 0.9, letterSpacing: -2)),
Text('is absolute.', style: TextStyle(fontFamily: 'Helvetica', fontSize: 60, fontWeight: FontWeight.w900, height: 0.9, letterSpacing: -2, color: Color(0xFFE2001A))),
],
),
),
const SizedBox(height: 40),
const Divider(color: Colors.black, thickness: 1, height: 1),
// Asymmetrical Content
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
// Structural empty column
const SizedBox(width: 64),
// Content column
Expanded(
child: Padding(
padding: const EdgeInsets.only(top: 40.0, bottom: 40.0, right: 24.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: const [
Text('Form follows function.', style: TextStyle(fontFamily: 'Helvetica', fontSize: 24, fontWeight: FontWeight.bold)),
SizedBox(height: 16),
Text('Typography is the primary visual element. Everything aligns to a strict underlying grid.', style: TextStyle(fontFamily: 'Helvetica', fontSize: 16, height: 1.4)),
],
),
),
),
],
),
const Divider(color: Colors.black, thickness: 1, height: 1),
],
),
),
);
}
}
CrossAxisAlignment.startis mandatory on all Columns.- Use a
Rowwith a fixedSizedBoxwidth on the left and anExpandedwidget on the right to enforce the asymmetrical grid column.
React Native
const SwissDesignScreen = () => {
return (
<ScrollView style={{ flex: 1, backgroundColor: '#F4F4F4' }}>
{/* Header */}
<View style={{ paddingHorizontal: 24, paddingTop: 80, paddingBottom: 40 }}>
<Text style={{ fontFamily: 'HelveticaNeue-CondensedBlack', fontSize: 60, lineHeight: 60, letterSpacing: -2, color: '#111' }}>
the grid
</Text>
<Text style={{ fontFamily: 'HelveticaNeue-CondensedBlack', fontSize: 60, lineHeight: 60, letterSpacing: -2, color: '#E2001A' }}>
is absolute.
</Text>
</View>
<View style={{ height: 1, backgroundColor: '#111' }} />
{/* Asymmetrical Layout */}
<View style={{ flexDirection: 'row', paddingVertical: 40 }}>
{/* Empty left column */}
<View style={{ width: 64 }} />
{/* Content */}
<View style={{ flex: 1, paddingRight: 24 }}>
<Text style={{ fontFamily: 'HelveticaNeue-Bold', fontSize: 24, color: '#111', marginBottom: 16 }}>
Form follows function.
</Text>
<Text style={{ fontFamily: 'HelveticaNeue-Regular', fontSize: 16, lineHeight: 24, color: '#111' }}>
Typography is the primary visual element. Everything aligns to a strict underlying grid.
</Text>
</View>
</View>
<View style={{ height: 1, backgroundColor: '#111' }} />
</ScrollView>
);
};
- Link the Helvetica Neue font family. The contrast between
HelveticaNeue-CondensedBlackfor headers andHelveticaNeue-Regularfor body copy defines this style. - Use
flexDirection: 'row'to build the strict column structure.
Jetpack Compose
@Composable
fun SwissDesignScreen() {
Column(
modifier = Modifier.fillMaxSize().background(Color(0xFFF4F4F4)).verticalScroll(rememberScrollState())
) {
Spacer(Modifier.height(80.dp))
// Header
Column(modifier = Modifier.padding(horizontal = 24.dp, vertical = 40.dp)) {
Text(
text = "the grid",
fontFamily = FontFamily.SansSerif, // Replace with Helvetica
fontSize = 60.sp,
fontWeight = FontWeight.Black,
letterSpacing = (-2).sp,
lineHeight = 60.sp,
color = Color.Black
)
Text(
text = "is absolute.",
fontFamily = FontFamily.SansSerif,
fontSize = 60.sp,
fontWeight = FontWeight.Black,
letterSpacing = (-2).sp,
lineHeight = 60.sp,
color = Color(0xFFE2001A)
)
}
Divider(color = Color.Black, thickness = 1.dp)
// Asymmetrical Grid Row
Row(modifier = Modifier.fillMaxWidth().padding(vertical = 40.dp)) {
// Empty grid column
Spacer(modifier = Modifier.width(64.dp))
// Content
Column(modifier = Modifier.weight(1f).padding(right = 24.dp)) {
Text(
text = "Form follows function.",
fontSize = 24.sp,
fontWeight = FontWeight.Bold,
color = Color.Black
)
Spacer(Modifier.height(16.dp))
Text(
text = "Typography is the primary visual element. Everything aligns to a strict underlying grid.",
fontSize = 16.sp,
color = Color.Black
)
}
}
Divider(color = Color.Black, thickness = 1.dp)
}
}
- Use
Divider(color = Color.Black, thickness = 1.dp)to create the harsh horizontal structural rules. - Combine
Row, a fixedSpacerwidth, and aColumnwithModifier.weight(1f)to enforce the asymmetrical design.
Do's and Don'ts
- DO: Use negative space as a structural element. Empty columns are just as important as filled ones.
- DON'T: Center align text. Do not use serif fonts. Do not use drop shadows.
Limitations
- This is a styling reference and does not replace environment-specific validation, accessibility testing, or expert review.
- Ensure appropriate contrast ratios and responsive behaviors are verified separately.
FAQ
Common questions
Discussion
Questions & comments · 0
Sign In Sign in to leave a comment.