Designed by Jason Walker. Not an official Coram resource.Read the study
Coram

Components and tokens

One set of parts. Every surface.

The reusable pieces behind the school page, the product story and the campaign compositions. Each example below is the real component, with its source copied from the example itself so the two cannot drift.

Type. The observed Coram typeface is TT Commons Classic. It is named first in the stack and renders where it is licensed and installed. No font binary ships with this study; where it is absent the system sans stands in, and that is recorded in the build notes rather than claimed as an exact match.

Figma. No native Figma file was created in this pass; no Figma connection was available in the build environment. The implementation specification at the end of this page describes the variables, text styles, components and variants to build there, one to one with these tokens.

Colour

Green, charcoal, white, and a pale neutral for reading.

Green #039179 and charcoal #1F1F1D are observed website values, provisional until Coram’s own rules are available. Two greens are declared on purpose: the recognition green for marks, rules, fields and large type, and a working green for small interactive text and button fills, where white type reaches 5.3:1. Warning colours are reserved for real semantic states and always travel with a written label.

Green, recognition--c-green · #039179on white 3.9:1, large type only
Green, working--c-green-ink · #037A66white on it 5.3:1 · on white 5.3:1
Green, deep--c-green-deep · #065F4Fhover and pressed · on white 7.6:1
Green tint--c-green-100 · #DDEFE9quiet emphasis
Green field--c-green-050 · #F1F8F6ink on it 15.3:1
Charcoal, ink--c-charcoal / --c-ink · #1F1F1Don white 16.5:1
Ink 2--c-ink-2 · #4A4A46secondary text · 8.9:1
Ink 3--c-ink-3 · #6B6B66labels and captions · 5.4:1
White--c-white · #FFFFFFprimary surface
Paper--c-paper · #F6F5F1reading surface · ink 15.1:1
Paper 2--c-paper-2 · #ECEAE4notice strip, tags
Green on charcoal#5FCBB3 · eyebrows on night8.4:1 on charcoal
State: warning--c-state-warn · #B54708real states only, with a label · 5.4:1
State: alert--c-state-alert · #B42318real states only, with a label · 6.6:1

Contrast measured as WCAG 2 ratios. Reading text uses ink, ink 2 or ink 3 on white, paper or the green field. The recognition green is never used for text below 24px.

Type

Large, deliberate, and left to breathe.

One family, two weights: Medium for display and structure, Regular for reading. Hierarchy comes from scale and space. Display type is tracked slightly tight; reading type is not tracked at all. Numbers in frames, events and records are tabular.

Display · 40 to 104px · 500 · .96

Ordinary takes a lot.

H2 · 30 to 60px · 500 · 1.02

For the people who look after a school.

H3 · 20 to 27px · 500 · 1.15

A drill notice reaches the designated team.

Lede · 17 to 22px · 400 · 1.45

A school day depends on people who notice, prepare, and respond.

Body · 16 to 18px · 400 · 1.55

Your team keeps track of a thousand ordinary things. Coram connects video, entry events, and response tools so they can review what matters and decide what comes next.

Eyebrow · 12px · 500 · caps .14em

For schools

Label · 12px · 500 · caps .12em

Cameras in this drill

Small · 14px · 400 · 1.5

Sample time and location. Generated imagery.

Spacing

An 8px scale, a fluid edge, and one section rhythm.

Eight steps from 8 to 128px. The page edge runs from 16px on a phone to 80px on a wide screen. Sections share one vertical rhythm, 56 to 120px, so pages read as one system.

s1 · 8
s2 · 16
s3 · 24
s4 · 32
s5 · 48
s6 · 64
s7 · 96
s8 · 128
Tokens, as declared
.coram{
  --c-green:#039179; --c-green-ink:#037A66; --c-green-deep:#065F4F;
  --c-green-050:#F1F8F6; --c-green-100:#DDEFE9;
  --c-charcoal:#1F1F1D; --c-ink:#1F1F1D; --c-ink-2:#4A4A46; --c-ink-3:#6B6B66;
  --c-white:#FFFFFF; --c-paper:#F6F5F1; --c-paper-2:#ECEAE4;
  --c-state-warn:#B54708; --c-state-alert:#B42318;
  --c-face:'TT Commons Classic','TT Commons',system-ui,-apple-system,'Helvetica Neue',Helvetica,Arial,sans-serif;
  --c-display:clamp(40px,6.4vw,104px); --c-h2:clamp(30px,3.8vw,60px); --c-h3:clamp(20px,1.9vw,27px);
  --c-lede:clamp(17px,1.4vw,22px); --c-body:clamp(16px,1.15vw,18px); --c-small:14px; --c-label:12px;
  --c-s1:8px; --c-s2:16px; --c-s3:24px; --c-s4:32px; --c-s5:48px; --c-s6:64px; --c-s7:96px; --c-s8:128px;
  --c-edge:clamp(16px,4.4vw,80px); --c-section:clamp(56px,7vw,120px); --c-max:1440px;
}

Wordmark placement

