back to gallery

Konkret

A portable design language for agents: download the markdown first, then inspect the preview, tokens, and rules as needed.

Download DESIGN.md

Portable DESIGN.md — tokens plus the paired art style. Agents must generate real images.

the spec

specification

philosophy
summary
Konkret runs the discipline of Concrete Art and Swiss typography as a working product interface. The screen behaves like a printed poster: every module snaps to a visible construction grid, every colour earns its place as a signal, and type does the structural work that ornament does elsewhere. It is a faithful refinement of Constructive Grid Modernism — same idea, same primary-colour direction (red, blue, yellow on pure black and white) — brought up to standard with paired geometric markers replacing single accent edges, an open masthead, fully styled controls, and a no-JS-settled motion model.
values
Function before expression — alignment, contrast, and proportion replace decoration.Visible construction — the grid, module rules, and baseline relationships are allowed to show.Typographic objectivity — condensed heads, mono meta, and oversized tabular figures carry hierarchy.Primary-colour economy — red, blue, and yellow appear only as functional signals.Asymmetric order — a dominant lead block with narrow rails, never centred symmetry.
anti-values
×Decorative nostalgia — no vintage poster distress, paper aging, or faux-print texture.×Centred marketing symmetry — no hero-centred landing composition.×Colour-as-decoration — primaries never fill a surface or solve hierarchy on their own.
visual character
A 64px black construction grid runs across every surface; major modules snap to it like Swiss typographic rules and crop marks.Each framed white panel is anchored by a full circle and a full square corner marker at opposite corners — never a single coloured card edge.Oversized condensed figures and headlines on solid black ink panels are the primary graphic device, with primary-signal bars beneath.Metadata reads as small uppercase IBM Plex Mono tags with a leading square colour chip; status is always chip-or-dot plus a text label.
tokens
colors18 items
primary
#E30613
secondary
#0057B8
accent
#FFD400
bg
#FFFFFF
background
#FFFFFF
surface
#FFFFFF
surface_2
#F3F3F3
text
#000000
muted
#585858
border
#000000
line
#D9D9D9
on_accent
#FFFFFF
success
#007A3D
warning
#FFD400
error
#E30613
info
#0057B8
black
#000000
white
#FFFFFF
typography10 items
base size
17px
body font
IBM Plex Sans
heading font
IBM Plex Sans Condensed
mono font
IBM Plex Mono
heading weight
700
heading transform
none
letter spacing
-0.02em
line height
1.5
scale ratio
1.25
google fonts url
https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=IBM+Plex+Sans+Condensed:wght@500;600;700&family=IBM+Plex+Sans:wght@400;500;600;700&display=swap
radii5 items
none
0px
sm
0px
md
0px
lg
0px
full
9999px
shadows3 items
sm
none
md
none
lg
6px 6px 0 #000000
spacing2 items
base
8px
scale
4, 8, 12, 16, 24, 32, 48, 64, 96
surfaces3 items
treatment
flat
card style
Flat white rectangular panels framed by a 2px black construction rule, anchored by paired circle+square corner markers; no glass, no gradient, no elevation.
bg pattern
grid
borders3 items
default width
2px
style
solid
character
Hard black construction lines that behave like printed crop marks and Swiss grid rules; modules are fully framed, never given a single coloured accent edge.
motion3 items
duration
140ms
easing
cubic-bezier(0.2,0,0,1)
philosophy
Snappy and mechanical, no bounce. The fully-settled page is the default and renders with no JavaScript; an inline script adds a class to gate the hidden start-state and drives a short scroll-reveal. Primary buttons and active modules translate up-left into a 6px offset black slab on hover/focus. Respects prefers-reduced-motion.
rules
composition
Use a visible 64px construction grid with a 12-column rhythm, asymmetric placement, and deliberate empty grid cells. A dominant lead block (7-8 cols) carries the argument while metadata and controls sit in narrow rails (4-5 cols). Frame rectangular modules in 2px black rule; anchor them with paired circle+square corner markers rather than a single coloured edge.
hierarchy
Start with a condensed uppercase mono label and a leading square colour chip, then a large condensed headline or oversized numeral, then concise IBM Plex Sans body. Build hierarchy through scale, weight, case, position, and rule thickness before colour. Important metrics become poster-like typographic blocks on black ink.
density

