Permanence Bio

Atomic kit

Visual

Color

Mineral pigments that resist fading, on a closed list of pairings. Click a swatch to copy it.

Primary

Secondary

Neutrals

Tints

Transparency

Semantic names

--text--inkCopy
--surface--whiteCopy
--background--groundCopy
--accent--red-ochreCopy
--accent-2--orange-ochreCopy
--accent-4--blueCopy
--accent-5--greenCopy

The names bound directly to properties.

Approved pairings

ink on off-white
beige on off-white
dark-beige on off-white
red-ochre on off-white
red-ochre on red-ochre-15
orange-ochre on off-white
orange-ochre on orange-ochre-15
blue on off-white
blue on blue-15
green on off-white
green on green-15
ink on dark-beige

What breaks the system

No

black backgrounds

No

full-color backgrounds, though imagery is permitted

No

any pairing of two colors that contrast sharply against one another

Visual

Typography

Two fonts, thirteen levels. Which row you use is a rule, not a matter of taste. Click a row to copy its CSS.

Display

Aa

Rhymes Text, in Light and Regular. A modern serif with high contrast strokes and refined proportions. Set headlines in Light, with Regular reserved for subheads. Keep the type large enough to let the contrast between thick and thin strokes read clearly.

Text

Aa

System, in Regular. The workhorse. A clean, grotesque-influenced sans built for the body copy, labels, and interface text that carries the brand's daily communication.

Headline

Title

Body

Label

Visual

Layout

The spacing, canvas and corner tokens to pull from, and the rule that goes with each one.

The canvas

--layout-module90pxthe moduleCopy
--canvas-desktop1512pxcanvasCopy
--canvas-mobile393pxcanvasCopy
--rail-width90pxnavigation railCopy
--rail-padding-inline34pxnavigation railCopy
--margin-left180pxsection marginCopy
--margin-right90pxsection marginCopy
--section-padding-block240pxsection paddingCopy
--section-padding-block-loose264pxsection paddingCopy
--width-full1256pxcontent widthCopy
--width-column610pxcontent widthCopy
--width-narrow414pxcontent widthCopy

The four gaps

Corners, and the space around everything

Two radii, and no scale

Cards, image blocks and panels take 6px. The role tag takes 100px, a full round. Everything else sits square, and adding a scale between them changes the character of the layout.

Whitespace is the point

The vertical padding is large on purpose. A layout that fills its margins to fit more in is off-system, even when every color and type value is right.

Visual

Art direction

Graphite for people, pigment for everything else. Mineral pigment, which has held its color for tens of thousands of years.

Pigment illustration of a DNA helix breaking into light
Illustration. Scientific form in warm pigment.
Pigment illustration of a torus with a helix through it
Illustration. The mark's own form, painted.
Pigment illustration of a spiral galaxy
Color in imagery. Full-color, edge to edge.
A ring of light in soft mist
Atmosphere. Light doing the work, not a gradient.

The art direction standard

Portraits

Graphite pencil, loose gestural linework that stays controlled rather than sloppy, set against a beige field. The drawing sits small in a wide field, and that ratio is the direction rather than a crop waiting to happen. Every portrait holds the same graphite tone and the same field, so a set of them reads as one team.

Illustration

These illustrations render scientific forms, helixes, cellular structures, protein folds, in warm, painterly pigment, with the same grain and depth found in early cave paintings. Keep the underlying science accurate wherever the subject demands it, and render every image in the same warm, grain-textured pigment style.

Color in imagery

The secondary palette lives mostly here. A full-color background is not permitted in layout, but imagery is exempt: an illustration may carry color edge to edge.

What to avoid

Stock photography, clinical laboratory imagery, and the blue-gradient visual language of ordinary biotech. The whole point of the pigment and graphite direction is that it does not look like that.

Framed print, business card and letterhead
Office supplies
Cap, t-shirt, pencil and tote
Merch
Social posts, a website module and a bio card
Digital
A billboard and a transit screen
Out of home

Office supplies

Stationery and the everyday printed items. The short elevator pitch is the standard body copy on these.

Merch

Apparel and physical goods. The logomark alone usually does the work, since the full lockup rarely has the room it needs.

Digital

Social, email and interface surfaces. The numbered eyebrow and the short standfirst pattern live here, as do team bios: a graphite portrait with a name, a role and a short paragraph.

Out of home

Posters and large format. For OOH, social, and email marketing, headlines can shift to Red Ochre or Blue instead of Ink. Body copy stays neutral regardless of the headline color chosen.

Visual

Motion

Four curves, three durations, three distances, four stagger intervals. Every value here plays on the page, so a token is watched before it is read.

The principle

Restrained, deliberate motion that follows the mark's own story: damage, repair, rest.

01

Two curves carry everything.

