Remixes of nove-nextjs-template.vercel.app
Latest remixes
No public remixes yet. Be the first to make one.
Remix itLatest remixes
No public remixes yet. Be the first to make one.
Remix itSwitch between the rendered Visual preview and the Raw DESIGN.md.
version: alpha
name: Nove-nextjs-template
description: |
Nove's design system embodies a refined, minimalist aesthetic rooted in
Italian craftsmanship and modern simplicity. The visual language prioritizes
clarity and elegance through restrained color use, generous whitespace, and
carefully weighted typography. Every element serves a functional purpose while
maintaining a sophisticated, premium character that reflects the precision of
espresso machine engineering. The system balances bold, commanding display
typography with delicate micro-interactions and subtle depth, creating an
environment where content and product photography breathe. The overall mood is
aspirational yet approachable—luxury without pretension, technology with a
human touch.
source:
url: "https://nove-nextjs-template.vercel.app/"
pagesAnalyzed: 2
extractedAt: 2026-11-07
tokensMeasured: true
typography:
display-xl:
fontFamily: Jost
fontSize: 72px
fontWeight: 500
lineHeight: 1
letterSpacing: -1.08px
display-lg:
fontFamily: Jost
fontSize: 60px
fontWeight: 500
lineHeight: 1.05
letterSpacing: -0.9px
display-lg-loose:
fontFamily: Jost
fontSize: 60px
fontWeight: 500
lineHeight: 1.25
letterSpacing: -0.9px
display-md:
fontFamily: Jost
fontSize: 48px
fontWeight: 500
lineHeight: 1
letterSpacing: -0.72px
heading-md:
fontFamily: Jost
fontSize: 30px
fontWeight: 500
lineHeight: 1.25
letterSpacing: -0.45px
heading-sm:
fontFamily: Jost
fontSize: 20px
fontWeight: 500
lineHeight: 1.38
letterSpacing: -0.3px
heading-xs:
fontFamily: Jost
fontSize: 14px
fontWeight: 600
lineHeight: 1.43
letterSpacing: 0px
body-xl:
fontFamily: Jost
fontSize: 20px
fontWeight: 400
lineHeight: 1.63
letterSpacing: 0px
body-xl-strong:
fontFamily: Jost
fontSize: 20px
fontWeight: 500
lineHeight: 1.63
letterSpacing: 0px
body-lg:
fontFamily: Jost
fontSize: 18px
fontWeight: 500
lineHeight: 1.25
letterSpacing: 0px
body-md:
fontFamily: Jost
fontSize: 16px
fontWeight: 400
lineHeight: 1.5
letterSpacing: 0px
body-sm:
fontFamily: Jost
fontSize: 14px
fontWeight: 400
lineHeight: 1.63
letterSpacing: 0px
body-sm-tight:
fontFamily: Jost
fontSize: 14px
fontWeight: 400
lineHeight: 1.43
letterSpacing: 0px
button:
fontFamily: Jost
fontSize: 14px
fontWeight: 500
lineHeight: 1.43
letterSpacing: 0px
caption-lg:
fontFamily: Jost
fontSize: 18px
fontWeight: 400
lineHeight: 1.56
letterSpacing: 0px
caption-md:
fontFamily: Jost
fontSize: 12px
fontWeight: 400
lineHeight: 1.38
letterSpacing: 0px
caption-md-strong:
fontFamily: Jost
fontSize: 12px
fontWeight: 500
lineHeight: 1.33
letterSpacing: 0px
code-xl:
fontFamily: "IBM Plex Mono"
fontSize: 60px
fontWeight: 400
lineHeight: 1
letterSpacing: -3px
code-xl-strong:
fontFamily: "IBM Plex Mono"
fontSize: 60px
fontWeight: 500
lineHeight: 1.05
letterSpacing: -1.5px
code-lg:
fontFamily: "IBM Plex Mono"
fontSize: 30px
fontWeight: 400
lineHeight: 1
letterSpacing: -0.75px
code-md:
fontFamily: "IBM Plex Mono"
fontSize: 14px
fontWeight: 400
lineHeight: 1.43
letterSpacing: 0px
code-sm:
fontFamily: "IBM Plex Mono"
fontSize: 12px
fontWeight: 400
lineHeight: 1.33
letterSpacing: 0px
code-sm-strong:
fontFamily: "IBM Plex Mono"
fontSize: 12px
fontWeight: 500
lineHeight: 1.33
letterSpacing: 0px
rounded:
none: 0px
xs: 7.2px
sm: 12px
md: 21.6px
lg: 26.4px
full: 9999px
spacing:
xxs: 4px
xs: 8px
sm: 12px
md: 16px
lg: 20px
xl: 24px
xxl: 32px
xxxl: 40px
section: 48px
band: 64px
borderWidths:
thin: 1px
shadows:
sm: "rgba(0, 0, 0, 0.1) 0px 10px 15px -3px, rgba(0, 0, 0, 0.1) 0px 4px 6px -4px"
md: "rgba(0, 0, 0, 0.05) 0px 1px 2px 0px"
lg: "rgba(0, 0, 0, 0.25) 0px 25px 50px -12px"
xl: "rgba(0, 0, 0, 0.1) 0px 4px 6px -1px, rgba(0, 0, 0, 0.1) 0px 2px 4px -2px"
elevationStrategy: layered-micro
themes:
derived: dark # the other theme is the site's measured palette
light:
bg: "#FFFFFF"
surface: "#F7F7F7"
surfaceRaised: "#EEEEEE"
text: "#111111"
textMuted: "#646464"
border: "#E2E2E2"
accent: "#111111"
accentFg: "#FFFFFF"
focusRing: "#111111"
elevation: shadow
dark:
bg: "#0F0F10"
surface: "#1D1D1E"
surfaceRaised: "#29292A"
text: "#F5F5F5"
textMuted: "#9E9E9E"
border: "#353536"
accent: "#818181"
accentFg: "#0B0B0C"
focusRing: "#636363"
elevation: "border+surface"
gradients:
- context: section
kind: linear
value: "linear-gradient(oklab(0.2 0.00253361 0.00544225 / 0.6) 0%, rgba(0, 0, 0, 0) 100%)"
- context: section
kind: radial
value: "radial-gradient(at 78% 100%, lab(17.6352 0.870228 2.09891) 0%, rgba(0, 0, 0, 0) 65%)"
components:
button-text:
textColor: "lab(7.22121 0.833631 1.86806)"
height: 52px
padding: "0px 32px 0px 32px"
fontSize: 16px
fontFamily: Jost
fontWeight: 500
lineHeight: 1.5
rounded: "3.35544e+07px"
backgroundColor: "lab(92.4776 0.341237 2.25915)"
button-text-2:
textColor: "lab(96.7639 0.224769 1.5044)"
height: 52px
padding: "0px 32px 0px 32px"
fontSize: 16px
fontFamily: Jost
fontWeight: 500
lineHeight: 1.5
rounded: "3.35544e+07px"
backgroundColor: "lab(7.22121 0.833631 1.86806)"
button-outline:
typography: "{typography.button}"
textColor: "lab(7.22121 0.833631 1.86806)"
border: "1px solid oklab(0.2 0.00253361 0.00544225 / 0.25)"
height: 44px
padding: "0px 20px 0px 24px"
rounded: "3.35544e+07px"
card:
typography: "{typography.body-md}"
textColor: "lab(7.22121 0.833631 1.86806)"
border: "1px solid lab(7.22121 0.833631 1.86806 / 0.11)"
padding: "40px 40px 40px 40px"
boxShadow: "rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0.05) 0px 1px 2px 0px"
rounded: "{rounded.lg}"
backgroundColor: "lab(99.078 0.111103 0.751424)"
card-lg:
typography: "{typography.body-md}"
textColor: "lab(7.22121 0.833631 1.86806)"
padding: "12px 12px 12px 12px"
rounded: "{rounded.lg}"
backgroundColor: "lab(92.4776 0.341237 2.25915)"
badge-text:
typography: "{typography.caption-md-strong}"
textColor: "lab(96.7639 0.224769 1.5044)"
height: 24px
padding: "2px 10px 2px 10px"
rounded: "3.35544e+07px"
backgroundColor: "lab(17.6352 0.870228 2.09891)"
badge-text-2:
typography: "{typography.code-sm-strong}"
textColor: "lab(96.7639 0.224769 1.5044)"
height: 24px
padding: "2px 10px 2px 10px"
boxShadow: "rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0.1) 0px 1px 3px 0px, rgba(0, 0, 0, 0.1) 0px 1px 2px -1px"
rounded: "3.35544e+07px"
backgroundColor: "lab(7.22121 0.833631 1.86806)"
navigation:
typography: "{typography.body-md}"
textColor: "lab(96.7639 0.224769 1.5044)"
footer:
typography: "{typography.body-md}"
textColor: "lab(7.22121 0.833631 1.86806)"
padding: "96px 20px 20px 20px"
link:
typography: "{typography.body-md}"
textColor: "lab(96.7639 0.224769 1.5044)"
rounded: "{rounded.sm}"
link-sm:
typography: "{typography.body-md}"
textColor: "lab(7.22121 0.833631 1.86806)"
rounded: "{rounded.md}"
states:
other-hover:
target: other
state: hover
opacity: 1
input-disabled:
target: input
state: disabled
opacity: 0.5
other-disabled:
target: other
state: disabled
opacity: 0.5
other-focus:
target: other
state: focus
rounded: "3.40282e+38px"
other-focus-visible:
target: other
state: focus-visible
outlineWidth: 1px
breakpoints:
- width: 375
containerWidth: 351
gridColumns: 4
navLinksVisible: 15
menuToggleVisible: true
headingPx: 36
bodyPx: 16
sectionPaddingX: 12
- width: 768
containerWidth: 728
gridColumns: 6
navLinksVisible: 15
menuToggleVisible: true
headingPx: 48
bodyPx: 16
sectionPaddingX: 20
- width: 1024
containerWidth: 984
gridColumns: 6
navLinksVisible: 19
menuToggleVisible: true
headingPx: 60
bodyPx: 16
sectionPaddingX: 20
- width: 1280
containerWidth: 1240
gridColumns: 4
navLinksVisible: 19
menuToggleVisible: true
headingPx: 60
bodyPx: 16
sectionPaddingX: 20
- width: 1440
containerWidth: 1400
gridColumns: 4
navLinksVisible: 19
menuToggleVisible: true
headingPx: 60
bodyPx: 16
sectionPaddingX: 20
coverage:
statesFound: 43
gradientsFound: 2
rolesUnassigned: 0
archetypesUnnamed: 0
archetypesDetected: 0
responsiveMeasured: true
stylesheetsBlocked: false
semanticRampDeclared: false
Nove's design system embodies a refined, minimalist aesthetic rooted in Italian craftsmanship and modern simplicity. The visual language prioritizes clarity and elegance through restrained color use, generous whitespace, and carefully weighted typography. Every element serves a functional purpose while maintaining a sophisticated, premium character that reflects the precision of espresso machine engineering. The system balances bold, commanding display typography with delicate micro-interactions and subtle depth, creating an environment where content and product photography breathe. The overall mood is aspirational yet approachable—luxury without pretension, technology with a human touch.
Key Characteristics
lab(17.6352 0.870228 2.09891)): Deep warm brown used for hero badges, accent text, and high-impact call-to-action elements; represents the coffee brand's warmth and authenticity.lab(7.22121 0.833631 1.86806)): Near-black, used for button text, card backgrounds, and primary body copy; the system's dominant foreground color for maximum contrast and readability.lab(92.4776 0.341237 2.25915)): Light warm gray, used for secondary button fills and contained card backgrounds; provides subtle visual hierarchy.lab(99.078 0.111103 0.751424)): Off-white with minimal warm cast, serves as the default page and card surface; ensures legibility while maintaining warmth.lab(96.7639 0.224769 1.5044)): Soft near-white used for text on dark backgrounds (dark buttons, badges) and secondary UI elements.oklab(0.2 0.00253361 0.00544225 / 0.25)): Ultra-light transparent dark tint for subtle dividing lines and card borders; maintains visual separation without harshness.var(--ring)): Not explicitly extracted; see Known Gaps.Primary: Jost (sans-serif) — a geometric, humanist typeface that conveys both modernity and approachability.
Fallback stack: Jost, system-ui, -apple-system, sans-serif
Secondary / Code: IBM Plex Mono — a fixed-width face for technical or product specification display.
Fallback stack: IBM Plex Mono, Menlo, Courier New, monospace
| Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
|---|---|---|---|---|---|---|
| Display Extra Large | Jost | 72px | 500 | 1 | -1.08px | {typography.display-xl} Hero statements, primary h1 |
| Display Large | Jost | 60px | 500 | 1.05 | -0.9px | {typography.display-lg} Major section headers, h2 |
| Display Large (Loose) | Jost | 60px | 500 | 1.25 | -0.9px | {typography.display-lg-loose} Alternative large h1 spacing |
| Display Medium | Jost | 48px | 500 | 1 | -0.72px | {typography.display-md} Section headers, h3 |
| Heading Medium | Jost | 30px | 500 | 1.25 | -0.45px | {typography.heading-md} Card titles, subsection headers |
| Heading Small | Jost | 20px | 500 | 1.38 | -0.3px | {typography.heading-sm} Feature labels, callout headers |
| Heading Extra Small | Jost | 14px | 600 | 1.43 | 0px | {typography.heading-xs} Badge text, micro-labels |
| Body Extra Large | Jost | 20px | 400 | 1.63 | 0px | {typography.body-xl} Large body copy, intro paragraphs |
| Body Extra Large (Strong) | Jost | 20px | 500 | 1.63 | 0px | {typography.body-xl-strong} Emphasized body text |
| Body Large | Jost | 18px | 500 | 1.25 | 0px | {typography.body-lg} Feature descriptions, highlighted body |
| Body Medium | Jost | 16px | 400 | 1.5 | 0px | {typography.body-md} Standard body copy, form labels |
| Body Small | Jost | 14px | 400 | 1.63 | 0px | {typography.body-sm} Secondary text, helper copy |
| Body Small (Tight) | Jost | 14px | 400 | 1.43 | 0px | {typography.body-sm-tight} Link text, dense body |
| Caption Large | Jost | 18px | 400 | 1.56 | 0px | {typography.caption-lg} Photo credits, large captions |
| Caption Medium | Jost | 12px | 400 | 1.38 | 0px | {typography.caption-md} Footnotes, meta information |
| Caption Medium (Strong) | Jost | 12px | 500 | 1.33 | 0px | {typography.caption-md-strong} Emphasized captions, badge labels |
| Button | Jost | 14px | 500 | 1.43 | 0px | {typography.button} Call-to-action text |
| Code Extra Large | IBM Plex Mono | 60px | 400 | 1 | -3px | {typography.code-xl} Display code/specifications |
| Code Extra Large (Strong) | IBM Plex Mono | 60px | 500 | 1.05 | -1.5px | {typography.code-xl-strong} Emphasized large code |
| Code Large | IBM Plex Mono | 30px | 400 | 1 | -0.75px | {typography.code-lg} Heading-level code |
| Code Medium | IBM Plex Mono | 14px | 400 | 1.43 | 0px | {typography.code-md} Inline code, specifications |
| Code Small | IBM Plex Mono | 12px | 400 | 1.33 | 0px | {typography.code-sm} Captions, micro code |
| Code Small (Strong) | IBM Plex Mono | 12px | 500 | 1.33 | 0px | {typography.code-sm-strong} Emphasized small code |
Primary Button (dark background, light text, pill-shaped)
lab(7.22121 0.833631 1.86806) (near-black)lab(92.4776 0.341237 2.25915) (light warm gray)0px 32px (horizontal), 0px vertical52px{typography.button} (14px, weight 500, line-height 1.43)1px solid rgba(0, 0, 0, 0) (no visible border){rounded.full} (pill shape, 9999px)none203pxlab(96.7639 0.224769 1.5044), background becomes color-mix(in oklab, lab(7.22121 0.833631 1.86806) 85%, transparent)Secondary Button (light background, dark text, pill-shaped)
lab(92.4776 0.341237 2.25915) (light warm gray)lab(7.22121 0.833631 1.86806) (near-black)0px 32px, 0px vertical52px{typography.button} (14px, weight 500, line-height 1.43)1px solid rgba(0, 0, 0, 0) (no visible border){rounded.full} (pill shape, 9999px)none218pxcolor-mix(in oklab, lab(92.4776 0.341237 2.25915) 85%, transparent)Ghost / Outline Button (transparent background, dark border, pill-shaped)
rgba(0, 0, 0, 0) (transparent)lab(7.22121 0.833631 1.86806) (near-black)0px 20px to 0px 24px, 0px vertical44px{typography.button} (14px, weight 500, line-height 1.43)1px solid oklab(0.2 0.00253361 0.00544225 / 0.25) (subtle dark hairline){rounded.full} (pill shape, 9999px)none174pxcolor-mix(in oklab, oklab(0.2 0.00253361 0.00544225 / 0.25) 60%, transparent), text remains darkStandard Card (light background, subtle border, soft shadow)
lab(99.078 0.111103 0.751424) (off-white)lab(7.22121 0.833631 1.86806) (near-black){spacing.xxxl} (40px all sides){typography.body-md} (16px, weight 400, line-height 1.5)1px solid lab(7.22121 0.833631 1.86806 / 0.11) (ultra-light dark hairline){rounded.lg} (26.4px)rgba(0, 0, 0, 0.05) 0px 1px 2px 0px (micro elevation, md tier)630px660pxLarge Card / Container (light background, no border, flat)
lab(92.4776 0.341237 2.25915) (light warm gray)lab(7.22121 0.833631 1.86806) (near-black){spacing.sm} (12px all sides){typography.body-md} (16px, weight 400, line-height 1.5)0px solid lab(7.22121 0.833631 1.86806 / 0.11) (no border){rounded.lg} (26.4px)none1400px860pxText Input / Form Field (light background, subtle border, focus state)
lab(99.078 0.111103 0.751424) (off-white)lab(7.22121 0.833631 1.86806) (near-black)1px solid oklab(0.2 0.00253361 0.00544225 / 0.25) (subtle hairline){rounded.sm} (12px){spacing.md} (16px) horizontally, {spacing.sm} (12px) vertically{typography.body-md} (16px, weight 400, line-height 1.5)color-mix(in oklab, var(--input) 40%, transparent)var(--primary) or var(--ring) with outline 1px; box-shadow includes focus ring0.5Navigation Bar (horizontal menu, transparent background)
rgba(0, 0, 0, 0) (transparent)lab(96.7639 0.224769 1.5044) (soft near-white, dark theme compatible)0px all sides{typography.body-md} (16px, weight 400, line-height 1.5)0px solid lab(96.7639 0.224769 1.5044 / 0.14) (no visible border){rounded.none} (0px)none732.656px206pxvar(--foreground), background becomes var(--muted) or var(--secondary) with color-mix(in oklab, var(--secondary), var(--foreground) 5%) or opacity 0.5Solid Badge (dark background, light text, pill-shaped)
lab(7.22121 0.833631 1.86806) (near-black)lab(96.7639 0.224769 1.5044) (soft near-white)2px 10px (horizontal), 2px vertical24px{typography.caption-md-strong} (12px, weight 500, line-height 1.33)1px solid rgba(0, 0, 0, 0) (no visible border){rounded.full} (pill shape, 9999px)rgba(0, 0, 0, 0.1) 0px 1px 3px 0px, rgba(0, 0, 0, 0.1) 0px 1px 2px -1px (subtle sm tier elevation)71pxAccent Badge (warm brown background, light text, pill-shaped)
lab(17.6352 0.870228 2.09891) (deep warm brown)lab(96.7639 0.224769 1.5044) (soft near-white)2px 10px (horizontal), 2px vertical24px{typography.caption-md-strong} (12px, weight 500, line-height 1.33)1px solid rgba(0, 0, 0, 0) (no visible border){rounded.full} (pill shape, 9999px)none87pxText Link (transparent background, light text)
rgba(0, 0, 0, 0) (transparent)lab(96.7639 0.224769 1.5044) (soft near-white)0px all sides{typography.body-sm-tight} (14px, weight 400, line-height 1.43)0px solid lab(96.7639 0.224769 1.5044 / 0.14) (no border){rounded.sm} (12px)none240px165pxvar(--foreground), background becomes var(--muted) or var(--secondary) with color-mix(in oklab, var(--secondary) 80%, transparent), or color becomes var(--primary)var(--foreground), border-radius may expand to pillSecondary Link (transparent background, dark text)
rgba(0, 0, 0, 0) (transparent)lab(7.22121 0.833631 1.86806) (near-black)0px all sides{typography.body-md} (16px, weight 400, line-height 1.5)0px solid lab(7.22121 0.833631 1.86806 / 0.11) (no border){rounded.md} (21.6px)none364px126pxvar(--muted-foreground) or remains dark; background may become var(--background)Footer (light background, minimal border)
rgba(0, 0, 0, 0) (transparent)lab(7.22121 0.833631 1.86806) (near-black)96px 20px 20px 20px (top-left-right-bottom){typography.body-md} (16px, weight 400, line-height 1.5)0px solid lab(7.22121 0.833631 1.86806 / 0.11) (no border){rounded.none} (0px)none1440px1328.72px (full height) or 895px (compact)The spacing system uses a base unit of 4px ({spacing.xxs}), with a multiplied scale for logical rhythm:
{spacing.xxs} = 4px — internal component padding, micro-gaps{spacing.xs} = 8px — small component spacing, tight button groups{spacing.sm} = 12px — form field padding, section dividers{spacing.md} = 16px — standard gap between elements, inline lists, primary padding{spacing.lg} = 20px — section headers, card spacing within containers{spacing.xl} = 24px — contained section padding, large component gaps{spacing.xxl} = 32px — card interior padding, major block spacing{spacing.xxxl} = 40px — hero section padding, large card margins{spacing.section} = 48px — vertical rhythm for content sections{spacing.band} = 64px — large section dividers, full-bleed spacingUsage Context:
{spacing.md} to {spacing.lg}{spacing.xxxl} (40px){spacing.section} to {spacing.band}{spacing.md} to {spacing.xl} depending on viewport{spacing.sm} (12px) at 375px; {spacing.xl} (20px) at 768px+The system embraces negative space as a design element. Large expanses of off-white canvas (lab(99.078 0.111103 0.751424)) surround content, allowing photography and typography to command attention. Sections are separated by full-height band spacing ({spacing.band} — 64px), giving breathing room between concepts. Cards and containers themselves add padding ({spacing.xxxl} — 40px) around interior content, creating a layered sense of containment without visual clutter. Text is never crowded; line-height is generous (1.5–1.63 for body), and display copy is surrounded by silent space to amplify impact.
All border-radius values as measured:
{rounded.none} = 0px — footer, navigation, full-bleed sections (sharp edges){rounded.xs} = 7.2px — button corners (tight curve, pill-adjacent){rounded.sm} = 12px — link corners, form fields, containers (gentle curve){rounded.md} = 21.6px — card corners, secondary links (moderate roundness){rounded.lg} = 26.4px — primary card corners, overlay surfaces (strong roundness, approaching pill){rounded.full} = 9999px — buttons, badges, avatars (perfect pill/circle shape)1px — card borders, input borders, button ghost states, form dividersThe system uses a layered-micro elevation strategy: depth emerges from stacked, near-transparent shadows rather than dramatic chiaroscuro. Multiple shadow layers create barely-there lift, preserved through careful color blending and opacity modulation.
| Level | Treatment | Use |
|---|---|---|
| Flat | No shadow | Navigation, footer, large containers, text-only sections |
| Micro (md) | rgba(0, 0, 0, 0.05) 0px 1px 2px 0px | Standard card surfaces, contained components |
| Small (sm) | rgba(0, 0, 0, 0.1) 0px 10px 15px -3px, rgba(0, 0, 0, 0.1) 0px 4px 6px -4px | Elevated cards, floating elements, badge emphasis |
| Large (lg) | rgba(0, 0, 0, 0.25) 0px 25px 50px -12px | Navigation dropdowns, modals, overlays (reserved) |
| Extra Large (xl) | rgba(0, 0, 0, 0.1) 0px 4px 6px -1px, rgba(0, 0, 0, 0.1) 0px 2px 4px -2px | Dropdown menus, floating tooltips |
Shadow Philosophy: Shadows are intentionally subtle because the system's depth comes primarily from color-blocking (light cards on light canvas, dark text on light backgrounds) and spatial separation (generous padding, section breaks). When shadows do appear, they serve to:
The dominant aesthetic is flat with micro-texture: the eye reads depth through adjacency and color relationships, not dramatic shadow depth.
Two opacity levels are measured for interactive states:
0.5) — disabled form inputs, disabled buttons, deprioritized text0.25) — subtle borders (hairlines with dark color at reduced opacity), overlay masksThe stacking order (ascending):
10, 20, 30, 40 for cascading dropdowns and layered navigation-0.9px to -1.08px) on all display sizes (48px+). This tightens the letterforms and creates visual drama; omitting it makes headlines feel loose and unrefined.{rounded.full}) for all primary CTAs and badges. The 9999px border-radius is a systemic identifier.lab(17.6352 0.870228 2.09891)) sparingly for hero badges and product highlights. Overuse dilutes impact; reserve it for moments of emphasis.lab(7.22121 0.833631 1.86806) on lab(99.078 0.111103 0.751424)). This is the system's default text-on-canvas pairing; it ensures readability and premium feel.{rounded.xs} (7.2px) on interactive elements. Buttons, badges, and inputs must feel intentional; sharp corners (0px) make them appear harsh or broken.lab(92.4776 0.341237 2.25915)) as body text. It lacks sufficient contrast; reserve it for button fills and secondary surfaces.{spacing.sm} (12px) padding-x to prevent text from touching screen edges.0px makes headlines feel generic.{ring} focus-visible borders and opacity changes; preserve them for accessibility.| Viewport | Content Width | Grid Columns | Nav Links Visible | Heading Size | Body Font | Section Padding-X |
|---|---|---|---|---|---|---|
| 375px | 351px | 4 | 15 | 36px | 16px | 12px |
| 768px | 728px | 6 | 15 | 48px | 16px | 20px |
| 1024px | 984px | 6 | 19 | 60px | 16px | 20px |
| 1280px | 1240px | 4 | 19 | 60px | 16px | 20px |
| 1440px | 1400px | 4 | 19 | 60px | 16px | 20px |
Breakpoint Thresholds (inferred from measured data):
Key Changes:
36px (375px) → 48px (768px) → 60px (1024px+){spacing.sm} (12px) to {spacing.xl} (20px) at 768px and holds thereafterMinimum interactive element sizes on touch devices:
{spacing.md} (16px) horizontal gap, {spacing.sm} (12px) vertical gap{typography.display-xl} (72px) on desktop to {typography.display-lg} (60px) at tablet, then to {typography.display-md} (48px) on mobile. Body text remains stable at {typography.body-md} (16px) across all viewports.{spacing.xl} (20px) to {spacing.sm} (12px) at 375px; padding-y remains consistent ({spacing.section} / {spacing.band}).Use these colors to implement any UI component:
lab(7.22121 0.833631 1.86806) — dark near-black for foreground, button text, card backgroundslab(92.4776 0.341237 2.25915) — light warm gray for secondary buttons and contained surfaceslab(99.078 0.111103 0.751424) — off-white for cards, sections, default surfacelab(17.6352 0.870228 2.09891) — deep warm brown for emphasis, calls-to-action, accent elementslab(96.7639 0.224769 1.5044) — soft near-white for text on dark backgroundsoklab(0.2 0.00253361 0.00544225 / 0.25) — ultra-light transparent dark for 1px dividing linesStart with Jost for all typography. Every heading, body, button, and link uses Jost unless it is code/specification (IBM Plex Mono). Fallback to system-ui if Jost is unavailable.
Apply negative letter-spacing on display sizes (48px and above). Use the exact values from the Typography Hierarchy table: -0.9px for 60px headlines, -1.08px for 72px, -0.72px for 48px. Do not round or omit.
Build all buttons as pills with {rounded.full} (9999px). Primary buttons use dark backgrounds (lab(7.22121 0.833631 1.86806)) with light text; secondary buttons invert this. Ghost buttons use transparent background with dark border and text.
Use 40px padding inside cards and major containers ({spacing.xxxl}). Never crowd content; generous internal whitespace is the system's defining luxury trait.
Layer shadows carefully. Standard cards use micro-shadow (rgba(0, 0, 0, 0.05) 0px 1px 2px 0px); elevated cards use small-shadow. Do not stack multiple shadows on normal elements.
Maintain responsive typography. At 375px, use 36px headlines; at 768px, switch to 48px; at 1024px+, use 60px or 72px. Do not interpolate between sizes; jump to the next role in the hierarchy.
Reserve the brown accent (lab(17.6352 0.870228 2.09891)) for high-impact moments. Use it on hero badges, accent links, or primary CTAs where it will draw attention. Overuse dilutes effect.
Preserve focus states. All interactive elements must have :focus-visible styles using var(--ring) border color and appropriate box-shadow. Do not remove or override them.
Scale spacing from the base unit (4px). Use {spacing.md} (16px) as the default gap; double to {spacing.lg} (20px) or {spacing.xl} (24px) for major sections. Never use arbitrary pixel values.
Test at 375px, 768px, and 1024px minimum. The system is optimized for these three breakpoints; content must adapt correctly (text size, column count, padding). At mobile, ensure section padding-x is at least {spacing.sm} (12px).
Semantic color roles (error, success, warning, info): The extracted site does not declare these states in its markup. No error-red, success-green, or warning-yellow palette exists in the system. If these states are needed, they must be designed and added separately.
Dark mode / theme variants: The extraction measured a light theme only. No dark-mode CSS custom properties or alternate palettes were detected. If dark-mode is required, it must be designed from first principles.
Interaction states beyond :hover, :focus, :focus-visible, :disabled: The system declares button/link hover effects and focus rings, but does not expose :active, :pressed, or :aria-selected states. If fine-grained interaction feedback is needed (e.g., active link underlines, pressed button styling), these must be inferred or added.
Animation / transition timing: No CSS transition, animation, or duration values were extracted. The system may have animations, but they are not declared in the measured styles. Assume interactions are instantaneous unless explicitly designed otherwise.
Specific focus ring appearance: The :focus-visible rules use var(--ring) as a CSS custom property variable, but its actual color value was not extracted. The ring behavior is present (border-color change, box-shadow) but the exact visual appearance depends on runtime CSS variable resolution. Recommend defining --ring as a high-contrast color (e.g., a saturated accent or outline) during implementation.
Form field error / warning states: Input and form components do not expose error-state styling in the extraction. Disabled state (opacity 0.5) is present, but invalid/error/warning variants are not measured.
Spatial / container query behavior: No CSS @container rules or container-query breakpoints were detected. Responsive behavior is viewport-based only.
Print styles or media queries: No @media print or print-specific styles were extracted.
Gradients and decorative fills (measured but not integrated into component roles): Two gradient definitions were extracted:
linear-gradient(oklab(0.2 0.00253361 0.00544225 / 0.6) 0%, rgba(0, 0, 0, 0) 100%)radial-gradient(at 78% 100%, lab(17.6352 0.870228 2.09891) 0%, rgba(0, 0, 0, 0) 65%)These appear to be background decorations for sections or hero areas but are not formally assigned to a component role. Assume they are used as layered overlays on hero images or full-bleed sections; implement as needed for visual polish.
Surfaces behind authentication / restricted content: The extraction covers 2 public pages. Behind-login pages, account dashboards, admin interfaces, or gated features were not analyzed and may have design patterns not reflected in this document.
Keyboard shortcut or accessibility feature styling: No :disabled, :aria-* attribute selectors, or keyboard-specific styles (e.g., outline-offset) were extracted. Standard focus-visible treatment is present, but advanced a11y patterns are not measured.
Icon sizing and styling: No icon components or icon sets were extracted. The system references icons (e.g., in navigation, on the bag button) but does not declare their sizing, color, or weight. Assume icons scale with adjacent text and inherit foreground color.
Component size variants (small, medium, large buttons, etc.): Only primary (52px height), secondary (52px height), and ghost (44px height) button variants were measured. No sm or lg button sizes were extracted; assume these three sizes cover the system's needs.