Operational medium-high density with disciplined whitespace: modules are compact inside a generous page grid, separated by strong rules and blank grid cells.

signature
Visible 64px black construction grid; paired circle+square corner markers on every framed module; primary red/blue/yellow used only as functional signal blocks and status chips; oversized condensed figures on black ink panels as the primary graphic device; offset 6px black slab shadow on active primaries; outlined uppercase mono tags with leading square chips.
layout
grid
Desktop uses a 12-column grid with 24px gutters, max-width ~1360-1480px, and a visible 64px construction-grid background. Tablet collapses the rail to a top strip or single column; mobile becomes a single stacked column with table overflow. minmax(0,1fr) columns and min-width:0 children keep grids from overflowing.
whitespace

Whitespace is an active module, not padding filler. Empty grid cells are kept on purpose, especially near headlines, to preserve poster-like asymmetric calm.

density

Compact interior modules with measured breathing room for legibility.

responsive
Every artifact renders from ~390px mobile to 2560px+ ultra-wide. At 1024px the rail becomes a top strip and key panels move to two columns; at 768px modules stack in one column; at 480px buttons go full width, controls stack, and data tables scroll horizontally. Ultra-wide caps contained content and lets only the full-bleed hero span 100vw.
breakpoints
mobile
390-560
tablet
561-900
desktop
901-1440
ultrawide
1441+
guidance
do
  • Use pure #FFFFFF as the dominant ground and true #000000 for construction lines and type.
  • Apply letter-spacing -0.02em globally, including labels, body, controls, and table text.
  • Expose the grid with ruled borders, aligned columns, and measured empty cells rather than hiding structure.
  • Use red, blue, and yellow as sparse functional markers — status chips, segmented measures, signal bars, corner anchors.
  • Keep all containers square (0px radius); use offset black slab shadows only for active interactive emphasis.
  • Build hierarchy through scale, weight, case, position, and rule thickness before adding colour.
  • Explicitly style every form control; give each a hard focus state and a minimum 44px touch target.
avoid
  • Do not use gradients, glassmorphism, pastel washes, or blue-grey dark neutrals.
  • Do not round cards or controls except tiny status dots and corner markers.
  • Do not give a card a single coloured accent edge or trap the nav in a pill/floating card.
  • Do not centre every section or use a symmetrical hero composition.
  • Do not add distressed Bauhaus poster texture or faux vintage effects.
  • Do not communicate state through colour alone; pair every chip with a text label.
  • Do not use decorative or emoji icons where a typographic label or geometric marker is clearer.
imagery
pairs with

plakat

summary
Flat geometric Bauhaus-Swiss reconstruction: subjects decomposed into pure primitives — circles, squares, bars, ruled lines — on a visible black construction grid, in primary red, blue, and yellow against pure black and white, asymmetric and edge to edge.
subjects
drafting tools — compass, T-square, set-square, protractor — as geometric primitivesa layout board built from circles, bars, and ruled grid linesa primary-colour signal study aligned to a black latticean exhibition wall reduced to flat modules and rules
usage
One full-bleed plakat hero behind the landing, composed for a left-side black overlay panel. Keep strictly to red, blue, yellow on black and white with the visible construction grid; never render the apparatus (a poster on a wall, a frame, an easel) and never add text or a fourth accent colour.
katagami spec
# Konkret

## Philosophy

Konkret runs the discipline of Concrete Art and Swiss typography as a working product interface. The screen behaves like a printed poster: every module snaps to a visible construction grid, every colour earns its place as a signal, and type does the structural work that ornament does elsewhere. It is a faithful refinement of Constructive Grid Modernism — same idea, same primary-colour direction (red, blue, yellow on pure black and white) — brought up to standard with paired geometric markers replacing single accent edges, an open masthead, fully styled controls, and a no-JS-settled motion model.

### Values

- Function before expression — alignment, contrast, and proportion replace decoration.
- Visible construction — the grid, module rules, and baseline relationships are allowed to show.
- Typographic objectivity — condensed heads, mono meta, and oversized tabular figures carry hierarchy.
- Primary-colour economy — red, blue, and yellow appear only as functional signals.
- Asymmetric order — a dominant lead block with narrow rails, never centred symmetry.

