kalei/initial mockups/claude_implementation_instr...

1192 lines
47 KiB
Markdown
Raw Normal View History

# Kalei — Claude Code Implementation Instructions
> **Purpose:** This document tells Claude Code everything it needs to know to build pixel-perfect, interactive HTML mockups for every screen in the Kalei app.
>
> **Read this file first, then follow the build order at the bottom.**
---
## 1. What You're Building
You are building **64 interactive HTML mockup screens** for Kalei, a mobile mental wellness app. Each screen is a standalone `.html` file that:
- Renders at **390 × 844px** (iPhone 14 viewport) inside a rounded device frame
- Uses the shared `design-system.css` for all tokens, typography, components, and layout
- References SVG assets from the `assets/` folder for icons, patterns, decorations, and visualizations
- Includes micro-interactions and state transitions using CSS animations + minimal vanilla JS
- Can be viewed in any browser by opening the file directly (no build step, no server)
**Output format:** Single-file HTML per screen. All CSS beyond `design-system.css` goes in a `<style>` block. All JS goes in a `<script>` block. No frameworks, no npm, no React — pure HTML + CSS + JS.
---
## 2. Repository Map
```
Kalei/
├── docs/
│ ├── brand/
│ │ ├── kalei-brand-guidelines.md ← Color palette, typography, voice & tone
│ │ └── kalei-brand-metaphor.md ← Kaleidoscope metaphor deep dive
│ ├── product/
│ │ ├── kalei-complete-user-journey.md ← **PRIMARY REF** — all 64 screens described
│ │ ├── kalei-complete-design.md ← Feature specs, interactions, flows
│ │ ├── kalei-mirror-feature.md ← Mirror (journaling) deep dive
│ │ └── kalei-spectrum-phase2.md ← Spectrum analytics specs
│ ├── technical/
│ │ ├── kalei-user-journey-technical-map.md ← API endpoints, DB schemas, component tree
│ │ └── kalei-system-architecture-plan.md ← Tech stack, infrastructure
│ └── build-phases/ ← Phase 04 roadmaps
├── initial mockups/
│ ├── claude_implementation_instructions.md ← **THIS FILE**
│ ├── assets/
│ │ ├── design-system.css ← **IMPORT IN EVERY SCREEN**
│ │ ├── ASSET-INDEX.md ← Catalog of all SVG elements
│ │ ├── preview-all-assets.html ← Visual preview of all SVGs
│ │ ├── icons-tab-bar.svg ← 5 navigation icons (active + inactive)
│ │ ├── icons-distortions.svg ← 10 cognitive distortion icons
│ │ ├── icons-actions.svg ← 30 action/UI icons
│ │ ├── fragment-icons.svg ← Fragment ◇ in 5 sizes, 8 colors
│ │ ├── decorative-shards.svg ← Background shards, auras, dividers
│ │ ├── patterns-kaleidoscope.svg ← 7 kaleidoscope pattern variants
│ │ ├── progress-indicators.svg ← Rings, bars, dots, streaks
│ │ ├── evidence-wall.svg ← Mosaic tiles and connection system
│ │ ├── loading-animations.svg ← Spinners, skeletons, AI thinking
│ │ ├── device-chrome.svg ← Status bar, tab bar, nav header
│ │ └── spectrum-visualizations.svg ← 5 analytics chart types
│ │
│ └── screens/ ← **OUTPUT DIRECTORY**
│ ├── onboarding/ ← Screens 19
│ ├── turn/ ← Screens 1014
│ ├── mirror/ ← Screens 1519
│ ├── lens/ ← Screens 2030
│ ├── gallery/ ← Screens 3134
│ ├── you/ ← Screens 3543
│ ├── ritual/ ← Screens 4449
│ ├── spectrum/ ← Screens 5057
│ ├── modals/ ← Screens 5861
│ └── system-states/ ← Screens 6264 + loading/error/offline
├── logo-mockups/
│ └── finalists/
│ └── soft-elegance-final.svg ← **LOGO & VISUAL DNA SOURCE**
└── research/ ← Academic PDFs (context only, don't reference)
```
---
## 3. Visual DNA — The Soft-Elegance Language
Every visual decision descends from `soft-elegance-final.svg`. Study it before building anything.
### 3.1 Core Principles
| Principle | How It Manifests |
|-----------|-----------------|
| **Crystalline geometry** | Diamond ◇ as the universal shape — fragments, icons, tiles, data points |
| **Jewel tone gradients** | Each color is a gradient pair: light stop → dark stop (e.g., `#C4B5FD``#7C3AED` for Amethyst) |
| **Glow, not shadow** | Elements glow outward with `box-shadow: 0 0 Npx rgba(color, 0.3)`. No traditional drop shadows. |
| **Breathing animations** | Slow pulsing opacity/scale on decorative elements (6s cycle) |
| **Prismatic color cycling** | Gradient that shifts through Amethyst → Sapphire → Emerald → Amber → Rose |
| **Dark void canvas** | #050508 base with layered surfaces (#0A0E1A → #121628#1C2240) |
| **Screen blend mode** | Overlapping translucent elements blend additively for a light-through-glass effect |
### 3.2 Color System
```css
/* Backgrounds (darkest → lightest) */
--void: #050508; /* Deepest bg, device frame bg */
--kalei-navy: #0A0E1A; /* Primary surface (cards, tab bar) */
--deep-glass: #121628; /* Elevated surface (inputs, modals) */
--twilight: #1C2240; /* Borders, dividers, inactive elements */
/* Jewel Tones — each feature "owns" a color */
--amethyst: #8B5CF6; /* Turn ◇ — primary accent */
--sapphire: #3B82F6; /* Gallery ▦ — info */
--emerald: #10B981; /* Lens ◎ — success, growth */
--amber: #F59E0B; /* Mirror ✦ — fragments, awareness */
--rose: #EC4899; /* Social, sharing */
--ruby: #EF4444; /* Error, destructive, crisis */
--indigo: #6366F1; /* Extended palette */
/* Text hierarchy */
--pure-light: #FFFFFF; /* Titles, primary values */
--soft-light: #E2E8F0; /* Body text */
--dim-light: #94A3B8; /* Secondary text, labels */
--faint-light: #475569; /* Tertiary, placeholders */
```
### 3.3 Typography
```css
/* Display: Space Grotesk — titles and hero text */
--font-display: 'Space Grotesk', 'Inter', sans-serif;
/* Body: Inter — everything else */
--font-primary: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
```
| Class | Size | Weight | Use |
|-------|------|--------|-----|
| `.display-xl` | 40px | 700 | Splash, hero moments |
| `.display-lg` | 32px | 700 | Section heroes |
| `.display-md` | 24px | 600 | Card titles |
| `.heading` | 20px | 600 | Nav titles, section heads |
| `.subheading` | 16px | 600 | Subsection heads |
| `.body-lg` | 17px | 400 | Primary reading text (journal, reframes) |
| `.body` | 15px | 400 | Standard body |
| `.body-sm` | 13px | 400 | Metadata, timestamps |
| `.label` | 11px | 500 | Uppercase labels, section headers |
### 3.4 Feature → Color → Icon Mapping
| Tab | Feature | Color | Icon Shape | Gradient Stops |
|-----|---------|-------|------------|----------------|
| Turn | Reframing | Amethyst | Diamond ◇ | `#C4B5FD``#7C3AED` |
| Mirror | Journaling | Amber | Hexagon ✦ | `#FDE68A``#D97706` |
| Lens | Goals | Emerald | Circle ◎ | `#6EE7B7``#059669` |
| Gallery | Collection | Sapphire | Grid ▦ | `#93C5FD``#2563EB` |
| You | Profile | Soft Light | Circle ● | `#E2E8F0``#94A3B8` |
---
## 4. Screen Template — Every File Starts Here
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=390, initial-scale=1">
<title>Kalei — [Screen Name]</title>
<link rel="stylesheet" href="../assets/design-system.css">
<style>
/* Screen-specific styles go here */
</style>
</head>
<body>
<div class="device-frame">
<!-- STATUS BAR (always present except splash) -->
<div class="status-bar">
<span class="time">9:41</span>
<div class="icons">
<svg width="16" height="16" viewBox="0 0 16 16" fill="none">
<rect x="1" y="7" width="2.5" height="5" rx="0.5" fill="#E2E8F0" opacity="0.4"/>
<rect x="4.5" y="5" width="2.5" height="7" rx="0.5" fill="#E2E8F0" opacity="0.6"/>
<rect x="8" y="3" width="2.5" height="9" rx="0.5" fill="#E2E8F0" opacity="0.8"/>
<rect x="11.5" y="1" width="2.5" height="11" rx="0.5" fill="#E2E8F0"/>
</svg>
<svg width="16" height="16" viewBox="0 0 16 16" fill="none">
<path d="M 2,8 C 4,4 12,4 14,8" stroke="#E2E8F0" stroke-width="1.2" fill="none" stroke-linecap="round"/>
<path d="M 4,10 C 6,7 10,7 12,10" stroke="#E2E8F0" stroke-width="1" fill="none" opacity="0.8" stroke-linecap="round"/>
<circle cx="8" cy="12" r="1.2" fill="#E2E8F0"/>
</svg>
<svg width="24" height="12" viewBox="0 0 24 12" fill="none">
<rect x="0.5" y="0.5" width="21" height="11" rx="2.5" stroke="#E2E8F0" stroke-width="1" opacity="0.5"/>
<rect x="22" y="3" width="2" height="6" rx="1" fill="#E2E8F0" opacity="0.3"/>
<rect x="2" y="2" width="16" height="8" rx="1.5" fill="#10B981" opacity="0.9"/>
</svg>
</div>
</div>
<!-- NAV HEADER (present on non-root screens) -->
<div class="nav-header">
<a class="nav-back" href="#">
<svg width="20" height="20" viewBox="0 0 20 20" fill="none">
<path d="M12 4L6 10L12 16" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
</a>
<span class="nav-title">[Title]</span>
<span class="nav-action"><!-- optional right icon --></span>
</div>
<!-- SCREEN CONTENT -->
<div class="screen-content">
<!-- Unique screen content goes here -->
</div>
<!-- TAB BAR (present on main tab screens) -->
<div class="tab-bar">
<a class="tab-item active" data-tab="turn">
<svg width="24" height="24" viewBox="0 0 24 24">
<path d="M12 2L20 12L12 22L4 12Z" fill="currentColor" opacity="0.9"/>
<path d="M12 2L20 12L12 12Z" fill="white" opacity="0.15"/>
</svg>
<span class="tab-label">Turn</span>
</a>
<a class="tab-item inactive" data-tab="mirror">
<svg width="24" height="24" viewBox="0 0 24 24">
<path d="M12 3L16 8L18 14L12 19L6 14L8 8Z" stroke="currentColor" fill="none" stroke-width="1.2"/>
</svg>
<span class="tab-label">Mirror</span>
</a>
<a class="tab-item inactive" data-tab="lens">
<svg width="24" height="24" viewBox="0 0 24 24">
<circle cx="12" cy="12" r="9" stroke="currentColor" fill="none" stroke-width="1.2"/>
<circle cx="12" cy="12" r="4" stroke="currentColor" fill="none" stroke-width="0.8"/>
</svg>
<span class="tab-label">Lens</span>
</a>
<a class="tab-item inactive" data-tab="gallery">
<svg width="24" height="24" viewBox="0 0 24 24">
<rect x="3" y="3" width="7.5" height="7.5" rx="1.5" stroke="currentColor" fill="none" stroke-width="1"/>
<rect x="13.5" y="3" width="7.5" height="7.5" rx="1.5" stroke="currentColor" fill="none" stroke-width="1"/>
<rect x="3" y="13.5" width="7.5" height="7.5" rx="1.5" stroke="currentColor" fill="none" stroke-width="1"/>
<rect x="13.5" y="13.5" width="7.5" height="7.5" rx="1.5" stroke="currentColor" fill="none" stroke-width="1"/>
</svg>
<span class="tab-label">Gallery</span>
</a>
<a class="tab-item inactive" data-tab="you">
<svg width="24" height="24" viewBox="0 0 24 24">
<circle cx="12" cy="9" r="4" stroke="currentColor" fill="none" stroke-width="1.2"/>
<path d="M4 20C4 16 8 14 12 14C16 14 20 16 20 20" stroke="currentColor" fill="none" stroke-width="1.2" stroke-linecap="round"/>
</svg>
<span class="tab-label">You</span>
</a>
</div>
</div>
<script>
// Screen-specific interactions go here
</script>
</body>
</html>
```
### Template Rules
1. **Tab bar** is only present on the 5 root tab screens and their immediate children (Turn Home, Mirror Home, Lens Dashboard, Gallery All Patterns, You Profile). Sub-screens (detail views, creation flows) use nav-header + back button instead, no tab bar.
2. **Nav header** is hidden on root tab screens (tab bar acts as navigation). Show it on all sub-screens with a back chevron and centered title.
3. **Status bar** is always present except on the Splash screen (Screen 1).
4. **Active tab** changes color per feature — set the correct `data-tab` attribute and `active` class.
5. **Screen content** has `flex: 1` and scrolls vertically. Use `screen-content centered` for splash/onboarding screens.
---
## 5. SVG Asset Usage Guide
### 5.1 How to Use SVGs in Mockups
The SVG files are **reference sheets** — each contains multiple elements arranged on a canvas for visual cataloging. You should **not embed the entire SVG file**. Instead:
**Option A: Inline the specific SVG element** (preferred for icons and small elements)
```html
<!-- Inline just the Amethyst fragment diamond -->
<svg width="24" height="24" viewBox="0 0 24 24">
<defs>
<linearGradient id="grAmethyst" x1="0" y1="0" x2="0" y2="1">
<stop offset="0%" stop-color="#C4B5FD"/>
<stop offset="100%" stop-color="#7C3AED"/>
</linearGradient>
</defs>
<path d="M12 2L20 12L12 22L4 12Z" fill="url(#grAmethyst)"/>
<path d="M12 2L20 12L12 12Z" fill="#fff" opacity="0.15"/>
</svg>
```
**Option B: CSS recreation** (preferred for backgrounds, auras, decorations)
```css
.breathing-aura {
position: absolute;
width: 200px;
height: 200px;
border-radius: 50%;
background: radial-gradient(circle, rgba(139,92,246,0.2), transparent 70%);
filter: blur(40px);
animation: breathing 6s ease-in-out infinite;
}
```
**Option C: Use `<object>` or `<img>` for complex patterns** (kaleidoscope hero, evidence wall mosaic)
```html
<!-- Only when the full pattern is needed -->
<object data="../assets/patterns-kaleidoscope.svg" type="image/svg+xml"
style="width: 200px; height: 200px;"></object>
```
### 5.2 Asset → Screen Mapping
| SVG File | Used In Screens |
|----------|----------------|
| `icons-tab-bar.svg` | All tab bar screens (reference for inline SVGs) |
| `icons-distortions.svg` | Mirror Fragment Detail (#18), Mirror Reflection (#19), Spectrum (#5057) |
| `icons-actions.svg` | Every screen — navigation, actions, status indicators |
| `fragment-icons.svg` | Turn Results (#13), Mirror Highlight (#17), Evidence Wall (#3943) |
| `decorative-shards.svg` | Onboarding (#29), Turn Home (#10), splash backgrounds |
| `patterns-kaleidoscope.svg` | Splash (#1), Welcome (#2), Turn Animation (#12), Gallery Detail (#33), Pattern Share (#61) |
| `progress-indicators.svg` | Lens Dashboard (#20), Ritual Streak (#49), You Stats (#36) |
| `evidence-wall.svg` | Evidence Wall screens (#3943) |
| `loading-animations.svg` | System states, Turn Animation (#12), AI Thinking states |
| `device-chrome.svg` | Reference for status bar, tab bar, nav header (already in template) |
| `spectrum-visualizations.svg` | Spectrum screens (#5057) |
### 5.3 The Fragment ◇ — Universal Element
The diamond fragment `◇` appears everywhere. Build it as a reusable inline SVG:
```html
<!-- Fragment: size options xs(12) sm(16) md(24) lg(36) xl(48) -->
<svg class="fragment" width="24" height="24" viewBox="0 0 24 24">
<defs>
<linearGradient id="grFrag" x1="0" y1="0" x2="0" y2="1">
<stop offset="0%" stop-color="#C4B5FD"/>
<stop offset="100%" stop-color="#7C3AED"/>
</linearGradient>
<filter id="fragGlow">
<feGaussianBlur stdDeviation="1.5" result="b"/>
<feMerge><feMergeNode in="b"/><feMergeNode in="SourceGraphic"/></feMerge>
</filter>
</defs>
<g filter="url(#fragGlow)">
<path d="M12 2L20 12L12 22L4 12Z" fill="url(#grFrag)" opacity="0.9"/>
<path d="M12 2L20 12L12 12Z" fill="#fff" opacity="0.15"/>
</g>
</svg>
```
Color variants — swap the gradient stops:
- **Amethyst:** `#C4B5FD``#7C3AED` (Turn, primary)
- **Amber:** `#FDE68A``#D97706` (Mirror, detected fragments)
- **Emerald:** `#6EE7B7``#059669` (Lens, success)
- **Sapphire:** `#93C5FD``#2563EB` (Gallery, info)
- **Rose:** `#F9A8D4``#DB2777` (social)
- **Ruby:** `#FCA5A5``#DC2626` (error)
---
## 6. Component Patterns
### 6.1 Fragment Highlight (Mirror Feature)
When AI detects a cognitive distortion in journal text, that text gets an amber underline highlight with a pulsing fragment icon:
```html
<span class="fragment-highlight">I always mess everything up</span>
<span class="fragment-icon">
<svg width="12" height="12" viewBox="0 0 12 12">
<path d="M6 1L10 6L6 11L2 6Z" fill="#F59E0B"/>
<path d="M6 1L10 6L6 6Z" fill="#fff" opacity="0.2"/>
</svg>
</span>
```
### 6.2 Reframe Block (Turn Results)
Three perspectives shown after a Turn:
```html
<div class="reframe-block amethyst">
<div class="reframe-label">Perspective Shift</div>
<div class="reframe-text">What if "messing up" is actually how you learn what works?</div>
</div>
<div class="reframe-block sapphire">
<div class="reframe-label">Evidence Check</div>
<div class="reframe-text">Think of three recent things you handled well.</div>
</div>
<div class="reframe-block emerald">
<div class="reframe-label">Action Step</div>
<div class="reframe-text">Pick one small win from today and write it down tonight.</div>
</div>
```
### 6.3 Chat Bubbles (Mirror Session)
```html
<div class="chat-bubble user">
I've been feeling really overwhelmed at work lately. Everything feels like it's piling up.
</div>
<div class="chat-bubble ai">
It sounds like you're carrying a lot right now. Can you tell me more about what feels most overwhelming?
</div>
```
### 6.4 Card with Kaleidoscope Pattern
```html
<div class="card card-pattern">
<div class="pattern-visual">
<!-- Inline mini kaleidoscope SVG here -->
<svg width="120" height="120" viewBox="0 0 120 120" style="mix-blend-mode: screen;">
<!-- 6 blades at 60° intervals, using feature color gradient -->
</svg>
</div>
<div class="pattern-content">
<div class="body" style="color: var(--soft-light);">My first reframe</div>
<div class="body-sm" style="color: var(--dim-light);">Feb 21, 2026 • 3 perspectives</div>
</div>
</div>
```
### 6.5 Progress Ring
```html
<div class="progress-ring" style="width: 80px; height: 80px;">
<svg width="80" height="80" viewBox="0 0 80 80">
<circle cx="40" cy="40" r="34" fill="none" stroke="var(--twilight)" stroke-width="4"/>
<circle cx="40" cy="40" r="34" fill="none" stroke="var(--emerald)" stroke-width="4"
stroke-dasharray="213.6" stroke-dashoffset="59.8" stroke-linecap="round"/>
</svg>
<span class="progress-text">72%</span>
<span class="progress-label">Complete</span>
</div>
```
### 6.6 Evidence Wall Tile
```html
<div class="evidence-tile" style="
width: 100px; height: 100px;
background: var(--kalei-navy);
border: 1px solid var(--emerald);
border-radius: 12px;
display: flex; align-items: center; justify-content: center; flex-direction: column;
box-shadow: 0 0 12px rgba(16,185,129,0.2);
">
<svg width="24" height="24" viewBox="0 0 24 24">
<path d="M12 2L20 12L12 22L4 12Z" fill="#10B981" opacity="0.8"/>
</svg>
<span class="body-sm" style="color: var(--emerald-light); margin-top: 4px;">Goal Met</span>
</div>
```
### 6.7 Toast Notifications
```html
<!-- Success toast -->
<div style="
position: absolute; top: 70px; left: 50%; transform: translateX(-50%);
background: var(--deep-glass); border: 1px solid var(--emerald);
border-radius: 999px; padding: 8px 20px;
display: flex; align-items: center; gap: 8px;
box-shadow: 0 0 16px rgba(16,185,129,0.2);
animation: fadeIn 0.3s ease;
">
<svg width="16" height="16" viewBox="0 0 16 16">
<path d="M8 1L13 8L8 15L3 8Z" fill="#10B981"/>
</svg>
<span class="body-sm" style="color: var(--soft-light); font-weight: 500;">Turn saved</span>
</div>
```
---
## 7. Interaction Patterns
### 7.1 The Turn Animation Sequence
The signature moment. When a user submits a thought for reframing:
1. **Collapse** (0.3s): Input text compresses into a single diamond fragment at center
2. **Multiply** (0.4s): One fragment splits into 3, each drifting to a position
3. **Crystallize** (0.5s): Each fragment rotates 60° and settles into its reframe block position
4. **Settle** (0.3s): Reframe text fades in below each fragment
Implement with CSS `@keyframes` and `animation-delay` staggering:
```css
@keyframes turnCollapse {
0% { opacity: 1; transform: scale(1); }
100% { opacity: 0; transform: scale(0.3) translateY(-50px); }
}
@keyframes turnMultiply {
0% { opacity: 0; transform: scale(0.3); }
50% { opacity: 1; transform: scale(1.2); }
100% { opacity: 1; transform: scale(1) translateX(var(--offset-x)) translateY(var(--offset-y)); }
}
@keyframes turnSettle {
from { opacity: 0; transform: translateY(10px); }
to { opacity: 1; transform: translateY(0); }
}
```
### 7.2 Fragment Detection Animation (Mirror)
When AI detects a cognitive distortion mid-session:
1. Text gets amber underline (grows from left to right, 0.4s)
2. Tiny fragment ◇ pulses into existence beside the text
3. A subtle amber glow radiates from the highlighted text
4. Fragment detail card slides up as a half-sheet
### 7.3 Kaleidoscope Pattern Generation
For Turn results and Gallery cards, generate unique-looking patterns:
```html
<svg width="120" height="120" viewBox="0 0 120 120" style="mix-blend-mode: screen;">
<defs>
<linearGradient id="blade1" x1="0" y1="0" x2="0" y2="1">
<stop offset="0%" stop-color="#C4B5FD" stop-opacity="0.7"/>
<stop offset="100%" stop-color="#7C3AED" stop-opacity="0.3"/>
</linearGradient>
</defs>
<!-- 6 blades at 60° intervals -->
<g transform="translate(60,60)">
<g><path d="M0,0 L8,-45 L0,-50 L-8,-45Z" fill="url(#blade1)"/></g>
<g transform="rotate(60)"><path d="M0,0 L8,-45 L0,-50 L-8,-45Z" fill="url(#blade1)"/></g>
<g transform="rotate(120)"><path d="M0,0 L8,-45 L0,-50 L-8,-45Z" fill="url(#blade1)"/></g>
<g transform="rotate(180)"><path d="M0,0 L8,-45 L0,-50 L-8,-45Z" fill="url(#blade1)"/></g>
<g transform="rotate(240)"><path d="M0,0 L8,-45 L0,-50 L-8,-45Z" fill="url(#blade1)"/></g>
<g transform="rotate(300)"><path d="M0,0 L8,-45 L0,-50 L-8,-45Z" fill="url(#blade1)"/></g>
<!-- Core glow -->
<circle r="8" fill="white" opacity="0.15" filter="blur(3px)"/>
</g>
</svg>
```
Vary patterns per screen by changing: blade count (3 or 6), blade length, gradient colors, rotation offset, core glow size.
### 7.4 Breathing Aura (Background Decoration)
Place behind hero content on onboarding and Turn screens:
```css
.screen-aura {
position: absolute;
top: 30%;
left: 50%;
transform: translate(-50%, -50%);
width: 300px;
height: 300px;
border-radius: 50%;
background: radial-gradient(circle, rgba(139,92,246,0.15) 0%, transparent 70%);
filter: blur(60px);
animation: breathing 6s ease-in-out infinite;
pointer-events: none;
z-index: 0;
}
```
---
## 8. The 10 Cognitive Distortions
These appear in Mirror as detected "fragments." Each has an icon, color tint, and label:
| # | Distortion | Icon Concept | Detection Example |
|---|-----------|--------------|-------------------|
| 1 | Catastrophizing | Shattered diamond with explosion lines | "Everything is going to fall apart" |
| 2 | Black-and-White | Half-filled diamond (split) | "I always fail" / "It's never good enough" |
| 3 | Mind Reading | Diamond with eye inside | "They probably think I'm stupid" |
| 4 | Fortune Telling | Diamond with spiral/clock | "This will definitely go wrong" |
| 5 | Personalization | Diamond with arrow pointing inward | "It's all my fault" |
| 6 | Discounting Positives | Diamond with minus/strikethrough | "That doesn't count" |
| 7 | Emotional Reasoning | Diamond with wave/heart | "I feel it, so it must be true" |
| 8 | Should Statements | Diamond with gavel/ruler | "I should be better by now" |
| 9 | Labeling | Diamond with tag | "I'm such a failure" |
| 10 | Overgeneralization | Diamond with infinite loop | "This always happens to me" |
All distortion icons use **Amber** as their base color since they're detected in Mirror.
---
## 9. Screen-by-Screen Build Specifications
### Onboarding (Screens 19) → `screens/onboarding/`
**Screen 1: `01-splash.html`**
- No status bar, no nav, no tab bar
- Full device-frame is #050508 void
- Centered: breathing kaleidoscope logo (from `soft-elegance-final.svg` simplified — 6 blades, core glow, slow rotation)
- Below logo: "Kalei" in Space Grotesk 32px, #E2E8F0
- Animation: logo fades in (0.5s), breathes for 1.5s, auto-transitions (add "tap to continue" fallback)
**Screen 2: `02-welcome.html`**
- Status bar visible
- Centered layout (`.screen-content.centered`)
- Hero: 6-blade prismatic kaleidoscope pattern (large, ~200px), breathing animation
- Below: "Same pieces." line 1, "New angle." line 2 — Space Grotesk display-lg
- Subtle breathing aura behind pattern (amethyst tint)
- CTA: "See how it works" — `.btn-primary` full width at bottom
- No tab bar, no nav header
**Screen 3: `03-fragment-intro.html`**
- Single amber fragment ◇ centered, pulsing with glow
- Copy: "Your thoughts are like pieces of glass in a kaleidoscope."
- Tap interaction: fragment pulses larger, then copy continues: "Sometimes you see sharp edges. Sometimes beautiful patterns."
- CTA: "Next" at bottom
**Screen 4: `04-turn-demo.html`**
- Pre-filled thought: "I always mess everything up" in a text card
- Auto-animated Turn sequence plays after 1s delay
- Shows the collapse → multiply → crystallize → settle animation
- 3 reframe blocks appear with sample perspectives
- CTA: "That's the Turn" → next screen
**Screen 5: `05-style-selection.html`**
- Heading: "Choose your coaching style"
- 4 radio options using `.radio-option`:
- Stoic Clarity — "Direct truths, no sugarcoating"
- Compassionate — "Warmth first, gentle nudges"
- Pragmatic — "Practical steps, skip the fluff"
- Growth-Oriented — "Challenge me to stretch"
- Each has a small icon (inline SVG fragment in the matching style)
- CTA: "Continue" — enabled when one is selected
**Screen 6: `06-notifications.html`**
- Centered layout
- Icon: bell with fragment accent
- Heading: "Stay on track"
- Body: "Gentle reminders to check in with yourself"
- Two buttons: "Allow Notifications" (primary), "Not now" (ghost)
**Screen 7: `07-account-creation.html`**
- Apple Sign In button (full width, dark with Apple logo)
- Google Sign In button (full width, outlined)
- Divider with "or"
- Email input + Password input
- "Create Account" primary button
- "Already have an account? Sign in" ghost link
**Screen 8: `08-first-turn.html`**
- Heading: "What's on your mind?"
- Large textarea with placeholder: "Type a thought that's been bothering you..."
- Fragment hint: small dim text "The Turn will show you new angles"
- Submit button: "Turn the kaleidoscope" (amethyst primary)
- Decorative: subtle amethyst breathing aura behind textarea
**Screen 9: `09-welcome-complete.html`**
- Centered layout
- Personalized kaleidoscope pattern (using their coaching style color)
- Heading: "You're ready"
- Subtext: "Your kaleidoscope is set. Let's find some new angles."
- CTA: "Enter Kalei" — transitions to Turn Home
---
### Turn Tab (Screens 1014) → `screens/turn/`
**Screen 10: `10-turn-home.html`**
- Tab bar with Turn active (amethyst)
- No nav header (root tab screen)
- Greeting: "Good morning, [Name]" — heading class
- Subtext: "What's weighing on you?" — body, dim-light
- Large textarea card with rounded corners, deep-glass bg
- Placeholder: "Something happened today..."
- Below textarea: recent Turn history cards (23 sample cards with mini kaleidoscope patterns)
- Section header: "RECENT TURNS" with "See all" action link
- Floating action: "Turn the kaleidoscope" button at bottom (above tab bar)
- Breathing aura behind greeting area
**Screen 11: `11-turn-input-active.html`**
- Same as Turn Home but textarea is focused (amethyst border glow)
- Text typed: "I completely bombed my presentation today and everyone saw"
- Character count in bottom-right of textarea
- Submit button fully visible and active
- Keyboard visible (simple CSS representation or just reduced content area)
**Screen 12: `12-turn-animation.html`**
- The signature Turn animation playing
- Input text visible at top, then collapses
- 3 fragments emerge and drift to positions
- This is the transition state between input and results
- Background: subtle prismatic shimmer
**Screen 13: `13-turn-results.html`**
- Nav header: "Your Turn" with back chevron
- Original thought in a dim card at top: "I completely bombed my presentation..."
- Below: 3 reframe blocks (amethyst, sapphire, emerald) with AI-generated perspectives
- Detected distortions: chips showing "Catastrophizing" and "Overgeneralization" in amber
- Actions row: Save (bookmark icon), Share (share icon), Try Another (refresh icon)
- Kaleidoscope pattern unique to this Turn between the thought and reframes
- No tab bar (sub-screen)
**Screen 14: `14-turn-history.html`**
- Nav header: "Turn History" with back chevron
- List of Turn cards, each showing:
- Mini kaleidoscope thumbnail (left)
- First line of original thought (truncated)
- Date + number of perspectives
- Detected distortion chips
- Filter chips at top: All, This Week, Saved
- No tab bar
---
### Mirror Tab (Screens 1519) → `screens/mirror/`
**Screen 15: `15-mirror-home.html`**
- Tab bar with Mirror active (amber)
- Greeting area with amber accent
- "Start a session" primary card — large, with hexagonal Mirror icon
- Streak indicator: "3 days" with amber flame
- Recent sessions list (23 cards showing date, duration, fragment count)
- Section: "YOUR FRAGMENTS" — grid of recent detected distortion chips with counts
**Screen 16: `16-mirror-session.html`**
- Nav header: "Mirror Session" with close (X) button on right
- Chat bubble interface
- User messages (right-aligned, amethyst-tinted bg)
- AI responses (left-aligned, kalei-navy bg)
- Input accessory bar at bottom with text field + send button
- 34 exchanges shown
- No tab bar (full-screen session)
**Screen 17: `17-mirror-fragment-highlight.html`**
- Same as active session but with a detected fragment
- One user message has amber `.fragment-highlight` underline on a phrase
- Tiny amber fragment ◇ pulses beside the highlighted text
- Amber glow radiates from the highlight
- Hint text: "Fragment detected" in amber label below the message
**Screen 18: `18-mirror-fragment-detail.html`**
- Half-sheet modal (`.modal-overlay` + `.modal-sheet`)
- Behind: the chat session dimmed by scrim
- Sheet content:
- Grab handle
- Distortion name: "Catastrophizing" in amber heading
- Icon from `icons-distortions.svg` (inline)
- Highlighted text quoted
- Explanation: 12 sentences about this distortion
- "Turn this thought" button (amethyst) — links to Turn with pre-filled text
- "Dismiss" ghost button
**Screen 19: `19-mirror-reflection.html`**
- Nav header: "Session Reflection"
- Session summary card:
- Duration: "12 minutes"
- Words written: "847"
- Fragments detected: 3 (with distortion chips)
- Mood check: "How are you feeling now?" with 5 emoji-like options (abstract geometric, not actual emoji)
- Key themes identified (AI-generated tags)
- "Save Session" primary button
- "Start a Turn" secondary button
---
### Lens Tab (Screens 2030) → `screens/lens/`
**Screen 20: `20-lens-dashboard.html`**
- Tab bar with Lens active (emerald)
- Heading: "Your Lens" in emerald
- Active goals list (23 goal cards):
- Progress ring (left) showing completion %
- Goal title + next action step
- Days remaining chip
- "Add New Goal" button (emerald primary)
- Section: "DAILY AFFIRMATION" — card with today's auto-generated affirmation
- Section: "REHEARSALS" — upcoming/recent rehearsal sessions
**Screens 2126: `21-lens-create-step1.html` through `26-lens-create-step6.html`**
- 6-step goal creation wizard
- Step progress dots at top (`.step-progress`)
- Nav header: "New Goal" with step indicator
- **Step 1 — Name:** "What do you want to achieve?" + text input
- **Step 2 — Why:** "Why does this matter to you?" + textarea (emotional driver)
- **Step 3 — Obstacles:** "What might get in the way?" + add multiple obstacle chips
- **Step 4 — If-Then Plans:** For each obstacle, create an if-then implementation intention
- **Step 5 — Milestones:** Break goal into 35 milestones with target dates
- **Step 6 — Visualization:** "Close your eyes and imagine achieving this" — guided prompt + "Save Goal" CTA
- Each step: emerald accent, previous/next buttons
**Screen 27: `27-lens-goal-detail.html`**
- Nav header: goal title
- Large progress ring (emerald)
- Milestone checklist with completion states
- If-Then plans listed
- "Start Rehearsal" button (emerald)
- "Log Progress" button (secondary)
**Screen 28: `28-lens-affirmation.html`**
- Centered, full-screen card feel
- Today's AI-generated affirmation in display-md
- Decorative: emerald breathing aura behind text
- Mini kaleidoscope with emerald tint
- "Reflect on this" button → opens Mirror with affirmation as prompt
**Screens 2930: `29-rehearsal-session.html`, `30-rehearsal-complete.html`**
- **Session:** Guided visualization interface
- Soft emerald background glow
- Step-by-step prompts appearing one at a time with fade-in
- Timer ring showing session progress
- "I can see it" / "Next" progression
- Breathing guide animation (expanding/contracting circle)
- **Complete:** Session summary
- Vividness rating (15 stars or fragments)
- "How real did it feel?" slider
- Session added to Evidence Wall notification
---
### Gallery Tab (Screens 3134) → `screens/gallery/`
**Screen 31: `31-gallery-all.html`**
- Tab bar with Gallery active (sapphire)
- Toggle: "Patterns" / "Keepsakes" at top
- Grid of pattern cards (2 columns):
- Each card: mini kaleidoscope visual, thought preview, date, distortion chips
- Sapphire accent on active/selected
- Sorting: "Recent" / "Most Reframed" chips
**Screen 32: `32-gallery-keepsakes.html`**
- Same layout but showing saved/bookmarked Turns
- Each card: kaleidoscope pattern, saved reframe text, source thought (dim)
- Heart/bookmark icon indicating saved state
**Screen 33: `33-gallery-detail.html`**
- Nav header: "Pattern" with back + share action
- Large kaleidoscope pattern visualization
- Original thought
- All 3 reframe perspectives
- Detected distortions with explanations
- "Turn again" button (get fresh perspectives)
- Metadata: date, coaching style used
**Screen 34: `34-gallery-search.html`**
- Search input at top (sapphire focus border)
- Filter chips: distortion types, date ranges, features
- Results list updating as filters change
---
### You Tab (Screens 3543) → `screens/you/`
**Screen 35: `35-you-profile.html`**
- Tab bar with You active (soft light)
- Avatar circle (initial or placeholder)
- Name, member since date
- Stats row: Turns taken, Mirror sessions, Active goals
- Quick links: Settings, Subscription, Data & Privacy
- Section: "EVIDENCE WALL" — preview mosaic (link to full view)
- Section: "SPECTRUM" — preview card (Phase 2, Prism badge)
**Screen 36: `36-you-stats.html`**
- Nav header: "Your Stats"
- Stat blocks: Total Turns, Mirror Sessions, Goals Completed, Streak Days
- Bar chart: Turns per week (simple CSS bars)
- Top distortions: ranked list with amber bars showing frequency
- Most used feature breakdown
**Screen 37: `37-you-settings.html`**
- Nav header: "Settings"
- Sections with `.card-action` items:
- Profile: Edit name, coaching style
- Notifications: link to #62
- Appearance: (future: themes)
- Data & Privacy: Export (#63), Delete Account (#64)
- About: Version, Terms, Privacy Policy
**Screen 38: `38-you-subscription.html`**
- Nav header: "Subscription"
- Current plan card (Free or Prism)
- If Free: comparison table showing Free vs Prism features
- Prism pricing: "$7.99/month" with prismatic text gradient
- Feature bullets for Prism: Unlimited turns, Mirror sessions, Spectrum access, Priority AI
- CTA: "Upgrade to Prism" (prismatic gradient button)
**Screens 3943: Evidence Wall** (See Section 10 below for detailed specs)
---
### Ritual (Screens 4449) → `screens/ritual/`
**Screen 44: `44-ritual-templates.html`**
- Nav header: "Choose Your Ritual" with back
- 3 ritual template cards:
- **Morning Clarity** (Amethyst): Mirror reflection → Turn reframe → Lens affirmation
- **Evening Wind-Down** (Sapphire): Mirror journal → Turn gratitude → Lens review
- **Quick Reset** (Emerald): Turn single thought → Mirror check-in (2 min)
- Each card shows: name, duration, steps preview, accent color
**Screens 4547: `45-ritual-morning.html`, `46-ritual-evening.html`, `47-ritual-quick.html`**
- Active ritual flow
- Step progress at top showing current step
- Current step content fills the screen:
- Mirror step: simplified journaling interface
- Turn step: quick reframe input
- Lens step: affirmation display or goal check-in
- "Next Step" button at bottom
- Timer running in header
**Screen 48: `48-ritual-complete.html`**
- Celebration screen
- Prismatic kaleidoscope animation (success burst from `loading-animations.svg` reference)
- "Ritual Complete" heading
- Stats: time taken, steps completed, streak count
- Evidence Wall tile preview: "New tile earned!"
- CTA: "Done" returns to Turn Home
**Screen 49: `49-ritual-streak.html`**
- Nav header: "Ritual Streak"
- Calendar view (week by week) with amber-filled completed days
- Current streak count (large display number)
- Longest streak record
- Heat map of ritual completion times
---
### Spectrum (Screens 5057) → `screens/spectrum/`
**Screen 50: `50-spectrum-dashboard.html`**
- Nav header: "Spectrum" with Prism badge
- 5 preview cards linking to each visualization:
- The River (prismatic flowing band)
- Your Glass (radar chart thumbnail)
- Turn Impact (before/after bars)
- Rhythm Detection (bubble chart)
- Growth Trajectory (line chart)
- Time range selector: Week / Month / All Time
- Overall insight card with AI-generated summary
**Screens 5155:** Each is a full-screen visualization detail
- **51: `51-spectrum-river.html`** — Flowing prismatic band showing emotional patterns over time, with fragment data points. Reference `spectrum-visualizations.svg` River section.
- **52: `52-spectrum-glass.html`** — Radar/spider chart showing balance across features. Reference Glass section.
- **53: `53-spectrum-impact.html`** — Before/after bar pairs showing Turn effectiveness. Ruby (before) → Emerald (after).
- **54: `54-spectrum-rhythm.html`** — Time-of-day bubble chart showing when user is most active/reflective.
- **55: `55-spectrum-growth.html`** — Line chart with fragment data points and milestone markers showing progress trajectory.
**Screens 5657: Summaries**
- **56: `56-spectrum-weekly.html`** — AI-generated weekly summary with key metrics, top distortions, recommended actions
- **57: `57-spectrum-monthly.html`** — Deeper monthly analysis with trend arrows, comparison to previous month, growth areas
---
### Modals & System (Screens 5864) → `screens/modals/` and `screens/system-states/`
**Screen 58: `58-upgrade-modal.html`**
- `.modal-overlay.centered` + `.modal-card`
- Prismatic gradient border on card
- "Unlock Kalei Prism" heading
- Feature preview (3 key benefits)
- Price: "$7.99/month"
- "Start Free Trial" primary button
- "Maybe Later" ghost button
**Screen 59: `59-rate-limit.html`**
- Toast or inline card showing: "You've used your free turns for today"
- Upgrade CTA
- Timer showing when limit resets
**Screen 60: `60-crisis-response.html`**
- Full-screen safety response
- Ruby accent throughout
- "We're here for you" heading
- Crisis hotline numbers
- "Talk to someone now" button (ruby primary)
- "I'm okay, continue" secondary option
- Breathing exercise link
**Screen 61: `61-pattern-share.html`**
- Share sheet modal
- Pattern card preview (how it'll look when shared)
- Share targets: Copy Link, Messages, More...
- Generated image: kaleidoscope pattern + thought + app branding
**Screen 62: `62-notification-settings.html`**
- Nav header: "Notifications"
- Toggle rows for each notification type:
- Daily Ritual Reminder
- Mirror Check-in
- Weekly Spectrum Summary
- Streak Alerts
- Time picker for reminder times
**Screen 63: `63-data-export.html`**
- Nav header: "Export Your Data"
- Explanation of what gets exported
- Format options: JSON, PDF summary
- "Export Data" primary button
- Processing state with loading animation
**Screen 64: `64-account-deletion.html`**
- Nav header: "Delete Account"
- Warning card (ruby border)
- Explanation of what gets deleted (irreversible)
- Confirmation text input: "Type DELETE to confirm"
- "Delete My Account" button (ruby, disabled until confirmed)
- "Cancel" ghost button
---
## 10. Evidence Wall — Detailed Build Spec
The Evidence Wall is Kalei's mastery tracking mosaic. Tiles are earned through activities and form a growing visual tapestry.
### Tile Types
| Type | Shape | Earned From | Color |
|------|-------|------------|-------|
| Diamond | ◇ | Completing a Turn | Amethyst |
| Hexagon | ⬡ | Mirror session | Amber |
| Circle | ● | Lens goal milestone | Emerald |
| Rectangle | ▭ | Ritual completion | Sapphire |
| Triangle | △ | Streak achievement | Rose |
### States
- **Screen 39 (Empty):** Ghost tile outlines with dashed borders, CTA "Complete your first Turn to earn a tile"
- **Screen 40 (Early, 35 tiles):** Tiles placed with gaps, faint connection lines between them
- **Screen 41 (Mid, 1015 tiles):** Denser arrangement, connection web forming, pattern emerging
- **Screen 42 (Full, 20+ tiles):** Rich mosaic with glowing connections, celebration state
- **Screen 43 (Tile Detail):** Tap a tile → half-sheet showing: tile type, date earned, source activity, related thought/goal
### Layout Algorithm (CSS Grid)
```css
.evidence-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 8px;
padding: 16px;
}
.evidence-tile {
aspect-ratio: 1;
border-radius: 12px;
display: flex;
align-items: center;
justify-content: center;
border: 1px solid;
position: relative;
}
/* Some tiles span 2 columns or rows for visual interest */
.evidence-tile.wide { grid-column: span 2; aspect-ratio: 2/1; }
.evidence-tile.tall { grid-row: span 2; aspect-ratio: 1/2; }
```
---
## 11. Monetization & Rate Limiting UI
### Free Tier (Kalei)
- 3 Turns/day, 1 Mirror session/day, 3 Lens goals max
- No Spectrum access
- Basic Ritual templates only
### Prism Tier ($7.99/month)
- Unlimited Turns & Mirror sessions
- Unlimited goals
- Full Spectrum access
- Advanced Ritual customization
- Priority AI processing
### UI Implications
- Show `Prism` badge (prismatic gradient chip) next to premium features
- When rate-limited: inline card with count remaining, upgrade CTA
- Subscription screen: comparison table with checkmarks
---
## 12. Build Order — Priority Sequence
Build screens in this order, which follows the user journey and ensures shared components are established first:
### Phase 1: Foundation (build first)
1. `01-splash.html` — establishes breathing logo animation
2. `02-welcome.html` — establishes onboarding layout + hero pattern
3. `10-turn-home.html` — establishes tab bar + greeting + card layout
4. `13-turn-results.html` — establishes reframe blocks + distortion chips
### Phase 2: Core Loop
5. `03-fragment-intro.html`
6. `04-turn-demo.html`
7. `05-style-selection.html`
8. `06-notifications.html`
9. `07-account-creation.html`
10. `08-first-turn.html`
11. `09-welcome-complete.html`
12. `11-turn-input-active.html`
13. `12-turn-animation.html`
14. `14-turn-history.html`
### Phase 3: Mirror Feature
15. `15-mirror-home.html`
16. `16-mirror-session.html`
17. `17-mirror-fragment-highlight.html`
18. `18-mirror-fragment-detail.html`
19. `19-mirror-reflection.html`
### Phase 4: Lens + Rehearsal
20. `20-lens-dashboard.html`
21. `21-lens-create-step1.html` through `26-lens-create-step6.html`
22. `27-lens-goal-detail.html`
23. `28-lens-affirmation.html`
24. `29-rehearsal-session.html`
25. `30-rehearsal-complete.html`
### Phase 5: Gallery + You
26. `31-gallery-all.html`
27. `32-gallery-keepsakes.html`
28. `33-gallery-detail.html`
29. `34-gallery-search.html`
30. `35-you-profile.html`
31. `36-you-stats.html`
32. `37-you-settings.html`
33. `38-you-subscription.html`
### Phase 6: Evidence Wall + Ritual
34. `39-evidence-wall-empty.html`
35. `40-evidence-wall-early.html`
36. `41-evidence-wall-mid.html`
37. `42-evidence-wall-full.html`
38. `43-evidence-wall-detail.html`
39. `44-ritual-templates.html`
40. `45-ritual-morning.html`
41. `46-ritual-evening.html`
42. `47-ritual-quick.html`
43. `48-ritual-complete.html`
44. `49-ritual-streak.html`
### Phase 7: Spectrum (Phase 2)
45. `50-spectrum-dashboard.html`
46. `51-spectrum-river.html`
47. `52-spectrum-glass.html`
48. `53-spectrum-impact.html`
49. `54-spectrum-rhythm.html`
50. `55-spectrum-growth.html`
51. `56-spectrum-weekly.html`
52. `57-spectrum-monthly.html`
### Phase 8: System & Modals
53. `58-upgrade-modal.html`
54. `59-rate-limit.html`
55. `60-crisis-response.html`
56. `61-pattern-share.html`
57. `62-notification-settings.html`
58. `63-data-export.html`
59. `64-account-deletion.html`
---
## 13. Quality Checklist
Before considering any screen complete, verify:
- [ ] Device frame renders at exactly 390 × 844px with 44px rounded corners
- [ ] Status bar shows 9:41, signal bars, wifi icon, green battery
- [ ] Tab bar (if present) has correct active tab with feature color
- [ ] All text uses design system typography classes (no raw font sizes)
- [ ] All colors use CSS custom properties (`var(--amethyst)`, not `#8B5CF6`)
- [ ] Fragment diamonds use gradient fills with specular highlight
- [ ] Glow effects use `box-shadow` with color at 0.3 opacity (not drop-shadow)
- [ ] Breathing animations use 6s `ease-in-out infinite` cycle
- [ ] No native emoji anywhere — use geometric SVG abstractions
- [ ] Cards use `--kalei-navy` background with `--twilight` borders
- [ ] Buttons follow the component system (`.btn-primary`, `.btn-secondary`, `.btn-ghost`)
- [ ] Interactive elements have hover/active states defined
- [ ] Content doesn't overflow the device frame
- [ ] Scrollable areas have hidden scrollbars (`.screen-content` handles this)
- [ ] Links between screens use relative paths (`../turn/10-turn-home.html`)
---
## 14. Key Documents to Read
Read these documents in this order for full context:
1. **This file** — you're here
2. **`assets/ASSET-INDEX.md`** — what SVG elements exist
3. **`assets/design-system.css`** — all tokens, components, utilities
4. **`docs/product/kalei-complete-user-journey.md`** — every screen described in detail
5. **`docs/product/kalei-complete-design.md`** — feature specs and interaction patterns
6. **`docs/brand/kalei-brand-guidelines.md`** — voice, tone, visual principles
7. **`docs/technical/kalei-user-journey-technical-map.md`** — API/DB context (for realistic mock data)
8. **`logo-mockups/finalists/soft-elegance-final.svg`** — the visual DNA source
---
*Built for Kalei — Same pieces. New angle.*