RelayCTX Creative briefsSPEC.pulse-motion.md
RelayCTX Creative · Document

SPEC — Relay Pulse Motion System

551 words · 3 min View raw Source History

SPEC — Relay Pulse Motion System

v3.5 · 2026-07-10 · Owner: EC · Ratified Rules unchanged — carried forward verbatim into v3.5 from v3.4.1 (June 10, 2026, Session FYBFRY), where they were ratified. Extends the pulsing easter egg into a defined motion family.

Naming: "pulse" here is the motion system (--rly-pulse #00D9C8, motion-only). It is unrelated to the product feature formerly named Pulse, which is now Stream (see _vocab/_VOCAB.md).


Premise

The pulse is the one living thing in an otherwise flat system. v3.5, like v3.4 before it, bans shadows, gradients, and glows from product UI — which makes motion the only channel for warmth and life. This spec promotes the easter egg from a one-off to the brand's heartbeat, with hard rules so it never becomes noise.

The colour rule

#00D9C8 is retired from static use. It becomes the pulse colour — it may only appear in motion. The mark, Codes, CTAs, and all static elements use system teal (#0d9488 light / #2dd4bf dark). When something glows #00D9C8, it means something is happening right now.

This resolves the v3.4 dual-teal exception ("mark-only #00D9C8") cleanly: the legacy teal isn't deleted, it's given a job.

The family

#MomentBehaviourLoop?Where
1HeartbeatCore scales 1→1.18, rays shimmer clockwiseYes, 2.8sBrand surfaces only: hero, sign-in, empty states
2Receipt flash#00D9C8 ring expands from Code container, 0.9sOnceThe moment a relay is received
3Send burstRays fire outward through #00D9C8, settle to tealOnceThe moment a relay is created
4AwaitingCore-only slow breathe, 4.2sYesTransfer sent, not yet received
5Arrival ringCore dot + one emanating ringOnceNotifications, toasts
6BroadcastPress-and-hold the mark → triple beat + double rippleHiddenEaster egg. Keep rare; that's the charm

Hard rules

  1. One pulsing element per view, maximum.
  2. Product UI transitions stay ≤0.18s — pulse moments are event animations (once) or brand-surface loops, never product chrome.
  3. Everything disables under prefers-reduced-motion. The static mark must carry the brand alone.
  4. Never loop #00D9C8 on product surfaces. Looping pulses (heartbeat, awaiting) stay in system teal; #00D9C8 is reserved for event flashes.

Implementation

brand/relay-pulse.css — drop-in, pairs with brand/relay-mark*.svg (rm-core / rm-ray class hooks, currentColor).

The 11-egg gallery at creative.relayctx.com/concepts/eggs/ predates this spec and used the constraint "teal #0d9488 only." v3.4.1 amends that constraint: event-flash eggs (Receive Beam, Status Snap arrival moments) may use #00D9C8 — they move, they qualify. Looping eggs (Idle Pulse) stay #0d9488 per hard rule 4. All other egg constraints (reduced-motion, non-essential, accessible, self-contained, no layout impact) carry into this spec unchanged.

Existing easter eggs — kept and absorbed