# Design Language for bada.city

## Aesthetics and Tone

bada.city is a submerged metropolis -- an imagined capital of the sea ("바다" means "sea" in Korean) rendered as if the visitor has descended, lungs full of borrowed breath, into a place where architecture is made of currents and citizens are made of light. The aesthetic is **seapunk** crossed with **wabi-sabi**: not the glossy blue-on-white of corporate travel brochures, not the cheerful cartoon fish of a children's book, but the slower, heavier beauty of an underwater city at the hour when sunlight can barely reach the rooftops. Think of the last moments of Atlantis captured not as catastrophe but as quiet inheritance. Think of Jacques Cousteau's grainy 16mm dive footage re-scored by Hiroshi Yoshimura. Think of a Hokusai wave that was never cresting, only always folding inward into itself.

The tone is **zen-contemplative** with an undercurrent of **mysterious-moody** -- the site breathes. It never rushes. Every interaction has the viscosity of water: motion is dampened, light is filtered, sound would be muffled if sound existed here. The visitor is not a customer being sold to; the visitor is a diver, descending by increments, and the interface is the pressure on their chest that reminds them they are somewhere sacred and not entirely safe. There is nothing to buy, nothing to sign up for, no testimonials from satisfied CEOs. There is only the city beneath the water, and the patience to notice it.

The guiding metaphor: **refraction**. Light that enters water does not travel straight -- it bends, splits, shimmers. Every design decision should behave as though it has passed through a column of seawater before reaching the eye. Edges soften. Colors shift toward cyan. Time slows. What was solid becomes suggestion.

## Layout Motifs and Structure

The structural spine is an **organic-flow** composition with **layered-depth** parallax -- explicitly rejecting the card-grid, centered-hero, and bento-box patterns that dominate the rest of the collection. There is no grid. There are no rectangular containers with equal margins. There are currents.

**The three-stratum depth model:**

- **The Abyssal Layer** (z = -300, background): A slow-drifting SVG mesh of dark kelp-silhouettes and distant coral towers, scrolling at 0.15x the user's scroll speed. This layer is nearly opaque ink-black where the user lands and gradually lightens as they scroll "upward" toward the surface. The user is descending in reverse -- reading downward on the page corresponds to ascending through the water column.

- **The Mesopelagic Layer** (z = 0, content): The actual readable content, set in loose typographic islands of varying width (never full-bleed, never a fixed column grid). Each island is shaped by its content: a haiku occupies a narrow vertical sliver, a longer meditation spreads into an asymmetric trapezoid, a single word floats in an enormous pool of negative space. Content blocks do not align to a shared baseline; they align to invisible currents -- subtle Bezier curves defined in CSS via `clip-path` and `offset-path`.

- **The Photic Layer** (z = +200, foreground): Slowly drifting particles of caustic light -- the wavering ripple patterns that sunlight casts on the seafloor. Rendered as a looping WebGL shader applied to a fixed-position overlay at `mix-blend-mode: soft-light` and opacity 0.35. This layer is never "above" the text in a legibility-destroying way; it's a filter the entire page passes through, a constant reminder that we are underwater.

**The vertical journey is structured as six depths**, each the height of 100vh + a 40vh transition zone where the previous depth bleeds into the next (no hard section breaks, no horizontal rule dividers, no "next section" buttons):

1. **Surface (0m)** — The splash: a single wave curling across the viewport, animated as an infinite SVG path that redraws itself every 8 seconds. The word "바다" sits inside the wave's negative space.
2. **Twilight (200m)** — The city name is introduced. Content begins to appear as floating islands.
3. **Bathyal (1000m)** — The deepest readable content: a manifesto-length meditation on the city.
4. **Abyssal (4000m)** — Bioluminescent data points emerge from darkness: abstract glyphs representing the city's "population," "depth," "pressure" -- but rendered as if the figures were only partially recovered from a log that water has stained.
5. **Hadal (6000m)** — A single line of text in the center of total darkness.
6. **The Floor (11000m)** — The footer-that-is-not-a-footer: a patient, nearly-silent signoff.

There is no navigation bar. Instead, a vertical "depth gauge" clings to the right edge of the viewport -- a thin cyan line with a small glyph marking the current depth, updating smoothly as the user scrolls. Clicking any labeled depth on the gauge triggers a slow, inertial scroll (800ms cubic-bezier(0.23, 1, 0.32, 1)).

## Typography and Palette

**Typography (Google Fonts only):**

- **Display / Depth Markers**: "Cormorant Garamond" (Google Fonts), weight 300, italic variant used for depth labels and the splash wordmark. Its high-contrast strokes and delicate serifs mimic the refractive shimmer of glass under water -- the thin strokes almost disappear, giving the text a ghostly, half-submerged quality. Set at clamp(4rem, 11vw, 9rem) for the hero wordmark "바다 · city" with `font-feature-settings: "liga" 1, "swsh" 1` to engage swash variants that swirl like eddies.