### Anti-Values

- Decorative nostalgia — no vintage poster distress, paper aging, or faux-print texture.
- Centred marketing symmetry — no hero-centred landing composition.
- Colour-as-decoration — primaries never fill a surface or solve hierarchy on their own.

### Visual Character

- A 64px black construction grid runs across every surface; major modules snap to it like Swiss typographic rules and crop marks.
- Each framed white panel is anchored by a full circle and a full square corner marker at opposite corners — never a single coloured card edge.
- Oversized condensed figures and headlines on solid black ink panels are the primary graphic device, with primary-signal bars beneath.
- Metadata reads as small uppercase IBM Plex Mono tags with a leading square colour chip; status is always chip-or-dot plus a text label.

## Tokens

### Colors

| Name | Value |
|------|-------|
| primary | `#E30613` |
| secondary | `#0057B8` |
| accent | `#FFD400` |
| bg | `#FFFFFF` |
| background | `#FFFFFF` |
| surface | `#FFFFFF` |
| surface_2 | `#F3F3F3` |
| text | `#000000` |
| muted | `#585858` |
| border | `#000000` |
| line | `#D9D9D9` |
| on_accent | `#FFFFFF` |
| success | `#007A3D` |
| warning | `#FFD400` |
| error | `#E30613` |
| info | `#0057B8` |
| black | `#000000` |
| white | `#FFFFFF` |

### Typography

- **Base Size**: 17px
- **Body Font**: IBM Plex Sans
- **Heading Font**: IBM Plex Sans Condensed
- **Mono Font**: IBM Plex Mono
- **Heading Weight**: 700
- **Heading Transform**: none
- **Letter Spacing**: -0.02em
- **Line Height**: 1.5
- **Scale Ratio**: 1.25
- **Google Fonts Url**: https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=IBM+Plex+Sans+Condensed:wght@500;600;700&family=IBM+Plex+Sans:wght@400;500;600;700&display=swap

### Radii

- **None**: 0px
- **Sm**: 0px
- **Md**: 0px
- **Lg**: 0px
- **Full**: 9999px

### Shadows

- **Sm**: none
- **Md**: none
- **Lg**: 6px 6px 0 #000000

### Spacing

- **Base**: 8px
- **Scale**: [4,8,12,16,24,32,48,64,96]

### Surfaces

- **Treatment**: flat
- **Card Style**: Flat white rectangular panels framed by a 2px black construction rule, anchored by paired circle+square corner markers; no glass, no gradient, no elevation.
- **Bg Pattern**: grid

### Borders

- **Default Width**: 2px
- **Style**: solid
- **Character**: Hard black construction lines that behave like printed crop marks and Swiss grid rules; modules are fully framed, never given a single coloured accent edge.

### Motion

- **Duration**: 140ms
- **Easing**: cubic-bezier(0.2,0,0,1)
- **Philosophy**: Snappy and mechanical, no bounce. The fully-settled page is the default and renders with no JavaScript; an inline script adds a class to gate the hidden start-state and drives a short scroll-reveal. Primary buttons and active modules translate up-left into a 6px offset black slab on hover/focus. Respects prefers-reduced-motion.

## Rules

### Composition

Use a visible 64px construction grid with a 12-column rhythm, asymmetric placement, and deliberate empty grid cells. A dominant lead block (7-8 cols) carries the argument while metadata and controls sit in narrow rails (4-5 cols). Frame rectangular modules in 2px black rule; anchor them with paired circle+square corner markers rather than a single coloured edge.

### Hierarchy

Start with a condensed uppercase mono label and a leading square colour chip, then a large condensed headline or oversized numeral, then concise IBM Plex Sans body. Build hierarchy through scale, weight, case, position, and rule thickness before colour. Important metrics become poster-like typographic blocks on black ink.

### Density

Operational medium-high density with disciplined whitespace: modules are compact inside a generous page grid, separated by strong rules and blank grid cells.

### Signature

Visible 64px black construction grid; paired circle+square corner markers on every framed module; primary red/blue/yellow used only as functional signal blocks and status chips; oversized condensed figures on black ink panels as the primary graphic device; offset 6px black slab shadow on active primaries; outlined uppercase mono tags with leading square chips.

## Layout

### Grid

