Temerarii Media · operating standard · single source of truth

Build. Run. Prove. 

Hyper-accelerate revenue & attention for your brand.

The rules that keep every artifact unmistakably Temerarii — minus the hype. Read from governance/, enforced by the QA gate. If it breaks these, it does not ship.

Status · lock state · 2026-06-01

v2.1 — locked · operator-approved 2026-06-01

The brand system is locked and operating end-to-end — tokens, type, motion (incl. §06b 3D/scroll), voice, QA gate, and the live Lab front door on temerarii.xyz. Fonts are settled (system Tahoma + open JetBrains Mono — no licensing) and the four traced logo formats are operator-approved and shipping; a native .ai/.eps master may still supersede them later. Optional/future only: the §14 registry vault export and the §15 auto-audit gate.

ComponentState
Color palette + tokens (governance/brand.json)Locked
Typography spec (04)Locked
Motion language (06 · 7 sanctioned + forbidden list)Locked
Signature cell-card (05)Locked
Voice rails enforcer (engine/qa_gate.py)Locked
Calendar v3 + publish/volume map (office)Locked
Logo system · 4 traced formats × 6 treatments (native .ai/.eps optional)Locked
Fonts · Tahoma (system stack) + JetBrains Mono (open) — no licensing neededLocked
Lab front door · temerarii.xyz (one-canvas R3F, shipped)Locked
v2.1 operator sign-off · 2026-06-01Locked
Contents · 21 parts

The arc

00 · Brand strategy

Who we are, before how we look

DRAFT — pending operator sign-off (§ Lock state). Grounded in docs/strategy/POSITIONING.md.

Mission

Temerarii Media hyper-accelerates revenue and attention for brands — building the future of go-to-market, minus the hype. We ship working AI-driven experiments and products, then do the studio work that makes them real — proving the system on ourselves first.

Values

Receipts over rhetoric

Show the work, tie it to revenue. A method behind every number; case studies before claims.

Build in public

Range you can try, not slides about it. The Lab ships live experiments anyone can use.

Minus the hype

Plain words, sourced numbers, no performed excitement. Confidence reads quieter than hype.

Range under one house

Eight pillars — creative, performance, emerging tech — one brand. The breadth is the argument.

Human-in-the-loop

The reliable middle, not autonomous theater. Operators stay in control; the machine does the heavy lifting.

Consent-first

Public and consented data only. Ethical by construction — the premise behind SIE.

Customer persona

The Operator

A mid-market or growth-stage brand owner or marketing lead who wants results, not theater — shut out by enterprise tools priced for the Fortune 100. Pragmatic, ROI-driven, allergic to hype, short on time.

The Partner

A platform or agency partner looking for a neutral builder with genuine range across creative, spatial, agents, and data.

Brand personality

PragmaticDemystifyingBold in motionBuilder-firstQuietly confidentROI-obsessed

Mood board

  • Dark editorial canvas, one red accent — the technical sublime (Evervault / Linear / Vercel restraint)
  • Bold kinetic motion — the opposite of quiet: kinetic type, logo-reveal, ember-drift
  • The 44px working grid showing through — honest, built, in-the-machine
  • Real screens, real renders, real numbers — never generic stock, never AI text baked in
01 · Positioning

An AI innovation lab and creative / GTM studio

We build the future of go-to-market and prove it on ourselves first. Three anchors:

Temerarii Labs

We ship live experiments in public (temerarii.xyz). Range you can try.

The Machine

A drift-proof content engine that runs research → render → distribute. Proven on us first.

The Range

Eight pillars — creative, performance, emerging tech — under one house.

The eight pillars

Performance Marketingperformance
Brand Marketingbrand
Multimediamultimedia
Social Marketingsocial
Strategic Relationsstrategic_relations
IT & Developmentit_dev
Staff Trainingstaff_training
Emerging Techemerging_tech

Reference points: an innovation lab, not an agency · a studio that ships products · build-in-public, minus the hype. Never a slide-deck shop. Never an oracle.

01b · Content pillars

Eight territories — one calendar, parallel lanes

The eight service pillars double as content pillars: each is a messaging territory the content machine runs as a campaign lane on the 4-4-5 calendar, so many themes coexist without collision. Every pillar maps to a service we sell.

Performance Marketing

Paid acquisition, funnels, and attribution — the spend that moves a number, with the method shown.

Brand Marketing

Positioning, narrative, and identity — why a brand is chosen, not just found.

Multimedia

Video, motion, 3D, and generative media — the studio's creative range, on brand.

Social Marketing

Channel strategy and the 9-output matrix — one idea, every platform's native format.

Strategic Relations

Partnerships, PR, and the bigger table — earned attention from the people who matter.

IT & Development

The build layer — sites, apps, automations, and the agentic machine behind the work.

Staff Training

Enablement and courses — teaching teams to run the playbook themselves.

Emerging Tech

The Lab — AI, spatial, and agentic experiments shipped in public as proof of range.

Two lenses — brand and SEO

Brand lens — messaging territory

Each pillar is a theme we own and return to — a campaign lane on the 4-4-5 calendar, a register of proof. The eight together are the range that is the brand.

SEO lens — topic cluster

Each pillar is also a pillar page covering its core topic in depth, ringed by a cluster of supporting Insights articles, internally linked. The structure signals topical authority (EEAT) — we rank for the subject, not a single keyword.

The ~70-article Insights library is the cluster content: each article is a spoke that links up to its pillar page; the pillar links back down to its cluster. Upstream long-form (blog / video) seeds downstream social derivatives; the always-on lane runs under every week's pillar theme. The Calendar shows the live rotation.

03 · Color

The system, not a palette

Three colours carry everything — pulled straight from the logo: red accent, black structure, white type, on a near-black canvas. Around them sits a graded token tree: three ramps, three foreground layers, four surfaces, five states. Every value below is the exact token from governance/brand.json. The discipline is what makes the motion read: red earns attention because it is rationed.

The two rules that govern the rest

Rule 01 · red is an accent, not a type colour

