npm install @drop-in/graffiti
Then drop in to your project.
import @drop-in/graffiti
or
This is a paragraph of body text. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Apply fluid sizing to any element with
.fs-* classes
.fs-xxxl - Triple Extra Large
.fs-xxl - Double Extra Large
.fs-xl - Extra Large
.fs-l - Large
.fs-m - Medium
.fs-s - Small
.fs-base - Base Size
.fs-xs - Extra Small
Apply heading styles to non-heading elements with
.h1 through .h6
This is a p with .h1 class
This is a p with .h2 class
This is a p with .h3 class
This is a p with .h4 class
This is a p with .h5 class
This is a p with .h6 class
Auto-fill responsive card grid
Sidebar + main content (250px default)
50/50 two column layout
Stays side-by-side on mobile
Three equal columns
Max-width for optimal readability (default: start-aligned)
Learning to drop in on a skateboard is an exciting and challenging milestone for any skateboarder. Before attempting to drop in, ensure that you have a solid foundation of basic skateboarding skills.
Centered readable content with max-width constraint.
End-aligned readable content with max-width constraint.
Regular readable content...
Full bleed element breaks out of container!
More readable content...
Sidebar
Content
Other sidebar
Vertical flexbox stack with gap
Minimal grid utility (like .flex)
Horizontal wrapping list with gap (perfect for tags, pills, breadcrumbs)
Horizontal scroll with CSS scroll-snap (no JavaScript required)
Vertical scroll with CSS scroll-snap (customizable height with --reel-height)
Display flex with 20px gap
Flex with space-between and top alignment (used in header)
Max-width 900px container
This content is constrained to 900px max-width for optimal readability. Unlike .layout-readable, this doesn't include padding.
Remove list styling (margin, padding, list-style)
Circular element (default --size: 40px)
Add vertical margin (--vs-m)
Hide element visually but keep accessible to screen readers
There is hidden text after this colon: This text is hidden visually but available to screen readers!
You can't see it, but it's there for accessibility.
Makes typography responsive to container width instead of viewport
Text scales with viewport width
Text scales with this box's width
Maintain specific aspect ratios for containers (useful for images, videos, cards)
Custom: Use aspect-ratio: 2 / 1; or
aspect-ratio: var(--aspect-ratio);
Built-in styles for error, success, and warning states
A big part of Graffiti is the flexible CSS variable system that can be used in your CSS to create consistent and adaptable designs.
Consistent line height tokens for better typography control
Modern layered shadows - subtle in light mode, deeper and more intense in dark mode
OKLCH color system with automatic 1-9 scales generated from base colors (scale 5) using relative color syntax