Desktop uses a 12-column grid with 24px gutters, max-width ~1360-1480px, and a visible 64px construction-grid background. Tablet collapses the rail to a top strip or single column; mobile becomes a single stacked column with table overflow. minmax(0,1fr) columns and min-width:0 children keep grids from overflowing.

### Whitespace

Whitespace is an active module, not padding filler. Empty grid cells are kept on purpose, especially near headlines, to preserve poster-like asymmetric calm.

### Density

Compact interior modules with measured breathing room for legibility.

### Responsive

Every artifact renders from ~390px mobile to 2560px+ ultra-wide. At 1024px the rail becomes a top strip and key panels move to two columns; at 768px modules stack in one column; at 480px buttons go full width, controls stack, and data tables scroll horizontally. Ultra-wide caps contained content and lets only the full-bleed hero span 100vw.

### Breakpoints

- **Mobile**: 390-560
- **Tablet**: 561-900
- **Desktop**: 901-1440
- **Ultrawide**: 1441+

## Guidance

### Do

- Use pure #FFFFFF as the dominant ground and true #000000 for construction lines and type.
- Apply letter-spacing -0.02em globally, including labels, body, controls, and table text.
- Expose the grid with ruled borders, aligned columns, and measured empty cells rather than hiding structure.
- Use red, blue, and yellow as sparse functional markers — status chips, segmented measures, signal bars, corner anchors.
- Keep all containers square (0px radius); use offset black slab shadows only for active interactive emphasis.
- Build hierarchy through scale, weight, case, position, and rule thickness before adding colour.
- Explicitly style every form control; give each a hard focus state and a minimum 44px touch target.

### Don't

- Do not use gradients, glassmorphism, pastel washes, or blue-grey dark neutrals.
- Do not round cards or controls except tiny status dots and corner markers.
- Do not give a card a single coloured accent edge or trap the nav in a pill/floating card.
- Do not centre every section or use a symmetrical hero composition.
- Do not add distressed Bauhaus poster texture or faux vintage effects.
- Do not communicate state through colour alone; pair every chip with a text label.
- Do not use decorative or emoji icons where a typographic label or geometric marker is clearer.

### Accessibility

Maintain high black-on-white contrast; body text 17px+, table rows 14.5px+. Never communicate state through colour alone — pair status chips/dots with text. Preserve focus outlines (3px blue ring). Hero overlay text is paper-white over a solid black ink panel, not a faint scrim. Motion respects prefers-reduced-motion and the no-JS settled state shows the full finished page.

## Imagery Direction

### Pairs With

plakat

### Summary

Flat geometric Bauhaus-Swiss reconstruction: subjects decomposed into pure primitives — circles, squares, bars, ruled lines — on a visible black construction grid, in primary red, blue, and yellow against pure black and white, asymmetric and edge to edge.

### Subjects

- drafting tools — compass, T-square, set-square, protractor — as geometric primitives
- a layout board built from circles, bars, and ruled grid lines
- a primary-colour signal study aligned to a black lattice
- an exhibition wall reduced to flat modules and rules

### Usage

One full-bleed plakat hero behind the landing, composed for a left-side black overlay panel. Keep strictly to red, blue, yellow on black and white with the visible construction grid; never render the apparatus (a poster on a wall, a frame, an easel) and never add text or a fourth accent colour.
DESIGN.md
---
version: "alpha"
name: "Konkret"
description: "Agent-curated design language exported from Katagami as DESIGN.md."
colors:
  primary: "#E30613"
  secondary: "#0057B8"
  accent: "#FFD400"
  bg: "#FFFFFF"
  background: "#FFFFFF"
  surface: "#FFFFFF"
  surface_2: "#F3F3F3"
  text: "#000000"
  muted: "#585858"
  border: "#000000"
  line: "#D9D9D9"
  on_accent: "#FFFFFF"
  success: "#007A3D"
  warning: "#FFD400"
  error: "#E30613"
  info: "#0057B8"
  black: "#000000"
  white: "#FFFFFF"
