A warm, premium design system built around growth, clarity, and a more human rhythm of work. A healthier way to grow work.
Brand & logos
Wordmark, symbol, and favicon — each with a light and dark variant. The name refers to the surface it's drawn on: use the dark variant on dark surfaces, the light variant on light ones.
Color families
Four purpose-built color families provide the full tonal range for Berry. Hover any swatch to inspect — click to copy the hex value.
Design tokens
Semantic tokens map raw palette values to meaningful roles. Always reference these in code — never raw hex values directly.
Click any hex value to copy it to clipboard.
Typography
Bely gives Berry its warm editorial character — reserved for titles and headings. Soleil handles everything else: body, UI, nav, buttons, labels. Bely Display only for the largest moments (h1–h3, stat numbers).
font-display · weight 400
font-heading · weight 400 & 700
font-sans · weight 400 & 700
A healthier way
Grow your work
Expert guidance at your pace
Feature highlight
Efficient problem-solving, insightful market analysis, and actionable plans made the consulting invaluable to our business's success.
Berry is a project management tool built for teams who want a healthier way to grow work. Plan, track, and ship with clarity and calm.
Smart notifications that respect focus time. One-click integrations with your stack.
Brand resource
Sign Up Log in Get started
Home Features About Pricing FAQ Blog Contact
$1.3b+
Spacing
Built on a 4px base unit. These are the most-used steps in Berry layouts — map directly to Tailwind's default scale.
Border radius
Generous rounding reinforces Berry's warm, premium character. Use the scale consistently — never introduce one-off values.
8px · rounded-lg
Chips, tags
16px · rounded-2xl
Buttons, inputs, cards
24px · rounded-3xl
Panels, sections
32px · rounded-[32px]
Hero containers
999px · rounded-full
Badges, avatars, pills
Shadows & elevation
Shadows communicate depth hierarchy. Glow variants add brand presence to high-priority interactive moments.
Chips, small inputs
Tooltips, dropdowns
Feature cards, panels
Heroes, floating elements
Modals, dialogs
CTA buttons, brand moments
Motion & animation
Motion reinforces the premium feel. Use spring for interactive elements, ease-out for entrances, ease-in-out for complex transitions. Hover any row to preview.
GSAP animation patterns
Five patterns, one ease, subtle travel. Motion supports hierarchy without ever being the center of attention. All demos are live — click Replay to re-run.
data-revealgsap.fromTo('[data-reveal]',
{ opacity: 0, y: 24 },
{ opacity: 1, y: 0, duration: 0.6,
ease: 'cubic-bezier(0.22, 1, 0.36, 1)',
scrollTrigger: { trigger: el, start: 'top 90%', once: true },
clearProps: 'transform' })
<SplitHeading><SplitHeading :lines="['Line one', 'Line two']" class="font-display ..." />
// plugin — one tween per headline, each line staggers 80ms
gsap.set(inners, { yPercent: 110 })
ScrollTrigger.create({ trigger: el, start: 'top 88%', once: true,
onEnter: () => gsap.to(inners, {
yPercent: 0, duration: 0.85, stagger: 0.08,
ease: 'cubic-bezier(0.22, 1, 0.36, 1)' })
})
data-reveal-staggergsap.fromTo(container.children,
{ opacity: 0, y: 24 },
{ opacity: 1, y: 0, duration: 0.6, stagger: 0.06,
ease: 'cubic-bezier(0.22, 1, 0.36, 1)',
scrollTrigger: { trigger: container, start: 'top 88%', once: true },
clearProps: 'transform' })
Teams that thrive.
// onMounted() — hero wrapper cloaked via style="opacity:0"
const tl = gsap.timeline({ delay: 0.15 })
tl.set(heroRef.value, { opacity: 1 })
tl.fromTo('[data-hero]',
{ opacity: 0, y: 28 },
{ opacity: 1, y: 0, duration: 0.8, stagger: 0.08,
ease: 'cubic-bezier(0.22, 1, 0.36, 1)',
clearProps: 'transform' })
.page-loader// layouts/default.vue
<div class="page-loader"><div class="page-loader-mark" /></div>
// gsap plugin — app:mounted
requestAnimationFrame(() => requestAnimationFrame(() => {
loader.classList.add('is-hidden') // fade 0.55s
}))
loader.addEventListener('transitionend', () => loader.remove())
Gradient recipes
Curated combinations for consistent visual language across dark sections, CTAs, and decorative backgrounds.
Component patterns
Core interactive patterns with all variants and states. Build from these — extend, never diverge.
Sign-in — both modes
Real sign-in flow rendered in dark and light with the full token system. Same components, inverse contrast — both should feel equally premium.
This is a living internal design system reference for visual consistency across product, marketing, and design work.
App atoms
Tracker-specific primitives. Built on the foundation tokens — never introduce one-off colors, sizes, or radii outside this set.
<span class="icon icon-sm"><i data-lucide="search"></i></span>App components
Composed patterns made from the atoms above. Use these as drop-in building blocks across the Tracker app.
Tracker — Issues list
Full screen composed entirely from the atoms and components above. Berry's warm palette in place of the cold default — every element references a token, no one-off values.
Tracker — Kanban board
Same data, grouped by status into columns. Drops into the Tracker shell exactly like the list view — pure CSS, every value references a token, and the active card uses Berry red as a clear focus ring.
Tracker — Task detail panel
Focused issue view with the inline metadata panel on the right. Every detail row is a quick-edit field — click any value to change status, priority, assignee, time tracking, and so on.
Vacaciones
Add description…
Planner — Calendar & schedule
Three-column day planner: sidebar with mini calendar, unplanned action items in the middle, schedule grid on the right. Today's date is locked in berry red across the mini-cal cell, the day-column header, and the now-indicator on the timeline.
Chat — Channels & messages
Channel-based chat with a left rail of channels, documents, and linked Tracker issues. Reuses every atom we already have — avatars, side items, status icons, group labels, the comment input — so it slots straight into the existing system.
Contacts — Persons table
Tabular view of the Persons type — sidebar filters the contact kind, the main column header bar holds quick filters and a cream "+ Person" CTA, and each row uses existing atoms (avatar, person name, modified date, action buttons).
| Person | Location | Files | Modified date | Role | Contact info |
|---|---|---|---|---|---|
|
TT
test test
|
test | 55 minutes ago |
|
||
|
AB
Andrea Benavides
|
Mexico City | 3 | 2 hours ago | Founder |
|
|
MR
Maria Rodríguez
|
Querétaro | 1 | Yesterday | Product designer |
|
|
DC
Daniel Caballero
|
Guadalajara | — | 3 days ago | Engineer |
|
|
LF
Lopez Familia
|
Monterrey | 2 | Last week | Client |
|