Setting --color-primary on :root cascades to every derived token — hover tints, subtle fills, glow rings — and repaints every component that references them. Pick a color below to see the cascade live.
Presets
--color-primary
#3B82F6
Derived tokens — all computed from the single primary value
--color-primary
--color-primary-hover
--color-primary-subtle
--color-primary-glow
Components — each one reads the same four tokens
Buttons
Badges
PrimaryOutlineSubtle
Chips
Input focus ring
Stat
4,821active users+12%
Progress
68%
Chart
Pre-built moods — full page palettes (background/surface/border/text/grid), not just one token
The custom picker above only sets --color-primary. A mood file goes further — it reskins the whole page for both dark and light theme, with every token's lightness kept identical to the base so contrast ratios stay validated. Sage, Mist, and Clay use a deliberately lighter background instead.
Foundation
Typography
Headings
h1
The quick brown fox
h2
The quick brown fox
h3
The quick brown fox
h4
The quick brown fox
h5
The quick brown fox
h6
The quick brown fox
Body & utility text
Large body — The quick brown fox jumps over the lazy dog.
Base body — The quick brown fox jumps over the lazy dog.
Small body — The quick brown fox jumps over the lazy dog.
XS / meta — The quick brown fox jumps over the lazy dog.
Monospace
Monospace body — REF: AX-2.4.1 · BUILD: STABLEMono label — STEP 1 OF 4 · ALL SYSTEMS OPERATIONALinline code snippet
SpicyGluten-freeSeasonalAvailableVegetarianLimited run
Components
Breadcrumb
Components
Tooltip
CSS-only — shows via :hover/:focus-within
Helpful tooltip textFocus me (tab to it)Any focusable element works as the trigger
Components
Alerts
Information
This is an informational alert with a title and supporting text.
Success
Your changes have been saved successfully.
Warning
Your subscription expires in 3 days. Renew to avoid interruption.
Error
Something went wrong. Please try again or contact support.
Components
Accordion
Native <details>/<summary> — no JS for open/close
What is The Point?
A CSS design system with a blueprint aesthetic — works in React, Rails, Electron, and plain HTML.
Does it need a build step?
No — plain CSS files you link directly. The optional Stimulus controllers are the only JS, and only for components that genuinely need it.
Why do these three share a name attribute?
A shared name="" on sibling <details> elements makes only one open at a time — native browser behavior, not CSS.
Components
Tabs
CSS-only via radio inputs + :has() — no JS
Overview panel content — switching tabs never touches JS.
Activity panel content.
Settings panel content.
Components
Cards
Basic card
Card title
Supporting description or metadata
Card body content goes here. This can be any content — text, data, components.
Hoverable cards
Hover me
Lifts and glows on hover.
Hover me
Border becomes primary color.
Hover me
Shadow deepens on hover.
Media card — image flush to top edge
Media card title
Image flush to top edge, no padding above.
4:3 ratio
Landscape photo format.
1:1 square
Product or avatar format.
Feature cards
Monitoring
Real-time metrics across all your services with zero configuration.
Security
End-to-end encryption and role-based access controls built in.
Performance
Predictive scaling keeps your systems fast before the spike hits.
Components
Media
Aspect-ratio-locked wrapper. The container defines the frame shape; the inner element fills it via object-fit: cover.
Landscape ratios
bp-media-21-9
bp-media-16-9
bp-media-4-3
Square and portrait ratios
bp-media-1-1
bp-media-3-4
bp-media-2-3
Components
Forms
Helper text below the input.
This field is required.
Components
Input Compose
Grow-in-place textarea + send button. Used for chat inputs, comment boxes, compose-and-send patterns. The action button starts disabled until the user types.
Components
Modal
Static preview (overlay not rendered — structure shown)
Confirm action
This will permanently delete the selected item. This action cannot be undone.
Live modal — backdrop-click, Escape, focus-on-open, focus-restore-on-close
Modal title
Modal body content goes here. This is the bp-overlay + bp-modal pattern — the overlay starts with bp-hidden, and the Stimulus/vanilla-JS controller only ever toggles that class.
Requires JS — slides in from any edge, backdrop-click, Escape, scroll lock, full focus trap
Each button opens its own drawer instance — a drawer's side is fixed at markup time, never swapped at runtime on a shared instance (swapping leaves a stale leftover transform behind and animates on the wrong axis).
Drawer — right
Try tabbing through this drawer — focus is trapped inside it while open.
Drawer — left
Try tabbing through this drawer — focus is trapped inside it while open.
Drawer — top
Try tabbing through this drawer — focus is trapped inside it while open.
Drawer — bottom
Try tabbing through this drawer — focus is trapped inside it while open.
Components
Navigation
Components
Hero
Eyebrow label
Hero title with a gradient word
Supporting subtitle text that describes the product or service in a sentence or two.
Numbered process steps with large background numerals. Use data-step to set the numeral content.
Step 01
Connect your source
Paste your API key or authorize the integration. Takes under a minute.
Step 02
Configure alerts
Set thresholds, notification channels, and escalation windows.
Step 03
Ship with confidence
Your first alert fires in real time. Every deploy after this one is covered.
4-column variant
Step 01
Install
One line in your Gemfile or package.json.
Step 02
Import
Two link tags in your layout. That's the full setup.
Step 03
Brand
Set --color-primary. Everything derives from that one value.
Step 04
Ship
Pages look intentional from the first commit.
Components
Fact List
Label-left / value-right rows with hairline separators. For credentials, specs, film credits, structured key-value data that shouldn't feel like a table.
Default
Founded
2009, Oslo
Staff
12 people
Specialty
Heritage restoration, adaptive reuse
Certifications
ISO 9001, BREEAM Outstanding
Compact (bp-fact-list-sm)
Version
2.4.1
License
MIT
Dependencies
None
Wide label (bp-fact-list-wide-label)
Primary material
Tamba kurodaizu black soybeans
Water source
Fushimi underground aquifer
Production method
Ishiusu stone grinding, kinugoshi silk strain
Components
Table
Name
Status
Role
Joined
SW
Sarah Wu
sarah@company.com
Active
Admin
Jan 2024
MR
Marcus Reid
marcus@company.com
Active
Member
Mar 2024
AK
Amara Kone
amara@company.com
Invited
Member
Pending
Sortable & selectable — click a header to sort, select rows to reveal the action bar
Name ▲
Role
Joined ▲
Components
Pagination
Pure styling contract — no JS. Current-page state is app-driven
Components
Avatars
Sizes
SM
MD
LG
XL
Group / stack
SW
MR
AK
+8
Components
Testimonial
"This design system cut our UI build time in half. Every page feels consistent without us having to think about it."
JD
Jamie Dawson
CTO · Beacon
"The blueprint aesthetic is unlike anything else. Our product looks technical and intentional right out of the box."
SR
Sofia Reyes
Designer · Flint
"We dropped it into our Rails app, added five lines of brand CSS, and it looked like we'd hired a designer. Genuinely impressive."
TN
Tom Nguyen
Founder · Drafted
Components
Dividers
Text divider
or continue with
Plain divider
Dotted connector
Components
Skeleton Loading
Grid-unit sizes (snap to 40px blueprint grid)
1u = 40px2u = 80px3u = 120px4u = 160px6u = 240px
bp-skeleton-card — zero layout shift card placeholder
Components
Empty State
No JS — a plain content block
⊘
No results found
Try adjusting your filters, or clear them to see everything.
Components
Progress & Spinner
CSS-only — respects reduced-motion via --motion-scale
Components
Sidebar
Brand
Components
Footer
Layout
Splits, Spread & Section Dark
Asymmetric splits
2fr (40%)
3fr (60%)
1fr (33%)
2fr (67%) — sidebar + content
1fr (25%)
3fr (75%) — narrow label + wide body
Gatefold spread (bp-spread-3) — 28:44:28
Left flank 28% credits / meta
Center 44% narrative axis
Right flank 28% catalog / callouts
bp-section-dark — inverted contrast band
Dark band
Text and card tokens invert automatically
No extra overrides needed — bp-card, buttons, and text all respond to the dark context. Use for contrast between light sections.
Blueprint
Decorative Utilities
bp-bracket — corner bracket decoration
Bracket card
Corners accent with primary color brackets.
Any element
bp-mono-label — coordinate / reference style
REF: AX-2.4.1BUILD: STABLESTEP 1 OF 4ALL SYSTEMS OPERATIONAL
bp-annotation — side-note with left border
This is an annotation. Use it for side notes, technical references, or supporting context that sits alongside main content.
bp-text-gradient — primary gradient text
Gradient heading
Gradient sub-heading
Gradient inline
bp-dashed-connector — dashed horizontal rule
Blueprint
Motion
bp-animate — bounce transitions on a container
Rescopes transition tokens to the bounce curve for all children. Hover the elements below.
Bouncy card
Hover for bounce.
bp-animate-draw — border drawn clockwise on scroll entry
Draws the element border top→right→bottom→left via animation-timeline: view(). Scroll the card into view to see it draw. Works with bp-bracket.
Draw on scroll
Border animates in when element enters the viewport.
Draw + bracket
Both effects combine cleanly.
Draw on scroll
Falls back to page-load animation in older browsers.
data-bp-motion="draw" — page-level draw animation
Add data-bp-motion="draw" to the <html> element alongside data-bp-theme. A primary-colored line sweeps left-to-right across the top of the page, then nav, hero, and sections fade up in sequence — like a draftsman sketching layout before filling it in. Automatically disabled when prefers-reduced-motion is set.
Utilities
Interactive Helpers
bp-hover-lift
Hover me
Lifts on hover.
bp-hover-glow
Hover me
Glows on hover.
Shadow scale
shadow-none
shadow-sm
shadow-md
shadow-lg
shadow-glow
Border radius scale
nonesmmdlgxl2xlfull
Composed Patterns
Components in Context
Real interfaces are compositions, not single components. These patterns show how sidebar, nav, avatars, badges, compose, alerts, and forms work together as a unified shell — each piece responding to the same tokens.
Could the service API also be open source? That's a nice play on the community side.
AI
Yes — and that decision changes the entire community dynamic. The thing that remains exclusively yours is the one thing that can't be self-hosted: other people's data. The collective performance index only exists in the hosted service, because it requires other users.
RE
Write a spec for the signal service. Highly detailed and concise.
In the hills above Miahuatlán, a single family distillery has worked the same hillside for four generations. The agave plants here take twelve years to reach maturity.
Each piña is roasted underground for five days in an earthen pit lined with river stones. The smoke doesn't just flavor — it marks the specific place the plant grew.