Skip to content

Avelia — Visual Identity & Design System Reference

Updated: 2026-04 Source of truth: Website implementation (avelia-health.com/src/styles/global.css) and app design spec (docs/avelia-design-spec.md)


1. Design Philosophy

"Botanical Journal" — warm, organic, intimate. Avelia should feel like a beautiful keepsake journal, not a clinical health tracker or a generic SaaS product.

Guiding Principles

  • Warm over cold — cream backgrounds, rose accents, warm charcoal shadows. Never cold grays or stark whites.
  • Editorial typography — serif display font (Fraunces) for headings creates an intimate, magazine-like quality. Geometric sans-serif (Outfit) for body text and UI.
  • Generous space — content breathes. Cards have comfortable padding. Sections have clear visual separation.
  • Understated motion — gentle fade-ins, subtle hover lifts (translateY -1px to -4px). Never flashy or distracting.
  • Privacy is visible — shared/private states are always obvious. The user always knows who can see what.
  • Made with love in Europe — the footer carries this statement with a filled heart icon. European origin is part of the brand's trust signal.

2. Color Palette

All colors are defined as CSS custom properties. The palette is warm-toned throughout — shadow bases use charcoal rgba(42,36,56,x), never cold black.

2.1 Core Tokens (Light Mode)

TokenHexRole
--red#e6194cPrimary accent — buttons, active states, brand, logo, links
--red-soft#FDEAEFLight red background — focus rings, selection states
--red-dark#c0153fHover/pressed state for primary buttons
--ink#2A2438Primary text, headings, dark UI surfaces
--cream#F7F3EEPage background
--paper#FFFCF8Card/surface background — slightly warmer than cream
--fog#605B6FSecondary text, labels, placeholders
--border#E8E2DCCard borders, dividers, input borders
--gold#866030Eyebrow labels, tags, warm accent
--gold-soft#F5EDE3Tag/badge background
--green#5A8F62Success states, positive indicators
--surface-inv#2A2438Inverted sections (footer, stage grid, dark hero areas)

2.2 Dark Mode Tokens

Dark mode is activated via [data-theme="dark"] on <html>. It respects prefers-color-scheme: dark on first visit.

TokenDark ValueNotes
--cream#1e1a28Deep warm purple-black
--paper#251f33Slightly lighter surface
--ink#f0eceaWarm off-white text
--fog#9d98a8Muted lavender-gray
--border#3a3348Subtle warm border
--gold#b8944fSlightly brighter for contrast
--gold-softrgba(184,134,79,0.14)Semi-transparent warm
--red-softrgba(230,25,76,0.12)Semi-transparent red
--surface-inv#17141fDeepest background

Shadow opacity increases significantly in dark mode (0.25–0.45 vs 0.03–0.08) to maintain depth perception.


3. Typography

3.1 Font Families

RoleFamilyFallbackFormat
DisplayFrauncesGeorgia, serifVariable (weight 300–900, italic, optical size axis)
Body / UIOutfit-apple-system, sans-serifStatic weights 400, 700

Both fonts are self-hosted as .woff2 — no external requests (Google Fonts, Adobe, etc.).

Fraunces has an optical size axis (opsz): at large sizes it renders with more contrast and character; at small sizes it becomes more readable. Use font-variation-settings when available.

3.2 Type Scale (Website)

ElementFontSizeWeightLetter-spacingLine-height
Section titleFrauncesclamp(2rem, 3.5vw, 3rem)700-0.03em1.12
Section title <em>Fraunces italicinheritedinheritedinheritedinherited
Eyebrow labelOutfit0.68rem8000.14em1
Card titleFraunces1.15rem700-0.02em1.25
Body / proseOutfit1rem400normal1.7
Card excerptOutfit0.875rem400normal1.55
Nav linksOutfit0.9375rem400 (600 active)normal1
Wordmark (nav)Fraunces1.25rem600-0.02em1
Button textOutfit0.88rem7000.04em1
Tag/badgeOutfit0.65rem8000.12em1
Footer headingOutfit0.75rem6000.08em1
Footer bodyOutfit0.9375rem400normal1.6

3.3 Typography Patterns

  • Section titles always use Fraunces with the accent word wrapped in <em> rendered in --red italic — e.g. "Start free. Unlock the full journey."
  • Eyebrow labels appear above section titles with a 28px gold line before the text, all-caps.
  • Prose content (guides, blog) uses max-width: 68ch for comfortable line length.

3.4 Type Scale (Flutter App)

ElementFontSizeWeightLetter-spacingLine-height
Screen title (H1)Fraunces1.5rem (24px)700-0.01em1.2
Section heading (H2)Fraunces1.1rem (17.6px)600normal1.3
Greeting textFraunces1.8rem (28.8px)700-0.02em1.15
Onboarding titleFraunces2rem (32px)800-0.02em1.1
Body textOutfit0.9rem (14.4px)400normal1.5
Small labelOutfit0.75rem (12px)600normal1.4
Tiny label (caps)Outfit0.65rem (10.4px)8000.1em1.2
Button textOutfit0.9rem (14.4px)7000.05em1.0
Nav labelOutfit0.65rem (10.4px)600normal1.0

