# Design Language for graphers.dev

## Aesthetics and Tone

graphers.dev inhabits the visual space of a decommissioned server room where someone has pinned hand-annotated printouts of network topology maps to every available surface. The aesthetic is **brutalist** in the architectural sense -- exposed infrastructure, no decorative veneer, structure-as-ornament. Think of the raw concrete walls of Le Corbusier's Unite d'Habitation, but instead of plumbing conduits the exposed elements are data pipelines, graph traversal paths, and dependency trees rendered as stark SVG wire diagrams on a matte charcoal substrate.

The mood is that of a midnight debugging session: fluorescent-lit, coffee-stained, intensely focused. There is no marketing polish here. The site communicates through the honest display of its own structure -- every layout decision is visible, every spacing choice deliberate and unapologetic. Content blocks sit like concrete slabs dropped onto a dark surface, their edges unrounded, their shadows absent. The feeling is of looking at architecture blueprints laid flat on a drafting table under harsh overhead light, where the beauty emerges from precision and function rather than ornamentation.

The tone is **raw-authentic** -- no sales language, no aspirational imagery, no softening. Text reads like commit messages and technical documentation: terse, accurate, occasionally wry. The site feels like it was built by someone who graphs data for a living and designed their own site with the same tools they use for work.

## Layout Motifs and Structure

The layout is a **full-bleed** composition where content extends to the absolute edges of the viewport with zero padding on the outermost container. The page is organized as a series of horizontal bands that span the full viewport width, each band a different height, stacked vertically like rows in a spreadsheet or records in a database dump.

**Grid System:**
- The underlying grid is a strict 12-column system with `1px` solid borders visible between columns, rendered in `#3A3A42` -- the grid lines are not hidden infrastructure but visible design elements, like the ruled lines on engineering graph paper. The grid is always faintly visible behind content, reinforcing the "graphing" metaphor.
- Column gutters are exactly `8px` -- tight, utilitarian, no breathing room. Content fills its allocated columns completely.
- Each horizontal band occupies either `100vh`, `50vh`, or `25vh` -- no fractional or arbitrary heights. The rhythm is mechanical and predictable, like clock divisions on an oscilloscope.

**Scroll Architecture:**
- The page scrolls vertically as a single continuous document. No scroll-jacking, no snap points, no parallax. Scrolling is as plain and functional as scrolling through a terminal log.
- As the user scrolls, a persistent thin progress indicator (2px tall, `#00E5A0`) runs along the very top edge of the viewport, showing exact scroll percentage. This is the only concession to interactivity in the scroll behavior.
- A fixed vertical ruler runs along the left edge of the viewport (24px wide, `#1E1E24` background), displaying line numbers every 100px of scroll distance, styled exactly like a code editor's gutter. This ruler is always visible and gives the page the feeling of being a code file the user is reading through.

**Section Composition:**
- The hero section is a full-bleed `100vh` band that contains nothing but the domain name and a single animated graph visualization. No tagline, no CTA, no navigation. The navigation is a horizontal bar that appears only when the user scrolls past the first viewport, snapping to the top -- it is a single row of monospaced text links separated by pipe characters (`|`), flush left, on a `#0F0F14` background.
- Content sections alternate between "data bands" (dark background `#0F0F14`, light text) and "paper bands" (off-white `#E8E6E0`, dark text), creating a stark binary rhythm like a barcode read from top to bottom.

## Typography and Palette

**Typography:**

- **Display / Headlines:** "Share Tech Mono" (Google Fonts) -- a monospaced font designed for technical interfaces, with a slightly condensed letterform and the mechanical uniformity of a dot-matrix printer. Used at `3rem`-`6rem` for primary display text, weight 400 (the only weight available, which enforces the brutalist constraint of no typographic hierarchy through weight variation). All headlines are UPPERCASE with `letter-spacing: 0.15em`, evoking the stamped-out labels on industrial equipment.

- **Body Text:** "IBM Plex Mono" (Google Fonts) -- a monospaced typeface designed for developer tools, with exceptional legibility at small sizes and a subtle humanist quality that prevents the page from feeling entirely robotic. Used at `0.95rem` / `1.6` line-height for body paragraphs, `0.8rem` for captions and metadata. Weight 400 for body, 600 for emphasis. The monospaced body text means every line of content aligns to an invisible character grid, reinforcing the graph-paper aesthetic.

- **Data Labels / Annotations:** "Space Mono" (Google Fonts) -- used exclusively for axis labels, data annotations, and numerical values within graph visualizations. `0.7rem`, weight 400, `letter-spacing: 0.05em`. This font is reserved for "data-layer" text to create a clear visual separation between content text and visualization text.

**Palette:**

The palette is **muted** but not neutral -- every color is desaturated and shifted slightly toward gray, as though viewed on a miscalibrated monitor in a dimly lit room.

