Job section

One section per job (See, Shape, Govern, Run): its number, the claim, the copy and a real artefact that proves it.

Template · stable · v1.0.0 · owner: Site system lead · contract 19 of 20 points (open: figma)

Do and don't

Do: See

Rendered by job-section.ts

Open example: Job section · Do: See Use the full-page example to follow page links.

Claim and evidence.

Do: Run

Rendered by job-section.ts

Open example: Job section · Do: Run Use the full-page example to follow page links.

The fourth job.

Don't: No artefact

Rendered by job-section.ts

Open example: Job section · Don't: No artefact Use the full-page example to follow page links.

A job without its evidence is a claim.

Don't: A fifth job

Rendered by job-section.ts

Open example: Job section · Don't: A fifth job Use the full-page example to follow page links.

Four jobs.

Rules

RuleWhyCheck
Each job section carries a real artefact.Every claim on the landing is shown, not told.Review: Owner, at content review
The number is the job's place in the sequence and is hidden from screen readers.Numbering is only for the job sequence (D-SITE-006); the heading already says the job.Automated: scripts/site/system/check-pages.ts

API

PropTypeRequiredDefaultWhat it does
jobsee | shape | govern | runYesThe job.
headinghtmlYesThe h2.
texthtmlYesThe copy.
linkhtmlNoThe arrow link.
figureslistYesThe artefact figures.

Contract details

The full contract: identity, anatomy, variants, states, tokens, layout, motion, accessibility, content, tests

Identity

AspectValue
Idjob-section
LayerTemplates
Categorysection
OwnerSite system lead
Statusstable
Version1.0.0
Sourceapps/showcase/site/system/templates/job-section.ts (private repository; the contract and the render function are this one module)
VersionDateChange
1.0.02026-10-26Job section as one module: its markup moved out of the page builder (scripts/site) into the system.

Use when

  • The four jobs on the landing, in order. Why: Each job's claim is followed by its evidence.

Do not use when

  • Out of order or alone. Why: The numbers mean the job sequence.

Anatomy

PartWhat it is
rootsection.l-job.l-job-<job> named by its h2
headdiv.l-job-head: p.l-job-n (aria-hidden, the job number), h2, div.l-job-copy
figurediv.l-job-fig: a figure organism

Made of: heading, text, arrow-link, eyebrow, figure-frame.

Used in: page-landing.

Variants

VariantWhenWhy
seeJob 1.The teal rule marks the job.
shapeJob 2.The madder rule marks the job.
governJob 3.The saffron rule marks the job.
runJob 4.The indigo rule marks the job.

States

StateRendered or not applicable
defaultdefault
hoverNot applicable: The job section is not interactive, so it has no hover state.
focus-visibleNot applicable: The job section does not take focus; links and buttons inside it carry their own focus ring.
activeNot applicable: The job section cannot be pressed.
disabledNot applicable: The job section has nothing to disable.
loadingNot applicable: The job section is rendered at build time and is complete when the page loads.
emptyNot applicable: The job section is not rendered without content; the builder skips it.
errorNot applicable: The job section shows no data that can fail.
currentNot applicable: The job section has no current item.
visitedNot applicable: The job section is not a link.
expandedNot applicable: The job section does not open or close.

Tokens

PartToken
number.font--type-h3
number.rule--job-dye
copy.measure60ch

Layout

AspectValue
breakpointsRequired review at 390, 768, 1024 and 1440 px; execution is not implied by this declaration; columns stack under 768 px; the wrap keeps a 16 px gutter on phones.
wrappingText wraps; nothing scrolls sideways.
textExpansionJapanese runs 20 to 40% longer; headings break between phrases (jaBreaks) and blocks grow downwards.

Spacing and rhythm

AspectValue
internalOne padding: --section above (D-SITE-005).
externalCotton.
rhythmFour in a row, the last closes with --section.

Motion

AspectValue
NoneNo intrinsic element animation. The optional claude-entrance consumer profile may translate below-fold structure once (20px, --dur-weave, --ease-enter, --stagger); reduced motion disables it. This preserved baseline entrance is separate from element playback.

Runtime and reuse

  1. Render-only element; mount any registered child enhancements separately. Preserve required Site CSS, fonts, responsive and locale rules from nativeElement.

Accessibility passport

AspectValue
roleregion (section) named by its heading
nameIts h2, by aria-labelledby
keyboardLinks and buttons inside, in reading order.
focusThe --focus ring on every link and button inside.
screenReaderRead in source order; decorative weaving is aria-hidden.
contrastInk on cotton 14:1; text on every dye field 4.5:1 or better (checked by check-brand).
targetLinks and buttons are 44 px tall.

Content

SlotLengthVoice
heading10 wordsThe job's promise

Good: “Change the structure. Keep the look.”

Bad: “Shape module”

Japanese: Job names from the one Japanese set.

Icons and illustrations

None: this element uses no icon or illustration of its own.

Decisions and exceptions

Usage

56 uses across the built pages (measured by npm run site:system).

Tests

AspectValue
unittests/unit/site-system.test.ts: renders every do and don't example through the registry and checks the classes it owns
visualNot yet: there are no screenshot baselines; the Library page is checked for sideways scroll at 1440 px by tests/site/system.spec.ts
a11ytests/site/system.spec.ts: axe (0 serious or critical) on the element's Library page in light and dark
parityscripts/site/system/check.ts: Library examples are rendered by the same render function the site imports

Figma

not-yet: The Loom Site Figma library is the last stage of the plan; this element is not mapped yet.

Open in Storybook

Start with a conversation about your system.

We read your system, show you what we found, and agree with your team what to fix first.