Download

Brand guidelines · v0.5.6 · August 2026

Lore, for people making things about Lore.

Everything a launch video needs: what Lore is, how it looks, how it moves, how it talks, and the files. Every value on this page is lifted from the shipped app — nothing here is aspirational. If the app and this page ever disagree, the app is right; tell us.

The creatures on this page are alive: they blink, breathe, look around, glance at your cursor, and notice when you click them. Nothing is a video.

01

The idea

It notices the stuff you'd forget, and lives in your notch.

Lore is a proactive assistant for the Mac. It reads what's already there — iMessages, calendar, mail, Slack — and speaks up on its own, a few times a day, before something slips: the reply you meant to send, the dinner that moved, the budget you promised by Friday.

What it is, in one breath

A small card in the MacBook notch that opens when Lore has something real, and a chat-first assistant underneath with one memory across conversations, notes, reminders and calendar. Hold ⌃⌥ anywhere — even in a full-screen app — and talk to it; it answers out loud, from the notch, in its own voice. Hold fn and it takes dictation and cleans it up.

Why it's different — four beats, in this order

  1. Proactive, not summoned. Every other assistant waits for a prompt. Lore interrupts — at most a handful of times a day, hard cap — and only with something that would otherwise slip.
  2. It lives where you already look. The notch, not a window. Present without being a destination. Nothing to open, nothing to check.
  3. Your life is the input. It reads the same copy of your messages the Messages app does — on your Mac. The index lives there. Nothing is used for training.
  4. It's someone, not something. Lore has a body: a small soft creature with two eyes and no mouth that looks at what you're doing, listens when you talk, and points at things. Setting it up is meeting it, not installing it.

The essence, three words

quietNear-black surfaces, hairline structure, one accent. Lore earns attention; it never grabs it. Stillness is part of the character.
personalFaces and first names everywhere. The founder greets you himself. Reminders are spoken the way a person leans in.
aliveNothing decorative moves, but what moves is genuinely alive: springs with mass, a mark that never repeats a shape, a creature that looks around.

The four rules — locked, not preferences

  • Your iMessages stay on your Mac. The index lives here. Only what's needed to answer a question ever travels — never used for training.
  • Quiet by design. It speaks up when something would slip, and shuts up the rest of the time. No feed, no badges.
  • You approve every send. Lore drafts; you say send. Nothing leaves in your name without your yes.
  • Free during the beta. No card, no trial clock. Twenty dollars a month once the beta ends — said up front.

The arc a first meeting should follow

“This feels premium.” → “Wait, that's adorable.” → “Oh wow, this can actually do things for me.”

That is the onboarding's emotional arc, and it's the launch video's too. Premium first (black, the mark, the music), then the creature, then proof — a real notice, a real reply, a real calendar fix.

02

The mark

Four circles melted into one liquid silhouette.

Not a logo animation — a creature's first form. Four circles on a 32-unit canvas, merged by a goo filter (blur, then an alpha threshold). White on dark, carrying its own soft halo. It drifts; it is never rotated, spun, bounced, or tweened between keyframes.

Geometry

circlecxcyr
113127.0
220146.5
315206.8
420.5195.5

Canvas 0–32 on both axes; centre (16, 16); nominal reach 10.5 units. Goo filter: Gaussian blur σ 2.2, then alpha × 20 − 9. The path SVG in the kit is the same silhouette pre-computed (the union of the circles, radii smoothed), for tools that can't run a filter.

How it moves

Each circle's x, y and radius ride two sines — the second at the golden ratio of the first — so the four never come back into phase and the silhouette is a different shape every time you look. Amplitudes are large on purpose: ±2.9 units on a 32-unit mark is a lobe visibly swelling and retreating, not a shape jiggling in place.

At rest it is simply still. In motion it drifts. There is no third state — no spin, no pulse, no bounce, no wipe. If you animate it by hand, use slow overlapping sines with irrational ratios; better, record the living mark from the stage above on true black.

Colour, glow, clearspace

  • White on dark. The app icon is the mark white on black in the macOS squircle — never re-tinted.
  • The halo is the mark's own: a soft white shadow that tracks the silhouette. On the web: drop-shadow(0 0 10px rgba(255,255,255,.28)) drop-shadow(0 0 26px rgba(255,255,255,.18)). Composite with screen / add (plusLighter) — never paste it as an opaque box.
  • Clearspace half the mark's width on all sides. Minimum 16 px at 1× (32 px at 4K); below that use the mark alone, no wordmark.
  • The periwinkle mark exists (see lockups) and is the only recolour. No gradients inside it.

Don't

  • Put it on a light background — invert the page to dark instead. The brand is dark-first; there is no light mode.
  • Give it a face. The mark never has eyes; that's the companion's job. They are the same light in two forms — the cold open turns one into the other.
  • Rotate, spin, stretch, or keyframe it. Turning a shape is something done to it; the drift is what it does by itself.
  • Use it as a bullet, a pattern, or a watermark tile.

The shipped markup

