github.com/injoon5/mono

Mono

A minimal CSS framework. One file, no build step, no dependencies. Drop it in and start building.

Installation

Grab framework.css from the repo and drop it into your project.

curl -O https://raw.githubusercontent.com/injoon5/mono/main/framework.css

Then link it in your HTML:

<link rel="stylesheet" href="framework.css" />
git clone https://github.com/injoon5/mono.git
cd mono

Open index.html in a browser to browse the component reference locally.

framework.css

The full framework — tokens, reset, components. This is all you need.

index.html

This page. Full component reference with live examples.

llms.txt

Machine-readable docs. Paste into any LLM to get accurate Mono output.

README.md

Project overview and design notes.

<!DOCTYPE html>
<html lang="en" data-theme="light">
<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <link rel="stylesheet" href="framework.css" />
</head>
<body>

  <nav class="nav">
    <div class="nav-inner">
      <a href="/" class="nav-brand">My site</a>
      <div class="nav-spacer"></div>
      <a href="/about" class="btn btn-ghost btn-sm">About</a>
      <a href="/contact" class="btn btn-primary btn-sm">Contact</a>
    </div>
  </nav>

  <main>
    <section class="section">
      <div class="container container-md">
        <h1>Hello, world</h1>
        <p>Start building.</p>
        <div class="grid grid-3 mt-8">
          <div class="card card-hover">
            <div class="card-body">
              <p class="card-title">Card</p>
              <p class="card-description">A hoverable card.</p>
            </div>
          </div>
        </div>
      </div>
    </section>
  </main>

</body>
</html>

Dark mode works automatically from prefers-color-scheme. Override manually with data-theme on <html>:

<html data-theme="dark">   <!-- force dark -->
<html data-theme="light">  <!-- force light -->

Toggle with JS:

const root = document.documentElement
const isDark = root.getAttribute('data-theme') === 'dark'
  || (!root.getAttribute('data-theme') && matchMedia('(prefers-color-scheme: dark)').matches)
root.setAttribute('data-theme', isDark ? 'light' : 'dark')

Typography

4xl / 50px

The quick brown fox

3xl / 38px

The quick brown fox jumps

2xl / 29px

The quick brown fox jumps over

xl / 23px

The quick brown fox jumps over the lazy

lg / 19px
The quick brown fox jumps over the lazy dog
base / 16px

The quick brown fox jumps over the lazy dog. Pack my box with five dozen liquor jugs.

sm / 14px

The quick brown fox jumps over the lazy dog. Pack my box with five dozen liquor jugs.

xs / 12px

The quick brown fox jumps over the lazy dog. Pack my box with five dozen liquor jugs.

Pretendard is a contemporary typeface designed for both Latin and Korean scripts. Its clean geometry and generous spacing make it exceptional for interface work — readable at small sizes, beautiful at display scale. Letter-spacing is tightened for headings and relaxed for body copy.

Inline elements: strong weight, italic emphasis, inline code, ⌘K, a hyperlink, and struck through text.

Good design is as little design as possible. Less, but better — because it concentrates on the essential aspects.
50
100
200
300
400
500
600
700
800
900
950

Buttons

Primary
Secondary
Ghost
Disabled
xs
sm
default
lg
With icon
Loading
Group
Default Solid Live v1.0.0 Beta

Forms

We'll send a confirmation link.
Username can only contain letters, numbers, and underscores.
Max 500 characters.

Cards

Component Library

A complete set of UI primitives for building modern interfaces.

Monthly usage Pro

API calls this month

24,819

↑ 12% from last month

Start building today

Ship faster with a solid foundation for your next project.

Incident resolved Closed

API latency issue in eu-west-1 has been fully resolved. P99 response times are back to baseline.

Accordion

What is Mono built with?
Mono is pure CSS — no JavaScript dependencies, no build steps. It uses modern CSS features like custom properties, oklch color space, and native HTML elements (details, dialog) for interactive components. The only external asset is the Pretendard font served from jsDelivr.
Does it support dark mode?
Yes. Dark mode is supported via both prefers-color-scheme media query for system-level preference, and a data-theme="dark" attribute on the root element for manual toggling. The color palette inverts cleanly across all components.
How should I extend it?
Override or extend the custom properties in :root to change design tokens globally. Add new component classes following the existing naming patterns. Mono is intentionally low-specificity so project styles can override without !important.
Is it accessible?
Focus states are visible and consistent. Form controls use native HTML elements. The accordion uses <details>/<summary> which are keyboard-navigable and announced by screen readers natively. The modal uses <dialog> which manages focus trapping automatically.

Dropdown

Modal

Loading states

Thinking

Grid

col 1
col 2
col 3
col 1
col 2
col 3
col 4
auto
auto
auto

Table

Project Status Updated Deployments
design-system-v2 Active 2 hours ago 142
landing-page Paused 3 days ago 58
api-gateway Active 1 week ago 310
auth-service Error Just now 89

Misc

Your session will expire in 5 minutes. Renew now.
Deployment successful. Your changes are live.
Build failed — 3 type errors in src/components/Modal.tsx.
OR
AC JS KM avatar
AC JS KM +4
/* Using the framework */
import 'framework.css'

const App = () => (
  <div className="container">
    <nav className="nav">...</nav>
    <main className="section">
      <div className="grid grid-3">
        <div className="card">...</div>
      </div>
    </main>
  </div>
)

Using with LLMs

Mono ships a llms.txt — a machine-readable reference of every token, class, and component pattern. Paste it into any LLM context window and it can generate correct, idiomatic Mono code without hallucinating class names or missing wrappers.

View llms.txt
System prompt / project context
Paste the full contents of llms.txt into your system prompt or project instructions. Then ask the model to build UI using Mono. It will use the correct class names, token variables, and JS patterns without being told twice.
You are building UI with the Mono CSS framework.
[paste llms.txt contents here]

Build me a settings page with a profile form and notification toggles.
Claude Projects / custom instructions
Upload llms.txt as a project file in Claude Projects or paste it into custom instructions. Every conversation in that project will then generate Mono-compatible HTML without needing to re-explain the framework.
Cursor / Copilot / other code editors
Add llms.txt to your workspace root. Cursor, Copilot, and similar tools will index it alongside your codebase and use it to autocomplete components. No additional configuration needed.

All design tokens

Every CSS custom property with exact values — colors, spacing, type scale, radius, shadows, transitions.

HTML patterns

Correct markup for every component, including required wrappers, modifiers, and element hierarchy.

JS snippets

Working toggle code for accordion, dropdown, modal, and dark mode — copied verbatim from the demo.