typography:
  headline-lg:
    fontFamily: "IBM Plex Sans Condensed"
    fontSize: "2.075rem"
    fontWeight: 700
    lineHeight: 1.1
    letterSpacing: "-0.02em"
  headline-md:
    fontFamily: "IBM Plex Sans Condensed"
    fontSize: "1.66rem"
    fontWeight: 600
    lineHeight: 1.15
    letterSpacing: "-0.02em"
  body-md:
    fontFamily: "IBM Plex Sans"
    fontSize: "17px"
    fontWeight: 400
    lineHeight: 1.5
    letterSpacing: "-0.02em"
  label-md:
    fontFamily: "IBM Plex Mono"
    fontSize: "0.75rem"
    fontWeight: 600
    lineHeight: 1
    letterSpacing: "0.08em"
rounded:
  none: "0px"
  sm: "0px"
  md: "0px"
  lg: "0px"
  full: "9999px"
spacing:
  base: "8px"
  xs: "4px"
  sm: "8px"
  md: "12px"
  lg: "16px"
  xl: "24px"
  2xl: "32px"
  3xl: "48px"
  4xl: "64px"
  step-8: "96px"
components:
  color-reference-primary:
    backgroundColor: "{colors.primary}"
  color-reference-secondary:
    backgroundColor: "{colors.secondary}"
  color-reference-accent:
    backgroundColor: "{colors.accent}"
  color-reference-bg:
    backgroundColor: "{colors.bg}"
  color-reference-background:
    backgroundColor: "{colors.background}"
  color-reference-surface:
    backgroundColor: "{colors.surface}"
  color-reference-surface_2:
    backgroundColor: "{colors.surface_2}"
  color-reference-text:
    backgroundColor: "{colors.text}"
  color-reference-muted:
    backgroundColor: "{colors.muted}"
  color-reference-border:
    backgroundColor: "{colors.border}"
  color-reference-line:
    backgroundColor: "{colors.line}"
  color-reference-on_accent:
    backgroundColor: "{colors.on_accent}"
  color-reference-success:
    backgroundColor: "{colors.success}"
  color-reference-warning:
    backgroundColor: "{colors.warning}"
  color-reference-error:
    backgroundColor: "{colors.error}"
  color-reference-info:
    backgroundColor: "{colors.info}"
  color-reference-black:
    backgroundColor: "{colors.black}"
  color-reference-white:
    backgroundColor: "{colors.white}"
  button-primary:
    backgroundColor: "{colors.primary}"
    textColor: "#ffffff"
    typography: "{typography.label-md}"
    rounded: "{rounded.md}"
    padding: "{spacing.md}"
  card-surface:
    backgroundColor: "{colors.surface}"
    textColor: "{colors.text}"
    rounded: "{rounded.md}"
    padding: "{spacing.md}"
  input-default:
    backgroundColor: "{colors.surface}"
    textColor: "{colors.text}"
    rounded: "{rounded.md}"
    height: "44px"
---

# Konkret

## Overview

Konkret runs the discipline of Concrete Art and Swiss typography as a working product interface. The screen behaves like a printed poster: every module snaps to a visible construction grid, every colour earns its place as a signal, and type does the structural work that ornament does elsewhere. It is a faithful refinement of Constructive Grid Modernism — same idea, same primary-colour direction (red, blue, yellow on pure black and white) — brought up to standard with paired geometric markers replacing single accent edges, an open masthead, fully styled controls, and a no-JS-settled motion model.

### Values

- Function before expression — alignment, contrast, and proportion replace decoration.
- Visible construction — the grid, module rules, and baseline relationships are allowed to show.
- Typographic objectivity — condensed heads, mono meta, and oversized tabular figures carry hierarchy.
- Primary-colour economy — red, blue, and yellow appear only as functional signals.
- Asymmetric order — a dominant lead block with narrow rails, never centred symmetry.

### Anti-Values

- Decorative nostalgia — no vintage poster distress, paper aging, or faux-print texture.
- Centred marketing symmetry — no hero-centred landing composition.
- Colour-as-decoration — primaries never fill a surface or solve hierarchy on their own.

### Visual Character

- A 64px black construction grid runs across every surface; major modules snap to it like Swiss typographic rules and crop marks.
- Each framed white panel is anchored by a full circle and a full square corner marker at opposite corners — never a single coloured card edge.
- Oversized condensed figures and headlines on solid black ink panels are the primary graphic device, with primary-signal bars beneath.
- Metadata reads as small uppercase IBM Plex Mono tags with a leading square colour chip; status is always chip-or-dot plus a text label.