<svg viewBox="0 0 32 32" width="64" height="64">
  <defs>
    <filter id="goo" x="-30%" y="-30%" width="160%" height="160%">
      <feGaussianBlur in="SourceGraphic" stdDeviation="2.2" result="b"/>
      <feColorMatrix in="b" type="matrix"
        values="1 0 0 0 0  0 1 0 0 0  0 0 1 0 0  0 0 0 20 -9"/>
    </filter>
  </defs>
  <g filter="url(#goo)" fill="#fff">
    <circle cx="13"   cy="12" r="7"/>
    <circle cx="20"   cy="14" r="6.5"/>
    <circle cx="15"   cy="20" r="6.8"/>
    <circle cx="20.5" cy="19" r="5.5"/>
  </g>
</svg>
// one circle, one axis — two sines, the second at the golden ratio of the first
drift(t, rate, phase, amount) =
  amount * ( 0.62 * sin(t * rate + phase)
           + 0.38 * sin(t * rate * 1.618 + phase * 2.3 + 0.7) )

// the four tracks (rate · phase · amount), in 32-unit mark space
x1 = 13   + drift(t, 0.53, 0.0, 2.9)   y1 = 12 + drift(t, 0.61, 1.9, 2.6)   r1 = 7   + drift(t, 0.44, 3.4, 1.25)
x2 = 20   + drift(t, 0.67, 2.6, 2.7)   y2 = 14 + drift(t, 0.49, 0.8, 2.9)   r2 = 6.5 + drift(t, 0.58, 4.1, 1.3)
x3 = 15   + drift(t, 0.46, 5.0, 2.8)   y3 = 20 + drift(t, 0.72, 3.1, 2.5)   r3 = 6.8 + drift(t, 0.51, 1.2, 1.25)
x4 = 20.5 + drift(t, 0.75, 4.4, 2.6)   y4 = 19 + drift(t, 0.56, 2.2, 2.8)   r4 = 5.5 + drift(t, 0.63, 5.6, 1.15)
03

Wordmark & lockups

“Lore”, set beside the mark, in SF Pro Bold.

One lockup: horizontal, the wordmark at roughly 60% of the mark's height, with a gap of about a quarter of the mark's width. Sentence case, weight 700, tracking −0.02em. Never letterspaced, never outlined, never light.

