- Site container: 1120px (centered)
- Reading column: 68ch (apply to paragraphs and long-form blocks)
- Full-bleed sections: allowed, but keep text inside a container
- Desktop page padding: 32px
- Mobile page padding: 16px
- Grid: 12 columns desktop, 4 columns mobile
- Gutter: 24px desktop, 16px mobile
- Alignment: everything aligns to the same left edge
Copy-paste CSS variables (2025 baseline)
:root{
/* Fonts (best-practice stacks) */
--font-sans: Inter, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Apple Color Emoji","Segoe UI Emoji";
--font-serif: "Source Serif 4", Literata, ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;
--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono","Courier New", monospace;
/* Layout */
--container: 1120px;
--measure: 68ch;
/* Page padding */
--pad-mobile: 16px;
--pad-desktop: 32px;
/* Grid gutters */
--gutter-mobile: 16px;
--gutter-desktop: 24px;
/* Spacing (8px rhythm) */
--space-1: 4px;
--space-2: 8px;
--space-3: 12px;
--space-4: 16px;
--space-5: 24px;
--space-6: 32px;
--space-7: 48px;
--space-8: 64px;
/* Radii */
--radius-sm: 10px;
--radius: 12px;
--radius-lg: 16px;
/* Controls */
--control-h-mobile: 52px;
--control-h-desktop: 44px;
--input-h: 48px;
--target: 48px;
/* Type */
--text-base: 16px;
--lh-body: 1.55;
--text-sm: 13px;
--lh-sm: 1.45;
/* Surfaces */
--bg: #F6F7F9;
--surface: #FFFFFF;
/* Text */
--text: #111111;
--text-2: #4B5563;
/* Borders */
--border: #E5E7EB;
/* Brand / actions */
--cta: #0047FF;
--cta-text: #FFFFFF;
/* Semantics */
--success: #16A34A;
--warning: #F59E0B;
--error: #D72638;
--info: #2563EB;
/* Focus ring */
--focus: #0B5FFF;
/* Motion */
--t-fast: 120ms;
--t: 200ms;
--t-slow: 300ms;
}
Button baseline CSS (safe default)
.btn-primary{
min-height: var(--control-h-mobile);
padding: 0 18px;
border-radius: var(--radius);
background: var(--cta);
color: var(--cta-text);
display: inline-flex;
align-items: center;
justify-content: center;
gap: 10px;
font: 700 var(--text-base)/1 var(--font-sans);
letter-spacing: -0.01em;
text-decoration: none;
border: 0;
cursor: pointer;
user-select: none;
transition: transform var(--t-fast) ease, filter var(--t-fast) ease;
}
.btn-primary:hover{ filter: brightness(0.96); }
.btn-primary:active{ transform: scale(0.99); }
.btn-primary:focus-visible{
outline: 3px solid var(--focus);
outline-offset: 3px;
}
.btn-secondary{
min-height: var(--control-h-mobile);
padding: 0 18px;
border-radius: var(--radius);
border: 1px solid var(--border);
background: var(--surface);
color: var(--text);
display: inline-flex;
align-items: center;
justify-content: center;
font: 700 var(--text-base)/1 var(--font-sans);
text-decoration: none;
cursor: pointer;
}
.btn-secondary:hover{ background: rgba(0,0,0,0.03); }
.btn-secondary:focus-visible{
outline: 3px solid var(--focus);
outline-offset: 3px;
}
@media (min-width: 1024px){
.btn-primary, .btn-secondary{ min-height: var(--control-h-desktop); }
}
Layout, Widths, Grid, Margins
This completes the width system. It prevents two CTR killers: cramped UI and wandering alignment.
- Site container: 1120px (centered)
- Reading column: 68ch (apply to paragraphs and long-form blocks)
- Full-bleed sections: allowed, but keep text inside a container
- Desktop page padding: 32px
- Mobile page padding: 16px
- Grid: 12 columns desktop, 4 columns mobile
- Gutter: 24px desktop, 16px mobile
- Alignment: everything aligns to the same left edge