# Design Language for digitaltelomere.com

## Aesthetics and Tone

The domain **digitaltelomere.com** fuses biology and computation: a telomere is the repetitive nucleotide sequence capping a chromosome's end — the biological clock, the fraying edge, the place where copies begin to diverge. Paired with "digital," it conjures something specific: a **signal that has been duplicated too many times**. Each copy introduces error. Each error accumulates warmth. Each iteration of the machine is a little older than the last.

The aesthetic is **glitch as biological decay** — not the aggressive RGB-split of cyberpunk, not the harsh scanline noise of vaporwave. This is *softer*, warmer, more melancholy. Think of a VHS tape recorded over twelve times, or a photocopy of a photocopy of a photocopy — the burgundy bleeds into cream at the edges, text ghosts across the frame, waveforms develop tremors that are almost musical. The site exists in the moment *before* complete signal loss — still readable, still beautiful, but visibly fraying.

The tone is **nostalgic-retro** in the specific mode of late-1990s Macintosh UI — the era of Frutiger Aero, translucent plastics, the Apple System 7 Human Interface Guidelines rendered in warm burgundy instead of platinum. Not ironic retrofuturism; genuine affection for a design language that was confident before the web became cynical. The site asks: *what would a biosystems research portal from 1998 look like if it aged gracefully instead of being abandoned?*

**Mood references:** A faded biology textbook with hand-annotated margins. The color of old scientific slides — burgundy and ivory. A spectrometer reading that is almost, but not quite, flat. Signal degradation as intimacy.

## Layout Motifs and Structure

The layout is a **horizontal scroll through five chromatic chambers**, each representing one stage of telomere degradation. The visitor does not scroll down — they move right, through five full-viewport panels arranged on a single horizontal axis. This is not a carousel; there is no snapping, no pagination dots, no arrows. Movement is fluid, inertial, weighted — like turning the leaves of a bound atlas.

**Panel architecture (5 panels, each 100vw × 100vh):**

1. **INTACT** — Full burgundy saturation, cream type at its sharpest. The telomere is undamaged. Abstract oval shapes are crisp and precisely inked.
2. **REPLICATION** — First evidence of drift. A ghost of the panel title appears 3px offset, cream slightly yellowed. Oval shapes begin to show hairline tremors.
3. **EROSION** — Signal clearly degrading. Horizontal tape-slip glitch events punctuate the background. Waveform motifs develop irregular phase. Typography shows sub-pixel chromatic spread.
4. **SENESCENCE** — Burgundy washes to a warm brownish-rose. Cream deepens to antique ivory. Waveforms lose coherence; shapes fragment. The cursor follower lags behind the pointer with visible inertia.
5. **SILENCE** — Near-signal-loss. Color almost entirely drained to a pale blush and bone white. A single pure-tone waveform flatlines across the panel. The title fades to 20% opacity.

**Spatial logic:** Each panel uses a **left-anchored composition at 8vw margin**, with primary typographic block in the upper-left quadrant and the abstract SVG illustration anchored to the lower-right. The cursor-follow element (a soft translucent orb, ~120px diameter) moves through each panel with a different lag constant — 0.12 in panel 1, increasing to 0.04 in panel 5, representing the dying reflex.

**No navigation bar.** No footer. A single persistent progress strip at the bottom: a 2px burgundy line, 100vw, that fills as the visitor moves through the panels, itself subject to the degradation system (it develops tremors in panels 3–5).

## Typography and Palette

**Typography (all Google Fonts, verified):**

