DesignMD Maker logo ← Home Report · Code analysis
P
Design System

Passionfroot - The AI Agent for Creator-led GTM

Design system extracted from https://www.passionfroot.me/ on 2026-08-24 (code-based analysis).

Source · https://www.passionfroot.me/ Engine · Code analysis Created · Aug 24, 2026 11:30 Cost · $0.0000
Detected Language

Design Style

gradient-rich / aurora
many gradient definitions
technical / mono accents
monospace font in use
Palette

Colors

primary
#EB6927
3.19 on white · 6.58 on black · 20° 83% 54%
secondary
#000000
21 on white · 1 on black · 0° 0% 0%
accent
#FFA466
1.95 on white · 10.75 on black · 24° 100% 70%
Token Roles 13 tokens
background
#FFFFFF · 21:1 vs black
surface
#FDFDFA · 20.61:1 vs black
text-primary
#000000 · 21:1 vs white
text-secondary
#E5E5E5 · 16.67:1 vs black
border
#3B4254 · 10.03:1 vs white
on-primary
#FFFFFF · 21:1 vs black
on-secondary
#FFFFFF · 21:1 vs black
on-accent
#000000 · 21:1 vs white
surface-container-lowest
#FFFFFF · 21:1 vs black
surface-container-low
#F0EDE0 · 17.9:1 vs black
surface-container
#EFECE1 · 17.76:1 vs black
surface-container-high
#EDEAE4 · 17.49:1 vs black
surface-container-highest
#E5E5E5 · 16.67:1 vs black
Detected Palette 24 colors by frequency in source CSS
#000000
used 69× · 0° 0% 0%
#FFFFFF
used 49× · 0° 0% 100%
#FDFDFA
used 5× · 60° 43% 99%
#1C1D1E
used 5× · 210° 3% 11%
#E5E5E5
used 2× · 0° 0% 90%
#EB6927
used 2× · 20° 83% 54%
#190922
used 2× · 278° 58% 8%
#F0EDE0
used 2× · 49° 35% 91%
#D5F3FC
used 2× · 194° 87% 91%
#EFECE1
used 2× · 47° 30% 91%
#F5F3EA
used 2× · 49° 35% 94%
#1A0B3A
used 2× · 259° 68% 14%
#FFA466
used 2× · 24° 100% 70%
#2D1B69
used 2× · 254° 59% 26%
#4A2C7A
used 2× · 263° 47% 33%
#FF9147
used 2× · 24° 100% 64%
#2C91AF
used 2× · 194° 60% 43%
#3EBB85
used 2× · 154° 50% 49%
#3B4254
used 2× · 223° 17% 28%
#191A1A
used 2× · 180° 2% 10%
#EB6928
used 2× · 20° 83% 54%
#1C1A16
used 2× · 40° 12% 10%
#101828
used 1× · 220° 43% 11%
#DCFCE7
used 1× · 141° 84% 93%
Surface Treatments

Gradients

