Mono Clean
mono-cleanBlack, white, one signal — and a lot of air.
A Swiss-inspired monochrome system for studios and portfolios: pure white and near-black, hairline rules, a strict grid, large tightly-tracked headlines, tiny mono labels and generous whitespace. One orange signal color is used sparingly (a dot, an underline, a hover). Motion is quick and precise. Nothing decorative that isn’t typographic.
- Fonts
- Instrument Sans · displayHanken Grotesk · bodyRed Hat Mono · mono
- Demo product
- Frame — The website builder for design studios — publish portfolios and case studies that look exactly like your work.
- Palette
Use Mono Clean in your project
Installing any Mono Clean module brings its tokens. Then follow the one-time setup.
Setup guideSections 32
Hero4 variants
Hero Browser
Split hero: copy on the left, a large monochrome browser frame on the right showing a mock studio portfolio (nav, giant name, image grid with mono captions) and a signal-dot “Published” badge.
Hero Giant
Type-led hero: a mono label, an enormous tightly-tracked headline across the full width, then a 12-col row with copy + ink button on the left and mono key facts on the right, over a full-bleed gray image frame with caption.
Hero Grid
Visible-grid hero: hairline 12-column guides behind the content, headline + copy + ink CTA in the left columns, and a ruled index list of featured templates on the right whose rows invert on hover.
Hero Statement
Quiet manifesto hero: a single large statement set in the display face with generous line height and an orange signal dot after a key word, bottom-anchored mono footnotes and a scroll cue; nearly full-height.
Features4 variants
Features Index
Features as a numbered index: a label + headline in the left columns, and a two-column ruled list on the right where each item is “01 — Title” with a short description.
Features Numbered
Three large numbered steps: giant outlined-looking numerals in muted ink above a hairline, step title and text; columns on desktop, stacked on mobile.
Features Showcase
Work showcase as the feature: an asymmetric grid (fixed row heights; wide, tall, square and full-width spans) of neutral gray image frames with mono captions (studio — project, template used); captions underline on hover.
Features Specs
Technical spec sheet: grouped key/value definition lists in a 4-column grid, each group under a full-ink rule with a mono heading — reads like a product data sheet.
Pricing4 variants
Pricing Columns
Three plan columns separated by hairlines (no cards): mono plan name, huge price, note, ruled feature list and a button; the featured plan has an ink button and a signal dot.
Pricing One
Single-price poster: a gigantic price set in the display face across the left, and on the right a short pitch, a two-column “included” list with en-dashes and an ink CTA; separated by a full-ink rule.
Pricing Table
Plain typographic comparison table: ink header rule, mono column heads, hairline rows, em-dash for absent features, and the featured column marked with a signal dot.
Pricing Toggle
Pricing as a ruled list: a text toggle “Monthly / Yearly (−20%)” with an underline on the active option, then one row per plan — name, blurb, price, arrow link — rows invert on hover.
Testimonials4 variants
Testimonials Grid
Hairline grid of short quotes (gap-px on a border-colored background) — 3 columns desktop, each cell with the quote and mono attribution; no cards, no shadows.
Testimonials List
Testimonials as an editorial ruled list: each row pairs a mono index + name/studio/city on the left with the quote on the right in a larger size; rows separated by hairlines.
Testimonials Marquee
Slow horizontal ticker of short quotes in large display type, separated by signal dots, between two ink rules; pauses on hover, static and wrapped with reduced motion. Pure CSS.
Testimonials Quote
One oversized pull quote set in the display face with a hanging opening quote mark, mono attribution under a short ink rule; lots of whitespace.
FAQ4 variants
Faq Inline
Ultra-compact FAQ: short questions and one-line answers flowing as a 3-column grid of mono question labels over large answers — scannable in seconds.
Faq List
Numbered accordion FAQ in a ruled list: mono index + question, a +/− glyph that swaps, answer indented under the question; left column holds the label and title.
Faq Split
Always-open FAQ as a two-column definition list (question left in medium weight, answer right in muted text) on hairline rows, followed by a mono contact line.
Faq Tabs
FAQ grouped by topic with text tabs (Radix Tabs) underlined in ink when active, and each topic’s answers as a ruled definition list.
CTA4 variants
Cta Contact
Studio-style contact CTA: mono label, headline, the email address set huge as a link, and a row of contact channels (studio, press, careers) in mono under a hairline.
Cta Email
Underline-input signup: large headline, then an email field drawn as a single bottom rule with an inline “Get started →” button; confirmation replaces the form.
Cta Giant
Full-width CTA as a giant link: the whole headline is the link, an arrow slides in on hover and an ink underline wipes across; a mono note sits below.
Cta Split
Two-door CTA: the section is split into two equal halves (white | ink) with a mono label and a large title each; hovering a half inverts it and nudges the arrow.
UI components 24
Card4 variants
Profile Card
Studio/person profile card in the Read.cv spirit: square gray portrait with initials, name, role and city in mono, availability dot in signal color, short bio and a list of links with ↗.
Project Card
Portfolio project card: neutral image frame that darkens slightly on hover with a “View case ↗” overlay, then a mono meta row (index, client, year) and the title with discipline tags.
Stat Card
Analytics stat: mono label, large display value, change in mono, and a row of thin vertical bars (last bar in ink, others gray) — no chart chrome.
Template Card
Template tile: a wireframe preview drawn with hairlines (nav, giant title, image grid) in a bordered frame, then name, author, category and usage count, with a “Use template” button revealed on hover/focus.
Input4 variants
Checkbox Group
Settings checkboxes as ruled rows: square ink check boxes (native inputs), label and muted description; the whole row is clickable.
Input
Underline field: mono uppercase label, a borderless input on a single bottom hairline that turns ink (2px) on focus, optional prefix, hint or red error.
Search Input
Search field with live results: hairline-bordered input with icon and ⌘K hint; matches appear in a ruled list below with the query highlighted and a mono kind label; empty state included.
Select Field
Native select styled as an underline field with a mono label and a custom chevron — reliable on every device and screen reader.
Modal4 variants
Command Dialog
Command palette (Radix Dialog + listbox): a square panel near the top with a large borderless search, grouped results under mono headings, arrow-key navigation with an inverted active row and shortcut hints.
Drawer
Right side panel (Radix Dialog) sliding in over a dimmed page: mono top bar with label and “Close”, large title, scrollable body with ruled rows and a sticky footer.
Lightbox
Full-screen image viewer (Radix Dialog) on ink (stays dark in dark mode): the image frame centered, mono “03 / 04” counter and caption, Prev/Next text buttons and arrow-key navigation, thumbnails strip.
Modal
Square dialog (Radix): a mono label + text “Close” in the top bar, a full-ink rule, a large title, body and right-aligned actions; opens with a quick fade and 8px rise.
Badge4 variants
Badge
Square mono tag in four variants: hairline outline, ink solid, subtle gray and signal orange (for “New” only).
Index Counter
Editorial index counter “03 / 12” in mono with zero padding and an optional hairline progress bar — for galleries, slides and case-study chapters.
Kbd
Keyboard shortcut hint: square hairline key caps in mono, joined, with an optional muted action label — e.g. “⌘ K Search”.
Status Dot
Minimal status indicator: a 6px dot (filled, hollow or pulsing signal for “building”) followed by a mono uppercase label.
Table4 variants
Changelog Table
Release log laid out as a table: mono version + ISO date column, a square type tag (New in signal color, Improved outlined, Fixed gray) and dash-listed notes; hairline rows.
Data Table
Analytics table in pure typography: mono headers that sort (↑/↓ glyph, aria-sort), hairline rows, tabular numbers, inline hairline bars for share of views, and an ink total row.
Projects Table
Studio project index (the classic portfolio list): large titles with client, discipline and year in mono columns; each row is one link that inverts to ink on hover with an ↗.
Sites Table
Sites dashboard table: name + domain link, dot status in mono, template, updated time and a “…” Radix dropdown (open, duplicate, archive); hairline rows.
App layouts 12
App header4 variants
App Header
Path-style app header: slash-separated breadcrumb “Nord Studio / Projects / Oslo Opera” (last segment ink), live status with signal dot and last-edit time in mono, outline “Preview” and ink “Publish”.
Header Editor
Editor top bar in three zones: back arrow + editable page title, a centered square device switcher (desktop/tablet/mobile, radio semantics), and undo/redo text actions + save state + ink Publish.
Header Tabs
Settings-style header: title + domain subtitle, then a row of text tabs with an ink underline on the active one sitting on the hairline; scrolls horizontally on mobile.
Header Title
Big-title page header: a huge display title with a superscript mono count, then a ruled toolbar with text filters (slash separated, active underlined in signal) on the left and view options + ink action on the right.
Auth screen4 variants
Auth Centered
Minimal centered sign-in with lots of air: logo, small title, two hairline-boxed fields stacked edge to edge, ink button, “or continue with” text links and a mono legal line at the very bottom.
Auth Magic
Passwordless: a huge “Enter your email” prompt with a single oversized underline input and ↵ button; after submit, a large confirmation with the address and a mono resend link.
Auth Screen
Split sign-in: the left half is an ink panel with a large statement and mono footer; the right half holds a minimal underline form (email, password), an ink button and text links. Panel hides on mobile.
Auth Steps
Three-step sign-up with an index header “01 / 03 — Your account” and segmented hairline progress; underline fields per step, Back text link and ink Continue; final step shows the site address preview.
Effects 16
Background4 variants
Crosshair Background
Measuring crosshair: full-width and full-height hairlines follow the pointer with live mono X/Y coordinates next to the intersection — a design-tool feel for hero areas. Mouse only; hidden otherwise.
Guides Background
Layout-grid backdrop: hairline column guides (like a design tool’s grid overlay) that draw in from top to bottom one after another, with tiny mono column numbers along the top. Pure CSS.
Halftone Background
Print-inspired halftone: a regular ink dot screen fading out across the section via a linear mask, like a newspaper gradient; static, pure CSS.
Word Background
A giant outlined word (hairline stroke, no fill) slowly drifting sideways behind content in an endless loop — typographic texture instead of imagery. Pure CSS.
Transition4 variants
Curtain Wipe
Block reveal: a solid ink (or signal) curtain covers the content, then slides away to the right, uncovering it — for images and cards entering the viewport.
Inset Reveal
Image entrance: a clip-path inset shrinks from 12% to 0 while the inner content scales from 1.15 to 1 — the frame “opens” onto the image. Observed on an unclipped wrapper.
Line Reveal
Headline revealed line by line: each line slides up from behind its own mask with a sharp ease, staggered, when it enters the viewport — the classic editorial reveal.
Stagger Fade
The quietest entrance: list items simply fade in one after another (no movement), 60ms apart, when the list enters the viewport.
Micro interaction4 variants
Copy Email
Big email address that copies itself on click: the address swaps to “Copied to clipboard” with a signal dot for 1.8s via a vertical slide; announced to screen readers.
Cursor Label
Hover area where a small ink pill with a mono label (“View ↗”) follows the pointer with slight lag; the native cursor stays visible. Mouse only; nothing on touch.
Invert Hover
Row/button whose ink fill wipes in from the left on hover or focus while the text inverts (mix-blend-difference) — the signature interaction for index lists.
Square Switch
Square toggle: a hairline rectangle with a square knob that snaps across with the emphasized ease, filling ink when on; mono ON/OFF state label; role=switch.
Text4 variants
Digit Roll
Odometer-style number: each digit rolls vertically through 0–9 to its value (staggered from the left) when it enters the viewport, in tabular display figures.
Outline Fill
Outlined display text (hairline stroke, transparent fill) that fills solid ink from bottom to top on hover/focus via a clipped duplicate layer — for big navigation links. Pure CSS.
Scramble Text
Mono text that resolves from random glyphs to the real string left-to-right when it enters the viewport (and again on hover); final text is always exposed to assistive tech.
Tracking In
Headline whose letter-spacing contracts from very wide to the tight display tracking while fading in — a calm, precise entrance for short words.
Set up Mono Clean in your project
Once per project. Installing any Mono Clean module copies its tokens for you — or install them alone first. New to Artmode? Start with the getting started guide.
npx shadcn@latest add https://artmode.alpvisionweb.online/r/mono-clean-theme.json1. Import the tokens
@import "tailwindcss"; @import "../components/modules/_core/da-theme.css"; @import "../components/modules/mono-clean/tokens.css";
3. Scope the area
<div data-da="mono-clean">
{/* Mono Clean modules */}
</div>2. Load the fonts
import { Instrument_Sans, Hanken_Grotesk, Red_Hat_Mono } from "next/font/google";
const monoCleanDisplay = Instrument_Sans({ subsets: ["latin"], variable: "--font-mono-clean-display" });
const monoCleanBody = Hanken_Grotesk({ subsets: ["latin"], variable: "--font-mono-clean-body" });
const monoCleanMono = Red_Hat_Mono({ subsets: ["latin"], variable: "--font-mono-clean-mono" });
// <html className={`${monoCleanDisplay.variable} ${monoCleanBody.variable} ${monoCleanMono.variable}`}>