# Design Language for gamelicen.se

## Aesthetics and Tone

gamelicen.se embodies the paranoid clarity of a software license audit rendered as architectural brutalism -- the visual language of concrete loading docks, exposed rebar, and flickering fluorescent tube lighting applied to the bureaucratic machinery of game licensing. Imagine the back office of a massive game publisher at 2:47 AM: raw concrete walls stacked with server racks, terminal screens casting cyan wash across unfinished surfaces, and endless rows of license keys scrolling in monospaced columns like the stock ticker of a dystopian economy. The aesthetic is **brutalist compliance infrastructure** -- deliberately ugly, aggressively honest, and strangely beautiful in its refusal to perform.

Nothing is polished. Every element announces its own construction: visible CSS grid lines rendered as 1px solid borders, exposed `data-` attributes shown as floating annotations beside UI components, and skeleton-loading placeholders that never fully resolve -- a permanent state of "almost loaded" that suggests the licensing system is perpetually crunching, perpetually verifying, perpetually incomplete. The tone is **raw-authentic**: no marketing language, no persuasion, no polish. Just the cold machinery of intellectual property rendered with the unflinching directness of a building code document.

The mood draws from the overlooked beauty of regulatory paperwork: the repeating grid lines of spreadsheet cells, the rhythmic indentation of legal clause numbering (1.1, 1.1.1, 1.1.1.a), and the hypnotic monotony of license compliance dashboards that nobody reads but everyone depends on. There is a strange meditative quality to this -- the zen of bureaucratic infrastructure, where the removal of all pretense reveals the skeleton of how digital ownership actually works.

## Layout Motifs and Structure

The layout is a **full-bleed terminal emulator** -- the entire viewport is treated as a single, unbroken terminal session with no margins, no padding on the outermost container, and no breathing room. Content bleeds to every edge of the screen. The background is a continuous field of #0C0E12 (near-black with a cold blue undertone), and all content is rendered directly onto this surface as though typed into a console.

**The Grid as Exposed Infrastructure:**

