Overview

Mosaic is a love letter to the Internet of old — a sprawling web collage of text, images, and GIFs excavated from the ruins of GeoCities neighborhoods. It is a digital preservation art project, a 15,880-pixel-tall scroll through the raw, unpolished creative energy of the 1990s web.

URL
CreatorsCameron Askin, Anthony Hughes, Robin Hughes
PublishedAugust 2015
PlatformStatic web — single scrolling page
Source336 archived GeoCities pages via Wayback Machine
Featured inFast Company, VICE, BoingBoing, Huffington Post
ExhibitedColumbia University Wallach Art Gallery, 2017
336
GeoCities Pages
2,052
Images
33
Sections
15,880
Pixels Tall
880
Pixels Wide
2017
Art Gallery Exhibit
⚠ UNDER CONSTRUCTION ⚠

Section Color Journey

The full-page scroll traverses 33 distinct sections, each with its own background color. The palette drifts from near-black darkness through purples and reds, into blues and whites, back through space-dark and neon purples, through nature greens and yellows, and ends in fiery red. This is the visual spine of the experience.

01#0c030b — Near-black (opening darkness)
02#1a0615 — Deep plum
03#2c0b26 — Dark magenta
04#3e1135 — Purple-wine
05#5c1a4e — Deep magenta
06#7a1848 — Cranberry
07#991c3a — Crimson
08#c91d21 — True red
09#e54a1a — Red-orange
10#fd8124 — Bright orange
11#f8a830 — Amber
12#d4a040 — Gold-brown
13#0868f2 — Royal blue
14#3089f7 — Mid blue
15#5eaffc — Sky blue
16#8ec4f8 — Light blue
17#c4d8f0 — Lavender-blue
18#e8e4ec — Near-white lilac
19#ffffff — White
20#d0d0d0 — Light gray
21#a0a0a0 — Mid gray
22#606060 — Dark gray
23#303030 — Charcoal
24#0a0a1a — Space dark
25#1a0a2a — Deep space purple
26#5c18a0 — Vivid purple
27#9818c8 — Neon purple
28#b01040 — Crimson-rose
29#131901 — Dark olive
30#91b236 — Olive green
31#f1f493 — Pale yellow
32#8b6b3e — Earth brown
33#cd2800 — Final red

Neon Accent Colors

These are the vibrant neon accent colors drawn from text, links, animated GIFs, and decorative elements throughout the page. They capture the raw, electric energy of GeoCities at its most expressive.

Neon Green
#2afd2f
Neon Lime
#4bfe00
Yellow
#ffff00
Cyan
#00ffff
Neon Pink
#ff007d
Hot Pink
#fe11a0
Neon Sky
#51f7ff
Magenta
#f44ff4
Mint
#89fe8a
Neon Blue
#00dcff

UI Colors

Functional interface colors used for the Catscape Navigator chrome, dialog boxes, and the classic Windows-style text selection.

Selected text
Selection BG
#0000cc bg / #fff text
Catscape Title Bar
#155362
Dialog Silver
#c0c0c0

Win95 Bevel Colors

Bevel Light
#ffffff
Bevel Mid
#c0c0c0
Bevel Dark
#808080
Bevel Darkest
#000000

Typography

Mosaic uses a deliberately eclectic mix of fonts, matching the chaotic variety of GeoCities pages. Font smoothing is intentionally disabled to preserve the pixelated, aliased look of the original era. image-rendering: pixelated is applied to all images.

Comic Neue Bold (stand-in: Comic Sans MS)
Welcome to my GeoCities page!!!
font-family: 'Comic Sans MS', cursive; font-weight: 700; -webkit-font-smoothing: none;
Calculator / digitaldreamfat (stand-in: Courier New)
08:15:47 PM
font-family: 'Courier New', monospace; font-weight: 700; letter-spacing: 4px;
GT-Cinetype Regular / Light (stand-in: Helvetica Neue)
Curated by Cameron Askin with Anthony & Robin Hughes
A love letter to the Internet of old. Published August 2015.
font-family: 'Helvetica Neue', 'Inter', sans-serif; font-weight: 300/400;
Times / Serif (body text on GeoCities pages)
"This is my homepage. I made it myself using Notepad. Please sign my guestbook before you leave!"
font-family: 'Times New Roman', Times, serif; -webkit-font-smoothing: none;
Arial / Sans-serif (Catscape Navigator chrome)
File   Edit   View   Go   Communicator   Help
font-family: Arial, 'Helvetica Neue', sans-serif; -webkit-font-smoothing: none;
Courier / Monospace (code and technical elements)
<MARQUEE BEHAVIOR="scroll" DIRECTION="left">Welcome!!!</MARQUEE>
font-family: 'Courier New', Courier, monospace; -webkit-font-smoothing: none;

