Dark Tech Terminal
Near-black with neon accents, monospace data, terminal aesthetic, scan-lines, mission-control interface.
Visual DNA
Near-black backgrounds with precise technical typography. Neon or electric accent colors (cyan, green, amber) on interactive elements. Mission control interface crossed with hacker's workstation. Data-dense but controlled.
Design Principles
TERMINAL AS AESTHETIC
The interface borrows directly from code editors and command lines — window chrome, prompt strings, typed output, a blinking caret. The page is framed as a terminal window: title bars, status lines, tabular readouts, ASCII art where a hero image would go. Users read the interface like an operator reads a console — every element looks like it could have come from `stdout`.
What it prevents: The generic dark-mode dashboard. A terminal is a specific, recognizable artifact — window frame, mono output, caret — not just "dark background with neon text."
---
NEON AS SIGNAL
Electric accents on near-black ground create the nocturnal mission-control feel. The base is zinc-950/near-black (#0A0F0F), and color is rationed: one accent family (phosphor cyan #00D4FF, electric green, amber) reserved for interactive elements, live data, and status indicators. White text does the reading; neon does the signaling. If everything glows, nothing is signal.
What it prevents: Rainbow cyberpunk palettes and gradient-heavy "hacker movie" clichés. The power comes from the contrast between a dead-dark ground and a single luminous accent.
---
DATA-DENSE, NOT CLUTTERED
High density is the goal — this style carries a lot of information (typography axis 4, density axis 4) — but density is organized through strict grid-locking and monospace discipline. Data lives in aligned columns, tabular readouts, and consistent technical margins. Left-aligned everything, no decoration without a function, whitespace as structure rather than emptiness.
What it prevents: Chaos dressed as complexity. Dense layouts that lose the grid collapse into clutter; the mission-control feel requires every datum to have an address.
---
THE MACHINE MUST WORK
Terminal tropes are only credible when they behave like the real thing. Typing animations should actually type; the caret should blink like a real cursor; scan-lines should read as a CRT, not a texture filter; window framing should imply real content inside. Anything that looks like a terminal but doesn't act like one collapses the illusion immediately.
What it prevents: Decorative-only terminal styling — fake prompts that don't respond, scan-lines that exist purely as a pattern, text that types itself in place. Authenticity comes from behavior, not appearance.
---
MONO IS THE VOICE, SANS IS THE TITLE
Monospace (JetBrains Mono, Fragment Mono, Azeret Mono) carries all data and body-level technical text — it is the style's voice and must stay readable at small sizes. Geometric sans (Aeonik, Archivo) is reserved for headlines, giving the interface its engineered, machine-made hierarchy. Serif fonts and warm colors are excluded entirely.
What it prevents: Font soup and unreadable density. If the mono is unreadable or the sans leaks into data, the terminal grammar breaks and the interface reads as decoration.
Typography System
# Typography System ## Display / Headline Typeface | Property | Specification | |----------|--------------| | **Register** | Geometric sans — structural, engineered, mission-control | | **Examples** | Aeonik, Archivo, Space Grotesk | | **Weight** | 500-700 (bold enough to command the dark ground, not shout) | | **Tracking** | 0.01em-0.03em (slightly tight, technical) | | **Size** | `clamp(2rem, 4vw, 3.5rem)` — loud but contained | | **Transform** | UPPERCASE for section labels, sentence case for narrative headlines | **Why geometric sans:** The terminal is monospace; the headlines need to be the *opposite* — engineered, geometric, modular. Aeonik/Archivo reads like a systems diagram label, not a decorative font. Headlines are the machine's nameplates; the mono type is its readout. --- ## Data / Terminal Typeface | Property | Specification | |----------|--------------| | **Register** | Monospace — this IS the terminal voice | | **Examples** | JetBrains Mono, IBM Plex Mono, Fragment Mono, Azeret Mono | | **Weight** | 400 regular, 500 for data emphasis | | **Tracking** | 0em (monospace must stay monospaced — never letter-space it) | | **Size** | `clamp(0.875rem, 1vw, 1rem)` — 14-16px, standard terminal size | | **Line Height** | 1.5-1.6 (compact, dense — like real terminal output) | **Why monospace:** All data, metrics, logs, code, coordinates, and technical annotations are monospace. The alignment is the design — numbers stack in columns, log lines form a rhythm, cursor positions align. Mono is not a texture; it is the information architecture made visible. --- ## Micro / System Label Type | Property | Specification | |----------|--------------| | **Register** | Same monospace family, lighter or dimmer weight | | **Examples** | JetBrains Mono Light, IBM Plex Mono Light | | **Weight** | 300-400 | | **Tracking** | 0.08em-0.12em (only for uppercase UI labels, never data) | | **Size** | 10-11px | | **Transform** | UPPERCASE with leading `//` or `::` prefix | **Usage:** Section labels, timestamps, system status, coordinates. These read as machine metadata — "// STATUS: ONLINE", ":: SECTOR 07", "LOG 02:14:33". The prefix marks the label as system output, not content. --- ## Type Scale ``` Display: clamp(2rem, 4vw, 3.5rem) — geometric sans, uppercase sections Data: clamp(0.875rem, 1vw, 1rem) — monospace, 14-16px Micro: 10-11px — mono uppercase system labels ``` The scale is compact — 10px to 56px. Density is the point: the page is data-dense, so the type hierarchy must do the organizing. Display type for structure, mono for content, micro for system noise. Nothing in between — no 24px semibold paragraphs. --- ## Font Pairing Logic **Two-family system:** Geometric sans (Aeonik/Archivo) for structure + monospace (JetBrains Mono/IBM Plex Mono) for data. The contrast between engineered sans and technical mono is the pairing — it mirrors a mission-control console where the labels are designed and the readouts are raw. **Never:** Serif typefaces (editorial, not technical — the index bans them outright), handwritten or organic fonts (breaks the machine aesthetic), script, or playful novelty fonts. Decorative fonts destroy the terminal illusion — every glyph must look like it could have been rendered by a terminal.
Color Architecture
# Color Architecture ## Ground The ground is a near-black terminal well — never pure #000000. It carries a faint teal/green tint so it reads as a powered-on CRT or dark console, not a digital void. ```css --color-ground-dark: #0A0F0F; /* Near-black with green phosphor tint */ --color-ground-raised: #11191A; /* Raised panel — terminal chrome, slightly lighter */ --color-ground-light: #12120F; /* Amber-leaning variant when amber is the accent */ ``` **Why tinted black:** Pure #000000 feels like a void. A tinted near-black (#0A0F0F) carries a whisper of the phosphor accent, so the whole page feels lit from within — like light bleeding into a dark room from a monitor. --- ## Terminal Accent Base ```css --accent-phosphor-green: #33FF66; /* Primary phosphor green — terminal truth */ --accent-cyan: #00D4FF; /* Signal cyan — interactive, navigation */ --accent-amber: #FFB000; /* Amber — warnings, blocked states, emphasis */ ``` **These are the only saturated colors.** The palette is strictly-limited neon on near-black ground. One accent governs the page; the others are reserved for specific signal states — cyan for interactive elements, amber for warnings or blocked operations. Using all three arbitrarily turns a terminal into a neon sign. **Rule:** Pick ONE primary accent (default: phosphor green). The others appear only where their meaning demands them. If every element is neon, nothing is signal. --- ## Data / Text ```css --color-text-primary: #E6F7E9; /* Near-white with cool tint — primary readout */ --color-text-dim: rgba(230, 247, 233, 0.6); /* Secondary data, faded lines */ --color-text-muted: rgba(230, 247, 233, 0.35); /* System log, labels, help text */ ``` **Why translucent dim levels:** Terminal output layers — fresh input is bright, older logs fade. Muted text (35% opacity) reads as background noise or stale output. This creates the visual hierarchy of a scrolling session: the cursor line is always the brightest. --- ## Warning / Distress ```css --color-alert: #FF3333; /* Error red — only for actual errors */ --color-blocked: rgba(255, 176, 0, 0.85); /* Amber overlay — blocked/warning states */ ``` **Usage:** Red is a scarce signal reserved for errors, not decoration. Amber is the default "stop/block" state. These never appear as page accents — they interrupt the calm monochrome the way a real terminal alarms. --- ## Terminal Surfaces ```css --surface-panel: rgba(17, 25, 26, 0.85); /* Translucent terminal chrome */ --surface-panel-border: rgba(51, 255, 102, 0.25); /* Hairline phosphor border */ --surface-focus-glow: rgba(51, 255, 20, 0.12); /* Glow behind focused element */ ``` **Usage:** Panels, buttons, and headers. The border is a hairline (0.25 opacity) phosphor line — enough to define the panel against near-black, not enough to feel like a neon sign. Focus glow is a soft halo that makes active controls feel lit from within. --- ## Color Don'ts | Don't | Do Instead | |-------|------------| | Pure #000000 background | Tinted near-black #0A0F0F | | Pure #FFFFFF white text | Cool translucent white #E6F7E9 at reduced opacity | | Multi-accent palettes | One phosphor accent + scarce secondary signal colors | | Warm colors (orange 500, brown, pastel) | Cool teal/green terminal hues | | High-saturation everywhere | Saturation reserved for accent + signal only | | RGB rainbow gradients | Single-neon color grading with dark glow |
Motion Principles
# Motion Principles
## Philosophy
Motion in Dark Tech Terminal is **machine-precise and stateful**. Nothing drifts organically and nothing bounces. Elements appear as if typed, revealed as if a command completed, and pulse only to signal life. The motion language borrows from the terminal itself: typed text, blinking cursors, blocky glitch corrections, and glow that breathes when a process is alive. Every animation must feel like a computer responding to input — deterministic, fast, and purposeful.
---
## Typed-Text Effects
| Element | Animation | Duration | Easing |
|---------|-----------|----------|--------|
| Hero line | Character-by-character typewriter reveal | 30-45ms per char, ~2s total | `steps(1)` |
| Terminal output blocks | Line-by-line reveal, left-aligned | 40-60ms per line | `steps(1)` |
| Data readouts | Charset scramble → settle on real value | 500-800ms | `steps(8)` |
**The typewriter is the signature move.** Text appears one character at a time with a visible caret. Line reveals batch by line, like a script executing. Scramble effects briefly flash random characters before settling — the machine "searching" for the value.
---
## Blinking Cursor
```css
@keyframes caret-blink {
0%, 49% { opacity: 1; }
50%, 100% { opacity: 0; }
}
.caret {
width: 0.6em;
height: 1.1em;
background: var(--accent-phosphor-green);
animation: caret-blink 1s steps(1) infinite;
}
```
**Purpose:** The caret is the terminal's heartbeat — a blocky phosphor cursor blinking at exactly 1s. It anchors focus: the user always knows where "input" would land. Use it beside typed hero lines, inside fake input prompts, and in live status readouts.
---
## Glow Pulse
```css
@keyframes glow-pulse {
0%, 100% { box-shadow: 0 0 4px rgba(51, 255, 102, 0.25); }
50% { box-shadow: 0 0 12px rgba(51, 255, 102, 0.55); }
}
.glowing {
animation: glow-pulse 2.4s ease-in-out infinite;
}
```
**Purpose:** Subtle glow pulses on live status indicators — the "REC" dot, the `●` online marker, the running-process bar. The pulse says *this is alive right now*. Slow (2.4s), low amplitude, never strobing. Static elements do NOT glow; glow is reserved for liveness.
---
## Terminal-Style Reveals
| Element | Animation | Duration | Easing |
|---------|-----------|----------|--------|
| Panel enter | Clip/width sweep like a terminal window opening | 300-400ms | `ease-out` |
| Command echo | Text reveals after a simulated `> run` prompt | 150ms delay | `steps(1)` |
| Section transitions | Horizontal wipe, left-to-right, block edge | 400ms | `steps(6)` |
**The wipe is blocky, not smooth.** Terminal reveals are binary — content appears in hard-edged blocks, like a screen refresh or a page redraw. Avoid soft fades; use clip-path wipes and step easing to keep the machine feel.
---
## Blocky Glitch Motion
```css
@keyframes glitch-shift {
0%, 100% { transform: translate(0, 0); }
20% { transform: translate(-2px, 1px); }
40% { transform: translate(2px, -1px); }
60% { transform: translate(-1px, -1px); }
80% { transform: translate(1px, 1px); }
}
.glitch {
animation: glitch-shift 0.25s steps(2) 2;
}
```
**Purpose:** Rare, short, hard-edged displacement — the terminal momentarily corrupting. Glitch is an error signal, used on: error states, "breach" moments, corrupted data blocks, system transitions. It fires in a burst (2-4 iterations) and stops. Persistent glitch is noise; burst glitch is alarm.
---
## Interaction States
| Element | Hover State | Active State |
|---------|------------|-------------|
| Buttons | Border brightens 0.25 → 0.6 opacity + cursor becomes `>` | Panel dims 10%, accent glow 0.15 → 0.3 (100ms) |
| Links | Text brightens + `_` underscore caret appears | — |
| Status indicators | Tooltip line reveals like typed output (200ms) | — |
| Terminal rows | Background highlight rgba(51,255,102,0.06) (80ms) | — |
**All hover transitions are fast (80-150ms).** A terminal responds instantly — there is no 500ms dream fade. Speed IS the aesthetic; the machine is fast, precise, and never hesitant.
---
## Subtle System Beeps
| Event | Sound |
|-------|-------|
| Successful command | Short high blip (880Hz, 60ms) |
| Error / blocked | Low buzz (220Hz, 200ms) |
| Data received | Soft tick (1320Hz, 30ms) |
**Usage:** Sounds are optional and muted by default — a toggle marked `AUDIO: OFF` in the corner. When on, beeps are short square-wave blips at low volume. Never loop sounds. If audio is not implemented, replicate the rhythm visually (a flash on the status bar acts as the "beep").
---
## Reduced Motion
When `prefers-reduced-motion: reduce`:
- Typed-text effects: reveal instantly (no per-char animation)
- Blinking cursor: static solid caret (blink removed)
- Glow pulses: static, no animation
- Glitch bursts: disabled entirely (replace with color shift)
- Wipe reveals: instant appearance
```css
@media (prefers-reduced-motion: reduce) {
*, *::before, *::after {
animation-duration: 0.01ms !important;
transition-duration: 0.01ms !important;
}
}
```
---
## What NOT to Animate
| Never | Why |
|-------|-----|
| Bounce or spring physics | Terminals don't bounce — machine motion is linear or stepped |
| Organic drift / floating | Organic motion belongs to a different style; this is a machine |
| Soft long fades (500ms+) | Terminal responses are instant; fades feel dreamlike |
| Continuous background motion | Autoplaying scanlines/glitches distract from the data |
| Marquees / scrolling banners | Uncontrollable motion violates the operator's command |
| Playful micro-interactions | No wiggle, no wobble — the machine is serious |
Layout Grammar
# Layout Grammar ## Grid System **Strict grid, terminal-framed.** The layout behaves like a mission-control interface — everything is locked to a visible technical grid, left-aligned with deliberate margins. Internally: - Page container: near-black ground `#0A0F0F`, max-width `clamp(64rem, 92vw, 96rem)` - Grid columns: `repeat(12, minmax(0, 1fr))` with `gap: 1.5rem` (mono-aligned) - Text containers: left-aligned, `max-width: 68ch` (measured in mono character units) - Terminal frames: consistent chrome — a 1px border, a title-bar strip (`bg-[#111618]`), a 3-dot accent at top-left - Baseline rhythm: all vertical spacing knocks to `--mono-line` (1.7 × font-size), keeping text grid-registered --- ## Hero Section | Property | Specification | |----------|--------------| | Height | `min-h-[100dvh]` — full viewport | | Background | Near-black `#0A0F0F`, subtle grid or noise, faint scan-line overlay | | Text position | Left-aligned, top-left — like a fresh prompt, not a centered billboard | | Headline size | `clamp(1.75rem, 4vw, 4rem)` — bold, mono or sharp geometric sans | | Accent | One neon (cyan `#00D4FF` default), used on the prompt symbol and interactive labels | | Caret | Real blinking caret (`caret-blink 1s steps(1)`) at the end of the last typed line | ``` ┌─────────────────────────────────────────┐ │ ~ $ mkproject dark-tech-terminal │ │ █ loading design protocol... ok │ │ │ │ SYSTEM ONLINE │ │ Near-black mission-control interface │ │ monospace data · neon signal │ │ │ │ > npx init --brand [ENTER] █ │ └─────────────────────────────────────────┘ ``` **The hero is a terminal session.** The window frame, the prompt, the caret, and the boot/load lines do the staging — the product statement types in under them. If the frame is removed, the near-black ground and mono type must still read as terminal on their own. --- ## Section Spacing ```css --section-padding-y: clamp(3rem, 8vh, 7rem); --content-max-width: 68rem; /* mono-aligned grid lock */ --text-max-width: 30ch; /* inline data, mono */ --edge-margin: clamp(1.5rem, 4vw, 4rem); --terminal-border: 1px solid #1E2829; --space-x: 0.25rem; /* mono half-space */ ``` **Spacing is dense but governed.** Sections breathe on dark ground, but the rhythm is mechanical — even padding, grid-registered, no free-floating whitespace. A mission-console dashboard compresses information into a confident, ordered surface; empty space is used to isolate data, not to relax. --- ## Layout Patterns ### Pattern 1: Terminal Window + Data Panel ``` ┌─────────────────────────────────────────┐ │ $ tail -f deploy.log │ │ 2026-08-05 09:41:01 build ✔ ok │ │ 2026-08-05 09:41:02 deploy ✔ ok │ │ 2026-08-05 09:41:03 probe ✔ ok │ │ ... │ └─────────────────────────────────────────┘ ``` ### Pattern 2: Split — Metrics Table + Glows Callout ``` ┌──────────────────┬──────────────────────┐ │ LATENCY │ STATUS │ │ p99 42ms │ ● all systems │ │ p50 18ms ▬▬ │ operational │ │ p10 3ms │ neon cyan on black │ └──────────────────┴──────────────────────┘ ``` ### Pattern 3: ASCII Signal / Architecture Map ``` ┌─────────────────────────────────────────┐ │ ┌───────┐ ┌───────┐ ┌───────┐ │ │ │ edge │──▶│ core │──▶│ data │ │ │ │ nodes │ │ cache │ │ store │ │ │ └───────┘ └───────┘ └───────┘ │ └─────────────────────────────────────────┘ ``` Use box-drawing diagrams only when they encode real relationships — routes, states, data flow. An ASCII diagram with no logic is decoration, not terminal. --- ## Responsive Behavior | Breakpoint | Layout Change | |------------|--------------| | **Desktop (1200px+)** | Full dashboard grid, terminal frames in-line, type renders at comfortable mono sizes (≥14px) | | **Tablet (768px)** | Grid drops to 6 columns, windows stack, scan effects simplified, data tables scroll horizontally | | **Mobile (392px)** | 1-2 columns, mono body on NOTE nested at 16px minimum to preserve legibility on near-black, caret hidden, accent carries weight | **On mobile:** legibility is the deal-breaker first. Dedicated backgrounds flatten, box corners simplify, and the mono set. CRTs -- small-cap. Choose visible-cap fine typefaces (Azeret Mono survives aliasing) — never shrink below 12.75px on near-black. --- ## Layout Don'ts | Don't | Do Instead | |------|------------| | Centered, bounce-locked hero | Left-aligned prompt with a blinking caret | | Decorative-only scanline overlays | Scan lines that real CRT artifact (moving raster, subtle roll) | | Bento/card soup with inconsistent gaps | Strict 12-col data grid, terminal-bearing borders | | Purple-blue "hacker movie" gradients | Near-black + one neon accent (green #33-F2F2 / cyan #00D4FF / amber #F59E0B-amber) | | Fake window chrome everywhere | Terminal frames only on surfaces that hold real output (logs, stats, prompt) | | Text knocked to base layer | Legible white/k-zinc cascades on near-black ground | | Ornamental glyphs and icons | ASCII box-drawing, `>` prompts, tooling glyphs only where they mean something | | Warm grays, serif headers, organic shapes | Banned palette shapes — see Vocabulary in index.mdx |
Texture & Surface
# Texture & Surface
## Primary Texture: The Code-Editor / CRT Surface
The texture IS the terminal hardware. The page should feel like a powered machine — scanlines, hairline grids, phosphor glow, subtle grain. No material should look printed or painted; every surface looks *emitted by a monitor*.
| Quality | Description |
|---------|-------------|
| **Scan-line effect** | 1px horizontal lines across panels — the CRT refresh |
| **Hairline grid** | Technical grid background — blueprint/coordinate feel |
| **Phosphor glow** | Soft radial glow behind accents, like light bleed on glass |
| **Code-editor chrome** | Panel headers with `● ● ●` dots, status bars, line numbers |
| **Subtle noise/grain** | Low-opacity grain to kill digital flatness |
**The goal:** Every surface should read as a monitor output or a machine panel — never a flat web page. The texture is the "screen," and the content is what the screen displays.
---
## Scan-Lines
```css
.scanlines {
background: repeating-linear-gradient(
to bottom,
rgba(0, 0, 0, 0) 0px,
rgba(0, 0, 0, 0) 2px,
rgba(0, 0, 0, 0.18) 2px,
rgba(0, 0, 0, 0.18) 3px
);
pointer-events: none;
}
```
**Purpose:** The CRT refresh pattern — subtle horizontal darkening at 1px intervals. Applied as an overlay (pointer-events: none) above the main surface, never to text areas where it would hurt readability. Opacity stays low (0.18) — it should be felt more than seen.
---
## Technical Grid
```css
.grid-background {
background-image:
linear-gradient(rgba(51, 255, 102, 0.05) 1px, transparent 1px),
linear-gradient(90deg, rgba(51, 255, 102, 0.05) 1px, transparent 1px);
background-size: 32px 32px;
}
```
**Purpose:** A barely-visible coordinate grid anchoring the layout — mission-control blueprint. The grid is the layout's skeleton made visible: 32px cells that match the spacing system. It stays under 6% opacity — the grid structures, it does not decorate.
---
## Phosphor Glow Surfaces
```css
.glow-surface {
background: radial-gradient(
ellipse at 50% 0%,
rgba(51, 255, 102, 0.10) 0%,
rgba(51, 255, 102, 0.0) 55%
);
}
```
**Purpose:** Light bleed — a soft pool of accent light at the top of panels, as if the phosphor is shining up through the screen. Used on hero sections, panel headers, and around the cursor line. The glow is always the accent color and always faint (≤10% at its brightest).
---
## ASCII Art
```
▄▄▄▄▄▄ ▄▄▄▄▄▄ ▄▄▄▄▄▄
██ ██ ██
██ ▄▄▄▄ ██▄▄▄▄ ██▄▄▄
██▄▄▄▄██ ██▄▄▄▄█ ██▄▄▄▄
```
**Usage:** ASCII art is the terminal's illustration language — used for section dividers, empty states, boot sequences, and decorative headers. It must be rendered in the monospace font at the exact same size as surrounding text (no scaling, no blur — ASCII art must stay pixel-crisp). Every ASCII figure is built from a strict block/line character set, matching the grid.
---
## Image Processing
| Processing | Effect | Parameters |
|-----------|--------|------------|
| **Scanline overlay** | CRT refresh | 3px repeating gradient at 0.18 opacity |
| **Phosphor grade** | Accent-tinted shadows | Teal/green tint in darks, accent in highlights |
| **Chromatic edge** | Subtle RGB split on glitch states only | 0.5-1px red/blue channel shift |
| **Contrast** | High — the near-black ground makes accents pop | Contrast +15-20 |
| **Grain** | Analog noise to kill banding | Opacity 0.03-0.05, overlay |
**The goal:** Imagery looks displayed, not printed — like a frame from a terminal or a mission-control render. High contrast, cool shadows, and a whisper of scanline/grain over everything.
---
## Surface Rules
| Surface | Treatment |
|---------|-----------|
| Background | Near-black ground + 32px technical grid at ≤6% opacity |
| Panels | Translucent raised surface, hairline phosphor border, header chrome |
| Text | Direct on ground — no cards, no padding boxes for body text |
| Data readouts | Code-editor treatment: line numbers, dim separators, mono glyphs |
| Buttons | Border-only (no filled background) with `>` prompt cursor |
| Active elements | Soft phosphor glow (≤12%) behind the element |
| Dividers | `-` repeated characters (like `------------------`) or ASCII rule lines |
**No decorative cards.** Panels only exist where a real terminal would have a window — data blocks, log viewers, input lines. Everything else sits directly on the near-black ground.
---
## Texture Don'ts
| Don't | Do Instead |
|-------|------------|
| Blurred/depth-of-field textures | Crisp scanlines, hard-edged grids, sharp glyphs |
| Organic gradients and blobs | Technical grids, radial phosphor bleed, linear hairlines |
| Glassmorphism / frosted panels | Opaque terminal chrome with hairline borders |
| Busy animated backgrounds | Static textures; motion reserved for data and status |
| Rounded soft corners everywhere | Small radii (2-4px) or square — machine precision |
| Photographic backgrounds | Near-black ground with grid, scanline, and glow layers |
| Decorative fonts as texture | ASCII art and monospace glyph blocks |
Vocabulary Bank
# Vocabulary Bank ## Primary Terms | Term | Why It Matters | |------|---------------| | `terminal aesthetic` | The entire page borrows from code editors and command lines | | `monospace data` | Fixed-width type for data, code, labels — the backbone of the style | | `neon accent` | Single electric color (cyan/green/amber) on near-black ground — nocturnal signal | | `scan-line` | Horizontal CRT lines over content — the screen is a physical object | | `mission control` | Data-dense dashboard crossed with hacker's workstation | --- ## Secondary Terms | Term | Effect | |------|--------| | `phosphor glow` | Text-shadow bloom on accent elements — cathode-ray afterglow | | `blinking caret` | The cursor that waits for input — every page is a live terminal | | `typed-text effect` | Characters appearing one at a time — output being generated | | `ASCII art` | Character-built graphics as decoration or logo — pure data imagery | | `terminal window framing` | Title bar with traffic dots + command path — content inside a running process | | `CRT glow` | Soft halation around bright elements — phosphor burn | | `code-editor aesthetic` | Gutter lines, line numbers, bracket pairing — the UI reads as source | | `grid-locked layout` | Strict technical grid, left-aligned, dashboard-influenced | | `status readouts` | Uptime, latency, log entries as decorative data — the page reports on itself | | `electric green` | Classic phosphor P1 green — the default terminal accent | --- ## Context Terms | Term | Mood | |------|------| | `hacker` | Nocturnal, precise, slightly subversive | | `cyberpunk` | Neon on dark, tech-drenched future | | `nocturnal` | Night-time, electric light on black | | `mission control` | Operational, data-dense, focused | | `console` | Raw, unfiltered, machine voice | | `dashboard` | Gridded readouts, dense but organized | | `boot sequence` | Terminal-style reveals — systems coming online | --- ## Banned Terms | Term | Why It Breaks the Style | |------|------------------------| | `warm colors` | The palette is near-black + one neon accent — warmth breaks the nocturnal ground | | `serif fonts` | Data is monospace, headlines geometric sans — serif reads print, not terminal | | `organic shapes` | Everything is grid-locked, angular, technical | | `playful motion` | Motion is mechanical: typing, caret blinks, glow pulses | | `rounded everything` | Soft pill UI contradicts the angular console frame | | `gradient meshes` | Flat near-black ground with glow accents — not colorful gradients | | `white page background` | The ground is near-black (#0A0F0F); light backgrounds destroy the aesthetic | | `photographic texture` | Noise/grain and scan-lines — not photo realism | | `casual sans-serif` | Body copy stays monospace — it IS the interface voice | | `bright full palette` | One neon accent at a time — never a rainbow of neon | --- ## Prompt-Ready Phrases ``` "near-black ground (#0A0F0F) with single neon accent (cyan #00D4FF / electric green / amber)" "monospace for all data, code, labels, and body copy (JetBrains Mono / Fragment Mono / Azeret Mono)" "geometric sans for headlines (Aeonik / Archivo)" "scan-line overlay — subtle horizontal CRT lines across the page" "phosphor glow on accent elements — text-shadow bloom, no blurry borders" "typed-text effect — characters appear sequentially, 30-50ms per character" "blinking caret after typed lines — 1s square block blink" "terminal window framing — title bar with traffic dots and command path (user@host:~/style)" "ASCII art logo or section dividers — pure character graphics" "grid-locked layout — left-aligned, technical margins, dashboard density" "status readouts — uptime, latency, log lines as decorative data" "terminal-style reveals — content prints in, sections boot sequentially" "subtle noise/grain overlay for CRT texture" "no warm colors, no serif fonts, no organic shapes, no playful motion" ```
Anti-Slop Checklist
When to Use
# When to Use ## Perfect For | Context | Why This Style Works | |---------|---------------------| | **Cybersecurity products** | The terminal aesthetic literally IS the product — threat feeds, alerts, and logs are native monospace data | | **Developer tools / IDEs** | Code editors and CLIs share the same visual DNA — mono type, near-black ground, grid discipline | | **Crypto/blockchain** | Mission-control dashboards, node status, and transaction feeds read naturally as terminal data | | **Infrastructure/DevOps SaaS** | Deploys, pipelines, and uptime are data streams — this style makes ops feel like command of a machine | | **Technical documentation** | Monospace, grid-locked layouts carry code samples and specs without visual friction | | **Gaming interfaces** | Hacker/mission-control framing suits sci-fi, cyberpunk, and competitive-tech titles | | **Data-intensive dashboards** | High density organized through strict grid + mono typography stays readable, never cluttered | ## Brand Personality Match This style reinforces brands that are: - **Technical** — engineering-first, precise, comfortable with raw data - **Nocturnal** — dark, late-night, mission-control energy - **Precise** — every element on grid, every value in mono - **Controlled** — dense but disciplined, no visual noise - **Forward-leaning** — the future is built on terminals, not spreadsheets ## Avoid When | Context | Why It Fails | |---------|-------------| | **Consumer retail/e-commerce** | The cold, technical mood works against product warmth and impulse buying | | **Lifestyle/food/culture** | Warm, tactile categories clash with neon-on-black signal logic | | **Healthcare (patient-facing)** | The hacker aesthetic reads cold and alarming, the opposite of reassuring | | **Editorial/long-form reading** | Dense mono text at scale fatigues readers; serif-led editorial flow is absent | | **Brands needing warmth/approachability** | Terminal UI signals engineering, not friendliness — see Ethereal Dreamscape or soft minimal styles | | **Conservative enterprise** | The cyberpunk edge can read as too "internet" for traditional procurement audiences | ## How to Decide Ask: **"Does my brand want to feel like a mission-control console — technical, nocturnal, neon-signaled, and unapologetically engineered?"** If yes → Dark Tech Terminal. If no → Consider Data Visualization Aesthetic (if you want data density without the neon hacker edge), Swiss Mono Precision (if you want grid-locked mono typography in light, editorial form), or Dark Cinematic Studio (if you want dark and atmospheric without the terminal framing).
Common Mistakes
Mistake 1: Low-Contrast Near-Black Grounds
**What people do:** Use #0A0F0F backgrounds with dark gray text at 60-70% opacity, or a zinc-900 base instead of near-black, because "dark mode should be subtle."
**Why it fails:** The entire aesthetic is built on one high-contrast hierarchy: near-black ground (#0A0F0F), white text, and a single neon accent (cyan #00D4FF, electric green, or amber). When the ground drifts lighter and the text dims, the terminal loses its phosphor CRT character and becomes a generic dark theme. The style's legibility is its signature — dimming it kills both.
**Fix:** Keep the base at true near-black (#0A0F0F). White text stays white (or #E5E5E5 at most). Reserve the neon accent exclusively for interactive elements, data highlights, and the caret — never for body copy. If a section needs hierarchy, modulate size and weight, not brightness.
---
Mistake 2: Neon Everywhere
**What people do:** Color every heading, border, button, and label in cyan #00D4FF because "the neon looks cool."
**Why it fails:** The style works on scarcity — one single neon accent on a near-black field reads as signal, like a lit indicator on mission control hardware. When everything glows, nothing is signal; the page becomes a light show and the data hierarchy collapses. The banned list exists for a reason: the accent is a noun, not an adjective.
**Fix:** Choose ONE accent (cyan #00D4FF, electric green, or amber — never mix two). Apply it to: the active state, the blinking caret, key data values, and one accent element per viewport. Everything else is white or near-black gray. If a section has more than ~10% neon surface, strip it back.
---
Mistake 3: Gimmick Overload
**What people do:** Add typing animations to every headline, blinking carets everywhere, ASCII art headers, marquee data tickers, and a scanline overlay on top — because "it's a terminal, it should look alive."
**Why it fails:** The style's axis scores are typography 4 and density 4 — data density and precise type are the stars, not motion (3) or texture (3). Typed-text effects and blinking carets are accents that should appear once or twice per page. When every element animates, the page feels like a screensaver, the eye has no resting point, and the motion stops meaning "this is live data" and starts meaning "this is noise."
**Fix:** Budget the effects. One typed-text intro line (or section headline) per page. One blinking caret total — attached to the typed line or the active input. Scanlines as a subtle full-page texture at low opacity, never an animated storm. ASCII art only as a hero or section divider, not repeated in the footer. Everything else is static, precise, and grid-locked.
---
Mistake 4: Fake Terminal Chrome Without Function
**What people do:** Add fake window chrome (three dots, title bars saying `root@designvault:~$`), a prompt symbol, and command-style text — but the elements do nothing and nothing is interactive.
**Why it fails:** Terminal-window framing works when it frames real content: a live log stream, a copyable command, a filterable data table. Fake chrome is costume — the window dots promise a window and the prompt promises input. Users who notice feel patronized; the aesthetic reads as decoration rather than interface, which violates the "mission control" principle where every element earns its place.
**Fix:** Only use terminal framing where a terminal behavior is genuine. Window chrome frames a real component (a code block with copy, a live-updating status panel, a prompt that accepts input). If the content behind the chrome is static marketing text, drop the chrome and use plain grid-locked panels instead. The prompt symbol must be followed by something real.
---
Mistake 5: Unreadable Mono at Small Sizes
**What people do:** Set JetBrains Mono or Fragment Mono at 11-12px for body text because "monospace data should be small and dense."
**Why it fails:** Monospace glyphs are wider and less differentiated than proportional fonts — at small sizes, lowercase `l`, `1`, and `I` blur together, and the wide character advance makes body text feel cramped and slow. The density score (4) comes from grid organization, not from shrinking the font. Unreadable mono defeats the style's core purpose: displaying data you're supposed to read.
**Fix:** Minimum 14-15px for monospace body and data text (16px for anything longer than a sentence), with generous line-height (1.6-1.7) to compensate for the tight mono rhythm. Use monospace for data, labels, and code — use it sparingly for long-form prose. Reserve the geometric sans (Aeonik, Archivo) for headlines at any size, and never render display headlines in mono smaller than 24px.
---
Mistake 6: Breaking the Grid for "Edginess"
**What people do:** Tilt panels, overlap cards at odd angles, offset the layout, or center everything because "a terminal page should feel dynamic and break the rules."
**Why it fails:** This is one of the most grid-locked styles in the taxonomy (layout 2, density 4). The mission-control feel comes from strict alignment — data aligned to a technical column system, left-aligned with technical margins, everything sitting on the grid like instrumentation in a rack. Broken, tilted, or centered layouts read as playful, and playful is banned. The structure IS the aesthetic.
**Fix:** Keep everything left-aligned and grid-locked. Express dynamism through content (live data, typed text, status indicators) rather than through layout tricks. If a section needs visual distinction, change the panel treatment — a border, a header row with monospace labels, a scanline band — not the geometry.
---
Mistake 7: Mixing in Warm Colors or Serifs
**What people do:** Add a warm amber-orange accent for CTAs, or a serif font for the hero headline, because "it adds warmth and sophistication."
**Why it fails:** The banned list is explicit: `warm colors`, `serif fonts`, `organic shapes`, `playful motion`. Warm accents and serifs are from a different design language entirely — they soften the cold, nocturnal, technical character that makes this style what it is. One serif headline or a gold CTA instantly reads as "portfolio site," not "mission control."
**Fix:** Cold palette only: white, near-black gray, and a single cold neon accent (cyan #00D4FF, electric green, or amber used as a cold signal color). Monospace for data, geometric sans for headlines — no serifs anywhere. If a warm color is genuinely required for a client, choose a different style rather than breaking this one.
Reference Gallery
# Reference Gallery ## Live Sites ### Vercel's Terminal Aesthetic (vercel.com + vercel.sh) - **What works:** Near-black ground (#0A0F0F-family zinc-950), monospace data in code blocks, cyan/blue neon accents as signal, precise grid-locked layout - **URL:** vercel.com — study the command-line hero framing and how mono type carries technical credibility ### Linear (linear.app) - **What works:** Dark, ultra-precise interface; neon accent used sparingly on interactive elements only; dense but controlled data — the modern mission-control dashboard - **URL:** linear.app — study accent-as-signal restraint and high-density grid discipline ### Railway (railway.app) - **What works:** Deployment/terminal product with genuine terminal-window framing, near-black ground, amber/green status accents, blinking caret cues - **URL:** railway.app — study real terminal chrome (window dots, typed-text effects) applied to a web product ### GitBash / Windows Terminal (microsoft.com/terminal) - **What works:** The canonical CLI itself — phosphor-style text on near-black, scan-line-adjacent rendering, prompt cursors, ASCII-framed banners - **URL:** aka.ms/terminal — study the reference implementation of terminal-window framing and mono rendering ### HackerOne (hackerone.com) - **What works:** Security-branded dark UI with mono data, neon signals, and mission-control energy in a trustworthy enterprise context - **URL:** hackerone.com — study how the hacker aesthetic is made credible for B2B ### Awwwards Terminal/Retro-Futurism Winners - **What works:** Brutalist terminal art, ASCII compositions, CRT scan-line overlays, blinking carets pushed to art direction - **URL:** awwwards.com (search "terminal" or "CRT" trends) — study the art side of the style ## Key Visual References ### Terminal Chroming - **Window framing** — title bars with three dots, toolbar borders, 1px rules around viewports - **Prompt patterns** — `$`, `>` cursors, typed-text effects with blinking caret (roughly 1s blink, 530ms on/off) - **ASCII art** — logos and dividers rendered in block characters, especially in 404/error states - **CRT effects** — scan-lines, subtle horizontal banding, slight phosphor glow, vignette on large screens ### Color References - **Near-black ground** — #0A0F0F (base), zinc-950 #09090B as the neutral alternative - **Neon accent** — cyan #00D4FF (primary, per index), electric green #00FF9C / phosphor #33FF66, amber #FFB000 — pick ONE, not all three - **White text** — #F5F7F7 at full opacity for primary, reduced opacity (60-70%) for secondary data ### Typography References - **JetBrains Mono** — primary monospace for data, code, and labels (index-approved) - **Fragment Mono / Azeret Mono** — alternative mono voices for more character - **Aeonik / Archivo** — geometric sans for headlines only, paired against mono body - **Caps + tracking on labels** — 0.08-0.15em uppercase for UI chrome, mirroring the index's technical labels ### Motion References - **Typing effects** — 30-60ms per character, caret blinking ~1s - **Terminal reveals** — content appears line-by-line or as `print` statements on scroll - **Glow pulses** — 2-4s ease-in-out, 10-20% intensity on accent elements only - **No playful motion** — everything reads mechanical and precise ## Screenshot Notes > When capturing references for this style, look for: > - The ground (must be near-black #0A0F0F-family — no dark blue, no purple) > - The accent (must be a single neon — cyan/green/amber, never multiple) > - The typography (must be monospace-led for data; geometric sans only for display) > - The layout (must be grid-locked, dashboard-disciplined, technical margins) > - The texture (scan-lines or subtle grain — applied with restraint) > - The motion (typed-text reveals and glow pulses — nothing playful) > - The overall mood (must feel like a mission-control console: technical, nocturnal, neon-signaled)
AI Prompts
> Copy this entire prompt and paste it into your AI coding assistant.
---
```
Build a dark tech terminal page for "PHOSPHOR" — a developer observability platform. Stack: React + Vite + TypeScript + Tailwind CSS v4 + framer-motion. Page title: `PHOSPHOR — Mission control for your infrastructure`.
Vibe: Near-black backgrounds with precise technical typography. Neon or electric accent colors on interactive elements. Mission control interface crossed with hacker's workstation. Data-dense but controlled — every pixel looks like it belongs inside a running terminal.
---
## ANTI-SLOP CONSTRAINTS
- NO warm colors (near-black + single neon accent only)
- NO serif fonts (monospace data + geometric sans headlines)
- NO organic shapes (grid-locked, angular, technical)
- NO playful motion (typing, caret blinks, glow pulses — mechanical, not playful)
- NO rounded pill UI (terminal windows have square corners)
- NO gradient meshes (flat near-black ground with glow accents)
- NO white page background (ground is #0A0F0F)
- NO photographic texture (noise/grain + scan-lines only)
- NO full rainbow of neon (one accent at a time: cyan, electric green, or amber)
- NO casual sans-serif body copy (body stays monospace — it IS the interface voice)
---
## FONTS
Load via Google Fonts:
```
https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;700&family=Archivo:wght@500;700&display=swap
```
Usage:
- **JetBrains Mono 500/700**: All data, code, labels, and body copy — `clamp(0.75rem, 1vw, 0.875rem)`, line-height 1.5
- **Archivo 700**: Display headlines — `clamp(1.5rem, 3vw, 2.5rem)`, uppercase, tracking 0.05em
- **JetBrains Mono 400 UPPERCASE**: Terminal labels — 10-12px, tracking 0.15em
---
## COLOR SYSTEM
```css
:root {
--ground: #0A0F0F; /* Near-black base */
--ground-raised: #0F1616; /* Terminal window / card surface */
--accent-cyan: #00D4FF; /* Neon cyan accent */
--accent-green: #33FF66; /* Phosphor green (alt) */
--accent-amber: #FFB000; /* Amber (alt) */
--text-primary: #E6EDEA; /* White text */
--text-muted: rgba(230, 237, 234, 0.55);
--line: rgba(0, 212, 255, 0.15); /* Grid / border lines */
}
```
Body: `bg-[#0A0F0F] text-[#E6EDEA] antialiased font-mono overflow-x-hidden`.
---
## STRUCTURE
### 1. Hero Section — Terminal Window
- `min-h-[100dvh]`, terminal-window framing: title bar with three traffic dots + path `user@phosphor:~/monitor`
- Scan-line overlay across the full hero (repeating linear-gradient, 3px period, 4% opacity)
- Left-aligned, technical margins (monospace grid, 12-column)
- Content:
- Status line: `[ OK ] PHOSPHOR OBSERVABILITY v2.4 — UPTIME 99.99%` — JetBrains Mono 400, 12px, text-muted
- Headline: "MISSION CONTROL FOR YOUR INFRASTRUCTURE" — Archivo 700, `clamp(1.5rem, 3vw, 2.5rem)`, uppercase, text-primary
- Typed line: `> deploying observer agents to 1,284 nodes...` — typed-text effect, 40ms/char, blinking caret (1s block blink) in accent-cyan
- Subtext: "Watch every service, log, and latency spike from one near-black console." — JetBrains Mono 400, text-muted, max-width 480px
- CTA: "INITIATE MONITORING" — square corners, 1px accent-cyan border, phosphor glow on hover, uppercase mono 12px tracking 0.15em
### 2. Metrics Section — Data Dashboard
- Grid-locked: 12-column monospace grid, left-aligned with technical margins
- 3-4 metric cards framed as terminal windows (title bar + dots, `#0F1616` surface, 1px `--line` border, square corners)
- Each card: label (mono uppercase 10px, tracking 0.15em, text-muted) + live value (mono 500, accent-cyan) + sparkline or ASCII-art bar
- One card logs entries printing in with terminal-style reveals (staggered, 150ms apart)
### 3. Features Section — Code-Editor Aesthetic
- Split: code block (left) + feature copy (right)
- Code block framed as editor: gutter with line numbers, `>` prompt lines, syntax highlighted with accent-cyan on keywords
- Feature list items prefixed with `[ OK ]` or `>` glyphs — each with 2-3 sentences of mono body copy
- Headline per feature: Archivo 700, uppercase, text-primary
### 4. ASCII Art Footer
- ASCII art mark (e.g., `>>-PHOSPHOR-<<` or a small character glyph) as the logo divider
- `PHOSPHOR © 2026 — MONITOR EVERYTHING` — JetBrains Mono 400, uppercase, tracking 0.15em, 12px, text-muted
- Subtle glow pulse (2s) on the ASCII mark, near-black ground, grid line top border
---
## TEXTURE & MOTION
```css
.scanlines {
background: repeating-linear-gradient(
to bottom,
transparent 0px,
transparent 2px,
rgba(0, 0, 0, 0.25) 3px
);
}
.glow {
text-shadow: 0 0 8px rgba(0, 212, 255, 0.7);
}
```
| Element | Animation | Duration | Easing |
|---------|-----------|----------|--------|
| Terminal window | opacity 0→1 + translateY(16px)→0 | 600ms | `ease-out` |
| Headline | opacity 0→1 | 400ms | `ease-out` (delay 200ms) |
| Typed line | characters print 40ms each | variable | linear |
| Caret | opacity 1→0 blink | 1s | `steps(1)`, infinite |
| Metric values | count-up on view | 800ms | `ease-out` |
| Log entries | terminal-style reveals | 150ms stagger | `ease-out` |
| Accent elements | glow pulse (text-shadow/box-shadow) | 2-3s | `ease-in-out`, infinite |
| Noise/grain overlay | static (no animation) | — | — |
`prefers-reduced-motion: reduce` → instant typing (full text), static caret, no glow pulses.
---
## ANTI-SLOP (LOCKED)
- Near-black ground (#0A0F0F) — never white, never light gray
- Single neon accent (cyan #00D4FF / electric green / amber) — one at a time
- Monospace for all data, code, labels, and body copy
- Geometric sans (Archivo/Aeonik) for headlines only
- Scan-line and/or subtle noise texture
- Terminal window framing with title bar + traffic dots
- Typed-text effects with blinking caret
- ASCII art as decoration/dividers
- Grid-locked, dashboard-density layout
- Phosphor glow on accents, not blurry borders
- No warm colors, no serif fonts, no organic shapes, no playful motion
---
Recreate this page with the exact dark tech terminal aesthetic, terminal-window framing, monospace data, and neon cyan accent above.
```This prompt recreates a specific design pixel-faithfully. Study it to understand the style at its purest.