Design Patterns & Brand Guidelines — Overview
Design Philosophy
Opshell.dev follows a terminal-first design philosophy. Every visual and interaction decision is rooted in the command-line experience — the site should feel like a powerful CLI tool, not a brochure.
Core Beliefs
| Belief | Application |
|---|---|
| The terminal is the interface | All components reference CLI metaphors: $ prompts, command-style actions (--flag syntax), monospace typography, green-on-dark color schemes |
| Content is king, chrome is noise | No hero sliders, no carousels, no decorative illustrations. Every pixel serves the content or the conversion goal |
| Dark mode is the only mode | The site has no light mode. The dark theme is not an option — it is the identity. It reduces eye strain for technical readers who spend hours in terminals and code editors |
| Speed is a feature | Minimal CSS, no JavaScript frameworks, no font icons. Performance is part of the design |
| Builders talking to builders | The tone is direct, technical, and jargon-aware. No marketing fluff, no stock photos, no "empower your journey" language |
Target Audience Mindset
The typical opshell.dev visitor:
- Spends most of their day in a terminal emulator
- Uses Neovim, tmux, and a tiling window manager
- Prefers
man pagesover tutorial blogs - Judges a site by its typography and color contrast
- Will notice (and appreciate) a well-placed
$prompt
CSS Variable System
All visual tokens are defined as CSS custom properties on :root. Never use raw hex values — always use the variable.
Colors
:root {
/* Backgrounds */
--ops-bg: #0d1117; /* Page background */
--ops-surface: #161b22; /* Cards, panels, sidebars, widgets */
--ops-surface-hover: #1c2333; /* Card hover state */
--ops-header-bg: #0d1117; /* Navigation bar */
--ops-footer-bg: #0d1117; /* Footer */
/* Borders */
--ops-border: #30363d; /* All borders, dividers, rules */
/* Text */
--ops-text: #c9d1d9; /* Body text, headings */
--ops-text-secondary: #8b949e; /* Labels, descriptions, meta */
/* Accent */
--ops-accent-green: #3fb950; /* Links, prompts, active states, CTAs */
--accent: var(--ops-accent-green);
/* Semantic */
--ops-danger: #f85149; /* Errors, destructive actions */
--ops-warning: #d29922; /* Warnings, cautions */
}
Typography
:root {
--ops-font-mono: "JetBrains Mono", "Ubuntu Mono", monospace;
--ops-font-body: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}
| Token | Usage | Size |
|---|---|---|
--ops-font-mono | Code blocks, prompts, terminal commands, technical labels, form inputs | 0.88rem–0.95rem |
--ops-font-body | Body text, headings, navigation, buttons | 1rem–6.6rem (headings use clamp) |
Spacing & Layout
:root {
--ops-container-width: 1200px; /* Max content width */
--ops-card-radius: 8px; /* Border radius for cards, panels, inputs */
--ops-transition: 0.15s ease; /* Default transition timing */
}
| Token | Value | Usage |
|---|---|---|
--ops-container-width | 1200px | .inside-header, .opshell-landing, .opshell-element-wrap max-width |
--ops-card-radius | 8px | Cards, terminal panels, form inputs, buttons |
--ops-transition | 0.15s ease | Hover/focus transitions on interactive elements |
Design Tokens Quick Reference
/* DO: */
.element {
background: var(--ops-surface);
color: var(--ops-text);
border: 1px solid var(--ops-border);
font-family: var(--ops-font-mono);
}
/* DON'T: */
.element {
background: #161b22;
color: #c9d1d9;
border: 1px solid #30363d;
font-family: "JetBrains Mono", monospace;
}
Tone & Voice in UI
| Element | Tone | Example |
|---|---|---|
| Prompts | Direct command | $ opshell --mission |
| Headings | Bold, benefit-driven | "Build, automate, and operate from the terminal." |
| Descriptions | Technical, specific | "Practical Linux, CLI, automation, DevOps, AI, and code workflows" |
| Form labels | Minimal, functional | "Your name", not "Please enter your full name" |
| Success messages | Confirmational | "You are in. Check your inbox." (not "Thank you for subscribing!") |
| Error messages | Informational, not apologetic | "Please use a valid, deliverable email address." |
Interaction Patterns
| Pattern | Behavior |
|---|---|
| Hover | Elements lift slightly (translateY(-1px)) with green border highlight |
| Focus | Green outline ring (2px solid var(--ops-accent-green), 3px offset) |
| Selection | Green-tinted background (rgba(63,185,80,0.28)) |
| Transitions | Subtle (0.15s ease) — fast enough to feel responsive, slow enough to be noticeable |
| Blink animation | Only used for cursor effect on terminal prompts (ops-blink keyframe) |
Blink Keyframe
@keyframes ops-blink {
0%, 100% { opacity: 1; }
50% { opacity: 0; }
}
Components Documented
- Hero Section — Terminal-themed hero with email subscription gate (CSS + HTML)
- Email Subscription Form — Lead magnet form shortcode and data flow
- Theme CSS Reference — Complete stylesheet with all CSS sections, variables, responsive breakpoints
- CLI-Expander HTML Landing Page — Design and development log for the standalone landing page
- WPCodeBox Error Log — Known errors and troubleshooting