dream-customs / DESIGN.md
ADJCJH's picture
Deploy Dream Customs dream QA refactor (#16)
19c5492
|
Raw
History Blame Contribute Delete
8.63 kB
---
name: Dream QA
description: A guided dream Q&A interface for turning dream fragments into one grounded today tip.
colors:
morning-mist: "oklch(0.965 0.014 210)"
warm-paper: "oklch(0.985 0.010 82)"
soft-ink: "oklch(0.205 0.020 70)"
muted-ink: "oklch(0.500 0.030 82)"
surface-card: "oklch(0.995 0.006 82)"
surface-sage: "oklch(0.930 0.035 145)"
primary-sage: "oklch(0.555 0.105 145)"
primary-sage-deep: "oklch(0.390 0.095 145)"
accent-amber: "oklch(0.820 0.120 78)"
accent-coral: "oklch(0.710 0.135 32)"
border-soft: "oklch(0.825 0.020 85)"
warning: "oklch(0.760 0.150 75)"
typography:
display:
fontFamily: "Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, sans-serif"
fontSize: "2rem"
fontWeight: 760
lineHeight: 1.08
letterSpacing: "0"
headline:
fontFamily: "Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, sans-serif"
fontSize: "1.375rem"
fontWeight: 720
lineHeight: 1.2
title:
fontFamily: "Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, sans-serif"
fontSize: "1rem"
fontWeight: 680
lineHeight: 1.3
body:
fontFamily: "Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, sans-serif"
fontSize: "1rem"
fontWeight: 450
lineHeight: 1.55
label:
fontFamily: "Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, sans-serif"
fontSize: "0.8125rem"
fontWeight: 650
lineHeight: 1.25
rounded:
sm: "6px"
md: "8px"
lg: "12px"
pill: "999px"
spacing:
xs: "6px"
sm: "10px"
md: "16px"
lg: "24px"
xl: "32px"
components:
button-primary:
backgroundColor: "{colors.primary-sage-deep}"
textColor: "{colors.warm-paper}"
rounded: "{rounded.md}"
padding: "12px 16px"
button-secondary:
backgroundColor: "{colors.surface-card}"
textColor: "{colors.primary-sage-deep}"
rounded: "{rounded.md}"
padding: "12px 16px"
input-composer:
backgroundColor: "{colors.surface-card}"
textColor: "{colors.soft-ink}"
rounded: "{rounded.lg}"
padding: "14px 16px"
---
# Design System: Dream QA
## 1. Overview
**Creative North Star: "The Morning Question Desk"**
Dream QA should feel like a calm morning workspace for unpacking a dream while it is still fresh. The surface is light, readable, and ordinary-user friendly, with enough dream atmosphere to feel memorable. The interface is a product experience first: the user needs to record, answer, skip, add detail, and receive one today tip without decoding a metaphor-heavy ritual.
The old customs/pact visual language is deprecated for new work. A small `Dream Customs` label may remain for repo/Space continuity, but the primary visible experience should be `梦境问答台 / Dream QA`.
**Key Characteristics:**
- Stepper with four phases: Record, Ask, Interpret, Tip.
- Conversation timeline for dream fragments, follow-up questions, answers, and interpretation draft.
- Unified multimodal composer for text, image, voice, mood, and primary action.
- Right-side desktop panel for interpretation draft and Today Tip preview.
- Mobile final screen that prioritizes the Today Tip before optional explanation.
## 2. Colors
The palette is soft morning product UI: warm white surfaces, charcoal text, sage actions, amber note highlights, and coral used sparingly for warmth or safety.
### Primary
- **Sage Guide** (`oklch(0.555 0.105 145)`): stepper progress, selected chips, focus accents.
- **Deep Sage Guide** (`oklch(0.390 0.095 145)`): primary buttons and active controls.
### Secondary
- **Amber Note** (`oklch(0.820 0.120 78)`): follow-up question highlight, Today Tip accent, gentle attention.
- **Coral Care** (`oklch(0.710 0.135 32)`): caring note, safety edge, and one small emotional highlight per result.
### Neutral
- **Morning Mist** (`oklch(0.965 0.014 210)`): app background.
- **Warm Paper** (`oklch(0.985 0.010 82)`): main reading surface.
- **Soft Ink** (`oklch(0.205 0.020 70)`): primary text.
- **Muted Ink** (`oklch(0.500 0.030 82)`): secondary labels with readable contrast.
- **Soft Border** (`oklch(0.825 0.020 85)`): panel and input borders.
### Named Rules
**The One Tip Rule.** Visual emphasis should guide the eye to one primary Today Tip. Do not create multiple equally loud recommendation blocks.
**The No Oracle Rule.** Avoid tarot, prophecy, mystic symbols, parchment certificates, and theatrical stamps.
## 3. Typography
**Display Font:** Inter with system fallbacks.
**Body Font:** Inter with system fallbacks.
**Label/Mono Font:** Use system mono only for debug JSON, model telemetry, or structured IDs.
### Hierarchy
- **Display** (760, 2rem, 1.08): app title and final Today Tip headline.
- **Headline** (720, 1.375rem, 1.2): step titles and result section names.
- **Title** (680, 1rem, 1.3): timeline item headers, buttons, and compact panel labels.
- **Body** (450, 1rem, 1.55): dream text, questions, interpretations, max 70ch for prose.
- **Label** (650, 0.8125rem, 1.25): chips, status text, and small metadata.
### Named Rules
**The Morning Readability Rule.** The user may be half-awake. Body text, buttons, placeholders, and chips must stay readable on mobile.
## 4. Elevation
Depth is subtle and functional. Panels should feel placed on a calm desk, not floating in a SaaS layout.
### Shadow Vocabulary
- **composer-focus** (`0 0 0 1px rgba(65, 115, 78, 0.35), 0 12px 28px rgba(45, 56, 42, 0.14)`): focused composer.
- **tip-lift** (`0 10px 24px rgba(45, 56, 42, 0.16)`): final Today Tip card only.
- **question-glow** (`0 0 18px rgba(230, 178, 75, 0.22)`): active follow-up question.
### Named Rules
**The State First Rule.** Shadows communicate focus, hover, or completion. They are not default decoration.
## 5. Components
### Buttons
- **Shape:** 8px radius.
- **Primary:** Deep Sage Guide fill, Warm Paper text, 12px 16px padding.
- **Secondary:** Warm Paper fill, Deep Sage text, full border.
- **Care / Safety:** Coral Care only for safety/support actions or caring note markers.
- **Hover / Focus:** tonal lift plus visible focus ring.
### Chips
- **Style:** small rounded pills with icon, label, and state dot.
- **Use:** mood, image clue status, voice transcript status, answer/skip choices, and alternate angle request.
- **Text:** short labels only. Long explanatory text belongs in timeline or result body.
### Cards / Containers
- **Corner Style:** 8px to 12px. No oversized rounded blobs.
- **Background:** Warm Paper or Surface Card.
- **Shadow Strategy:** flat by default, lifted only when active or final.
- **Border:** full soft border.
- **Internal Padding:** 16px mobile, 24px desktop.
### Inputs / Fields
- **Style:** unified composer with multiline dream input, attachment controls, mood, and primary action.
- **Focus:** sage ring, slightly raised surface, no layout shift.
- **Error / Disabled:** inline message below composer, disabled actions stay readable and explain why.
### Navigation
- **Style:** visible stepper with current phase: Record, Ask, Interpret, Tip.
- **Mobile:** stepper collapses to compact segmented steps above the conversation.
- **Desktop:** left rail or top rail is acceptable, but it must map to real states.
### Signature Component: Today Tip Panel
The Today Tip Panel is the final surface. It shows:
- Dream summary.
- Main question.
- Grounded interpretation.
- One primary Today Tip.
- Optional tiny action.
- Optional caring note.
- Safety note only when needed.
The tip should be first-class and easy to screenshot, but it must not look like a diagnosis card or mystical certificate.
## 6. Do's and Don'ts
### Do:
- **Do** make the first action obvious on mobile and desktop.
- **Do** show the gradual Q&A flow so users understand why the final tip is grounded.
- **Do** keep every phase actionable with one clear next step.
- **Do** cite concrete dream anchors in the final result.
- **Do** preserve a deterministic demo backend while adding a model-backed route.
- **Do** verify text fits inside controls at 390px mobile width.
### Don't:
- **Don't** ship a plain Gradio two-column form as the primary experience.
- **Don't** use tarot, parchment, prophecy, medical intake, or generic healing-app aesthetics.
- **Don't** expose technical model routes as first-level controls unless the user opens model settings.
- **Don't** render navigation-looking text that cannot be clicked.
- **Don't** create several competing tips in the final result.
- **Don't** let the final advice become generic wellness copy unrelated to the dream.