Every entrance layers ease.neutral for opacity with ease.enter for lift.

opacityease.neutral
liftease.enter
duration1000ms

Easing curves

Opacity curve

ease.neutral

cubic-bezier(0.5, 0, 0.5, 1)

A gentle ease in both directions. Nothing appears or disappears abruptly.

opacity only

Lift curve

ease.enter

cubic-bezier(0, 0, 0.2, 1)

Fast out, slow to arrive. Every element eases to a stop instead of hitting one.

lift only · full track

Composed entrance

both, in parallel

opacity + lift · 1,000ms

Both curves run at once, on the same clock. This is the default arrival.

opacity + lift
ease.neutralcubic-bezier(0.5, 0, 0.5, 1)opacity, soft fades, shimmerCopy
ease.entercubic-bezier(0, 0, 0.2, 1)entrance lift and translateYCopy
ease.standardcubic-bezier(0.4, 0, 0.2, 1)hover, press, image revealCopy
ease.exitcubic-bezier(0.4, 0, 1, 1)dismiss, exit, collapseCopy
02

One translucent button.

The brand's own call to action: white at 90 percent on a dark ground, going fully opaque on hover.

triggerhover
in200ms
out400ms
delay0ms
easingease.standard
animatesbackground opacity
background90% → 100%
pressscale(0.98)

Button hover state

--motion-duration-react-in200msHover / press response, the fast half of the asymmetric pairCopy
--motion-duration-react-out400msHover / press release, settles slower than it engagedCopy
--motion-duration-press80msPress (:active), scale(0.98), immediate tactile feedbackCopy
03

Small moves only.

Three lift values, one per context. Everything taking part in an entrance travels the same distance; nothing goes further than the largest.

8pxmicro
12pxmacro
20pxhero

Movement distance

Labels and metadata

Program status

InterceptionPreclinical2027 readout
Cohortn = 240
SiteCambridge, MA

Updated 12 March · Internal

8pxSmall interface elements

The move is barely a move: enough to register as arriving without pulling the eye off the content it sits beside.

--motion-lift-micro8pxElement accents · labelsCopy
--motion-lift-macro12pxCards · content revealsCopy
--motion-lift-hero20pxDisplay headingsCopy
04

Order, not spectacle.

Duration and easing hold steady; only the gap between siblings changes. Four intervals, each in the situation it was written for.

0mstogether
120msdefault
180msfeature
240msnarrative

Stagger behavior

Loading state

0msUtility UI and skeletons

Arrives as one state change. Utility UI narrates nothing, so nothing waits its turn.

--motion-stagger-simultaneous0msutility UI · skeletonsCopy
--motion-stagger-default120mscards · lists · UI revealsCopy
--motion-stagger-feature180mscollections · storefrontsCopy
--motion-stagger-narrative240mshero · campaignsCopy
05

Put together.

Every rule above becomes one reveal here: opacity, lift, distance, and stagger, together.

Triggerscroll
Playonce
Threshold15% visible
Duration1000ms
Distance12px
Stagger120ms

Composed entrance

The team

Alan Tomusiak, PhD

Alan Tomusiak, PhD

CEO

Carlos Galicia, PhD

Carlos Galicia, PhD

Director of Research

Eddie Anderton, PhD

Eddie Anderton, PhD

Head of Development

Katrina Mae Reyes

Katrina Mae Reyes

Computational Scientist

--motion-duration-reveal1000msComposed entrance, opacity + lift togetherCopy

The rule for new motion

Before adding a new animation value, decide whether the interaction maps to one of the behaviors above: react-in/out, a composed reveal, or exit. Reuse the token that matches. Add a new token only when the interaction is a genuinely different behavior. Different components may animate different properties while still sharing the same token.

Interface

Tokens

The design system's tokens to pull from, generated from the one file that holds them. Copy a row, or take a family as a file.

