Style guide
Single source of truth: src/styles/theme.ts (Plus Jakarta Sans, warm dark surfaces, gold accent) plus shared surfaces in surfaceStyles.ts. Layout applies mainBackdrop to the page shell. Component variants and stories also live in Storybook.
Typography
theme.fontFamily is Plus Jakarta Sans with Inter/system fallbacks. Sizes and line heights pair via theme.fontSizes and theme.lineHeights. The Text component applies weights and tracking per variant (e.g. semibold headings, tight tracking on h1 / h2).
Text component variants
Heading levels, body, and caption styles from the shared Text component (variant prop).
Heading 1
Heading 2
Heading 3
Heading 4
Heading 5
Heading 6
Body paragraph, default copy style.
Caption / secondaryEyebrow
Marketing label for heroes and sections. The component applies text-transform: uppercase, letter-spacing, and color. Use variant="accent" or neutral (src/components/Eyebrow.tsx), matching the homepage.
Accent eyebrow
Section title
Supporting line.
Neutral eyebrow
Another block
Muted label + heading + body.
Color
Semantic UI colors from theme.colors: cream primary text, warm dark surfaces, border, and gold accent / blue[500-700] for buttons, links, and focus. Tints in surfaceStyles use the same family.
Spacing
theme.spacing covers padding, gaps, and layout rhythm.
Shadows
theme.shadows backs cards, nav, and elevated panels.
0 1px 2px rgba(0, 0, 0, 0.2), 0 1px 3px rgba(0, 0, 0, 0.25)
0 4px 12px rgba(0, 0, 0, 0.28), 0 2px 4px rgba(0, 0, 0, 0.2)
0 12px 40px rgba(0, 0, 0, 0.35), 0 4px 12px rgba(0, 0, 0, 0.22)
0 1px 0 rgba(255, 255, 255, 0.06), 0 4px 24px rgba(0, 0, 0, 0.25)
Border radius
Corner radii from theme.borderRadius for cards, inputs, and panels.
Buttons
Shared Button variants: primary, secondary, outline, ghost, muted, and pagination. Sizes are small, medium, and large.
Text input
Shared TextInput uses the theme border, radius, and focus ring (accent). Pair with Button in a flex row for search-style UIs.