Modern web applications with authentic Windows 3.1 aesthetic. Solid navy title bars, Program Manager navigation, beveled borders, single window controls...
Creates modern 2026 web applications with authentic Windows 3.1 aesthetic. Not recreating 1992βextrapolating Win31 to modern contexts: AI assistants as Cue Card systems, mobile as pocket organizers, responsive as tiled MDI windows.
Use for:
Do NOT use for:
| Feature | Windows 3.1 | Windows 95 |
|---|---|---|
| Title bar | Solid navy (#000080) | Gradient (darkβlight blue) |
| Window controls | Single menu button | Three buttons (β, β‘, Γ) |
| Navigation | Program Manager | Start Menu + Taskbar |
| Fonts | Bitmap/VT323 | MS Sans Serif, Tahoma |
| Icons | 32Γ32 flat | 32Γ32 with drop shadow |
| Depth | Bevels only | Bevels + subtle gradients |
| AI style | Cue Cards, Wizards | Clippy character |
| Color | Hex | CSS Variable | Usage |
|---|---|---|---|
| System Gray | #c0c0c0 | --win31-gray |
THE primary background |
| Dark Gray | #808080 | --win31-dark-gray |
Shadows, pressed states |
| Light Gray | #dfdfdf | --win31-light-gray |
Highlights |
| Navy | #000080 | --win31-navy |
Title bar (SOLID, no gradient) |
| Teal | #008080 | --win31-teal |
Desktop, links, highlights |
| White | #ffffff | --win31-white |
Beveled highlights, inputs |
| Black | #000000 | --win31-black |
Beveled shadows, borders |
THE signature Win31 element - solid navy, no gradient:
.win31-titlebar {
background: #000080; /* SOLID - never a gradient! */
color: white;
font-family: 'VT323', 'Courier New', monospace;
font-weight: bold;
font-size: 11px;
padding: 3px 6px;
display: flex;
align-items: center;
justify-content: space-between;
}
.win31-titlebar-inactive {
background: #808080; /* Solid dark gray when inactive */
}
Win31 has ONE control button (not Win95's three):
.win31-control-btn {
width: 18px;
height: 14px;
background: var(--win31-gray);
border: none;
font-size: 8px;
font-family: var(--font-pixel);
/* 3D bevel - outset */
box-shadow:
inset -1px -1px 0 var(--win31-black),
inset 1px 1px 0 var(--win31-white),
inset -2px -2px 0 var(--win31-dark-gray),
inset 2px 2px 0 var(--win31-light-gray);
}
.win31-control-btn:active {
box-shadow:
inset 1px 1px 0 var(--win31-black),
inset -1px -1px 0 var(--win31-white);
}
OUTSET (Raised) - Buttons, toolbars:
INSET (Sunken) - Text fields, content areas:
| Use | Font | Fallback | Size |
|---|---|---|---|
| UI Labels | VT323 | Courier New | 12px |
| Title bars | VT323 Bold | Courier New Bold | 11px |
| Headings | Press Start 2P | VT323 | 14px |
| Code | IBM Plex Mono | Courier Prime | 12px |
Web font stack:
:root {
--font-win31-ui: 'VT323', 'Courier New', monospace;
--font-win31-pixel: 'Press Start 2P', 'VT323', monospace;
--font-win31-code: 'IBM Plex Mono', 'Courier Prime', monospace;
}
Win31 would present AI as a modal wizard system, not an animated character:
ββ AI Assistant ββββββββββββββββββββββ[β]ββ
β β
β ββββββββββββββββββββββββββββββββββββββ β
β β What would you like help with? β β
β β β β
β β β Writing a document β β
β β β Working with files β β
β β β Setting up your system β β
β β β Learning Windows basics β β
β ββββββββββββββββββββββββββββββββββββββ β
β β
β [ OK ] [ Cancel ] [ Help ] β
ββββββββββββββββββββββββββββββββββββββββββββ
Key patterns:
Win31 on mobile extrapolates to pocket organizer with Program Manager:
ββββββββββββββββββββββββββββββ
β β Program Manager β 10:45 β β Title bar with time
ββββββββββββββββββββββββββββββ€
β ββββββββββββββββββββββββββ β
β β Main β β
β β βββββββββββββββββββββββββ£ β
β β βββββ βββββ β β
β β βπβ βπβ β β β Program group
β β βMgrβ βWrtβ β β
β β βββββ βββββ β β
β ββββββββββββββββββββββββββ β
ββββββββββββββββββββββββββββββ€
β [ Window ] [ Help ] β β Menu bar bottom
ββββββββββββββββββββββββββββββ
Key patterns:
Win31 used Multiple Document Interface. Apply this:
| Breakpoint | Win31 Metaphor | Layout |
|---|---|---|
| Mobile (<640px) | Pocket computing | Single window, modal dialogs |
| Tablet (640-1024px) | Laptop | Cascading windows |
| Desktop (>1024px) | Full desktop | Tiled MDI windows |
Windows 3.1 had limited but memorable themes:
/* Hotdog Stand (the infamous red/yellow) */
[data-theme="hotdog-stand"] {
--win31-gray: #ff0000;
--win31-dark-gray: #800000;
--win31-light-gray: #ff8080;
--win31-navy: #ffff00;
--win31-title-text: #ff0000;
}
/* Monochrome (high contrast) */
[data-theme="monochrome"] {
--win31-gray: #ffffff;
--win31-dark-gray: #000000;
--win31-light-gray: #ffffff;
--win31-navy: #000000;
--win31-teal: #000000;
}
.win31-program-manager {
position: fixed;
inset: 0;
background: var(--win31-teal);
display: flex;
flex-direction: column;
}
.win31-program-group {
background: var(--win31-gray);
border: 3px solid var(--win31-black);
box-shadow:
inset 2px 2px 0 var(--win31-white),
inset -2px -2px 0 var(--win31-dark-gray);
margin: 8px;
min-width: 200px;
}
.win31-program-group-titlebar {
background: var(--win31-navy);
color: var(--win31-white);
padding: 2px 6px;
font-family: var(--font-pixel);
font-size: 10px;
font-weight: bold;
}
.win31-program-icons {
display: grid;
grid-template-columns: repeat(auto-fill, 64px);
gap: 8px;
padding: 12px;
}
.win31-dialog {
min-width: 300px;
background: var(--win31-gray);
border: 3px solid var(--win31-black);
box-shadow:
inset 2px 2px 0 var(--win31-white),
inset -2px -2px 0 var(--win31-dark-gray),
4px 4px 0 var(--win31-black);
}
.win31-dialog-content {
padding: 16px;
display: flex;
gap: 16px;
}
.win31-dialog-icon {
width: 32px;
height: 32px;
flex-shrink: 0;
}
.win31-dialog-buttons {
display: flex;
justify-content: center;
gap: 8px;
padding: 8px 16px 16px;
}
.win31-menubar {
background: var(--win31-gray);
border-bottom: 2px solid var(--win31-dark-gray);
padding: 2px;
display: flex;
gap: 0;
}
.win31-menu-item {
padding: 4px 12px;
font-family: var(--font-pixel);
font-size: 11px;
cursor: pointer;
}
.win31-menu-item:hover,
.win31-menu-item--active {
background: var(--win31-navy);
color: var(--win31-white);
}
.win31-menu-dropdown {
position: absolute;
background: var(--win31-gray);
border: 2px solid;
border-color: var(--win31-white) var(--win31-black)
var(--win31-black) var(--win31-white);
min-width: 150px;
z-index: 100;
}
.win31-statusbar {
display: flex;
gap: 2px;
padding: 2px;
background: var(--win31-gray);
border-top: 2px solid var(--win31-dark-gray);
}
.win31-statusbar-panel {
flex: 1;
padding: 2px 8px;
font-family: var(--font-pixel);
font-size: 10px;
border: 1px solid;
border-color: var(--win31-dark-gray) var(--win31-white)
var(--win31-white) var(--win31-dark-gray);
}
Novice thinking: "Win31 has blue title bars like Win95"
Reality: Win31 has SOLID navy. Gradient is Win95 only.
Instead: background: #000080 (never linear-gradient)
Novice thinking: "Windows has minimize, maximize, close" Reality: Win31 has a SINGLE menu button (β). The three-button pattern is Win95. Instead: One button that opens a system menu
Novice thinking: "Windows navigation = Start button" Reality: Win31 uses Program Manager. No taskbar, no Start. Instead: Program groups with cascading/tiled windows
Novice thinking: #00d4ff, #ff00ff for retro feel Reality: This is vaporwave, not Win31 Instead: Muted palette: teal (#008080), navy (#000080), gray (#c0c0c0)
Novice thinking: border-radius: 8px for friendly UI
Reality: Win31 has sharp 90Β° corners everywhere
Instead: No border-radius (or 0)
Novice thinking: backdrop-filter: blur(10px), soft shadows
Reality: Win31 has no blurβonly hard-edge bevels
Instead: Sharp bevel shadows: box-shadow: 4px 4px 0 #000
Novice thinking: Dark mode = #1a1a2e backgrounds Reality: Win31 is LIGHT. System gray (#c0c0c0) everywhere. Instead: Light gray base with teal desktop
Novice thinking: Win31 had assistant characters Reality: Clippy came with Office 97 (Win95 era). Win31 used Cue Cards. Instead: Modal dialogs, step-by-step wizards, floating help cards
Is it a window chrome element?
βββ Title bar? β SOLID navy (no gradient!)
βββ Control button? β SINGLE button (not three)
βββ Button? β 3D bevel (white TL, black BR)
βββ Input? β Inset bevel (dark TL, white BR)
βββ Content area? β White or gray, flat
Is it navigation?
βββ Primary nav? β Program Manager groups
βββ Section nav? β Menu bar with dropdowns
βββ Page nav? β List box or tree control
βββ Actions? β Toolbar buttons (beveled)
Is it AI/help?
βββ Onboarding? β Setup Wizard (Step X of Y)
βββ Inline help? β Cue Cards (floating tips)
βββ Questions? β Modal dialog with options
βββ Feedback? β Message box with icon
Is it responsive?
βββ Mobile? β Single window, modal stack
βββ Tablet? β Cascading windows
βββ Desktop? β Tiled MDI layout
:root {
/* Core palette */
--win31-white: #ffffff;
--win31-black: #000000;
--win31-gray: #c0c0c0;
--win31-dark-gray: #808080;
--win31-light-gray: #dfdfdf;
--win31-navy: #000080;
--win31-teal: #008080;
/* Semantic */
--win31-error: #ff0000;
--win31-warning: #ffff00;
--win31-success: #00ff00;
--win31-info: #0000ff;
/* Typography */
--font-win31-ui: 'VT323', 'Courier New', monospace;
--font-win31-pixel: 'Press Start 2P', 'VT323', monospace;
--font-win31-code: 'IBM Plex Mono', 'Courier Prime', monospace;
/* Spacing (4px grid) */
--win31-spacing-xs: 2px;
--win31-spacing-sm: 4px;
--win31-spacing-md: 8px;
--win31-spacing-lg: 16px;
--win31-spacing-xl: 24px;
}
If your component has:
It should have:
For authentic Win31 feel:
README.TXT, INSTALL.EXEPROGRAM.EXE, CONFIG.SYS.WRI, .BMP, .INI/references/design-system.md - Complete color palette, typography, beveled border patterns/references/component-patterns.md - Full CSS for windows, buttons, forms, panels/references/anti-patterns.md - Vaporwave comparison, decision tree, conversion examples/references/ai-assistant-patterns.md - Cue Card-style AI UX patterns/references/mobile-pocket-computing.md - Responsive Win31 for mobile