Sentient Meat’s design system captures our playful, community-focused identity while prioritizing accessibility and clarity. It defines colors, type, spacing, and reusable components so board members, artists, and collaborators can build consistent, on-brand pages and assets quickly. This doc also documents authorship and usage guidance so the system doubles as portfolio evidence of design ownership.
This page is a single source of truth for visual and interaction patterns used across the site, social assets, and printed materials. It balances the collective’s experimental, art-first personality with practical constraints: readable type, inclusive language, clear interaction states, keyboard accessibility, and responsive structure. Use these tokens and components to assemble new pages, update content, or hand off designs to developers and volunteer contributors.
Sentient Meat is dark-mode first for accessibility and brand tone: deep backgrounds with high-contrast, warm/purple accents that read clearly against dark surfaces. --off-white
functions primarily as body text on dark backgrounds. Purples and teal are the primary brand signals; firebrick / green are status colors.
--color-primary
— Medium Purple — #7050a1
(Primary Brand)--color-primary-light
— Light Purple — #8d5aa5
(Primary accent / section & header borders)--color-teal
— Teal — #2fbeb7
(Secondary accent / H2 text color / info accents)--color-link
— Link Purple — #a06bff
(Links, interactive elements)--color-link-visited
— Medium Link Purple — #6e3bc9
(Visited )--color-link-hover
— Pale Violet Red — #e04c86
(Hover, highlights, accent dots, social button)--color-success
— Green — #2bb77b
(success / positive states)--color-error
— Firebrick Red — #c92228
(error / destructive / negative states)--color-steel
— Steel Blue — #3765a3
(muted / secondary; footer gradient stop)--color-cornflower
— Cornflower Blue — #55acee
(focus, social buttons; footer gradient stop)--color-bg
— Dark Gray — #131313
(page background / primary surface)--color-surface-deep
— Midnight Blue — #220550
(deep hero / expressive backgrounds)--color-text
— Off White — #fafcfb
(primary body text on dark backgrounds)#53499e
, #7050a1
, #8d5aa5
(use for expressive hero gradients and decorative backgrounds)--color-text
(Off White) on --color-bg
(Dark Gray) is the default — aim for 4.5:1 contrast at minimum.--color-primary
background with --color-text
label (white/off-white) for strong emphasis on dark pages. On lighter surfaces, use --color-primary
as text with an outline or filled white background variant.--color-link
for text links and --color-link-hover
on hover/focus. Provide underline + color change for clear affordance.--color-surface-deep
or --color-bg
; H2 can use --color-teal
for an approachable accent (use sparingly). Section borders and subtle accents should use --color-primary-light
.--color-error
(Firebrick) for destructive actions and error messages; pair with a dark translucent background for banners to preserve contrast. Use --color-success
for confirmations.--color-steel
→ --color-cornflower
, with small --color-pale-violet
accents for buttons or icons. Social icons can use --color-cornflower
or --color-pale-violet
depending on contrast.#53499e → #7050a1 → #8d5aa5
) behind large hero art or promotional banners; ensure any overlaid text uses --color-text
with a semi-opaque overlay or text-shadow to pass contrast.--color-text
on --color-bg
should meet WCAG AA body text.--color-link
for default link color and ensure contrast >= 3:1 for non-body text (WCAG guidance).prefers-reduced-motion
, remove heavy parallax or dramatic gradients; keep simple fades.Sentient Meat typography is friendly, easy to read, and accessibly sized. Our intent is to prioritize legibility for low-vision users while keeping visual rhythm and hierarchy clear. Use Ovo for display headings and Raleway for body and UI copy. Avoid overly tight letter-spacing on large text.
16px
(1rem)system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial
Headings: Ovo, fallback Georgia, "Times New Roman", serif
--type-h1
— 2.2rem (Headline / page H1) — Ovo — strong display--type-h2
— 2.0rem (Section H2) — Ovo--type-h3
— 1.85rem (Subsection H3) — Ovo--type-h4
— 1.7rem (Small heading / card titles) — Raleway/Ovo mix--type-body
— 1.3rem (Paragraph / primary body copy) — Raleway--type-small
— 1.0rem (Small text / captions / meta) — Raleway1rem
base = 16px. So 1.3rem ≈ 20.8px (great for readability).font-size: clamp(1.8rem, 1.4rem + 2vw, 2.2rem);
— but keep the minimum at or above 1.8rem so low-vision users aren’t forced to zoom on small devices.1.3rem
is intentionally large, test layout wrapping on small viewports. Keep paragraphs single-column and avoid multi-column body text on mobile.margin-bottom: 1rem
(≈ 16px) or 1.2rem
to create breathing room given larger font sizes.55ch
.Body copy: Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
Block quote
Ordered list
Unordered list
Bold text
Emphasis
Superscript
Subscript
Use Webflow’s default breakpoints and rem-based spacing so the layout scales cleanly with browser/text zoom and respects your low-vision-first typography. Root font-size = 1rem = 16px
. All spacing tokens below are expressed in rem
with the px
equivalent in parentheses.
12
columns; gutter 1.5rem
(24px)8
columns; gutter 1.25rem
(20px)4
columns; gutter 1rem
(16px)1rem
(16px)Base spacing unit: --space-1 = 0.5rem
(8px)
--space-xxs
= 0.25rem (4px)--space-xs
= 0.5rem (8px)--space-sm
= 0.75rem (12px) — useful for tight UI gaps--space-md
= 1rem (16px) — standard gap / form spacing--space-lg
= 1.5rem (24px) — card padding, section gaps--space-xl
= 2.5rem (40px) — large section spacing / hero padding--space-xxl
= 4rem (64px) — big hero margins or full-bleed sectionspadding: var(--space-md);
margin-bottom: var(--space-md);
padding-block: var(--space-xl);
(desktop) and padding-block: var(--space-lg);
(mobile)gap: var(--space-lg);
on desktop, gap: var(--space-md);
on tablet/mobile.--radius-sm
= 0.25rem (4px) — inputs, small buttons--radius-md
= 0.5rem (8px) — cards, modals--radius-lg
= 1rem (16px) — hero overlays, large panelsbox-shadow: 0 0.25rem 0.75rem rgba(0,0,0,0.15);
(4px 12px
equivalents)padding-inline: 1.5rem
(24px) on Desktop, 1rem
(16px) on Tablet and smaller. This ensures consistent breathing room at larger text sizes.max-width: 55ch
or max-width: 60rem
depending on the layout to maintain readable line length with your 1.3rem body text.gap
for grid/stack spacing (rem tokens) rather than fixed pixel margins — gap scales with root font-size and respects zoom.Keep motion subtle and brief (150–250ms). Use motion for affordance only (e.g., menu open, card hover). Provide a “Reduce motion” preference respect: if prefers-reduced-motion
is set, remove parallax and reduce animation to fades only.
alt=""
.--color-dark-gray
on --color-off-white
as the default.The Components section documents reusable UI patterns--navigation, buttons & links, forms & inputs, page elements (hero, cards, tiles), alerts, and footer--using the site’s dark-first color tokens, low-vision typography, and rem-based spacing.
Logo Link
(SVG) — alt "Sentient Meat"
, aria-label="Home"
var(--color-link)
; visited var(--color-link-visited)
; hover/focus var(--color-link-hover)
+ underline on hover.aria-current="page"
and a visual indicator (small underline or bold).aria-expanded="false|true"
. Provide a 44–48px hit target.--color-link-hover
aria-label="Close menu"
Buttons communicate actions. Use primary for the highest-priority actions (Apply / Donate), secondary for less-prominent actions, and ghost/text for inline links.
Text only, underline on hover. Use var(--color-link)
; ensure 1rem minimum hit target with padding.
Always link to home. Provide alt text: "Sentient Meat — creative residency"
and aria-label="Home"
.
Use for elements with complex image/gradient backgrounds.
Text-only links that become aria-current="page"
when active. Keep link labels short: About / Programs / Support Us / Safer Spaces / Contact.
Use for navigation moves between site areas, ie. from external/public facing to internal/member facing.
Hamburger triggers an accessible slide-over with focus trap; close on Escape; return focus to the toggle button.
for
attribute and matching id
.2px solid var(--color-link)
(or --color-link-hover
), shadow for emphasis.2px solid var(--color-error)
and aria-invalid="true"
, inline error message with role="alert"
and aria-live="polite"
.2px solid var(--color-success)
, optional success text.Group with <fieldset>
and <legend>
; provide keyboard focus states and ensure 44px tap targets.
Validate on blur; provide helpful microcopy on what's expected (ex: file upload size, supported formats). Error messages should describe the problem and the next step.
Associate all fields with labels; use aria-describedby
for helper text references; error messages must be programmatically associated and announced (aria-live
).
Use single-line search input with role="search"
, placeholder text Search events, artists, & workshops
and accessible label (aria-label
when necessary).
Labels above inputs (required). Use for
attribute and matching id
.
alt
text or transcript if it’s video.: border-bottom: 3px solid var(--color-cornflower);
outer-glow: 0 0 8px 3px var(--color-cornflower)
; keyboard users same affordance.Collaborative living residency for artists practicing mutual aid, shared work, and creative experimentation in the homes of other artists.
aria-label
.var(--color-teal)
overlaid with gradient radial-gradient(135deg, var(--color-green 22%), var(--color-dark-purple 72%))
with small --color-teal
accents. Text uses var(--color-off-white)
and readable sizes (≥1rem).aria-label="Instagram — Sentient Meat"
). Don’t use tiny text—minimum 1rem.