The official file, as supplied, with room around it.

The wordmark is placed from Coram’s supplied file and never redrawn, stretched or recoloured in the letterforms. Clear space on every side is the height of the aperture. Minimum height on screen is 22px. The reversed version for charcoal surfaces is derived from the same file with the aperture untouched; it stands in until Coram’s own reversed artwork is available.

Header · 26pxCoram wordmark on white
Card · 18pxCoram wordmark, small
Footer, reversed · 22pxCoram wordmark reversed on charcoal
Source

Responsive hero

One idea, large type, a photograph with a hard edge.

Type on the left, photograph bleeding to the right edge on a wide screen; type first and the photograph at full width on a phone. The caption names the photograph honestly. The primary action stays on the page; the secondary action goes to the demo.

For schools

Ordinary takes a lot.

A school day depends on people who notice, prepare, and respond. Coram connects video and response tools to support their next step.

A busy school arrival. Generated imagery.
Morning arrival · proposed campaign still
Source

Footage frame

A camera view is always a labelled frame.

Camera and location in the bar, an illustrative time on the right, corner marks on the image, and tags in the foot that say what the frame is. Concept overlays never pretend to be product UI, and a real-time claim is never made.

Cam 04Front entrance09:41:12
Three staff members outside the school entrance. Generated imagery.
DrillIllustrativeSample time and location
Cam 07Staff entrance08:12:40
Two people entering through a glass door. Generated imagery.
IllustrativeOne badge event. Two people. Review, not a verdict.
Source

Event row

One event per line. Time, what, where, state, action.

Tabular numerals keep the time column still. The state is a word with a dot beside it, never a colour alone. On a phone the row stacks under the time.

09:40:00Drill startedLockdown drill, all buildingsFront officeDrillOpen
09:40:04Notice sent to designated staffAll buildingsSentOpen
09:40:09AcknowledgedFront officeAcknowledgedOpen
09:40:40Awaiting acknowledgementCounsellor, Building BOpenOpen
Source

Evidence reference

A finding points at its evidence.

A thumbnail, the camera, the time, the length, and where the clip sits in the record. Used in the review record and in any report that makes a claim.

Source

Quote and proof module

Customer evidence appears only with attribution.

A paraphrase or an approved quotation, the organisation, and the link to the source. If it cannot be attributed, it does not appear. No generated person is ever presented as a customer.

From a published Coram customer story

Coram’s published Lakepointe Church story describes staff with independent access to footage across several campuses, without waiting on one person to pull it.

Lakepointe Church multi-campus, as published by Coram Read the story on coram.ai

A paraphrase of Coram’s own published account, not a quotation.

Source

CTA

Primary, secondary, quiet, and a text link.

The primary fill is the working green so white type passes 4.5:1. The secondary is a charcoal outline. Quiet is for controls inside components. One clear emphasis per composition; a surface never carries two primaries.

Source
Source, on charcoal

Tags and states

Words first. Colour second.

DRILL is a charcoal tag with a green dot, visible in every stage of a drill. Illustrative marks sample data. Semantic states use warning colours only for real conditions and always carry their word.

Drill Illustrative workflow Sample data Acknowledged Awaiting acknowledgement Alert: real condition
Source

Ledger

Product roles as a ledger, not a card grid.

One idea per row. The distinctions a buyer needs, what it requires and what it connects with, read across a line. Used for the four roles on the school page.

04

Emergency managementEmergency Management

Alert designated staff, coordinate the response, practise drills, and support reunification workflows, with a record of what the team did.

RequiresSoftware. It can operate separately or connect with Video Security.

Connects withVideo, for camera context during a response.

Source

Email block

The welcome and preparation email.

A 600px single column. The composition shown is the lifecycle email from the strategy: it asks about the reader’s place and team, and gives one concrete next step. Rebuild with tables for production clients; the layout, copy and hierarchy are here.

Source

After the drill

A one-page debrief in the team’s own words.

What the team noticed, what helped, what to change, an owner, and a follow-up date. It recognises useful contributions without scores or ranking. Blank, it is a worksheet; filled, it is the last page of the review record.

After the drill

Worksheet
What the team noticed

In the team’s words.

What helped

Name the people and the steps.

What to change

One or two concrete changes.

Owner

A role or a name.

Follow-up date

Before the next drill.

Source

Drill workflow

The four-stage component, rendered from data.

Drop <div data-coram-drill></div> on any page that loads coram.css, coram-drill.css and coram-drill.js. The stages, copy and sample data live in coram-drill.js so the school page, the standalone story and the case study stay identical. Keyboard: the stage buttons, Back and Next are real buttons; focus moves to the stage heading on every change.

Source
<link rel="stylesheet" href="coram.css">
<link rel="stylesheet" href="coram-drill.css">
<div data-coram-drill data-img-base="../../assets/images/work/coram/"></div>
<script src="coram-drill.js" defer></script>

Figma implementation specification

What to build in Figma, one to one with this page.

