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

Exoflora

Design system extracted from https://exoflora-luxury.aura.build/ on 2026-07-20 (code-based analysis).

Source · https://exoflora-luxury.aura.build/ Engine · Code analysis Created · Jul 20, 2026 23:19 Cost · $0.0000
Detected Language

Design Style

glassmorphism
3 backdrop-filter rules + 12 translucent white fills
soft-ui / layered elevation
13 large soft low-opacity shadows
gradient-rich / aurora
many gradient definitions
rounded / pill-heavy
many large radii & pills
Palette

Colors

primary
#D8C2FF
1.61 on white · 13.08 on black · 262° 100% 88%
secondary
#000000
21 on white · 1 on black · 0° 0% 0%
Token Roles 8 tokens
background
#050505 · 20.38:1 vs white
surface
#EFFBFF · 19.91:1 vs black
text-primary
#000000 · 21:1 vs white
text-secondary
#BFEEFF · 16.89:1 vs black
border
#EFFBFF · 19.91:1 vs black
on-primary
#000000 · 21:1 vs white
on-secondary
#FFFFFF · 21:1 vs black
on-accent
#000000 · 21:1 vs white
Detected Palette 8 colors by frequency in source CSS
#FFFFFF
used 101× · 0° 0% 100%
#000000
used 65× · 0° 0% 0%
#BFEEFF
used 51× · 196° 100% 87%
#030303
used 6× · 0° 0% 1%
#050505
used 4× · 0° 0% 2%
#D8C2FF
used 4× · 262° 100% 88%
#070707
used 2× · 0° 0% 3%
#EFFBFF
used 1× · 195° 100% 97%
Surface Treatments

Gradients

