Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/apursley2012/dev-mode-arcade/llms.txt

Use this file to discover all available pages before exploring further.

Dev Mode Arcade’s typography is built on exactly two font families: VT323, a bitmap pixel font that handles all UI chrome and headings, and JetBrains Mono, a variable-weight monospace face used for body copy and code-adjacent content. Together they create an aesthetic that reads like a developer’s terminal crossed with a 1980s arcade cabinet marquee. This page documents every aspect of the type system — loading, sizing, spacing modifiers, and the conventions used across the portfolio.

Font Stack Overview

RoleFamilyTailwind ClassFallback
Headings, labels, buttons, UI chromeVT323font-pixelmonospace
Body text, code-style content, paragraphsJetBrains Monofont-monomonospace
Both families share a monospace fallback, which preserves the fixed-width grid feel even if the Google Fonts request fails to resolve.

Font Loading

Both fonts are loaded via a single @import at the top of main.css, pointing to Google Fonts. The display=swap parameter ensures text renders in the fallback font immediately, swapping in the custom face once the download completes — no invisible text during load.
@import "https://fonts.googleapis.com/css2?family=JetBrains+Mono:ital,wght@0,400;0,700;1,400&family=VT323&display=swap";
Variants loaded:
FamilyWeights / Styles
VT323400 (the only weight the family offers)
JetBrains Mono400 regular, 700 bold, 400 italic
VT323 is a bitmap pixel font with a single weight. Bold variants simply render at the same weight — do not use font-bold on font-pixel elements expecting heavier strokes. Use size and color instead of weight to create hierarchy within pixel-font headings.
The font-pixel and font-mono classes are registered in Tailwind and resolve to:
.font-pixel { font-family: VT323, monospace; }
.font-mono  { font-family: JetBrains Mono, monospace; }

VT323 — Pixel Font

VT323 is used for every element that belongs to the UI layer: page headings, section titles, navigation labels, button text, chip labels, stat names, and any decorative arcade copy. Its pixelated bitmap geometry is the primary carrier of the retro aesthetic.

When to Use

  • All <h1> through <h4> headings
  • Button labels and CTA text
  • Metadata tags, genre chips, skill names
  • Navigation items and UI chrome
  • Decorative marquee or “attract mode” text

When NOT to Use

  • Long body paragraphs (readability degrades below text-lg at small viewport widths)
  • Form field values typed by the user
  • Code snippets or technical strings — use font-mono for those

VT323 Usage Examples

<!-- Hero heading -->
<h1 class="font-pixel text-6xl md:text-8xl text-arcade-lime text-glow-lime uppercase">
  DEV MODE
</h1>

<!-- Section heading -->
<h2 class="font-pixel text-4xl text-arcade-purple text-glow-purple">
  SKILL TREE
</h2>

<!-- Sub-section heading -->
<h3 class="font-pixel text-3xl text-arcade-magenta">
  BOSS FIGHTS
</h3>

<!-- Button label -->
<button class="font-pixel text-xl text-arcade-bg uppercase tracking-widest bg-arcade-lime px-6 py-2">
  INSERT COIN
</button>

<!-- Metadata label / chip -->
<span class="font-pixel text-sm text-arcade-cyan uppercase tracking-widest">
  GENRE: React / Three.js
</span>

JetBrains Mono — Monospace Body Font

JetBrains Mono handles all prose and code-adjacent content — project descriptions, bio paragraphs, case study narratives, and form field labels. Its fixed-width columns keep the terminal-screen feel alive in longer text while remaining highly readable at small sizes.

When to Use

  • Body paragraphs and descriptive copy
  • Code snippets embedded in content
  • Form field text and placeholder copy
  • Supporting details under pixel-font headings

JetBrains Mono Usage Examples

<!-- Body paragraph -->
<p class="font-mono text-arcade-text/80 leading-relaxed">
  Full-stack developer specializing in interactive React applications,
  3D web experiences, and developer tooling. Currently available for
  contract work.
</p>

<!-- Inline code label -->
<code class="font-mono text-arcade-cyan text-sm bg-arcade-mid px-1 py-0.5 rounded-sm">
  npm run dev
</code>

<!-- Form input -->
<input
  class="font-mono text-arcade-text bg-arcade-mid border border-arcade-purple/50 p-3 w-full"
  placeholder="your@email.com"
/>

Type Scale