Color22
--ink#231E1AprimaryCopy
--white#FFFFFFprimaryCopy
--off-white#FCFAF9primaryCopy
--red-ochre#851C08primaryCopy
--orange-ochre#CC7722secondaryCopy
--blue#678FC9secondaryCopy
--green#2B5A3EsecondaryCopy
--ground#FBF8F1neutralCopy
--beige#F4F1ECneutralCopy
--dark-beige#DCD8D1neutralCopy
--red-ochre-15#E9D7CEtintCopy
--orange-ochre-15#F5E6D9tintCopy
--blue-15#E5E8EBtintCopy
--green-15#DDE2DDtintCopy
--ink-75#231E1ABFalphaCopy
--textvar(--ink)semanticCopy
--surfacevar(--white)semanticCopy
--backgroundvar(--ground)semanticCopy
--accentvar(--red-ochre)semanticCopy
--accent-2var(--orange-ochre)semanticCopy
--accent-4var(--blue)semanticCopy
--accent-5var(--green)semanticCopy
Type46
--font-display"Rhymes Text"font familyCopy
--font-sans"System"font familyCopy
--weight-light300font weightCopy
--weight-regular400font weightCopy
--text-eyebrow-size16pxtype rampCopy
--text-eyebrow-leading1.1type rampCopy
--text-eyebrow-tracking0.02emtype rampCopy
--text-headline-large-size96pxtype rampCopy
--text-headline-large-leading90pxtype rampCopy
--text-headline-large-tracking-0.05emtype rampCopy
--text-headline-medium-size64pxtype rampCopy
--text-headline-medium-leading1type rampCopy
--text-headline-medium-tracking-0.04emtype rampCopy
--text-headline-small-size48pxtype rampCopy
--text-headline-small-leading1type rampCopy
--text-headline-small-tracking-0.04emtype rampCopy
--text-headline-x-small-size36pxtype rampCopy
--text-headline-x-small-leading1type rampCopy
--text-headline-x-small-tracking-0.04emtype rampCopy
--text-title-large-size24pxtype rampCopy
--text-title-large-leading1.2type rampCopy
--text-title-large-tracking-0.01emtype rampCopy
--text-title-medium-size20pxtype rampCopy
--text-title-medium-leading1.2type rampCopy
--text-title-medium-tracking-0.01emtype rampCopy
--text-title-small-size18pxtype rampCopy
--text-title-small-leading1.2type rampCopy
--text-title-small-tracking-0.01emtype rampCopy
--text-body-large-size22pxtype rampCopy
--text-body-large-leading1.5type rampCopy
--text-body-large-tracking0emtype rampCopy
--text-body-medium-size18pxtype rampCopy
--text-body-medium-leading1.5type rampCopy
--text-body-medium-tracking0emtype rampCopy
--text-body-small-size16pxtype rampCopy
--text-body-small-leading1.4type rampCopy
--text-body-small-tracking0emtype rampCopy
--text-label-large-size18pxtype rampCopy
--text-label-large-leading1.4type rampCopy
--text-label-large-tracking0.04emtype rampCopy
--text-label-medium-size16pxtype rampCopy
--text-label-medium-leading1.4type rampCopy
--text-label-medium-tracking0.05emtype rampCopy
--text-label-small-size14pxtype rampCopy
--text-label-small-leading1.4type rampCopy
--text-label-small-tracking0.05emtype rampCopy
Layout24
--layout-module90pxlayoutCopy
--canvas-desktop1512pxlayoutCopy
--canvas-mobile393pxlayoutCopy
--rail-width90pxlayoutCopy
--rail-padding-inline34pxlayoutCopy
--rail-radius12pxlayoutCopy
--margin-left180pxlayoutCopy
--margin-right90pxlayoutCopy
--section-padding-block240pxlayoutCopy
--section-padding-block-loose264pxlayoutCopy
--width-full1256pxlayoutCopy
--width-column610pxlayoutCopy
--width-narrow414pxlayoutCopy
--gap-inner10pxlayoutCopy
--gap-related20pxlayoutCopy
--gap-parts55pxlayoutCopy
--gap-blocks120pxlayoutCopy
--radius-card6pxlayoutCopy
--radius-pill100pxlayoutCopy
--hairline1pxlayoutCopy
--rule-mark27.5pxlayoutCopy
--logo-min-height40pxlogoCopy
--tag-padding-inline10pxcomponentCopy
--tag-padding-block8pxcomponentCopy
Motion18
--motion-ease-neutralcubic-bezier(0.5, 0, 0.5, 1)motion easingCopy
--motion-ease-entercubic-bezier(0, 0, 0.2, 1)motion easingCopy
--motion-ease-standardcubic-bezier(0.4, 0, 0.2, 1)motion easingCopy
--motion-ease-exitcubic-bezier(0.4, 0, 1, 1)motion easingCopy
--motion-duration-react-in200msmotion durationCopy
--motion-duration-react-out400msmotion durationCopy
--motion-duration-reveal1000msmotion durationCopy
--motion-duration-press80msmotion durationCopy
--motion-lift-micro8pxmotion liftCopy
--motion-lift-macro12pxmotion liftCopy
--motion-lift-hero20pxmotion liftCopy
--motion-stagger-simultaneous0msmotion staggerCopy
--motion-stagger-default120msmotion staggerCopy
--motion-stagger-feature180msmotion staggerCopy
--motion-stagger-narrative240msmotion staggerCopy
--motion-lift-micro4pxmotion lift, mobileCopy
--motion-lift-macro6pxmotion lift, mobileCopy
--motion-lift-hero10pxmotion lift, mobileCopy

Click any row to copy its value, or take a family or the whole set as a file.