radial-gradient(circle at 68% 44%, rgba(216, 194, 255, 0.08), transparent 30%), linear-gradient(90deg, rgba(0, 0, 0, 0.32) 0%, rgba(0, 0, 0, 0.12) 42%, rgba(0, 0, 0, 0.02) 72%, rgba(0, 0, 0, 0.18) 100%)
radial-gradient(ellipse at 22% 82%, rgba(0, 0, 0, 0.52), transparent 44%), linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.1) 20%, rgba(0,0,0,.5) 62%, rgba(0,0,0,.92) 100%)
radial-gradient(ellipse at 72% 4%, rgba(191,238,255,.075), transparent 34%), radial-gradient(ellipse at 14% 38%, rgba(216,194,255,.055), transparent 38%), linear-gradient(180deg, #050505 0%, #070707 42%, #030303 100%)
linear-gradient(rgba(255,255,255,.035) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.035) 1px, transparent 1px)
linear-gradient(180deg, transparent, #000 18%, #000 82%, transparent)
linear-gradient(90deg, transparent, rgba(191,238,255,.34), rgba(255,255,255,.08), transparent)
Type System

Typography

display
\
105.6px · 400 · LH 1 · LS -.08em
Exoflora
headline-lg
\
36px · 400 · LH 1 · LS -.08em
Exoflora
headline-md
\
30px · 400 · LH 1 · LS -.08em
Exoflora
body-lg
inherit
18px · 400 · LH 1.65
Typography is the discipline of rendering language visible. Spacing, weight, and rhythm carry meaning long before words are read.
body-md
inherit
16px · 400 · LH 1.65
Typography is the discipline of rendering language visible. Spacing, weight, and rhythm carry meaning long before words are read.
label-md
inherit
14px · 400 · LH 1.4 · LS .24em
Typography is the discipline of rendering language visible. Spacing, weight, and rhythm carry meaning long before words are read.
label-sm
inherit
12px · 400 · LH 1.4 · LS .24em
Typography is the discipline of rendering language visible. Spacing, weight, and rhythm carry meaning long before words are read.
Detected Font Stacks
'Playfair Display'"Playfair Display", serif"Inter", sans-serif"Playfair Display", serif !important'Playfair Display', serif !important
Structure

Layout

Container
Section padding: · card padding:
Grid
12-column reference grid · gap
Spacing Scale
unit
4px
sm
8px
md
16px
lg
32px
xl
56px
detected
8px
detected
12px
detected
14px
detected
16px
detected
18px
detected
20px
detected
22px
detected
24px
detected
28px
detected
30px
Breakpoints
640px768px900px1024px
Depth

Elevation & Depth

level 1
0 24px 90px rgba(0,0,0,.35), inset 0 1px 0 rgba(255,255,255,.16)
level 2
inset 0 1px 0 rgba(255,255,255,.1), 0 30px 90px rgba(0,0,0,.42)
level 3
0 38px 110px rgba(0,0,0,.55), 0 0 60px rgba(191,238,255,.08)
level 4
inset 0 1px 0 rgba(255,255,255,.12), 0 40px 120px rgba(0,0,0,.55)
level 5
0 0 42px rgba(191,238,255,.28)
level 6
0 28px 90px rgba(0,0,0,.46)
Geometry

Shapes

md
8px
lg
36px
pill
9999px
r4
999px
r5
30px
r6
26px
r7
28px
r8
34px
Tokens in Context

Components

button-primary
rounded9999px
backgroundColor#FFFFFF
fontSize14px
fontWeight600
textColor#000000
padding8px 16px
button-secondary
rounded9999px
fontSize14px
fontWeight600
textColor#FFFFFF
padding10px 20px
border1px solid currentColor
transitionall 300ms cubic-bezier(0.4, 0, 0.2, 1)
navigation-link
rounded9999px
fontSize14px
fontWeight500
padding8px 16px
transitioncolor, background-color, border-color 150ms cubic-bezier(0.4, 0, 0.2, 1)
navigation-link-hover
textColor#FFFFFF
badge
rounded9999px
padding8px 8px
border1px solid currentColor
card
background{colors.surface}
border1px solid {colors.border}
radius36px
boxShadow{elevation.md}
Animation

Motion

Keyframes 10 found
@keyframes heroReveal
0% { opacity: 0; transform: translateY(28px); filter: blur(12px); } 100% { opacity: 1; transform: translateY(0); filter: blur(0); }
@keyframes heroFadeUp
0% { opacity: 0; transform: translateY(20px); } 100% { opacity: 1; transform: translateY(0); }
@keyframes heroZoom
0% { transform: scale(1.12); } 100% { transform: scale(1); }
@keyframes fieldMarquee
from { transform: translateX(0); } to { transform: translateX(-50%); }
@keyframes introGrid
to { transform: scale(1); opacity: .1; }
@keyframes introOrbit
to { transform: translate(-50%, -50%) scale(1); opacity: .38; }
@keyframes introFade
to { opacity: 1; }
@keyframes introBrand
to { transform: translateY(0); opacity: 1; filter: blur(0); }
@keyframes introLine
to { transform: translateX(100%); }
Applied Animations
heroZoom 1.8s cubic-bezier(.16,1,.3,1) forwardsfieldMarquee 28s linear infinitenoneintroGrid 1.9s cubic-bezier(.16,1,.3,1) forwardsintroOrbit 1.85s cubic-bezier(.16,1,.3,1) forwardsintroFade .7s cubic-bezier(.16,1,.3,1) .14s forwardsintroBrand 1.08s cubic-bezier(.16,1,.3,1) .24s forwardsintroLine 1.2s cubic-bezier(.16,1,.3,1) .42s forwardsheroOnLoadImage 2.2s cubic-bezier(.16,1,.3,1) forwards
Easing Curves
cubic-bezier(.16,1,.3,1)cubic-bezier(.16,1,.3,1)cubic-bezier(0.4, 0, 0.2, 1)
Transitions
clip-path 1.25s cubic-bezier(.16,1,.3,1), transform 1.25s cubic-bezier(.16,1,.3,1), opacity .8s easeopacity .9s cubic-bezier(.16,1,.3,1), transform .9s cubic-bezier(.16,1,.3,1), filter .9s cubic-bezier(.16,1,.3,1)transform 1s cubic-bezier(.16,1,.3,1)transform .55s cubic-bezier(.16,1,.3,1), border-color .55s ease, background .55s ease, box-shadow .55s easemax-height .55s cubic-bezier(.16,1,.3,1)transform .35s cubic-bezier(.16,1,.3,1)transform .7s cubic-bezier(.16,1,.3,1), filter .7s easetransform .9s cubic-bezier(.16,1,.3,1), filter .9s ease
Proof

Live Preview

Complete Reference

Full design.md Specification

Design Specification — Exoflora

FieldValue
Site / Projecthttps://exoflora-luxury.aura.build/
Analyzed on2026-07-20
Analysis modeAutomated code extraction (no AI)

Overview

This design system was extracted programmatically from the source page. It is built on a dark canvas (#050505), ink text (#000000), a vivid accent (#D8C2FF). Display headings use a distinct face ("Playfair Display", serif) over the body stack ('Playfair Display'). Detected font weights: 400, 500, 600, 700, 800, 900. Detected style signatures: glassmorphism; soft-ui / layered elevation; gradient-rich / aurora; rounded / pill-heavy.

Color System

Detected palette (by frequency)

HexRGBHSLCount
#FFFFFF255, 255, 2550° 0% 100%101
#0000000, 0, 00° 0% 0%65
#BFEEFF191, 238, 255196° 100% 87%51
#0303033, 3, 30° 0% 1%6
#0505055, 5, 50° 0% 2%4
#D8C2FF216, 194, 255262° 100% 88%4
#0707077, 7, 70° 0% 3%2
#EFFBFF239, 251, 255195° 100% 97%1

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-background#0505055, 5, 50° 0% 2%
--color-primary#D8C2FF216, 194, 255262° 100% 88%
--color-accent#D8C2FF216, 194, 255262° 100% 88%
--color-surface#EFFBFF239, 251, 255195° 100% 97%
--color-text-primary#0000000, 0, 00° 0% 0%
--color-secondary#0000000, 0, 00° 0% 0%
--color-text-secondary#BFEEFF191, 238, 255196° 100% 87%
--color-border#EFFBFF239, 251, 255195° 100% 97%
--color-on-primary#0000000, 0, 00° 0% 0%
--color-on-secondary#FFFFFF255, 255, 2550° 0% 100%
--color-on-accent#0000000, 0, 00° 0% 0%

Gradients

  • `radial-gradient(circle at 68% 44%, rgba(216, 194, 255, 0.08), transparent 30%),

linear-gradient(90deg, rgba(0, 0, 0, 0.32) 0%, rgba(0, 0, 0, 0.12) 42%, rgba(0, 0, 0, 0.02) 72%, rgba(0, 0, 0, 0.18) 100%)`

  • `radial-gradient(ellipse at 22% 82%, rgba(0, 0, 0, 0.52), transparent 44%),

linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,.1) 20%, rgba(0,0,0,.5) 62%, rgba(0,0,0,.92) 100%)`

  • `radial-gradient(ellipse at 72% 4%, rgba(191,238,255,.075), transparent 34%),

radial-gradient(ellipse at 14% 38%, rgba(216,194,255,.055), transparent 38%),

linear-gradient(180deg, #050505 0%, #070707 42%, #030303 100%)`

  • `linear-gradient(rgba(255,255,255,.035) 1px, transparent 1px),

linear-gradient(90deg, rgba(255,255,255,.035) 1px, transparent 1px)`

  • linear-gradient(180deg, transparent, #000 18%, #000 82%, transparent)
  • linear-gradient(90deg, transparent, rgba(191,238,255,.34), rgba(255,255,255,.08), transparent)
  • linear-gradient(160deg, rgba(255,255,255,.07), rgba(255,255,255,.018))
  • radial-gradient(ellipse at 50% 0%, rgba(191,238,255,.08), transparent 60%), rgba(255,255,255,.025)
  • `radial-gradient(ellipse at 56% 48%, rgba(191,238,255,.13), transparent 28%),

linear-gradient(90deg, rgba(0,0,0,.86), rgba(0,0,0,.28) 44%, rgba(0,0,0,.86)),

linear-gradient(180deg, rgba(0,0,0,.72), transparent 44%, rgba(0,0,0,.86))`

  • `linear-gradient(rgba(255,255,255,.09) 1px, transparent 1px),

linear-gradient(90deg, rgba(255,255,255,.09) 1px, transparent 1px)`

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

Typography

Primary typeface: Playfair Display — stack: 'Playfair Display'

Display / heading typeface: "Playfair Display", serif (used for large headings; body uses the primary stack)

Font stacks (most used first)

  • 'Playfair Display'
  • "Playfair Display", serif
  • "Inter", sans-serif
  • "Playfair Display", serif !important
  • 'Playfair Display', serif !important

Web font sources

  • fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&family=Playfair+Display:ital,wght@0,500;0,600;1,400;1,500;1,600&display=swap
  • fonts.googleapis.com/css2?family=Playfair+Display:wght@400;500;600;700;900&display=swap

Derived type scale

TokenSize
display105.6px
headline-lg36px
headline-md30px
body-lg18px
body-md16px
label-md14px
label-sm12px

Font sizes (by frequency)

SizeCount
10px8
11px7
13px3
15px3
12px2
48px2
60px2
16px2
18px2
46px1
28px1
44px1
24px1
9px1
14px1
72px1
6.6rem1
36px1
4.6rem1
30px1

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

Line heights (by frequency)

ValueCount
14
.863
.823
1.652
.831
1.451
1.71
.751
1.551
1.751

Letter spacing (by frequency)

ValueCount
.24em6
.26em5
-.08em4
-.055em4
-.075em3
-.05em2
.2em2
-0.02em1

Spacing

Derived spacing scale

TokenValue
unit4px
sm8px
md16px
lg32px
xl56px

Raw values (by frequency)

ValueCount
20px9
8px7
28px7
16px6
14px5
18px5
12px5
24px5
48px5
40px4
32px4
110px3
112px3
56px3
30px2
22px2

Borders & Radius

Derived radius tokens

TokenValue
md8px
lg36px
pill9999px

Raw values (resolved, by frequency)

RadiusCount
999px8
30px2
8px1
36px1
26px1
28px1
34px1
9999px1

Shadows

Derived elevation

TokenValue
sm0 24px 90px rgba(0,0,0,.35), inset 0 1px 0 rgba(255,255,255,.16)
md0 28px 90px rgba(0,0,0,.46)
lg0 24px 100px rgba(0,0,0,.52), inset 0 1px 0 rgba(255,255,255,.16)

All detected shadows

  • 0 24px 90px rgba(0,0,0,.35), inset 0 1px 0 rgba(255,255,255,.16)
  • inset 0 1px 0 rgba(255,255,255,.1), 0 30px 90px rgba(0,0,0,.42)
  • 0 38px 110px rgba(0,0,0,.55), 0 0 60px rgba(191,238,255,.08)
  • inset 0 1px 0 rgba(255,255,255,.12), 0 40px 120px rgba(0,0,0,.55)
  • 0 0 42px rgba(191,238,255,.28)
  • 0 28px 90px rgba(0,0,0,.46)
  • inset 0 1px 0 rgba(255,255,255,.12), 0 34px 110px rgba(0,0,0,.48)
  • 0 0 18px rgba(191,238,255,.7)
  • 0 0 120px rgba(191,238,255,.16), inset 0 0 90px rgba(191,238,255,.06)
  • 0 24px 100px rgba(0,0,0,.52), inset 0 1px 0 rgba(255,255,255,.16)

Layout

Container max-width: 900px

Grid columns (largest detected grid): 5

Breakpoints

  • 640px
  • 768px
  • 900px
  • 1024px

Animation & Motion

Transitions

  • clip-path 1.25s cubic-bezier(.16,1,.3,1), transform 1.25s cubic-bezier(.16,1,.3,1), opacity .8s ease
  • opacity .9s cubic-bezier(.16,1,.3,1), transform .9s cubic-bezier(.16,1,.3,1), filter .9s cubic-bezier(.16,1,.3,1)
  • transform 1s cubic-bezier(.16,1,.3,1)
  • transform .55s cubic-bezier(.16,1,.3,1), border-color .55s ease, background .55s ease, box-shadow .55s ease
  • max-height .55s cubic-bezier(.16,1,.3,1)
  • transform .35s cubic-bezier(.16,1,.3,1)
  • transform .7s cubic-bezier(.16,1,.3,1), filter .7s ease
  • transform .9s cubic-bezier(.16,1,.3,1), filter .9s ease
  • transform .55s cubic-bezier(.16,1,.3,1), border-color .55s ease, background .55s ease
  • opacity .9s cubic-bezier(.16,1,.3,1), visibility .9s ease
  • `transform 1.05s cubic-bezier(.16,1,.3,1),

opacity .8s cubic-bezier(.16,1,.3,1),

background .45s ease,

border-color .45s ease`

Easing curves

  • cubic-bezier(.16,1,.3,1)
  • cubic-bezier(.16,1,.3,1)
  • cubic-bezier(0.4, 0, 0.2, 1)

Keyframes

@keyframes heroReveal { 0% { opacity: 0; transform: translateY(28px); filter: blur(12px); } 100% { opacity: 1; transform: translateY(0); filter: blur(0); } }
@keyframes heroFadeUp { 0% { opacity: 0; transform: translateY(20px); } 100% { opacity: 1; transform: translateY(0); } }
@keyframes heroZoom { 0% { transform: scale(1.12); } 100% { transform: scale(1); } }
@keyframes fieldMarquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@keyframes introGrid { to { transform: scale(1); opacity: .1; } }
@keyframes introOrbit { to { transform: translate(-50%, -50%) scale(1); opacity: .38; } }
@keyframes introFade { to { opacity: 1; } }
@keyframes introBrand { to { transform: translateY(0); opacity: 1; filter: blur(0); } }
@keyframes introLine { to { transform: translateX(100%); } }
@keyframes heroOnLoadImage { 0% { transform: scale(1.16); filter: brightness(.72) saturate(.9) blur(8px); } 100% { transform: scale(1); filter: brightness(1) saturate(1) blur(0); } }

Animations

  • heroZoom 1.8s cubic-bezier(.16,1,.3,1) forwards
  • fieldMarquee 28s linear infinite
  • none
  • introGrid 1.9s cubic-bezier(.16,1,.3,1) forwards
  • introOrbit 1.85s cubic-bezier(.16,1,.3,1) forwards
  • introFade .7s cubic-bezier(.16,1,.3,1) .14s forwards
  • introBrand 1.08s cubic-bezier(.16,1,.3,1) .24s forwards
  • introLine 1.2s cubic-bezier(.16,1,.3,1) .42s forwards
  • heroOnLoadImage 2.2s cubic-bezier(.16,1,.3,1) forwards

Components

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

button-primary — sample text: “Scents”

PropertyValue
rounded9999px
backgroundColor#FFFFFF
fontSize14px
fontWeight600
textColor#000000
padding8px 16px

button-secondary — sample text: “Shop”

PropertyValue
rounded9999px
fontSize14px
fontWeight600
textColor#FFFFFF
padding10px 20px
border1px solid currentColor
transitionall 300ms cubic-bezier(0.4, 0, 0.2, 1)

navigation-link

PropertyValue
rounded9999px
fontSize14px
fontWeight500
padding8px 16px
transitioncolor, background-color, border-color 150ms cubic-bezier(0.4, 0, 0.2, 1)
textColor (hover)#FFFFFF

badge

PropertyValue
rounded9999px
padding8px 8px
border1px solid currentColor

Effects

  • backdrop-filter: blur(18px)
  • backdrop-filter: blur(16px)

Source Design Tokens (CSS custom properties)

:root {
  --card-y: 42px;
  --frame-img: var(--story-image-1);
  --body-bg: #050505;
}

Do's and Don'ts

Do

  • Do reserve the accent #D8C2FF for interactive highlights and key moments — it is used sparingly on the source page.
  • Do keep the canvas at #050505; surfaces should stay within the detected neutral ramp.
  • Do set large headings in "Playfair Display", serif with tight tracking (-.08em), and body copy in the primary stack.
  • Do stick to the detected font weight(s): 400, 500, 600, 700, 800, 900.
  • Do align spacing to the 4px base unit derived from the page.

Don't

  • Don't introduce colors outside the detected palette — every hue above was found in the source.

Design Tokens (copy-paste)

:root {
  --color-background: #050505;
  --color-primary: #D8C2FF;
  --color-accent: #D8C2FF;
  --color-surface: #EFFBFF;
  --color-text-primary: #000000;
  --color-secondary: #000000;
  --color-text-secondary: #BFEEFF;
  --color-border: #EFFBFF;
  --color-on-primary: #000000;
  --color-on-secondary: #FFFFFF;
  --color-on-accent: #000000;
  --font-sans: 'Playfair Display';
  --font-size-display: 105.6px;
  --font-size-headline-lg: 36px;
  --font-size-headline-md: 30px;
  --font-size-body-lg: 18px;
  --font-size-body-md: 16px;
  --font-size-label-md: 14px;
  --font-size-label-sm: 12px;
  --radius-md: 8px;
  --radius-lg: 36px;
  --radius-pill: 9999px;
  --shadow-sm: 0 24px 90px rgba(0,0,0,.35), inset 0 1px 0 rgba(255,255,255,.16);
  --shadow-md: 0 28px 90px rgba(0,0,0,.46);
  --shadow-lg: 0 24px 100px rgba(0,0,0,.52), inset 0 1px 0 rgba(255,255,255,.16);
  --space-sm: 8px;
  --space-md: 16px;
  --space-lg: 32px;
  --space-xl: 56px;
  --font-display: "Playfair Display", serif;
  --tracking-display: -.08em;
  --tracking-label: .24em;
  --container-max: 900px;
}