## Colors

Use the YAML color tokens as the normative palette. The prose below names the roles agents should preserve when generating UI.

| Token | Value |
|-------|-------|
| primary | `#E30613` |
| secondary | `#0057B8` |
| accent | `#FFD400` |
| bg | `#FFFFFF` |
| background | `#FFFFFF` |
| surface | `#FFFFFF` |
| surface_2 | `#F3F3F3` |
| text | `#000000` |
| muted | `#585858` |
| border | `#000000` |
| line | `#D9D9D9` |
| on_accent | `#FFFFFF` |
| success | `#007A3D` |
| warning | `#FFD400` |
| error | `#E30613` |
| info | `#0057B8` |
| black | `#000000` |
| white | `#FFFFFF` |

## Typography

- **Headline-Lg**: IBM Plex Sans Condensed, 2.075rem, weight 700, line-height 1.1.
- **Headline-Md**: IBM Plex Sans Condensed, 1.66rem, weight 600, line-height 1.15.
- **Body-Md**: IBM Plex Sans, 17px, weight 400, line-height 1.5.
- **Label-Md**: IBM Plex Mono, 0.75rem, weight 600, line-height 1.

## Layout

### Spacing Tokens

- **Base**: `8px`
- **Xs**: `4px`
- **Sm**: `8px`
- **Md**: `12px`
- **Lg**: `16px`
- **Xl**: `24px`
- **2xl**: `32px`
- **3xl**: `48px`
- **4xl**: `64px`
- **Step-8**: `96px`

### Grid

Desktop uses a 12-column grid with 24px gutters, max-width ~1360-1480px, and a visible 64px construction-grid background. Tablet collapses the rail to a top strip or single column; mobile becomes a single stacked column with table overflow. minmax(0,1fr) columns and min-width:0 children keep grids from overflowing.

### Whitespace

Whitespace is an active module, not padding filler. Empty grid cells are kept on purpose, especially near headlines, to preserve poster-like asymmetric calm.

### Density

Compact interior modules with measured breathing room for legibility.

### Responsive

Every artifact renders from ~390px mobile to 2560px+ ultra-wide. At 1024px the rail becomes a top strip and key panels move to two columns; at 768px modules stack in one column; at 480px buttons go full width, controls stack, and data tables scroll horizontally. Ultra-wide caps contained content and lets only the full-bleed hero span 100vw.

### Breakpoints

- **Mobile**: 390-560
- **Tablet**: 561-900
- **Desktop**: 901-1440
- **Ultrawide**: 1441+

## Elevation & Depth

### Shadows

- **Sm**: none
- **Md**: none
- **Lg**: 6px 6px 0 #000000

## Shapes

### Rounded

- **None**: `0px`
- **Sm**: `0px`
- **Md**: `0px`
- **Lg**: `0px`
- **Full**: `9999px`

### Surfaces

- **Treatment**: flat
- **Card Style**: Flat white rectangular panels framed by a 2px black construction rule, anchored by paired circle+square corner markers; no glass, no gradient, no elevation.
- **Bg Pattern**: grid

### Borders

- **Default Width**: 2px
- **Style**: solid
- **Character**: Hard black construction lines that behave like printed crop marks and Swiss grid rules; modules are fully framed, never given a single coloured accent edge.

## Components

### Composition

Use a visible 64px construction grid with a 12-column rhythm, asymmetric placement, and deliberate empty grid cells. A dominant lead block (7-8 cols) carries the argument while metadata and controls sit in narrow rails (4-5 cols). Frame rectangular modules in 2px black rule; anchor them with paired circle+square corner markers rather than a single coloured edge.

### Hierarchy

Start with a condensed uppercase mono label and a leading square colour chip, then a large condensed headline or oversized numeral, then concise IBM Plex Sans body. Build hierarchy through scale, weight, case, position, and rule thickness before colour. Important metrics become poster-like typographic blocks on black ink.

### Density

Operational medium-high density with disciplined whitespace: modules are compact inside a generous page grid, separated by strong rules and blank grid cells.

### Signature

