# Design Language for bada.news

## Aesthetics and Tone

`bada` is the Korean word for *sea*, and `bada.news` is **the imaginary deep-sea wire service** — a 24-hour press desk that does not file stories from a city, but from a pressurized acrylic dome anchored to the abyssal plain at 4,000 meters, where the only light is bioluminescent and the only ambient sound is the hull groaning under twelve atmospheres. The aesthetic is **Inflated Pressure-Cast** — every news card, every headline plate, every byline tag is rendered as a **soft, puffy, over-inflated 3D object** that looks like it was *vacuum-formed under positive pressure*, not negative — like a sealed crisp packet pulled out of the ocean. The whole site reads as if a cartoonist who works for a marine biology institute decided that wire copy deserves the same plump, squeezable, finger-mashable affordance as a stress toy. Think Jonathan Zawada's bulbous chrome blobs, Fuse Project's *Squeeze* pillows, and the early CGI work of Mike Pelletier — except every object is muted, salt-bleached, and slightly chalky, as if the air pressure of the dome has powdered the gloss right off the surface.

The tone is **approachable-casual**. No "Breaking News" sirens. No red banners. No outrage. The deep-sea press dome is staffed by *one* person — a sleepy submariner with a typewriter and a kettle — who files three or four news items per day and signs off with `— from the dome, 21:14 KST`. Headlines are written in **lowercase, no oxford-comma, sentence-fragment cadence**, like a friend texting you about something they just read. The page never shouts. It mumbles, in a friendly, slightly damp way, the way an old radio mumbles on a fishing boat at four in the morning.

The site's emotional contract: *the news is heavy, but the messenger is round, soft, and slightly squishy, and the pressure outside is enormous but the dome holds.*

## Layout Motifs and Structure

The site is built as **seven hard-stacked horizontal slabs** — a literal **stacked-sections** vertical reading column where each slab is a full-viewport-width band of a single muted color, with a **fixed left rail** running floor-to-ceiling beside it and a **typewriter scrub indicator** crawling down the right edge. Slabs are not parallaxed. Slabs do not blend. Slabs do not crossfade. Each slab **butts up flush against the next** with a 4-pixel hard seam (a slightly darker rule that simulates the welded joint of two pressurized hull plates), and scrolling moves you from one slab to the next in a *mechanical, quantized* way that snaps to the seam — `scroll-snap-type: y mandatory`. There is no scroll-jacking, no parallax, no scroll-triggered fanfare; the slabs simply *arrive*, in order, like a ream of A2 paper sliding off a printer.

**The seven slabs (top to bottom):**

