---
type: Design Language
title: TUI monochrome design system
description: How the light-mono-tui design language is implemented in this app's CSS.
resource: frontend/src/styles/tui.css
tags: [frontend, design, css]
timestamp: 2026-08-12T00:00:00Z
---

# TUI monochrome design system

The full design language spec lives outside this bundle at
`~/doc/concepts/ui/light-mono-tui.md` (grey background, black type/borders,
mono font, inverted active/hover states, no accent color, no radius, no
shadow). This doc covers how EatMe implements it.

`frontend/src/styles/tui.css` defines the tokens (`--bg`, `--fg`, `--muted`,
`--hover`, `--empty`, `--panel`, `--font`) and the component classes built on
them: `.tabs`/`.tab`, `.btn`/`.btn-block`/`.btn-ghost`, `.panel`,
`.field-row`, `.list`/`.row`, `.badge` (`-solid`, `-dashed`, `-double`),
`.stat-grid`/`.stat-tile`, `.login-card`.

# App-specific additions

Built for this app, following the same rules (square edges, monochrome,
1px borders) rather than introducing new visual language:

- **`.bar-chart-*`** (`frontend/src/components/BarChart.tsx`) — the
  per-employee daily-hours chart. Y-axis labels + a repeating 1px
  `--empty`-colored gridline background at 25% steps computed from a
  "nice" rounded max (`Math.ceil` to the next whole hour); bars are solid
  `--fg`, `--muted` on hover; day-of-month labels render in a *separate*
  flex row below the fixed-height bar track (not nested inside each bar's
  percentage-height column) specifically to avoid the bars visually
  overlapping the labels.
- **`.month-nav`** (`frontend/src/components/MonthNav.tsx`) — `[<] label [>]`
  bordered strip, styled like the design language's tab strip. Deliberately
  placed *inside* the employee-detail panel next to the chart it controls,
  not as a page-level control — an earlier version put it at the top of the
  whole admin stats page, which tested as confusing ("can't browse history
  on the chart") since it was visually disconnected from what it affected.

# Related

- [Zustand stores](./stores.md)
