Design System
The visual language for mdit — built on the "Paper Engine" identity. Light-first, typographically confident, deliberately restrained.
Colors
A constrained palette built on the ink & paper principle. Opacity-based borders adapt to any surface. Accent blue is reserved for interactive elements.
Neutrals
#FFFFFF white #FAFAFA zinc-50 #F4F4F5 zinc-100 #E4E4E7 zinc-200 #D4D4D8 zinc-300 #A1A1AA zinc-400 #71717A zinc-500 #3F3F46 zinc-700 #27272A zinc-800 #18181B zinc-850 #111113 zinc-900 #09090B zinc-950 Accent — Blue
#EFF6FF blue-50 #DBEAFE blue-100 #BFDBFE blue-200 #60A5FA blue-400 #3B82F6 blue-500 #2563EB blue-600 #1D4ED8 blue-700 #1E40AF blue-800 Feedback
#EF4444 red-500 #FEF2F2 red-50 #F59E0B amber-500 #FFFBEB amber-50 #22C55E green-500 #F0FDF4 green-50 Semantic Tokens (Live)
--color-bg / --color-text --color-bg-surface --color-bg-muted --gradient-accent --color-bg-inverse --color-accent-subtle Typography
Geist Sans for UI, Geist Mono for brand and code. Type does the work that chrome usually does — oversized headlines, tight tracking, deliberate weight contrast.
Type Scale
xs
Markdown, powered up.
sm
Markdown, powered up.
base
Markdown, powered up.
lg
Markdown, powered up.
xl
Markdown, powered up.
2xl
Markdown, powered up.
3xl
Markdown, powered up.
4xl
Markdown, powered up.
5xl
Markdown, powered up.
6xl
Markdown, powered up.
Heading Hierarchy
Hero Markdown, powered up.
H1 Page heading
H2 Section heading
H3 Subsection heading
H4 Small heading
Body & Code
Lead paragraph — mdit turns plain markdown into rich, interactive content with a single line of syntax.
Body text — Write one line of markdown syntax and it renders into charts, cards, diagrams, videos. No build step, no framework, just URLs that render. Works anywhere markdown works.
Secondary text — Used for supporting information, descriptions, and metadata.
Inline code: mdit.run/chart?type=bar


 Font Families
abcdefghijklmnopqrstuvwxyz
0123456789
abcdefghijklmnopqrstuvwxyz
0123456789
Spacing
4px base unit. Generous whitespace — content breathes. When in doubt, go larger.
Scale
--space-1 4px --space-2 8px --space-3 12px --space-4 16px --space-6 24px --space-8 32px --space-12 48px --space-16 64px --space-24 96px --space-32 128px Border Radius
sm 4px md 6px lg 8px xl 12px 2xl 16px full 9999px Elevation & Surfaces
Paper-inspired depth with layered shadows. Multi-layer shadows create softer, more natural elevation. Accent glows highlight interactive elements.
Surfaces
--color-bg --color-bg-inset --color-bg-surface --color-bg-elevated --color-bg-muted --color-bg-inverse Shadow Scale
--shadow-xs Interactive rest --shadow-sm Cards, panels --shadow-md Dropdowns, popovers --shadow-lg Modals, dialogs --shadow-xl Floating elements Accent Glow
--shadow-accent-sm Primary buttons at rest --shadow-accent-md Buttons on hover, focus glow --shadow-accent-lg Hero CTAs, spotlight Accent Glow (Dark Mode)
Luminous glow rings — most vivid in dark mode.
--glow-accent-xs Micro glow for inputs --glow-accent-sm Small glow for buttons --glow-accent-md Medium glow for hover --glow-accent-lg Large glow for hero CTAs Inset Shadows (Dark Mode)
Carved/recessed areas — code blocks, input wells.
--shadow-inset-sm Light inset for inputs --shadow-inset Deep inset for code blocks Accent-Tinted Surface
--color-bg-accent-tint Selected / active state Gradient Borders
Shimmer Border
Gradient border via mask-composite technique. Used for elevated, premium card styles.
Borders
--color-border-subtle Barely-there dividers --color-border Default --color-border-strong Strong --color-border-accent Accent (focus) Components
Core UI patterns built from design tokens. Enhanced with gradient accents, layered shadows, and glass effects inspired by shadcn/ui.
Buttons
Cards
Default Card
Surface background with layered shadow. The standard container for grouped content.
Interactive Card
Hover to see the lift effect. Shadow deepens and card rises with smooth easing.
Inset Card
Muted background, no shadow. Used for nested or subordinate content areas.
Elevated Card
Premium shimmer border with deeper shadow. Used for feature highlights and pricing.
Inputs
Badges
Code Block
const widget = await mdit.render('chart', {
type: 'bar',
data: [10, 25, 15, 30],
// One line in. Rich visual out.
}); Toasts
Widget Output Card
Skeleton Loading
Motion
Quick, purposeful, restrained. Every animation communicates a state change.
All motion respects prefers-reduced-motion.
Timing
--duration-fast 100ms --duration-normal 200ms --duration-moderate 300ms --duration-slow 500ms --duration-slower 600ms Easing Curves
--ease-default Smooth deceleration --ease-in Accelerating exit --ease-out Decelerating enter --ease-bounce Overshoot settle --ease-spring Subtle spring New Animations
glow-pulse Accent shadow breathing float Gentle vertical hover shimmer Skeleton loading sweep Logo Animation
600ms reveal: letter m fades in (200ms),
down arrow draws (0-300ms), up arrow draws with bounce (300-600ms).
Iconography
The m↓↑ Transform Glyph is the brand mark.
Custom-drawn SVG arrows — never Unicode. UI icons use Lucide (24px, 1.5px stroke).
Logo Color Modes
Light (primary) Dark Mono Light Mono Dark Logo Sizing
40px — Minimum 80px — Nav 160px — Standard 320px — Hero Favicon
16px 32px 64px UI Icon Style
Lucide Icons — 24px grid, 1.5px stroke, round caps and joins.