1192 lines
47 KiB
Markdown
1192 lines
47 KiB
Markdown
|
|
# 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 0–4 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 1–9
|
|||
|
|
│ ├── turn/ ← Screens 10–14
|
|||
|
|
│ ├── mirror/ ← Screens 15–19
|
|||
|
|
│ ├── lens/ ← Screens 20–30
|
|||
|
|
│ ├── gallery/ ← Screens 31–34
|
|||
|
|
│ ├── you/ ← Screens 35–43
|
|||
|
|
│ ├── ritual/ ← Screens 44–49
|
|||
|
|
│ ├── spectrum/ ← Screens 50–57
|
|||
|
|
│ ├── modals/ ← Screens 58–61
|
|||
|
|
│ └── system-states/ ← Screens 62–64 + 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 (#50–57) |
|
|||
|
|
| `icons-actions.svg` | Every screen — navigation, actions, status indicators |
|
|||
|
|
| `fragment-icons.svg` | Turn Results (#13), Mirror Highlight (#17), Evidence Wall (#39–43) |
|
|||
|
|
| `decorative-shards.svg` | Onboarding (#2–9), 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 (#39–43) |
|
|||
|
|
| `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 (#50–57) |
|
|||
|
|
|
|||
|
|
### 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 1–9) → `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 10–14) → `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 (2–3 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 15–19) → `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 (2–3 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
|
|||
|
|
- 3–4 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: 1–2 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 20–30) → `screens/lens/`
|
|||
|
|
|
|||
|
|
**Screen 20: `20-lens-dashboard.html`**
|
|||
|
|
- Tab bar with Lens active (emerald)
|
|||
|
|
- Heading: "Your Lens" in emerald
|
|||
|
|
- Active goals list (2–3 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 21–26: `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 3–5 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 29–30: `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 (1–5 stars or fragments)
|
|||
|
|
- "How real did it feel?" slider
|
|||
|
|
- Session added to Evidence Wall notification
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### Gallery Tab (Screens 31–34) → `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 35–43) → `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 39–43: Evidence Wall** (See Section 10 below for detailed specs)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### Ritual (Screens 44–49) → `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 45–47: `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 50–57) → `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 51–55:** 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 56–57: 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 58–64) → `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, 3–5 tiles):** Tiles placed with gaps, faint connection lines between them
|
|||
|
|
- **Screen 41 (Mid, 10–15 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.*
|