Typography

The type system and its application through scales, styles, and utility.
Type styles shown are based off of the default attributes in the original template. Fonts and other properties will change from project to project. This page is only meant to show typography in relation to class names.

Type System

System Overview

Typographic systems create a built-in system of clear hierarchies that organize information and guide users through a product or experience. This system is divided into 6 main groups: Display, Headings, Subheadings, Body copy, UI labels, and Other.

Roles

Display

Display text styles are a variation of the heading element and are the largest type styles used inside of the system. They are reserved for large titles and headings at the top of the page or inside prominent sections like CTA banners or other promotional sections.

Display styles come in 3 sizes: Large, Medium, and Small.

Since these are mainly used as the main title of the page, you will more than likely be using the <h1> heading element to designate to search engines that the display style used is the main title of the page.

For display type, if working with more than one typeface, consider using a more expressive or decorative typeface that is better suited for large-scale usage.

Headings

Headings are suited for short, high-emphasis text that is secondary to the display titles. They are used more often than display headings, often being used as section headings or within rich text formatting.

Heading styles come in 6 sizes to go coincide with the section headings in HTML (<h1> to <h6>)

The type of content or design you are working with will determine whether it is best to use a display style versus a heading style.

If working with more than one typeface, headings can also make use of expressive typefaces, provided that appropriate line height and letter spacing is also integrated in maintain readability.

Subheadings

Subheadings, or subheads, are medium-emphasis text elements that are smaller than both the display and heading styles. They are used for text that remains relatively short but is lower in priority compared to a high-emphasis heading.

They are often set in the same typeface as body copy to differentiate between differently levels of emphasis. Use caution when using expressive typefaces for subheadings to avoid issues related to readability.

Subheads come in 6 sizes from XL to XS. Sizes correlate to body copy.

Body Copy

Body styles are used for longer passages of text. They are the default text style in the system and are often used in long-form and short-form contexts.

Use typefaces that are intended for body styles. Typefaces that are readable at smaller sizes can be displayed properly in longer passages and contexts.

Avoid using expressive or decorative fonts for body copy due to legibility concerns.

Body styles come in 6 sizes from XL to XS.

UI Labels

UI styles are utility type styles that are used inside of components such as buttons and dropdown menus.

Labels come in 3 sizes: Large, Medium, and Small. Buttons have their own type style that is unique to them and correlate to the 3 different sizes of buttons.

Other or Miscellaneous styles

Other styles are styles that don't fit into the other 5 categories. This includes unique type styles like blockquotes, overlines, captions, and form helper text.

Responsive Typography

Root Font Scaling

We use rem units for all sizes — not just typography. The rem unit is based off of the root font size.

screenshot of webflow designer showing root font size
Image from Client-First by finsweet.

Everything within this system is designed relative to the HTML font size. This gives us globally-managed control over all sizes in our project.

When the root font size is modified, everything that is tied to the root font size will grow or shrink relative to the root. We can modify the root font size relative to the width of the current breakpoint to make all sizes without our project respond to the size of the viewport.

screenshot of client-first fluid responsive generator by finsweet
Screenshot of the fluid responsive generator by finsweet

We use custom CSS generated by the Client-first 2.0 fluid responsive generator. The code is inserted into the Responsive Typography embed that is inside of the Styles / Global component. This CSS code modifies the HTML font-size, uses @media queries tied to major breakpoints and uses the calc function to calculate the desired root font size (in rems) plus the breakpoint (in viewport widths (vw)) to generate a unique root font size that scales with the breakpoint. This allows us full responsive control over sizes from the largest of large screens to the smallest of mobile devices.

Type Sizes