The project uses Tailwind’s default type scale. The table below shows every size class used across the codebase, its computed CSS value, and where it appears in the UI.
Tailwind ClassFont SizeLine HeightUsed For
text-xs0.75 rem (12 px)1 remFine-print labels, decorative corner text
text-sm0.875 rem (14 px)1.25 remMetadata chips, tag labels, captions
text-base1 rem (16 px)1.5 remDefault body (md:text-base on monospace)
text-lg1.125 rem (18 px)1.75 remProminent body copy, card descriptions
text-xl1.25 rem (20 px)1.75 remButton labels, sub-headings
text-2xl1.5 rem (24 px)2 remCard titles, panel headers
text-3xl1.875 rem (30 px)2.25 remSection sub-headings (<h3>)
text-4xl2.25 rem (36 px)2.5 remSection headings (<h2>)
text-5xl3 rem (48 px)1Page headings (<h1> on mobile)
text-6xl3.75 rem (60 px)1Large page headings
text-8xl6 rem (96 px)1Hero display text (md:text-8xl)
Because VT323 is a pixel font with tight inherent spacing, text-5xl and above are where it truly shines — the individual pixel blocks become decorative at large sizes. For headings smaller than text-3xl, add tracking-wide to help letterforms breathe.

Spacing & Decoration Modifiers

Arcade Button Label Style

The signature arcade button label combines uppercase transformation with maximum letter spacing. Both utilities together create the “insert coin” placard aesthetic:
<button class="font-pixel text-xl uppercase tracking-widest text-arcade-bg bg-arcade-lime px-6 py-2">
  START GAME
</button>
UtilityEffect
uppercasetext-transform: uppercase — all caps
tracking-widestletter-spacing: 0.1em — wide arcade spacing

Line Height for Prose

Body paragraphs use leading-relaxed (line-height: 1.625) to counter the naturally tight monospace rhythm:
<p class="font-mono text-arcade-text/80 leading-relaxed">
  Paragraph copy with comfortable reading rhythm.
</p>

Opacity Modifier Pattern

The /80 opacity modifier on text-arcade-text is the standard for body copy — it softens the bright lavender to a comfortable reading level without switching to a different token:
ClassAlphaUse case
text-arcade-text100%Headings, high-importance copy
text-arcade-text/9090%Prominent body text
text-arcade-text/8080%Standard body paragraphs
text-arcade-text/7070%Supporting / secondary copy
text-arcade-text/5050%Placeholder text, disabled states

Heading Hierarchy Example

The following pattern shows the full heading hierarchy used within a typical section of the portfolio:
<!-- Page heading -->
<h1 class="font-pixel text-5xl text-arcade-lime text-glow-lime">
  CHARACTER BIO
</h1>

<!-- Section heading -->
<h2 class="font-pixel text-3xl text-arcade-magenta">PREVIOUS LIVES</h2>

<!-- Body text -->
<p class="font-mono text-arcade-text/80 leading-relaxed">
  Body content here.
</p>

<!-- Label/metadata -->
<span class="font-pixel text-sm text-arcade-cyan uppercase tracking-widest">
  GENRE: React / Three.js
</span>
Key conventions illustrated above:
  1. font-pixel on every heading, label, and UI element
  2. font-mono exclusively for prose
  3. Glow utilities (text-glow-lime, etc.) on hero-level headings only — overuse dilutes the effect
  4. uppercase tracking-widest on all metadata tags and button-like labels
  5. Opacity modifiers on body text, never on headings
  6. Each level uses a different accent color to create semantic color hierarchy: lime for primary page titles, magenta for section headings, cyan for metadata

Responsive Typography

The only responsive font override defined in the project scales the hero heading on the Home screen from text-6xl on mobile up to text-8xl on medium breakpoints and above:
<h1 class="font-pixel text-6xl md:text-8xl text-arcade-lime text-glow-lime">
  DEV MODE ARCADE
</h1>
All other type sizes are static — the fixed-width nature of monospace fonts and the grid layout of the portfolio keep everything readable without additional breakpoint overrides.
  • Design Tokens — color classes and glow utilities used on type elements
  • Animations — flicker and Framer Motion effects applied to headings
  • Arcade Button — component that applies the full button label style
  • Home — hero heading with text-8xl and text-glow-lime
  • Customization — swapping fonts for a different aesthetic

Build docs developers (and LLMs) love