Design system extracted from https://exoflora-luxury.aura.build/ on 2026-07-20 (code-based analysis).
— · card padding: ——0% { opacity: 0; transform: translateY(28px); filter: blur(12px); } 100% { opacity: 1; transform: translateY(0); filter: blur(0); }
0% { opacity: 0; transform: translateY(20px); } 100% { opacity: 1; transform: translateY(0); }
0% { transform: scale(1.12); } 100% { transform: scale(1); }
from { transform: translateX(0); } to { transform: translateX(-50%); }
to { transform: scale(1); opacity: .1; }
to { transform: translate(-50%, -50%) scale(1); opacity: .38; }
to { opacity: 1; }
to { transform: translateY(0); opacity: 1; filter: blur(0); }
to { transform: translateX(100%); }
| Field | Value |
|---|---|
| Site / Project | https://exoflora-luxury.aura.build/ |
| Analyzed on | 2026-07-20 |
| Analysis mode | Automated code extraction (no AI) |
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.
| Hex | RGB | HSL | Count |
|---|---|---|---|
#FFFFFF | 255, 255, 255 | 0° 0% 100% | 101 |
#000000 | 0, 0, 0 | 0° 0% 0% | 65 |
#BFEEFF | 191, 238, 255 | 196° 100% 87% | 51 |
#030303 | 3, 3, 3 | 0° 0% 1% | 6 |
#050505 | 5, 5, 5 | 0° 0% 2% | 4 |
#D8C2FF | 216, 194, 255 | 262° 100% 88% | 4 |
#070707 | 7, 7, 7 | 0° 0% 3% | 2 |
#EFFBFF | 239, 251, 255 | 195° 100% 97% | 1 |
Roles are taken from the page's own semantic CSS custom properties when present, otherwise inferred from usage frequency + luminance/saturation.
| Token | Hex | RGB | HSL |
|---|---|---|---|
--color-background | #050505 | 5, 5, 5 | 0° 0% 2% |
--color-primary | #D8C2FF | 216, 194, 255 | 262° 100% 88% |
--color-accent | #D8C2FF | 216, 194, 255 | 262° 100% 88% |
--color-surface | #EFFBFF | 239, 251, 255 | 195° 100% 97% |
--color-text-primary | #000000 | 0, 0, 0 | 0° 0% 0% |
--color-secondary | #000000 | 0, 0, 0 | 0° 0% 0% |
--color-text-secondary | #BFEEFF | 191, 238, 255 | 196° 100% 87% |
--color-border | #EFFBFF | 239, 251, 255 | 195° 100% 97% |
--color-on-primary | #000000 | 0, 0, 0 | 0° 0% 0% |
--color-on-secondary | #FFFFFF | 255, 255, 255 | 0° 0% 100% |
--color-on-accent | #000000 | 0, 0, 0 | 0° 0% 0% |
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%)`
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 14% 38%, rgba(216,194,255,.055), transparent 38%),
linear-gradient(180deg, #050505 0%, #070707 42%, #030303 100%)`
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)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(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.
Primary typeface: Playfair Display — stack: 'Playfair Display'
Display / heading typeface: "Playfair Display", serif (used for large headings; body uses the primary stack)
'Playfair Display'"Playfair Display", serif"Inter", sans-serif"Playfair Display", serif !important'Playfair Display', serif !important| Token | Size |
|---|---|
| display | 105.6px |
| headline-lg | 36px |
| headline-md | 30px |
| body-lg | 18px |
| body-md | 16px |
| label-md | 14px |
| label-sm | 12px |
| Size | Count |
|---|---|
| 10px | 8 |
| 11px | 7 |
| 13px | 3 |
| 15px | 3 |
| 12px | 2 |
| 48px | 2 |
| 60px | 2 |
| 16px | 2 |
| 18px | 2 |
| 46px | 1 |
| 28px | 1 |
| 44px | 1 |
| 24px | 1 |
| 9px | 1 |
| 14px | 1 |
| 72px | 1 |
| 6.6rem | 1 |
| 36px | 1 |
| 4.6rem | 1 |
| 30px | 1 |
Weights in use: 400, 500, 600, 700, 800, 900
| Value | Count |
|---|---|
| 1 | 4 |
| .86 | 3 |
| .82 | 3 |
| 1.65 | 2 |
| .83 | 1 |
| 1.45 | 1 |
| 1.7 | 1 |
| .75 | 1 |
| 1.55 | 1 |
| 1.75 | 1 |
| Value | Count |
|---|---|
| .24em | 6 |
| .26em | 5 |
| -.08em | 4 |
| -.055em | 4 |
| -.075em | 3 |
| -.05em | 2 |
| .2em | 2 |
| -0.02em | 1 |
| Token | Value |
|---|---|
| unit | 4px |
| sm | 8px |
| md | 16px |
| lg | 32px |
| xl | 56px |
| Value | Count |
|---|---|
| 20px | 9 |
| 8px | 7 |
| 28px | 7 |
| 16px | 6 |
| 14px | 5 |
| 18px | 5 |
| 12px | 5 |
| 24px | 5 |
| 48px | 5 |
| 40px | 4 |
| 32px | 4 |
| 110px | 3 |
| 112px | 3 |
| 56px | 3 |
| 30px | 2 |
| 22px | 2 |
| Token | Value |
|---|---|
| md | 8px |
| lg | 36px |
| pill | 9999px |
| Radius | Count |
|---|---|
999px | 8 |
30px | 2 |
8px | 1 |
36px | 1 |
26px | 1 |
28px | 1 |
34px | 1 |
9999px | 1 |
| Token | Value |
|---|---|
| sm | 0 24px 90px rgba(0,0,0,.35), inset 0 1px 0 rgba(255,255,255,.16) |
| md | 0 28px 90px rgba(0,0,0,.46) |
| lg | 0 24px 100px rgba(0,0,0,.52), inset 0 1px 0 rgba(255,255,255,.16) |
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)Container max-width: 900px
Grid columns (largest detected grid): 5
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 easetransform .55s cubic-bezier(.16,1,.3,1), border-color .55s ease, background .55s easeopacity .9s cubic-bezier(.16,1,.3,1), visibility .9s easeopacity .8s cubic-bezier(.16,1,.3,1),
background .45s ease,
border-color .45s ease`
cubic-bezier(.16,1,.3,1)cubic-bezier(.16,1,.3,1)cubic-bezier(0.4, 0, 0.2, 1)@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); } }
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) forwardsExtracted from the page's own interactive elements (classes → resolved CSS values).
| Property | Value |
|---|---|
| rounded | 9999px |
| backgroundColor | #FFFFFF |
| fontSize | 14px |
| fontWeight | 600 |
| textColor | #000000 |
| padding | 8px 16px |
| Property | Value |
|---|---|
| rounded | 9999px |
| fontSize | 14px |
| fontWeight | 600 |
| textColor | #FFFFFF |
| padding | 10px 20px |
| border | 1px solid currentColor |
| transition | all 300ms cubic-bezier(0.4, 0, 0.2, 1) |
| Property | Value |
|---|---|
| rounded | 9999px |
| fontSize | 14px |
| fontWeight | 500 |
| padding | 8px 16px |
| transition | color, background-color, border-color 150ms cubic-bezier(0.4, 0, 0.2, 1) |
| textColor (hover) | #FFFFFF |
| Property | Value |
|---|---|
| rounded | 9999px |
| padding | 8px 8px |
| border | 1px solid currentColor |
blur(18px)blur(16px):root {
--card-y: 42px;
--frame-img: var(--story-image-1);
--body-bg: #050505;
}
Do
#D8C2FF for interactive highlights and key moments — it is used sparingly on the source page.#050505; surfaces should stay within the detected neutral ramp."Playfair Display", serif with tight tracking (-.08em), and body copy in the primary stack.Don't
: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;
}