Class
Name
Properties
Example
text-size-xxs
Text Size XXS
font-size: 0.75rem; /* 12px - Desktop */
font-size: 0.675rem; /* 10px - Mobile */
text-size-xxs
text-size-xs
Text Size XS
font-size: 0.875rem; /* 14px - Desktop */
font-size: 0.75rem; /* 12px - Mobile */
text-size-xs
text-size-s
Text Size S
font-size: 1rem; /* 16px - Desktop */
font-size: 0.875rem; /* 14px - Mobile*/
text-size-s
text-size-m
Text Size M
font-size: 1.125rem; /* 18px - Desktop */
font-size: 1rem; /* 16px - Mobile */
text-size-m
text-size-l
Text Size L
font-size: 1.25em; /* 20px - Desktop */
font-size: 1.125rem; /* 18px - Mobile */
text-size-l
text-size-xl
Text Size XL
font-size: 1.5rem; /* 24px - Desktop */
font-size: 1.25rem; /* 20px - Mobile */
text-size-xl
text-size-xxl
Text Size XXL
font-size: 1.75rem; /* 28px - Desktop */
font-size: 1.375rem; /* 22px - Mobile */
text-size-xxl
text-size-3xl
Text Size 3XL
font-size: 2rem; /* 32px - Desktop */
font-size: 1.5rem; /* 24px - Mobile */
text-size-3xl
text-size-4xl
Text Size 4XL
font-size: 2.25rem; /* 36px - Desktop */
font-size: 1.75rem; /* 28px - Mobile */
text-size-4xl
text-size-5xl
Text Size 5XL
font-size: 2.75rem; /* 44px - Desktop */
font-size: 2rem; /* 32px - Mobile */
text-size-5xl
text-size-6xl
Text Size 6XL
font-size: 3rem; /* 48px - Desktop */
font-size: 2.25rem; /* 36px - Mobile */
text-size-6xl
text-size-7xl
Text Size 7XL
font-size: 3.5rem; /* 56px - Desktop */
font-size: 2.75rem; /* 44px - Mobile */
text-size-7xl
text-size-8xl
Text Size 8XL
font-size: 4rem; /* 64px - Desktop */
font-size: 3rem; /* 48px - Mobile */
text-size-8xl
text-size-9xl
Text Size 9XL
font-size: 4.5rem; /* 72px - Desktop */
font-size: 3.5rem; /* 56px - Mobile */
text-size-9xl
text-size-10xl
Text Size 10XL
font-size: 5.25rem; /* 84px - Desktop */
font-size: 4rem; /* 64px - Mobile */
text-size-10xl

Type Styles