Primary — white on ground
Primary — white on groundThe default everywhere. Ground #0A0A0B or true black.Download 4K PNG
Accent — periwinkle mark
Accent — periwinkle markThe mark alone takes the accent; the wordmark stays white. One per piece.Download 4K PNG
Inverted — black on light
Inverted — black on lightOnly when the context forces a light surface (a partner's white page). Not a brand choice.Download 4K PNG
End card — white on periwinkle
End card — white on periwinkleA marketing end card. Never a UI surface, never behind text.Download 4K PNG

Proportions

Mark 72 → wordmark 44 px (≈ 60%), gap 18 px (≈ 25%). The footer of the site sets it 52 / 34 / 13. Align the wordmark's x-height to the mark's optical centre.

Where the mark goes alone

  • Anywhere under 16 px (app chrome, the menu bar item, the notch).
  • Centred compositions — an end card can be the mark alone, large, with the wordmark on its own line beneath at the same 60%. Ask before inventing a new lockup.
  • The site's footer runs “Lore” at 25vw as a cropped wall-painting — the wordmark as texture is allowed once, at the very end.

Don't

  • Letterspace, outline, or italicise the wordmark.
  • Set it in Inter on a Mac — SF Pro is on every Mac. Inter (−0.02em) is only for deliverables that must render off Apple hardware.
  • Use title case (“Lore For Mac”) or all caps anywhere outside eyebrow labels.
  • Put the wordmark on the iridescence or the beam.
04

Colour

Dark-first is not a theme. It's the identity.

Near-black surfaces, pure white type, one accent. Hairline borders carry structure; white glow carries state. Full colour exists in exactly two places, and both are moving light — never paint.

Surfaces — the stage

#0A0A0B
Ground--lore-bgrgb(10, 10, 11)

The page. Every screen's bottom layer. Not #000 — true black is reserved for the cold open's veil.

#131316
Sheet--lore-sheetrgb(19, 19, 22)

The content sheet the active tab welds into; screenshots and demos sit on it.

#141416
Surface--lore-surfacergb(20, 20, 22)

Cards, controls, the composer.

#1C1C1F
Raised--lore-raisedrgb(28, 28, 31)

Hover tier, elevated chips, menus.

Text

#FFFFFF
Text--lore-textrgb(255, 255, 255)

Headings and body. Pure white by ruling — #F5F5F7 read as dim on the sheet.

#86868B
Muted--lore-mutedrgb(134, 134, 139)

Secondary copy, captions, dates.

#5B5B60
Faint--lore-faintrgb(91, 91, 96)

Tertiary, disabled. Under AA for body text — chrome only.

The one accent

#8F9FF5
Periwinkle--lore-accentrgb(143, 159, 245)

The only non-monochrome UI colour. Links, the one primary CTA, NEW tags, progress, the unread dot. A scarce resource: once per viewport.

#5C70DB
Periwinkle, deep--lore-accent-deeprgb(92, 112, 219)

The same voice on unknown backgrounds — marks drawn over the user's own screen, where light-on-light disappears.

rgba(143,159,245,0.13)
Wash--lore-accent-washrgb(13% over ground)

Tinted fills behind accent elements; the active row; the icon tile.

The rule that keeps the whole thing coherent: periwinkle is a scarce resource. One accent element per viewport, per frame. If two things are periwinkle at once, one of them is wrong.

Structure vs. state — the two-material rule

1 · Hairline borders carry structure.rgba(255,255,255,0.09) — strong 0.14 — focus 0.55. Cards, dividers, pills. Always 1 px.
strongmediumfaint
2 · Glow carries state, on a 4 : 2 : 1 ladder.Strong 0.28 (something waiting for you — the notch, the listening orb) · medium 0.14 (focus) · faint 0.07 (hover). Never add a tier; never use glow as decoration.

Radii, spacing, shape

radius sm8
radius md10
radius lg14cards, sheets
pill999buttons, inputs, chips
notch corners13the real notch
panel corners20the expanded notch

Spacing runs 4 · 8 · 12 · 16 · 24 · 32 · 48 · 64. Chrome tight, content spacious; sections breathe at 48/64. Nothing sharper than 8, nothing rounder than a pill.

Chroma is light in motion — the beam and the iridescence

Ask Lore anything…⌃⌥ to talk · fn to dictate

The beam is the border-light that runs the composer and the notch — the one chromatic surface. Its nine colours are positioned soft blobs hugging a border path, never a flat gradient fill. One beam per viewport. The app renders it natively on the notch from the same spec.

crimson#FF3264azure#288CFFgreen#32C850teal#1EB9AAviolet#6446FForange#FF7828magenta#F032B4purple#B428F0amber#FFA01E
135° · blue → lilac → pink → mint · 6–10% alpha

The iridescence — --lore-iridescence — is a 135° wash at 6–10% alpha: blue → lilac → pink → mint. Key surfaces only (the orb, the composer's ground), never section backgrounds.

The notch light. When the notch has something, it casts periwinkle down the screen: radial rgba(143,159,245,.46) at top-centre, screen blend, breathing on a 9 s clock. It only ever lightens what's under it.

Never use these palettes for buttons, text, charts, or section backgrounds. A flat rainbow anything is off-brand. If a scene needs energy, it gets the beam or the mark — not coloured paint.

The profile palette — six, tuned to one lightness

#8F9FF5
Periwinkle--lore-profile-periwinklergb(143, 159, 245)

The default — a profile nobody recoloured looks like the rest of Lore.

#7FC4A3
Sage--lore-profile-sagergb(127, 196, 163)
#E0B072
Amber--lore-profile-amberrgb(224, 176, 114)
#F0918C
Coral--lore-profile-coralrgb(240, 145, 140)
#6FBCD6
Teal--lore-profile-tealrgb(111, 188, 214)
#C297E8
Lilac--lore-profile-lilacrgb(194, 151, 232)

A profile's colour comes from this fixed set rather than a picker: each is tuned to the accent's perceived lightness, so no profile shouts louder than another at 13 px. Names, not hexes, are what the app stores. Each ships with a 13% wash.

05

Typography

SF Pro, sentence case, white.

In product and on the web: the system stack — SF Pro renders for Apple visitors, who are the audience. Headlines and the wordmark are 700; UI emphasis 600; body 400. Tracking −0.02em at display sizes, 0 otherwise. Sentence case everywhere, including headlines.

display52px · 700 · 1.1 · -0.02em
Hi. I'm Lore.

Hero headline only. Marketing and first-run — never inside the working app.

3xl38px · 700 · 1.15 · -0.02em
It notices the stuff you'd forget.

Section headlines.

2xl28px · 700 · 1.2 · -0.015em
It notices the stuff you'd forget.

Card titles, sub-heros. The app's ceiling.

xl22px · 600 · 1.25 · -0.01em
It notices the stuff you'd forget.

Feature titles.

lg17px · 400 · 1.5 · 0
It notices the stuff you'd forget.

Leads.

base15px · 400 · 1.5 · 0
It notices the stuff you'd forget.

Body.

sm13px · 400 · 1.45 · 0
It notices the stuff you'd forget.

Captions, meta, menu bar.

xs11px · 700 · 1.3 · 0.12em
New · Beta · Checked 2m ago

Eyebrows, tags — uppercase, tracked +0.12–0.14em.

Stacks

font-family: -apple-system, "SF Pro Text", "SF Pro Display", system-ui, sans-serif;
/* mono — receipts, code, numbers that must align */
font-family: ui-monospace, "SF Mono", SFMono-Regular, Menlo, monospace;

In After Effects / Premiere on a Mac: SF Pro Display Bold for titles at and above 20 px, SF Pro Text below. Don't ship SF Pro itself off Apple hardware — for a deliverable that must render elsewhere, use Inter with −0.02em display tracking.

Leading & tracking

tight1.25headlines
normal1.5body
relaxed1.65long-form
display tracking−0.02em
eyebrows+0.12–0.14emuppercase, 11–12px, 700
numberstabularthe menu-bar clock, receipts

Rules

  • The display tier (52 / 38) exists for marketing and first-run only. Inside the working app nothing exceeds 28 px — big type is how the brand speaks about itself; small type is how it works.
  • Pure white #FFFFFF for headings and body. Muted #86868B for secondary.
  • Sentence case. No title case. No ALL CAPS outside eyebrow labels.
  • Gradient text. Outlined text. Light weights for headlines.
06

The companion

Lore has a body. A small soft one, with two eyes and no mouth.

The companion is the cold open's white mark become someone: a body and two capsule eyes, adapted from Blobatar (MIT). Its silhouette is its identity, its eyes carry attention, its breath carries speech, and colour carries mood only at the edges. Every creature on this page runs the app's own math, live.

No name yetBefore it's anyone: pure white, dark-eyed, a true circle, no decoration. Every install meets this one first.round · pale · 250°
LoreBase Lore: the pale, round creature the mark becomes — hue 250, tone pale, shape round.round · pale · 250°

Anatomy

  • Body. One fill, one silhouette: a superellipse (round, boxy) or a closed Catmull-Rom spline over seeded radii (organic, cloud). Decoration — petals, bumps — rides a ring just outside the core, behind it.
  • Eyes. Two vertical capsules (superellipse, n 3.5–6), the far one slightly larger — that reads as personality, not perspective. They always sit inside the body by construction. Dark eyes on a light body, light eyes on a dark one, 4.5:1 minimum — the WCAG text floor, because they must read at 24 px.
  • No mouth. On purpose. Speech is a breath-scale pulse driven by the live audio level (+4.5% wide, +12% tall at peak). Emotion is eyes, body offset, a tremor, a tint — never a new mark.
  • The hand. When it tours, it points: a tapered limb out of the body's edge, a small palm, one index finger continuing the arm's own direction. Body-coloured, emerging from under the core.

Where it lives

One creature, native, in a click-through overlay — never a DOM element — so it can travel: the cinematic intro → the onboarding card's seat → beside your cursor when you hold ⌃⌥ → a browser tab during sign-in → the notch. It never takes a click. When the app loses the stage it steps out of the light rather than floating over someone else's work. Modes: centre stage (birth), seated, following, touring, docking.

Identity comes from a name

A name is hashed into traits — body size, eye size and lean, lopsidedness, blink and glance timing — so Alain and Alaim are visibly different creatures and renaming reshuffles the face. Three axes are pinned on top by the identity itself: a hue (0–360, free), a tone (one of six authored swatches), and a shape (one of six silhouettes, weighted so rounds are everyday and suns are a find).

During onboarding, one model call reads the user's first name and names their creature from what the name means — never how it sounds. Tristen might get Wren, never Tristle. Names are real small words or standalone names (Wren, Moss, Juno, Ember); never a cutesy suffix (no -ling, -let, -kin). The reason line is fixed in form and tinted in the creature's own colour:

your name means bright sea, so this one came out a little wave.

toneOKLCh LCat hue 250eyes
pastel0.860.085#aed5ff#091018
pale0.900.028#d1e0f0#091018
mid0.730.135#60adf9#091018
deep0.620.165#1c89e4#091018
bright0.870.160#b4d8ff#091018
ink0.340.035#2a394a#eff6fd

Body must clear 1.5:1 against the ground (#0A0A0B); eyes must clear 4.5:1 against the body. Ink stops at L 0.34 — darker vanishes on dark surfaces. The blank one is body #ffffff, eyes #24242e; base Lore is body #d1e0f0, eyes #091018.

Six silhouettes

round28% · the everyday oneround · pale · 250°
organic30% · a lopsided pebbleorganic · pale · 250°
boxy14% · a leaned superellipseboxy · pale · 250°
nub12% · one or two bumps on the edgenub · pale · 250°
cloud9% · bumps along the topcloud · pale · 250°
sun7% · petals all round — the findsun · pale · 250°

Six tones

pastel#aed5ff · eyes #091018round · pastel · 250°
pale#d1e0f0 · eyes #091018round · pale · 250°
mid#60adf9 · eyes #091018round · mid · 250°
deep#1c89e4 · eyes #091018round · deep · 250°
bright#b4d8ff · eyes #091018round · bright · 250°
ink#2a394a · eyes #eff6fdround · ink · 250°

Hue is the one free axis

0°#eb81a4
30°#f08574
60°#e59146
90°#c9a32e
120°#9db449
150°#62bf79
180°#00c2ab
210°#00bcd3
240°#49b2f3
270°#87a2fd
300°#b593f0
330°#d787d0

Sixteen named ones

The curated pool the app mints from when it's offline, each given a hue, tone and shape here. Click any of them. Hover for what they're made of; SVG downloads a still.

Thirteen poses

A pose moves parts the creature already has — eye scale, tilt, offsets, a rigid body shift, a tremor, a tint — and never adds a mark. Every pose differs from its nearest neighbour on at least three channels, never on tint alone, so the roster still works in greyscale. Intensity scales the distance from idle: 0.4 of happy is a smaller smile, not a different face. Poses interpolate; nothing snaps.

idleLevel, open, looking around. Most of its life.
idleLevel, open, looking around. Most of its life.
happyWide flat arcs riding high — the universal smiling squint. No mouth appears.
sadSmall eyes, low and drifted apart, over a body that sinks.
madA hard \ / of flat bars over a body that runs hot and trembles.
surprisedThe only pose that grows the eyes — wide and lifted.
winkOne eye shut, the other open — built on the right-eye differentials.
sleepyLevel lids low over a sunk body.
smugHalf-lidded and cocked — a head tilt, not a brow.
unsureOne eye squeezed, the pair barely moved — 'unsure' without a mouth to twist.
scaredSmall, converged, shivering — arousal is not only anger.
loveTall narrow eyes drawn together, lifted, and rose.
shySmall squeezed eyes, low, over a body that sinks and blushes pale.
sickFlat bars slumped into a / \, green-tinted, a faint tremor.

Expression in practice — what triggers what

Voice phases
listening
surprised 0.85 — eyes wide on you, still, body leans in 1.14×, one blink
thinking
unsure 0.95 — a blink, then eyes drift up and aside (the classic think)
answering
happy 0.4, body rises 1.07×, breath pulses with the words
failed
sad 0.55 for 2.2 s
Events
connected · granted · task done
happy 1.0 for 1.8 s
connect failed · denied
sad 0.5 for 2.2 s
noticed something
surprised 0.7 for 1.6 s
waiting
sleepy 0.35 for 3.5 s
proud · shy
smug 0.5 · shy 0.6
The words it's saying (first 80 characters)
“sorry”, “unfortunately”, “I couldn't”
sad 0.5
“hmm”, “I'm not sure”, “it depends”
unsure 0.45
“whoa”, “wow”, “heads up”
surprised 0.5
“done”, “sent”, “all set”, “perfect”
happy 0.55
“hey”, “hi”, “morning”
happy 0.4

There is no emotion channel in the voice stack — expression is derived from phases, status, events and words. Unknown inputs map to nothing. A creature that emotes on every tool call reads as a slot machine; only the spatial and emotional moments get a reaction.

How it moves — the numbers

blink70 · 40 · 130 msshut · hold · open — asymmetric like a real lid
blink interval3.5–6.5 sseeded per creature, × 0.7–1.3 each time
glances (seated)every 4.2–7.6 ssix fixations; rest twice as often as anywhere else
glances (in the open)× 0.22 intervalbigger (×3.6 / ×3.2), darting, 30% wide-eyed wonder
gaze snap9 / s17 darting, 28 anticipation kick — exponential approach
breathing2.8 s+2.2% wide as −1.8% tall, counter-phase
bob3.4 s±1.1 units of 100 — slow vertical drift
speech pulse+4.5% · +12%wide · tall, by live output level; decays e^(−3.2t)
tremor0.112 s loopirregular; mad 0.55, scared 0.35, sick 0.18
position spring120 / 14seated 130/15 · following 170/17 · centre stage 90/13
squash1+s × 1/(1+0.85s)along the heading, volume-conserving; stretch lags speed
both eyesmove as oneindependent movement reads as a lazy eye instantly

Stillness is part of the character: idle amplitudes are small, and reduced motion removes them entirely (breathing only). Seated, it glances politely; out in the open beside the cursor it's a kid seeing everything for the first time — subtle reads as dead at that size.

It points at things

Ask Lore anything…
the composer

Touring: it parks just outside a highlight box, looks at it, and points. The box draws itself on over 0.42 s (dash-offset) with a small white caption naming the control — the product's teaching gesture. The finger continues the arm's own line so it can only mean “that one”.

Sizes it lives at

24pxfloor — the eyes must still read
40pxdocked, in-app perch (64pt frame)
62pxriding beside the cursor (62pt)
112pxseated in the onboarding card (124×112pt seat)
200pxcentre stage at birth — matched to the cold open's orb

The eyes set the floor: 24 px is the smallest it may ever be drawn. Riding the cursor it sits 20 pt right and 24 pt below the pointer (never under what you're about to click). At birth it appears as exactly the cold open's orb — same size, same spot — so the mark can fade off it without a seam.

07

The notch

A native panel that floats above everything, even full-screen apps.

The notch is the product's front door: dormant it's the hardware notch; when Lore has something it grows into a card. It is real macOS chrome — a non-activating panel — not a web view, and every screenshot of it must come from the running app.

Geometry (points)

pill fallback168 × 32Macs without a notch — about half of all Macs
peek460 × 44one line: a name, a promise
expanded width600
voice540compact 440 · thinking 330
max content height420
notch corners13panel 20
edge glowα 0.13 · blur 20glow padding 28
menu bar (site)34the real bar is ~37 pt on notch Macs

Faces

  • dormant — the hardware notch, the mark's light faintly alive.
  • peek — one line slides down: “Tristen — you promised the Q3 budget by Friday.”
  • announce — the same, spoken aloud, waveform at the right.
  • hub — the morning brief: suggestions, a calendar chip, people.
  • detail — one notice opened, with its actions (“Copy reply & open”, “I'll do this later”).
  • listening — ⌃⌥ held: the beam runs, your words appear as you say them.
  • thinking — narrow, the shimmer.
  • answering — the answer, spoken, the beam alive.

How it moves

  • Spring 200 / 26 — the cinematic spring. It grows from the notch; it never fades in from nowhere.
  • The beam runs only while it's listening or answering. Strong glow (0.28) means something is waiting for you.
  • The notch light spills periwinkle down the screen when it's lit (screen blend).
  • Text arrives word by word with a brief blur-glint. Boxes draw themselves on. A plain cross-fade is the last resort.
08

Motion

Motion is state change. Nothing moves that isn't becoming something else.

Two springs, matched to how often a thing is seen. No ambient parallax, no scroll-jacking, no floating decorations. Springs have mass: slight overshoot, then settle — the liquid read comes from stretch that lags position.

The two springs

namespringfallbackuse
ui400 / 30180 mshover, tabs, inputs — instant
notch200 / 26350 mspanels, cards, reveals — cinematic

Fallback curve for both: cubic-bezier(0.32, 0.72, 0, 1) — starts fast, settles slow. Stiffness / damping at mass 1; in After Effects terms 400/30 lands in roughly 350 ms with a hair of overshoot, 200/26 in roughly 700 ms.

In frames (24 / 30 / 60 fps)

ui · 180 ms4 / 5 / 11
notch · 350 ms8 / 11 / 21
cue box draw · 420 ms10 / 13 / 25
entrance · 800 ms19 / 24 / 48
blink · 240 ms6 / 7 / 1470 shut · 40 hold · 130 open
breath · 2.8 s67 / 84 / 168

The house moves

  • Draw, don't fade. Boxes stroke themselves on (0.42 s, dash-offset). Text arrives word by word with a blur-glint. Light travels along paths.
  • The entrance. Nothing is simply there — it resolves: unblur 12 px → 0, rise 18 px → 0, fade 0 → 1, 800 ms on the curve.
  • Springs have mass. Overshoot slightly and settle. The creature squashes along its heading when it moves, volume-conserving.
  • Reduced motion is honoured bluntly — everything to 0.01 ms; the creature keeps only its breathing.
  • Ambient parallax, floating decorations, particles, confetti, scroll-jacking, logo spins.

The cold open — the first twelve seconds, on the app's own clock

0sblack1.70smark fades up5.20sgrows10.20sthe hit — lobes converge10.50sveil lifts11.55shandoff12sfirst screen
0.00sof 12.0s — the length of the song's intro

Black, and only black, for 1.7 s — long enough to be a beat of its own. A small mark fades up out of it over 4.6 s, very slowly, with its own white halo. From 5.2 s it grows over five seconds to full size, drifting the whole way. On the song's hit at 10.2 s its four lobes draw together into one round white body — the creature — over 1.15 s: the drift calms into the body rather than one shape being swapped for another. At 10.5 s the black lifts like a veil (1.3 s) while the mark is still becoming, revealing the wallpaper and the first card already waiting underneath. At 11.55 s the companion takes over the orb, matched in place, and the mark fades off it. Twelve seconds: the length of the song's intro. The two are meant to land together.

For the web and the video: one cold-open echo is sanctioned — black page, the mark fades up small, grows, the headline arrives. Three seconds maximum on the web, and only on first paint; the video can take the full twelve if the music carries it. No bloom, no white-out, no flash: the creature is the same light condensing, which is why the handoff must read as one object. It does not rotate.

09

Voice & writing

One person talking. Comma, not exclamation.

Lore's writing voice is load-bearing brand. In marketing copy Lore is “it”; Lore speaks as “I” only inside the product. First person singular in marketing belongs to the founder: “Tristen built me. He'll walk you through it.”

Rules, all live in the product

  • Greet like a person, not a notification. “Hey, Tristen — just here to remind you to lock up.” Punctuation is stage direction; the em-dash is the lean-in. Rotating cute openers were tried and cut: being identical is what makes it recognisable.
  • Say what the button does. “Copy reply & open”, “Okay, show me”, “I'll do this later”. Never “Submit”, never “Learn more”.
  • Own lateness in the same breath. “That was 20 minutes ago.” Under fifteen minutes, nobody counts.
  • State, don't sell. “All caught up.” · “Checked 2m ago.” · “Indexed 5,040 messages.” Numbers are the product's proof; let them talk.
  • Honesty over polish. The real price, the real beta terms: “no card, no trial clock”. Promises stated plainly: “Your messages never leave this Mac.”
  • Sentence case everywhere, including headlines. No title case, no ALL CAPS outside eyebrow labels.

Lines that are already canon

  • Hi, I'm Lore.
  • It notices the stuff you'd forget.
  • The AI on your Mac that actually keeps up with your life.
  • Your Mac does the remembering.
  • Try talking to me.
  • I can see what you see.
  • Plug me in.
  • Oh, one last thing.
  • That's everything. I'll be right here when you need me.
  • Four rules. No toggles.
  • Free during the beta · $20/mo after
  • Meet Lore.

Headline register: short declaratives with a hinge. The founder's note on the site is all lowercase — that is his voice, not the product's; don't imitate it in UI.

10

Sound

Five tiny sounds, synthesised, far under the music.

No audio assets ship: the companion's palette is rendered at runtime from shaped sines and filtered noise, so every level is a number somebody can tune. Restraint is the design — nothing fires on movement or on a timer, only on arrivals, transformations and confirmations. It never plays when the Mac is muted.

soundwhenwhat it islength
poparrivala tiny upward blip, 340 → 760 Hz sweep over 80 ms, soft body140 ms
squishlanding after a flightlow breathy squash: 150 → 90 Hz thump under low-passed noise110 ms
confirmdone · connected · yestwo gentle notes up — E5 (659 Hz), then A5 (880 Hz) 130 ms later340 ms
transformbecoming someonea soft shimmer sweep 300 → 920 Hz with a 9 Hz wobble and a sparkle an octave up500 ms
whooshleaving for the cursorair moving — band-passed noise, cutoff rising220 ms
master gain0.16the music sits at 0.25–0.5; the creature stays a layer under it
musicducks under voiceand settles back; a hard mute gate respects the user
the theme's intro12.0 sthe cold open is cut to it — the hit lands at 10.2 s
voiceits ownspoken answers from the notch; the creature's breath follows the level

For the video: the same restraint. A pop when the creature arrives, a confirm when a thing is done, the transform shimmer when it takes its colour. If a sound draws attention to itself, it's too loud.

11

For the launch video

The checklist.

Everything above, folded into what a shot needs. Keep it next to the timeline.

Ground & colour

  • Open on true black (#000). Once there's UI, the ground is #0A0A0B. No light sections, ever.
  • White type #FFFFFF, muted #86868B. Periwinkle #8F9FF5 at most once per frame.
  • The beam's nine colours only as light on a border. The iridescence only as a 6–10% wash. Never flat paint, never gradient text, never a rainbow anything.
  • Composite the mark and its halo with screen/add. Never an opaque box.

The mark & the creature

  • The mark drifts or is still. It never rotates, spins, bounces, or wipes. Record the living one from the stage in §02 if you need motion.
  • The creature's eyes must read: never smaller than 24 px tall on the delivery frame. Both eyes move together. No mouth, ever.
  • Blinks are asymmetric (fast shut, slow open). It breathes on 2.8 s. When it moves it squashes along its heading and settles with mass.
  • Hand animating it? Use the numbers in §06. Better: record it from the pose stage — it looks where your cursor goes.

Type, motion, sound

  • SF Pro Display Bold, sentence case, −0.02em for titles. One idea per card.
  • Ease cubic-bezier(0.32, 0.72, 0, 1). UI 180 ms, cinematic 350 ms, entrances 800 ms with a 12 px unblur. Draw, don't fade.
  • Screenshots only from the running app; the notch is real chrome. No mockup frames, no 3D devices.
  • Sound: the five tiny sounds, far under the music. Voice lines in the product's register — “Hey, Tristen —”, comma not exclamation.

Story shape that matches the product

  1. Black. The mark fades up. Premium first — let it breathe. (0–12 s if the music carries it; 3 s if not.)
  2. The mark becomes the creature. The lobes converge, the veil lifts, it blinks awake. “Hi, I'm Lore.”
  3. A real notice. The notch peeks: “you promised the Q3 budget by Friday — it hasn't gone out.” Own the lateness.
  4. A real conversation. Hold ⌃⌥, ask out loud, it answers out loud from the notch — in a full-screen app.
  5. The rules, plainly. On your Mac. Quiet by design. You approve every send. Free during the beta.
  6. End card. Mark + wordmark, white on ground. “Meet Lore.” loreformac.com

If something you need isn't here — a shot, a size, a still — ask: tristen@loreformac.com. That address is really him.

12

Assets

The files.

Everything below is in lore-brand-kit.zip. Individual files link through. Stills of any creature on this page download from its SVG button; the stages in §02 and §06 are for screen-recording on true black.

filewhatformat
lore-mark-path.svgThe mark as one clean path — no filter. Use this in video, print, anything that can't run SVG filters.vector · 32-unit canvas · white
lore-mark-path-black.svgSame path, black — only for a forced light surface.vector · black
lore-mark-goo.svgThe mark exactly as the app draws it: four circles through the goo filter.vector · white
lore-mark-white-2160.pngThe mark, white, on transparent. The master raster.2160 × 2160 · PNG α
lore-mark-white-glow-1080.pngThe mark with its own halo, on black — how it appears in the cold open.1080 × 1080 · PNG
lore-mark-512.pngThe mark on black, small — the site's favicon master.512 × 512 · PNG
lore-mark-64.pngThe mark, white on transparent, as the notch draws it.64 × 64 · PNG α
lore-app-icon-1024.pngThe macOS app icon: mark white on black in the squircle. Never re-tinted.1024 × 1024 · PNG α
lore-lockup-white-on-black-4k.pngPrimary lockup. Mark + wordmark, white on ground.3840 × 2160 · PNG
lore-lockup-periwinkle-on-black-4k.pngAccent lockup — the mark takes the periwinkle; the wordmark stays white.3840 × 2160 · PNG
lore-lockup-black-on-light-4k.pngInverted lockup. Only when a light surface is forced by the context.3840 × 2160 · PNG
lore-lockup-white-on-periwinkle-4k.pngMarketing lockup on the periwinkle wash. An end card, not a UI surface.3840 × 2160 · PNG
/brand/companions/Thirty-seven stills from the same math the live creatures run: the blank one, base Lore, six silhouettes, the sixteen named ones, and base Lore in all thirteen poses.vector · 100-unit canvas
og-image.jpgThe social card: the notch on a Mac desktop, catching a promise before it slips.2400 × 1260 · JPEG
13

Tokens

Copy-paste.

The design tokens as the site and the app carry them, plus the beam palette. Colours are sRGB; hex and 8-bit values above are the same numbers.

:root {
  /* surfaces */
  --lore-bg: #0a0a0b;          --lore-sheet: #131316;
  --lore-surface: #141416;     --lore-raised: #1c1c1f;

  /* text */
  --lore-text: #ffffff;        --lore-muted: #86868b;   --lore-faint: #5b5b60;

  /* the one accent */
  --lore-accent: #8f9ff5;      --lore-accent-deep: #5c70db;
  --lore-accent-wash: rgba(143, 159, 245, 0.13);

  /* structure — hairlines, never glow */
  --lore-border: rgba(255, 255, 255, 0.09);
  --lore-border-strong: rgba(255, 255, 255, 0.14);
  --lore-border-focus: rgba(255, 255, 255, 0.55);

  /* state — glow, 4 : 2 : 1, never structure */
  --lore-glow-strong: 0 0 24px rgba(255, 255, 255, 0.28), 0 0 8px rgba(255, 255, 255, 0.18);
  --lore-glow-medium: 0 0 14px rgba(255, 255, 255, 0.14);
  --lore-glow-faint:  0 0 12px rgba(255, 255, 255, 0.07);

  /* the only other chroma: light in motion */
  --lore-iridescence: linear-gradient(135deg,
    rgba(168, 192, 255, 0.10) 0%, rgba(228, 178, 255, 0.07) 38%,
    rgba(255, 186, 214, 0.06) 66%, rgba(176, 255, 226, 0.08) 100%);

  /* profile palette — six, tuned to the accent's lightness */
  --lore-profile-periwinkle: #8f9ff5;  --lore-profile-sage: #7fc4a3;
  --lore-profile-amber: #e0b072;       --lore-profile-coral: #f0918c;
  --lore-profile-teal: #6fbcd6;        --lore-profile-lilac: #c297e8;

  /* type */
  --lore-font: -apple-system, "SF Pro Text", "SF Pro Display", system-ui, sans-serif;
  --lore-mono: ui-monospace, "SF Mono", SFMono-Regular, Menlo, monospace;
  --lore-text-xs: 11px;  --lore-text-sm: 13px;  --lore-text-base: 15px;
  --lore-text-lg: 17px;  --lore-text-xl: 22px;  --lore-text-2xl: 28px;
  --lore-text-3xl: 38px; --lore-text-display: 52px;

  /* shape */
  --lore-radius-sm: 8px; --lore-radius-md: 10px;
  --lore-radius-lg: 14px; --lore-radius-pill: 999px;

  /* motion */
  --lore-ease: cubic-bezier(0.32, 0.72, 0, 1);
  --lore-duration-ui: 180ms;     /* spring 400 / 30 */
  --lore-duration-notch: 350ms;  /* spring 200 / 26 */
}
/* border-beam "colorful" — positioned soft blobs hugging the border path.
   Never a flat gradient fill. One beam per viewport. */
crimson  rgb(255, 50, 100)   #FF3264
azure    rgb(40, 140, 255)   #288CFF
green    rgb(50, 200, 80)    #32C850
teal     rgb(30, 185, 170)   #1EB9AA
violet   rgb(100, 70, 255)   #6446FF
orange   rgb(255, 120, 40)   #FF7828
magenta  rgb(240, 50, 180)   #F032B4
purple   rgb(180, 40, 240)   #B428F0
amber    rgb(255, 160, 30)   #FFA01E
durations: line 3.1 s · pulse 2.3 s · rotate 1.96 s · hue range 30°

Source of truth, in order: the shipped app (apps/web/src/design/tokens.css, LoreCore/Companion), then the marketing site, then this page. This page was audited against v0.5.6 on 21 August 2026.