Red (--accent #EC1C24) is used for accent, UI affordances, and large text or headings only. On the near-black canvas it measures 4.48:1 — it clears the 3:1 bar for large/UI but sits just under the 4.5:1 bar for normal text, so it is never set as small body copy. Body stays white (--fg-1) / --fg-2 so legibility holds on every surface.

Rule 02 · the secondary cap

Red occupies under 8% of a frame. Two red marks and a clean white headline beat a red background. The cap is what keeps red loud — spend it everywhere and it stops meaning anything. Measured against the rendered frame, not the source file.

Ink ramp — ground and structure

Surfaces, panels, depth. Black carries the weight without competing with red. --ink-900 #000000 is the structural primary; the logo's black sits here.

ink-900 · primarypure black · logo black · deepest ground#000000
ink-800 · canvasnear-black canvas · hero grounds#0A0A0C
ink-700raised surfaces · cards#16161A
ink-600hairlines · dividers#1F2024
ink-500muted fills · inactive#2A2C32
ink-300muted UI text#5B606E
ink-100faint structural type#9AA0AE

Red ramp — the accent, rationed

One accent family, used under the 8% cap. --red-500 #EC1C24 is the logo red — marks, headings, large type, UI. Lighter stops exist so red can clear contrast as small UI text when it must.

red-700pressed / active red states#B3141A
red-600hover · borders#CC1820
red-500 · accentthe accent — logo red, marks, headings, large text, UI#EC1C24
red-400small UI text on near-black (5.41:1)#F0484E
red-300subtle red type · captions on dark#F57C80
red-100faint red tints · washes#FBC4C6

Neutral ramp — canvas and type

From the near-black canvas up to pure white. --neutral-950 #0A0A0C is the background; --neutral-0 #FFFFFF is the foreground.

neutral-950 · bgthe canvas · background#0A0A0C
neutral-900 · surfacecards · panels on canvas#121317
neutral-800 · raisedraised surfaces · popovers#1A1C22
neutral-700 · hairlineborders · dividers · grid lines#262932
neutral-500disabled · faint labels#5B606E
neutral-300muted UI text#9AA0AE
neutral-100near-white type#D8DBE2
neutral-0 · fgpure white · primary type#FFFFFF

Semantic tokens — foreground and surface

The ramps above are raw values; the tokens below are how they are spent. Reference these in code, not the hex.

--fg-1
#FFFFFF · primary type, headlines
--fg-2
#C9CCD2 · body, supporting copy
--fg-3
#8A8F99 · labels, captions, eyebrows
--surface-bg
#0A0A0C · the canvas
--surface-surface
#121317 · cards, panels
--surface-raised
#1A1C22 · raised, popovers
--surface-hairline
#262932 · borders, dividers

State colours

Functional only — never decorative. --state-live shares the brand red (#EC1C24): on-air status is the one place the accent doubles as a state.

success
#3FB984 · rendered, shipped
warn
#E0A92E · pending, queued
error
#E5484D · failed, blocked
info
#4C82F2 · neutral notice
live
#EC1C24 · on-air, recording

WCAG-AA contrast table

This is the proof, not an assertion. Every text-on-ground pair we ship, with its measured ratio against the WCAG 2.1 thresholds — 4.5:1 for normal text, 3:1 for large text and UI. The table is what enforces Rule 01: red clears the bar for headings and large type, while small body copy stays white.

ForegroundOn groundRatioNormal 4.5:1Large / UI 3:1Verdict
--fg-1 #FFFFFFink-900 #00000021.00passpassType on pure-black panels
--fg-1 #FFFFFFbg #0A0A0C19.78passpassPrimary type — any size
--fg-1 #FFFFFFsurface #12131718.56passpassType on cards
--fg-2 #C9CCD2bg #0A0A0C12.29passpassBody copy — any size
--fg-2 #C9CCD2surface #12131711.54passpassBody on cards
--fg-3 #8A8F99bg #0A0A0C6.09passpassCaptions, labels
--fg-3 #8A8F99raised #1A1C225.25passpassLabels on raised — floor
--red-500 #EC1C24bg #0A0A0C4.48accent-onlypassHeadings, large text, UI — never small body
#FFFFFF on redred-500 #EC1C244.41accent-onlypassWhite on red buttons — large/bold UI only
--red-400 #F0484Ebg #0A0A0C5.41passpassSmallest sanctioned red text on near-black
--red-300 #F57C80bg #0A0A0C7.61passpassSubtle red type if ever needed
--state-success #3FB984bg #0A0A0C7.99passpassStatus text
--state-error #E5484Dbg #0A0A0C5.05passpassStatus text
--state-info #4C82F2bg #0A0A0C5.45passpassStatus text

Red-500 lands at 4.48:1 on the canvas — just under the 4.5:1 normal-text bar — so it is held to accent-only: headings, large text, marks, and UI. White text on a red button (4.41:1) is likewise large/bold only. Body copy is never asked to track its ground; it stays white, where it passes everywhere (19.78:1).

The under-8% cap, live

Left: red within the cap — marks and a headline, white type carrying the words. Right: red as a background blows past the cap and flattens the hierarchy. The red-drift motes are atmosphere at low opacity, not a fill. Both stages honour prefers-reduced-motion.

Live
Minus the hype: here is what moved.
red < 8% of frame · white type carries it

Within cap — red accents read because they are scarce.

Red everywhere
means red nowhere.

Over cap — accent as background; nothing leads, the eye has no entry point.

Carry rules

  • Reference tokens, never raw hex, in code — --fg-2 not #C9CCD2. The ramp is the source; the token is the contract.
  • Red on small body text is a gate failure. Body is white (--fg-1) / --fg-2 on --surface-bg / --surface-surface.
  • Red is large-and-UI: headings, marks, buttons, affordances. White text on red is large/bold only.
  • State colours are functional. Green means rendered, amber means pending, red-error means failed, blue means notice, red-live means on-air. Never a mood.
  • Secondary colour stays under 8% of the rendered frame, measured on output, not in the source file.
04 · Typography live specimens

One family, two weights, one clamp scale

Tahoma carries the whole voice: Tahoma Bold sets every header size, Tahoma Regular sets everything you read. JetBrains Mono sets the labels, eyebrows, and counters. Tahoma is a system font (stack: Tahoma, Verdana, Geneva, sans-serif) — no web-font import. One clamp() scale runs from the hero down to the counter, sized in governance/brand.json and rendered here at the real tokens. Hierarchy is size and weight, never italics. Every glyph on every surface is composited — type is never baked into an image.

The scale, rendered live

Each row below is set at its exact --t-* token. Resize the window — the clamp() floors and ceilings move with the viewport, the same values shipping in code.

--t-heroclamp(40px, 6vw, 88px)Tahoma Bold · lh 1.02 · -0.02em
Build. Run. Prove.
--t-displayclamp(32px, 4.5vw, 60px)Tahoma Bold · lh 1.05 · -0.015em
Hyper-accelerate revenue and attention
--t-h2clamp(24px, 4vw, 36px)Tahoma Bold · lh 1.1 · -0.01em
A practical playbook, set in section type
--t-h3clamp(18px, 2.2vw, 24px)Tahoma Bold · lh 1.25
Subheads are Tahoma Bold too — every header size is bold; hierarchy comes from size, not a second family
--t-body-lclamp(17px, 1.4vw, 19px)Tahoma Regular · lh 1.6 · 66ch

Lead paragraphs run at body-large. Long enough to set the tone of a section, short enough to read before the eye gives up. Held to a 66-character measure so the return is always findable.

--t-body16pxTahoma Regular · lh 1.6 · 66ch

Default body copy. Off-white on near-black — fg-2 on surface, never red. Red on small text fails contrast; we hold red for headings, accents, and UI where the size earns it.

--t-caption13.5pxTahoma Regular · lh 1.5 · fg-2
Captions, figure notes, and table footnotes sit one step down from body.
--t-eyebrow13pxJetBrains Mono 500 · uppercase · 0.12em · fg-3
minus the hype · build log · receipts
--t-counter13pxJetBrains Mono 500 · tabular-nums
W23 · 09 / 09 outputs · 00:14:32 · +1240%

Two weights, one mono lane

One family does the talking — weight is the only switch. Bold is for headers, Regular is for reading. Mono is the one separate lane, reserved for data and labels.

Tahoma Boldheaders
Aa Bb Gg
0123 & ?
weight 700 · all header sizes

Use for: hero, display, h2, h3, stat numbers. Every header size is bold.

Never: body copy, captions, or running prose.

Tahoma Regularbody · UI
Aa Bb Gg
0123 & ?
weight 400 · paragraphs & UI

Use for: body-large, body, captions, buttons, inputs. Everything you read.

Never: a header — headers are always Bold.

JetBrains Monolabels · counters
Aa Bb Gg
0123 & ?
weights 400 · 500 · tabular-nums

Use for: eyebrows, labels, counters, code, timestamps. Tabular figures for data.

Never: a header or a paragraph of running prose.

Role · family · token

RoleTokenFamily · weightLine · trackUse
Hero--t-heroTahoma Bold1.02 · -0.02empage-opening statement
Display--t-displayTahoma Bold1.05 · -0.015emsection openers · stat numbers
H2--t-h2Tahoma Bold1.1 · -0.01emsection headings
H3--t-h3Tahoma Bold1.25subheads
Body-L--t-body-lTahoma Regular1.6 · 66chleads · intros
Body--t-bodyTahoma Regular1.6 · 66chrunning copy
Caption--t-captionTahoma Regular1.5notes · footnotes
Eyebrow--t-eyebrowJetBrains Mono 5000.12em · uppersection kicker
Counter--t-counterJetBrains Mono 500tabular-numsdata · timecodes

The 66ch measure

Body and body-large hold to --measure: 66ch. The ember rule marks the cap. At measure, the eye finds the next line without searching; past it, long lines lose the return.

0ch66ch — max

This paragraph is held to the 66-character measure. Each line wraps before the ember rule, so the return point is predictable and the reader never loses their place between lines — which is the entire point of a measure.

This paragraph ignores the measure and runs the full container width, so the lines grow long and the eye has to hunt for where the next line begins each time it returns to the left margin

Kinetic type — the signature move

Display lines build letter by letter on entrance: each glyph rises and settles, staggered, then holds. Reveal, then rest — it does not loop forever in product. Easing is --ease-entrance over --dur-slow. This is the same build Remotion composites for video and R3F drives in spatial heroes; here it runs live in CSS.

Build. Run. Prove.
kinetic build · --ease-entrance · --dur-slow · settles, holds

Type is composited — never baked into an image

Every glyph ships through the compositor — HTML, Remotion, or R3F — as real, selectable, accessible text. AI-generated on-screen text is forbidden: it warps glyphs, breaks the family, and cannot be edited or read by a screen reader.

Composited · correct
Receipts, not adjectives
real text · selectable · accessible · on-brand glyphs
AI-baked · forbidden
Rece1pts, n0t adjectlves
warped glyphs · wrong family · unreadable · uneditable

Rules

  • One clamp() scale; never hand-set a font-size outside the --t-* tokens.
  • Emphasis is weight, never italics — Tahoma Bold (700) for headers, Tahoma Regular (400) for body.
  • Red type only at heading scale or as accent / UI; body and captions stay white (fg-1) / fg-2 on surface (WCAG AA).
  • Mono carries tabular figures for any column of numbers — counters, timecodes, data tables align.
  • Body and body-large hold to 66ch; do not let prose run the full container.
  • All on-screen text is composited — Remotion / React / HTML. Never AI-generated text in an image.
  • prefers-reduced-motion is binding: the kinetic build resolves to its settled frame, drift stops.
05 · Signature unit

The cell card

Temerarii's signature unit is the atomic content cell — one idea, its goal, its channels, its outputs, its render state. Red corner brackets, a status dot, information held cleanly. The card IS the brand expression.

W23 · Studio Launch · beat 1/4

Temerarii is open

goal · awareness — prove the machine on ourselves
CHANNELS · LINKEDIN · X · YOUTUBE · IG · +5
OUTPUTS · 4×1080 · 4×4K · GIF

Anatomy

  • Corner brackets — two red Ls, 2px, ~12px arms, top-left + bottom-right only.
  • Status dot — upper area, 8px: green rendered · amber pending · red live (on-air).
  • Eyebrow — mono uppercase: week · campaign · beat.
  • Title — display, the one idea, one line.
  • Goal line — body: the stage and the why.
  • Channels row — mono, red: where it ships.
  • Outputs row — mono, muted: the native renders.

Rules

  • The card IS the brand expression — no decorative chrome, pure information held cleanly.
  • Two red corner brackets at 2px — never a closed rectangle.
  • Eyebrow in mono uppercase — week · campaign · beat, always present.
  • Status dot is functional only — green rendered · amber pending · red live. Never red as a warning.
  • One idea per cell. If it needs two titles, it is two cells.
  • Channels + outputs are sourced from the calendar / registry — never typed by hand.

Markup

<div class="cellcard"> <span class="dot"></span> /* green | amber | red */ <div class="eyebrow">W23 · Launch · 1/4</div> <h3>One idea, one line</h3> <div class="ver">goal · why it ships</div> <div class="chan">CHANNELS · …</div> /* mono · red */ <div class="out">OUTPUTS · …</div> /* mono · muted */ </div>

Used live in the Calendar (every beat is a cell), the Storyboard hub, and the Registry — one unit, three surfaces.

06 · Motion live

Motion is the proof we can build

Temerarii's motion is bold and kinetic where peace's is quiet — we are an AI creative studio and motion is the product. It still earns its place: reveal, don't decorate. Everything below runs live at the real tokens.

Easing & duration tokens

TokenCurveLive
--ease standard.22,.61,.36,1
--ease-out entrance.16,1,.3,1
--ease-in exit.55,.06,.68,.19
linear tickers onlylinear

durations — fast 120ms · base 240ms · slow 480ms · cinematic 6s

Sanctioned patterns · seven

Seven sanctioned patterns live in brand.json:motion. The five below run live on this surface; spatial-parallax and a scroll-scrubbed mark-draw run live in §06b; logo-reveal also opens §02; cinematic push-in is a video / Lab establishing move.

Build.Run.Prove.
Kinetic type — the signature moveHero · campaign opens · 240–480ms · ease-outWords rise and settle, staggered — the message builds, then holds. Reveal, then rest.
Logo revealBrand stings · intros · end-cards · composited · loopsThe T+M lockup reveals from the master, then holds. Never re-imagined, never spun.
Build.scene 01
9× shippedscene 02
8-frame crossfadeScene-to-scene in video · 8 framesClean dissolve between sequences — eight frames. Hard cuts everywhere else.
Receipts count-upProof cells · data cards · 600ms · ease-outA real, sourced number counts up once and holds — at proof, not at the user.
Red driftAtmosphere behind heroes · 9s loop · linearSparse red particles drift upward, low opacity. Texture, not spectacle.

Forbidden

  • Bounce / elastic springs · confetti · fireworks · sparkle overload
  • Spin / rotation / gyroscope loaders with no meaning
  • Motion that outpaces the message · anything over 6s that is not a cinematic push
  • Autoplay audio without captions (85% watch muted)
  • AI-generated on-screen text — all type is composited (Remotion / React / HTML)
  • Cheesy transitions — star-wipes, page-curls, default template moves
  • Exclamation-energy — performed excitement; confidence reads quiet

The three-tool stack · one easing language

ToolJobWhere it ships
HTML / CSS keyframesWorkhorse — micro-interactions, web, these live demos. ~90% of motion.Lab, office, hub, every hover/transition
RemotionProgrammatic React video — the content machine. Highest-ROI motion asset.The 9-output social matrix, campaign videos, reels/shorts
React-Three-Fiber / Three.jsSpatial and 3D — used on purpose, not everywhere.The Lab hero (Signal Field), 3D experiments, depth moments

Motion tiers · by surface

One easing language, three tiers — and where peace gets quieter inward, Temerarii gets bolder outward toward the Lab. Each surface MAY add the register below; the forbidden list still binds everywhere.

TierMay addTooling
Brand-book / weblive CSS demos, kinetic type, logo-reveal + ember-drift under headings, one-focal scroll-revealHTML/CSS keyframes
9-output socialthe full seven sanctioned set — cinematic-push, kinetic-build, 8-frame crossfade, receipts count-upRemotion / HyperFrames
Lab / 3D — the boldest tierspatial-parallax, the three.js / Spline hero, scroll-action sequences, html-in-canvas typeR3F + Spline

Still banned on every tier — bounce/elastic, confetti/sparkle, spin-without-meaning, AI text baked in frame, >6s non-cinematic. prefers-reduced-motion stays binding on all three.

prefers-reduced-motion is binding

Every motion asset ships with a static poster and respects the OS query. HTML/CSS: a global @media (prefers-reduced-motion: reduce) kills animation/transition. Remotion: videos show a first-frame poster. R3F: canvas locks to first frame, no rAF ticking.

Machine-readable companion

Durations, easings, sanctioned + forbidden patterns live in governance/brand.json:motion — loaded by engine/qa_gate.py and by Remotion / R3F code as one source of truth. If the book and brand.json disagree, brand.json wins for code, the book wins for human briefs.

06b · Motion — 3D & scroll live

Depth, scroll, and the kinetic signature

Part 06 set the easing language and the seven sanctioned patterns. This part extends it into the surfaces where Temerarii goes spatial — the Lab hero in React-Three-Fiber, a Spline embed for set-piece moments, and scroll as a motion track. Same rule throughout: reveal, do not decorate. Motion is the product, so it is held to the standard, not exempted from it.

The Lab Signal Field · three.js / R3F

An ambient point field at red and black, drifting slowly and reacting to the pointer with parallax depth. This is the spatial-parallax pattern from brand.json — reserved for the Lab and spatial pieces, used on purpose, not on every screen. The canvas below runs live; the R3F equivalent ships in the Lab.

R3F · ambient · slow
Signal Field · pointer-reactive depth · honors reduced-motion (locks to first frame)
R3F integration · the Lab hero

The same field as a React-Three-Fiber component. useReducedMotion stops the frame loop and renders a static poster — the binding rule, not a nicety.

// SignalField.tsx — the Lab hero (R3F) import { Canvas, useFrame } from '@react-three/fiber' import { useReducedMotion } from 'framer-motion' import * as THREE from 'three' const EMBER = new THREE.Color('#EC1C24') // --ember-500 const NAVY = new THREE.Color('#5B606E') // --navy-300 function Field({ reduced }) { const ref = useRef() useFrame((state, dt) => { if (reduced) return // lock to first frame ref.current.rotation.y += dt * 0.04 // ambient · slow const { x, y } = state.pointer // parallax depth ref.current.position.x += (x * 0.6 - ref.current.position.x) * 0.05 ref.current.position.y += (y * 0.4 - ref.current.position.y) * 0.05 }) return <points ref={ref}>{/* 1400 pts · red↔black lerp */}</points> } export function SignalField() { const reduced = useReducedMotion() return ( <Canvas dpr={[1, 2]} frameloop={reduced ? 'demand' : 'always'}> <Field reduced={reduced} /> </Canvas> ) }

Tools: R3F for the Lab and spatial hero moments only. CSS keyframes remain the workhorse (~90% of motion); Remotion remains the content machine.

Spline set-pieces · react-spline / r3f-spline

For a designed 3D scene — a product cell turning in space, a mark that builds in three dimensions — we embed Spline rather than hand-author geometry. Two integration paths: the standalone viewer for a self-contained scene, or r3f-spline when the scene must sit inside an existing R3F canvas alongside the Signal Field.

Path A · standalone viewer

A complete scene with its own camera and lighting. Used for hero set-pieces and the Lab gallery tiles.

// SceneSpline.tsx — standalone import Spline from '@splinetool/react-spline' export function MarkBuild3D() { return ( <Spline scene="https://prod.spline.design/<id>/scene.splinecode" onLoad={(app) => app.setZoom(0.9)} // mark builds clockwise /> ) }
Path B · inside R3F (r3f-spline)

When the Spline geometry must share the canvas with the Signal Field — one camera, one frame loop, one reduced-motion gate.

// inside the Lab Canvas import { Canvas } from '@react-three/fiber' import useSpline from '@splinetool/r3f-spline' function Cell() { const { nodes } = useSpline('/cell.splinecode') return <primitive object={nodes.Cell} /> } <Canvas> <Field /> // ambient point field <Cell /> // Spline geometry, same scene </Canvas>
representative preview · CSS 3D
Cell card · the mark turning in space · slow auto-rotate · reduced-motion holds a static 3/4 pose
What ships here · the real thing

The preview at left is a CSS-3D stand-in so the book stays single-file and dependency-free. On a real surface this is a Spline scene — lit geometry with its own camera — embedded via the Path A / Path B code above. Same brand rules apply:

  • Set-pieces only — Lab hero, gallery tiles, campaign moments. Never on routine content.
  • Reveal, then settle — the mark builds or the cell turns to rest, it does not spin forever.
  • Poster-first — ships a first-frame still; reduced-motion shows the poster, no loop.
  • 6s ceiling — same cinematic limit as every other surface.

Where used: the Lab hero · gallery tiles · campaign set-pieces. Where not: standard content surfaces, the office, the hub — CSS and Remotion carry those. A Spline scene ships with a first-frame poster and stays under the same 6s cinematic ceiling.

Scroll-action · reveal & parallax

Scroll is a motion track. As content enters the viewport it reveals once — opacity and a short translate, then it settles and stays. We do not re-animate on every pass and we do not hijack the scrollbar. Scroll the inset below; each row plays its bb-reveal as it crosses the threshold, driven by one IntersectionObserver.

scroll down ↓
Reveal · up

Enters from below, settles. The signature entrance — staggered word build at scale.

Reveal · left

Slides in from the trailing edge. Used for supporting cells beside a primary statement.

Reveal · right

Mirror of the left. One direction per row — never both into the same frame.

native outputs per idea · receipts
↕ this demo replays each pass · scroll up to rewind
The observer · one source of truth

A single IntersectionObserver adds .bb-in at a 18% threshold and then unobserves — the reveal fires once. Under prefers-reduced-motion the script shows everything immediately and never observes.

// scroll-action — fire once, then release const reduce = matchMedia('(prefers-reduced-motion: reduce)').matches const targets = root.querySelectorAll('[data-bb-reveal]') if (reduce) { targets.forEach(el => el.classList.add('bb-in')) // show, no motion } else { const io = new IntersectionObserver((entries) => { for (const e of entries) { if (!e.isIntersecting) continue e.target.classList.add('bb-in') // play io.unobserve(e.target) // once } }, { threshold: 0.18 }) targets.forEach(el => io.observe(el)) }

Spatial parallax note: on the Lab hero the same observer also reads scrollY to translate depth layers at fractional rates (background slowest, foreground fastest). Translate only — never scale or skew the type. Movement stays under the slow token so reading is never disrupted.

spatial-parallax · live
06b
Depth
move the pointer
three layers · scroll to see the depth split + pointer parallax · translate only · ambient slow

Ignition · the scroll narrative (Build · Run · Prove)

One scroll drives the whole hero on a single pinned, real-time canvas — scrubbing forward as you scroll, rewinding on scroll-up, embers rising the entire way. The flow live on temerarii.xyz today: a short kinetic-build intro (the lockup + “AI innovation lab · GTM studio” + “Minus the hype.”) dissolves into the kinetic message — Build. → Run. → Prove., each word in its own treatment (ember-ignite, wireframe, chrome) — then the mark multiplies: small white marks pop in and float among the wireframe solids (the orbiting cast, below), and the scroll lands on the navigation — the ember-laser locks onto the work nodes (touch taps them). One continuous scene, no resets. This is the single canonical scroll narrative — the Lab hero is this, in real-time R3F. The CSS miniature below documents the kinetic-type acts and the §02 treatment vocabulary; the live specimen under it shows the mark-multiplied resolution and the field.

ignition · scroll-driven · pinned
BUILD · 0%
Build.
Run.
Prove.
scroll runs the sequence ↓0% · build→run→prove

What you're looking at: the kinetic-type spine — Build (ember-ignite), Run (wireframe), Prove (chrome) — plus the same three treatments on the mark: the §02 vocabulary in motion, embers rising throughout. On the live home page the resolution is the mark multiplied (the orbiting cast, below) landing on the laser / tap node navigation — not a single mark performing the treatments. In the real Lab the whole thing is one R3F scene scrubbed by useScroll; here it's pure CSS at the real tokens. Reduced-motion holds a still frame, embers off.

Laser-beam ember pointer · cursor-reactive

A glowing ember beam tracks the cursor — fired from a base anchor, with an ember glow and a spark trail following the pointer. This is domenicobrz's pointer-caustic technique, brand-locked to ember. It now runs as the Lab cursor on temerarii.xyz (fine pointers): the beam snaps onto a service shape at the landing — a reticle rings it, a tooltip names it, a click opens it; touch swaps it for the tap menu. Shown here as its own specimen — move your mouse across the stage.

laser-beam ember · move your mouse
move your cursor
beam from a base anchor → the cursor · ember glow + spark trail · the planned global Lab cursor effect

Kinetic typography · the signature, reinforced

Kinetic type is the through-line of Temerarii motion — it carries the message in 3D space, in scroll, and on flat surfaces alike. The build is a per-line mask reveal: each line rises from a clipped baseline, lands on the standard entrance curve, and stops. It reveals, then settles. It does not loop forever in-product.

Specimen · line build · kinetic-build pattern
Build the machine. Run it in public. Show the receipts.

240–480ms per line · entrance curve cubic-bezier(0.16, 1, 0.3, 1) · last line lands in red. Type is composited live — never AI-generated text baked into an image.

Do
  • Reveal the message, then hold.
  • One focal motion per frame.
  • Mask the baseline — type rises from a clip.
  • Land on the entrance curve, stop.
Do not
  • Loop kinetic type forever in-product.
  • Bounce, elastic, or spring the landing.
  • Spin geometry without meaning.
  • Outpace reading — under the slow token.
Sourced from brand.json
  • Sanctioned: kinetic-build · spatial-parallax · ember-drift.
  • Forbidden: bounce/elastic · spin-without-meaning · AI on-screen text.
  • Ceiling: 6s, cinematic push only.
  • reduced-motion: binding · static poster ships.

Treatment motion · the logo styles, in motion

The six logo treatments in §02 are not just static looks — each is a motion primitive expressed at the right fidelity for the surface. One language, three tiers: CSS carries the brand book and light web; React-Three-Fiber carries the Lab hero and spatial moments; Remotion / HyperFrames render the social and end-card tier. The resting frame is always a clean, on-brand logo.

TreatmentMotion signatureCSS tierthree.js / R3F tierPairs with
White knockoutCascade-riseper-letter rise + settlemesh fade + rise on entrancereveal-up
ColorT+M assemblefill-split: red drops, black risesmodel parts converge to lockupreveal on enter
Liquid chromeShine sweepgradient-sweep maskMeshPhysicalMaterial + env-map, pointer-reactive reflectionpointer field
Ember fillIgnite, bottom-upgradient rise + glowemissive + bloom + ember particlesember-drift / pointer caustic
WireframeDraw-onstroke-dash draw (pathLength)EdgesGeometry + animated line-dashscroll-scrub draw
3D extrudeDepth-grow / flipstacked drop-shadowsreal ExtrudeGeometry from the traced SVG + lightingthe hero pop-out

The 3D-extrude treatment is the bridge: the same traced tm-mark.svg paths that drive the CSS extrude become real extruded geometry via SVGLoader → ExtrudeGeometry — so the logo that animates in the book is literally the logo that pops out in the Lab.

Treatment motion graphics · live

The four advanced logo treatments are full motion graphics in their own right — each maps to a scroll behaviour on the Lab and in video. Live on the mark below; on a real surface the progress is driven by scroll position, not a loop.

03 Liquid chrome
scroll-sweep — the glint travels with scroll
04 Ember fill
scroll-ignite — peaks at viewport centre
05 Wireframe
scroll-draw — outline draws 0→100%
06 3D extrude
scroll-depth — layers lift off the page

CSS here loops for the book; in production the same keyframes are scrubbed by scroll progress (Lenis + ScrollTrigger / useScroll) or driven frame-by-frame in Remotion. Reduced-motion holds each on its clean static frame. Full static + kinetic set lives in §02.

Cinematic scroll · how the best do it, and how we will

Three studio sites were taken apart at runtime for the Lab intro. The lesson across all three: what reads as “a movie” is a real-time WebGL scene scrubbed by scroll — not a played video. Scroll is the transport; the scene is live.

ReferenceWhat it actually does (runtime-verified)TechniqueOur expression
junni nextOne canvas, eight GLB models (baku.glb character + section_1–6.glb), zero video.Scroll scrubs a camera through six 3D scenes; the character parallaxes “out” of frame.drei ScrollControls scrub; the 3D-extruded logo is our pop-out hero.
lusionCustom WebGL (Astro shell), an MP4 reel loaded as a texture — no <video> tag.Video mapped onto WebGL geometry (VideoTexture), pointer-reactive.Remotion intro MP4 → VideoTexture → shader-dissolve into the live scene.
domenicobrzWebGL/WebGPU; featured piece is simulated dispersion caustics, pointer-reactive.A GLSL field displaced by pointer position + velocity.Ember/chrome caustic field that follows the cursor behind the hero.
Intro · Route A — all real-time (junni model)

Open directly on the lit 3D scene: the extruded logo assembles, the signal field drifts behind it, scroll scrubs the camera forward through capability “scenes.” No render step, fully responsive, infinitely tweakable. The “video” feel comes from lighting + bloom + a slow camera push, not a file.

Intro · Route B — video-first (lusion model + Remotion)

Remotion renders a cinematic logo sting (chrome or ember) to MP4 → played as a THREE.VideoTexture on a plane for the first viewport → on first scroll, a shader dissolve hands off to the live R3F scene. html-in-canvas (HyperFrames CanvasTexture) supplies brand-accurate type overlays inside the 3D space. This is the “video at first, then it pops out” path.

Live · Route A vs Route B (on real assets)

Both intro routes, shown for real. Route A is the live scroll scene — that's the Ignition hero above (scroll it; the laser-beam ember tracking your cursor is domenicobrz's caustic technique). Route B opens on a rendered sting mapped onto geometry — move your pointer over the tile to feel the lusion VideoTexture react.

Route A · all real-time (junni + domenicobrz)

No video file — the scene is live and scroll-scrubbed, exactly the Ignition hero above (Build→Run→Prove). The pointer-reactive ember beam on it is the domenicobrz caustic-field technique. Fully responsive, infinitely tweakable; the “movie” feel comes from lighting + bloom + a slow push, not a render step.

lusion · VideoTexture · pointer-reactive
Remotion sting → mapped on geometry → tilts with the pointer · on the site it shader-dissolves into the live scene

Same rails regardless of route: prefers-reduced-motion ships a static poster (the video’s first frame, or the assembled-logo still) · the 6s cinematic-push ceiling holds · parallax translates only, never scales the type · no scroll-jacking — scroll maps 1:1 to timeline progress · one focal motion per viewport. Smooth-scroll via Lenis; scrub via GSAP ScrollTrigger bound to useScroll. References studied: next.junni.co.jp · lusion.co · domenicobrz.github.io/webgl.

This part extends 06, it does not replace it. Easing tokens, the seven sanctioned patterns, the forbidden list, and the reduced-motion contract all live in governance/brand.json:motion — loaded by engine/qa_gate.py and by the R3F / Spline / Remotion code as one source of truth.

The Temerarii Labs front door · shipped

The hero on temerarii.xyz is live as one continuous real-time scene — the §02 treatment system made literal. A single React-Three-Fiber canvas, one camera, one scroll: the intro dissolves into the scroll with no reset, the ember field and wireframe solids never tear down, and the mark performs. Documented here as it ships, not as a plan.

One canvas · one camera · one scroll
The intro, the Build · Run · Prove scroll, and the navigation share a single persistent field — no second canvas, no WebGL re-init, no seam. The camera dollies forward the whole way; the embers calm as the story resolves.
Intro · kinetic-build, not typed
The opening is one short motion-graphic beat (~5s, skippable): the lockup reveals, then “AI innovation lab · GTM studio” and “Minus the hype.” rise from a clip and settle — the sanctioned kinetic-build, never a typewriter — then dissolve into the scroll.
★ The mark, multiplied — the ownable moment

As the scroll resolves, a swarm of small white marks — real SVGLoader → ExtrudeGeometry of tm-mark.svgpop in with a subtle overshoot (never a bounce) and drift among the wireframe solids: a touch smaller, face-on and readable, non-interactive. One mark, many proofs. We chose this over a single large mark fixed in the center — the brand multiplies into the field rather than peacocks. Reveal, don’t decorate.

The shapes ARE the navigation — the eight services

The story lands on “As far as you want to take it.” — and the scroll hands off to a quiet explore beat (the scroll layer drops away so the canvas takes the pointer). The eight orbiting wireframe solids are the eight services — one solid each (performance · brand · multimedia · social · strategic-relations · IT · staff-training · emerging-tech). Not broadcast as a menu: point the ember laser at a shape and it snaps on — a reticle rings it, a tooltip names the service — and a click opens that service on temerarii.com. The experiments stay the centre (the live cards); the services orbit them. Touch (phone + tablet) diverges by capability, not screen size: a brief intro (with a quick Build · Run · Prove) hands straight to the landing — no scroll-scrub — where the shapes stay ambient and the eight services become a clean tappable menu (each row the service's wireframe glyph + name → temerarii.com). Same destinations; the right metaphor for the input — discovered by pointing on desktop, a clear menu on touch. A gentle separation pass keeps the orbiting solids + marks from overlapping.

Responsive doctrine · every device, by capability
  • Capability, not UA — pointer / hover / size decide the experience; no manufacturer list to maintain.
  • Orbits pull inward on narrow screens (a spread factor) so the shapes and marks stay in frame on phones, never drifting off the sides.
  • The mark fits the viewport aspect — it never overflows portrait.
  • Stable heights via dvh (mobile toolbars don’t clip the scene) and env(safe-area-inset-*) so controls clear notches and home indicators.
  • Honest performance — DPR and ember count are capped on phones / touch; only the eight invisible hit-targets are raycast on pointer-move (the ember field, swarm, and edges are skipped) so the cursor never stutters. Frame budget over spectacle.
  • The experiment grid reflows 2-up on phones, 3-up on tablet and desktop; titles are balanced so nothing breaks mid-phrase; reduced-motion ships a designed-static path.

The orbiting cast · live

The same geometry and motion that ship on temerarii.xyz, running here in the book: a red ember field, white wireframe solids drifting on slow orbits, and small white marks that pop in and float among them. Real three.js — reveal, don’t decorate; reduced-motion holds a still frame.

ember field · wireframe solids · the mark, multiplied

06c · Sound — the sonic identity

The live site is silent by decision. Interactive UI sound was considered and cut — low value (muted-first means almost no one hears it), wrong for the Operator audience (browsing at work), and against the quiet-confidence register. So no site UI makes sound — not the Lab, the office, or the hub. Audio lives only in video stings / reels, where it is expected and captioned. The palette below is the policy for that video tier — muted-first even there; it reveals, it does not decorate.

Sanctioned cues (subtle, ember-warm)
  • Ambient bed — very low, optional, sits under the hero only.
  • Resolve swell — a short rise as the mark coalesces / resolves.
  • Node-lock tick — a soft tick when the laser locks a node / a commit.
  • Transition whoosh — a brief air on a scene dissolve.
Rules
  • No autoplay audio on load (it stays a forbidden pattern, §06).
  • A persistent mute toggle, always reachable; state remembered.
  • prefers-reduced-motion and any sound-off preference both = silent.
  • Video is always captioned (85% watch muted) — sound never carries meaning alone.
  • No music / no looping bed that competes, no loud or jump cues. Confidence is quiet.

Proof, not decoration. The Lab experience is itself a receipt — we built this real-time world; that is the demonstration of capability. Every spectacle (the mark multiplying into the field, the ember-laser cursor, the treatment morphs) must serve that proof — reveal, don't decorate — or it becomes the hype the brand disavows. (The shipped front-door signatures are documented above.)

07 · Voice register

Pragmatic. Demystifying. Minus the hype.

Name the problem in plain words, show the work, tie it to revenue. Em-dash for emphasis, period for closure, zero exclamation marks. Confidence reads quieter than hype.

The anchors

  • Declarative opener. Short. No "I think."
  • Middle-dot connective — "Build · Run · Prove."
  • Numbers always sourced — a method behind every figure.
  • Negation by contrast — "Not a deck. A working machine."

Signature frames

Minus the Hype
practical playbook
actually moves the needle
from [problem] to [result]

Vocabulary tilt

Lean toward — the working vocabulary of a studio that ships
buildrunproveshipmethodreceiptsrevenueattentionpracticalplainworksmoves the needleminus the hype

Never toward — the banned terms below. The tilt is the whole point: plain verbs of building and proof, never the language of hype.

Channel register — one voice, tuned per surface

ChannelRegisterShape
LinkedInlong-form, operator-to-operator — the playbook in fullhook → method → receipt → one next step
Xcompressed, declarative — one claim, sourcedone idea, ≤280, no thread-padding
Instagram / TikTokvisual-first — caption supports the framemotion carries it; copy is the spec foot
YouTubethe long surface — video publishes here onlytitle = the result; social gets derived cuts
Blog / Insightsthe pillar-page voice — thorough, cited (EEAT)cluster article links up to its pillar

Writing — yes / no

Yes

"We cut render time from 9 hours to 40 minutes — here is the pipeline." Active, sourced, one next step.

No

"Our revolutionary platform supercharges your workflow." Banned words, no number, no proof, performed excitement.

Never used — enforced by engine/qa_gate.py

revolutionarygame-changersynergyleverage (as verb)cutting-edgeworld-classseamlessunlocksuperchargedisruptninjarockstarguru
08 · Imagery

Honest, built, in-the-machine

Real screens, real renders, real numbers, generated to a recipe. Dark editorial register, red rim-light, the 44px working grid showing through. Every image is reproducible — a routed model, a locked prompt scaffold, a lighting bible, and a NO-LIST the QA gate reads. We generate imagery on purpose, not for slop.

The register · three modes

One palette across all three — near-black ground (#0A0A0C), red key light (#EC1C24), black depth. Secondary color stays under 8% of any frame.

honest · the real screen
built · the render in progress
in-the-machine · the pipeline

The swatches above run the sanctioned red rim-light live — a slow 9s drift, the signature key light. It honors prefers-reduced-motion and locks to a static frame when asked.

Model routing · the right tool per job

Each imagery job routes to one model. Routing is fixed so output stays on-brand and reproducible — no scattergun generation.

JobModelWhy this oneKey params
Design / UI imageryfal · Recraft V4Palette-lock via colors — pins the frame to our hexes, kills off-palette drift.colors: [#0A0A0C, #EC1C24, #0A0A0C] · style: digital_illustration
Marks / icons / glyphsfal · Recraft VectorTrue SVG out. Clean geometry, editable, no raster fuzz — matches the composited-type rule.style: vector_illustration · output: svg
People / ambassadorsHiggsfield · Soul IDIdentity-locked across a campaign — the same recurring face, not a new stranger each frame.soul_id: locked · seed: pinned per cast member
Upscale / finishfal · clarity upscalerFinal fidelity pass to delivery resolution. Sharpens without inventing detail.scale: 2x–4x · creativity: low

Routing rule: pick the model by job, then lock its brand params, then upscale last. Never generate type inside any of these — type is composited downstream in Remotion / React / HTML.

Prompt scaffolds · locked to the brand

Every prompt opens with the same brand lock and closes with the same NO-LIST suffix. Swap only the [subject] slot.

Scaffold · design / UI imagery (Recraft V4)
[subject] — dark editorial product still,
near-black ground #0A0A0C, single red #EC1C24
rim-light from upper-right, black #0A0A0C depth,
faint 44px technical grid showing through,
matte surfaces, honest materials, shallow depth of field,
no text, no logos, no UI chrome baked in.
style: digital_illustration
colors: [#0A0A0C, #EC1C24, #0A0A0C]
Scaffold · people / ambassadors (Soul ID)
[ambassador, soul_id locked] — candid working
portrait, dark studio, single red #EC1C24 rim-light
edge, black fill, neutral off-white #FFFFFF wardrobe,
real skin texture, direct unposed gaze, editorial,
shot on 50mm, natural grain, no retouch sheen,
no text, no extra fingers, no uncanny smoothing.
seed: pinned · upscale: clarity 2x

The brand lock is non-negotiable: ground #0A0A0C, key light #EC1C24, depth #0A0A0C, Tahoma for any reference type (composited later, never generated). The scaffold travels; only the subject changes.

Lighting & texture bible

Three looks, one light. The red rim-light is the signature — a single warm key from the upper-right against a near-black ground. Texture reads honest and built, never plastic.

LookLightTextureReads as
HonestReal ambient + faint red edgeActual screens, real photography of the workwe did this, here is the proof
BuiltRed rim from upper-right, black fillMatte materials, machined edges, grid underlayengineered, in progress, in the open
In-the-machineRed accent on near-black, low keyPipeline diagrams, render frames, data on darkthe engine running, minus the hype
1red key light per frame
<8%secondary color of frame
44pxworking grid, showing through
0AI text baked in

The NO-LIST · enforced

If an image carries any of these, it does not ship. The QA gate reads this list; arguing with it does not pass.

No AI text in images. All type is composited downstream (Remotion / React / HTML). Generated lettering is malformed and off-system — it never ships.
No stock-feel. No handshake-in-a-boardroom, no fake-candid laughter, no generic gradient blobs. Real screens, real renders, or nothing.
No rainbow. One palette — near-black, red, black. No multi-hue gradients, no oversaturation, no neon spread. Secondary color stays under 8% of the frame.
No uncanny faces. People route through Soul ID with a locked identity and seed. No extra fingers, no melted features, no plastic skin smoothing. A real face or a real ambassador.

The recipe, end to end

Route by job → lock the brand scaffold (#0A0A0C / #EC1C24 / Tahoma) → generate → check against the NO-LIST → upscale with clarity → composite type in the compositor → ship. The same recipe runs every time, so the imagery stays unmistakably Temerarii.

Recraft V4 · UI Recraft Vector · marks Soul ID · people clarity · upscale NO-LIST · enforced at QA
08b · Supporting graphics

The pattern, the grid, the marks, the cast

Beyond the logo, four supporting graphics carry the brand. Each supports a composition — none becomes the subject.

The 44px grid

Faint red hairlines on 44px intervals, ~6% opacity — the working surface showing through, honest and built. Behind heroes and data panels; never behind photography or dense type.

Red ember field

Low-opacity ember sparks drifting upward — atmosphere on cold opens, section breaks, and the whole Lab hero. The sanctioned ember-drift (§06); capped, never a particle storm.

Floating wireframe solids · the orbiting cast

White glowing wireframe polyhedra — dodecahedron, icosahedron, octahedron, tetrahedron, torus, knot, cube — drifting on slow elliptical orbits, edges only (EdgesGeometry), pointer-parallax. The connective tissue of the Lab: they carry from the intro through the scroll to the node field. Orbits pull inward on narrow screens so they stay in frame; reduced-motion freezes them. Reserved for the Lab + spatial heroes. Live in §06b.

Mark motif — and the swarm

The T+M monogram as a quiet anchor — composited from the master, never spun or rotated. Hero pages and end-cards only. On the Lab it multiplies: small white marks pop in and float among the solids — "one mark, many proofs" (§06b).

Do / never

  • Do — keep the grid faint (≤8% opacity); let it recede behind content.
  • Do — one supporting graphic per surface; silence is allowed.
  • Never — recolor the grid off-ember, rotate the mark, or run sparks over body text.
  • Never — let a supporting graphic compete with the subject. It supports; it never leads.

CSS lives with the brand tokens — the grid is background-size:44px 44px hairlines; the spark field is the sanctioned ember-drift pattern (§06).

09 · Components

The component library

One tokenized set of parts — buttons, cards, inputs, badges, data display, nav chips, panels. Every part is built from the same tokens as the rest of the system, carries every interaction state, and ships with copy-paste markup. The motion stays: hover lifts, ember focus rings, the live count-up. Discipline frames it — it does not flatten it.

Buttons

Primary commits — the one ember action per view. Secondary is an outline for "consider". Ghost is a quiet tertiary. Hover lifts 1px into the ember glow; focus draws a 2px ember ring offset from the surface; active settles flat. The loading spinner runs the standard 720ms linear and stops under reduced-motion.

default · hover · focus
active · pressed
disabled
loading
<button class="bb-btn">Start a build</button> /* primary · commit */ <button class="bb-btn bb-btn-outline">See the work</button> /* secondary · consider */ <button class="bb-btn bb-btn-ghost">Read the log</button> /* tertiary · quiet */ <button class="bb-btn bb-is-loading">Start a build</button> /* spinner, label hidden */ <button class="bb-btn bb-is-disabled" disabled>…</button> /* 45% · not-allowed */

Cards

Three card registers. Glass for overlay-on-motion. Bracketed carries the signature ember corners from the cell unit (05). The stat tile is a receipt — the number is ember because it is a large display figure, never body text.

glass

Over motion

Backdrop blur over the ember-drift hero. Holds legibility without killing the motion behind it.

bracketed

The cell language

Two ember corner brackets at 2px — never a closed box. The signature unit, applied as a card.

native outputs / idea
<div class="bb-card bb-card-glass">…</div> /* overlay on motion */ <div class="bb-card bb-card-bracketed">…</div> /* ember corner brackets */ <div class="bb-card bb-card-stat"> <span class="bb-stat-num">9&times;</span> <span class="bb-stat-label">native outputs / idea</span> </div>

Form inputs

Inputs rest on the base surface with a hairline border. Focus is the ember ring — border to ember-500 plus the ember glow elevation. Labels and hints stay off ember for AA legibility. Error state recolors the border and the focus ring to the error red.

Used as the slug and the byline on every artifact.

Enter a full email — domain looks incomplete.

Disabled — set at signup, edited from billing.

<label class="bb-label" for="x">Project name</label> <input class="bb-input" id="x" placeholder="e.g. Studio launch"> <p class="bb-hint">Used as the slug and the byline.</p> <input class="bb-input bb-is-error" aria-invalid="true"> /* error border + ring */ <input class="bb-input bb-is-disabled" disabled> /* 45% · not-allowed */

Badges and pills

Mono uppercase, pill radius, hairline by default. State variants borrow the state ramp — success, warn, error, info — and live carries the ember dot. The dot inherits the badge color, so the live badge pulses ember without an extra token.

Founding Rendered Queued Failed Draft Live
<span class="bb-badge">Founding</span> <span class="bb-badge bb-badge-success"><span class="bb-dot"></span>Rendered</span> <span class="bb-badge bb-badge-warn"><span class="bb-dot"></span>Queued</span> <span class="bb-badge bb-badge-error"><span class="bb-dot"></span>Failed</span> <span class="bb-badge bb-badge-info"><span class="bb-dot"></span>Draft</span> <span class="bb-badge bb-badge-live"><span class="bb-dot"></span>Live</span>

Data display

Three ways to show a sourced number. The big stat counts up once and holds — the sanctioned receipts move (06). Inline metric pairs a tabular figure with a mono label. The trend arrow uses the state ramp, not ember, so direction reads at a glance.

0
4.2savg render
9native outputs
▲ 38%
reach · vs last cycle
▼ 12%
cost / output
<!-- big stat — counts up once, holds (receipts move, 06) --> <span class="bb-count" data-count-to="247">0</span> <!-- inline metric --> <span class="v">4.2s</span> <span class="l">avg render</span> <!-- trend — state ramp, not ember --> <span class="bb-trend up">&#9650; 38%</span> <span class="bb-trend down">&#9660; 12%</span>

Nav chips

Segment and filter chips. Selected reads ember on a faint ember wash; hover warms the border; focus draws the same ember ring as the buttons, so keyboard travel is one consistent language across the system.

<button class="bb-chip" role="tab" aria-selected="true">All</button> <button class="bb-chip" role="tab" aria-selected="false">Performance</button>

Modal and panel

A panel is the raised surface at the top elevation — used for modals, drawers, and detail sheets. Header pairs a display title with a quiet dismiss control. The primary action commits in ember; the ghost cancels.

<div class="bb-panel" role="dialog" aria-modal="true" aria-labelledby="t"> <div class="bb-panel-head"> <div class="bb-panel-title" id="t">Ship to nine outputs</div> <button class="bb-x" aria-label="Dismiss">&times;</button> </div> <button class="bb-btn">Publish</button> <button class="bb-btn bb-btn-ghost">Cancel</button> </div>

Every part here is built from _tokens.css and _additions.css — no ad-hoc color, radius, or timing. State coverage is the contract: a component without its hover, focus, active, disabled, and loading states is not done. Motion stays sacred; discipline only frames it.

10 · Application

Surfaces — the system in the wild

One idea renders into a fixed set of surfaces, every time. The discipline is the matrix: a Remotion master produces nine outputs, the brand holds across each, and nothing ships without its labeled frame. Below, every mockup runs live at the real tokens — ember stays on accents, UI and large type; body copy stays on the off-white layers for legibility on near-black.

The nine-output social matrix

One render, nine deliverables. Each frame keeps the safe-area inset (dashed), the mono spec foot, and one ember focal element. The 4K master is the source of truth; the rest are derived in the same pass.

01 · feed
minus the hype
Here is what actually moved the number.
1080 × 13504:5 · IG / LinkedIn portrait
02 · square
Temerarii mark
Build · Run · Prove.
1080 × 10801:1 · feed / grid
03 · vertical
build log
From a brief
to nine cuts.
1080 × 19209:16 · Reels / Shorts / TikTok
04 · landscape
temerarii media
The machine, on the record.
1920 × 108016:9 · YouTube master
05 · 4K
4K
source of truth · 3840 × 2160
3840 × 216016:9 · 4K master · all cuts derive
06 · GIF
Build
Prove
looping · no audio · captions baked
GIFloop · 600 × 600 · < 3 MB

Outputs 07–09 are caption-on stills lifted from the same render (cover frame per ratio). Nine deliverables, one pass — the count-up cell in part 09 reads this number.

Video — publishes to YouTube, social gets derived cuts

Long-form lives on YouTube only. The 9:16 / 1:1 / 4:5 cuts above are derived from the same 4K master and routed to social. Two title elements carry the brand on screen: the lower-third and the end-card.

Lower-third · name + role
Lower-thirdtitle-safe · 3px ember rule · holds 4–6s
End-card · mark + one CTA
End-cardcentered mark · tagline · one next step
ElementRuleSpec
Lower-thirdBottom-left, inside title-safe; 3px ember left-rule; display name + mono role.in/out 240ms · holds 4–6s
Channel bugTop-right, persistent; reads YOUTUBE — the one publish target for long-form.live dot · ember
End-cardMark draws clockwise, tagline, exactly one CTA. No social wall, no subscribe spam.mark draw 1400ms
CaptionsBaked on every derived cut — assume 85% muted viewing.composited · never AI text

Stationery — email signature + business card

Signature rules — mark left, white name in Tahoma Bold, role in Tahoma Regular on --fg-2, links in mono with one ember link. No banner image, no quote, no legal wall. Plain, on the record.

Card — 3.5 × 2 in, 350gsm uncoated, near-black front with the red/white mark, off-white back. Two faces, no gloss, no rounded-corner gimmick. The front states the house; the back states the person.

OG / social share image

og · 1200 × 630
temerarii media · operating standard
Build. Run. Prove.
temerarii.comthe machine, on the record
1200 × 630OG / Twitter / LinkedIn unfurl · 2:1.05

OG image — red focal headline in Tahoma Bold, mono eyebrow + domain, black-to-near-black ground. Text composited in the renderer, never baked by a model. Title under 60 characters so the link preview never truncates the point.

Favicon + app icons

16 px
32 px
Temerarii mark
180 px · touch

At 16px the ring thickens and the bars simplify — the mark stays legible, never a shrunk-down full lockup. Touch icon (180px) renders the full mark on a near-black tile; at this size only, the mark may draw clockwise on first paint. Below 32px it is static.

Logo + ground rotation — the 24-logo output policy

Every social asset carries one logo on one ground. Across a rolling month the full 24-logo matrix (§02 · 4 formats × 6 treatments) and all three grounds cycle non-sequentially, in shuffled patterns: every one of the 24 appears at least once a month, and no pattern/sequence repeats within a rolling 30 days.

Three grounds — black · white · red — rotate within legibility: a treatment only lands on a ground it reads on (§02 grounds · §03 contrast), so the rotation never breaks the QA gate.

GroundLogo treatments that read on it (rotate among these)
Black / near-blackwhite-knockout · liquid-chrome · ember-fill · wireframe
Whitecolor · 3D-extrude
Red · #EC1C24white-knockout · wireframe

Format is chosen by the asset's shape (§02 design rules); treatment + ground are what rotate. Kinetic versions apply to video assets — the 24 here are the static logos for image templates. The policy is machine-readable in governance/brand.json:social_rotation and enforced at the QA gate (§11).

Carry rules — every surface, no exceptions

  • One logo + one ground per asset; the 24-logo matrix + 3 grounds rotate non-repeating over a rolling 30 days (all 24 used monthly), pairings honor legibility — see Logo + ground rotation above.
  • Nine outputs per idea: 1080×1350 · 1080×1080 · 1080×1920 · 1920×1080 + 4K master + GIF + three caption stills.
  • 4K is the source of truth; every social cut derives from it in the same pass — no re-rendering off-brand.
  • Long-form publishes to YouTube only; social receives the derived vertical and square cuts.
  • Ember on accents, UI and large type only — body copy on --fg-1 / --fg-2 for WCAG AA on near-black.
  • Safe-area inset respected on every frame; captions baked on every cut (85% watch muted).
  • All on-screen text composited in the renderer — never AI-generated text baked into an image.
11 · QA gate

If it breaks these, it does not ship

Every Tier-1 artifact clears a thirteen-point gate before publish — the same rails engine/qa_gate.py enforces in code, read from governance/brand.json. The gate is mechanical. Arguing with it does not pass it. Either the box checks or the artifact goes back.

13gate points
<8%accent cap / frame
AAcontrast floor
0exceptions

The thirteen-point pre-publish gate

  • AI-detection pass Copy reads as written, not generated. No model tells, no hedge-stacking, no "in today's fast-paced world." Runs clean against an AI-text detector before publish. copy
  • Palette held + accent under 8% Near-black canvas, black structure, white type. Red accent occupies under 8% of any frame — two accents and a headline beat an accent background. Measured, not eyeballed. color
  • Typography sourced + correct Tahoma Bold (all headers) + Tahoma Regular (body) + JetBrains Mono (labels/eyebrows/counters) only. Tahoma is a system font (Tahoma/Verdana/Geneva stack). Emphasis via weight, never italics. type
  • Logo authentic — composited, not AI The mark is the canonical SVG, composited live. Never AI-approximated, re-typeset by hand, recolored off-palette, stretched, or rotated. On social, the logo + ground follow the rotation policy (§10 · brand.json:social_rotation): one of the 24 logos on a legibility-compatible ground, all 24 used monthly, no pattern repeats within a rolling 30 days. logo
  • Contrast clears WCAG AA Body copy is --fg-1 / --fg-2 on --bg / surface. Ember is accent / UI / large text + headings only — never small body text on near-black, which fails AA. access
  • Motion direction is correct The mark draws clockwise and never unwinds. Kinetic type reveals then settles. No bounce, elastic, confetti, sparkle, or spin without meaning. One primary focal motion per frame. motion
  • Reduced-motion poster ships prefers-reduced-motion: reduce is honored. Every motion asset ships a static first-frame poster — HTML kills transitions, Remotion shows frame one, R3F locks the canvas. The fallback is built, not promised. motion
  • Output formats correct 1080×1350 / 1080×1080 / 1080×1920 / 1920×1080, plus a 4K master and a GIF. The native nine-output matrix, each at its true aspect — no cropped re-exports. output
  • Captions present Assume 85% muted viewing. Burned-in or sidecar captions on every video. No autoplay audio without captions — that is a forbidden pattern. access
  • Attribution + byline attached A named human author on each campaign artifact. Sourced claims carry their source. We attribute the work and stand behind it — no anonymous output. byline
  • Trademark + IP clean No third-party marks, faces, or licensed assets without rights. Cross-promo respects the cap — SIE stays secondary at 30 assets per quarter. The name is used as written. legal
  • Voice rails clean No banned vocabulary, no exclamation marks, no emoji. Claims are concrete — a sourced number or a mechanism, never an adjective. engine/qa_gate.py --strict passes. voice
  • Signature frame + one next step A signature frame is present where it fits — minus the hype · practical playbook · actually moves the needle. The CTA is one clear next step: a service, the Lab, a course, or SIE where it fits. frame

Motion sub-gate · point 6 + 7, expanded

Motion is the product, so it carries its own checklist underneath the gate. Bold and kinetic, but disciplined — these run live in section 06 and must hold here.

  • Mark draws clockwise — never unwinds.
  • Kinetic type reveals then settles — does not loop forever in-product.
  • No bounce / elastic / confetti / sparkle / meaningless spin.
  • Ember drift is texture, not spectacle — low opacity, upward, 9s loop.
  • 3D / R3F reserved for the Lab + spatial pieces — not every screen.
  • Nothing over 6s that is not a cinematic push-in.
  • prefers-reduced-motion honored — static poster ships.
  • All on-screen text composited — never AI-generated text baked into images.

The machine half vs the human half

Mechanical — the gate

Thirteen checks run in code or by checklist. Each is a boolean: clean or back. No tier-1 artifact ships with an unchecked box. The gate does not negotiate.

Editorial — a human still reviews
  • Does it read as Temerarii on mute?
  • Is the claim true, and is the number sourced?
  • Is there exactly one clear next step?
Run the gate

Thirteen points. Mechanical first, editorial second. If it breaks these, it does not ship.

12 · Accessibility

Reachable at full speed

Temerarii is bold motion. Discipline is what makes that motion safe to ship. Accessibility is not a quiet alternative to the work — it is the frame that lets the kinetic builds, the clockwise mark-draw, the ember-drift, the live CSS demos, the R3F and Spline heroes, and the scroll-action all land for everyone. Contrast, focus, hit targets, color-independence, reduced-motion, and direction are the rails the motion runs on.

13.1 · Contrast ledger

Measured against --surface-bg #0A0A0C unless noted. Targets: WCAG 2.1 AA = 4.5:1 body / 3:1 large (≥24px or ≥19px bold) and UI; AAA = 7:1 body / 4.5:1 large.

TokenOnRatioBody AALarge / UI AAAAA
--fg-1 #FFFFFF--surface-bg19.8:1PassPassPass
--fg-2 #C9CCD2--surface-bg12.3:1PassPassPass
--fg-3 #8A8F99--surface-bg6.1:1PassPassLarge only
--red-500 #EC1C24--surface-bg4.5:1No bodyPassLarge only
--red-400 #F0484E--surface-bg5.4:1PassPassPass
--red-300 #F57C80--surface-bg7.6:1PassPassPass
--neutral-950 #0A0A0C--red-5004.5:1PassPassLarge only
--state-success #3FB984--surface-bg8.0:1PassPassPass
--state-error #E5484D--surface-bg5.1:1PassPassLarge only
--state-info #4C82F2--surface-bg5.5:1PassPassLarge only
Red reads as accent, UI, large text, and headings — never body copy on near-black. At small sizes #EC1C24 fails AA, so body text stays on --fg-1 / --fg-2. Where red must carry small text, step up to --red-400 (5.4:1, AA body).

13.2 · Focus-visible ring

Keyboard focus is a red signature, not a browser default. Two-layer ring: a 2px gap in --surface-bg then 2px of --ember-500, so the ring reads on any surface and never collides with the element edge. Pointer interaction stays quiet — the ring only fires on :focus-visible.

Tab through — focus is sacred too
Link

Try keyboard Tab vs mouse click — the ring shows for keyboard only.

Ring spec
/* focus-visible — red double ring */ :focus-visible { outline: none; box-shadow: 0 0 0 2px var(--surface-bg), 0 0 0 4px var(--ember-500); } /* inputs add the red glow */ .bb-input:focus-visible { border-color: var(--ember-500); box-shadow: var(--elev-ember-glow); }

Ring is 3:1+ against both the element and the page. Never removed, never set to outline:none without a replacement.

13.3 · Minimum type sizes

Floors stop the clamp scale from collapsing below legibility on small viewports. Below these, do not ship.

RoleFloorTokenRule
Body16px--t-bodyNever below 16px. Measure capped at --measure (66ch).
Caption13.5px--t-captionLowest body-weight text. Use --fg-2, not --fg-3, for sustained reading.
Eyebrow / label11–13px--t-eyebrowMono uppercase, 0.12em tracking. Decorative — paired with a larger sibling.
Counter13px--t-counterTabular-nums. The receipts count-up reads at rest, not only mid-animation.

13.4 · Hit targets — 44px minimum

Every interactive control clears a 44×44px touch area (WCAG 2.5.5 / Apple HIG). Visual size can be smaller; the hit area is padded out. Adjacent targets keep ≥8px (--space-8) clear space.

44pxmin touch target
8pxmin spacing between
24pxmin target on pointer
Pattern — small glyph, full target
.bb-hit { /* 16px icon, 44px reach */ display: inline-flex; align-items: center; justify-content: center; min-width: 44px; min-height: 44px; padding: var(--space-12); }

13.5 · Color is never the only signal

Roughly 1 in 12 men read red/green differently. Red (#EC1C24) and the success/error states stay distinguishable by luminance, but state is always carried by a second channel — icon, label, shape, or position — never hue alone.

State badges — hue + label + dot
Success Warn Error Info Live

Strip the color and the word still tells the status.

Required redundancy
  • Errors pair red with an icon and inline text.
  • Charts label series; red marks one series, not several.
  • Links underline or carry weight, not just red color.
  • Live status uses the pulsing dot plus the word LIVE.

13.6 · Reduced-motion policy

Motion is the brand. It is also opt-out. prefers-reduced-motion: reduce is honored everywhere — the kinetic build, mark-draw, ember-drift, crossfade, receipts count-up, spatial parallax, and cinematic push all resolve to a held first frame. Nothing is deleted; the same composition shows its poster state.

Per-surface fallback
SurfaceAt full motionReduced-motion fallback
HTML / CSSkinetic, drift, demos, scroll-actionglobal query kills animation + transition; content shown in place
Remotion9-output social matrixstatic first-frame poster (PNG) substitutes for the clip
R3F / Spline3D / spatial hero, parallaxcanvas locks to first frame, rAF ticking stops, no autoplay
bb-revealopacity + translate on enteropacity:1, transform:none, transition:none
@media (prefers-reduced-motion: reduce) { /* renderer global rule — every animation + transition off */ *, *::before, *::after { animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; } /* bb-reveal resolves to its visible state, instantly */ .bb-reveal { opacity: 1; transform: none; transition: none; } }

This is binding and already enforced. The QA gate reads governance/brand.json:motion.reduced_motion as the source of truth; the book restates it for human briefs.

Framing, not flattening. Reduced-motion is a respected preference, not an argument against motion. At default settings the kinetic typography, clockwise mark-draw, ember-drift, live demos, and 3D heroes run in full.

13.7 · RTL and internationalization

The layout is direction-agnostic so the brand travels into Arabic, Hebrew, and other RTL scripts without a rebuild.

Direction discipline
  • Logical properties — margin-inline, padding-inline, inset-inline — not left / right.
  • The mark-draw stays clockwise; it is a logo gesture, not reading order, so it does not mirror.
  • Directional reveals (bb-reveal-left / -right) flip with [dir="rtl"].
  • Red brackets and the chevron mirror to the new start edge.
Copy and type
  • Layouts hold a 40% text-expansion margin (German, French) before clipping.
  • lang is set per surface so screen readers pick the right voice.
  • Numerals use locale digits; counters keep tabular-nums alignment.
  • No text baked into images — all copy is live in the compositor for translation and reflow.
RTL-ready motion
/* logical, mirrors automatically */ .bb-reveal-left { transform: translateX(24px); } [dir="rtl"] .bb-reveal-left { transform: translateX(-24px); } [dir="rtl"] .bb-reveal-right { transform: translateX(24px); } /* spacing via logical props — no hard left/right */ .cell { padding-inline: var(--space-24); }

13.8 · Accessibility ship check

  • Body text on near-black uses --fg-1 / --fg-2 — red only on large, UI, or headings.
  • Every interactive element has a visible focus-visible red ring.
  • Touch targets clear 44×44px with ≥8px spacing.
  • No state communicated by color alone — label, icon, or shape backs it up.
  • Motion honors prefers-reduced-motion with a held first frame on every surface.
  • Layout uses logical properties and survives a 40% text expansion in RTL.
  • All copy is live text, never baked into an image.
13 · Iconography

One grid, one stroke, one voice

Icons are the smallest unit of the system and the place drift creeps in first. Every Temerarii glyph is drawn on a 24px grid, stroked at 1.5–2px, squared at the caps, and lives off-palette by default — ember only when it carries state or sits large. The set below is canonical and runs live. The mark-draw move (clockwise, never unwinds) belongs to the icons too — it is the brand at 24px.

Construction

PropertyValue
Canvas24 × 24 units (the 24px grid)
Live area20 × 20 — a 2-unit keyline inset (dashed ember)
Stroke1.75 default · 2 for large / hero · band is 1.5–2
Capssquare · joins miter — the house terminal
Grid stepalign to whole or half units · no off-grid anchors
Corner radius2 units on rounded forms · sharp otherwise
Optical weightmatch the mark — geometric, even, unembellished

Stroke is set with vector-effect:non-scaling-stroke so a glyph scaled to 168px keeps a 1.75px line. Color is always currentColor — one declaration recolors a glyph for every state.

Core set · eighteen

Default foreground (--fg-2) for legibility on near-black; ember on hover to show the accent state. These are the production glyphs — copy the path, not a screenshot.

play
render
calendar
bolt
mark
chart
mic
video
draw
image
layers
share
search
check
arrow
doc
spatial
live

Hover any tile to see the accent state — ember on a 24px glyph is large-enough UI to clear WCAG AA on near-black. The live glyph ships ember by default because it always carries state.

Icons in motion live

The sanctioned mark-draw applies at 24px exactly as it does to the logo: the path draws clockwise over 1400ms, ease-out, and holds. It builds — it never unwinds, never loops in-product. Use it for a single statement moment (a brand sting, a first paint), not as ambient decoration.

Mark-draw · clockwise · holds
1400ms · ease-entrance
Check · success draw-in
on state change only
Arrow · forward, no spin
direction reads · never rotates

Reduced motion is binding — under prefers-reduced-motion: reduce each glyph paints fully on the first frame, no stroke animation, and the ember-drift behind the core set settles to a static low-opacity state.

States

default · fg-2
accent · ember-400
success · state
disabled · fg-3 · .5

Default --fg-2 · interactive / hover --ember-400 · state glyphs map to --state-success / --state-warn / --state-error / --state-info / --state-live · disabled is --fg-3 at 50%. Color is the only thing that changes — geometry is fixed.

Usage

Sizes

ContextSizeStroke
Inline · body16px1.5
UI default24px1.75
Buttons / nav20–24px1.75
Feature / hero32–48px2

Snap to the nearest even pixel size; do not draw at odd half-grids in product.

In a button

On air

Icon inherits the button's text color via currentColor — fill button = near-black glyph, outline = ember glyph. Pair one icon with a label; do not stack two.

Do

  • Draw on the 24-grid, snap anchors to whole or half units.
  • Keep one optical weight — 1.5–2px, square caps, miter joins.
  • Color with currentColor; let state set the color.
  • Use ember for accent / state / large glyphs only.
  • Pair an icon with a clear label; one focal glyph per control.

Never

  • Rounded or butt caps — the terminal is square.
  • Mixed stroke weights in one set, or filled + stroked hybrids without reason.
  • Ember as the body of a small glyph on near-black — fails AA.
  • Spin / gyroscope loaders — motion without meaning.
  • AI-generated or hand-traced glyphs — composite from the source paths.
  • Off-grid anchors or arbitrary scaling that thins the stroke.

Export

RuleSpec
Formatinline SVG · optimized (SVGO) · no editor metadata
viewBox0 0 24 24 — always; size via width/height, never by editing the box
Colorstroke / fill = currentColor — no hardcoded hex in the path
Stroke attrsstroke-width 1.75 · linecap square · linejoin miter · non-scaling-stroke
Accessibilityrole="img" + aria-label when meaningful · aria-hidden when decorative
Naminglowercase-kebab · verb or noun · e.g. render, mark-draw
Source of truthpaths live in the icon set; product imports — never re-draws by hand
<svg class="bb-ico" viewBox="0 0 24 24" role="img" aria-label="render"> <rect x="3" y="5" width="18" height="14" rx="2"/> <path d="M3 9 H21 M8 5 V9 M8 19 V9"/> </svg> /* one declaration recolors every state */ .bb-ico { stroke: currentColor; stroke-width: 1.75; stroke-linecap: square; vector-effect: non-scaling-stroke; } .is-active .bb-ico { color: var(--ember-400); } /* accent */ .is-done .bb-ico { color: var(--state-success); } /* success */

The icon set is part of the same governance discipline as the rest of the book — 24px grid, one stroke band, square caps, currentColor. The mark-draw move ties the glyphs back to the logo. Drawn once, imported everywhere, recolored by state — not by hand.

14 · Source of truth · the registry

Everything the studio can do — one catalog

This is the second source of truth. governance/brand.json governs the tokens; temerarii/catalog/ governs the entities — every model, workflow, tool, repo, skill, skill-pack, framework, and specialist the studio can call. 143 entities, one catalog, by domain.

29Models
16Workflows
3Tools
29Repos
15Skills
17Skill packs
14Frameworks
20Specialists

By domain × kind

Kind \ DomaincreativeagenticengineeringopsΣ
Tools1··23
Repos13112329
Skills652215
Skill packs1133·17
Frameworks334414
Specialists17··320
Σ5112211498

Two kinds sit outside the domain grid. Models (29) group by category — video 6, image 4, research 4, voice 3, music 3, edit 3. Workflows (16) by status — experimental 10, beta 4, stable 2.

Every entry carries domain · lifecycle · live · health · last_audited · [[links]]. The catalog validates against a Pydantic schema; the same data renders the L2 Obsidian vault graph (planned).

15 · Tool health · freshness & flags

Up to date, and not being flagged

Every tool, repo, and pack we add is versioned, sourced, licensed, and stamped — so nothing ships stale or silently flagged. The freshness gate (scripts/audit_tools.py) that will auto-verify these is planned; today the flags are asserted at catalog time (last audited 2026-06-01).

75current
19unverified
4flagged

49 wired · 49 planned · 58 live (key present / endpoint reachable) of 98 domain-bearing entities.

Needs attention — 4 flagged

EntityKindHealthLicenseWhy
html-in-canvasReposflaggedsee repoexperimental / Chromium-flag-only; always feature-detect + graceful fallback. HyperFrames auto-enables at render.
sam-3d-objectsReposflaggedcustom SAM License (NOT Apache) — R&D/Lab-only until commercial terms verifiedLicense-gated + GPU-heavy. Commercial 3D -> Meshy/Tripo/Rodin; open -> TRELLIS.
x-fluxReposflaggedcode Apache-2.0; weights inherit FLUX.1-dev NON-COMMERCIALCommercial deliverables -> generate via fal (handles licensing) or Flux.1-schnell (Apache). Plugs into local ComfyUI.
distributionSkillsflaggedBlotato MCP returns 401 — distribution is the gated/last-fix item.

Flag policy: proxied/unofficial APIs, non-commercial weights, and experimental/flag-only tech are marked flagged and route to a safe alternative (e.g. license-gated weights → generate via fal). Unverified = catalogued, awaiting first live check.

16 · References + influences

What was studied · lifted · left

Lifted — patterns adopted

SourceWhat was lifted
Temerarii · RePrime / Terminal brand bookThe numbered-section narrative arc + mono eyebrows + a mechanically-scannable QA gate. The arc travels; the contents are Temerarii's.
Temerarii · I AM Dream Journal brand bookThe depth model — status/lock-state, live motion previews, three-tool stack, machine-readable companion, sign-off table. Inverted aesthetically (dark/bold vs cream/quiet).
labs.googleTemerarii Labs' experiments-gallery form.
Marp / renderer-as-codeBrand surfaces generated from governance/ — single source of truth.

Studied — explicitly not lifted

SourceWhy left
Generic AI-portfolio 3D demosSlick for its own sake. We use 3D where it proves a capability, not as decoration.
Hype-deck motion (kinetic everything)Energy without a point. Our kinetic type serves the message, then stops.

The numbered-section arc travels well: RePrime is institutional gold-on-near-black; I AM is devotional gold-on-cream; Temerarii is ember-on-near-black, bold and kinetic. Same arc · different aesthetic.

17 · Lock state · changelog · sign-offs

The operator review gate

Every row of the sign-off table now carries a name + date — v2.1 is frozen as of 2026-06-01. Amendments from here follow the change process (a changelog entry), not quiet patches.

Sign-off

SignerRoleApprovesNameDate
DominiqueOperator / brand ownerWhole book · palette · type · motion · QA · LabDominique2026-06-01
Brand voiceVoice register (07) · positioning (01)Voice + framesOperator-approved2026-06-01
Logo + fonts (02)Traced SVGs + fontsTraces approved & shipping · native .ai/.eps master optionalOperator-approved2026-06-01

Changelog

VersionDateChange
v0.12026-05-31Authored from the RePrime arc + I AM depth model; 13 parts seeded, Temerarii-inverted aesthetic
v1.02026-05-31Live motion section (7 sanctioned + forbidden + three-tool stack), full token tables, QA gate, references, lock state
v2.02026-05-31RePrime+peace superset: full brand.json token tree; 00 Brand strategy (mission/values/persona/personality/mood); dual-lens content pillars (brand + SEO/EEAT); motion surface-tiers + vocabulary tilt; Accessibility, Iconography, Registry (143 entities) + Tool-health parts
v2.12026-06-01Locked logo system: 4 traced formats (icon/stacked/horizontal/block, hi-res, correct letter counters) × 6 treatments (white/color/chrome/ember/wire/3D-extrude) + design rules per format & treatment; treatment-motion aligned into §06b as hero-tier primitives
v2.1.12026-06-01Lab front door shipped on temerarii.xyz — one-canvas R3F (kinetic intro · Build·Run·Prove · mark-multiplied swarm · 8 service wireframe shapes = the navigation → temerarii.com · explore-phase handoff · ember laser-snap · separation pass) + a purpose-built touch path (brief intro → tappable services menu); §06b/§06c/§08b synced to shipped; renamed The Lab → Temerarii Labs; fonts settled (system Tahoma + open JetBrains Mono) + traces locked; sound = video-only; operator sign-off