Class
Name
Properties
Example
display-xl
Display XLarge
font-family: 'Inter';
font-size: 5.25rem; /* 84px - Desktop */
font-size: 4rem; /* 64px - Mobile */
font-weight: 600; /* Semibold */
line-height: 1.25
letter-spacing: -0.025rem; /* -2.5%*/
display-xl
display-l
Display Large
font-family: 'Inter';
font-size: 4.5rem; /* 72px - Desktop */
font-size: 3.5rem; /* 56px - Mobile */
font-weight: 600; /* Semibold */
line-height: 1.25
letter-spacing: -0.025rem; /* -2.5%*/
display-l
display-m
Display Medium
font-family: 'Inter';
font-size: 4rem; /* 64px - Desktop */
font-size: 3rem /* 48px - Mobile */
font-weight: 600; /* Semibold */
line-height: 1.25
letter-spacing: -0.025rem; /* -2.5%*/
display-m
display-s
Display Small
font-family: 'Inter';
font-size: 3.5rem; /* 56px - Desktop */
font-size: 2.75rem /* 44px - Mobile */
font-weight: 600; /* Semibold */
line-height: 1.25
letter-spacing: -0.025rem; /* -2.5%*/
display-s
heading-xl
Heading XL (<h1>)
font-family: 'Inter';
font-size: 2.75rem; /* 44px - Desktop */
font-size: 2.25rem /* 36px - Mobile */
font-weight: 700; /* Bold */
line-height: 1.25
heading-xl
heading-l
Heading L (<h2>)
font-family: 'Inter';
font-size: 2.25rem; /* 36px - Desktop */
font-size: 2rem /* 32px - Mobile */
font-weight: 700; /* Bold */
line-height: 1.25
heading-l
heading-m
Heading M (<h3>)
font-family: 'Inter';
font-size: 1.75rem; /* 28px */
font-weight: 700; /* Bold */
line-height: 1.25
heading-m
heading-s
Heading S (<h4>)
font-family: 'Inter';
font-size: 1.5rem; /* 24px */
font-weight: 700; /* Bold */
line-height: 1.25
heading-s
heading-xs
Heading XS (<h5>)
font-family: 'Inter';
font-size: 1.125rem; /* 18px */
font-weight: 700; /* Bold */
line-height: 1.5
heading-xs
heading-xxs
Heading XXS (<h6>)
font-family: 'Inter';
font-size: 1rem; /* 16px */
font-weight: 700; /* Bold */
line-height: 1.5
heading-xxs
subhead-xl
Subhead XL
font-family: 'Inter';
font-size: 1.5rem; /* 24px */
font-weight: 600; /* Semibold */
line-height: 1.5
subhead-xl
subhead-l
Subhead L
font-family: 'Inter';
font-size: 1.25rem; /* 20px */
font-weight: 600; /* Semibold */
line-height: 1.5
subhead-l
subhead-m
Subhead M
font-family: 'Inter';
font-size: 1.125rem; /* 18px */
font-weight: 600; /* Semibold */
line-height: 1.5
subhead-m
subhead-s
Subhead S
font-family: 'Inter';
font-size: 1rem; /* 16px */
font-weight: 600; /* Semibold */
line-height: 1.5
subhead-s
subhead-xs
Subhead XS
font-family: 'Inter';
font-size: 0.875rem; /* 14px */
font-weight: 600; /* Semibold */
line-height: 1.5
subhead-xs
subhead-xxs
Subhead XXS
font-family: 'Inter';
font-size: 0.75rem; /* 12px */
font-weight: 600; /* Semibold */
line-height: 1.5-
subhead-xxs
body-xl
Body XL
font-family: 'Inter';
font-size: 1.5rem; /* 24px */
font-weight: 400; /* Regular */
line-height: 1.5
body-xl
body-l
Body L
font-family: 'Inter';
font-size: 1.25rem; /* 20px */
font-weight: 400; /* Regular */
line-height: 1.5
body-l
body-m
Body M
font-family: 'Inter';
font-size: 1.125rem; /* 18px */
font-weight: 400; /* Regular */
line-height: 1.5
body-m
body-s
Body S
font-family: 'Inter';
font-size: 1rem; /* 16px */
font-weight: 400; /* Regular */
line-height: 1.5
body-s
body-xs
Body XS
font-family: 'Inter';
font-size: 0.875rem; /* 14px */
font-weight: 400; /* Regular */
line-height: 1.5
body-xs
body-xxs
Body XXS
font-family: 'Inter';
font-size: 0.75rem; /* 12px */
font-weight: 400; /* Regular */
line-height: 1.5-
body-xxs
label-l
Label L
font-family: 'Inter';
font-size: 1rem; /* 16px */
font-weight: 500; /* Medium */
line-height: 1.25
label-l
label-m
Label M
font-family: 'Inter';
font-size: 0.875rem; /* 14px */
font-weight: 500; /* Medium */
line-height: 1.25
label-m
label-s
Label S
font-family: 'Inter';
font-size: 0.75rem; /* 12px */
font-weight: 500; /* Medium */
line-height: 1.25
label-s
overline
Overline
font-family: 'Inter';
font-size: 0.875rem; /* 14px */
font-weight: 600; /* Semibold */
line-height: 1.5
Overline
caption
Caption
font-family: 'Inter';
font-size: 0.75rem; /* 12px */
font-weight: 400; /* Regular */
line-height: 1.5
color: 'Neutral 80'
Caption
blockquote
Blockquote
font-family: 'Inter';
font-size: 1.5rem; /* 24px */
font-weight: 400; /* Regular */
line-height: 1.5
Blockquote
helper-text
Helper Text
font-family: 'Inter';
font-size: 0.75rem; /* 12px */
font-weight: 400; /* Regular */
line-height: 1.25
color: 'Neutral 80'
Helper Text

Type Utilities

Font Family

Utilities for controlling the font family of an element.
Class
Name
Properties
Example
text-family-sans
Sans font family
font-family: 'Inter';
Sans

Font Style

Utilities for controlling the style of text.
Class
Name
Properties
Example
text-style-italic
Italic font style
font-style: italic;
Italic
text-style-none
Not italic font style (reset)
font-style: normal;
Not Italic

