Build. Run. Prove.
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.
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.
| Component | State |
|---|---|
| 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 needed | Locked |
| Lab front door · temerarii.xyz (one-canvas R3F, shipped) | Locked |
| v2.1 operator sign-off · 2026-06-01 | Locked |
The arc
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
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
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
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.
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.
The mark, the lockup, and the rules that keep them intact
The mark is the T+M monogram — a red T and a black M locked together with a 45° arrow cutting through. It ships as locked, traced SVG vectors (tm-mark.svg + the three lockups), never re-typeset by hand and never regenerated by a model. The full wordmark reads TEMERARII MEDIA.
Master lockup
The lockup reveals once on entry and holds. On dark grounds use the white lockup; on light, the red/black lockup. The reveal here is pure CSS on the traced vector; a production motion sting is rendered in Remotion when one is needed — not stored inline in the book.
Sanctioned variants — the four formats
Four formats, picked by the shape of the space — not by mood. Each is the static, locked color vector (red T · black M · black TEMERARII · red MEDIA). The six treatments below apply to any of them; pick the format by the container.
Icon — mark only
The T+M monogram alone. Favicon, app icon, avatar, watermark, in-product chrome — anywhere the wordmark won't fit. Floor 32px.
Stacked — mark over wordmark
Square & vertical spaces, profile headers, merch & apparel, centred heroes, posters. Floor 96px wide.
Horizontal — mark + wordmark inline
Site headers, nav bars, email signatures, letterhead, wide footers. Floor 120px / 26mm.
Block — compact justified lockup
Dense badges, stamps, stickers, tight square locks where stacked runs too tall. Floor 110px.
All four formats are traced SVG vectors, locked and operator-approved, with correct letter counters. Shown here in the static color form; the white knockout and the other five treatments apply to any format below. A native designer .ai / .eps master (plus a cream-print treatment) can still supersede the traces.
Sanctioned logo treatments
The locked system: four traced formats × six treatments, built as pure CSS on the locked vector masters (tm-mark.svg · tm-lockup-stacked / -horizontal / -block.svg). Correct letter counters, brand-locked red/black/white. Each treatment auto-plays its motion (reduced-motion holds the clean static frame); the static form of each format is shown above in Sanctioned variants. Pick one per surface — never stack them.
Design rules — choosing the format
Four formats, one per shape of space. Pick by the container, not by mood. Every format honours the same clearspace and minimum-size rules below.
| Format | File | Use it for | Don't | Min size |
|---|---|---|---|---|
| Icon — mark only | tm-mark.svg | Favicon, app icon, social avatar, loader, watermark, in-product chrome — anywhere the wordmark won't fit. | As the sole signature on first-touch marketing where space allows the full lockup. | 32px / 8mm |
| Stacked — mark over wordmark | tm-lockup-stacked.svg | Square & vertical spaces, profile headers, merch & apparel, centred heroes, posters. | Short, wide bars — use horizontal there. | 96px wide |
| Horizontal — mark + wordmark inline | tm-lockup-horizontal.svg | Site headers, nav bars, email signatures, letterhead, wide footers. | Square or cramped spaces — it needs width. | 120px wide / 26mm |
| Block — compact justified lockup | tm-lockup-block.svg | Dense badges, stamps, stickers, tight square locks where stacked runs too tall. | Small sizes or body — the stacked text needs room. | 110px wide |
Design rules — choosing the treatment
Six treatments, each available on all four formats. One per surface — never stack two. The motion is the accent; the resting frame is always a clean, on-brand logo.
| Treatment | Use it when | Ground | Caution |
|---|---|---|---|
| 01 · White knockout | Default reversed lock — on dark/near-black grounds, over photo or video. | Dark only | Never on light — it disappears. |
| 02 · Color | The primary mark — print, documents, light UI, light substrates. | Light / white | Red stays the accent; never recolour T or M. |
| 03 · Liquid chrome | Premium / feature / hero moments — title cards, sizzle, launch keynotes. | Dark | Sparingly; never on utility or body surfaces. |
| 04 · Ember fill | Energy & announcement moments — the single accent on a page. | Dark | One per layout; not for dense UI or small sizes. |
| 05 · Wireframe | Technical / blueprint / "building" contexts, loading and draw-on reveals. | Dark | Outline only — not the resting state for a primary lock-up. |
| 06 · 3D extrude | Bold hero / key-art / title moments at large size. | Light (shadow reads) | Large only; never small or body. One per layout. |
Governing rules (all formats × all treatments): one treatment per surface, never stacked · clearspace and minimum-size always apply, whatever the treatment · motion is a single accent moment, then it holds · prefers-reduced-motion resolves every treatment to its clean resting frame · the geometry is the traced master — never re-typeset or AI-regenerated · the anti-pattern gallery below applies to every format and treatment.
Clearspace — a measurable rule
Keep clear space of half the mark height (0.5×) on every side. Nothing — type, image edge, or other logo — enters that zone.
Solid line marks the mark; the dashed line is the protected inset. The padding equals half the 60px mark — 30px on every side.
Type and edges crowd the mark — the clear zone is breached. Give the mark room, or move the copy out.
Minimum size
Below these floors the geometry breaks down. Hold the line.
| Use | Minimum | Note |
|---|---|---|
| Mark — digital | 32px | Favicon and app-icon floor. Below this the ring closes up. |
| Lockup — digital | 120px wide | Mark plus wordmark; the wordmark sets the floor. |
| Mark — print | 8mm | Stroke weight holds on coated and uncoated stock. |
| Lockup — print | 26mm wide | Wordmark legible at arm’s length. |
Anti-pattern gallery — never
Six ways to break the mark, each shown so it is recognised on sight. If a layout does any of these, it ships wrong.
Operator carry — the finished vector master (mark + wordmark, in .svg / .ai / .eps) is a designer task on the critical path. This page is the canonical reference until it lands.
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
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.
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.
#000000#0A0A0C#16161A#1F2024#2A2C32#5B606E#9AA0AERed 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.
#B3141A#CC1820#EC1C24#F0484E#F57C80#FBC4C6Neutral 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.
#0A0A0C#121317#1A1C22#262932#5B606E#9AA0AE#D8DBE2#FFFFFFSemantic 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.
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.
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.
| Foreground | On ground | Ratio | Normal 4.5:1 | Large / UI 3:1 | Verdict |
|---|---|---|---|---|---|
| --fg-1 #FFFFFF | ink-900 #000000 | 21.00 | pass | pass | Type on pure-black panels |
| --fg-1 #FFFFFF | bg #0A0A0C | 19.78 | pass | pass | Primary type — any size |
| --fg-1 #FFFFFF | surface #121317 | 18.56 | pass | pass | Type on cards |
| --fg-2 #C9CCD2 | bg #0A0A0C | 12.29 | pass | pass | Body copy — any size |
| --fg-2 #C9CCD2 | surface #121317 | 11.54 | pass | pass | Body on cards |
| --fg-3 #8A8F99 | bg #0A0A0C | 6.09 | pass | pass | Captions, labels |
| --fg-3 #8A8F99 | raised #1A1C22 | 5.25 | pass | pass | Labels on raised — floor |
| --red-500 #EC1C24 | bg #0A0A0C | 4.48 | accent-only | pass | Headings, large text, UI — never small body |
| #FFFFFF on red | red-500 #EC1C24 | 4.41 | accent-only | pass | White on red buttons — large/bold UI only |
| --red-400 #F0484E | bg #0A0A0C | 5.41 | pass | pass | Smallest sanctioned red text on near-black |
| --red-300 #F57C80 | bg #0A0A0C | 7.61 | pass | pass | Subtle red type if ever needed |
| --state-success #3FB984 | bg #0A0A0C | 7.99 | pass | pass | Status text |
| --state-error #E5484D | bg #0A0A0C | 5.05 | pass | pass | Status text |
| --state-info #4C82F2 | bg #0A0A0C | 5.45 | pass | pass | Status 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.
Within cap — red accents read because they are scarce.
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-2not#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-2on--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.
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.
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.
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.
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.
0123 & ?
Use for: hero, display, h2, h3, stat numbers. Every header size is bold.
Never: body copy, captions, or running prose.
0123 & ?
Use for: body-large, body, captions, buttons, inputs. Everything you read.
Never: a header — headers are always Bold.
0123 & ?
Use for: eyebrows, labels, counters, code, timestamps. Tabular figures for data.
Never: a header or a paragraph of running prose.
Role · family · token
| Role | Token | Family · weight | Line · track | Use |
|---|---|---|---|---|
| Hero | --t-hero | Tahoma Bold | 1.02 · -0.02em | page-opening statement |
| Display | --t-display | Tahoma Bold | 1.05 · -0.015em | section openers · stat numbers |
| H2 | --t-h2 | Tahoma Bold | 1.1 · -0.01em | section headings |
| H3 | --t-h3 | Tahoma Bold | 1.25 | subheads |
| Body-L | --t-body-l | Tahoma Regular | 1.6 · 66ch | leads · intros |
| Body | --t-body | Tahoma Regular | 1.6 · 66ch | running copy |
| Caption | --t-caption | Tahoma Regular | 1.5 | notes · footnotes |
| Eyebrow | --t-eyebrow | JetBrains Mono 500 | 0.12em · upper | section kicker |
| Counter | --t-counter | JetBrains Mono 500 | tabular-nums | data · 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.
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.
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.
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.
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.
Temerarii is open
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.
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
| Token | Curve | Live |
|---|---|---|
| --ease standard | .22,.61,.36,1 | |
| --ease-out entrance | .16,1,.3,1 | |
| --ease-in exit | .55,.06,.68,.19 | |
| linear tickers only | linear |
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.
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
| Tool | Job | Where it ships |
|---|---|---|
| HTML / CSS keyframes | Workhorse — micro-interactions, web, these live demos. ~90% of motion. | Lab, office, hub, every hover/transition |
| Remotion | Programmatic React video — the content machine. Highest-ROI motion asset. | The 9-output social matrix, campaign videos, reels/shorts |
| React-Three-Fiber / Three.js | Spatial 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.
| Tier | May add | Tooling |
|---|---|---|
| Brand-book / web | live CSS demos, kinetic type, logo-reveal + ember-drift under headings, one-focal scroll-reveal | HTML/CSS keyframes |
| 9-output social | the full seven sanctioned set — cinematic-push, kinetic-build, 8-frame crossfade, receipts count-up | Remotion / HyperFrames |
| Lab / 3D — the boldest tier | spatial-parallax, the three.js / Spline hero, scroll-action sequences, html-in-canvas type | R3F + 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.
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.
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.
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
/>
)
}
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>
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.
Enters from below, settles. The signature entrance — staggered word build at scale.
Slides in from the trailing edge. Used for supporting cells beside a primary statement.
Mirror of the left. One direction per row — never both into the same frame.
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.
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.
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.
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.
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.
- Reveal the message, then hold.
- One focal motion per frame.
- Mask the baseline — type rises from a clip.
- Land on the entrance curve, stop.
- Loop kinetic type forever in-product.
- Bounce, elastic, or spring the landing.
- Spin geometry without meaning.
- Outpace reading — under the slow token.
- 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.
| Treatment | Motion signature | CSS tier | three.js / R3F tier | Pairs with |
|---|---|---|---|---|
| White knockout | Cascade-rise | per-letter rise + settle | mesh fade + rise on entrance | reveal-up |
| Color | T+M assemble | fill-split: red drops, black rises | model parts converge to lockup | reveal on enter |
| Liquid chrome | Shine sweep | gradient-sweep mask | MeshPhysicalMaterial + env-map, pointer-reactive reflection | pointer field |
| Ember fill | Ignite, bottom-up | gradient rise + glow | emissive + bloom + ember particles | ember-drift / pointer caustic |
| Wireframe | Draw-on | stroke-dash draw (pathLength) | EdgesGeometry + animated line-dash | scroll-scrub draw |
| 3D extrude | Depth-grow / flip | stacked drop-shadows | real ExtrudeGeometry from the traced SVG + lighting | the 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.
scroll-sweep — the glint travels with scroll
scroll-ignite — peaks at viewport centre
scroll-draw — outline draws 0→100%
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.
| Reference | What it actually does (runtime-verified) | Technique | Our expression |
|---|---|---|---|
| junni next | One 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. |
| lusion | Custom 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. |
| domenicobrz | WebGL/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. |
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.
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.
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.
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.
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.
As the scroll resolves, a swarm of small white marks — real SVGLoader → ExtrudeGeometry of tm-mark.svg — pop 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 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.
- 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) andenv(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.
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.
- 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.
- No autoplay audio on load (it stays a forbidden pattern, §06).
- A persistent mute toggle, always reachable; state remembered.
prefers-reduced-motionand 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.)
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
Vocabulary tilt
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
| Channel | Register | Shape |
|---|---|---|
| long-form, operator-to-operator — the playbook in full | hook → method → receipt → one next step | |
| X | compressed, declarative — one claim, sourced | one idea, ≤280, no thread-padding |
| Instagram / TikTok | visual-first — caption supports the frame | motion carries it; copy is the spec foot |
| YouTube | the long surface — video publishes here only | title = the result; social gets derived cuts |
| Blog / Insights | the 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
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.
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.
| Job | Model | Why this one | Key params |
|---|---|---|---|
| Design / UI imagery | fal · Recraft V4 | Palette-lock via colors — pins the frame to our hexes, kills off-palette drift. | colors: [#0A0A0C, #EC1C24, #0A0A0C] · style: digital_illustration |
| Marks / icons / glyphs | fal · Recraft Vector | True SVG out. Clean geometry, editable, no raster fuzz — matches the composited-type rule. | style: vector_illustration · output: svg |
| People / ambassadors | Higgsfield · Soul ID | Identity-locked across a campaign — the same recurring face, not a new stranger each frame. | soul_id: locked · seed: pinned per cast member |
| Upscale / finish | fal · clarity upscaler | Final 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.
[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]
[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.
| Look | Light | Texture | Reads as |
|---|---|---|---|
| Honest | Real ambient + faint red edge | Actual screens, real photography of the work | we did this, here is the proof |
| Built | Red rim from upper-right, black fill | Matte materials, machined edges, grid underlay | engineered, in progress, in the open |
| In-the-machine | Red accent on near-black, low key | Pipeline diagrams, render frames, data on dark | the engine running, minus the hype |
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.
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.
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 sanctionedember-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).
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.
<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.
Over motion
Backdrop blur over the ember-drift hero. Holds legibility without killing the motion behind it.
The cell language
Two ember corner brackets at 2px — never a closed box. The signature unit, applied as a card.
<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×</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.
<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.
<!-- 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">▲ 38%</span>
<span class="bb-trend down">▼ 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.
This renders the full social matrix and posts on the schedule. Captions are on; reduced-motion posters ship alongside.
<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">×</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.
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.
to nine cuts.
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.
| Element | Rule | Spec |
|---|---|---|
| Lower-third | Bottom-left, inside title-safe; 3px ember left-rule; display name + mono role. | in/out 240ms · holds 4–6s |
| Channel bug | Top-right, persistent; reads YOUTUBE — the one publish target for long-form. | live dot · ember |
| End-card | Mark draws clockwise, tagline, exactly one CTA. No social wall, no subscribe spam. | mark draw 1400ms |
| Captions | Baked 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 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
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.
| Ground | Logo treatments that read on it (rotate among these) |
|---|---|
| Black / near-black | white-knockout · liquid-chrome · ember-fill · wireframe |
| White | color · 3D-extrude |
| Red · #EC1C24 | white-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-2for 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.
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.
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-2on--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: reduceis 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 --strictpasses. 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-motionhonored — static poster ships.- All on-screen text composited — never AI-generated text baked into images.
The machine half vs the human half
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.
- Does it read as Temerarii on mute?
- Is the claim true, and is the number sourced?
- Is there exactly one clear next step?
Thirteen points. Mechanical first, editorial second. If it breaks these, it does not ship.
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.
| Token | On | Ratio | Body AA | Large / UI AA | AAA |
|---|---|---|---|---|---|
| --fg-1 #FFFFFF | --surface-bg | 19.8:1 | Pass | Pass | Pass |
| --fg-2 #C9CCD2 | --surface-bg | 12.3:1 | Pass | Pass | Pass |
| --fg-3 #8A8F99 | --surface-bg | 6.1:1 | Pass | Pass | Large only |
| --red-500 #EC1C24 | --surface-bg | 4.5:1 | No body | Pass | Large only |
| --red-400 #F0484E | --surface-bg | 5.4:1 | Pass | Pass | Pass |
| --red-300 #F57C80 | --surface-bg | 7.6:1 | Pass | Pass | Pass |
| --neutral-950 #0A0A0C | --red-500 | 4.5:1 | Pass | Pass | Large only |
| --state-success #3FB984 | --surface-bg | 8.0:1 | Pass | Pass | Pass |
| --state-error #E5484D | --surface-bg | 5.1:1 | Pass | Pass | Large only |
| --state-info #4C82F2 | --surface-bg | 5.5:1 | Pass | Pass | Large only |
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.
Try keyboard Tab vs mouse click — the ring shows for keyboard only.
/* 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.
| Role | Floor | Token | Rule |
|---|---|---|---|
| Body | 16px | --t-body | Never below 16px. Measure capped at --measure (66ch). |
| Caption | 13.5px | --t-caption | Lowest body-weight text. Use --fg-2, not --fg-3, for sustained reading. |
| Eyebrow / label | 11–13px | --t-eyebrow | Mono uppercase, 0.12em tracking. Decorative — paired with a larger sibling. |
| Counter | 13px | --t-counter | Tabular-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.
.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.
Strip the color and the word still tells the status.
- 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.
| Surface | At full motion | Reduced-motion fallback |
|---|---|---|
| HTML / CSS | kinetic, drift, demos, scroll-action | global query kills animation + transition; content shown in place |
| Remotion | 9-output social matrix | static first-frame poster (PNG) substitutes for the clip |
| R3F / Spline | 3D / spatial hero, parallax | canvas locks to first frame, rAF ticking stops, no autoplay |
| bb-reveal | opacity + translate on enter | opacity: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.
13.7 · RTL and internationalization
The layout is direction-agnostic so the brand travels into Arabic, Hebrew, and other RTL scripts without a rebuild.
- 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.
- Layouts hold a 40% text-expansion margin (German, French) before clipping.
langis 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.
/* 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.
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
| Property | Value |
|---|---|
| Canvas | 24 × 24 units (the 24px grid) |
| Live area | 20 × 20 — a 2-unit keyline inset (dashed ember) |
| Stroke | 1.75 default · 2 for large / hero · band is 1.5–2 |
| Caps | square · joins miter — the house terminal |
| Grid step | align to whole or half units · no off-grid anchors |
| Corner radius | 2 units on rounded forms · sharp otherwise |
| Optical weight | match 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.
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.
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 · 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
| Context | Size | Stroke |
|---|---|---|
| Inline · body | 16px | 1.5 |
| UI default | 24px | 1.75 |
| Buttons / nav | 20–24px | 1.75 |
| Feature / hero | 32–48px | 2 |
Snap to the nearest even pixel size; do not draw at odd half-grids in product.
In a button
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
| Rule | Spec |
|---|---|
| Format | inline SVG · optimized (SVGO) · no editor metadata |
| viewBox | 0 0 24 24 — always; size via width/height, never by editing the box |
| Color | stroke / fill = currentColor — no hardcoded hex in the path |
| Stroke attrs | stroke-width 1.75 · linecap square · linejoin miter · non-scaling-stroke |
| Accessibility | role="img" + aria-label when meaningful · aria-hidden when decorative |
| Naming | lowercase-kebab · verb or noun · e.g. render, mark-draw |
| Source of truth | paths 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.
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.
By domain × kind
| Kind \ Domain | creative | agentic | engineering | ops | Σ |
|---|---|---|---|---|---|
| Tools | 1 | · | · | 2 | 3 |
| Repos | 13 | 1 | 12 | 3 | 29 |
| Skills | 6 | 5 | 2 | 2 | 15 |
| Skill packs | 11 | 3 | 3 | · | 17 |
| Frameworks | 3 | 3 | 4 | 4 | 14 |
| Specialists | 17 | · | · | 3 | 20 |
| Σ | 51 | 12 | 21 | 14 | 98 |
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).
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).
49 wired · 49 planned · 58 live (key present / endpoint reachable) of 98 domain-bearing entities.
Needs attention — 4 flagged
| Entity | Kind | Health | License | Why |
|---|---|---|---|---|
html-in-canvas | Repos | flagged | see repo | experimental / Chromium-flag-only; always feature-detect + graceful fallback. HyperFrames auto-enables at render. |
sam-3d-objects | Repos | flagged | custom SAM License (NOT Apache) — R&D/Lab-only until commercial terms verified | License-gated + GPU-heavy. Commercial 3D -> Meshy/Tripo/Rodin; open -> TRELLIS. |
x-flux | Repos | flagged | code Apache-2.0; weights inherit FLUX.1-dev NON-COMMERCIAL | Commercial deliverables -> generate via fal (handles licensing) or Flux.1-schnell (Apache). Plugs into local ComfyUI. |
distribution | Skills | flagged | — | Blotato 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.
What was studied · lifted · left
Lifted — patterns adopted
| Source | What was lifted |
|---|---|
| Temerarii · RePrime / Terminal brand book | The 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 book | The 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.google | Temerarii Labs' experiments-gallery form. |
| Marp / renderer-as-code | Brand surfaces generated from governance/ — single source of truth. |
Studied — explicitly not lifted
| Source | Why left |
|---|---|
| Generic AI-portfolio 3D demos | Slick 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.
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
| Signer | Role | Approves | Name | Date |
|---|---|---|---|---|
| Dominique | Operator / brand owner | Whole book · palette · type · motion · QA · Lab | Dominique | 2026-06-01 |
| Brand voice | Voice register (07) · positioning (01) | Voice + frames | Operator-approved | 2026-06-01 |
| Logo + fonts (02) | Traced SVGs + fonts | Traces approved & shipping · native .ai/.eps master optional | Operator-approved | 2026-06-01 |
Changelog
| Version | Date | Change |
|---|---|---|
| v0.1 | 2026-05-31 | Authored from the RePrime arc + I AM depth model; 13 parts seeded, Temerarii-inverted aesthetic |
| v1.0 | 2026-05-31 | Live motion section (7 sanctioned + forbidden + three-tool stack), full token tables, QA gate, references, lock state |
| v2.0 | 2026-05-31 | RePrime+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.1 | 2026-06-01 | Locked 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.1 | 2026-06-01 | Lab 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 |