- **Display / Panel Titles:** [Nunito Sans](https://fonts.google.com/specimen/Nunito+Sans), weight 300, letter-spacing 0.15em, all-caps. Nunito Sans is the closest Google Fonts match to the Frutiger-clean register — it has the same humanist softness, the same slightly rounded terminals, the same confident readability at large sizes. Used at clamp(4rem, 8vw, 10rem) for panel identifiers. In panel 1 it renders cleanly; by panel 4, a CSS `text-shadow` ghost at +3px/+1px mimics chromatic aberration.

- **Body / Annotations:** [DM Sans](https://fonts.google.com/specimen/DM+Sans), weight 400, at 0.9rem/1.7 leading. Short annotation blocks (two to four lines) accompany each panel — they read like captions in a scientific atlas. DM Sans's optical size neutrality keeps these blocks readable even as the surrounding visual system decays.

- **Data / Sequence Display:** [Azeret Mono](https://fonts.google.com/specimen/Azeret+Mono), weight 400, used exclusively for nucleotide sequences (TTAGGG repeats rendered as decorative data blocks), degradation counters, and the progress readout. Azeret Mono has a gentler texture than most grotesque monospaces — its rounded bowls match the Frutiger-Aero warmth.

**Palette:**

| Role | Hex | Name |
|------|-----|------|
| Primary Burgundy | `#6B1F3A` | Deep biological stain |
| Secondary Burgundy | `#8C2E50` | Warm middle burgundy |
| Cream Base | `#F5EFE0` | Aged parchment |
| Cream Deep | `#E8DCC8` | Scientific slide ivory |
| Ghost Burgundy | `#B87A94` | Faded signal |
| Signal Blush | `#D4A4B5` | Late-stage wash |
| Near-Silence | `#EEE4DC` | Pre-flatline |
| Bone White | `#F9F4ED` | Terminal cream |

The palette degrades panel by panel: panel 1 uses Primary Burgundy + Cream Base; each subsequent panel shifts toward Ghost Burgundy and Signal Blush, reaching Near-Silence and Bone White in panel 5. No black. No grays. The system lives entirely within warm rose-cream space.

## Imagery and Motifs

**All imagery is custom SVG** — no photography, no raster, no stock.

**Abstract shapes (the telomere visualization):**
Each panel features a set of nested oval/elliptical paths representing telomere caps. In panel 1 they are clean, precisely stroked concentric rings (stroke: 1.5px, Primary Burgundy, no fill). As panels progress, these shapes acquire:
- Jitter: a `feTurbulence` SVG filter tuned to introduce low-frequency wobble that increases in amplitude per panel
- Fragmentation: in panels 4–5, individual paths are clipped to arcs, the shapes visually incomplete
- The innermost ellipse in panel 5 is a near-invisible hairline on Bone White

**Waveform motifs (the recurring decorative system):**
A set of three `<polyline>` waveforms runs horizontally across each panel at different vertical positions (22%, 50%, 78% from top). In panel 1, these are clean sinusoids computed at 120 sample points. Each subsequent panel introduces:
- Phase drift: the fundamental frequency shifts slightly, making the wave "breathe" irregularly
- Amplitude noise: a Perlin-derived offset adds small irregular bumps
- Gap erasure: in panels 4–5, sections of the polyline are removed, creating signal dropout arcs

These waveforms are not animated in the conventional sense — they respond to **scroll position** as their primary input, with the horizontal scroll X coordinate mapped to a phase parameter. Scrolling drives the waveform; the waveform embodies the act of scrolling.

**Cursor follower:**
A single `<div class="orb">` — a soft radial gradient circle (Primary Burgundy at 8% opacity at center, fully transparent at edge, 120px diameter in panel 1 shrinking to 60px in panel 5). It follows the cursor with a lerp factor that decreases with each panel, making it progressively more sluggish and dissociated. In panels 4–5 it also develops a lateral tremor (±4px oscillation at 2.3Hz) independent of cursor movement.

**Nucleotide sequence blocks:**
Each panel includes a small monospaced data block showing a degrading TTAGGG repeat sequence. Panel 1: `TTAGGG TTAGGG TTAGGG TTAGGG TTAGGG`. Panel 5: `TTAGG· TTA·GG ·T·A·G TT···G ·····G`. The dots represent missing base pairs — rendered as `·` in Azeret Mono, colored Signal Blush.

## Prompts for Implementation

**The story to tell.** A visitor is paging through a digital microscopy atlas of chromosomal aging. The atlas was digitized in 1998 and has been served from an aging server ever since. Each time a visitor accesses it, the server reads the same file slightly incorrectly — a bit here, a byte there. The visitor is experiencing the 10,000th access. The images are still recognizable. The data is still meaningful. But the signal is tired. The horizontal scroll moves them through five stages: the healthy specimen, the first replication, the visible erosion, the senescent cell, and finally the silence before the telomere is gone.

**Key implementation directives:**

1. **Horizontal scroll is the only scroll axis.** Set `body { overflow-x: scroll; overflow-y: hidden; }` and wrap all five panels in a single flex container at `width: 500vw`. No vertical scroll anywhere.

2. **CSS custom property depth system.** Each panel has a `data-depth` attribute (0–4). A single JavaScript function maps scroll position to `--depth` (0.0 to 1.0) on each panel. Every visual degradation effect reads from `--depth`: the glitch filter intensity, the waveform phase offset, the orb lag, the ghost opacity, the palette shift. Nothing is hardcoded per-panel.

3. **Cursor follower with panel-aware lag.** The orb lerp factor is `0.12 - (depth * 0.02)` — starts responsive, becomes almost disconnected by panel 5. The tremor oscillation is `sin(Date.now() * 0.0023) * depth * 4` added to the X transform.

4. **SVG filters for glitch degradation.** Use a single `<defs>` block with `feTurbulence` + `feDisplacementMap`. The `baseFrequency` attribute is set from `--depth`: `0.001 + depth * 0.008`. Panel 1 shows no perceptible distortion; panel 5 shows visible wavy displacement across all SVG elements.

5. **Waveform scroll-phase linkage.** On each `scroll` event, compute `phase = scrollLeft / (totalWidth - vw)` (0.0–1.0). Each waveform's Y values use `sin(x * frequency + phase * TWO_PI + panelOffset)`. This makes the waveforms animate as the visitor scrolls — the act of reading the atlas is itself encoded in the wave.

6. **Typography ghost effect.** From panel 2 onward, panel titles have a pseudo-element `::before` with the same text, position: absolute, offset +3px / +1px, color: Signal Blush at calc(30% * depth). This creates the chromatic aberration ghost that grows with decay.

7. **Progress strip.** A `position: fixed; bottom: 0; left: 0; height: 2px; width: <scroll-progress>%; background: linear-gradient(to right, Primary Burgundy, Ghost Burgundy)` element. In panels 3–5, add a `transform: translateY(sin(Date.now() * 0.004) * depth * 3px)` tremor.

8. **No CTA, no nav, no footer, no pricing, no feature lists.** The five panels contain: panel title (Nunito Sans, caps), annotation block (DM Sans, 3–4 lines), nucleotide sequence block (Azeret Mono), waveforms (SVG polylines), telomere shapes (SVG ellipses), and the ambient cursor orb.

9. **Palette transitions via CSS custom properties.** Each panel defines `--bg`, `--fg`, `--accent` as CSS custom properties scoped to the panel. A JavaScript transition smoothly interpolates these as the panel becomes active (centered in viewport). No CSS transitions on individual properties — the custom properties update and everything inherits.

10. **Performance:** All SVG waveform point sets are precomputed on load for all five depth levels. On scroll, only the `--depth` property updates and the SVG `points` attribute swaps from the precomputed array — no real-time trigonometry per frame.

## Uniqueness Notes

1. **Glitch as biological decay, not cyberpunk aggression.** The corpus uses glitch (14%) almost exclusively as RGB-channel-split or pixel-corruption aesthetics tied to cyberpunk/terminal/dark-mode aesthetics. This site repositions glitch as *warm, analog, biological* fraying — the chromatic spread of an aging phosphor tube, the tremor of a VHS tape recorded over too many times. Glitch here has the color temperature of burgundy and cream, not blue-green neon.

2. **Horizontal scroll as a narrative sequence rather than a feature showcase.** Horizontal scroll appears at 5% in the corpus; in every existing use it functions as a product card rail or content discovery mechanism. This site uses horizontal scroll as **temporal progression** — the visitor physically moves through the life of a chromosome. The scroll direction encodes time; moving right is aging.

3. **A CSS custom property depth system where a single `--depth` variable drives every degradation effect coherently.** No other design in the registry uses a unified depth parameter to drive typography ghosts, SVG filter intensity, cursor orb lag, waveform phase, and palette simultaneously from one scalar. This creates an internally consistent degradation arc rather than ad-hoc per-panel effects.

4. **Cursor follower as a dissociating reflex, not a decorative sparkle.** Cursor-follow appears at 20% in the corpus; it is uniformly used as a decorative sparkle trail or magnetic highlight effect. This design uses the cursor follower's **lag constant as a narrative variable** — it tells the story of a slowing nervous system. The orb is not decoration; it is a biological metaphor that becomes meaningful only over five panels.

5. **Abstract-shapes as scientific specimens, not geometric decoration.** Abstract-shapes appear at 3% in the corpus, usually as background filler or hero illustration. This design treats nested SVG ellipses as microscopy specimens — biological data visualizations whose visual integrity degrades in lockstep with the site's narrative.

**Planned seed:** aesthetic: glitch, layout: horizontal-scroll, typography: frutiger-clean, palette: burgundy-cream, patterns: cursor-follow, imagery: abstract-shapes, motifs: wave-forms, tone: nostalgic-retro

**Patterns deliberately avoided from frequency analysis:**
- parallax (91%) — replaced by horizontal-scroll progression
- stagger (69%) — replaced by scroll-depth degradation system
- spring (45%) — incompatible with weighted inertial horizontal scroll
- centered layout (93%) — each panel uses left-anchored composition
- hand-drawn aesthetic (77%) — intentionally avoided; Frutiger-clean register requires precision geometry
- warm gradient palette (88%) — rejected; this palette is flat fields with no gradients
<!-- DESIGN STAMP
  timestamp: 2026-05-07T11:47:40
  domain: digitaltelomere.com
  seed: glitch-nostalgic-retro
  aesthetic: The domain **digitaltelomere.com** fuses biology and computation: a telomere is ...
  content_hash: 243a58f78848
-->