Rendering Notes

PropertyValuePurpose
-webkit-font-smoothingnoneDisables antialiasing for authentic pixelated text
-moz-osx-font-smoothingunsetFirefox equivalent
image-renderingpixelatedPrevents smoothing on scaled GIFs and images
text-renderingoptimizeSpeedPrioritizes speed over legibility (retro feel)

Catscape Navigator 2.0

The centerpiece UI component — a pixel-perfect recreation of a 1990s browser chrome, styled after Netscape Navigator. It frames the archived GeoCities content and serves as the primary interactive viewport. Every detail replicates the Win95 visual language: beveled borders, silver toolbars, and inset status bars.

Catscape Navigator 2.0
_
X
File Edit View Go Communicator Help
◀ Back
Forward ▶
⌂ Home
↻ Reload
📷 Images
🖨 Print
🔒 Security
■ Stop
Original Address:
http://www.geocities.com/SouthBeach/Marina/4942/index.html
★ Welcome to My Page!!! ★
You are visitor number 1,337 to this page!
Loading archived content from Wayback Machine...
Archived by Wayback Machine

Component Specifications

ElementValue
Title bar background#155362 (dark teal)
Title bar text#fff, bold, 13px, Arial
Toolbar background#777777 (silver-gray)
Button styleOutset bevel: white top-left, #808080 bottom-right
Button activeInset bevel: reversed border colors
Address bar bg#c0c0c0 (dialog silver)
Input fieldInset bevel, white background, 12px Arial
Content areaWhite background, max 836x600px
Loading anim60x60px box, pulsing opacity + spinning border
Status barSilver, inset bevel, 11px text

Dialog Box

Catscape Navigator
X
This page uses frames, but your browser does not support them.

OK
ElementValue
Dialog title bar#000080 (navy blue)
Dialog body#c0c0c0 (dialog silver)
Dialog border2px solid #000, 3px 3px box-shadow
Button styleOutset bevel, 12px Arial, 4px 24px padding

Retro Design Patterns

Mosaic faithfully reproduces the visual vocabulary of 1990s GeoCities pages. These patterns are not ironic — they are the authentic visual language of personal expression on the early web, presented as found.

Tiled Backgrounds

Every section uses a tiled background image via background-repeat: repeat. Stars, space textures, nature scenes, and abstract patterns are tiled to fill the viewport. All images are delivered as CSS background-image properties, not <img> tags.

HTML Marquee Text

Scrolling text implemented via CSS animation, reproducing the <marquee> tag behavior.

☆ Have you seen my balls? ☆     ☆ Welcome to the INFORMATION SUPERHIGHWAY ☆     ☆ Sign my guestbook!!! ☆

88x31 Pixel Badges

The iconic micro-banner format of the 1990s web. Each badge is exactly 88 pixels wide by 31 pixels tall.

Netscape NOW!
GeoCities
Hot Site!
Web Ring
Made with Notepad
Best Viewed 800x600
Free Guestbook
MIDI On!

Win95 Beveled Borders

The classic raised (outset) and sunken (inset) border effect, achieved with directional border colors: white top-left highlight, gray bottom-right shadow.

Outset (raised)

This panel uses outset beveling.
border-color: #fff #808080 #808080 #fff;

Inset (sunken)

This panel uses inset beveling.
border-color: #808080 #fff #fff #808080;

Frame Borders

Double-line borders in earth tones, used around content sections to evoke wooden picture frames.

"Framed" content area — border: 3px double #a1724e;

Table-Based Layouts

The original GeoCities pages used <table> elements for all page layout. Mosaic preserves this aesthetic in its positioning of collage elements, though it uses modern CSS (absolute positioning within fixed-width sections) to achieve the same visual result.

<TABLE BORDER="1" CELLPADDING="5" CELLSPACING="0" WIDTH="600" BGCOLOR="#000000">
  <TR>
    <TD WIDTH="150" VALIGN="TOP">Navigation</TD>
    <TD WIDTH="450" VALIGN="TOP">Main Content</TD>
  </TR>
</TABLE>

All Images via CSS background-image

Mosaic delivers all 2,052 images as CSS background-image properties rather than <img> tags. This technique allows precise layering and positioning of the collage elements using absolute positioning, and enables the seamless tiled backgrounds that define each section's atmosphere. GIF animations play via CSS background, and all images use image-rendering: pixelated to preserve the original low-resolution aesthetic.

Custom Dinosaur Cursor

