Remixes of www.noovolife.com
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: Noovolife
description: |
Noovo's design system embodies premium adventure and modern comfort, grounded
in warm, approachable tones and clean geometric forms. The brand balances
aspiration with accessibility—layered photography with dark overlays creates
cinematic hero moments, while generous whitespace and soft neutrals prevent
the aesthetic from feeling cold or corporate. Typography is deliberately
generous and contemporary, favouring tight letter-spacing on large display
sizes to convey sophistication. The system prioritizes the Noovo product
(camper vans) as the hero, allowing photography and human storytelling to
drive emotion, while UI elements remain restrained and functional. Depth is
achieved through color blocking rather than heavy shadows, and the primary
brand accent (#FFAC00) acts as a vital call-to-action signifier against the
warm neutral palette.
source:
url: "https://www.noovolife.com/"
pagesAnalyzed: 6
extractedAt: 2026-10-30
tokensMeasured: true
colors:
primary: "#FFAC00"
canvas: "#F9F7F4"
surface-alt: "#FFFFFF"
on-primary: "#131211"
ink: "#000000"
body: "#131211"
muted: "#333333"
faint: "#6F6E6C"
hairline: "#E5E7EB"
neutral-1: "#B4B4B4"
typography:
display-xl:
fontFamily: generalFont
fontSize: 70px
fontWeight: 400
lineHeight: 0.9
letterSpacing: -2.8px
display-lg:
fontFamily: generalFont
fontSize: 60px
fontWeight: 400
lineHeight: 1
letterSpacing: -2.5px
display-lg-2:
fontFamily: generalFont
fontSize: 60px
fontWeight: 400
lineHeight: 1
letterSpacing: -2.4px
display-lg-strong:
fontFamily: generalFont
fontSize: 60px
fontWeight: 500
lineHeight: 1
letterSpacing: 0px
display-md:
fontFamily: generalFont
fontSize: 46px
fontWeight: 400
lineHeight: 1
letterSpacing: -1.84px
display-sm:
fontFamily: generalFont
fontSize: 40px
fontWeight: 400
lineHeight: 1.1
letterSpacing: -2.5px
heading-md:
fontFamily: GeneralSans
fontSize: 36px
fontWeight: 400
lineHeight: 1
letterSpacing: -1.44px
heading-md-strong:
fontFamily: generalFont
fontSize: 36px
fontWeight: 500
lineHeight: 1
letterSpacing: -2.5px
heading-md-tight:
fontFamily: generalFont
fontSize: 36px
fontWeight: 500
lineHeight: 1.11
letterSpacing: -1.8px
heading-sm:
fontFamily: generalFont
fontSize: 35px
fontWeight: 400
lineHeight: 1.03
letterSpacing: -1.75px
heading-xs:
fontFamily: generalFont
fontSize: 30px
fontWeight: 400
lineHeight: 1
letterSpacing: -1px
heading-xs-strong:
fontFamily: generalFont
fontSize: 30px
fontWeight: 500
lineHeight: 1
letterSpacing: -1px
body-xl:
fontFamily: generalFont
fontSize: 20px
fontWeight: 400
lineHeight: 1.3
letterSpacing: 0px
body-xl-tight:
fontFamily: generalFont
fontSize: 20px
fontWeight: 400
lineHeight: 1.3
letterSpacing: -0.4px
body-xl-strong:
fontFamily: generalFont
fontSize: 20px
fontWeight: 500
lineHeight: 1.3
letterSpacing: -0.4px
body-lg:
fontFamily: generalFont
fontSize: 16px
fontWeight: 500
lineHeight: 1.5
letterSpacing: 0px
body-md:
fontFamily: generalFont
fontSize: 14px
fontWeight: 400
lineHeight: 1.29
letterSpacing: 0px
body-md-strong:
fontFamily: generalFont
fontSize: 14px
fontWeight: 500
lineHeight: 1.29
letterSpacing: 0px
button-md:
fontFamily: generalFont
fontSize: 16px
fontWeight: 500
lineHeight: 1.31
letterSpacing: -0.32px
button-sm:
fontFamily: generalFont
fontSize: 14px
fontWeight: 500
lineHeight: 1.07
letterSpacing: -0.28px
label-md:
fontFamily: generalFont
fontSize: 16px
fontWeight: 400
lineHeight: 1.5
letterSpacing: 0px
label-md-strong:
fontFamily: generalFont
fontSize: 16px
fontWeight: 500
lineHeight: 1.25
letterSpacing: 0px
label-sm:
fontFamily: GeneralSans
fontSize: 14px
fontWeight: 400
lineHeight: 1.5
letterSpacing: -0.7px
caption-md:
fontFamily: generalFont
fontSize: 12px
fontWeight: 400
lineHeight: 1.5
letterSpacing: 0px
caption-md-strong:
fontFamily: generalFont
fontSize: 12px
fontWeight: 500
lineHeight: 1.33
letterSpacing: -0.24px
caption-md-tight:
fontFamily: generalFont
fontSize: 12px
fontWeight: 500
lineHeight: 1.33
letterSpacing: 0px
caption-sm:
fontFamily: generalFont
fontSize: 11px
fontWeight: 400
lineHeight: 1.5
letterSpacing: 0px
caption-xs:
fontFamily: GeneralSans
fontSize: 10px
fontWeight: 400
lineHeight: 1.5
letterSpacing: -0.2px
rounded:
none: 0px
xs: 2px
sm: 10px
md: 15px
lg: 20px
full: 9999px
spacing:
xxs: 4px
xs: 8px
sm: 12px
md: 16px
lg: 20px
xl: 32px
xxl: 36px
xxxl: 40px
section: 52px
band: 60px
borderWidths:
thin: 1px
shadows:
sm: "rgba(0, 0, 0, 0.05) 0px 1px 2px 0px"
md: "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: "#F9F7F4"
surface: "#FFFFFF"
surfaceRaised: "#F5F5F5"
text: "#000000"
textMuted: "#131211"
border: "#E5E7EB"
accent: "#C28300"
accentFg: "#000000"
focusRing: "#FFAC00"
elevation: shadow
dark:
bg: "#161109"
surface: "#241F18"
surfaceRaised: "#302B24"
text: "#FFFCF5"
textMuted: "#A6A39B"
border: "#3B3730"
accent: "#FFAC00"
accentFg: "#0B0B0C"
focusRing: "#FFAC00"
elevation: "border+surface"
gradients:
- context: hero
kind: linear
value: "linear-gradient(rgba(0, 0, 0, 0) 40%, rgba(0, 0, 0, 0.7) 100%)"
- context: hero
kind: linear
value: "linear-gradient(45deg, rgb(0, 0, 0) 0%, rgba(0, 0, 0, 0) 30%)"
- context: hero
kind: linear
value: "linear-gradient(rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0) 100%)"
- context: section
kind: linear
value: "linear-gradient(rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.3))"
- context: section
kind: linear
value: "linear-gradient(rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.5) 50%)"
- context: section
kind: linear
value: "linear-gradient(230deg, rgba(0, 0, 0, 0) 50%, rgba(0, 0, 0, 0.8) 100%)"
components:
button-primary:
typography: "{typography.label-sm}"
textColor: "{colors.body}"
border: "1px solid {colors.primary}"
height: 55px
padding: "0px 25px 0px 20px"
boxShadow: "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.full}"
backgroundColor: "{colors.primary}"
button-filled:
typography: "{typography.button-sm}"
textColor: "{colors.body}"
border: "1px solid {colors.canvas}"
height: 45px
padding: "15px 25px 15px 25px"
rounded: 30px
backgroundColor: "{colors.canvas}"
button-secondary:
typography: "{typography.label-sm}"
textColor: "{colors.ink}"
border: "1px solid rgba(255, 255, 255, 0.4)"
height: 55px
padding: "0px 25px 0px 25px"
boxShadow: "rgba(0, 0, 0, 0.15) 0px 1px 0px 0px"
rounded: "{rounded.full}"
backgroundColor: "rgba(255, 255, 255, 0.4)"
button-filled-lg:
typography: "{typography.label-sm}"
textColor: "{colors.surface-alt}"
height: 55px
padding: "0px 25px 0px 20px"
boxShadow: "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.full}"
backgroundColor: "{colors.on-primary}"
button-primary-2:
textColor: "{colors.body}"
border: "1px solid {colors.primary}"
height: 55px
padding: "20px 25px 20px 25px"
fontSize: 14px
boxShadow: "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"
fontFamily: GeneralSans
fontWeight: 500
lineHeight: 1.07
rounded: 30px
backgroundColor: "{colors.primary}"
navigation:
textColor: "{colors.muted}"
height: 31px
padding: "0px 0px 0px 20px"
fontSize: 16px
fontFamily: GeneralSans
fontWeight: 400
lineHeight: 1.5
footer:
textColor: "{colors.muted}"
fontSize: 16px
fontFamily: GeneralSans
fontWeight: 400
lineHeight: 1.5
backgroundColor: "{colors.surface-alt}"
link:
textColor: "{colors.muted}"
padding: "28px 28px 28px 28px"
fontSize: 16px
fontFamily: GeneralSans
fontWeight: 400
lineHeight: 1.5
link-sm:
typography: "{typography.caption-xs}"
textColor: "{colors.body}"
padding: "4px 10px 4px 10px"
rounded: 30px
backgroundColor: "{colors.primary}"
badge-icon:
textColor: "{colors.muted}"
height: 20px
fontSize: 16px
fontFamily: GeneralSans
fontWeight: 400
lineHeight: 1.5
states:
other-hover:
target: other
state: hover
opacity: 0.6
button-focus-visible:
target: button
state: focus-visible
outline: "{colors.primary} solid 3px"
outlineColor: "{colors.primary}"
outlineWidth: 3px
other-focus:
target: other
state: focus
outline: "rgba(0, 0, 0, 0) solid 2px"
outlineColor: "rgba(0, 0, 0, 0)"
outlineWidth: 2px
other-focus-visible:
target: other
state: focus-visible
opacity: 0.85
other-disabled:
target: other
state: disabled
opacity: 0.3
button-hover:
target: button
state: hover
opacity: 1
breakpoints:
- width: 375
containerWidth: 335
gridColumns: 4
navLinksVisible: 24
menuToggleVisible: true
headingPx: 46
bodyPx: 16
sectionPaddingX: 20
- width: 768
containerWidth: 728
gridColumns: 3
navLinksVisible: 24
menuToggleVisible: true
headingPx: 60
bodyPx: 16
sectionPaddingX: 40
- width: 1024
containerWidth: 964
gridColumns: 4
navLinksVisible: 24
menuToggleVisible: true
headingPx: 60
bodyPx: 16
sectionPaddingX: 40
- width: 1280
containerWidth: 1220
gridColumns: 4
navLinksVisible: 24
menuToggleVisible: true
headingPx: 60
bodyPx: 16
sectionPaddingX: 120
- width: 1440
containerWidth: 1380
gridColumns: 4
navLinksVisible: 24
menuToggleVisible: true
headingPx: 60
bodyPx: 16
sectionPaddingX: 120
coverage:
statesFound: 56
gradientsFound: 12
rolesUnassigned: 1
archetypesUnnamed: 0
archetypesDetected: 0
responsiveMeasured: true
stylesheetsBlocked: true
semanticRampDeclared: false
Noovo's design system embodies premium adventure and modern comfort, grounded in warm, approachable tones and clean geometric forms. The brand balances aspiration with accessibility—layered photography with dark overlays creates cinematic hero moments, while generous whitespace and soft neutrals prevent the aesthetic from feeling cold or corporate. Typography is deliberately generous and contemporary, favouring tight letter-spacing on large display sizes to convey sophistication. The system prioritizes the Noovo product (camper vans) as the hero, allowing photography and human storytelling to drive emotion, while UI elements remain restrained and functional. Depth is achieved through color blocking rather than heavy shadows, and the primary brand accent ({colors.primary} — #FFAC00) acts as a vital call-to-action signifier against the warm neutral palette.
Key Characteristics
{colors.primary} — #FFAC00): Primary CTAs, active states, accent highlights, brand identity marks. Used on buttons, badges, and key interactive elements to signal call-to-action intent.{colors.canvas} — #F9F7F4): Default page background. Warm beige providing a soft, inviting foundation.{colors.surface-alt} — #FFFFFF): Alternating section backgrounds, cards, and contained surfaces. Pure white for contrast and content clarity.{colors.ink} — #000000): Primary heading and display text. Maximum contrast for readability and hierarchy emphasis.{colors.on-primary} — #131211): Body copy, labels, and text on brand surfaces. Near-black with minimal warmth to ensure legibility.{colors.muted} — #333333): Secondary and caption text. Reduced contrast for visual hierarchy.{colors.faint} — #6F6E6C): Tertiary text, placeholders, and disabled states. Significantly reduced contrast for supporting content.{colors.hairline} — #E5E7EB): 1px borders and dividers. Delicate line weight for visual separation without weight.{colors.neutral-1} — #B4B4B4): No measured semantic role; used as a neutral gray for decorative contexts only.The site does not declare error, success, or warning colour states. No semantic status ramp is exposed in the measured styles.
Primary Font: generalFont (fallback stack not measured)
Secondary Font: GeneralSans (fallback stack not measured)
| Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
|---|---|---|---|---|---|---|
| Display XL | generalFont | 70px | 400 | 0.9 | -2.8px | Hero-level display; extreme negative tracking for impact |
| Display LG | generalFont | 60px | 400 | 1 | -2.5px | Major section headings; consistent negative tracking |
| Display LG Strong | generalFont | 60px | 500 | 1 | 0px | Bold variant of display large |
| Display MD | generalFont | 46px | 400 | 1 | -1.84px | Medium display; reduced tracking |
| Display SM | generalFont | 40px | 400 | 1.1 | -2.5px | Smaller display variant with tighter line height |
| Heading XS | generalFont | 30px | 400 | 1 | -1px | Section subheadings |
| Heading XS Strong | generalFont | 30px | 500 | 1 | -1px | Bold heading variant |
| Heading MD | GeneralSans | 36px | 400 | 1 | -1.44px | Medium heading; tighter tracking in sans variant |
| Heading MD Strong | generalFont | 36px | 500 | 1 | -2.5px | Bold medium heading with serif tracking |
| Heading MD Tight | generalFont | 36px | 500 | 1.11 | -1.8px | Compact medium heading variant |
| Body XL | generalFont | 20px | 400 | 1.3 | 0px / -1px | Large body text; slight negative tracking in some contexts |
| Body XL Strong | generalFont | 20px | 500 | 1.3 | 0px / -0.4px | Bold large body; mixed tracking contexts |
| Body XL Tight | generalFont | 20px | 400 | 1.3 | -0.4px | Compact large body variant |
| Body LG | generalFont | 16px | 500 | 1.5 | 0px | Semi-bold body text; increased line height for scanning |
| Body MD | generalFont | 14px | 400 | 1.29 | 0px / -0.32px | Standard body copy; mixed tracking contexts |
| Body MD Strong | generalFont | 14px | 500 | 1.29 | 0px / -0.32px | Emphasis within body text |
| Label MD | generalFont | 16px | 400 | 1.5 | 0px | Input labels and form text |
| Label MD Strong | generalFont | 16px | 500 | 1.25 | 0px | Bold label variant |
| Label SM | GeneralSans | 14px | 400 | 1.5 | -0.5px / -0.7px | Smaller labels with negative tracking |
| Button MD | generalFont | 16px | 500 | 1.31 | -0.32px | Primary button text; bold with tight tracking |
| Button SM | generalFont | 14px | 500 | 1.07 | -0.28px | Smaller button text; tighter line height |
| Caption MD | generalFont | 12px | 400 | 1.5 | 0px | Standard caption and helper text |
| Caption MD Strong | generalFont | 12px | 500 | 1.33 | -0.24px | Bold caption with tight tracking |
| Caption MD Tight | generalFont | 12px | 500 | 1.33 | 0px | Compact caption variant |
| Caption SM | generalFont | 11px | 400 | 1.5 | 0px | Small captions and footnotes |
| Caption XS | GeneralSans | 10px | 400 | 1.5 | -0.2px | Smallest caption level |
Primary Button
{colors.primary} (#FFAC00){colors.on-primary} (#131211)0px 25px 0px 20px{rounded.full} (9999px — pill-shaped){colors.primary} (#FFAC00)rgba(0, 0, 0, 0.05) 0px 1px 2px 0px{colors.primary} (#FFAC00)Primary Button (Variant 2)
{colors.primary} (#FFAC00){colors.on-primary} (#131211)20px 25px 20px 25px{colors.primary} (#FFAC00)rgba(0, 0, 0, 0.05) 0px 1px 2px 0pxSecondary Button (Light / Hero Variant)
rgba(255, 255, 255, 0.4) (translucent white){colors.ink} (#000000)0px 25px 0px 25px{rounded.full} (9999px)rgba(255, 255, 255, 0.4)rgba(0, 0, 0, 0.15) 0px 1px 0px 0pxFilled Button (Light)
{colors.canvas} (#F9F7F4){colors.on-primary} (#131211)15px 25px 15px 25px{colors.canvas} (#F9F7F4)Filled Button Large (Dark)
{colors.on-primary} (#131211){colors.surface-alt} (#FFFFFF)0px 25px 0px 20px{rounded.full} (9999px)rgba(0, 0, 0, 0.05) 0px 1px 2px 0pxAll Button States
{colors.primary} (#FFAC00)Standard Card
{colors.surface-alt} (#FFFFFF){rounded.none} (0px — sharp corners){colors.hairline} (#E5E7EB) dividerrgba(0, 0, 0, 0.1) 0px 4px 6px -1px, rgba(0, 0, 0, 0.1) 0px 2px 4px -2px (md elevation){spacing.md} to {spacing.lg})Section Container
{colors.canvas} (#F9F7F4) and {colors.surface-alt} (#FFFFFF){spacing.xxxl} (40px) on tablet/desktop; {spacing.lg} (20px) on mobile{spacing.band} (60px) between sectionsText Input
{colors.surface-alt} (#FFFFFF){colors.hairline} (#E5E7EB){rounded.md} (15px){spacing.md} (16px){colors.on-primary} (#131211){colors.faint} (#6F6E6C){colors.primary} (#FFAC00); outline removedForm Label
{colors.on-primary} (#131211){spacing.sm} (12px)Horizontal Navigation (Header)
{colors.surface-alt} (#FFFFFF) with subtle shadow{colors.muted} (#333333){spacing.md} (16px) horizontal gap{rounded.none} (0px){colors.ink} (#000000); optional underline or accent barFooter
{colors.surface-alt} (#FFFFFF){colors.muted} (#333333){spacing.section} (52px) vertical; {spacing.xxxl} (40px) horizontal{rounded.none} (0px)Badge (Icon Style)
{colors.primary} (#FFAC00){colors.on-primary} (#131211){spacing.xs} (8px) horizontal; {spacing.xxs} (4px) vertical{rounded.xs} (2px) to {rounded.full} (9999px) depending on contextBase unit: 4px ({spacing.xxs})
Scale (measured tokens)
{spacing.xxs} = 4px — minimal margin between nested elements{spacing.xs} = 8px — small gaps (button icon spacing, condensed lists){spacing.sm} = 12px — small section padding, form field spacing{spacing.md} = 16px — standard element padding and margins{spacing.lg} = 20px — medium section gaps{spacing.xl} = 32px — large element spacing{spacing.xxl} = 36px — section padding spacing{spacing.xxxl} = 40px — major section horizontal padding (mobile/tablet){spacing.section} = 52px — vertical gap between major sections{spacing.band} = 60px — hero and full-width section spacingUsage Context
{spacing.md} to {spacing.lg} (16–20px){spacing.md} to {spacing.xl} (16–32px){spacing.band} (60px) between major sections{spacing.xxxl} (40px) on tablet/desktop; {spacing.lg} (20px) on mobileMeasured Breakpoints and Content Columns
| Viewport | Content Column | Grid Columns | Section Padding X | Max Container |
|---|---|---|---|---|
| 375px (mobile) | 335px | 4 | 20px ({spacing.lg}) | 375px |
| 768px (tablet) | 728px | 3 | 40px ({spacing.xxxl}) | 768px |
| 1024px (laptop) | 964px | 4 | 40px ({spacing.xxxl}) | 1024px |
| 1280px (desktop) | 1220px | 4 | 120px (custom) | 1280px |
| 1440px (large) | 1380px | 4 | 120px (custom) | 1440px |
Noovo employs generous breathing room throughout. Large display headings are surrounded by significant vertical whitespace ({spacing.band} = 60px between sections). Cards and containers use {spacing.md} minimum internal padding. Navigation and hero sections are not cramped; interactive elements have ample touch targets ({spacing.lg} minimum). This approach creates a premium, unhurried aesthetic and aids content scanability on all screen sizes.
{rounded.none} = 0px — sharp corners on cards, sections, and legacy components{rounded.xs} = 2px — tiny radius on badges and accents{rounded.sm} = 10px — subtle rounding on some decorative elements{rounded.md} = 15px — moderate radius on input fields and contained elements{rounded.lg} = 20px — substantial rounding on images and larger containers{rounded.full} = 9999px — pill-shaped buttons, badges, and circular elementsComponent Context
{rounded.full} (9999px) or 30px (alternative rounded square){rounded.md} (15px){rounded.none} (0px){rounded.lg} (20px){rounded.xs} (2px) to {rounded.full} (9999px) depending on style{rounded.none} (0px)Elevation Table
| Level | Treatment | Use |
|---|---|---|
| Flat (Base) | No shadow, background color only | Page canvas, section backgrounds, text |
| Subtle (Small) | rgba(0, 0, 0, 0.05) 0px 1px 2px 0px | Button shadows, subtle lift on interactive elements |
| Moderate (Medium) | rgba(0, 0, 0, 0.1) 0px 4px 6px -1px, rgba(0, 0, 0, 0.1) 0px 2px 4px -2px | Card containers, dropdown menus, modals |
Shadow Philosophy The design system prioritizes color-blocking for depth rather than progressive shadow layering. Elevated surfaces are distinguished primarily by background colour changes (white on warm canvas, canvas on white) rather than shadow accumulation. When shadows are used, they are near-transparent and minimal, creating a "barely-there lift" effect. This layered-micro approach keeps the interface light and modern, avoiding heavy drop shadows that would conflict with the photography-forward aesthetic.
0.10) — extremely faint overlays, minimal visual weight0.40) — moderate transparency; used for disabled or secondary states0.60) — common hover opacity; reduces brightness while maintaining visibility0.70) — substantial but readable transparency0.80) — high opacity, slight transparency only0.90) — near-opaque; used for hover states to signal interactivityStacking maintains predictable layering: base content at 1–5, navigation/dropdowns at 10–20, and modals/alerts above.
{colors.primary} (#FFAC00) for all primary CTAs. Apply it to the most important button on each page to guide user focus.{rounded.full} = 9999px). This is the defining button vocabulary; do not square off CTAs.letter-spacing: 0; use the values from the hierarchy table (e.g., -2.8px for display XL, -1.84px for display MD).{spacing.band} = 60px between sections). Whitespace is a design feature; do not compress sections.{colors.canvas} and {colors.surface-alt}. This creates visual rhythm and section boundaries without heavy borders.{colors.hairline} (#E5E7EB) for dividers and subtle borders. This hairline color provides visual separation without weight.{colors.primary} outline. Keyboard navigation must be visually clear.{spacing.band} (60px) breathing room.{colors.neutral-1} (#B4B4B4) as a primary functional color. It has no measured role; reserve it for decorative contexts only.{spacing.md} (16px) gap to the next element.| Breakpoint | Viewport Width | Content Column | Grid Cols | Section Padding X | Key Changes |
|---|---|---|---|---|---|
| Mobile | 375px | 335px | 4 | 20px ({spacing.lg}) | Single-column layout; nav remains visible; display headings 40px; section spacing compressed proportionally |
| Tablet | 768px | 728px | 3 | 40px ({spacing.xxxl}) | Multi-column grid emerges; display headings expand to 60px; padding-x doubles |
| Laptop | 1024px | 964px | 4 | 40px ({spacing.xxxl}) | 4-column grid; content column stable; nav remains consistent |
| Desktop | 1280px | 1220px | 4 | 120px (custom) | Maximum padding-x; large hero displays (70px); whitespace maximized |
| Large (1440px+) | 1440px | 1380px | 4 | 120px (custom) | Content column saturates; excess space managed via margin/padding, not column expansion |
Breakpoint Strategy
{spacing.md} (16px) minimum padding; buttons extend to {spacing.lg} (20px) or more{spacing.md} (16px) minimum gap to prevent accidental mis-taps{spacing.band} = 60px) remains proportional across breakpoints{colors.primary} — #FFAC00) — use on all primary buttons and call-to-action elements{colors.canvas} — #F9F7F4) — warm beige default page backdrop{colors.surface-alt} — #FFFFFF) — white for contrast and content clarity{colors.ink} — #000000) — maximum contrast for primary headings{colors.on-primary} — #131211) — near-black body copy and labels{colors.muted} — #333333) — reduced contrast for captions and secondary content{colors.faint} — #6F6E6C) — minimal contrast for supporting copy and disabled states{colors.hairline} — #E5E7EB) — delicate 1px separator lines#FFAC00) for all CTAs. Every call-to-action button should use {colors.primary}. Secondary buttons use dark fill (#131211) or translucent light (rgba(255, 255, 255, 0.4)).border-radius: 9999px). All interactive buttons must be pill-shaped; alternative is rounded-square (30px) for secondary variants.letter-spacing exactly as specified in the typography hierarchy. Display sizes require negative tracking (-1 to -2.8px); do not omit or round to zero.#F9F7F4) and surface-alt (#FFFFFF) for rhythm; do not use a single background for entire page.60px vertical spacing between major sections. Use {spacing.band} (60px) as the base section gap; do not compress or eliminate.15px). Inputs use border-radius: 15px ({rounded.md}); borders are 1px in hairline color (#E5E7EB).rgba(0, 0, 0, 0.05) 0px 1px 2px 0px for subtle lift; rgba(0, 0, 0, 0.1) 0px 4px 6px -1px, rgba(0, 0, 0, 0.1) 0px 2px 4px -2px for moderate elevation. No custom shadows.outline: 3px solid #FFAC00. Keyboard navigation requires visible 3px outline in brand accent colour.{colors.neutral-1} (#B4B4B4): This colour was measured but has no explicit semantic role in the design system. It is treated as decorative only; do not assume it serves a functional purpose.colors:
primary:
value: "#FFAC00"
role: Primary / Brand Accent
canvas:
value: "#F9F7F4"
role: Canvas
surface-alt:
value: "#FFFFFF"
role: Surface Alt
ink:
value: "#000000"
role: Ink
on-primary:
value: "#131211"
role: Body / On Primary
muted:
value: "#333333"
role: Muted
faint:
value: "#6F6E6C"
role: Faint
hairline:
value: "#E5E7EB"
role: Hairline
neutral-1:
value: "#B4B4B4"
role: Unassigned
typography:
display-xl:
font: generalFont
size: 70px
weight: 400
lineHeight: 0.9
letterSpacing: -2.8px
display-lg:
font: generalFont
size: 60px
weight: 400
lineHeight: 1
letterSpacing: -2.5px
display-lg-strong:
font: generalFont
size: 60px
weight: 500
lineHeight: 1
letterSpacing: 0px
display-md:
font: generalFont
size: 46px
weight: 400
lineHeight: 1
letterSpacing: -1.84px
display-sm:
font: generalFont
size: 40px
weight: 400
lineHeight: 1.1
letterSpacing: -2.5px
heading-xs:
font: generalFont
size: 30px
weight: 400
lineHeight: 1
letterSpacing: -1px
heading-xs-strong:
font: generalFont
size: 30px
weight: 500
lineHeight: 1
letterSpacing: -1px
heading-md:
font: GeneralSans
size: 36px
weight: 400
lineHeight: 1
letterSpacing: -1.44px
heading-md-strong:
font: generalFont
size: 36px
weight: 500
lineHeight: 1
letterSpacing: -2.5px
heading-md-tight:
font: generalFont
size: 36px
weight: 500
lineHeight: 1.11
letterSpacing: -1.8px
heading-sm:
font: generalFont
size: 35px
weight: 400
lineHeight: 1.03
letterSpacing: -1.75px
body-xl:
font: generalFont
size: 20px
weight: 400
lineHeight: 1.3
letterSpacing: 0px
body-xl-strong:
font: generalFont
size: 20px
weight: 500
lineHeight: 1.3
letterSpacing: -0.4px
body-xl-tight:
font: generalFont
size: 20px
weight: 400
lineHeight: 1.3
letterSpacing: -0.4px
body-lg:
font: generalFont
size: 16px
weight: 500
lineHeight: 1.5
letterSpacing: 0px
body-md:
font: generalFont
size: 14px
weight: 400
lineHeight: 1.29
letterSpacing: -0.32px
body-md-strong:
font: generalFont
size: 14px
weight: 500
lineHeight: 1.29
letterSpacing: -0.32px
label-md:
font: generalFont
size: 16px
weight: 400
lineHeight: 1.5
letterSpacing: 0px
label-md-strong:
font: generalFont
size: 16px
weight: 500
lineHeight: 1.25
letterSpacing: 0px
label-sm:
font: GeneralSans
size: 14px
weight: 400
lineHeight: 1.5
letterSpacing: -0.5px
button-md:
font: generalFont
size: 16px
weight: 500
lineHeight: 1.31
letterSpacing: -0.32px
button-sm:
font: generalFont
size: 14px
weight: 500
lineHeight: 1.07
letterSpacing: -0.28px
caption-md:
font: generalFont
size: 12px
weight: 400
lineHeight: 1.5
letterSpacing: 0px
caption-md-strong:
font: generalFont
size: 12px
weight: 500
lineHeight: 1.33
letterSpacing: -0.24px
caption-md-tight:
font: generalFont
size: 12px
weight: 500
lineHeight: 1.33
letterSpacing: 0px
caption-sm:
font: generalFont
size: 11px
weight: 400
lineHeight: 1.5
letterSpacing: 0px
caption-xs:
font: GeneralSans
size: 10px
weight: 400
lineHeight: 1.5
letterSpacing: -0.2px
spacing:
xxs: 4px
xs: 8px
sm: 12px
md: 16px
lg: 20px
xl: 32px
xxl: 36px
xxxl: 40px
section: 52px
band: 60px
rounded:
none: 0px
xs: 2px
sm: 10px
md: 15px
lg: 20px
full: 9999px
shadows:
sm:
value: "rgba(0, 0, 0, 0.05) 0px 1px 2px 0px"
usage: subtle button lift, minor elevation
md:
value: "rgba(0, 0, 0, 0.1) 0px 4px 6px -1px, rgba(0, 0, 0, 0.1) 0px 2px 4px -2px"
usage: card containers, moderate elevation
borders:
thin: 1px
opacity:
- 0.10
- 0.40
- 0.60
- 0.70
- 0.80
- 0.90
zIndex:
base: [1, 2, 3, 4, 5]
dropdown: [10, 19, 20]
gradients:
hero:
- "linear-gradient(rgba(0, 0, 0, 0) 40%, rgba(0, 0, 0, 0.7) 100%)"
- "linear-gradient(45deg, rgb(0, 0, 0) 0%, rgba(0, 0, 0, 0) 30%)"
- "linear-gradient(rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0) 100%)"
- "linear-gradient(to top, rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0) 25%, rgba(0, 0, 0, 0))"
- "linear-gradient(rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0) 30%, rgba(0, 0, 0, 0))"
section:
- "linear-gradient(rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.3))"
- "linear-gradient(rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.5) 50%)"
- "linear-gradient(230deg, rgba(0, 0, 0, 0) 50%, rgba(0, 0, 0, 0.8) 100%)"
- "linear-gradient(130deg, rgba(0, 0, 0, 0) 50%, rgba(0, 0, 0, 0.8) 100%)"
- "linear-gradient(rgb(177, 194, 209), rgba(177, 194, 209, 0))"
- "linear-gradient(rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.6))"
- "linear-gradient(to top, rgba(0, 0, 0, 0), rgb(255, 255, 255))"
breakpoints:
mobile: 375px
tablet: 768px
laptop: 1024px
desktop: 1280px
large: 1440px