1. **Slab 01 — *the dome.*** A full-viewport hero. Centered: a single inflated-3D blob shaped like a transparent acrylic pressure dome with one warm window, hovering quietly. Around it, a typewriter is rendering the masthead one character at a time: `bada.news / from 4,000 m / vol. ix, no. 214`. Background: muted ink-blue (#2A3742). No CTA. No nav. Just the dome.
2. **Slab 02 — *today's wire.*** Seven inflated headline-plates stacked in a single vertical column, each plate a soft pillowy lozenge in a different muted hue, each carrying one headline rendered in lowercase typewriter type. Plates are not buttons. Plates are not links. Plates are *objects*; clicking any plate inflates it slightly (scale 1.04) and the typewriter rewrites the body text below it in real time. Reading is sequential, not random-access.
3. **Slab 03 — *bioluminescence.*** A wall of small inflated specimen-blobs — 24 of them, each one a different bioluminescent organism (siphonophore, anglerfish, lanternfish, comb jelly, glass squid…), arranged in a 6×4 grid, each blob softly pulsing on its own 4–7 second loop. This is the "in case you missed it" archive — each blob is an old story. Hover inflates the blob and a typewriter caption appears below: `// 2026-04-29 / dispatch from the canyon`.
4. **Slab 04 — *crystalline pressure log.*** A tall slab where six **crystalline cluster motifs** (faceted gem-like icosahedra, rendered in soft inflated-3D shading) sit along a horizontal axis. Each crystal corresponds to one pressure reading; the height of the crystal encodes the depth of that day's lead story. Above each crystal, a typewriter footer: `04:11 / 4,012 m / 3.8°C`. This is the only "data" on the entire site, and it is presented as a row of geological specimens, not as a chart.
5. **Slab 05 — *the long read.*** A full-viewport long-form article slab. The article body is set in the eclectic-hybrid type system (see Typography). The first line is being typed in real time as you arrive. The article runs 800–1,400 words. There is no sidebar, no related-stories, no share buttons. There is one inflated 3D pull-quote bubble floating in the right margin like a thought balloon, with the quote inside it.
6. **Slab 06 — *the kettle log.*** A whimsical slab. A single inflated kettle (puffy, salt-glazed, slightly wonky) with steam rising from its spout. Beside it, a hand-typed note: `// dispatcher's kettle log / on at 03:48 / off at 04:12 / 🜁 chamomile`. The kettle log is the soul of the site — it humanizes the messenger. There are exactly seven kettle logs on the page; each represents one shift.
7. **Slab 07 — *signoff.*** A muted slab in the deepest color of the palette (#1A2128). One sentence, centered, typed letter by letter, then erased, then re-typed: *— from the dome, 21:14 KST. tomorrow at 04:00.* No footer links. No social icons. The page ends like a letter.

**The fixed left rail** is 64 px wide on desktop. It carries: the slab number (01 / 02 / 03…) in large outlined typewriter numerals, a vertical hairline, the current local time in the dome (KST, updating every second), and the current slab's working title. The rail reads top-to-bottom like the spine of a paperback.

**The right edge typewriter-scrub indicator** is a 32 px column with a single slowly-typing line of metadata that updates as you scroll: `// reading: slab 03 / 41% / depth 1,640 m`. The depth number ramps from 0 m (top of page) to 4,000 m (bottom of page), so scrolling *literally* descends. This is the only kinetic-data element on the site, and it stays in your peripheral vision for the entire read.

**Mobile** collapses the left rail to a 28-px slab-counter chip that floats top-left, and the right scrub-indicator becomes a thin progress bar at the bottom of the viewport. The seven slabs remain seven slabs, scroll-snapped.

## Typography and Palette

**Typography (Google Fonts only) — eclectic-hybrid, three faces in deliberate tension:**

- **Headlines and headline-plates — [Fraunces](https://fonts.google.com/specimen/Fraunces)**, used in its **softest possible register**: variable axes set to `wght 600`, `SOFT 100` (max), `WONK 1`, optical-size `144`. Fraunces at SOFT 100 / WONK 1 is one of the most genuinely strange display serifs on Google Fonts — it has bulging, slightly-melted terminals that look like they were left in the sun, and the WONK axis re-enables the original quirky alternates (the curly `g`, the swooping `Q`, the asymmetric `w`). At display sizes (clamp 64px, 6.4vw, 132px) it reads as an *inflated serif* — perfectly thematic. Letter-spacing `-0.018em`. Set in **lowercase only**, ever. No headline is ever capitalized on this site.
- **Body text, captions, kettle logs, scrub indicator, time stamps — [JetBrains Mono](https://fonts.google.com/specimen/JetBrains+Mono)** at `wght 400`, sized `15px` desktop / `14px` mobile, line-height `1.65`. JetBrains Mono is the *typewriter-effect* engine: every line of body copy is rendered character-by-character at 38 cps with a blinking █ caret at the cursor. The caret glyph is the U+2588 full block, not a `|`. JetBrains Mono is also used for all UI metadata (slab numbers, depth readouts, time stamps).
- **Pull-quotes, the masthead curio (`vol. ix, no. 214`), and the kettle-log heading — [Caveat](https://fonts.google.com/specimen/Caveat)** at `wght 600`, sized `clamp 22px, 2vw, 32px`, color `#C8B89A`. Caveat is a hand-script — its presence in the type system is the **deliberate eclectic break**. It says: *a human is in the dome, and they are writing notes by hand on the margins of the wire copy.* Caveat appears *exactly seven times* on the page. Each instance is a small note, scrawled at a slight 1.5° tilt.

The three-way tension — wonky display serif + clinical mono + handwritten script — is the *eclectic-hybrid* in its purest form: three voices that do not normally share a page, each given a clear role, each refusing to imitate the others.

**Palette — muted, deep-sea pressure-dome, eight stops:**

| Token | Hex | Role |
|---|---|---|
| `--ink-abyss` | `#1A2128` | Deepest background; signoff slab; left-rail spine |
| `--ink-dome` | `#2A3742` | Primary background for slabs 01, 04, 07 |
| `--paper-salt` | `#E8E1D1` | Primary type color and primary slab background (slabs 02, 05) |
| `--paper-warm` | `#D9CFB8` | Secondary slab background (slabs 03, 06) |
| `--bloom-glow` | `#C8B89A` | Caveat ink, kettle steam, dome window glow |
| `--coral-mute` | `#B07560` | Inflated headline plate #2 (warmest plate) |
| `--celadon-mute` | `#7A9089` | Inflated headline plate #4 |
| `--lapis-mute` | `#4A6378` | Inflated headline plate #6 (deepest plate) |

All eight colors are deliberately desaturated to **HSL chroma below 25%**, sitting in the salt-bleached, slightly-chalky range that reads as muted but never as drab. The palette is anchored on the warm-paper end (`#E8E1D1`) and the cold-abyss end (`#1A2128`), with the inflated plate hues (coral, celadon, lapis) sitting as muted accents in between. There is **no pure black, no pure white, no neon, no fully-saturated color anywhere on the page.** The eye reads the page as *underwater paper.*

## Imagery and Motifs

**No photography. No stock. No icons from icon libraries. No flat illustration.** The frequency analysis shows photography at 93%; this design opts out completely.

The imagery system has four families, all hand-built:

1. **Inflated-3D objects (the cardinal motif).** Every named object on the site — the pressure dome, the seven headline plates, the 24 bioluminescent specimens, the six pressure-log crystals, the pull-quote bubble, the kettle, the steam — is rendered as **inline SVG with a layered radial-gradient soft-shading technique** that simulates the look of a Cinema 4D + Octane "puffy plastic" render, but in pure SVG. Each inflated object is built from: (a) a base solid silhouette in the muted local hue; (b) a soft inner radial highlight at 18% white opacity offset to upper-left; (c) a deep ambient-occlusion shadow at 12% black opacity hugging the lower-right; (d) a thin soft outline at the silhouette edge using a `feGaussianBlur` filter for that *vacuum-formed* edge softness; (e) a single specular glint — a small white ellipse at upper-left — that quietly drifts on a 14-second loop. The result is the **bulbous, edible, finger-mashable** affordance the aesthetic demands.

2. **Crystalline cluster motifs (the structural counterpoint).** The pressure-log slab, the dome window, and the small "next" caret at the bottom of each slab all use **faceted icosahedral crystal forms** — the deliberate hard counterpoint to the squishy inflated objects. Crystals are rendered in SVG as faceted polygons with three flat-shaded planes per facet, in the same muted palette but with sharper highlights and zero softening filters. The crystals look as if they were *grown* under the pressure, not inflated by it. Their presence makes the inflated objects feel *more* inflated by contrast.

3. **Glitch-art interruptions (the rare disturbance).** Once every ~45 seconds of dwell time on the page, **a single inflated object will briefly glitch** — RGB channel split for 240 ms, scanline tear for 180 ms, pixel-sort ribbon for 120 ms — and then return to normal. The glitches are subtle, rare, and only happen on *non-critical* objects (never the main dome, never the kettle). They suggest that the dome's signal is occasionally interrupted by the pressure, and that what you are reading was *transmitted from very far away.* The glitch animation is hand-coded as a CSS keyframe sequence on a `filter: url(#glitch-rgb-split)` SVG filter; no GIFs, no canvas, no JS-driven distortion.

4. **Typewriter-effect ribbons.** The right-edge scrub indicator, the masthead, the headlines (when revealed), the body text (when entered), and the kettle log all render as **live typewriter streams** — a `data-text` attribute fed to a vanilla-JS typing function that emits one character per `1000/cps` ms, with a blinking █ caret. Backspace is occasionally simulated for human realism (one mistyped character, one backspace, one correction, every 600 characters or so). The cursor color is `--bloom-glow`. The typewriter is the primary kinetic engine of the entire site; every other animation is secondary to it.

**Recurring small motifs (not blobs, just touches):**

- **The dome window.** A single warm rectangle (`--bloom-glow`) on the dome's silhouette, glowing on a 6-second breathing loop.
- **The hairline pressure rule.** A 1-pixel hairline at `--paper-salt` 22% opacity that runs across the bottom of every slab, simulating a printed registration mark.
- **The kettle steam.** A small SVG path of three soft rounded curls rising from the kettle spout, animated on a 4.5-second loop.
- **The slab seam.** The 4-pixel rule at every slab boundary, in `--ink-abyss`, with a 1-pixel `--bloom-glow` line on its lower edge — the welded-hull-plate joint.
- **The page-end period.** The signoff slab ends with a single inflated period (a soft puffy circle at `--paper-salt`) that *very slowly* deflates over 90 seconds and then disappears.

## Prompts for Implementation

Treat `bada.news` as **a single descending dispatch from a deep-sea press dome**, not a marketing site. The user is reading the day's wire from 4,000 meters, and the page descends with them as they read. The page tells one continuous story: *you opened a transmission from the dome, you read seven things, and the dispatcher signed off.*

**Macro narrative structure (seven hard-stacked slabs, scroll-snap descent):**

1. **Slab 01 (the dome).** Page loads dark (`--ink-dome`). The inflated dome blob fades up over 1.4 s. The masthead types itself in JetBrains Mono, character by character: `bada.news / from 4,000 m / vol. ix, no. 214`. The dome window pulses warm. Below the dome, in Caveat at 1.5° tilt, the hand-scrawled note: `*today's wire — seven items.*` No CTA. The user must scroll to descend.
2. **Slab 02 (today's wire).** Background snaps to `--paper-salt`. Seven inflated headline-plates stagger in from below over 700 ms, with a slight elastic overshoot (cubic-bezier 0.34, 1.56, 0.64, 1.0). Each plate's headline types itself once the plate has settled. Hover any plate: it inflates 4%, the body summary types in below it.
3. **Slab 03 (bioluminescence wall).** Background snaps to `--paper-warm`. The 24 specimen-blobs fade in in a slow staggered cascade (left-to-right, top-to-bottom, 80 ms each). Each blob has its own pulsing-glow loop on a randomized phase (4–7 seconds). Hover one: caption types below in JetBrains Mono.
4. **Slab 04 (crystalline pressure log).** Background snaps to `--ink-dome`. The six crystal clusters draw themselves in via SVG path-stroke animation (1.2 s each, staggered 200 ms). Above each, a typewriter footer ticks on with depth/temperature. There is no chart; this is the chart.
5. **Slab 05 (the long read).** Background snaps to `--paper-salt`. The article headline lands in Fraunces at WONK 1, lowercase, large. The body text begins typing on entry, at 38 cps, paragraph by paragraph. The pull-quote bubble inflates from 0 to 1.0 scale once the user is 60% through the article.
6. **Slab 06 (the kettle log).** Background snaps to `--paper-warm`. The kettle inflates in (1.0 s, soft elastic). Steam begins rising. The kettle log writes itself in Caveat at 1.5° tilt, hand-scrawled, two lines: on/off times and tea variety.
7. **Slab 07 (signoff).** Background snaps to `--ink-abyss`. The signoff types itself, holds for 4 seconds, erases itself, retypes itself. The inflated period at the end deflates over 90 seconds. There is no footer.

**Animation and interaction principles:**

- **Typewriter is the primary motion engine.** Every text block on the page is rendered character-by-character on entry into the viewport. The base rate is **38 cps** (characters per second), with a ±15% jitter to feel human, and an occasional simulated backspace-correction every ~600 characters. The █ block-caret blinks at 530 ms on / 530 ms off.
- **Inflated objects do not bounce, they *settle*.** When an inflated plate or blob enters, it uses a *single* gentle elastic overshoot (cubic-bezier 0.34, 1.56, 0.64, 1.0) over 700 ms, and then *stays inflated*. Do not loop the elastic. The settled state is the resting state; only specular glint and ambient drift continue.
- **Scroll-snap is mandatory.** `scroll-snap-type: y mandatory` on the main column; `scroll-snap-align: start` on each slab. The page reads slab-by-slab, never mid-slab. This is non-negotiable.
- **Glitch-art is rare and never on primary objects.** The 240 ms RGB-split glitch fires once every ~45 seconds of page dwell, on a randomly-selected secondary inflated object (one of the 24 specimens, or a headline plate that is not currently focused). Never on the dome, never on the kettle, never on the long-read.
- **Cursor on the page is a small inflated 14×14 px lozenge** that follows the mouse with 0.18 s ease-out lag. On hover over a plate, the cursor inflates to 22×22 px. The cursor is the user's own pressurized presence inside the dome.
- **The depth ramp on the right scrub-indicator** updates on `scroll`, mapping `scrollY / scrollHeight` linearly to `0–4000 m` and rendering it as `// reading: slab 03 / 41% / depth 1,640 m` in the typewriter style.

**Implementation stack:**

- One `index.html`. One `style.css`. One `script.js`. No framework. No bundler. No npm.
- All inflated-3D objects are inline SVGs in the HTML (so the muted palette tokens are CSS-controlled via `currentColor` and `var(--*)`).
- Glitch is a single `<filter id="glitch-rgb-split">` SVG filter, toggled on and off per-object via a `glitched` class.
- Typewriter is a single vanilla-JS class `Typewriter` that consumes elements with `data-tw="true"` and types the original `data-text` content character by character, respecting an `IntersectionObserver` for entry triggers.
- Scroll-snap is pure CSS.
- Time, depth-ramp, and glitch-randomizer are the only `requestAnimationFrame` consumers.

**AVOID (per instructions and per frequency report):**

- No CTA buttons. No "subscribe to our newsletter." No share buttons. No related-articles strip.
- No pricing block, no stat grid, no "trusted by" logo wall, no testimonial carousel.
- No photography, no stock, no flat-design icons, no parallax, no scroll-jacking beyond scroll-snap.
- No light/dark toggle, no language toggle, no cookie banner.
- No outrage, no breaking-news red, no urgency, no countdown timer, no badges.
- No floating chat bubble.

The page is a **dispatch**, not a product. It ends. Tomorrow at 04:00, there will be another one.

## Uniqueness Notes

**Chosen seed (per assignment):** aesthetic = **inflated-3d**, layout = **stacked-sections**, typography = **eclectic-hybrid**, palette = **muted**, patterns = **typewriter-effect**, imagery = **glitch-art**, motifs = **crystalline**, tone = **approachable-casual**.

This seed combination is **extraordinarily underused** across the corpus. Frequency-report findings:

- `inflated-3d` aesthetic — **2%** of corpus (1 prior site). bada.news is only the second.
- `stacked-sections` layout — **2%** of corpus. The dominant layouts are `centered` (93%) and `full-bleed` (89%); bada.news refuses both, in favor of a hard mechanical scroll-snapped vertical column.
- `eclectic-hybrid` typography — **4%** of corpus. The dominant type system is `mono` (95%); bada.news uses mono for body but pairs it with a wonky variable serif (Fraunces SOFT 100 / WONK 1) and a hand-script (Caveat), producing a genuine three-voice eclectic system.
- `muted` palette — **18%** of corpus. The dominant palettes are `warm` (97%) and `gradient` (91%); bada.news is a flat-color, no-gradient, deeply-muted-but-not-warm palette pitched in the salt-bleached deep-sea register.
- `typewriter-effect` patterns — **8%** of corpus. The dominant patterns are `parallax` (91%) and `stagger` (69%); bada.news has *no parallax at all* and uses typewriter as the primary motion engine on every text block.
- `glitch-art` imagery — **2%** of corpus. The dominant imagery is `photography` (93%); bada.news has zero photography and uses glitch as a rare, restrained signal-degradation flourish (not as a wallpaper).
- `crystalline` motifs — **2%** of corpus. The dominant motif is `vintage` (89%); bada.news is the second crystalline-motif site and uses crystals as the hard structural counterpoint to the inflated puffy objects.
- `approachable-casual` tone — **4%** of corpus. The dominant tones are `professional` (40%) and `friendly` (34%); bada.news is sleepy, lowercase, almost murmured, with no sales register at all.

**Five concrete differentiators relative to the existing 49-design corpus:**

1. **The first deep-sea press dome.** No other design in the corpus stages itself at 4,000 meters depth, and certainly none uses a literal *descending depth ramp* (0 m → 4,000 m mapped to scroll position) as its core kinetic element. The site is *physically descending* as you read it.
2. **Inflated-3D + crystalline duality as a deliberate design tension.** Inflated-3D appears once before in the corpus; crystalline appears once before. **bada.news is the only design that pairs them**, and pairs them as deliberate counterpoints — squishy puffy objects against hard faceted gemstones, both rendered in the same muted salt-bleached palette. The contrast is the design's signature.
3. **No parallax. No scroll-jacking. Hard-snapped vertical slabs.** In a corpus where parallax is at 91% and stagger at 69%, bada.news refuses both and uses pure CSS `scroll-snap-type: y mandatory` for all slab-to-slab transitions. The reading rhythm is mechanical, quantized, and quiet — the opposite of the corpus average.
4. **Typewriter-effect as primary motion engine.** Most sites in the corpus that use typewriter use it ornamentally on a single hero line. bada.news uses it as the *exclusive* text-rendering technique — every headline, every body paragraph, every caption, every UI label is typed character-by-character with simulated human backspace-and-correction every 600 chars. The whole page reads as if it is being written live from the dome.
5. **Three-voice eclectic-hybrid type system with Caveat as the seven-instance restriction.** Fraunces SOFT 100 / WONK 1 (display) + JetBrains Mono (body and UI) + Caveat (handwritten margin notes, exactly seven instances) is a deliberate three-way tension that no other design in the corpus attempts. The seven-instance restriction on Caveat means the handwriting always feels like a *human gesture*, never a font.

**Avoided patterns (per frequency report):**

- **Avoided `hand-drawn` (85%)** — the dominant aesthetic; bada.news is rendered, not drawn.
- **Avoided `photography` (93%)** — zero photographic imagery on the page.
- **Avoided `centered` (93%) and `full-bleed` (89%) as dominant layouts** — bada.news uses `stacked-sections` (2%) instead.
- **Avoided `warm` (97%) and `gradient` (91%) palettes** — bada.news is muted, cool-leaning, and uses flat color blocks with no gradients anywhere.
- **Avoided `vintage` motifs (89%)** — bada.news uses `crystalline` (2%).
- **Avoided `parallax` (91%) and `stagger` (69%) patterns** — bada.news uses `typewriter-effect` (8%) and hard scroll-snap.
- **Avoided `mono` (95%) as the only typographic voice** — bada.news pairs mono with Fraunces and Caveat for genuine eclectic-hybrid.
- **Avoided `professional` (40%) and `friendly` (34%) tones** — bada.news is `approachable-casual` (4%), sleepy and lowercase.
<!-- DESIGN STAMP
  timestamp: 2026-05-05T19:59:38
  seed: combination is
  aesthetic: `bada` is the Korean word for *sea*, and `bada.news` is **the imaginary deep-sea...
  content_hash: 43c7ea0347de
-->