The site uses a custom cursor (a small dinosaur sprite) via cursor: url('dino.cur'), auto; — a direct nod to the custom cursor trend of the late 1990s, when every GeoCities page had an animated or themed cursor.

Layout

The page is a single, non-responsive, vertically scrolling canvas. It is deliberately fixed-width and makes no concessions to modern responsive design. This is a museum piece, not a web app.

PropertyValueNotes
Viewport width880pxFixed, deliberately non-responsive
Total height15,880px33 vertically stacked sections
Section count33Each absolutely positioned
Positioningposition: absoluteAll 33 sections use absolute top offsets
Element positioningposition: absoluteAll collage elements within sections
Overflowhidden (per section)Elements are clipped at section boundaries
Ribbon stripsbackground-repeat: repeat-xHorizontal tiled image strips between sections
Catscape viewportmax 836 x 600pxThe browser-within-a-browser content frame

Section Stacking Model

/* 33 sections, absolutely positioned, stacked vertically */
.section-1 { top: 0; height: 520px; background: #0c030b; }
.section-2 { top: 520px; height: 480px; background: #1a0615; }
.section-3 { top: 1000px; height: 460px; background: #2c0b26; }
/* ... 30 more sections ... */
.section-33 { top: 15380px; height: 500px; background: #cd2800; }

/* Ribbons: tiled horizontal strips connecting sections */
.ribbon { width: 100%; background-repeat: repeat-x; position: absolute; }

Animations

The page is alive with motion: floating elements drift across sections, backgrounds scroll endlessly, rainbow strips cycle through the spectrum, and a blinking cursor awaits input. Durations are intentionally long and varied, creating an organic, dreamlike drift.

Rainbow Strip (15s cycle)

★ WELCOME TO THE INFORMATION SUPERHIGHWAY ★

Float Right (70–80s duration)

Elements float from left to right across the viewport over extremely long durations (70–80 seconds), creating a slow, meditative drift. Shortened here for demonstration.

🐱 🌟

Scrolling Backgrounds (0.5s–30s)

Tiled background images scroll continuously via background-position animation. Durations range from 0.5 seconds (rapid) to 30 seconds (glacial).

Cursor Blink

A blinking block cursor, reminiscent of terminal prompts and early text editors.

C:\GEOCITIES\>

Animation Specifications

AnimationDurationEasingNotes
Float right70–80slinearElements drift across full viewport width
Scrolling bg0.5–30slinearbackground-position animation on tiled images
Rainbow strip15slinearCycles through full spectrum, infinite
Cursor blink1sstep-endBinary on/off, no fade
Loading pulse1sease-in-outCatscape loading indicator opacity
Loading spin0.8slinearCatscape spinner rotation

GeoCities Neighborhoods

GeoCities organized its user pages into themed "neighborhoods." Mosaic draws from pages across these communities. Each neighborhood had its own character, audience, and aesthetic conventions.

Area51 Athens Baja CapeCanaveral CapitolHill CollegePark Colosseum EnchantedForest Eureka FashionAvenue Heartland Hollywood HotSprings MadisonAvenue MotorCity Nashville Paris Pentagon Petsburgh PicketFence Pipeline RainForest ResearchTriangle RodeoDrive SiliconValley SoHo SouthBeach SunsetStrip TelevisionCity TheTropics TimesSquare Tokyo Vienna Wellesley WestHollywood Yosemite

CSS Variables

Copy-paste block of all design tokens as CSS custom properties, ready for use in any project that needs to replicate the Mosaic aesthetic.

/* ============================================ Mosaic — Design System Tokens ============================================ */ :root { /* --- Page backgrounds --- */ --cw-bg-dark: #0c030b; --cw-bg-sidebar: #110711; --cw-bg-card: #1a0a19; /* --- Neon accent palette --- */ --cw-neon-green: #2afd2f; --cw-neon-lime: #4bfe00; --cw-neon-yellow: #ffff00; --cw-neon-cyan: #00ffff; --cw-neon-pink: #ff007d; --cw-hot-pink: #fe11a0; --cw-neon-sky: #51f7ff; --cw-neon-magenta: #f44ff4; --cw-neon-mint: #89fe8a; --cw-neon-blue: #00dcff; /* --- UI chrome colors --- */ --cw-selection-bg: #0000cc; --cw-selection-fg: #ffffff; --cw-catscape-titlebar: #155362; --cw-dialog-silver: #c0c0c0; --cw-dialog-titlebar: #000080; /* --- Win95 bevel system --- */ --cw-bevel-light: #ffffff; --cw-bevel-mid: #c0c0c0; --cw-bevel-dark: #808080; --cw-bevel-darkest: #000000; /* --- Section journey (all 33 backgrounds) --- */ --cw-sec-01: #0c030b; /* Near-black */ --cw-sec-02: #1a0615; /* Deep plum */ --cw-sec-03: #2c0b26; /* Dark magenta */ --cw-sec-04: #3e1135; /* Purple-wine */ --cw-sec-05: #5c1a4e; /* Deep magenta */ --cw-sec-06: #7a1848; /* Cranberry */ --cw-sec-07: #991c3a; /* Crimson */ --cw-sec-08: #c91d21; /* True red */ --cw-sec-09: #e54a1a; /* Red-orange */ --cw-sec-10: #fd8124; /* Bright orange */ --cw-sec-11: #f8a830; /* Amber */ --cw-sec-12: #d4a040; /* Gold-brown */ --cw-sec-13: #0868f2; /* Royal blue */ --cw-sec-14: #3089f7; /* Mid blue */ --cw-sec-15: #5eaffc; /* Sky blue */ --cw-sec-16: #8ec4f8; /* Light blue */ --cw-sec-17: #c4d8f0; /* Lavender-blue */ --cw-sec-18: #e8e4ec; /* Near-white lilac */ --cw-sec-19: #ffffff; /* White */ --cw-sec-20: #d0d0d0; /* Light gray */ --cw-sec-21: #a0a0a0; /* Mid gray */ --cw-sec-22: #606060; /* Dark gray */ --cw-sec-23: #303030; /* Charcoal */ --cw-sec-24: #0a0a1a; /* Space dark */ --cw-sec-25: #1a0a2a; /* Deep space purple */ --cw-sec-26: #5c18a0; /* Vivid purple */ --cw-sec-27: #9818c8; /* Neon purple */ --cw-sec-28: #b01040; /* Crimson-rose */ --cw-sec-29: #131901; /* Dark olive */ --cw-sec-30: #91b236; /* Olive green */ --cw-sec-31: #f1f493; /* Pale yellow */ --cw-sec-32: #8b6b3e; /* Earth brown */ --cw-sec-33: #cd2800; /* Final red */ /* --- Frame & border --- */ --cw-frame-border: #a1724e; --cw-border-subtle: #2a1a28; /* --- Typography --- */ --cw-font-comic: 'Comic Sans MS', 'Comic Sans', cursive; --cw-font-calculator: 'Courier New', 'Lucida Console', monospace; --cw-font-cinetype: 'Helvetica Neue', 'Inter', Arial, sans-serif; --cw-font-body: 'Times New Roman', Times, serif; --cw-font-chrome: Arial, 'Helvetica Neue', sans-serif; --cw-font-mono: 'Courier New', Courier, monospace; /* --- Layout --- */ --cw-viewport-width: 880px; --cw-total-height: 15880px; --cw-section-count: 33; --cw-catscape-max-w: 836px; --cw-catscape-max-h: 600px; --cw-badge-width: 88px; --cw-badge-height: 31px; /* --- Animation durations --- */ --cw-anim-float: 70s; --cw-anim-scroll-fast: 0.5s; --cw-anim-scroll-slow: 30s; --cw-anim-rainbow: 15s; --cw-anim-blink: 1s; }
★ You are visitor number 00336 ★
Design system extracted from — A love letter to the Internet of old
Cameron Askin, Anthony Hughes, Robin Hughes — August 2015
Best Viewed in Catscape

Tailwind Mapping

The paired JSON export now includes a tailwind section with theme extensions and component recipes. Use these mappings instead of default Tailwind tokens when recreating this system.

// tailwind.config.js
import designSystem from './design-system.json';

export default {
  theme: {
    extend: designSystem.tailwind.website.theme.extend,
  },
};

// Swap to designSystem.tailwind.app.theme.extend for app/portal surfaces.
ScopePrimaryBody FontRadiusShadowBreakpoint
Website
ScopeRecipeClass PatternNotes
WebsitebuttonPrimaryinline-flex items-center justify-center gap-2 rounded-md bg-brand-primary text-text-inverse shadow-sm px-4 py-2 font-semibold transition-colorsPrimary action button using exported brand, radius, and shadow tokens.
WebsitesurfaceCardrounded-md bg-surface-base text-text-primary border border-border-subtle shadow-sm p-6Default surface/card treatment for high-visibility content areas.
WebsiteinputFieldrounded-md border border-border-subtle bg-surface-base text-text-primary px-3 py-2 focus:outline-none focus:ring-2 focus:ring-focus-ringBase text input treatment aligned to the exported radius, border, and focus tokens.