4. Spacing & Layout

4.1 Spacing Scale (8px grid)

TokenValueUsage
xs4pxTight gaps (dots, icon-label)
sm8pxCompact spacing (inline gaps)
md12pxCard internal gaps, list item spacing
base16pxCard padding, standard margins
lg20pxContent area horizontal padding
xl24pxSection spacing, content area padding
2xl32pxLarge section gaps
3xl40pxOnboarding section spacing

4.2 Page Layout (Website)

PropertyDesktopMobile (≤768px)
Max content width1100px100%
Horizontal padding52px20px
Section padding (vertical)96px64px
Section padding tight72px48px
Nav padding20px 52px16px 24px
Footer padding64px 52px 32px48px 24px 24px

4.3 Breakpoints

BreakpointUsage
≤640pxSmall mobile — single-column forms, stacked cookie consent
≤768pxMobile — primary breakpoint, nav hamburger, single-column layouts
≤900pxTablet — pricing grid stacks, content sidebar hides
≤1024pxStage grid shifts from 7 to 4 columns
≤1100pxPhone fan decorative element adjusts

5. Elevation & Shadows

All shadows use warm charcoal base rgba(42,36,56,x) — never cold black. Dual-layer shadows (large + small) create realistic depth.

TokenLight ModeDark Mode
--shadow-sm0 1px 3px rgba(42,36,56,0.04), 0 1px 2px rgba(42,36,56,0.03)0 1px 3px rgba(0,0,0,0.25), 0 1px 2px rgba(0,0,0,0.2)
--shadow-md0 4px 12px rgba(42,36,56,0.06), 0 2px 4px rgba(42,36,56,0.04)0 4px 12px rgba(0,0,0,0.35), 0 2px 4px rgba(0,0,0,0.25)
--shadow-lg0 12px 32px rgba(42,36,56,0.08), 0 4px 8px rgba(42,36,56,0.04)0 12px 32px rgba(0,0,0,0.45), 0 4px 8px rgba(0,0,0,0.3)

6. Border Radii

TokenValueUsage
--radius-sm12pxInput fields, small cards, icon containers
--radius-md16pxStandard cards, settings items, stage cells
--radius-lg20pxLarge cards, popups
--radius-pill100pxButtons, tags, badges, toggle switches

7. Component Patterns

7.1 Buttons

Primary (.btn-primary)

  • Background: --red--red-dark on hover
  • Color: white
  • Border-radius: --radius-pill (100px)
  • Padding: 12px 28px
  • Font: Outfit, 0.88rem, weight 700, letter-spacing 0.04em
  • Hover: translateY(-1px), darker background
  • Focus: 2px solid --red outline, 2px offset
  • Active: translateY(0) (press effect)
  • Disabled: opacity 0.5, no pointer events

Secondary / Ghost

  • Background: transparent
  • Border: 1px solid --border
  • Color: --fog--ink on hover
  • Same radius as primary

Chip / Filter

  • Pill-shaped, 0.82rem, weight 600
  • Inactive: --paper background, 1px border, full opacity
  • Active: --red background, white text

7.2 Cards

Content Card

  • Background: --paper
  • Border: 1px solid --border
  • Border-radius: 12px
  • Shadow: --shadow-sm
  • Hover: --shadow-lg + translateY(-4px)
  • Transition: box-shadow 0.2s, transform 0.2s
  • Thumb area: --cream background, emoji at 3rem
  • Body padding: 20px 24px 24px

Pricing Card

  • Same base as content card
  • Featured variant: border 2px solid --red, relative position for label
  • Label: 0.65rem caps, --gold color

7.3 Navigation

  • Fixed, glassmorphic: color-mix(in srgb, var(--cream) 88%, transparent) + backdrop-filter: blur(16px)
  • Scrolled state adds subtle box-shadow
  • Active link: weight 600, 2px --red underline pseudo-element
  • Language picker: dropdown with 10px radius, layered shadow
  • Theme toggle: 34px square, 10px radius, emoji icon (🌑/☀️)
  • Background: --surface-inv (dark)
  • Two-column layout: brand column (flex 1 1 240px) + link columns (flex, gap 48px)
  • Bottom bar: copyright + "Made with ❤️ in Europe" + region selector buttons
  • Region buttons: 6px radius, 1px border, pill-like but rectangular

7.5 Forms

  • Input border: 1px solid --border, radius 12px (sm) or 6px (waitlist)
  • Focus: border-color --red, optional 0 0 0 3px --red-soft ring
  • Padding: 12–14px 16px
  • Placeholder: --fog color
  • Labels: 0.82rem, weight 600

7.6 Tags & Badges

  • Eyebrow: 0.68rem, weight 800, 0.14em spacing, uppercase, --gold with 28px gold line before
  • Content tag: 0.65rem, weight 800, 0.12em spacing, uppercase, --gold on --gold-soft background, pill-shaped
  • Stage pill: 0.72rem, weight 600, pill-shaped, dynamic color per stage with 22% alpha background

8. Icons