Visible 64px black construction grid; paired circle+square corner markers on every framed module; primary red/blue/yellow used only as functional signal blocks and status chips; oversized condensed figures on black ink panels as the primary graphic device; offset 6px black slab shadow on active primaries; outlined uppercase mono tags with leading square chips.

## shadcn/ui Usage

When the target app uses shadcn/ui, copy DESIGN.md with shadcn instead of the plain DESIGN.md. It contains the same Katagami design-language source plus the shadcn/ui primitives, imports, theme variables, component recipes, and preview-shot guidance.

DESIGN.md with shadcn: `/language/en-019ef880-326f-7e20-84bd-34ac675ac94e/DESIGN.with-shadcn.md`.

The shadcn page also exposes optional machine-readable files for automation, but the human-facing handoff is DESIGN.md with shadcn.

Install recommended primitives with `npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table`.

Use these primitives in shadcn apps:
- button
- card
- input
- textarea
- select
- dialog
- sheet
- tabs
- badge
- separator
- checkbox
- switch
- slider
- tooltip
- dropdown-menu
- table

Implementation rule for agents: import shadcn primitives from `@/components/ui/*`, apply the generated CSS variables first, then compose the language-specific recipes from the companion MD. Katagami remains the source of truth; shadcn names are the implementation surface.

## Do's and Don'ts

- Do Use pure #FFFFFF as the dominant ground and true #000000 for construction lines and type.
- Do Apply letter-spacing -0.02em globally, including labels, body, controls, and table text.
- Do Expose the grid with ruled borders, aligned columns, and measured empty cells rather than hiding structure.
- Do Use red, blue, and yellow as sparse functional markers — status chips, segmented measures, signal bars, corner anchors.
- Do Keep all containers square (0px radius); use offset black slab shadows only for active interactive emphasis.
- Do Build hierarchy through scale, weight, case, position, and rule thickness before adding colour.
- Do Explicitly style every form control; give each a hard focus state and a minimum 44px touch target.
- Don't Do not use gradients, glassmorphism, pastel washes, or blue-grey dark neutrals.
- Don't Do not round cards or controls except tiny status dots and corner markers.
- Don't Do not give a card a single coloured accent edge or trap the nav in a pill/floating card.
- Don't Do not centre every section or use a symmetrical hero composition.
- Don't Do not add distressed Bauhaus poster texture or faux vintage effects.
- Don't Do not communicate state through colour alone; pair every chip with a text label.
- Don't Do not use decorative or emoji icons where a typographic label or geometric marker is clearer.

### Accessibility

Maintain high black-on-white contrast; body text 17px+, table rows 14.5px+. Never communicate state through colour alone — pair status chips/dots with text. Preserve focus outlines (3px blue ring). Hero overlay text is paper-white over a solid black ink panel, not a faint scrim. Motion respects prefers-reduced-motion and the no-JS settled state shows the full finished page.

## Imagery Direction

### Pairs With

plakat

### Summary

Flat geometric Bauhaus-Swiss reconstruction: subjects decomposed into pure primitives — circles, squares, bars, ruled lines — on a visible black construction grid, in primary red, blue, and yellow against pure black and white, asymmetric and edge to edge.

### Subjects

- drafting tools — compass, T-square, set-square, protractor — as geometric primitives
- a layout board built from circles, bars, and ruled grid lines
- a primary-colour signal study aligned to a black lattice
- an exhibition wall reduced to flat modules and rules

### Usage