- **Body / Prose**: "Gowun Batang" (Google Fonts) -- a Korean serif with both Hangul and Latin support, designed by Young-joo Jang with restrained, quietly calligraphic curves that echo classical Korean brush strokes. Used for the meditative paragraph content at 18px, line-height 1.85, letter-spacing 0.01em. The generous line-height gives each line room to breathe, as though each sentence is suspended in its own pocket of water. Hangul glyphs at this size retain their architectural weight without becoming imposing.

- **Captions / Technical / Depth Readouts**: "Major Mono Display" (Google Fonts) -- an all-caps monospace with geometric, almost blueprint-like letterforms. Used sparingly at 11px with letter-spacing 0.2em for depth measurements ("-1040m"), coordinates, and figures. Renders in the cyan accent color, reading like a dive computer's display reflected off goggles.

**Palette (eight hex values, eschewing the dominant warm-gradient trend):**

- `#04121c` — Hadal Ink: the deepest background, the color of the ocean at 6000m where no photon ever arrives. This is the page's default background, and the starting point of the descent gradient.
- `#0a2a3a` — Bathyal Slate: a dense, blue-black tone used for mid-depth backgrounds and the kelp-silhouette SVG strokes in the Abyssal Layer.
- `#14536b` — Mesopelagic Teal: the primary container / panel color; used behind text islands where additional contrast against the Hadal Ink is needed. Applied at 0.4 opacity over the background so that the particle caustics bleed through.
- `#4a9da8` — Photic Cyan: the primary accent. Used for the depth gauge line, the wordmark highlight, and all active-state interactions. A slightly desaturated cyan that evokes shallow tropical water, not aquarium-tourism blue.
- `#7fc8d9` — Wave Crest: a lighter cyan used for hover states and active typography glow. This is the color that sunlight becomes when it has only passed through ten meters of seawater.
- `#e8f0e8` — Foam: near-white with a faint green cast, used for primary body text on dark backgrounds. Deliberately not pure white -- pure white does not exist underwater; everything has a tint.
- `#c9b18a` — Coral Sand: a muted, warm ochre used with extreme restraint as a single counterpoint color. Appears only in small details -- the glow of a single bioluminescent glyph, an underlined word in a quote. This is the one warm note in an otherwise entirely cool palette, and its rarity is load-bearing.
- `#8d2e3f` — Deep Coral: used once, and only once, on the entire site -- as the color of the final word of the closing meditation. A single dying-coral hue that tells the visitor: something was here, and has almost gone.

The palette gradient is **monochrome-cool with a single warm whisper** -- a deliberate rejection of the "gradient + warm + muted" trifecta present in nearly all other designs.

## Imagery and Motifs

**Core motif: the ripple as unit of meaning.** Every decorative element on the site is either a ripple, a thing that causes ripples, or a thing dissolving into them. Ripples appear as:

- **SVG wave lines**: Long, near-horizontal sine waves that traverse the full viewport width, drawn with `stroke-dasharray` and animated via `stroke-dashoffset` to appear as though being drawn forever. Each wave has a slightly different frequency and phase; layered, they create a moiré that suggests depth without illustrating it. These lines separate "sections" (no `<hr>` -- there are only waves).

- **Caustic light patterns**: Generated via a WebGL fragment shader using layered noise functions to produce the rippling light patterns that underwater photographers know as "caustics." The shader runs at 30fps (intentionally throttled below 60 to save battery and maintain a dreamy, film-like quality) and is applied as a full-page overlay.

- **Bioluminescent glyphs**: Small, Hangul-inspired marks (derived from the shapes of the letters in "바다") that pulse with the coral-sand accent color. They appear in the Abyssal and Hadal depths as the primary visual content of those sections -- tiny coordinates of life in total darkness.

- **Drifting jellyfish silhouettes**: Three SVG shapes at widely spaced intervals, drifting across the viewport on independent Bezier paths at extreme slowness (90-second transit). Rendered as semi-transparent cyan outlines -- more felt than seen.

- **Hokusai-echo wave**: At the Surface depth, a stylized wave curl inspired by Hokusai's "The Great Wave off Kanagawa" -- but abstracted to a single continuous SVG path, drawn in Foam color against Hadal Ink. It is the only figurative illustration on the site. Its claws of foam animate into existence on page load with a `stroke-dashoffset` animation spanning 2.6 seconds.

**What is absent (deliberately):**

- No stock photography of beaches.
- No smiling tourists.
- No surfboards, palm trees, or cocktail umbrellas.
- No star ratings, pricing tiers, "book now" buttons.
- No statistics about visitor counts or travel awards.
- No team-member bios in a three-column grid.

