All posts
8 min read

Building a Design System with Tailwind

How I created a cohesive Studio Ghibli-inspired design system using Tailwind CSS custom tokens.

#tailwind#design-system#css

Every great interface starts with a system. Not a component library, a vocabulary. Colors, spacing, typography, motion. When these decisions are made intentionally and documented clearly, design becomes a language rather than a series of one-off choices.

Why Studio Ghibli?

I wanted my portfolio to feel warm, hand-crafted, and alive. Not the cold, dark, neon-soaked aesthetic that dominates developer portfolios. I looked at Miyazaki films and thought: what if a website felt like walking through a Ghibli meadow?

Defining the Palette

I started with five core colors, each chosen for emotional resonance:

ColorHexFeeling
Cream#FFF8E7Warmth, openness, like sunlit paper
Sage#8A9A5BNature, growth, gentle confidence
Forest#314F3DDepth, grounding, quiet strength
Coral#F0A3B0Playfulness, softness, a blush
Amber#F4D03FMagic, warmth, a sprinkle of wonder

The key constraint: never use raw hex in components. Everything goes through Tailwind classes. This forces consistency and makes the system composable.

Typography as Character

I chose three fonts that each tell a story:

  • Zen Maru Gothic for headings, rounded, friendly, storybook energy
  • Nunito for body text, warm, readable, approachable
  • JetBrains Mono for code, clean, technical, a quiet counterpoint

The contrast between the rounded display font and the technical mono font creates that Ghibli-meets-modern tension I was after.

Motion as Atmosphere

CSS animations set the mood. Gentle floating elements, slow drifts, soft fades. Nothing bouncy. Nothing aggressive. The timing rule: 0.4s–1.2s ease-in-out. Like leaves falling, not balls bouncing.

/* The Ghibli easing curve */
--ease-ghibli: cubic-bezier(0.34, 1.56, 0.64, 1);

Reusable Patterns

I extracted patterns into CSS classes and Tailwind utilities:

  • .ghibli-card, frosted glass with subtle borders
  • .ghibli-btn, rounded, warm, inviting
  • .section-container, consistent padding and spacing
  • .ghibli-divider, a gentle separator that breathes

The Result

A design system that doesn’t just look cohesive, it feels cohesive. Every page, every component, every animation carries the same warmth. That’s the goal of a design system: not rigidity, but resonance.

Thanks for reading!

Back to all posts