No native Figma file was created for this study. No Figma connection was available in the build environment, and screenshots are not relabelled as components. The specification below is enough for a designer to build the library in an afternoon; the HTML and CSS on this page are the reference implementation and remain the source of truth for values.

File
One library file, Coram Concept Library, with pages: Tokens, Type, Components, Compositions, Pages. Publish as a team library so the page files consume it.
Variables: colour
A collection colour with one mode. Variables named exactly as the CSS tokens without the prefix: green, green-ink, green-deep, green-050, green-100, charcoal, ink, ink-2, ink-3, white, paper, paper-2, state-warn, state-alert, night-text (white at 82%), night-faint (white at 58%), rule (charcoal at 14%), rule-2 (charcoal at 30%).
Variables: space
A collection space: s1 8 through s8 128, plus edge-phone 16, edge-desktop 80, section-phone 56, section-desktop 120. Auto-layout padding and gaps bind to these, never to typed numbers.
Text styles
Family TT Commons Classic where licensed. Styles at the desktop and phone ends of each clamp: Display/Desktop 104/100 Medium, tracking -2.5%; Display/Phone 44/42; H2/Desktop 60/61; H2/Phone 32/33; H3 27/31 and 21/24; Lede 22/32 and 17/25; Body 18/28 and 16/25; Eyebrow 12/14 Medium caps tracking 14%; Label 12/14 Medium caps tracking 12%; Small 14/21; Mono for times, 14/20 with tabular figures on.
Grid
Desktop 1440: 12 columns, 80 margin, 32 gutter. Phone 390: 4 columns, 16 margin, 16 gutter. Content max width 1440.
Component: Wordmark
The supplied PNG (628 by 128) placed in a frame with padding equal to the aperture height on every side. Variants: surface=white | charcoal, size=header 26 | footer 22 | card 18. The reversed variant uses the derived file until Coram supplies its own.
Component: Button
Auto layout, height 48, padding 0 22, radius 3, gap 10. Variants: kind=primary | secondary | quiet, surface=white | charcoal, state=default | hover | focus | disabled, arrow=true | false. Primary fill green-ink, text white. Secondary 1.5 stroke ink. Focus: 2 stroke ink offset 3.
Component: Tag
Height 26, padding 0 10, radius 2, Label style. Variants: kind=drill | illustrative | outline | state-ok | state-warn | state-alert. Drill carries an 8px green dot before the word.
Component: Footage frame
Vertical auto layout: bar (row, padding 8 12, fill black at 35%), image slot 16:9 with two corner marks (18 by 18, 1.5 stroke white at 75%), foot (row, padding 8 12). Properties: camera, location, time (text), image (instance swap), tags (boolean drill, boolean illustrative).
Component: Event row
Row auto layout, padding 12 0, bottom stroke rule. Fixed 76 time column, fill what column, fill where column, 148 state column, hug action. Variants: state=drill | sent | ack | open; layout=desktop | phone where phone stacks what, where and state under the time.
Component: Evidence reference
Row auto layout, padding 12, gap 14, 1 stroke rule-2, radius 3. 120 by 68 thumbnail slot, then title (Body 15 Medium) and meta (Small, tabular). Hover stroke ink.
Component: Proof module
Vertical auto layout, padding 36, gap 16, left stroke 3 green, fill green-050. Slots: label, quotation or paraphrase (25/33), source line (organisation Medium, descriptor, link), note (Small ink-3).
Component: Hero
Two-column frame at 1440 (7 and 6 of 12, gap 72) with the media column bleeding to the right edge; single column at 390. Slots: eyebrow, display, lede, primary and secondary button, image, caption.
Component: Ledger row
Four columns at desktop (56, 1.1fr, 1.5fr, 1fr), gap 40, padding 32 0, bottom stroke. Two-column phone variant with number at left and the three text blocks stacked.
Component: Email
600 wide vertical auto layout: preheader bar, head (wordmark and label), hero image 2:1, body (gap 14), CTA, foot. All text bound to text styles; body copy is a single editable slot.
Component: Debrief
Frame with 1.5 stroke ink, head row, then a two-column grid of fields (label Medium caps, value Body 15). Variants: filled=worksheet | record.
Component: Ad
Two masters: Ad/Portrait 1080 by 1350 and Ad/Landscape 1200 by 628. Slots: top (wordmark, tag), photo, headline, support, foot. Variants: surface=white | charcoal | green. Type scales with the frame, matching the container-query sizes in CSS.
Component: Drill workflow
One frame per stage (four) sharing a head (tags, meta, stage buttons) and a foot (legal line, Back, Next). Interactive component in prototype mode: stage buttons and Next change the variant; Back returns. Sample data is typed into the frames; times and roles match coram-drill.js.
Compositions and pages
Pages: School / Desktop 1440, School / Phone 390, Product story, Components. Build from instances only; detach nothing. Where the CSS and Figma disagree, the CSS on this page wins and Figma is corrected.

Exact wordmark geometry, type files and formal rules should come from Coram before any commissioned production. Values here are proposals for this independent study.