One full-bleed plakat hero behind the landing, composed for a left-side black overlay panel. Keep strictly to red, blue, yellow on black and white with the visible construction grid; never render the apparatus (a poster on a wall, a frame, an easel) and never add text or a fourth accent colour.
shadcn/ui theme
```json
{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "konkret",
  "type": "registry:theme",
  "title": "Konkret shadcn Theme",
  "cssVars": {
    "theme": {},
    "light": {
      "background": "#FFFFFF",
      "foreground": "#000000",
      "card": "#FFFFFF",
      "card-foreground": "#000000",
      "popover": "#FFFFFF",
      "popover-foreground": "#000000",
      "primary": "#E30613",
      "primary-foreground": "#ffffff",
      "secondary": "#0057B8",
      "secondary-foreground": "#ffffff",
      "muted": "#585858",
      "muted-foreground": "#000000",
      "accent": "#FFD400",
      "accent-foreground": "#111111",
      "destructive": "#E30613",
      "border": "#000000",
      "input": "#000000",
      "ring": "#FFD400",
      "chart-1": "#E30613",
      "chart-2": "#0057B8",
      "chart-3": "#FFD400",
      "chart-4": "#007A3D",
      "chart-5": "#FFD400",
      "sidebar": "#FFFFFF",
      "sidebar-foreground": "#000000",
      "sidebar-primary": "#E30613",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#0057B8",
      "sidebar-accent-foreground": "#ffffff",
      "sidebar-border": "#000000",
      "sidebar-ring": "#FFD400",
      "radius": "0px"
    },
    "dark": {
      "background": "#0f1115",
      "foreground": "#f8fafc",
      "card": "#181b22",
      "card-foreground": "#f8fafc",
      "popover": "#181b22",
      "popover-foreground": "#f8fafc",
      "primary": "#E30613",
      "primary-foreground": "#ffffff",
      "secondary": "#252a33",
      "secondary-foreground": "#f8fafc",
      "muted": "#252a33",
      "muted-foreground": "#a1a1aa",
      "accent": "#FFD400",
      "accent-foreground": "#111111",
      "destructive": "#E30613",
      "border": "#303642",
      "input": "#303642",
      "ring": "#FFD400",
      "chart-1": "#E30613",
      "chart-2": "#0057B8",
      "chart-3": "#FFD400",
      "chart-4": "#007A3D",
      "chart-5": "#FFD400",
      "sidebar": "#181b22",
      "sidebar-foreground": "#f8fafc",
      "sidebar-primary": "#E30613",
      "sidebar-primary-foreground": "#ffffff",
      "sidebar-accent": "#FFD400",
      "sidebar-accent-foreground": "#111111",
      "sidebar-border": "#303642",
      "sidebar-ring": "#FFD400",
      "radius": "0px"
    }
  },
  "meta": {
    "source": "katagami",
    "languageId": "en-019ef880-326f-7e20-84bd-34ac675ac94e",
    "slug": "konkret",
    "componentManifest": [
      "button",
      "card",
      "input",
      "textarea",
      "select",
      "dialog",
      "sheet",
      "tabs",
      "badge",
      "separator",
      "checkbox",
      "switch",
      "slider",
      "tooltip",
      "dropdown-menu",
      "table"
    ],
    "installCommand": "npx shadcn@latest add button card input textarea select dialog sheet tabs badge separator checkbox switch slider tooltip dropdown-menu table",
    "nativeTokenNames": {
      "colors": [
        "accent",
        "background",
        "bg",
        "black",
        "border",
        "error",
        "info",
        "line",
        "muted",
        "on_accent",
        "primary",
        "secondary",
        "success",
        "surface",
        "surface_2",
        "text",
        "warning",
        "white"
      ],
      "typography": [
        "base_size",
        "body_font",
        "google_fonts_url",
        "heading_font",
        "heading_transform",
        "heading_weight",
        "letter_spacing",
        "line_height",
        "mono_font",
        "scale_ratio"
      ],
      "radii": [
        "full",
        "lg",
        "md",
        "none",
        "sm"
      ],
      "shadows": [
        "lg",
        "md",
        "sm"
      ],
      "spacing": [
        "base",
        "scale"
      ],
      "surfaces": [
        "bg_pattern",
        "card_style",
        "treatment"
      ],
      "borders": [
        "character",
        "default_width",
        "style"
      ],
      "motion": [
        "duration",
        "easing",
        "philosophy"
      ]
    }
  }
}
```
in the wild

embodiments

DESIGN.md

at a glance

Typography

headline-lgIBM Plex Sans Condensed · 33px · 700

The quick brown fox jumps

headline-mdIBM Plex Sans Condensed · 27px · 600

The quick brown fox jumps

body-mdIBM Plex Sans · 17px · 400

The quick brown fox jumps

label-mdIBM Plex Mono · 12px · 600

The quick brown fox jumps

shadcn/ui

implementation kit

built with
remix lane

try a remix

Keep Konkret and swap a palette and an art style onto it. The landing & dashboard recolor live.

UI language · fixed
Konkret
Palette
Art style
Landing Page
live preview · recolored + filled
lineage

Family

1 descendant
related

More like this