The page is divided by a visible 12-column grid rendered as hairline vertical rules (#1E2330 at 0.5px width) that persist across the entire viewport height. These are not invisible guidelines -- they are the design itself. Content snaps to these columns like data in a spreadsheet. The grid lines never disappear; they are the permanent skeleton of the page, making the underlying structure visible at all times.

**Section Structure (Vertical Scroll, No Horizontal):**

1. **LICENSE_HEADER (rows 1-3):** The domain "gamelicen.se" rendered in a single massive monospaced line spanning all 12 columns, flush-left, no centering. Below it, a blinking cursor and a simulated terminal prompt: `root@licensedb:~$ query --domain gamelicen.se --status ACTIVE`. This block occupies exactly 100vh.

2. **COMPLIANCE_MATRIX (rows 4-8):** A full-bleed data visualization zone. Three side-by-side skeleton-loading panels (4 columns each) that animate in sequence -- the left panel resolves first (revealing a license type breakdown as stacked bar segments rendered in pure CSS), the middle panel resolves second (showing a geographic distribution heatmap using CSS grid cells with opacity-mapped background colors), and the right panel enters a permanent loading state with pulsing gradient placeholders that never complete. The unresolved panel is intentional -- it signals that some data is always pending, always being verified.

3. **CLAUSE_SCROLL (rows 9-16):** A monolithic text block styled as a legal document viewer. Content is displayed in a single column (spanning columns 2-11) with exposed line numbers in a gutter (column 1). Each "clause" is a conceptual section about game licensing philosophy, rendered with legal numbering (Section 1.0, 1.1, 1.1.a) and highlighted with horizontal rule separators that use a dashed border pattern (#2A3040). Key terms are rendered in #00D4AA (the accent cyan-green) with a subtle text-shadow glow.

4. **REGISTRY_TABLE (rows 17-22):** A full-width data table that extends edge-to-edge with no border-radius, no shadows, no card metaphor. Just raw `<table>` styling: alternating row backgrounds (#0C0E12 and #111520), 1px #1E2330 borders, and monospaced cell content. The table auto-scrolls vertically at 0.3px/frame, simulating a live feed of license registrations. Rows enter from the bottom with a skeleton-loading shimmer that resolves into data as they scroll upward.

5. **SIGNAL_FOOTER (rows 23-24):** A full-bleed status bar fixed to the viewport bottom -- styled as a terminal status line showing simulated system metrics: `LICENSES_ACTIVE: 2,847,103 | QUERIES/SEC: 14.2k | UPTIME: 847d 14h 02m | STATUS: NOMINAL`. Rendered in 11px monospace, #4A5568 (muted gray), with the STATUS value pulsing between #00D4AA and #4A5568.

## Typography and Palette

**Typography:**

- **Display / Terminal Headers:** "IBM Plex Mono" (Google Fonts) -- the definitive monospaced typeface for technical interfaces. Used at 3rem-7rem for the hero domain name and section headers. Set at `font-weight: 400`, `letter-spacing: -0.03em` (slightly tightened for brutalist density at display sizes), `line-height: 1.0`. All display text is rendered in UPPERCASE with no text-transform animation -- just static, unadorned capital letters. The choice of IBM Plex Mono (over generic monospace) is deliberate: its IBM heritage carries the connotation of mainframe computing, corporate infrastructure, and institutional seriousness.

- **Body / Clause Text:** "Space Mono" (Google Fonts) -- a fixed-width typeface with a slightly quirky geometric character that softens the institutional coldness of IBM Plex Mono. Used at 0.875rem-1.125rem for all body content, legal clauses, and annotations. `font-weight: 400`, `letter-spacing: 0.01em`, `line-height: 1.7` (generous leading for readability in dense monospaced blocks). The subtle personality in Space Mono's letterforms (particularly the distinctive 'g' and 'a') prevents the page from feeling like a raw terminal dump -- it is a designed object that happens to look like infrastructure.

- **Data / Table Cells:** "Share Tech Mono" (Google Fonts) -- a narrow, compact monospaced face designed for data-dense displays. Used at 0.75rem-0.875rem for table cells, status bar text, license keys, and numerical data. `font-weight: 400`, `letter-spacing: 0.05em` (wider tracking for tabular clarity), `line-height: 1.4`. Its narrow width allows more data per row without horizontal overflow.

**Palette:**

The palette is **muted** with surgical precision -- every color is desaturated, cold, and functional. No warmth. No vibrancy. Colors exist only to encode information, not to decorate.

| Role | Hex | Description |
|------|-----|-------------|
| Background (Primary) | `#0C0E12` | Near-black with cold blue undertone. The void. |
| Background (Alternate Row) | `#111520` | Slightly lifted dark for table striping and panel differentiation. |
| Grid Lines / Borders | `#1E2330` | Barely visible structural lines. The skeleton. |
| Body Text (Primary) | `#8B95A8` | Muted blue-gray. Readable but deliberately unemphatic. |
| Body Text (Secondary) | `#4A5568` | Dim gray for annotations, line numbers, metadata. |
| Accent (Signal Green) | `#00D4AA` | Cyan-green terminal accent. Used sparingly: highlighted terms, active status indicators, resolved skeleton states. The only color with any saturation. |
| Accent (Warning Amber) | `#D4A017` | Muted amber for pending states, unresolved skeletons, caution indicators. |
| Accent (Error / Revoked) | `#A83240` | Deep muted red for revoked licenses, error states, expired entries. |
| Skeleton Shimmer Base | `#161B26` | The base color of unresolved skeleton-loading elements. |
| Skeleton Shimmer Peak | `#1E2538` | The peak of the skeleton shimmer gradient animation. |

## Imagery and Motifs

**Data-Viz as the Only Imagery:**

There are no photographs, no illustrations, no icons, no decorative graphics. Every visual element is a data visualization -- a chart, a graph, a heatmap, a table, or a loading skeleton. The imagery vocabulary is pure **data-viz**: information rendered as visual form.

**Primary Data Visualizations (all CSS-only, no libraries):**

1. **License Type Stacked Bars:** Horizontal stacked bar charts showing the distribution of license types (GPL, MIT, Proprietary, CC-BY, Custom). Each bar is a `<div>` with percentage-based width and background-color corresponding to its type. The bars use the muted palette exclusively -- no bright fills, just subtle variations of #1E2330 through #2A3040 with the label text overlaid in #8B95A8. The active/selected bar gets a left border of 3px solid #00D4AA.

2. **Geographic Heatmap Grid:** A CSS grid of small square cells (approximately 12x8 grid) where each cell's `background-color` opacity maps to a data value. The cells use #00D4AA at varying opacities (0.05 to 0.6) to create a heatmap effect without any actual map imagery. No country labels -- just the abstract thermal signature of license distribution. Cells with zero data remain at #0C0E12 (invisible). The grid pulses with a subtle animation where random cells flicker their opacity by +/-0.05 every 2-4 seconds, simulating live data updates.

3. **Sparkline License Activity:** Thin SVG polylines (1px stroke, #00D4AA at 40% opacity) rendered inline within text blocks, showing 90-day license activity trends. These micro-charts appear beside section headers like vital signs on a patient monitor, providing constant ambient data without demanding attention.

**Circuit Motifs as Structural Decoration:**

The circuit motif manifests not as decorative illustration but as functional wiring diagrams connecting UI elements. Thin lines (#1E2330, 1px) with right-angle bends connect related data panels, resembling PCB traces on a circuit board. At intersection points, small filled circles (4px diameter, #2A3040) serve as solder joints. These circuit traces are rendered as absolutely-positioned SVG paths that respond to viewport width, re-routing their paths on resize like a living circuit that adapts to its enclosure.

**Skeleton-Loading as Permanent State:**

The skeleton-loading pattern is not a transitional state -- it is a permanent visual motif. At least 20-30% of visible content remains in a skeleton state at all times: pulsing rectangular placeholders with a left-to-right shimmer gradient (#161B26 to #1E2538 to #161B26, animated over 1.8 seconds, `ease-in-out`, infinite). These unresolved skeletons represent data that is "still being verified" -- a conceptual statement about the perpetual incompleteness of any licensing database. The shimmer animation uses `@keyframes` with `background-position` shifting, not opacity, to create a convincing loading effect.

## Prompts for Implementation

**Full-Screen Terminal Narrative:**

The site opens with a full-viewport black screen (#0C0E12). After a 400ms pause, the visible grid lines fade in (opacity 0 to 0.4 over 800ms) -- twelve vertical hairlines materializing like the bars of a cage or the columns of a ledger. Then the terminal prompt appears character-by-character using a typewriter effect (each character rendered at 35ms intervals): `root@licensedb:~$ query --domain gamelicen.se`. After the command "executes" (a 600ms pause with a blinking cursor), the domain name "gamelicen.se" renders in a single explosive frame -- no fade, no slide, just instant presence. 7rem IBM Plex Mono, uppercase, flush-left, #8B95A8. Below it, a subtitle materializes letter-by-letter: `LICENSE COMPLIANCE INFRASTRUCTURE`. The brutalist impact comes from the contrast between the slow, deliberate typewriter build-up and the instant, unapologetic appearance of the domain name.

**Skeleton-Loading Choreography:**

As the user scrolls past the hero, the COMPLIANCE_MATRIX section enters the viewport with all three panels in skeleton state. The skeleton shimmer runs continuously. After 1.2 seconds of visibility (tracked via Intersection Observer), the left panel's skeletons resolve: the shimmer freezes, the placeholder rectangles crossfade (opacity transition, 400ms) into the stacked bar visualization. After another 0.8 seconds, the middle panel resolves into the heatmap grid. The right panel NEVER resolves -- its skeleton shimmer continues indefinitely, a permanent placeholder labeled `[PENDING VERIFICATION]` in #4A5568 text. This choreographed partial-resolution creates narrative tension: the system works, but it is never finished.

**Circuit Trace Animations:**

When a data panel resolves from skeleton to content, a circuit trace SVG animates outward from the panel's edge using `stroke-dasharray` and `stroke-dashoffset` -- a line "draws" itself along a right-angle path from the resolved panel toward the adjacent panel, as though power is flowing through the system. The trace reaches a solder-joint circle, which scales from 0 to 1 (transform: scale, 200ms, ease-out), and then the next panel begins its resolution sequence. This creates a cause-and-effect chain: each panel's resolution triggers the next through visible circuitry.

**Table Auto-Scroll with Skeleton Entry:**

The REGISTRY_TABLE implements a continuous vertical auto-scroll. New rows appear at the bottom of the visible table area in full skeleton state (three to four shimmer rectangles per cell). As the row scrolls upward by one row-height (approximately 40px), the skeletons resolve into data: a license key (formatted as `A7B2-K9M4-R3T8-W6P1`), a game title, a license type badge, and a timestamp. Rows that scroll past the top of the visible area are removed from the DOM and recycled. The scroll speed is constant (0.3px per frame via `requestAnimationFrame`), creating a mesmerizing, ticker-tape rhythm. The user can pause auto-scroll by hovering over the table (`:hover` sets `animation-play-state: paused` on the scroll container).

**Status Bar Pulse:**

The SIGNAL_FOOTER status bar uses a CSS counter animation for the LICENSES_ACTIVE value -- the number increments by 1 every 3-7 seconds (randomized interval via JavaScript `setTimeout` with `Math.random()`), creating the impression of a live system. The STATUS: NOMINAL text pulses between #00D4AA and #4A5568 using a `@keyframes` animation with 4-second period and `ease-in-out` timing. If the user has been on the page for more than 60 seconds, the status briefly flickers to `STATUS: AUDIT_IN_PROGRESS` in #D4A017 for 3 seconds before reverting -- a small narrative Easter egg.

**AVOID:** CTA buttons, pricing tables, testimonial carousels, hero images, gradient backgrounds, rounded corners, drop shadows, card metaphors with border-radius, stat-grid blocks with large numbers, any element that suggests marketing or sales. This is infrastructure, not a storefront.

## Uniqueness Notes

**Differentiators from other designs:**

1. **Permanent skeleton-loading as design philosophy:** No other design in the portfolio uses skeleton-loading placeholders as a permanent, intentional visual state. Across all existing designs, skeleton-loading appears at only 6% frequency and always as a transitional effect. Here, the unresolved skeleton is the point -- a visual metaphor for the perpetual incompleteness of licensing databases. The 20-30% of content that never resolves is a deliberate artistic choice, not a loading indicator.

2. **Exposed grid infrastructure as primary visual language:** While grid systems underlie every web design, this is the only design that renders the grid itself as visible, persistent decoration. The twelve hairline vertical rules are not hidden structural guides -- they ARE the visual identity. This inverts the normal relationship between grid and content, making the skeleton of the layout its most prominent feature.

3. **Zero decorative imagery -- pure data-viz vocabulary:** At only 5% frequency in the existing portfolio, data-viz as the sole imagery source is rare. Combined with the strict prohibition on photography, illustration, and icons, this creates a visual language where every pixel of non-text content is an actual (simulated) data visualization. The stacked bars, heatmap grids, and inline sparklines are both decoration and function simultaneously.

4. **Sequential skeleton-resolution choreography with circuit-trace causality:** The animated chain reaction where one panel's resolution triggers the next via visible circuit-trace SVGs is a unique interaction pattern. It combines the underused skeleton-loading pattern (6%) with the moderately used circuit motif (19%) in a way that creates narrative causality between loading states -- each element "powers on" the next.

5. **Anti-marketing brutalist terminal:** While brutalist aesthetic appears at 9% and raw-authentic tone at only 3%, no existing design combines them with a full terminal-emulator layout metaphor applied to a licensing/compliance theme. The deliberate ugliness, the refusal to center content, the exposed data attributes, and the auto-scrolling table all reject the marketing-site paradigm that dominates the portfolio.

**Documented Seed/Style:**

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

**Avoided Overused Patterns:**
- scroll-triggered (97%) -- replaced with Intersection Observer skeleton resolution, not scroll-triggered animations
- parallax (79%) -- zero parallax effects; all movement is data-driven (auto-scroll, shimmer, pulse)
- stagger (55%) -- skeleton resolution is sequential/causal (circuit-trace triggered), not stagger-animated
- warm palette (100%) -- palette is entirely cold: blue-blacks, blue-grays, cyan-green accent
- centered layout (99%) -- all content is flush-left, aligned to the exposed grid
- playful aesthetic (97%) -- brutalist, raw, institutional
- friendly tone (96%) -- raw-authentic, no warmth, no persuasion
- minimal imagery (95%) -- replaced with data-viz as sole imagery type
<!-- DESIGN STAMP
  timestamp: 2026-03-09T11:49:41
  seed: unspecified
  aesthetic: gamelicen.se embodies the paranoid clarity of a software license audit rendered ...
  content_hash: 962c220d7dfb
-->
