Design Documentation

Build it yourself

Everything below documents the ACHIVII design system: tokens, components, and the motion rules that hold it together โ€” ending in copy-paste prompts you can drop into any AI coding tool to recreate the same interface.

ACHIVII is a daily focus and habit tracker built as a four-tab iPhone-style prototype: Today, Progress, Calendar and Profile. The whole interface is styled as one continuous surface, dark canvas, soft mint-and-purple glows, a single accent used for "in progress" and a second for "wind down" moments. The signature detail is the wavy S-curve connector that threads through the day's tasks instead of a plain straight line, drawn in JavaScript from the real measured position of every task node so it always lines up.

Plus Jakarta Sans, 400 to 800 Radii: 12 / 16 / 22px ease-out: cubic-bezier(.23,1,.32,1) spring: cubic-bezier(.34,1.56,.64,1) drawer: cubic-bezier(.32,.72,0,1)
Daily Goal Ring
A fully tappable card, no separate button. Tapping anywhere advances the count and animates the SVG ring with a spring easing.
Wavy Timeline
A JavaScript-measured S-curve connecting every task node, colored mint up to the active task and faded purple after it.
Task Detail Sheet
A bottom sheet confined inside the phone glass, dismissible by backdrop tap, Escape, the complete button, or a real velocity-based drag gesture.
Glass Tab Bar
A frosted four-tab bar switching between Today, Progress, Calendar and Profile with a fast, minimal crossfade.
Progress Charts
A staggered weekly bar chart and count-up stat tiles that replay every time the Progress tab is opened.
Only transform and opacity are animated for anything performance sensitive. The chart bars scale from zero rather than animating height.
Every pressable element gets a pressed state, a scale down somewhere around 0.94 to 0.985, so nothing feels inert.
Tab switching is frequent, so it stays fast: about 120 milliseconds out, 180 milliseconds in, never a heavy transition.
Nothing ever enters from a zero scale. Entrances start around 0.95 scale with zero opacity, or slide in from a full offset.
Hover-only effects are gated behind a hover and fine pointer media query so touch devices never get stuck hover states.
A reduced motion preference cuts stagger delays and durations close to zero everywhere, including this documentation column.
web-prompt.txt
Build a single self-contained HTML, CSS and JavaScript page called ACHIVII: a dark-mode daily focus tracker styled to look like a real iPhone prototype with four tabs.

DESIGN TOKENS
bg-dark #080B11, bg-canvas #0E131F, bg-card #141B2B, card border rgba(255,255,255,0.07), mint gradient #4EE2B6 to #2DD4BF, purple accent #818CF8, text colors #FFFFFF / #F1F5F9 / #94A3B8 / #64748B. Font: Plus Jakarta Sans, weights 400 to 800. Corner radii 12, 16 and 22px. Custom easing curves: ease-out cubic-bezier(0.23, 1, 0.32, 1), ease-in-out cubic-bezier(0.77, 0, 0.175, 1), spring cubic-bezier(0.34, 1.56, 0.64, 1), drawer cubic-bezier(0.32, 0.72, 0, 1).

DEVICE CHROME
Build the phone as two layers: an outer frame that carries the bezel shadow ring and three thin physical side-button bars, wrapping an inner screen layer that clips everything (overflow hidden, radius 48, minimum height around 860px). Add a black Dynamic Island pill centered over a status bar showing the time plus signal, wifi and battery glyphs. At the bottom, add a frosted glass tab bar with four tabs (Today with a leaf icon, Goals with a bar-chart icon, Calendar, Profile) where the active tab gets a soft mint pill behind its icon, plus a thin iOS-style home-indicator bar underneath.

SCREEN ONE, TODAY
Header row: small caps ACHIVII wordmark plus a large date, and a mint status pill with a slowly pulsing dot reading something like Calm Focus, On Track. Below it, a fully tappable Daily Goal card containing a circular SVG progress ring showing completed over total blocks, a title and a subtitle. The whole card is the interactive control, there is no separate button. Tapping it advances the count, animates the ring with a spring easing, and shows a toast. Under that, a vertical timeline of five time-stamped tasks connected by a wavy S-curve SVG path, not a straight line, calculated in JavaScript from each node's real measured position on screen. Color the path mint from the top down to the active task, then fade it to purple for the rest. One task is the active one and shows a small checklist and a progress bar instead of a description. Three tasks are compact, icon and title only, no description. The last task uses a distinct purple accent instead of mint. Tapping any task card opens a bottom sheet, described below.

SCREEN TWO, PROGRESS
Three small stat tiles for streak, focus hours and completion rate that count up from zero whenever this tab is opened. A seven column bar chart for the week where each bar animates in from zero height using a scale transform with a staggered spring, and today's column gets a purple outline ring. A short list of labeled progress rows underneath.

SCREEN THREE, CALENDAR
A month grid generated in JavaScript. Completed days get a small mint dot under the number, and the current day gets a solid purple circle behind it.

SCREEN FOUR, PROFILE
A gradient avatar circle with initials, a name and subtitle, three stat tiles, and a list of pressable settings rows with an icon, a label and a chevron.

TASK DETAIL BOTTOM SHEET
This sheet must stay confined inside the phone glass, meaning it is positioned absolutely inside the clipped screen layer, not the browser viewport. A dim backdrop fades in behind it. The sheet itself slides up starting from a full translateY offset of its own height, never from a zero scale, using the drawer easing curve. Its contents: a small drag handle, the tapped task's icon cloned in, a title, a time label, a description, and a Mark Complete button that dims the source card, adds a small mint checkmark badge to it, closes the sheet, and shows a toast. The sheet can be dismissed four ways: tapping the backdrop, pressing Escape, tapping the complete button, or a real drag gesture on the handle using pointer capture, with resistance if dragged past the fully open position, and a release rule based on either velocity being fast enough or the drag distance being large enough, not distance alone.

NAVIGATION
Tapping a tab swaps the visible screen using a fast opacity plus small translateY crossfade, roughly 120 milliseconds out and 180 milliseconds in. Keep this quick since switching tabs happens many times per session, this is not the place for a showy animation.

RULES TO FOLLOW
Only animate transform and opacity for anything performance sensitive, for example the bar chart should scale a bar from zero inside a fixed height track rather than animating height directly. Never write a transition on the all property, always name exact properties. Never animate an entrance from a zero scale, start around 0.95 scale with zero opacity, or slide in from a full offset. Every pressable element such as cards, buttons and nav items needs a pressed state that scales down slightly, somewhere around 0.94 to 0.985. Gate hover-only effects behind a hover and fine pointer media query so touch devices never get stuck hover states. Respect a reduced motion preference by cutting stagger delays and animation durations down close to zero. Keep entrance stagger delays short, about 50 to 80 milliseconds apart, never longer.
Copied to clipboard