**Ambient texture:**

A single looping background texture file: a tiled grayscale map of light-on-water caustic reflections, applied at `mix-blend-mode: overlay` and 8% opacity. This is the "grain" of the site -- except instead of the film-grain noise that appears in many other designs, it is water-grain: the ever-shifting, never-repeating texture of refracted light. It unifies every surface on the page as subaqueous.

**The pointer becomes a fish.** The system cursor is replaced (on non-touch devices) with a tiny 16×12 SVG silhouette of a fish, pointing in the direction of pointer motion. The fish's velocity and rotation are lerped toward the true cursor position, so it "swims" after the pointer with a 120ms trailing delay. When the pointer is idle for more than 3 seconds, the fish makes small figure-eight patterns in place, as though browsing a reef.

## Prompts for Implementation

**Narrative arc:** The site is a descent. The user is a diver. The content is not product copy; it is an imagined poetics of a city beneath the sea. Every word, every animation, every color should reinforce that the visitor has left the air and entered the water. No CTA. No form. No conversion funnel.

**1. Load sequence (2.4 seconds, the descent through the surface):**
- The page loads at `#e8f0e8` (Foam) with a single thin horizontal line of Photic Cyan across the center -- the water's surface seen from below.
- Over 800ms, the background darkens from Foam through Wave Crest through Photic Cyan to Hadal Ink.
- At 1200ms, the Hokusai wave SVG begins drawing itself, right-to-left, at 2.6s duration (intentionally slightly longer than the caller expects).
- At 1400ms, the word "바다" materializes inside the wave's negative space -- not with a fade, but with a `filter: blur(24px) → blur(0)` transition as though surfacing from murk.
- At 2200ms, the depth gauge slides in from the right edge.
- At 2400ms, the user can scroll.

**2. Scroll as descent.** Scroll-triggered animations drive the entire experience, but NOT in the standard "fade-in as element enters viewport" way. Instead:
- The parallax stratum system (Abyssal / Mesopelagic / Photic) scrolls at different rates (0.15x, 1.0x, 1.25x), creating the sensation of passing through a water column.
- Typography does not fade in; it **refracts in** -- the `backdrop-filter` blur on each text island reduces from 12px to 0 as it enters the viewport, so text "focuses" the way a lens does through moving water.
- The depth gauge updates in real-time as the user scrolls, with the depth number using a smooth counter-animate interpolation.

**3. Cursor and interaction.**
- The fish-cursor described above. Implemented with a fixed-position `<svg>` whose transform is updated on `mousemove` (with a `requestAnimationFrame`-driven lerp to trail slightly behind true position).
- Hovering over any Hangul character in the body text causes it to ripple -- a CSS custom property drives a `filter: hue-rotate()` plus a faint `text-shadow` pulse that radiates outward for 900ms.
- Links do not underline on hover. Instead, a sine wave underline draws itself beneath the link via SVG `stroke-dashoffset`, taking 600ms to complete.

**4. The caustic shader (the signature element).** A single `<canvas>` pinned to position fixed covers the viewport. Inside, a WebGL program with a fragment shader composes multiple octaves of 2D simplex noise, warped by a slow rotation, and outputs brightness values that are multiplied against the Photic Cyan color at 35% opacity with `mix-blend-mode: soft-light`. The shader evolves in real time but extremely slowly -- a full cycle takes ~90 seconds, so the user never sees repetition during a single session. Fallback: on devices where WebGL is unavailable or `prefers-reduced-motion: reduce` is set, the shader is replaced with a static SVG of frozen caustics.

**5. The depth gauge.** A 1px vertical Photic Cyan line pinned to the right edge of the viewport, 60vh tall, vertically centered. Along its length, small tick-marks at the six depth levels. The current depth is indicated by a small glowing dot that slides smoothly as the user scrolls. Beneath the gauge, a monospaced readout in Major Mono Display shows the current depth in meters, updating in real time. Clicking a tick triggers inertial scroll to that depth.

**6. Audio (optional, opt-in).** A small speaker glyph appears in the top-left after the load sequence completes. If activated, an ambient drone loop plays -- low-passed whale song mixed with the creaking of distant hulls. Volume is automatically limited to 40%. The site never auto-plays.

**7. The final depth (Hadal, 11000m).** The footer is a single line of Gowun Batang at 14px, in Foam against Hadal Ink, centered horizontally, with one word in Deep Coral: "여기까지 내려왔다." ("You have come this far down.") Below the text, three bioluminescent glyphs pulse slowly in the coral-sand accent. There is no copyright notice, no social links, no sitemap. The descent simply ends.

