Unigrid

CSS Framework

Getting Started

Unigrid.css is a CSS framework inspired by Massimo Vignelli's Unigrid system for the National Park Service. Built with SCSS, native CSS Grid, vertical rhythm, and BEM naming.

Installation

npm

npm install unigrid.css

Import in your SCSS:

@use "unigrid.css/src/scss/unigrid" as *;

CDN

Add to your HTML <head>:

<link rel="stylesheet"
  href="https://cdn.jsdelivr.net/npm/unigrid.css/dist/unigrid.min.css">

JavaScript (optional)

For dropdowns and tabs:

<script src="https://cdn.jsdelivr.net/npm/unigrid.css/dist/unigrid.min.js"></script>

Quick Start

Basic page structure

Site Name

Main content
Sidebar
<header class="ug-header">
  <div class="ug-header__title">
    <h1>Site Name</h1>
  </div>
</header>

<div class="ug-container">
  <div class="ug-grid">
    <div class="ug-col--8">Main content</div>
    <div class="ug-col--4">Sidebar</div>
  </div>
</div>

SCSS Customization

Override variables before importing:

// Custom overrides
$ug-black: #222;
$ug-font-family: "Frutiger", sans-serif;
$ug-base-leading: 1.5;
$ug-border-radius: 0.25rem;

@use "unigrid.css/src/scss/unigrid" as *;

Key Variables

VariableDefaultDescription
$ug-columns12Grid column count
$ug-font-familyInter, sans-serifBase font
$ug-black#1a1a1aPrimary dark color
$ug-red#c1272dAccent color
$ug-base-leading1.625Mobile line-height multiplier
$ug-base-leading-desktop1.7Desktop line-height multiplier
$ug-prose-max-width35remOptimal reading measure
$ug-container-max-width1280pxContainer max-width
$ug-border-radius0Border radius for buttons, inputs, cards, modals, dropdowns
$ug-border-radius-sminheritsSmaller border radius
$ug-border-radius-lginheritsLarger border radius
$ug-border-radius-pill9999pxFully rounded (pill shape)

Border Radius

By default, all components have sharp corners (0 border-radius), true to the Unigrid style. Override $ug-border-radius for rounded UI:

// Sharp corners (default)
$ug-border-radius: 0;

// Subtle rounding
$ug-border-radius: 0.25rem;

// More rounded
$ug-border-radius: 0.5rem;

@use "unigrid.css/src/scss/unigrid" as *;

Applied to: buttons, inputs, select, textarea, cards, modal dialog, dropdown menu, tabs pills, infobox, prose inline code.


Vertical Rhythm

All spacing is based on a single CSS custom property --ug-leading that adapts at the desktop breakpoint:

BreakpointBase fontLeading--ug-leading
Mobile (default)16px× 1.62526px
Desktop (≥ 35rem)18px× 1.731px

Every margin, padding, line-height, and height uses calc(var(--ug-leading) * N) to stay on the baseline grid.