Style guide
Reference for typography, color tokens, and common UI patterns. Structural tokens live in src/styles/partials/_variables.scss; light theme colors in _colors-light.scss, dark overrides in _colors-dark.scss (aggregated by _colors.scss).
Typography
Body copy uses Manrope via Next.js font variables; monospace stacks are defined for code.
Eyebrow / overline
Heading 1
Heading 2
Heading 3
Heading 4
Heading 5
Heading 6
Paragraph with an inline text link using default anchor styles. Muted supporting line below.
Small / muted paragraph using --muted.
Type scale (fluid sizes)
Font stacks
Sans sample — Manrope, system UI fallbacks.
Mono sample — const theme = 'oklch';
Lists
- Unordered list item one
- Unordered list item two
- Ordered list item one
- Ordered list item two
Colors
Neutrals, brand, secondary, and tertiary ramps, plus semantic tokens (respect light / dark theme).
Ink (neutral ramp)
Brand
Secondary
--secondary maps to --secondary-600.
Tertiary
--tertiary maps to --tertiary-600.
Semantic
Gradients
Surfaces & shape
Elevation backgrounds and radius tokens.
Surfaces
Base / page-level
Elevated panel
Elevated panel
Elevated panel
Border radius
Shadows
Forms
Default control styles from global form partials.
Focus visible uses --ring-color and --ring-width.
Motion
- --dur-fast — 120ms
- --dur — 180ms
- --dur-slow — 260ms
- --ease-out, --ease-in-out
GridLayout
Applies responsive column classes from src/styles/layout/_grids.scss (grid-2 … grid-6, grid-with-aside). Pass gridColumns for the suffix (e.g. "4" → grid-4).
Example: three columns
<GridLayout gridColumns="3" gridId="sg-grid-3-demo">
<div>…</div>
<div>…</div>
<div>…</div>
</GridLayout>One
Two
Three
Example: two columns + extra class
gridClassName merges with grid-{columns}. On tablet, grid-2 grid-2-c2-right right-aligns the second column when stacked.
<GridLayout gridColumns="2" gridClassName="grid-2-c2-right">
<div>…</div>
<div>…</div>
</GridLayout>Primary column content.
Secondary column.
Icons
Every Icon* component re-exported from src/components/icons/Icons. The component name is the card heading; the glyph renders below at 32px, inheriting currentColor from the surrounding text. Sorted alphabetically — new icons added to the index appear automatically.