Website

  • Library: phosphor-astro (Phosphor Icons)
  • Preferred variant: Duotone (two-tone, layered)
  • Sizes: 18px (share buttons), 32px (section feature icons)
  • Import pattern: Individual file imports — import HeartFill from 'phosphor-astro/HeartFill.astro'

Flutter App

  • Library: Material Symbols Outlined (variable weight, no fill)
  • Default: FILL 0, wght 400, GRAD 0, opsz 24
  • Sizes: 20px (nav), 24px (standard), 32px (profile), 40px (large profile)

9. Motion & Animation

Transitions

PropertyDurationEasing
Background, border-color0.2sease (default)
Opacity, color0.15sease
Transform (hover lift)0.15sease
Box-shadow0.2sease
Backdrop-filter0.3sease
Carousel slide opacity0.6sease

Keyframe Animations

  • fanIn: fade up (opacity 0 → 1, translateY 18px → 0)
  • float: gentle bob (translateY 0 → -6px → 0)
  • parallax: scroll-linked vertical shift (translateY 20px → -20px)

Accessibility

  • @media (prefers-reduced-motion: reduce) disables all animation and transitions globally

10. Accessibility

  • Focus ring: 2px solid --red, 2px offset on all interactive elements via :focus-visible
  • Skip link: Hidden until focused, appears at top-left with --red background
  • Screen reader: .sr-only class for visually hidden content
  • Semantic HTML: Proper heading hierarchy, ARIA labels on toggles/regions, role="radiogroup" on region selector
  • Color contrast: --ink (#2A2438) on --cream (#F7F3EE) ≈ 11.5:1 ratio; --fog (#605B6F) on --cream ≈ 5.2:1 (AA compliant)

11. Brand Identity

  • SVG mark: heart-lock icon inside a circle, rendered in --red (#e6194c) with white lock detail
  • Wordmark: "Avelia" in Fraunces, 1.25rem, weight 600, letter-spacing -0.02em
  • Logo + wordmark used together in nav and footer with 8px gap

Brand Voice (Visual)

  • Warm, not clinical — cream backgrounds, editorial serif, soft shadows
  • Confident, not loud — the red accent is used sparingly for actions and emphasis, never as a dominant fill
  • European origin — "Made with ❤️ in Europe" in footer, GDPR-first design, hosted in Germany
  • Privacy as design — lock iconography, E2E encryption messaging, no third-party tracking badges

12. Pitch Deck Visual Guidelines

Co-Founder Deck (The Vision)

Slide 1: Title

  • Large #e6194c heart-lock logo centered
  • Text: "AVELIA. Your journey to family, together."
  • Footer: "Private. Shared. Sovereign."

Slide 2: The Problem (The Data Leak)

  • Visual: Spiderweb of logos (Facebook, Google, ad networks) harvesting data from a generic period tracker
  • Text: "Why does Meta know you're pregnant before your parents do?"

Slide 3: The Mission (The Trust Anchor)

  • Clean white space. A single #e6194c line separating "Your Data" and "Our Server"
  • Text: "We are building a Zero-Knowledge sanctuary."
  • Bullets: E2EE by default. No ads. No pixels. No leaks. You hold the keys. We hold the blobs.

Slide 4: The "Together" Factor

  • Two phones side-by-side, linked by a glowing #e6194c thread
  • Text: "Parenting isn't a solo sport."

Slide 5: The Culture

  • High-quality photo of a couple
  • Text: "Honest. Warm. Scientific."

Investor Deck (The Growth)

Slide 1: Title

  • Sleek UI mockup of Avelia on iPhone
  • Text: "AVELIA. The Future of Private Health Tech."
  • Subtext: "Disrupting the $60B FemTech market with absolute privacy."

Slide 2: The Market Opportunity

  • Bar chart: "Privacy-Conscious Consumers" growth
  • Text: "Privacy is the new Organic."
  • Stat: 74% of users are "highly concerned" about reproductive data privacy (Post-Roe).

Slide 3: The Moat (E2EE)

  • Diagram: Argon2id architecture vs centralized database
  • Text: "We are Subpoena-Proof."
  • Key: Flo/Clue cannot pivot to this architecture without rewriting their stack and killing ad revenue.

Slide 4: The Revenue Engine (3 Tiers + Marketplace)

  • Visual: 3 tier cards in brand style + marketplace icon in #e6194c
  • Free (0€): NFP & cycle tracking, journal, guides — on-device, no account
  • Light (2,99€/mo · 26,99€/yr): cloud sync, symptom charts, 2 GB storage
  • Premium (8,99€/mo · 79,99€/yr): all 7 stages, partner linking, 5 GB storage
  • Expert Marketplace (future): 15–20% fee on 1:1 expert consultations

Slide 5: Traction & Roadmap

  • Timeline: Thinking → Trying → Pregnant → Early Childhood
  • Text: "Capture them at the Thinking stage, keep them for 10 years."
  • Goal: 100k users in Year 1.

Slide 6: The Team & The Ask

  • Founders' headshots
  • Text: "Join the Privacy Revolution."
  • Ask: Seed round for engineering scale and Marketplace pilot.

Private by design.