linear-gradient(#000c,#0000000d 20%,#00000012,#000000f2)
linear-gradient(90deg,#0000,#000 10% 90%,#0000)
linear-gradient(90deg,#0000,#000 10%,#000 90%,#0000)
linear-gradient(90deg,#0000,#000 64px calc(100% - 64px),#0000)
linear-gradient(90deg,#0000,#000 64px,#000 calc(100% - 64px),#0000)
linear-gradient(90deg,#0000,#000 160px calc(100% - 160px),#0000)
Type System

Typography

display
inherit
48px · 300 · LH 1 · LS -.01em
Passionfroot - The AI Agent for Creator-led GTM
headline-lg
inherit
40px · 300 · LH 1 · LS -.01em
Passionfroot - The AI Agent for Creator-led GTM
headline-md
inherit
28px · 300 · LH 1 · LS -.01em
Passionfroot - The AI Agent for Creator-led GTM
title-lg
inherit
22px · 300 · LH 1.4
Typography is the discipline of rendering language visible. Spacing, weight, and rhythm carry meaning long before words are read.
body-lg
inherit
17.6px · 300 · LH 1.5
Typography is the discipline of rendering language visible. Spacing, weight, and rhythm carry meaning long before words are read.
body-md
inherit
16px · 300 · LH 1.5
Typography is the discipline of rendering language visible. Spacing, weight, and rhythm carry meaning long before words are read.
label-md
inherit
14.1px · 300 · LH 1.4 · LS .05em
Typography is the discipline of rendering language visible. Spacing, weight, and rhythm carry meaning long before words are read.
label-sm
inherit
12.8px · 300 · LH 1.4 · LS .05em
Typography is the discipline of rendering language visible. Spacing, weight, and rhythm carry meaning long before words are read.
Detected Font Stacks
'Nunito Sans''Caveat'var(--font-mono)"new-kansas"var(--font-sans)var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji")var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace)Caveat,cursive
Structure

Layout

Container
Section padding: · card padding:
Grid
12-column reference grid · gap
Spacing Scale
xs
2px
sm
13.6px
detected
2px
detected
3px
detected
.3em
detected
.4em
detected
7px
detected
.45em
detected
.85em
Breakpoints
640px768px1024px1280px1440px1920px
Geometry

Shapes

sm
1px
md
7.04px
lg
24px
r4
.25rem
r5
.44rem
r6
.55em
r7
.85em
r8
3px
Tokens in Context

Components

button-primary
rounded6px
fontWeight600
padding8px 12px
transitioncolor, background-color, border-color 150ms cubic-bezier(0.4, 0, 0.2, 1)
button-secondary
rounded8px
fontSize14px
fontWeight700
padding8px 16px
transitionall 200ms cubic-bezier(0.4, 0, 0.2, 1)
button-secondary-hover
textColor#FFFFFF
navigation-link
rounded6px
fontWeight600
padding8px 12px
transitioncolor, background-color, border-color 150ms cubic-bezier(0.4, 0, 0.2, 1)
badge
rounded9999px
backgroundColortransparent
fontWeight700
textTransformuppercase
padding2px 6px
card
background{colors.surface}
border1px solid {colors.border}
radius24px
Animation

Motion

Keyframes 18 found
@keyframes float
0%,to{transform:translateY(0)}50%{transform:translateY(-20px)}
@keyframes scroll-left
0%{transform:translate(0)}to{transform:translate(-50%)}
@keyframes word-reveal
0%{opacity:0;filter:blur(10px);transform:translateY(20px)}to{opacity:1;filter:blur();transform:translateY(0)}
@keyframes card-scatter-in
0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}
@keyframes icon-shake
0%{transform:rotate(0)}15%{transform:rotate(-12deg)}30%{transform:rotate(10deg)}45%{transform:rotate(-8deg)}60%{transform:rotate(6deg)}75%{transform:rotate(-3deg)}to{transform:rotate(0)}
@keyframes blog-image-shimmer
0%{background-position:150% 0}to{background-position:-150% 0}
@keyframes animate-in-up
0%{opacity:0;transform:translateY(var(--distance,40px))}to{opacity:1;transform:translateY(0)}
@keyframes animate-in-down
0%{opacity:0;transform:translateY(calc(var(--distance,40px)*-1))}to{opacity:1;transform:translateY(0)}
@keyframes animate-in-left
0%{opacity:0;transform:translate(calc(var(--distance,40px)*-1))}to{opacity:1;transform:translate(0)}
Applied Animations
var(--animate-pulse)word-reveal var(--word-duration,.8s)cubic-bezier(.19,1,.22,1)both.5s cubic-bezier(.25,.46,.45,.94) icon-shakenonenone!important
Easing Curves
cubic-bezier(.4,0,1,1)cubic-bezier(0,0,.2,1)cubic-bezier(.4,0,.2,1)cubic-bezier(.4,0,.6,1)var(--tw-ease,var(--default-transition-timing-function))var(--stamp-ease)
Proof

Live Preview

Complete Reference

Full design.md Specification

Design Specification — Passionfroot - The AI Agent for Creator-led GTM

FieldValue
Site / Projecthttps://www.passionfroot.me/
Analyzed on2026-08-24
Analysis modeAutomated code extraction (no AI)

Overview

This design system was extracted programmatically from the source page. It is built on a light canvas (#FFFFFF), ink text (#000000), a vivid accent (#FFA466). All type is set in 'Nunito Sans'. Detected font weights: 300, 400, 500, 600, 700, 800. Detected style signatures: gradient-rich / aurora; technical / mono accents.

Logo asset(s): https://res.cloudinary.com/passionfroot/image/upload/dpr_2.0/f_auto/q_auto/v1/workspace-production/Logo%20beehiiv__HcvZ80 · https://res.cloudinary.com/passionfroot/image/upload/dpr_2.0/f_auto/q_auto/c_fill,h_48/v1/website/x

Color System

Detected palette (by frequency)

HexRGBHSLCount
#0000000, 0, 00° 0% 0%69
#FFFFFF255, 255, 2550° 0% 100%49
#FDFDFA253, 253, 25060° 43% 99%5
#1C1D1E28, 29, 30210° 3% 11%5
#E5E5E5229, 229, 2290° 0% 90%2
#EB6927235, 105, 3920° 83% 54%2
#19092225, 9, 34278° 58% 8%2
#F0EDE0240, 237, 22449° 35% 91%2
#D5F3FC213, 243, 252194° 87% 91%2
#EFECE1239, 236, 22547° 30% 91%2
#F5F3EA245, 243, 23449° 35% 94%2
#1A0B3A26, 11, 58259° 68% 14%2
#FFA466255, 164, 10224° 100% 70%2
#2D1B6945, 27, 105254° 59% 26%2
#4A2C7A74, 44, 122263° 47% 33%2
#FF9147255, 145, 7124° 100% 64%2
#2C91AF44, 145, 175194° 60% 43%2
#3EBB8562, 187, 133154° 50% 49%2
#3B425459, 66, 84223° 17% 28%2
#191A1A25, 26, 26180° 2% 10%2

Assigned roles

Roles are taken from the page's own semantic CSS custom properties when present, otherwise inferred from usage frequency + luminance/saturation.

TokenHexRGBHSL
--color-primary#EB6927235, 105, 3920° 83% 54%
--color-accent#FFA466255, 164, 10224° 100% 70%
--color-background#FFFFFF255, 255, 2550° 0% 100%
--color-surface#FDFDFA253, 253, 25060° 43% 99%
--color-text-primary#0000000, 0, 00° 0% 0%
--color-secondary#0000000, 0, 00° 0% 0%
--color-text-secondary#E5E5E5229, 229, 2290° 0% 90%
--color-border#3B425459, 66, 84223° 17% 28%
--color-on-primary#FFFFFF255, 255, 2550° 0% 100%
--color-on-secondary#FFFFFF255, 255, 2550° 0% 100%
--color-on-accent#0000000, 0, 00° 0% 0%

Surface ramp (derived from detected light neutrals)

TokenHex
--color-surface-container-lowest#FFFFFF
--color-surface-container-low#F0EDE0
--color-surface-container#EFECE1
--color-surface-container-high#EDEAE4
--color-surface-container-highest#E5E5E5

Gradients

  • linear-gradient(in lab,red,red))
  • linear-gradient(#000c,#0000000d 20%,#00000012,#000000f2)
  • linear-gradient(90deg,#0000,#000 10% 90%,#0000)
  • linear-gradient(90deg,#0000,#000 10%,#000 90%,#0000)

> 5 additional gradient definitions were framework utility templates (unresolvable var(--tw-gradient-stops)) and were omitted.

Typography

Primary typeface: Nunito Sans — stack: 'Nunito Sans'

Font stacks (most used first)

  • 'Nunito Sans'
  • 'Caveat'
  • var(--font-mono)
  • "new-kansas"
  • var(--font-sans)
  • var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji")
  • var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace)
  • Caveat,cursive
  • var(--font-body)
  • var(--font-heading)!important

Web font sources

  • fonts.googleapis.com/css2?family=Caveat:wght@600&family=Nunito+Sans:wght@300;400;500;600;700;800&display=swap

Derived type scale

TokenSize
display48px
headline-lg40px
headline-md28px
title-lg22px
body-lg17.6px
body-md16px
label-md14.1px
label-sm12.8px

Font sizes (by frequency)

SizeCount
2.25rem2
1.375rem2
1em1
.5em1
.8em1
.88em1
1.1em1
10px1
11px1
12px1
15px1
16px1
28px1
1.75rem1
2.5rem1
3rem1
1.5rem1
1.25rem1

Weights in use: 300, 400, 500, 600, 700, 800

Line heights (by frequency)

ValueCount
1.53
13
1.23
1.452
2.25rem2
1.252
01
.951
1.11
1.61

Letter spacing (by frequency)

ValueCount
-.01em3
-.18px1
-.64px1
.05em1
.06em1
.12em1
.14em1
.16em1

Spacing

Derived spacing scale

TokenValue
xs2px
sm13.6px

Raw values (by frequency)

ValueCount
.3em2
.4em2
.45em1
.85em1
2px1
3px1
7px1

Borders & Radius

Derived radius tokens

TokenValue
sm1px
md7.04px
lg24px

Raw values (resolved, by frequency)

RadiusCount
04
24px2
.25rem1
.44rem1
.55em1
.85em1
1px1
3px1

Layout

Container max-width: 768px

Grid columns (largest detected grid): 8

Breakpoints

  • 640px
  • 768px
  • 1024px
  • 1280px
  • 1440px
  • 1920px

Animation & Motion

Easing curves

  • cubic-bezier(.4,0,1,1)
  • cubic-bezier(0,0,.2,1)
  • cubic-bezier(.4,0,.2,1)
  • cubic-bezier(.4,0,.6,1)
  • cubic-bezier(.4,0,.2,1)
  • var(--tw-ease,var(--default-transition-timing-function))
  • var(--stamp-ease)
  • cubic-bezier(.4,-.1,.2,1)

Keyframes

@keyframes float { 0%,to{transform:translateY(0)}50%{transform:translateY(-20px)} }
@keyframes scroll-left { 0%{transform:translate(0)}to{transform:translate(-50%)} }
@keyframes word-reveal { 0%{opacity:0;filter:blur(10px);transform:translateY(20px)}to{opacity:1;filter:blur();transform:translateY(0)} }
@keyframes card-scatter-in { 0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)} }
@keyframes icon-shake { 0%{transform:rotate(0)}15%{transform:rotate(-12deg)}30%{transform:rotate(10deg)}45%{transform:rotate(-8deg)}60%{transform:rotate(6deg)}75%{transform:rotate(-3deg)}to{transform:rotate(0)} }
@keyframes blog-image-shimmer { 0%{background-position:150% 0}to{background-position:-150% 0} }
@keyframes animate-in-up { 0%{opacity:0;transform:translateY(var(--distance,40px))}to{opacity:1;transform:translateY(0)} }
@keyframes animate-in-down { 0%{opacity:0;transform:translateY(calc(var(--distance,40px)*-1))}to{opacity:1;transform:translateY(0)} }
@keyframes animate-in-left { 0%{opacity:0;transform:translate(calc(var(--distance,40px)*-1))}to{opacity:1;transform:translate(0)} }
@keyframes animate-in-right { 0%{opacity:0;transform:translate(var(--distance,40px))}to{opacity:1;transform:translate(0)} }
@keyframes animate-in-scale { 0%{opacity:0;transform:scale(var(--scale,.95))}to{opacity:1;transform:scale(1)} }
@keyframes animate-in-scale-lg { 0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)} }
@keyframes animate-in-blur { 0%{opacity:0;filter:blur(var(--blur,10px))}to{opacity:1;filter:blur()} }
@keyframes animate-in-up-blur { 0%{opacity:.2;transform:translateY(var(--distance,8px));filter:blur(var(--blur,2px))}to{opacity:1;filter:blur();transform:translateY(0)} }
@keyframes animate-slide-down { 0%{transform:translateY(0)}to{transform:translateY(var(--slide-distance,60px))} }
@keyframes animate-in-pop { 0%{opacity:0;transform:translateY(var(--pop-distance,80px))scale(.9);filter:blur(var(--blur,4px))}60%{opacity:1;filter:blur()}to{opacity:1;filter:blur();transform:translateY(0)scale(1)} }
@keyframes animate-in-scale-blur { 0%{opacity:0;transform:scale(var(--scale-from,.8));filter:blur(var(--blur,2px))}to{opacity:1;filter:blur();transform:scale(1)} }
@keyframes animate-in-up-scale { 0%{opacity:0;transform:scale(var(--scale-from,.8))translateY(var(--distance,20px));filter:blur(var(--blur,2px))}to{opacity:1;filter:blur();transform:scale(1)translateY(0)} }

Animations

  • var(--animate-pulse)
  • word-reveal var(--word-duration,.8s)cubic-bezier(.19,1,.22,1)both
  • .5s cubic-bezier(.25,.46,.45,.94) icon-shake
  • none
  • none!important

Components

Extracted from the page's own interactive elements (classes → resolved CSS values).

button-primary — sample text: “For Brands”

PropertyValue
rounded6px
fontWeight600
padding8px 12px
transitioncolor, background-color, border-color 150ms cubic-bezier(0.4, 0, 0.2, 1)

button-secondary — sample text: “Get access”

PropertyValue
rounded8px
fontSize14px
fontWeight700
padding8px 16px
transitionall 200ms cubic-bezier(0.4, 0, 0.2, 1)
textColor (hover)#FFFFFF

navigation-link

PropertyValue
rounded6px
fontWeight600
padding8px 12px
transitioncolor, background-color, border-color 150ms cubic-bezier(0.4, 0, 0.2, 1)

badge

PropertyValue
rounded9999px
backgroundColortransparent
fontWeight700
textTransformuppercase
padding2px 6px

Source Design Tokens (CSS custom properties)

:root {
  --container-scale: 0.78;
  --container-translate-y: 10%;
  --left-card-left: -3%;
  --left-card-top: 35%;
  --left-card-rotate: -12deg;
  --center-card-left: 50%;
  --center-card-top: 10%;
  --right-card-right: -3%;
  --right-card-top: 32%;
  --right-card-rotate: 8deg;
  --font-sans: ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";
  --font-mono: ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;
  --color-orange-50: oklch(98% .016 73.684);
  --color-orange-100: oklch(95.4% .038 75.164);
  --color-orange-200: oklch(90.1% .076 70.697);
  --color-orange-300: oklch(83.7% .128 66.29);
  --color-orange-400: oklch(75% .183 55.934);
  --color-orange-500: oklch(70.5% .213 47.604);
  --color-orange-600: oklch(64.6% .222 41.116);
  --color-orange-700: oklch(55.3% .195 38.402);
  --color-green-50: oklch(98.2% .018 155.826);
  --color-green-100: oklch(96.2% .044 156.743);
  --color-green-200: oklch(92.5% .084 155.995);
  --color-green-300: oklch(87.1% .15 154.449);
  --color-green-600: oklch(62.7% .194 149.214);
  --color-green-700: oklch(52.7% .154 150.069);
  --color-emerald-50: oklch(97.9% .021 166.113);
  --color-emerald-200: oklch(90.5% .093 164.15);
  --color-emerald-600: oklch(59.6% .145 163.225);
  --color-emerald-700: oklch(50.8% .118 165.612);
  --color-sky-600: oklch(58.8% .158 241.966);
  --color-blue-500: oklch(62.3% .214 259.815);
  --color-blue-600: oklch(54.6% .245 262.881);
  --color-blue-700: oklch(48.8% .243 264.376);
  --color-purple-50: oklch(97.7% .014 308.299);
  --color-purple-100: oklch(94.6% .033 307.174);
  --color-purple-200: oklch(90.2% .063 306.703);
  --color-purple-300: oklch(82.7% .119 306.383);
  --color-purple-700: oklch(49.6% .265 301.924);
  --color-gray-100: oklch(96.7% .003 264.542);
  --color-gray-300: oklch(87.2% .01 258.338);
  --color-gray-400: oklch(70.7% .022 261.325);
  --color-gray-500: oklch(55.1% .027 264.364);
  --color-gray-600: oklch(44.6% .03 256.802);
  --color-gray-700: oklch(37.3% .034 259.733);
  --color-gray-800: oklch(27.8% .033 256.848);
  --color-gray-900: oklch(21% .034 264.665);
  --color-black: #000;
  --color-white: #fff;
  --spacing: .25rem;
  --container-xl: 36rem;
  --container-2xl: 42rem;
  --container-5xl: 64rem;
  --text-xs: .75rem;
  --text-xs--line-height: calc(1/.75);
  --text-sm: .875rem;
  --text-sm--line-height: calc(1.25/.875);
  --text-base: 1rem;
  --text-base--line-height: 1.5;
  --text-lg: 1.125rem;
}

Do's and Don'ts

Do

  • Do reserve the accent #FFA466 for interactive highlights and key moments — it is used sparingly on the source page.
  • Do keep the canvas at #FFFFFF; surfaces should stay within the detected neutral ramp.
  • Do stick to the detected font weight(s): 300, 400, 500, 600, 700, 800.

Don't

  • Don't introduce colors outside the detected palette — every hue above was found in the source.
  • Don't add drop shadows; the source page relies on borders and surface shifts for depth, not elevation.

Design Tokens (copy-paste)

:root {
  --color-primary: #EB6927;
  --color-accent: #FFA466;
  --color-background: #FFFFFF;
  --color-surface: #FDFDFA;
  --color-text-primary: #000000;
  --color-secondary: #000000;
  --color-text-secondary: #E5E5E5;
  --color-border: #3B4254;
  --color-on-primary: #FFFFFF;
  --color-on-secondary: #FFFFFF;
  --color-on-accent: #000000;
  --color-surface-container-lowest: #FFFFFF;
  --color-surface-container-low: #F0EDE0;
  --color-surface-container: #EFECE1;
  --color-surface-container-high: #EDEAE4;
  --color-surface-container-highest: #E5E5E5;
  --font-sans: 'Nunito Sans';
  --font-size-display: 48px;
  --font-size-headline-lg: 40px;
  --font-size-headline-md: 28px;
  --font-size-title-lg: 22px;
  --font-size-body-lg: 17.6px;
  --font-size-body-md: 16px;
  --font-size-label-md: 14.1px;
  --font-size-label-sm: 12.8px;
  --radius-sm: 1px;
  --radius-md: 7.04px;
  --radius-lg: 24px;
  --space-xs: 2px;
  --space-sm: 13.6px;
  --tracking-display: -.01em;
  --tracking-label: .05em;
  --container-max: 768px;
}