Remixes of blossomandrhyme.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: Blossomandrhyme
description: |
Blossom & Rhyme embodies a refined, timeless elegance rooted in luxury floral
preservation and memorial craftsmanship. The design system channels
sophistication through a restrained, nature-inspired palette anchored by soft,
muted greens and warm neutrals—evoking pressed flowers, botanical
preservation, and the quiet dignity of treasured memories. The visual language
prioritizes legibility and contemplation over visual spectacle, with generous
whitespace, serif typography for body copy, and elegant display faces that
suggest formal floristry and heritage. The aesthetic is deliberately
understated, positioning preserved flowers as the star while the interface
recedes into a warm, calming backdrop. Subtle serif-to-sans-serif transitions,
refined button treatments, and soft-edged badges reinforce the premium,
artisanal positioning.
source:
url: "https://blossomandrhyme.com/"
pagesAnalyzed: 6
extractedAt: 2026-10-18
tokensMeasured: true
colors:
primary: "#7E8A7C"
accent: "#EA4335"
canvas: "#FAF8F7"
surface-alt: "#E6E3E3"
ink: "#000000"
body: "#161616"
muted: "#212121"
faint: "#626261"
accent-1: "#4285F4"
accent-2: "#FBBC05"
accent-3: "#34A853"
accent-4: "#8A79FA"
accent-5: "#AB8C52"
accent-6: "#526A4F"
neutral-1: "#AAAAAA"
neutral-2: "#777777"
typography:
display-lg:
fontFamily: ivypresto-display
fontSize: 42px
fontWeight: 100
lineHeight: 1.1
letterSpacing: 1px
display-lg-strong:
fontFamily: Ivy
fontSize: 42px
fontWeight: 200
lineHeight: 1.1
letterSpacing: 1px
display-md:
fontFamily: ivypresto-display
fontSize: 40px
fontWeight: 100
lineHeight: 1.2
letterSpacing: 1px
display-md-strong:
fontFamily: Ivy
fontSize: 40px
fontWeight: 200
lineHeight: 1.2
letterSpacing: 1px
heading-xxl:
fontFamily: Ivy
fontSize: 36px
fontWeight: 200
lineHeight: 1.2
letterSpacing: 1px
heading-xl:
fontFamily: Ivy
fontSize: 32px
fontWeight: 200
lineHeight: 1.2
letterSpacing: 1px
heading-lg:
fontFamily: Ivy
fontSize: 30px
fontWeight: 200
lineHeight: 1.2
letterSpacing: 1px
heading-md:
fontFamily: Ivy
fontSize: 22px
fontWeight: 200
lineHeight: 1.3
letterSpacing: 1px
heading-sm:
fontFamily: Ivy
fontSize: 21.6px
fontWeight: 200
lineHeight: 1.2
letterSpacing: 1px
heading-xs:
fontFamily: Ivy
fontSize: 20px
fontWeight: 200
lineHeight: 1.2
letterSpacing: 1px
quote:
fontFamily: "Gilda Display"
fontSize: 20px
fontWeight: 400
lineHeight: 1.24
letterSpacing: 0px
body-xl:
fontFamily: Garamond
fontSize: 22px
fontWeight: 400
lineHeight: 1.3
letterSpacing: 0px
body-lg:
fontFamily: Garamond
fontSize: 18px
fontWeight: 400
lineHeight: 1.3
letterSpacing: 0px
body-lg-strong:
fontFamily: Garamond
fontSize: 18px
fontWeight: 700
letterSpacing: 0px
body-md:
fontFamily: Garamond
fontSize: 17px
fontWeight: 400
lineHeight: 1.3
letterSpacing: 0px
body-sm:
fontFamily: Garamond
fontSize: 16px
fontWeight: 400
lineHeight: 1.3
letterSpacing: 0px
body-xs:
fontFamily: Garamond
fontSize: 14px
fontWeight: 400
letterSpacing: 0px
nav:
fontFamily: Lato
fontSize: 12px
fontWeight: 400
lineHeight: 1.2
letterSpacing: 0.6px
textTransform: uppercase
button-md:
fontFamily: Lato
fontSize: 14px
fontWeight: 400
lineHeight: 1.2
letterSpacing: 0.6px
textTransform: uppercase
button-md-strong:
fontFamily: Manrope
fontSize: 14px
fontWeight: 500
lineHeight: 1.45
letterSpacing: 0px
button-sm:
fontFamily: Lato
fontSize: 13px
fontWeight: 400
lineHeight: 1
letterSpacing: 1.3px
textTransform: uppercase
button-xs:
fontFamily: Garamond
fontSize: 12px
fontWeight: 400
letterSpacing: 1.2px
textTransform: uppercase
label:
fontFamily: Lato
fontSize: 13px
fontWeight: 400
lineHeight: 1.38
letterSpacing: 1.3px
textTransform: uppercase
caption-lg:
fontFamily: Garamond
fontSize: 18px
fontWeight: 400
lineHeight: 1.4
letterSpacing: 0px
caption-md:
fontFamily: Garamond
fontSize: 12px
fontWeight: 400
lineHeight: 1.3
letterSpacing: 0px
caption-md-uppercase:
fontFamily: Lato
fontSize: 12px
fontWeight: 400
lineHeight: 1.5
letterSpacing: 1.3px
textTransform: uppercase
caption-md-gilda-display:
fontFamily: "Gilda Display"
fontSize: 12px
fontWeight: 400
letterSpacing: 2.4px
textTransform: uppercase
caption-sm:
fontFamily: Lato
fontSize: 11px
fontWeight: 400
lineHeight: 1.1
letterSpacing: 1.3px
textTransform: uppercase
rounded:
none: 0px
xs: 3px
spacing:
xxs: 4px
xs: 8px
sm: 12px
md: 16px
lg: 20px
xl: 24px
xxl: 32px
xxxl: 44px
section: 52px
band: 84px
borderWidths:
thin: 1px
elevationStrategy: color-blocking
themes:
derived: dark # the other theme is the site's measured palette
light:
bg: "#FAF8F7"
surface: "#E6E3E3"
surfaceRaised: "#DDDADA"
text: "#000000"
textMuted: "#161616"
border: "#DCDAD9"
accent: "#EA4335"
accentFg: "#000000"
focusRing: "#EA4335"
elevation: shadow
dark:
bg: "#130B0B"
surface: "#211A1A"
surfaceRaised: "#2D2626"
text: "#FEF7F7"
textMuted: "#A59D9D"
border: "#393232"
accent: "#EA4335"
accentFg: "#0B0B0C"
focusRing: "#EA4335"
elevation: "border+surface"
components:
button-filled:
typography: "{typography.label}"
textColor: "{colors.ink}"
border: "1px solid rgb(255, 255, 255)"
height: 43.875px
padding: "12px 21.6px 12px 21.6px"
rounded: "{rounded.xs}"
backgroundColor: "rgb(255, 255, 255)"
button-filled-sm:
textColor: "{colors.ink}"
border: "1px solid rgb(255, 255, 255)"
height: 37.25px
padding: "8px 32px 8px 32px"
fontSize: 14px
fontFamily: Lato
fontWeight: 400
lineHeight: 1.38
rounded: "{rounded.xs}"
backgroundColor: "rgb(255, 255, 255)"
button-primary:
typography: "{typography.label}"
textColor: "rgb(255, 255, 255)"
height: 41.875px
padding: "12px 21.6px 12px 21.6px"
rounded: "{rounded.xs}"
backgroundColor: "{colors.primary}"
button-primary-2:
typography: "{typography.label}"
textColor: "{colors.muted}"
height: 41.875px
padding: "12px 21.6px 12px 21.6px"
rounded: "{rounded.xs}"
backgroundColor: "{colors.primary}"
button-text:
typography: "{typography.button-xs}"
textColor: "{colors.muted}"
height: 48.7969px
card:
textColor: "{colors.muted}"
fontSize: 16px
fontFamily: Garamond
fontWeight: 400
backgroundColor: "rgb(255, 255, 255)"
card-sm:
textColor: "{colors.muted}"
fontSize: 14px
fontFamily: Manrope
fontWeight: 500
badge-filled:
textColor: "rgb(175, 123, 136)"
height: 33px
padding: "7.008px 15px 7.008px 15px"
fontSize: 16px
fontFamily: Lato
fontWeight: 400
rounded: "{rounded.xs}"
backgroundColor: "rgb(249, 222, 229)"
badge-text:
textColor: "{colors.muted}"
height: 43px
padding: "5px 5px 5px 5px"
fontSize: 16px
fontFamily: Garamond
fontWeight: 400
badge-icon:
textColor: "{colors.muted}"
height: 20px
fontSize: 16px
fontFamily: Garamond
fontWeight: 400
footer:
textColor: "{colors.muted}"
fontSize: 16px
fontFamily: Garamond
fontWeight: 400
footer-lg:
textColor: "{colors.muted}"
padding: "0px 0px 80px 0px"
fontSize: 16px
fontFamily: Garamond
fontWeight: 400
link:
textColor: "{colors.ink}"
fontSize: 16px
fontFamily: Garamond
fontWeight: 400
link-lg:
textColor: "{colors.accent-6}"
fontSize: 16px
fontFamily: Garamond
fontWeight: 400
states:
other-focus:
target: other
state: focus
outline: none
button-focus:
target: button
state: focus
outline: none
button-active:
target: button
state: active
opacity: 1
button-disabled:
target: button
state: disabled
opacity: 0
button-hover:
target: button
state: hover
transform: "translateZ(0px)"
other-hover:
target: other
state: hover
opacity: 0.45
other-active:
target: other
state: active
textColor: "rgba(0, 0, 0, 0.55)"
backgroundColor: "rgba(0, 0, 0, 0.05)"
input-focus:
target: input
state: focus
outlineWidth: 5px
other-disabled:
target: other
state: disabled
opacity: 0
nav-hover:
target: nav
state: hover
transform: "translate3d(5px, 0px, 0px)"
input-active:
target: input
state: active
boxShadow: none
borderColor: currentcolor
borderWidth: medium
link-hover:
target: link
state: hover
transform: "scale(1.06)"
input-disabled:
target: input
state: disabled
backgroundColor: "rgb(255, 255, 255)"
link-focus:
target: link
state: focus
opacity: 1
breakpoints:
- width: 375
containerWidth: 173
gridColumns: 5
navLinksVisible: 0
menuToggleVisible: true
headingPx: 32
bodyPx: 16
sectionPaddingX: 0
- width: 768
containerWidth: 285
gridColumns: 5
navLinksVisible: 0
menuToggleVisible: true
headingPx: 38
bodyPx: 16
sectionPaddingX: 0
- width: 1024
containerWidth: 285
gridColumns: 5
navLinksVisible: 6
menuToggleVisible: false
headingPx: 40
bodyPx: 16
sectionPaddingX: 0
- width: 1280
containerWidth: 285
gridColumns: 5
navLinksVisible: 6
menuToggleVisible: false
headingPx: 42
bodyPx: 16
sectionPaddingX: 0
- width: 1440
containerWidth: 285
gridColumns: 5
navLinksVisible: 6
menuToggleVisible: false
headingPx: 42
bodyPx: 16
sectionPaddingX: 0
coverage:
statesFound: 61
gradientsFound: 0
rolesUnassigned: 8
archetypesUnnamed: 0
archetypesDetected: 0
responsiveMeasured: true
stylesheetsBlocked: true
semanticRampDeclared: false
Blossom & Rhyme embodies a refined, timeless elegance rooted in luxury floral preservation and memorial craftsmanship. The design system channels sophistication through a restrained, nature-inspired palette anchored by soft, muted greens and warm neutrals—evoking pressed flowers, botanical preservation, and the quiet dignity of treasured memories. The visual language prioritizes legibility and contemplation over visual spectacle, with generous whitespace, serif typography for body copy, and elegant display faces that suggest formal floristry and heritage. The aesthetic is deliberately understated, positioning preserved flowers as the star while the interface recedes into a warm, calming backdrop. Subtle serif-to-sans-serif transitions, refined button treatments, and soft-edged badges reinforce the premium, artisanal positioning.
Key Characteristics
{colors.primary} — #7E8A7C) and warm beige canvas ({colors.canvas} — #FAF8F7){rounded.none} on most elements) contrast with subtle radii ({rounded.xs} — 3px) on badges{spacing.section} — 52px, {spacing.band} — 84px) convey luxury{colors.primary} — #7E8A7C): Sage green used for primary CTAs, brand accents, and active states; anchors the visual identity{colors.accent} — #EA4335): Red—appears alongside primary in brand contexts but no dominant CTA role observed{colors.accent-1} — #4285F4): Blue; no measured role—treat as decorative{colors.accent-2} — #FBBC05): Gold; no measured role—treat as decorative{colors.accent-3} — #34A853): Green; no measured role—treat as decorative{colors.accent-4} — #8A79FA): Purple; no measured role—treat as decorative{colors.accent-5} — #AB8C52): Bronze; no measured role—treat as decorative{colors.accent-6} — #526A4F): Dark forest green; no measured role—treat as decorative{colors.canvas} — #FAF8F7): Default page background; soft, warm off-white{colors.surface-alt} — #E6E3E3): Alternating section bands; light grey for section breaks{colors.ink} — #000000): Headings and primary text; pure black for contrast{colors.body} — #161616): Body copy; near-black for readability{colors.muted} — #212121): Captions and secondary text; darkened grey{colors.faint} — #626261): Tertiary text, placeholders, and metadata; mid-grey{colors.neutral-1} — #AAAAAA): Light grey; no specific role observed—treat as neutral filler{colors.neutral-2} — #777777): Medium grey; no specific role observed—treat as neutral fillerPrimary: Garamond (serif)
Fallback: Georgia, serif
Garamond is the dominant face for body copy, display, and narrative text—it conveys elegance and heritage.
Secondary: Lato (sans-serif)
Fallback: -apple-system, BlinkMacSystemFont, Segoe UI, sans-serif
Lato handles navigation, buttons, labels, and captions—bringing structure and clarity to interface elements.
Tertiary: Ivy / Ivy Presto Display (serif display)
Fallback: Georgia, serif
Reserved for headings; delivers formal, elegant presence at large scales.
Quaternary: Manrope (geometric sans-serif)
Fallback: -apple-system, BlinkMacSystemFont, Segoe UI, sans-serif
Used sparingly for button-strength accents where contemporary weight and structure matter.
Accent: Gilda Display (serif display)
Fallback: Georgia, serif
Applied to special captions and quotations for refined, decorative emphasis.
| Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
|---|---|---|---|---|---|---|
| Display Large | Ivy Presto Display | 42px | 100 | 1.1 | 1px | Hero headline; maximum visual impact |
| Display Medium | Ivy Presto Display | 40px | 100 | 1.2 | 1px | Large display; page titles |
| Display Medium Strong | Ivy | 40px | 200 | 1.2 | 1px | Heavy heading variant |
| Display Large Strong | Ivy | 42px | 200 | 1.1 | 1px | Full-weight hero |
| Heading XXL | Ivy | 36px | 200 | 1.2 | 1px | Large section header |
| Heading XL | Ivy | 32px | 200 | 1.2 | 1px | Section header |
| Heading Large | Ivy | 30px | 200 | 1.2 | 1px | Subsection header |
| Heading Medium | Ivy | 22px | 200 | 1.3 | 1px | Card/block title |
| Heading Small | Ivy | 21.6px | 200 | 1.2 | 1px | Minor heading |
| Heading XSmall | Ivy | 20px | 200 | 1.2 | 1px | Metadata heading |
| Body XLarge | Garamond | 22px | 400 | 1.3 | 0px | Large body; lead paragraph |
| Body Large | Garamond | 18px | 400 | 1.3 | 0px | Standard body; narrative |
| Body Large Strong | Garamond | 18px | 700 | — | 0px | Emphasized body text |
| Body Medium | Garamond | 17px | 400 | 1.3 | 0px | Standard body copy |
| Body Small | Garamond | 16px | 400 | 1.3 | 0px | Default body; paragraphs |
| Body XSmall | Garamond | 14px | 400 | — | 0px | Fine print; tertiary content |
| Caption Large | Gilda Display | 18px | 400 | 1.4 | 0px | Quote or featured caption |
| Caption Medium | Gilda Display | 12px | 400 | — | 2.4px | Fine print; all-caps annotation |
| Caption Medium Uppercase | Lato | 12px | 400 | 1.5 | 1.3px | All-caps label |
| Caption Small | Lato | 11px | 400 | 1.1 | 1.3px | All-caps micro label |
| Caption XSmall | Garamond | 12px | 400 | 1.3 | 0px | Small annotation |
| Button Medium | Lato | 14px | 400 | 1.2 | 0.6px | Standard button; all-caps |
| Button Medium Strong | Manrope | 14px | 500 | 1.45 | 0px | Button accent; modern weight |
| Button Small | Lato | 13px | 400 | 1 | 1.3px | Small button; all-caps |
| Button XSmall | Lato | 12px | 400 | — | 1.2px | Micro button; all-caps |
| Label | Lato | 13px | 400 | 1.38 | 1.3px | Form label; all-caps |
| Navigation | Lato | 12px | 400 | 1.2 | 0.6px | Nav link; all-caps |
| Quote | Gilda Display | 20px | 400 | 1.24 | 0px | Quoted passage |
0.6px to 1.3px), reinforcing structured, deliberate tone.1px letter spacing, a hallmark of luxury typography.{colors.primary} (#7E8A7C)#FFFFFF12px 21.6px41.875px311px{rounded.xs} (3px)transform: translateZ(0px), opacity: 1opacity: 1, transform: translateY(1px), underline text-decorationopacity: 0.7{colors.primary} (#7E8A7C)#21212112px 21.6px41.875px188px{rounded.xs} (3px)transform: translateZ(0px), opacity: 1opacity: 1, transform: translateY(1px), underlineopacity: 0.7#FFFFFF#00000012px 21.6px43.875px188px1px solid #FFFFFF{rounded.xs} (3px)transform: translateZ(0px), opacity: 1opacity: 1, transform: translateY(1px), underlineopacity: 0.7#FFFFFF#0000008px 32px37.25px156.203px1px solid #FFFFFF{rounded.xs} (3px)transform: translateZ(0px), opacity: 1opacity: 1, transform: translateY(1px), underlineopacity: 0.7#2121210px{rounded.none} (0px)opacity: 0.75outline: nonetransform: translateY(1px), underline#FFFFFF{colors.body} (#161616)0px470px589.594px{rounded.none} (0px){colors.body} (#161616)0px325.5px234.078px{rounded.none} (0px)#F9DDE5#AF7B887.008px 15px33px98px{rounded.xs} (3px){colors.body} (#161616)5px43px108px{rounded.none} (0px){colors.body} (#161616)0px20px20px{rounded.none} (0px)transform: scale(1.1){rounded.none} (0px){colors.body} (#161616)outline-color: var(--accent), outline-width: 5px, border-width: 3px, box-shadow: 0 0 0 4px var(--accent)color: var(--text-a35), border-color: var(--text-a35), background-color: var(--text-a5)color: var(--text){colors.body} (#161616){colors.body} (#161616)0px{rounded.none} (0px)transform: translate3d(5px, 0px, 0px), opacity: 1, color: var(--link-hover) if definedcolor: var(--text-a50) or link-active stateoutline: none{colors.body} (#161616)0px890.438px48.7969px{rounded.none} (0px)The spacing system is built on a base unit of 4px and scales in deliberate increments:
{spacing.xxs} — 4px): Micro gaps; rarely visible, used for internal element padding{spacing.xs} — 8px): Tight clusters; form field spacing, small icon gaps{spacing.sm} — 12px): Compact grouping; label-to-input distance{spacing.md} — 16px): Default rhythm; most text-to-button gaps, section padding within cards{spacing.lg} — 20px): Generous internal spacing; card headers to body{spacing.xl} — 24px): Breathing room; component-to-component{spacing.xxl} — 32px): Section breaks; footer to next element{spacing.xxxl} — 44px): Visual pause; between major sections{spacing.section} — 52px): Inter-section spacing on full-width bands{spacing.band} — 84px): Large hero-to-section gaps; sets rhythm for full-page layoutsUsage Context: Content within cards uses {spacing.md} and {spacing.lg}. Hero sections to following sections use {spacing.band} (84px). Form elements cluster with {spacing.sm} between label and input.
0px measured across all breakpoints (full bleed or internal margin management){colors.canvas} and surface-alt {colors.surface-alt} — #E6E3E3) create visual rhythm without heavy spacingWhitespace is treated as a primary design material. Large gaps ({spacing.band} — 84px) between major sections create contemplation and hierarchy. Within cards and components, moderate spacing ({spacing.md} — 16px to {spacing.lg} — 20px) maintains breathing room without clutter. The overall aesthetic avoids density; generous line-height on body copy and sparse navigation reinforce the premium, unhurried tone. Vertical rhythm is privileged over horizontal—sections stack clearly; sidebars and multi-column layouts are rare.
{rounded.none} — 0px): Cards, images, most containers, and link blocks; sharp corners are the default{rounded.xs} — 3px): Buttons, filled badges, and form controls; a subtle softness without pill shapeThe system defaults to sharp corners, using small radius only on interactive elements (buttons, badges) where slight rounding prevents a jarring appearance.
1px): Button borders (secondary/filled buttons only); used sparingly, never on primary buttonsMost components have no visible border; depth is achieved through colour blocking and subtle opacity shifts rather than strokes.
The Blossom & Rhyme design system employs colour blocking rather than layered shadows. Elevation is suggested through surface colour shifts—the canvas ({colors.canvas} — #FAF8F7) is the base; section-alt bands ({colors.surface-alt} — #E6E3E3) recede; white cards and overlays advance. No multi-level shadow system was measured on this site.
| Level | Treatment | Use |
|---|---|---|
| Flat (Base) | No shadow; colour blocking only | Cards on canvas, body text, default state |
| Lifted | Colour contrast only (white on canvas, alt on white) | Card surfaces, section breaks |
| Overlay | No shadow; opacity and z-index layering | Modals, dropdowns (when present) |
Shadow Philosophy: The site does not employ visible box-shadows for elevation. Depth is communicated through:
This flattened, colour-based approach aligns with the brand's emphasis on clarity, timelessness, and visual restraint.
Opacity is used subtly to suggest state and depth:
Disabled buttons and hidden elements use opacity: 0.7 or opacity: 0 to signal unavailability.
Z-index values are kept minimal and predictable:
All z-index values remain low and sparse; no deep stacking hierarchy is required. The layout is primarily vertical, so layering complexity is minimal.
{colors.primary} — #7E8A7C) for all primary calls-to-action (Add to Cart, Start Preserving, CTAs in hero). It is the brand accent and carries weight.{spacing.section} — 52px, {spacing.band} — 84px) between sections and hero elements; whitespace is a luxury marker.{rounded.xs} — 3px); no pills or excessive softness.translate3d(5px, 0px, 0px) on hover) for interaction feedback rather than bold colour changes.{colors.canvas}, {colors.surface-alt}, {colors.body}) for most UI; reserve brand colours for emphasis.outline-color: var(--accent) and box-shadow: 0 0 0 4px var(--accent) for accessibility.border-radius: 9999px); this brand uses sharp corners by default.opacity: 0.7 to suggest disabled state.1.3 to maintain the spacious, contemplative mood.translate3d, scale), or subtle colour adjustments.| Breakpoint | Viewport Width | Content Column | Heading Size | Body Size | Nav Links Visible | Menu Toggle | Key Changes |
|---|---|---|---|---|---|---|---|
| Mobile | 375px | 173px | 32px | 16px | 0 | Yes | Hamburger menu; full-width sections; single-column layout |
| Tablet | 768px | 285px | 38px | 16px | 0 | Yes | Hamburger persists; wider content; increased padding |
| Desktop | 1024px | 285px | 40px | 16px | 6 | No | Horizontal nav appears; content column stabilizes |
| Desktop (Large) | 1280px | 285px | 42px | 16px | 6 | No | Heading size increases slightly; no further layout change |
| Desktop (XL) | 1440px | 285px | 42px | 16px | 6 | No | Maximum heading size; stable layout |
Key Observations:
0px measured across all breakpoints; full-bleed sections with internal spacing management.37.25px (small buttons); standard buttons are 41.875px or taller156.203px (secondary button, small variant); primary buttons are typically 188px–311px20px × 20px observed for badge icons; recommend minimum 44px × 44px for mobile touch safety (not confirmed in extraction)Mobile (375px)
{spacing.band} (84px) and {spacing.section} (52px)Tablet (768px)
Desktop (1024px and above)
Use these mappings when building UI components:
{colors.primary} — #7E8A7C){colors.canvas} — #FAF8F7){colors.surface-alt} — #E6E3E3){colors.ink} — #000000){colors.body} — #161616){colors.muted} — #212121){colors.faint} — #626261)#FFFFFF)#FFFFFF)Start with the neutral foundation: Build all sections on {colors.canvas} (#FAF8F7). Alternate bands with {colors.surface-alt} (#E6E3E3) for rhythm.
Apply typography by role, not by tag: Use Garamond for body copy and narrative (regardless of <p>, <span>, <div>). Use Lato for buttons, labels, and navigation. Use Ivy or Ivy Presto for headings. Never mix serif and sans within a logical content block.
Default all button text to uppercase and letter-spaced: Apply text-transform: uppercase and letter-spacing: 0.6px (navigation), 1.3px (labels/captions), or 1.2px (button text) via Lato.
Colour primary buttons with {colors.primary} and white text. Secondary buttons are white background with black text and a 1px white border. Both use {rounded.xs} (3px) border-radius.
Manage elevation via colour, not shadows: Use opacity shifts, transform: translateZ(0px) or translate3d() on hover, and background colour changes. Do not add box-shadow unless explicitly required for accessibility (focus states on inputs).
Space sections generously: Use {spacing.band} (84px) between major hero/section pairs. Use {spacing.section} (52px) for medium separations. Reserve {spacing.lg} (20px) and {spacing.md} (16px) for component-internal spacing.
Keep corners sharp by default: Apply border-radius: 0px to cards, containers, and images. Use {rounded.xs} (3px) only on interactive elements (buttons, badges).
Focus states must include visual feedback: For buttons, use outline: var(--accent) or opacity shift. For inputs, use outline-color: var(--accent), outline-width: 5px, border-width: 3px, and box-shadow: 0 0 0 4px var(--accent).
Test responsiveness at 375px, 768px, and 1024px breakpoints: Navigation collapses at the 768px→1024px transition. Headings scale from 32px → 42px across the range. Content column is 173px (mobile), 285px (tablet+).
Never invent states or colours not in this document: If a colour, state, or spacing value is not listed, check "Known Gaps" and ask before implementing.
{colors.accent-1} through {colors.accent-6} plus {colors.neutral-1} and {colors.neutral-2} appear in the token set but have no clear CTA, status, or semantic function. They may be used in image overlays, product photography, or sections not fully captured in the 6-page extraction.line-height: — (not measured) in the token data. Implement based on measured siblings (e.g., buttons with measured line-height 1.5) and test for tight/loose appearance.0.98 for visible, 0 for hidden) based on pattern.This Design System document was generated from systematic extraction across 6 pages of https://blossomandrhyme.com/. All colour, typography, spacing, and component values are measured directly from the live site. Use this document as the source of truth for implementing new features and maintaining visual consistency.