Files
labre-web/DESIGN.md
T
2026-09-15 13:04:08 -07:00

381 lines
17 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Ease Health — Style Reference
> Botanical greenhouse on cream paper
**Theme:** light
Ease Health uses a clinical-botanical language: a warm cream canvas layered with soft sage, keylime, and slate-blue panels that feel like a greenhouse rendered on paper. Typography carries the entire personality — weight 300 serif headlines (Faire Octave) paired against a humanist sans (Suisse Intl) create a hushed, editorial authority unusual for healthtech. A single deep forest green (#0f3e17) anchors every action and heading, reading like ink on watercolor. Surfaces are flat and shadowless; depth comes from layered tinted panels and generous padding, not elevation. Components are rounded (~14px) and pill-shaped for tags, keeping the whole system soft and approachable without losing clinical seriousness.
## Tokens — Colors
| Name | Value | Token | Role |
|------|-------|-------|------|
| Forest Ink | `#0f3e17` | `--color-forest-ink` | Primary action buttons, headings, links, icon strokes — deep botanical green reads as ink, the only saturated dark in the system |
| Sage Mist | `#b1dbb8` | `--color-sage-mist` | Mid-tone card backgrounds and decorative washes, panel-level surfaces |
| Keylime Wash | `#e1f4df` | `--color-keylime-wash` | Hero panel background, light card surfaces — the dominant tinted canvas tone |
| Mint Veil | `#cfe7d3` | `--color-mint-veil` | Accent card surfaces, soft section dividers between sage and keylime layers |
| Slate Hush | `#b6ced5` | `--color-slate-hush` | Cool counter-balance panel for product preview and feature blocks — breaks the green monotony with desaturated blue-gray |
| Cream Paper | `#fffefc` | `--color-cream-paper` | Page background, badge backgrounds, button text — warm off-white that softens every green |
| Charcoal | `#222222` | `--color-charcoal` | Navigation text and minor UI strokes — restrained secondary ink |
| Border Mist | `#efeeeb` | `--color-border-mist` | Hairline dividers and subtle borders throughout the layout |
| Forest Shadow | `#0c2f10` | `--color-forest-shadow` | Supporting palette color for small decorative accents when the core palette needs contrast. Do not promote it to the primary CTA color |
## Tokens — Typography
### Faire Octave — Display serif for all section headings and hero copy · `--font-faire-octave`
- **Substitute:** Cormorant Garamond, Playfair Display
- **Weights:** 300
- **Sizes:** 40px, 56px, 74px
- **Line height:** 1.05–1.35
- **Letter spacing:** -0.01em at 40px, -0.03em at 56–74px
- **Role:** Display serif for all section headings and hero copy
### Suisse Intl — Body, navigation, UI labels, buttons, captions — humanist sans at whisper weight for feature lists and normal weight for copy · `--font-suisse-intl`
- **Substitute:** Inter, Söhne, Helvetica Neue
- **Weights:** 300, 400, 600
- **Sizes:** 10px, 11px, 12px, 14px, 18px, 23px, 28px, 56px
- **Line height:** 1.00–1.61
- **Letter spacing:** 0.08em uppercase at 11px/600 (eyebrow labels); natural tracking otherwise
- **Role:** Body, navigation, UI labels, buttons, captions — humanist sans at whisper weight for feature lists and normal weight for copy
### Type Scale
| Role | Size | Line Height | Letter Spacing | Token |
|------|------|-------------|----------------|-------|
| caption | 10px | 1.61 | — | `--text-caption` |
| body | 14px | 1.5 | — | `--text-body` |
| subheading | 18px | 1.3 | — | `--text-subheading` |
| heading-sm | 23px | 1.5 | — | `--text-heading-sm` |
| heading | 40px | 1.35 | -0.4px | `--text-heading` |
| heading-lg | 56px | 1.2 | -1.68px | `--text-heading-lg` |
| display | 74px | 1.05 | -2.22px | `--text-display` |
## Tokens — Spacing & Shapes
**Density:** comfortable
### Spacing Scale
| Name | Value | Token |
|------|-------|-------|
| 4 | 4px | `--spacing-4` |
| 7 | 7px | `--spacing-7` |
| 9 | 9px | `--spacing-9` |
| 11 | 11px | `--spacing-11` |
| 14 | 14px | `--spacing-14` |
| 18 | 18px | `--spacing-18` |
| 21 | 21px | `--spacing-21` |
| 28 | 28px | `--spacing-28` |
| 35 | 35px | `--spacing-35` |
| 42 | 42px | `--spacing-42` |
| 49 | 49px | `--spacing-49` |
| 56 | 56px | `--spacing-56` |
| 70 | 70px | `--spacing-70` |
| 76 | 76px | `--spacing-76` |
| 99 | 99px | `--spacing-99` |
| 156 | 156px | `--spacing-156` |
### Border Radius
| Element | Value |
|---------|-------|
| nav | 7px |
| cards | 14px |
| badges | 999px |
| buttons | 14px |
| sections | 9999px |
### Layout
- **Page max-width:** 1200px
- **Section gap:** 64-96px
- **Card padding:** 28-42px
- **Element gap:** 14-21px
## Components
### Primary Forest Button
**Role:** Filled CTA for demos, explores, and form submits
Background #0f3e17, text #fffefc, 14px border-radius, padding 14px 21px, Suisse Intl 14px/400. Arrow icon in white at trailing edge. Hover transitions to #0c2f10.
### Large Forest Button
**Role:** Hero-scale CTA with generous breathing room
Same Forest Ink fill and white text, but padding scales to 42px all sides for hero placement. Rounded 14px corners. Used sparingly for maximum-weight calls to action.
### Pill Badge / Tag
**Role:** Category labels, CRM/EHR/RCM module tags, status indicators
Background #fffefc, text Forest Ink #0f3e17, 999px border-radius (full pill), padding 9px 14px, Suisse Intl 14px/400. Inverted cream-on-green relationship makes tags feel like paper labels.
### Sage Feature Card
**Role:** Heavier-tinted content panel for feature highlights
Background Sage Mist #b1dbb8, 14px border-radius, 42px padding all sides, no shadow. Hosts illustration or product preview content. Flat surface — depth comes from color not elevation.
### Keylime Soft Card
**Role:** Light-tinted content panel for secondary features
Background Keylime Wash #e1f4df, 14px border-radius, 28px padding, no shadow. Tighter padding than sage variant for compact content blocks.
### Slate Product Panel
**Role:** Cool-toned container for product UI screenshots and demos
Background Slate Hush #b6ced5, 14px border-radius, 42px padding, no shadow. Provides cool visual counterpoint to warm green panels — the only non-green tinted surface.
### Product Preview Card (Inner)
**Role:** White floating card within Slate Product Panel
Background Cream Paper #fffefc, 14px border-radius, 28px padding, no border or shadow. Represents a product screen mockup (CRM, EHR, RCM). Sits on the Slate panel like a printed screenshot.
### Navigation Bar
**Role:** Top-level site navigation
Transparent over cream canvas, text Charcoal #222222, Suisse Intl 14px/400, 7px radius on interactive items. 'Book a Demo' CTA pill on the right uses Forest Ink fill.
### Eyebrow Label
**Role:** Section category tag above headings
Suisse Intl 11px/600, letter-spacing 0.08em, uppercase, Forest Ink color. Tiny typographic marker that labels each section's theme (e.g. 'QUICK ANSWER').
### FAQ Row
**Role:** Two-column question/answer layout
Left column: Faire Octave 40px/300 in Forest Ink for question. Right column: Suisse Intl 14px/400 in Charcoal for answer. 1px Border Mist divider between rows.
### Investor Logo Strip
**Role:** Social proof row of VC logos
Single horizontal row, monochrome treatment in Charcoal #222222 on cream canvas, generous vertical padding (42px+). No decorative borders — relies on whitespace for rhythm.
## Do's and Don'ts
### Do
- Use Forest Ink (#0f3e17) for every CTA, heading, and primary link — it is the only saturated dark and must remain singular
- Set all display headings in Faire Octave weight 300 with tight tracking (-0.03em at 56–74px) — never bold the serif
- Pair serif questions with sans-serif answers in FAQ and feature blocks to create typographic contrast
- Layer surfaces using cream → keylime → mint → sage → slate in order to create depth without shadows
- Use 14px border-radius on all cards and buttons, 999px on all badges and tags — consistency is non-negotiable
- Apply 0.08em letter-spacing with uppercase and 600 weight for eyebrow labels only — nowhere else
- Keep the Slate Hush panel as the exclusive home for product screenshots — it provides the cool counterbalance to warm green panels
### Don't
- Never add box-shadow to cards — the system communicates elevation through tinted layers only
- Don't use Forest Ink as a background tint — it is too dark for surface washes; reserve for text and action fills only
- Avoid mixing multiple heading weights — everything is weight 300 in Faire Octave; bold would break the hushed editorial tone
- Don't place colored borders on cards — depth comes from fill contrast, not strokes
- Never use more than one serif at a time — Faire Octave owns display, Suisse Intl owns everything else
- Don't introduce new accent hues — the palette is strictly botanical greens + slate; any other color breaks the greenhouse metaphor
- Avoid tight padding under 21px on cards — generous 28–42px padding is essential to the soft, breathing-room aesthetic
- Don't use the sage or keylime tones for text — they are surface colors only and fail contrast for copy
## Surfaces
| Level | Name | Value | Purpose |
|-------|------|-------|---------|
| 0 | Cream Paper | `#fffefc` | Base page background — warm off-white dominates the canvas |
| 1 | Keylime Wash | `#e1f4df` | Primary tinted panel — hero left column, light feature blocks |
| 2 | Mint Veil | `#cfe7d3` | Mid-tone section surface between keylime and sage |
| 3 | Sage Mist | `#b1dbb8` | Heavier tinted panels — hero accents, feature highlights |
| 4 | Slate Hush | `#b6ced5` | Cool counter-panel for product showcases and visual contrast |
## Elevation
The system deliberately avoids shadows entirely — boxShadow=none on all card variants. Depth and hierarchy are communicated through layered tinted surfaces (cream → keylime → sage → slate) rather than elevation. This keeps the interface feeling like watercolor paper rather than glassmorphic UI, matching the botanical-greenhouse metaphor.
## Imagery
Imagery is product-first and UI-native: floating product screenshots (CRM cards, EHR patient views, RCM revenue graphs) rendered as crisp white cards on Slate Hush panels. No lifestyle photography, no stock imagery. Iconography is minimal stroke-based, rendered in Forest Ink. Illustrations, where present, use the same sage/keylime palette to stay on-system. The visual density is text-dominant with product mockups serving as proof, not decoration.
## Layout
Max-width 1200px centered container with 64–96px vertical section gaps. Hero is a two-column split: left panel tinted Keylime Wash with serif headline + body + CTA; right panel tinted Slate Hush housing three product preview cards (CRM, EHR, RCM) in a row. Below the hero, sections alternate between cream canvas and tinted panels in a botanical rhythm. FAQ uses a two-column text grid (serif question left, sans answer right). The investor logo strip is a single full-width row on cream. Navigation is minimal — left-aligned logo, centered text links, right-aligned CTA pill — no sticky behavior or mega-menu. The overall page rhythm is generous and editorial rather than dense.
## Agent Prompt Guide
**Quick Color Reference**
- Text/Heading: #0f3e17 (Forest Ink)
- Page background: #fffefc (Cream Paper)
- Hero/light panel: #e1f4df (Keylime Wash)
- Feature panel: #b1dbb8 (Sage Mist)
- Product showcase panel: #b6ced5 (Slate Hush)
- Border: #efeeeb
- primary action: #0f3e17 (filled action)
**Example Component Prompts**
1. Create a Primary Action Button: #0f3e17 background, #fffefc text, 9999px radius, compact pill padding. Use this filled treatment for the main CTA.
2. **Feature card**: Sage Mist #b1dbb8 background, 14px border-radius, 42px padding all sides, no shadow. Eyebrow label in Suisse Intl 11px/600 uppercase with 0.08em tracking, Forest Ink color. Heading in Faire Octave 40px/300, Forest Ink. Body in Suisse Intl 14px/400, Charcoal #222222.
3. **Pill badge**: Background Cream Paper #fffefc, text Forest Ink #0f3e17, 999px border-radius, padding 9px 14px, Suisse Intl 14px/400. Place above section headings as a category tag.
4. **FAQ row**: Two-column grid. Left: Faire Octave 40px/300 question in Forest Ink. Right: Suisse Intl 14px/400 answer in Charcoal #222222. Separator: 1px solid Border Mist #efeeeb below each row.
## Type Pairing Philosophy
The serif/sans split is the system's defining typographic move. Faire Octave (or Cormorant Garamond as substitute) handles ALL headings at weight 300 — never bold. Suisse Intl (or Inter) handles ALL UI and body text. The whisper-weight serif creates editorial calm unusual in healthtech, where most competitors use bold geometric sans headlines. Tracking tightens as size grows: -0.01em at 40px, -0.03em at 56–74px. Body text uses natural tracking. The only uppercase treatment is 11px/600 eyebrows at 0.08em — these are navigational markers, not decorative caps.
## Similar Brands
- **Headspace** — Same botanical palette approach with sage greens and soft tinted panels, plus serif-leaning editorial calm and generous breathing room
- **Calm** — Nature-inspired muted greens against cream, generous whitespace, flat surfaces without shadows, and a serene clinical-adjacent tone
- **Mercury** — Deep single-color ink (#0f3e17 forest vs Mercury's near-black) against a warm off-white canvas with editorial serif display type at weight 300
- **Spring Health** — Behavioral health branding with green-dominant palette, soft panel layering, and humanist sans body type paired with serif accents
- **Grow Therapy** — Healthcare SaaS using sage and mint greens against cream, with rounded components and a botanical rather than clinical visual mood
## Quick Start
### CSS Custom Properties
```css
:root {
/* Colors */
--color-forest-ink: #0f3e17;
--color-sage-mist: #b1dbb8;
--color-keylime-wash: #e1f4df;
--color-mint-veil: #cfe7d3;
--color-slate-hush: #b6ced5;
--color-cream-paper: #fffefc;
--color-charcoal: #222222;
--color-border-mist: #efeeeb;
--color-forest-shadow: #0c2f10;
/* Typography — Font Families */
--font-faire-octave: 'Faire Octave', ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
--font-suisse-intl: 'Suisse Intl', ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
/* Typography — Scale */
--text-caption: 10px;
--leading-caption: 1.61;
--text-body: 14px;
--leading-body: 1.5;
--text-subheading: 18px;
--leading-subheading: 1.3;
--text-heading-sm: 23px;
--leading-heading-sm: 1.5;
--text-heading: 40px;
--leading-heading: 1.35;
--tracking-heading: -0.4px;
--text-heading-lg: 56px;
--leading-heading-lg: 1.2;
--tracking-heading-lg: -1.68px;
--text-display: 74px;
--leading-display: 1.05;
--tracking-display: -2.22px;
/* Typography — Weights */
--font-weight-light: 300;
--font-weight-regular: 400;
--font-weight-semibold: 600;
/* Spacing */
--spacing-4: 4px;
--spacing-7: 7px;
--spacing-9: 9px;
--spacing-11: 11px;
--spacing-14: 14px;
--spacing-18: 18px;
--spacing-21: 21px;
--spacing-28: 28px;
--spacing-35: 35px;
--spacing-42: 42px;
--spacing-49: 49px;
--spacing-56: 56px;
--spacing-70: 70px;
--spacing-76: 76px;
--spacing-99: 99px;
--spacing-156: 156px;
/* Layout */
--page-max-width: 1200px;
--section-gap: 64-96px;
--card-padding: 28-42px;
--element-gap: 14-21px;
/* Border Radius */
--radius-lg: 7.04px;
--radius-xl: 14.08px;
--radius-full: 999px;
--radius-full-2: 9999px;
/* Named Radii */
--radius-nav: 7px;
--radius-cards: 14px;
--radius-badges: 999px;
--radius-buttons: 14px;
--radius-sections: 9999px;
/* Surfaces */
--surface-cream-paper: #fffefc;
--surface-keylime-wash: #e1f4df;
--surface-mint-veil: #cfe7d3;
--surface-sage-mist: #b1dbb8;
--surface-slate-hush: #b6ced5;
}
```
### Tailwind v4
```css
@theme {
/* Colors */
--color-forest-ink: #0f3e17;
--color-sage-mist: #b1dbb8;
--color-keylime-wash: #e1f4df;
--color-mint-veil: #cfe7d3;
--color-slate-hush: #b6ced5;
--color-cream-paper: #fffefc;
--color-charcoal: #222222;
--color-border-mist: #efeeeb;
--color-forest-shadow: #0c2f10;
/* Typography */
--font-faire-octave: 'Faire Octave', ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
--font-suisse-intl: 'Suisse Intl', ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
/* Typography — Scale */
--text-caption: 10px;
--leading-caption: 1.61;
--text-body: 14px;
--leading-body: 1.5;
--text-subheading: 18px;
--leading-subheading: 1.3;
--text-heading-sm: 23px;
--leading-heading-sm: 1.5;
--text-heading: 40px;
--leading-heading: 1.35;
--tracking-heading: -0.4px;
--text-heading-lg: 56px;
--leading-heading-lg: 1.2;
--tracking-heading-lg: -1.68px;
--text-display: 74px;
--leading-display: 1.05;
--tracking-display: -2.22px;
/* Spacing */
--spacing-4: 4px;
--spacing-7: 7px;
--spacing-9: 9px;
--spacing-11: 11px;
--spacing-14: 14px;
--spacing-18: 18px;
--spacing-21: 21px;
--spacing-28: 28px;
--spacing-35: 35px;
--spacing-42: 42px;
--spacing-49: 49px;
--spacing-56: 56px;
--spacing-70: 70px;
--spacing-76: 76px;
--spacing-99: 99px;
--spacing-156: 156px;
/* Border Radius */
--radius-lg: 7.04px;
--radius-xl: 14.08px;
--radius-full: 999px;
--radius-full-2: 9999px;
}
```