Terminal
Monospace everywhere, square cells, outlined panels and instant motion.
Where it comes from
Before graphical interfaces, people worked in text: a grid of fixed-width characters, a prompt, and output that scrolled by. Programmers still do much of their work there, and the look has become a shorthand for tools that are exact, fast and built for people who read code.
As an interface style it uses one monospace family for everything, tight spacing, square outlined panels and no easing. It packs a lot of information into a small area and rewards people who already read that way. It is a poor first impression for someone who does not, so it asks for obvious graphical navigation next to the text.
Written by us, in our own words, as background. It is not a claim about users.
Traits
- Type
One monospace family for body, display and code, a slightly smaller scale, bold headings with no tracking and uppercase labels. Columns line up because every character has the same width.
--ca-font-sans--ca-font-display--ca-font-mono--ca-font-scale--ca-label-case- Colour
Dark by default: a near-black surface, bright text and one accent used like a phosphor. The recipe defaults to the dark scheme; the light scheme is still supported.
--ca-brand-fill--ca-surface-base--ca-text-primary- Shape
Square corners and one-pixel outlines on every panel, like cells in a grid. Compact density keeps rows tight.
--ca-radius-scale--ca-density--ca-border-width- Depth
None. Panels are outlined rectangles; there is no shadow, blur or tint.
--ca-shadow-md--ca-mat-edge- Motion
None by design: the motion scale is zero and the curve is stepped, so state changes are instant. This also makes the recipe safe for people who reduce motion.
--ca-motion-scale--ca-ease-standard
Before and after, on real components
The same components twice: with the package default and with this style. Use the toggle to flip between them or put them side by side.
As on your ID.
Heads up
Payment failed
| Name | Role | Status |
|---|---|---|
| Ana Souza | Admin | Active |
| Bruno Lima | Editor | Invited |
| Carla Dias | Viewer | Active |
Do and don't
Do
- Use the monospace family for data, identifiers and code, where alignment helps comparison.
- Keep a visible, high-contrast focus ring; keyboard users are this style's main audience.
- Offer plain graphical navigation (a sidebar or tabs) beside any command-style input.
- Keep rows compact but keep touch targets large enough on touch devices.
Don't
- Do not use a monospace face for long paragraphs of prose; the uneven rhythm slows reading.
- Do not imitate a blinking cursor everywhere; motion with no meaning is noise.
- Do not use green-on-black as the only palette without checking contrast and colour-blind legibility.
- Do not hide features behind typed commands with no visible alternative.
These are our own guidance for using the recipe well. The accessibility items below carry their sources.
Accessibility pitfalls
Each item names what goes wrong, what the library already does about it and what is left to you.
Compact density can push targets below the minimum pointer size
Standard or guidelineW3C WAI 2023
Tight rows look right in a terminal-style list and can make the controls inside them too small to hit.
Scope: WCAG 2.2 criterion 2.5.8 (Level AA): pointer targets are at least 24 by 24 CSS pixels unless spacing, equivalence, inline, user-agent or essential exceptions apply. 44 pixels is a larger recommendation, not this criterion.
What to do. Keep the interactive area at least 24 by 24 CSS pixels (the components keep a larger hit area than their visible box) and give touch layouts the comfortable density.
Removing all motion is safe, but do not remove state feedback with it
Standard or guidelineMDN contributors 2026, W3C Web Accessibility Initiative 2023
A style with no motion already honours a reduced-motion setting, so the remaining risk is a state that changes with no visible signal.
Scope: MDN describes how to detect a reduced-motion preference. WCAG 2.2 criterion 2.3.3 (Level AAA) says non-essential motion triggered by interaction can trigger vestibular disorders and should be possible to turn off. It makes no claim about how common this is.
What to do. Keep a clear change in fill, outline or label for hover, pressed and selected so the instant transition still shows what changed.
Components that fit
Developer tools, logs, consoles, infrastructure dashboards and documentation for engineers.
Avoid it when: Consumer onboarding, content for general audiences, or anywhere people are not used to reading fixed-width text.
Where it fits is our judgement from using the recipe, not a measured result.
CodeSnippet: Boxed monospace output.SimpleTable: Compact, aligned rows.TextField: A square, outlined, monospace field.Kbd: Keyboard hints in the same face.
CodeSnippet
SimpleTable
| Service | Region | Latency |
|---|---|---|
| api | eu-1 | 42 ms |
| worker | us-2 | 118 ms |
| search | eu-1 | 67 ms |
TextField
Square, outlined, labelled.
Kbd
Press Ctrl + K to search, Esc to close.
Overlays such as Dialog and Tooltip render in the page body, outside this style's subtree, so they are not shown here. Apply the style to the whole site to see them wear it.
The ThemeOptions recipe
One call in src/lib/theme.ts. Everything below is what the recipe sets; override any of it on top.
With your own brand colour on top:
Every knob this recipe sets
Try it on this site
Try it on every page of this site, only in this browser. Nothing is published or changed for anyone else.
Prompt for your AI
Paste this into a coding agent. It carries the recipe, the limits and the accessibility rules.
References
W3C WAI (2023). Understanding SC 2.5.8: Target Size (Minimum). W3C WAI, WCAG 2.2 Understanding (Level AA).Standard or guideline
Supports: The target for pointer inputs is at least 24 by 24 CSS pixels, except where spacing, equivalence, inline, user-agent or essential exceptions apply.
Does not support: That 44 px is required. 44 px is a larger recommendation, not this criterion.
Checked 2026-10-25.
MDN contributors (2026). prefers-reduced-motion. MDN Web Docs.Standard or guideline
Supports: The media feature detects whether a user enabled a device setting to minimize non-essential motion.
Does not support: What counts as essential motion; that is a design decision.
Checked 2026-10-25.
W3C Web Accessibility Initiative (2023). Understanding Success Criterion 2.3.3: Animation from Interactions. W3C WAI, WCAG 2.2 Understanding (Level AAA).Standard or guideline
Supports: Non-essential motion triggered by interaction, such as parallax scrolling, can trigger vestibular disorders (dizziness, nausea, headaches); content should let users turn it off. The criterion is Level AAA.
Does not support: A prevalence figure, or that all animation is harmful. Essential motion is excepted, and the criterion is above the AA level most programs target.
Checked 2026-10-25.