**8. Technical constraints.**
- Single-page, single-HTML-file architecture (no SPA framework required).
- All animations must respect `prefers-reduced-motion`. In reduced-motion mode, the caustic shader becomes static, parallax disappears, and descent transitions become immediate cross-fades.
- SVG-first for all illustrative elements (waves, jellyfish, glyphs, Hokusai curl, depth gauge).
- No images over 100kb. The Hokusai wave is ~6kb of SVG path data.
- Fonts loaded with `font-display: swap` and preconnect hints to `fonts.gstatic.com`.

**9. Mood-reinforcement guidance for copy.** If copy is needed beyond placeholder, it should read like Rilke translated by Basho. Short lines. Physical nouns. Restraint. Example of tone: "The lamps of the city do not light themselves -- the jellyfish pass, and for a moment each window glows." Avoid marketing language absolutely. Avoid second-person imperative ("discover", "explore", "learn more"). Prefer the first-person-plural ("we descend") or no person at all.

## Uniqueness Notes

**Differentiators from other designs in the collection:**

1. **Descent as structural metaphor.** No other design in the collection uses vertical scroll as depth-through-water. The depth gauge (a real-time numerical readout tied to scroll position, with tick-marks corresponding to named depth zones) is a wholly novel navigational element -- a "page map" that is also thematic content. This replaces the conventional navigation bar entirely.

2. **Monochrome-cool palette with a single warm whisper.** Frequency analysis shows that 95% of designs lean on warm palettes and 97% use gradients in the standard warm-muted-gradient trifecta. bada.city uses a near-entirely cool palette (the Hadal Ink through Photic Cyan range) with exactly one warm accent (Coral Sand) and exactly one warm hue (Deep Coral) used on exactly one word in the entire document. This is a deliberate inversion of the dominant pattern.

3. **Organic-flow layout with no card-grid, no centered hero, no bento-box.** The collection is saturated with card-grid (92%) and centered (85%) layouts. bada.city has zero rectangular content cards and no centered content column -- content flows along invisible currents using `clip-path`, asymmetric widths, and per-island placement.

4. **The caustic shader as continuous atmospheric signature.** No other design uses a real-time WebGL shader as a persistent full-page atmospheric overlay. The caustics are not a "hero background" -- they follow the user through every depth of the descent, applied at `mix-blend-mode: soft-light` across the entire experience.

5. **The fish cursor.** A custom pointer that swims (lerped, trailing rotation, idle-behavior figure-eights) is not present in any other design in the collection. It is a small interaction, but it is load-bearing: every mouse movement reinforces that we are underwater.

6. **Refraction-based text reveal.** Scroll-triggered animations in the collection heavily favor fade, slide, and blur-to-focus transitions. bada.city uses `backdrop-filter: blur()` on text islands, decreasing as they enter the viewport -- text "focuses" as though seen through a lens of moving water. This is categorically different from "text fades in."

7. **Korean-Latin typographic pairing (Gowun Batang + Cormorant Garamond + Major Mono Display).** The frequency analysis shows heavy usage of mono (87%), humanist (42%), and serif-classic (35%) fonts, but no design uses a Korean-Latin dual-script pairing that foregrounds Hangul as a primary typographic element. "바다" is not just a site name -- it is a recurring visual motif, hovered, rippled, refracted.

8. **Ritualized single-word warm accent.** The Deep Coral word at the end of the descent is the single most saturated warm color on the site, appearing only once, on one word ("여기까지 내려왔다"). This is the design's emotional punctum -- a color used so sparingly that it shocks, softly, when it finally appears.

**Chosen seed/style:** `ocean deep calming spa` (from seeds.json), reinterpreted away from the predictable wellness-spa visual clichés (white tile, stone bowls, minimalist Latin typography, soft gradient blues) toward a more literal, more imaginative reading of "ocean deep" as actual abyssal descent.

**Avoided overused patterns (from frequency analysis):**
- Avoided `corporate` aesthetic (87%).
- Avoided `card-grid` layout (92%).
- Avoided `centered` layout (85%).
- Avoided `photography` imagery (92%).
- Avoided `gradient` + `warm` + `muted` palette trifecta (97%/95%/67%).
- Avoided `mono` as dominant typography (87%) -- mono appears only as small technical readouts.
- Used underused patterns: `organic-flow` (15%), `wave-forms` (2%), `layered-depth` (35%), `bubble-playful` adjacent imagery (5%), `zen-contemplative` tone (10%), `ocean-deep` palette (rare), `seapunk` aesthetic (unused in collection).
<!-- DESIGN STAMP
  timestamp: 2026-04-24T06:49:14
  seed: seed
  aesthetic: bada.city is a submerged metropolis -- an imagined capital of the sea ("바다" mean...
  content_hash: 25f0726f8474
-->
