Skip to main content

Typography

Typography is fundamental to the Happy Sasquatch brand identity. Our type system emphasizes clarity, hierarchy, and readability while maintaining a modern, approachable feel.

Font Families​

Mona Sans (Primary Font)​

Mona Sans is our primary typeface, used throughout the documentation site for both body text and headings. It's a variable font supporting weights from 200 to 900.

font-family: 'Mona Sans', system-ui, -apple-system, sans-serif;

Characteristics:

  • Modern, geometric sans-serif
  • Excellent readability at all sizes
  • Variable weight support (200-900)
  • Both regular and italic styles available

CSS Variables:

--ifm-font-family-base: 'Mona Sans', system-ui, -apple-system, sans-serif;
--ifm-heading-font-family: 'Mona Sans', system-ui, -apple-system, sans-serif;

Uxum (Heading Font - Main Website)​

The main Happy Sasquatch website uses Uxum for headings at weight 800. This font may be added to the documentation site if stronger heading differentiation is desired.

Note: Currently, the docs site uses Mona Sans for both body and headings. Consider adding Uxum if you need to match the main website's heading style.

Type Scale​

Our type scale uses responsive clamp() values to ensure optimal readability across all viewport sizes. Text scales smoothly between minimum and maximum values.

Heading Scale​

LevelCSS VariableMin SizeMax SizeUsage
H1--h12.7648rem4.2634remPage titles
H2--h22.304rem3.1984remMajor sections
H3--h31.92rem2.3994remSubsections
H4--h41.6rem1.8remMinor headings
H5--h51.3rem1.3503remSmall headings
H6--h61.0130rem1.2remSmallest headings

CSS Definitions:

--h1: clamp(2.7648rem, calc(1.489729092vw + 2.2284975269rem), 4.2634674666rem);
--h2: clamp(2.304rem, calc(0.8890658052vw + 1.9839363101rem), 3.1984002rem);
--h3: clamp(1.92rem, calc(0.4765407555vw + 1.748445328rem), 2.3994rem);
--h4: clamp(1.6rem, calc(0.1988071571vw + 1.5284294235rem), 1.8rem);
--h5: clamp(1.3rem, calc(0.0500373602vw + 1.2819865503rem), 1.3503375844rem);
--h6: clamp(1.2rem, calc(-0.1858782904vw + 1.2669161845rem), 1.0130064399rem);

Body Text Scale​

SizeCSS VariableMin SizeMax SizeUsage
XXL--text-xxl2.1082rem2.7648remLead paragraphs
XL--text-xl1.8691rem2.304remLarge text
L--text-l1.6552rem1.92remEmphasized text
M--text-m1.4642rem1.6remStandard body
S--text-s1.288rem1.3333remSmall text
XS--text-xs1.1111rem1.2remCaptions, footnotes

CSS Definitions:

--text-xxl: clamp(2.2813125rem, calc(0.4806038767vw + 2.1082951044rem), 2.7648rem);
--text-xl: clamp(1.98375rem, calc(0.3183399602vw + 1.8691476143rem), 2.304rem);
--text-l: clamp(1.725rem, calc(0.1938369781vw + 1.6552186879rem), 1.92rem);
--text-m: clamp(1.5rem, calc(0.0994035785vw + 1.4642147117rem), 1.6rem);
--text-s: clamp(1.3rem, calc(0.0331345262vw + 1.2880715706rem), 1.3333333333rem);
--text-xs: clamp(1.2rem, calc(-0.0883587365vw + 1.2318091451rem), 1.1111111111rem);

Line Height Guidelines​

Proper line height ensures optimal readability. Follow these guidelines:

ElementRecommended Line HeightNotes
Headingscalc(4px + 2ex) (~1.3)Tighter for visual impact
Body textcalc(6px + 2ex) (~1.4-1.5)Comfortable reading
Long-form content1.6-1.7Enhanced readability
UI elements1.2-1.4Compact spacing

Font Weight Guidelines​

WeightValueUsage
Light300Decorative, large display text
Regular400Body text, general content
Medium500Subtle emphasis
Semibold600Subheadings, navigation
Bold700Headings, strong emphasis
Extrabold800Display headings (Uxum style)

Code Font​

For code blocks and inline code, use the system monospace stack:

--ifm-code-font-size: 95%;
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;

Typography Best Practices​

Hierarchy​

  1. One H1 per page - Use for the main page title only
  2. Logical nesting - Don't skip heading levels (H1 → H2 → H3)
  3. Consistent styling - Use the defined type scale, don't create custom sizes

Readability​

  1. Line length - Aim for 50-75 characters per line
  2. Paragraph spacing - Use adequate space between paragraphs
  3. Contrast - Ensure sufficient color contrast (see Color System)

Emphasis​

MethodUsageExample
BoldImportant terms, key conceptsImportant: This matters
ItalicBook titles, new termsThe component lifecycle
CodeTechnical terms, file namesUse the config.js file

Loading Fonts​

Mona Sans is configured as a variable font with the following @font-face declarations:

@font-face {
font-family: 'Mona Sans';
src: url('/fonts/MonaSans-VariableFont_wght.woff2') format('woff2');
font-weight: 200 900;
font-style: normal;
font-display: swap;
}

@font-face {
font-family: 'Mona Sans';
src: url('/fonts/MonaSans-VariableFont_wght-italic.woff2') format('woff2');
font-weight: 200 900;
font-style: italic;
font-display: swap;
}

Required Font Files:

  • /static/fonts/MonaSans-VariableFont_wght.woff2
  • /static/fonts/MonaSans-VariableFont_wght-italic.woff2

CSS Usage Examples​

/* Page title */
.page-title {
font-size: var(--h1);
font-weight: 700;
line-height: calc(4px + 2ex);
}

/* Section heading */
.section-heading {
font-size: var(--h2);
font-weight: 600;
}

/* Body text */
.body-text {
font-size: var(--text-m);
line-height: 1.6;
}

/* Lead paragraph */
.lead {
font-size: var(--text-xl);
font-weight: 400;
}

/* Caption text */
.caption {
font-size: var(--text-xs);
color: var(--neutral-semi-dark);
}