| Role | Color | Hex |
|------|-------|-----|
| Void (primary background) | Near-black with blue undertone | `#0F0F14` |
| Paper (alternate background) | Warm gray parchment | `#E8E6E0` |
| Grid Lines / Borders | Medium gray-blue | `#3A3A42` |
| Primary Text (on dark) | Desaturated warm white | `#C8C4BC` |
| Primary Text (on light) | Deep charcoal | `#1A1A1F` |
| Accent (data positive) | Muted seafoam green | `#00E5A0` |
| Accent (data negative) | Muted dusty rose | `#D4606A` |
| Accent (data neutral) | Muted amber | `#C49A3C` |
| Highlight / Focus | Dim cyan | `#5B8F9A` |

The accent colors are specifically chosen as a data visualization triad: green for positive/growth, rose for negative/decline, amber for neutral/stable. These three colors appear exclusively in graph elements and interactive states -- never in text, never in backgrounds, never decoratively. This strict color discipline creates a clear visual language: if you see green, rose, or amber, it means data.

## Imagery and Motifs

**Data-Viz as Primary Imagery:**
All visual content on the site is rendered as **data visualization**. There are no photographs, no illustrations, no icons in the traditional sense. Every image-equivalent is a graph, chart, or data-driven diagram built from SVG and CSS. The site treats graphing as both its subject and its medium -- the visuals are the content.

**Graph Types in Use:**
- **Force-directed node graphs:** The hero section features a large animated force-directed graph where nodes drift and edges stretch like a living network topology map. Nodes are small circles (`6px` diameter) in `#00E5A0`, edges are `1px` lines in `#3A3A42`. The graph responds to scroll position -- as the user scrolls down, the graph's physics simulation slowly increases its gravity parameter, causing nodes to cluster tighter, until by mid-page it has collapsed into a dense cluster resembling a single point.
- **Sparkline strips:** Thin horizontal sparklines (`32px` tall, full-bleed width) serve as section dividers. Each sparkline is a different generated waveform -- sine, sawtooth, noise, step function -- rendered as a single `1px` SVG path in `#5B8F9A` on the void background. These are purely decorative but reinforce the data-viz vocabulary.
- **Bar code graphs:** Vertical bar charts rendered as full-width strips where each bar is `1px` wide and the height encodes a data value, creating a barcode-like visual texture. These appear as background elements behind text sections, barely visible at `0.08` opacity.
- **Adjacency matrices:** Small square grid visualizations where cells are colored to show relationships, used as thumbnail-equivalent elements. Each matrix is `120px x 120px`, cells colored in the three-accent palette.

**Circuit Motifs:**
The **circuit** motif manifests as thin right-angled connector lines (`1px`, `#3A3A42`) that link content blocks to each other across the page. These lines follow strict horizontal and vertical paths (no diagonals) with `4px` radius corners, exactly like traces on a printed circuit board. At intersection points, small filled circles (`4px` diameter, `#5B8F9A`) mark connection nodes.

The circuit lines are not decorative -- they visually connect related content, functioning as an alternative to hyperlinks for showing relationships. A section about "Graph Theory" might have circuit traces connecting it to "Network Analysis" and "Dependency Resolution" sections, with the traces running through the grid-line layer of the layout.

**Skeleton Loading Pattern:**
When content loads or transitions, placeholder states are rendered as **skeleton loading** patterns: rectangular blocks in `#1E1E24` that pulse with a subtle brightness oscillation (`#1E1E24` to `#2A2A32`, 1.5s cycle). But these skeletons are styled to look like empty graph frames -- they show axis lines, tick marks, and grid lines but no data, as though the visualization is waiting for its dataset to arrive. This turns loading states into a continuation of the data-viz theme rather than a generic UI pattern.

## Prompts for Implementation

**Full-Screen Narrative Experience:**
The site opens to a full-viewport void (`#0F0F14`) that holds its emptiness for 400ms. Then, from the exact center of the screen, a single point of `#00E5A0` light appears. Over the next 2 seconds, this point spawns additional points that drift outward, connected by `1px` edges that draw themselves in real-time -- a force-directed graph assembling itself from nothing. The graph expands to fill approximately 60% of the viewport, its nodes gently oscillating under simulated physics.

After the graph stabilizes (around 2.5s), the domain name "graphers.dev" types itself into the lower-left corner of the viewport in Share Tech Mono, `5rem`, UPPERCASE, character by character at 60ms intervals, cursor blinking. No other text appears on the first screen. The graph and the domain name are the entire hero.

**Scroll Sequence:**
As the user scrolls past the first viewport:
1. The force-directed graph begins compressing -- its gravity parameter increases proportionally to scroll position, causing nodes to pull toward center. By `200vh` scroll depth, the graph has collapsed into a tight cluster in the upper-left corner, where it remains fixed as a persistent ambient element (similar to a favicon but animated).
2. The navigation bar fades in: a single horizontal line of pipe-separated monospaced links, flush left, `#C8C4BC` text on `#0F0F14`. No hamburger menu, no dropdown, no hover effects beyond a simple underline draw in `#00E5A0`.
3. Content sections appear as horizontal bands. Each band slides into view with a simple skeleton-loading transition: the graph-frame skeleton (axis lines, ticks, no data) appears first, holds for 300ms, then the actual content fills in from left to right like a progress bar loading. This is not a network loading indicator -- it is a choreographed reveal animation that uses skeleton-loading as an aesthetic motif.