Font Weight

Utilities for controlling the font weight of an element.
Class
Name
Properties
Example
text-weight-light
Light (300) font weight
font-weight: 300;
Light
text-weight-regular
Regular (400) font weight
font-weight: 400;
Regular
text-weight-medium
Medium (500) font weight
font-weight: 500;
Medium
text-weight-semibold
Semibold (600) font weight
font-weight: 600;
Semibold
text-weight-bold
Bold (700) font weight
font-weight: 700;
Bold

Line height

Utilities for controlling the leading (line height) of an element.
Class
Name
Properties
Example
text-leading-none
No line height
line-height: 1;
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Assumenda, quia temporibus eveniet a libero incidunt suscipit laborum, rerum accusantium modi quidem, ipsam illum quis sed voluptatum quae eum fugit earum.
text-leading-tight
Tight line height
line-height: 1.25;
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Assumenda, quia temporibus eveniet a libero incidunt suscipit laborum, rerum accusantium modi quidem, ipsam illum quis sed voluptatum quae eum fugit earum.
text-leading-snug
Snug line height
line-height: 1.375;
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Assumenda, quia temporibus eveniet a libero incidunt suscipit laborum, rerum accusantium modi quidem, ipsam illum quis sed voluptatum quae eum fugit earum.
text-leading-normal
Normal line height
line-height: 1.5;
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Assumenda, quia temporibus eveniet a libero incidunt suscipit laborum, rerum accusantium modi quidem, ipsam illum quis sed voluptatum quae eum fugit earum.
text-leading-relaxed
Relaxed line height
line-height: 1.75;
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Assumenda, quia temporibus eveniet a libero incidunt suscipit laborum, rerum accusantium modi quidem, ipsam illum quis sed voluptatum quae eum fugit earum.
text-leading-loose
Loose line height
line-height: 2;
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Assumenda, quia temporibus eveniet a libero incidunt suscipit laborum, rerum accusantium modi quidem, ipsam illum quis sed voluptatum quae eum fugit earum.

Letter spacing

Utilities for controlling the tracking (letter spacing) of an element.
Class
Name
Properties
Example
text-tracking-tighter
Tighter letter spacing
letter-spacing: -0.05rem;
Lorem ipsum dolor sit amet, consectetur adipisicing elit.
text-tracking-tight
Tight letter spacing
letter-spacing: -0.025rem;
Lorem ipsum dolor sit amet, consectetur adipisicing elit.
text-tracking-normal
Normal letter spacing
letter-spacing: 0rem;
Lorem ipsum dolor sit amet, consectetur adipisicing elit.
text-tracking-wide
Wide letter spacing
letter-spacing: 0.025rem;
Lorem ipsum dolor sit amet, consectetur adipisicing elit.
text-tracking-wider
Wider letter spacing
letter-spacing: 0.05rem;
Lorem ipsum dolor sit amet, consectetur adipisicing elit.
text-tracking-widest
Widest letter spacing
letter-spacing: 0.1rem;
Lorem ipsum dolor sit amet, consectetur adipisicing elit.

Text align

Utilities for controlling the alignment of text.
Class
Name
Properties
Example
text-align-left
Left text align
text-align: left;
Left
text-align-center
Center text align
text-align: center;
Center
text-align-right
Right text align
text-align: right;
Right
text-align-justify
Justify text align
text-align: justify;
Justify

Text decoration

Utilities for controlling the decoration of text.
Class
Name
Properties
Example
text-decoration-underline
Underline text decoration
text-decoration: underline;
Underline
text-decoration-overline
Overline text decoration
text-decoration: underline;
Overline
text-decoration-strike
Strikethrough text decoration
text-decoration: line-through;
Strike
text-decoration-none
No text decoration
text-decoration: none;
No decoration

Text transform

Utilities for controlling the transformation of text.
Class
Name
Properties
Example
text-transform-uppercase
Uppercase text transform
text-transform: ;
Uppercase
text-transform-lowercase
Lowercase text transform
text-transform: ;
lowercase
text-transform-capitalize
Capitalize text transform
text-transform: ;
Capitalize
text-transform-none
No text transform
text-transform: ;
No transform