Durations
micro 100ms fast 200ms normal 300ms slow 500ms dramatic 800ms
Easings
ease-out (enter) ease-in (exit) spring (celebrate) gentle (default)
Principles
Calm Purposeful Accessible

01 — Foundation

Easing Curves

Five curves for five purposes. Click any to see it in motion.

Ease Out
--ease-out
Entering elements decelerate
Ease In
--ease-in
Exiting elements accelerate
Ease In-Out
--ease-in-out
Looping / breathing
Spring
--ease-spring
Celebration, overshoot
Gentle
--ease-gentle
Default for all transitions

Touch & Feedback

Every interactive element responds to touch with purposeful motion.

Button Press

Scale to 0.97 on press. Shadow lifts on hover. Three variants: primary (amber), teal, crisis.

transform: scale(0.97) --dur-micro

Toggle Switch

Knob slides with spring overshoot. Background colour transitions smoothly.

--ease-spring --dur-fast
Great Good Mixed Struggling

Chip Selection

Selected chip scales up 5% and fills with amber. Deselected chips return to default.

transform: scale(1.05) --dur-fast

Input Focus Glow

Border becomes amber, box-shadow expands outward as a warm glow ring.

box-shadow: 0 0 0 3px --dur-fast

03 — Screen Transitions

Journey Navigation

Every journey step uses directional transitions to communicate spatial relationship.

Journey Forward

Content slides left as new screen enters from right. Used for "next" actions in onboarding and check-in flows.

slideForward --dur-normal --ease-out

Journey Back

Reverse of forward — content slides right as previous screen returns from left.

slideBack --dur-normal --ease-out

Modal / Detail Enter

Scale up from 92% with fade-in. Used for modals, detail views, and safety plan editing.

fadeScale --dur-normal --ease-out

Staggered List

Children enter sequentially with 60ms delay between each. Used for onboarding options, contact lists, coping strategies.

staggerIn --stagger: 60ms

States That Feel

Motion that carries emotional weight. Calm for safety, urgency for crisis, joy for progress.

Breathing Circle

4-second breathing rhythm. Used during emotional readiness checks and pause moments. Scale 1.0 → 1.15 with opacity shift.

breathe 4s infinite
7
day streak

Streak Celebration

Number pops in with scale + blur. Ring expands outward and fades. Celebrates daily check-in consistency.

countReveal celebRing --ease-spring
!

Crisis Activation

Screen darkens to navy. Alert icon pulses with expanding amber ring. Serious but not panicking — grounded urgency.

crisisBg crisisPulse --dur-dramatic
😊
🙂
😕
😞

Mood Selection

Selected mood bounces up slightly and gets an amber border ring. Other options dim. Click any to see.

moodBounce --dur-fast --ease-spring

05 — Loading & Feedback

Waiting & Progress

What happens between actions. Skeleton screens, progress gauges, and notifications.

Skeleton Shimmer

Warm amber shimmer sweeps across placeholder shapes. Staggered delays create a wave effect across rows.

shimmer 1.5s infinite
Mood this week Good
Check-in streak 7 days

Gauge Fill

Bars fill from left with ease-out deceleration. Staggered start for multiple gauges. Gradient shows mood quality.

gaugeFill --dur-slow

Progress Steps

Dots pop when completed — scale up, flash, settle at amber. Connecting line fills to match. Used in onboarding flows.

stepPop --dur-fast --ease-spring
💬 Mum accepted your invitation

Notification Toast

Slides down from top, holds for 3 seconds, slides back up. Used for angel connection events and check-in confirmations.

notifSlide 4s total

Warm Pulse

The signature Angels glow. A 4-second breathing pulse that signals connection and safety.

K

Avatar Glow

Pulsing golden halo on active angel avatars. Communicates "connected and watching over you."

!

Crisis Alert Pulse

Faster 2-second pulse in crisis navy. Expanding ring draws immediate attention without being alarming.

Safety Plan Ready

Status Badge Glow

Subtle pulse on status indicators. Communicates "this is live and active" without being distracting.

@keyframes warmPulse declaration is in the style block above.
Back to Angels  ·  UI Mockups  ·  Pitch Deck