**Data Band Interactions:**
- Sparkline dividers between sections animate continuously but slowly -- their waveforms drift rightward at approximately `2px/second`, creating the sense of a live data feed.
- Adjacency matrix thumbnails respond to hover: on mouseover, individual cells in the matrix light up sequentially in a scan-line pattern (top-left to bottom-right, 50ms per cell), revealing the full color pattern before resetting on mouseout.
- Circuit trace connector lines draw themselves when their connected sections are both in view -- the line extends from the first section's right edge to the second section's left edge, following right-angle paths, at a speed of `200px/second`. Small node circles appear at corners as the line turns.

**Typography Animation:**
- Section headers use a skeleton-loading reveal: the text area shows as a pulsing `#1E1E24` block until scrolled into view, at which point the text cuts in instantly -- no fade, no slide, just a hard swap from skeleton to content. This brutalist transition rejects smooth animation in favor of raw state changes.
- Numerical data within content (dates, measurements, counts) use a brief counter-animation when first scrolled into view, counting up from 0 to their final value over 800ms in `Space Mono`, colored in `#C49A3C` (amber/neutral accent).

**Implementation Constraints:**
- No border-radius anywhere on the site. All corners are sharp 90-degree angles.
- No box-shadows. Depth is communicated only through layering and opacity differences.
- No gradients in backgrounds. Only flat colors. Gradients appear only within data visualizations where they encode data values.
- Cursor remains default arrow everywhere. No pointer cursors on hover, no custom cursors. The site does not try to guide attention through cursor changes.
- AVOID: CTA-heavy layouts, pricing blocks, stat-grids, testimonial carousels, team photo sections, newsletter signup forms. The site has no commercial intent and no calls to action.

## Uniqueness Notes

**Differentiators from other designs:**

1. **Visible Grid Infrastructure:** While other designs hide their grid systems, graphers.dev makes the 12-column grid permanently visible as faint ruled lines across the entire page, like engineering graph paper. This is a direct expression of the domain name -- the site is literally built on visible graphs. No other design in the portfolio uses the grid as a visible decorative/thematic element rather than hidden layout infrastructure.

2. **Data-Viz as Sole Imagery:** The site contains zero non-data visual elements -- no photographs, no illustrations, no decorative SVGs. Every visual is a functional or pseudo-functional data visualization (force-directed graphs, sparklines, adjacency matrices, barcode charts). At 7% frequency, data-viz imagery is underused in the portfolio, and graphers.dev commits to it completely rather than mixing it with other imagery types.

3. **Skeleton-Loading as Aesthetic Motif:** Skeleton loading appears at only 6% frequency and is almost always used as a functional loading pattern. graphers.dev repurposes it as a deliberate design motif -- content reveals itself through skeleton-to-content transitions that mimic a graph populating with data. The skeletons themselves are styled as empty graph frames (with axis lines and tick marks), making even the loading state thematically coherent.

4. **Line-Number Scroll Ruler:** The persistent vertical line-number ruler along the left edge of the viewport is a completely unique navigation element. It transforms the webpage into a code-editor-like document, reinforcing the developer-tool aesthetic and providing a subtle spatial anchor that no other design in the portfolio uses.

5. **Three-Color Data Discipline:** The accent palette is restricted to exactly three colors (green, rose, amber) that are used exclusively in data visualization elements and never in text, backgrounds, or decoration. This strict color discipline creates an unambiguous visual grammar where color always means data, which is a level of chromatic restraint not found in other designs.

**Chosen Seed/Style:**
`aesthetic: brutalist, layout: full-bleed, typography: tech-mono, palette: muted, patterns: skeleton-loading, imagery: data-viz, motifs: circuit, tone: raw-authentic`

**Avoided Patterns (from frequency analysis):**
- Avoided `playful` aesthetic (97% frequency -- massively overused)
- Avoided `centered` layout (99% frequency)
- Avoided `mono` as general typography category (99% frequency) -- used the more specific `tech-mono` (5%) instead
- Avoided `warm` palette (100% frequency)
- Avoided `scroll-triggered` as primary pattern (96% frequency) -- used `skeleton-loading` (6%) as the signature interaction
- Avoided `minimal` imagery (95% frequency) -- committed to `data-viz` (7%) as sole imagery type
- Avoided `vintage` motifs (78% frequency) -- used `circuit` (19%) with a data-infrastructure interpretation
- Avoided `friendly` tone (97% frequency) -- used `raw-authentic` (4%) for unpolished directness
<!-- DESIGN STAMP
  timestamp: 2026-03-09T12:02:56
  domain: graphers.dev
  seed: seed
  aesthetic: graphers.dev inhabits the visual space of a decommissioned server room where som...
  content_hash: 97ddbf0d05ef
-->
