Windows 98 Portfolio combines Tailwind CSS utility classes with a set of hand-written custom classes that recreate the visual language of Windows 98. Tailwind handles layout, spacing, and typography; the custom classes handle the details that Tailwind’s utility model cannot express concisely — multi-side border tricks, box-shadow insets, and the CRT post-processing layer.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/apursley2012/windows-98/llms.txt
Use this file to discover all available pages before exploring further.
Retro color palette
A custom color extension adds nine named tokens to Tailwind’s default palette. Every token is available as abg-, text-, and border- utility class in the same way Tailwind’s built-in colors work.
| Token | Example classes | Hex value | Usage |
|---|---|---|---|
retro-navy | bg-retro-navy, text-retro-navy, border-retro-navy | #000080 | Title bars, active selections, primary headings |
retro-magenta | bg-retro-magenta, text-retro-magenta, border-retro-magenta | #ec4899 | Accent highlights, sender names in chat, decorative stars |
retro-turquoise | bg-retro-turquoise, text-retro-turquoise, border-retro-turquoise | #00cfd1 | Dividers, case-study decorations, icon tints |
retro-teal | bg-retro-teal, text-retro-teal, border-retro-teal | #0d9488 | Desktop background colour, subtle panel backgrounds |
retro-gray | bg-retro-gray, border-retro-gray | #c0c0c0 | Window chrome, button surfaces, panel fill — the classic silver |
retro-darkgray | border-retro-darkgray, text-retro-darkgray | #808080 | Inset border shadows, disabled text, secondary labels |
retro-white | bg-retro-white, text-retro-white, border-retro-white | #ffffff | Content area backgrounds, inset panel fills |
retro-black | text-retro-black | #0a0a0a | Near-black body text, text-shadow base colour |
retro-cyan | text-retro-cyan | #5eead4 | Terminal text colour in the MS-DOS Skills window |
Win98 border classes
The three custom border classes are the visual core of the Windows 98 aesthetic. They replicate the beveled 3D border effect that Windows 98 used throughout its UI by combiningborder shorthand with a layered box-shadow inset.
| Class | Effect | When to use |
|---|---|---|
.win98-out | Raised — white top and left border, black bottom and right, inner highlight and outer shadow | Window chrome, raised panels, toolbars |
.win98-in | Sunken / inset — gray top and left border, white bottom and right, dark inner shadow | Text inputs, list boxes, content panes, address bars |
.win98-btn | Button raised with an active state that flips to inset on click | All clickable buttons throughout the app |
CRT effect classes
Two fixed-position layers are always rendered on top of all page content to simulate an old cathode-ray tube monitor..crt-overlay — scanlines
A fixed 100vw × 100vh element with z-index: 9998 and pointer-events: none. It applies a repeating linear gradient that alternates between a fully transparent strip and a semi-transparent black strip every 4 pixels, producing horizontal scanlines:
.crt-vignette — dark edges
A fixed 100vw × 100vh element with z-index: 9999 and pointer-events: none. It uses a radial gradient to darken the edges of the screen while keeping the centre transparent, mimicking the light fall-off of a curved CRT screen:
z-index: 10000.
Typography utility classes
Three Google Fonts are loaded via@import in assets/main.css and mapped to Tailwind font-family utilities:
| Tailwind class | Font family | Typical use |
|---|---|---|
font-pixel | Pixelify Sans | Window titles, desktop icon labels, section headings |
font-vt323 | VT323 | Terminal / MS-DOS output, the visitor counter display |
font-mono | IBM Plex Mono | Body content inside windows, chat messages, form labels |
text-shadow-retro, adds a single-pixel black drop shadow that improves legibility when pixel fonts are rendered at small sizes against coloured backgrounds:
The
body sets cursor: none globally, hiding the system cursor across the entire app. The CustomCursor component renders a pixel-art SVG arrow that follows mousemove events at z-index: 10000. On touch devices — where (hover: none) and (pointer: coarse) is true — body and .cursor-none restore cursor: auto, and .win98-btn also switches to cursor: auto so buttons remain usable without a mouse.