CSS Framework
Inspired by Massimo Vignelli
A CSS framework with vertical rhythm, square modules, and BEM naming — inspired by the National Park Service's iconic design system.
npm install unigrid.css
Then import in your SCSS:
@use "unigrid.css/src/scss/unigrid" as *;
Add to your HTML <head>:
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/unigrid.css/dist/unigrid.min.css">
Optional JavaScript (dropdowns, tabs):
<script src="https://cdn.jsdelivr.net/npm/unigrid.css/dist/unigrid.min.js"></script>
Download the latest release from GitHub:
Download from GitHubResponsive CSS Grid with 4 breakpoints. Column spans, row spans, subgrid, and alignment utilities.
A-series (1 panel wide) and B-series (2 panels wide). Based on real NPS specifications with DIN proportions.
Viewport-proportional module system with responsive column reduction: 12 → 8 → 6 → 4 → 3.
All spacing based on a single leading unit via CSS custom property. Adapts at desktop breakpoint.
Consistent Block__Element--Modifier naming. All classes prefixed with ug-.
Full !default variables. Override colors, fonts, breakpoints, and formats before import.
Apply the Unigrid design language — NPS colors, Inter typography,
sharp corners, flat navigation, and the signature section bands —
on top of Bootstrap 5. Drop-in replacement for
bootstrap.css.
@use "unigrid.css/src/scss/bootstrap/unigrid-bootstrap"@use ... with)--ug-leading rhythm.grid / .g-col-*).ug-* components.ug-header, .ug-section, .ug-sidebar-layout, .ug-footerCompiled CSS
<link rel="stylesheet" href="unigrid-bootstrap.css">
SCSS Integration
npm install unigrid.css bootstrap
Then in your SCSS entry point:
@use "unigrid.css/src/scss/bootstrap/unigrid-bootstrap";
Compile with --load-path=node_modules:
sass style.scss out.css --load-path=node_modules
<header class="ug-header">
<div class="ug-header__title">
<h1>Yellowstone</h1>
<p class="ug-header__subtitle">National Park</p>
</div>
</header>
<div class="ug-container">
<div class="ug-grid">
<div class="ug-col--8">
<h2>Welcome</h2>
<p>Content here...</p>
</div>
<div class="ug-col--4">
<div class="ug-infobox">
<p class="ug-infobox__title">Hours</p>
<p>Open year-round</p>
</div>
</div>
</div>
</div>