<!-- Deconflict brand pack, all in one file. The same content is split into separate files at https://deconflict-brandbook.vercel.app/brandos/ -->

---

# Deconflict brand pack

Everything needed to make on-brand Deconflict work: pages, sections, posts, emails. Deconflict tells a bank whether a crypto wallet is already under investigation by law enforcement.

**If you're an AI reading this:** read this file, then the Identity section, the Rules section, the Voice section and the Layouts section before making anything. Build only from what's here. When something isn't covered, say so rather than inventing it.

**If you're a person:** open Claude (or the AI you use), add this file, and say what you need, for example "a landing page for our February event". If you get stuck, ask it what to do next.

## Making a web page

1. **Write a one-line brief:** who it's for, what they should do, what it must say.
2. **Pick sections from the Layouts section, nothing else.** A page the website doesn't have (careers, about, an event) follows its recipe in the Page recipes section and may use the designed sections. Otherwise start with a hero (H1), end with a call to action (C1) and the footer (F1), kept as the brand has it (U-21). In between, 6 to 9 sections chosen for what the brief needs: explain, prove, show people, pause.
3. **Order them by the page rules** in the Rules section: no two neighbours with the same skeleton (U-03), a dark act then a light act (U-04), a loud section next to a quiet one (U-05).
4. **Write the copy** in Deconflict's voice, within each slot's word limit (the comments in each layout's HTML give them) and its `data-lines`: the lines it was designed at on desktop. Copy that runs longer is rewritten shorter, never left to push the next part down. Claims come from the Facts section and the request only; if a fact is missing, leave it out (never a placeholder) and list it in your reply.
5. **Build it** by copying each layout's `<section>` from the Layouts section and replacing the copy. Navigation and footer links in the layouts are placeholders ("Link 01"): replace them with the site's real page names. Keep the classes; link the tokens.css code in this file, the layouts.css code in this file and the brand.js code in this file. Links are `<a>` with the layout's classes on them; never add rules for bare elements (`a { }`, `[data-layout] a`), which override the layouts' colours. Put an approved photo in every media box (an `<img>` with the box's class, without `media`; the Images section gives kind and focus) or delete the box. A finished page has no grey boxes, logo stand-ins, "Lorem ipsum", "John Smith" or "Link 01".
6. **Keep it working on a phone.** The layouts' CSS carries their tablet and phone rules (the `@media` blocks): keep them. Anything you add or change follows them: below 768px rows stack, cards go one per row, margins are 24px, nothing scrolls sideways.
7. **Check it** against the Checklist, at 1440 and at 390 wide.

To work in another stack (Webflow, Next.js, WordPress), use the layouts as the blueprint: same structure, same tokens, same spacing. Keep the type sizes and the grid exactly; they carry most of the brand.

## Making something else

Posts, emails, slides and documents follow the same Rules section, the Voice section and the Facts section, and use the same tokens: the fonts, the light, mist, dark, forest, blue, beige, green, mint tones, the text styles. Keep to two type sizes about twice apart, one idea per piece, and the voice's plain, specific sentences.

## The system at a glance

- **Font:** PP Telegraf, Instrument Sans, DM Mono.
- **Tones:** light #FFFFFF, mist #FAFAFA, dark #0A1B17, forest #112D26, blue #E7F5FF, beige #E8EADE, green #CAFDDB, mint #DDF7DF.
- **Grid:** 12 columns of 78px, 24px gutter, 120px margin, on a 1440px page.
- **Spacing scale (px):** 4, 8, 12, 16, 24, 32, 40, 48, 64, 80, 96, 128, 160, 192, 216.
- **Text styles:** 20, from 144px display to 12px labels. Use them; don't invent sizes.

---

# Fonts

| Font | Use | Where it comes from | If it isn't available |
| --- | --- | --- | --- |
| PP Telegraf | Display: headlines, quotes, the call to action | Licensed (Pangram Pangram). tokens.css loads it from the brand book; nothing to install, and never use a copy from your own machine. | Instrument Sans at the same size, tracking -2%, only if the font fails to load |
| Instrument Sans | Text: body, headings under 32px, links, buttons, labels | Free, Google Fonts | none needed |
| DM Mono | Eyebrows only (the small labels above section headings) | Free, Google Fonts | none needed |

In an artifact or prototype, load the free ones like this; keep the licensed face first in each font stack so it's used where it's installed:

```html
<link href="https://fonts.googleapis.com/css2?family=Instrument+Sans:wght@400;500&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=DM+Mono&display=swap" rel="stylesheet">
```

---

# Building with the code

Every page is one self-contained HTML file. Copy tokens.css and layouts.css from the end of this file into a <style> tag in the page's head, and brand.js into a <script> tag before </body>. Never link to them with <link> or src: those files don't sit next to the page. Then add the sections copied from the layouts below, keeping their classes.

Sections come in the tones listed for each layout: change `tone-light` to another listed tone on the section and layouts.css recolours it.

## Text styles

Use the text style classes in tokens.css (`.t-…`) for all type; never set a size by hand. On a phone the large ones step down by themselves.

---

# Deconflict identity

The logo, the mark, the colour blocks and how the brand shows up beyond the website. From the brand book (Brandbook page) and its logo boards.

## The logo

The wordmark DECONFLICT with the mark to its left. The mark is a seven-sided ring: agencies and institutions coming together around one point of clarity (the brand book: "constructed around the concept of agencies and institutions coming together to create clarity").

Use the SVG as it is; it takes its colour from `color` (`fill="currentColor"`). Never redraw, stretch, outline or recolour it outside the pairings below.

```svg
<svg width="1248" height="152" viewBox="0 0 1248 152" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M198.7 27.5H255.4C281.8 27.5 301.3 47.9 301.3 75.7C301.3 103.5 281.8 124.1 255.4 124.1H198.7V27.5ZM249.1 108.6C270.5 108.6 284.4 95.6 284.4 75.7C284.4 55.8 270.5 43.0 249.1 43.0H215.2V108.6H249.1Z" fill="black"/>
<path d="M318.3 27.5H404.0V41.5H334.7V69.2H401.5V82.3H334.7V109.9H404.0V124.1H318.3V27.5Z" fill="black"/>
<path d="M417.2 75.7C417.2 44.9 440.7 25.1 473.9 25.1C503.7 25.1 525.5 41.8 528.1 64.2H510.8C508.7 52.7 495.2 40.5 473.9 40.5C449.9 40.5 434.3 55.2 434.3 75.7C434.3 96.3 449.9 111.3 473.9 111.3C495.2 111.3 508.7 98.9 510.8 87.3H528.1C525.6 109.9 503.7 126.8 473.9 126.8C440.7 126.8 417.2 106.6 417.2 75.7V75.7Z" fill="black"/>
<path d="M542.5 75.7C542.5 44.9 565.0 25.1 600.2 25.1C635.5 25.1 657.8 45.1 657.8 75.7C657.8 106.4 635.4 126.8 600.2 126.8C565.1 126.8 542.5 106.7 542.5 75.7ZM600.2 111.3C625.4 111.3 640.9 96.7 640.9 75.7C640.9 54.7 625.5 40.4 600.2 40.4C575.0 40.4 559.6 54.9 559.6 75.7C559.6 96.5 575.0 111.3 600.2 111.3Z" fill="black"/>
<path d="M673.7 27.5H697.9L763.7 107.6V27.5H780.0V124.1H755.9L690.1 44.0V124.1H673.7V27.5H673.7Z" fill="black"/>
<path d="M800.7 27.5H886.4V43.0H817.2V74.4H879.0V89.9H817.2V124.1H800.7V27.5H800.7Z" fill="black"/>
<path d="M902.1 27.5H918.6V108.6H984.0V124.1H902.1V27.5Z" fill="black"/>
<path d="M998.3 27.5H1014.8V124.1H998.3V27.5Z" fill="black"/>
<path d="M1030.5 75.7C1030.5 44.9 1053.9 25.1 1087.2 25.1C1116.9 25.1 1138.8 41.8 1141.3 64.2H1124.0C1121.9 52.7 1108.4 40.5 1087.2 40.5C1063.1 40.5 1047.5 55.2 1047.5 75.7C1047.5 96.3 1063.1 111.3 1087.2 111.3C1108.4 111.3 1121.9 98.9 1124.0 87.3H1141.3C1138.9 109.9 1116.9 126.8 1087.2 126.8C1053.9 126.8 1030.5 106.6 1030.5 75.7V75.7Z" fill="black"/>
<path d="M1147.2 27.5H1247.6V43.0H1205.7V124.1H1189.3V43.0H1147.2V27.5Z" fill="black"/>
<path d="M148.9 38.4L119.6 23.4L96.1 0H63.0L39.5 23.5L10.3 38.4L0 70.1L15.0 99.7L20.1 132.4L47.0 152L79.6 146.7L112.2 152L139.0 132.4L144.2 99.3L159.2 70.1L149.0 38.4H148.9ZM122.9 110.1L96.2 129.7L79.5 141.8L63.0 129.7L36.1 110.1L19.6 98.2L25.9 78.6L36.1 46.9L42.4 27.3H116.6L122.9 46.9L133.2 78.6L139.6 98.2L122.9 110.1H122.9Z" fill="black"/>
</svg>
```

## The mark

The mark alone, for small spaces: favicons, app icons, avatars, a badge on a photo. Keep clear space around it of at least a quarter of its width.

```svg
<svg width="161" height="153" viewBox="0 0 161 153" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M150.3 38.6L120.7 23.6L97.0 0H63.6L39.9 23.7L10.4 38.6L0 70.5L15.1 100.3L20.3 133.2L47.4 153L80.3 147.7L113.2 153L140.3 133.2L145.6 99.9L160.7 70.5L150.4 38.6H150.3ZM124.1 110.9L97.1 130.6L80.3 142.8L63.6 130.6L36.5 110.9L19.7 98.8L26.1 79.1L36.4 47.2L42.8 27.5H117.6L124.0 47.2L134.5 79.1L140.9 98.8L124.0 110.9H124.1Z" fill="black"/>
</svg>
```

## Logo colour pairings

Only these. The mark sits on a solid colour, never directly on a busy photo.

| Background | Logo |
| --- | --- |
| White #FFFFFF | Black |
| Black or Dark #0A1B17 | White |
| Dark #0A1B17 | Finance Green #CAFDDB (the brand's signature pairing) |
| Finance Green #CAFDDB | Black |
| Agency Blue #E7F5FF | Black |

## Colour blocks

The brand's graphic device: square and rectangular blocks in Finance Green, Agency Blue and Neutral Beige (and Dark on light pages), set on the grid and stepping in and out of each other like a mosaic.

- **Where:** covers, heroes, calls to action, event walls, the corners of a quote section, behind a photo's edge.
- **How:** blocks are flat colour with square corners, sized in whole grid units, overlapping a photo or a page edge rather than floating in the middle. Two or three colours at a time, never all five.
- **With type:** a headline can sit in a block, or a block can sit behind a few words as a highlight ("Where law enforcement meets financial institutions"). Never put body copy on a pattern of blocks.
- **Not:** gradients, rounded blocks, drop shadows, or blocks as a busy background behind content.

## Imagery

- Real people at real work: investigators, analysts, a briefing, a hand on a phone with the product open. Natural light, muted colour, calm.
- Dark green rooms and night scenes are on brand; neon "cyber" imagery, hooded hackers, padlocks and binary code are not.
- Photos carry 16px rounded corners on screen. A colour block often overlaps one corner of a photo.
- Product shots show the real interface (a case, a wallet under investigation, an answer), cropped into a 16px-cornered frame on beige or green.

## Beyond the website

The brand book shows the identity on: business cards (green blocks on white, the mark on the back), an annual report cover (white with blocks and a dark spine), a lanyard badge and notebook (dark green with lighter green blocks), signage (the mark with Lucide icons on light panels), event stages (the line "Ambiguity becomes clarity." large, with blocks), caps and jackets (the mark alone, tone on tone), and app icons (the mark on dark).

Across all of them: one line of copy at most, the mark or logo once, two or three colours, generous empty space.

## Lines to use

- Ambiguity becomes clarity. Doubt becomes confidence.
- Where law enforcement meets financial institutions.
- Your systems identify risk. We identify intelligence.
- Information doesn't become public. It becomes clear.

---

# Rules

Universal rules first: they hold for every brand and nothing overrides them. Then Deconflict's own rules, which add to them. A request that breaks a rule loses to the rule; say which one and offer what fits.

# Universal rules

Every brand follows these. They come first and nothing overrides them.

## The library

| Rule | What it says |
| --- | --- |
| U-01 Closed set | Generated pages use only layouts from the brand's library. Nothing is invented. |
| U-02 About 15 body layouts | A library has 12 to 15 body layouts, plus heroes, CTAs and the footer. |
| U-06 On the system | Every text layer uses one of the brand's text styles, every padding and gap is on its spacing scale, content starts on a column. |
| U-07 Text wrap | Headings balance, and so does centred text up to four lines; running text is pretty (no word alone on the last line). Line breaks copied from a source stay only if every line still fits. |
| U-10 Repeated items share one structure | Items in a list, stats or cards are built the same way. A label sits in the same place in every row; an optional unit collapses when it's empty. |
| U-12 Phrases stay whole | Two or three sentences break at sentence ends, one per line, when each fits: short sentences at any size, and any sentences in headings and centred text. Balance never splits a short phrase. |
| U-13 No longer than designed | New copy takes no more lines than the text it replaces in the component. Word limits aren't enough: long words and wide sizes add lines. |
| U-15 Controls in a row share a height | Buttons and fields side by side are the same height, and a button's label stays centred in it. An icon sits centred in its button. |
| U-16 Concentric corners | A rounded shape inside another (a button in a field, a card in a card) sits the same distance from every edge it's close to, at least 4px inside the border, and its radius is the outer radius minus that distance. Labels are centred by their letters (trimmed to cap height), not by their line box. |
| U-14 A quote stays with its person | A quote is shown with the name and role of the person who said it, word for word. A swap that changes the name but not the quote is a failure, not a partial success. |
| U-11 Split headings align with the first item | In a split layout, the heading lines up with the first item's text, not with the divider above it. |

## Checking a page

Run through the Checklist before anything ships. Every line in it came from a review of a real page.

## The page

| Rule | What it says |
| --- | --- |
| U-03 No skeleton twice in a row | Each layout has a skeleton: split (heading left, content from column 5 or 7), centred, stacked (heading above full-width content) or media (a picture fills most of the section). Neighbours never share one. The hero and the CTA count. |
| U-09 No skeleton takes over | No skeleton fills more than half of a page's body sections. |
| U-17 Room between sections | Between two sections on the same background, the space from the last content of one to the first content of the next (dividers count) is at least two thirds of the brand’s usual gap. The section above is evened out first, then the one below opened up. Where the background changes, each section keeps its own room: its content sits at least half that gap from the shared edge, mirrored from its other side. |
| U-04 Tone in acts | Long runs of one tone, then one clear change: the dark act (dark and image sections) before the light act. |
| U-05 Two type levels, about 2× apart | Content sections use the content heading size; display sections run about twice that. Neighbours alternate, about 2× on average. A layout's display setting is used when an act has no loud section. |

## Finishing (every piece)

| Rule | What it says |
| --- | --- |
| U-18 A button label is one line | Button and link-button labels never wrap, at any width. Shorten the label ("Book a demo", not "Book a demo, 30 minutes") or widen the button. |
| U-19 Forms are flawless | Fields, placeholders and buttons sit fully inside their container at every width, and nothing clips, sticks out or wraps. Placeholders are short enough to fit. Check every form at 1440 and 390. |
| U-20 Text keeps its distance | Text never touches another element: at least 8px from any edge, line, rule or chip border, and half its font size from a rule beside a large line (a quote over its divider). A label fits inside its chip with room on both sides. |
| U-21 The brand's footer stays | When the brand has a footer, use it as it is: its structure, columns, content and density. Restyle lightly at most; never cram it or rebuild it. |
| U-22 Copy hygiene | Parallel items (stats, cards, list titles, nav) use one casing rule, and start the same way (all capitalised or none). Product and brand names are written exactly as the brand writes them. |
| U-23 Cards in a row end together | Cards side by side share one height, and their content starts at the same place. |
| U-24 Print is Swiss and print-sized | One-pagers and print documents: a strict grid, flush-left ragged-right, one sans, hierarchy from size and position, generous white space; rules and numbers structure it, not boxes. Body 9 to 10.5 pt (12 to 14px on a 816px Letter page), captions 7 to 8 pt (10px), section heads 12 to 16 pt (16 to 21px), one title 24 to 40 pt (32 to 53px). When it doesn't fit, cut copy. |
| U-25 Nothing is left unfinished | No placeholders on a finished piece: no "[fact needed]", empty media boxes, "Lorem ipsum" or "Link 01". A missing fact is left out and listed in the reply. |
| U-26 A last look before handing over | Every piece is screenshotted at its own size (pages at 1440 and 390) and checked against these rules and web best practice, and fixed, before it is called done. |

# Deconflict rules
What Deconflict's brand book and website template decide, which the layouts alone can't teach. They sit on top of the universal rules, which they can't override.

| Rule | What it says |
| --- | --- |
| D-01 Two faces | PP Telegraf for display (headlines, quotes at 32px and up); Instrument Sans for everything else. DM Mono only for the small eyebrow labels above section headings. |
| D-02 Headlines at 100% | Display lines are set at 100–110% line height with tight tracking (-1% to -3%), ligatures off on the web. |
| D-03 Five colours | Finance Green #CAFDDB, Agency Blue #E7F5FF, Neutral Beige #E8EADE, Dark #0A1B17, White. Green and blue are primary, beige secondary, dark and white tertiary. Deep forest #112D26 and mint #DDF7DF appear on the website as darker and lighter steps of the green. |
| D-04 Colour blocks | The brand's graphic device is a mosaic of square and rectangular blocks in green, blue and beige, aligned to the grid, overlapping photos and page edges. Use it for heroes, calls to action and covers; never as decoration inside dense content. Every block touches the left or right edge of the canvas, with no margin between the block and that edge; a block that touches only the top or bottom, or floats inside the frame, is wrong. Blocks in a mosaic sit flush: they share edges on the grid, with no gap between them. Blocks never overlap or touch text: keep at least 32px between a block and any line. |
| D-05 Highlight, don't shout | Emphasis inside a headline is a soft block of green or blue behind the words ("Where law enforcement meets financial institutions"), never bold or a bright colour. |
| D-06 16px corners | Imagery, cards and components use 16px rounded corners. Buttons and small chips use smaller radii from the same family. |
| D-07 8px spacing | Every padding and gap is on the 8px scale (4px steps allowed for tight UI). |
| D-08 Lucide icons, 1px | Icons are Lucide, at 16, 24 or 32px, with a 1px stroke at every size. |
| D-09 Logo colour | The logo appears only in the pairings in the Identity section: black on white, white or Finance Green on dark (green on dark is the signature), black on Finance Green or Agency Blue. Never on a mid-tone or busy photo without a solid block behind it. |
| D-10 Dark is a place, not a mood | Dark sections (#0A1B17, #112D26) carry one strong idea each: a value, a quote, the footer. At most two dark sections in a row. |
| D-11 Photos of people at work | Photography shows real people with real work: investigators, analysts, a phone or laptop with the product. Natural light, no stock "hacker" imagery. |
| D-12 Product, not abstraction | Product UI appears as real screens (a case, a wallet under investigation, an answer), cropped into 16px-cornered frames on beige or green. |
| D-13 Highlights clear the next line | A highlight block covers its own line only: it never touches the descenders of the line above or the ascenders of the line below. A highlighted headline is the one exception to D-02: set it at 120% line height, pad the block about 0.06em top and bottom and 0.15em left and right, and use `box-decoration-break: clone` when it wraps. |
| D-14 Sized for the format | Posts, slides and print are not sized from the website scale. Square post (1080 × 1080): headline 88–120px, every other line at least 40px, nothing under 32px. Banners and headers: headline at least 18% of the height. Slides (1920 × 1080): title 96–144px, body at least 40px, nothing under 28px. Posters: headline at least 7% of the width. Print at US Letter (816 × 1056): body at least 14px. Each piece uses two sizes, about 2× apart. |
| D-15 Slides on a presentation grid | Every slide is 1920 × 1080 on one grid: 120px side margins, 96px top and bottom, 12 columns with 24px gutters, and everything starts on a column. The logo sits in the same place on every slide, top left at the margins. Each slide uses one weight (400) and two sizes: a title of 96–120px and body text of 40–48px. No eyebrow labels, no mono text and no page numbers on slides; one idea per slide, with generous space around it. |

---

# Deconflict voice

## Who's talking

- **The platform this industry grows around**, not another cybersecurity company. Trusted, foundational, quietly authoritative.
- **To two audiences at once:** investigators in law enforcement, and the risk and compliance teams in financial institutions. Write so both recognise themselves: confident enough for an agency, approachable enough for a bank.
- **Calm, never alarmist.** Fraud is the context, not the headline. No fear, no hackers in hoodies, no "threats".

## How it sounds

1. **Short declaratives, often in pairs.** One sentence states the change, the next makes it concrete.
   > Ambiguity becomes clarity. Doubt becomes confidence.
2. **Before and after.** Name the old state, then the new one, in the same shape.
   > Information doesn't become public. It becomes clear.
3. **Threes, with full stops.** Lists of qualities or actions are set as fragments, one beat each.
   > Known. Reachable. And secure.
   > Freeze the funds. Request the subpoena. Recover the money. Protect the victim.
4. **The question at the centre.** Everything leads back to one question a bank can now answer.
   > Is this wallet already under investigation?
5. **People stay in charge.** Deconflict informs decisions; it never makes them.
   > We never make the decision. We give investigators the confidence to make it.

## Words

| Use | Instead of |
| --- | --- |
| clarity, confidence | certainty, guarantees |
| investigators, agencies | law enforcement officers (in headlines), cops |
| financial institutions, banks | FIs (in marketing copy) |
| flag, answer, case | alert, threat, incident |
| wallet | address (unless technical) |
| victims get their money back | asset recovery |

**Never:** solutions, cutting-edge, world-class, innovative, revolutionary, leverage, unlock, empower, journey, next-gen, game-changing, seamless, AI-powered, hackers, threat actors, bad actors. No exclamation marks. No em dashes.

## Before you ship

- Does every headline fit the pattern: short, declarative, a change from ambiguity to clarity?
- Could both an investigator and a bank's compliance lead read it without wincing?
- Is every claim in the Facts section? Numbers marked "confirm" stay out until Deconflict confirms them.

---

# Deconflict facts

The only claims copy may make. Cite the id when you use one. If a claim you need isn't here or in the request, leave it out rather than invent it, and list it in your reply; never print a placeholder on the piece.

## Product

- **what-1:** Deconflict tells a bank whether a crypto wallet is already under investigation by law enforcement.
- **what-2:** Deconflict connects law enforcement and financial institutions around the same wallets and cases.
- **how-3:** Every investigation makes the next search stronger.
- **speed-1:** An answer comes back in 1.8 ms. **(confirm before using)**

## Problem

- **problem-1:** Without Deconflict, an investigation can't be revealed, so the bank doesn't know, and the money disappears.
- **problem-2:** Today, the best a bank can do is guess.
- **problem-3:** In a typical case there is one wallet, two sides (the bank and the agency) and one victim.

## Trust

- **how-1:** Every flag comes from a real investigator: known, reachable and secure.
- **how-2:** Deconflict never makes the decision; it gives investigators the confidence to make it.
- **info-1:** Information doesn't become public; it becomes clear to the people who need it.

## Outcome

- **how-4:** One answer leads to immediate action: freeze the funds, request the subpoena, recover the money, protect the victim.
- **outcome-1:** When banks act and agencies coordinate, victims get their money back.

## Positioning

- **position-1:** Deconflict is not another cybersecurity company; it is the platform this industry grows around: trusted, foundational and quietly authoritative.
- **line-1:** Brand line: Ambiguity becomes clarity. Doubt becomes confidence.
- **hero-1:** Your systems identify risk. Deconflict identifies intelligence.

## Company

- **funding-1:** Deconflict raised $5.4M in its last round. **(two sources disagree: confirm before using)**

## Proof

- **stats-1:** 95% of cases finalized in the last 3 months; 49% increase in case solves; 23% less time spent. **(confirm before using)**
- **customers-1:** Logos shown on the website: Shopify, Google, Cohere, Riverty, IBM, AWS. **(confirm before using)**
- **partner-1:** Deconflict appears alongside Bank of America in a partnership mock-up. **(confirm before using)**

## Quotes

None approved yet. Until there are, leave out the layouts built around a quote (D04, D06): a page with an empty quote looks unfinished, and a quote is never invented (U-14).

---

# Before you ship

Check every page against this list. Each line came from a review of a real page.

## Layout
- [ ] Every section is one of the layouts in the Layouts section; nothing new (U-01).
- [ ] No two neighbouring sections share a skeleton; no skeleton fills more than half the page (U-03, U-09).
- [ ] A dark act, then a light act; at most three sections of one tone in a row (U-04).
- [ ] Section headings share one size; the hero title is the largest type on the page (U-05).
- [ ] Every size is a text style, every padding and gap is on the spacing scale, content starts on a column (U-06).
- [ ] Repeated items (cards, rows, stats) are built the same way (U-10).
- [ ] Sections have room between them; nothing sits on the edge of the next section (U-17).

## Copy
- [ ] No more lines than the design gives each text; shorten rather than shrink (U-13).
- [ ] No word alone on the last line; short phrases stay on one line; two or three sentences break at sentence ends (U-07, U-12).
- [ ] Every claim is in the Facts section or the request; anything missing is left out and listed in the reply, never printed as a placeholder.
- [ ] Quotes are word for word, with the right name and role (U-14).
- [ ] The words follow the Voice section: none of its banned words, no exclamation marks.

## Finish
- [ ] Text is readable on its background (at least 4.5:1, or 3:1 for large text).
- [ ] Nothing overlaps; no text runs into a picture or off its section.
- [ ] Every button label is one line, at 1440 and at 390 (U-18).
- [ ] Every form is whole: fields, placeholders and buttons inside their container, nothing clipped or wrapped (U-19).
- [ ] Text keeps at least 8px from every edge, line and chip border; labels fit inside their chips (U-20).
- [ ] Parallel items share one casing; names are written as Deconflict writes them (U-22).
- [ ] Cards side by side end together (U-23).
- [ ] No placeholders: every media box has an approved image or is gone, no "[fact needed]", no "Link 01" (U-25).
- [ ] The page ends on Deconflict's footer, as the brand has it (U-21).
- [ ] Last look: screenshot every piece at its size (pages at 1440 and 390), check it against this list, fix what fails (U-26).

---

# Page recipes

Which sections each kind of page uses, in order. A page type that isn't here starts from the closest one. Every section keeps its own phone rules; every media box gets a real photo from the Images section or goes.

## Home or product page

A1 (only with real news), H1, D01, D04, D05, D02, D06 (only with real quotes), D07, C1, F1.

## Careers

1. **H2**, the title says what people will build, not "Join us" ("Build the platform this industry runs on."). The lede says what the team does and how it works. Photo: a character photo.
2. **D03 on forest**, "How we work": the working style the brief gives (remote, ownership), in one heading and one short paragraph. Photo instead of the product screen: character-desk.jpg.
3. **D07**, benefits: three cards, one benefit each. Put a photo in each card or delete the card's media box; never leave it grey.
4. **D04**, a quote from someone on the team. Only a real quote with a real name; otherwise leave the section out.
5. **R1**, open roles: one row per role, each linking to its job post.
6. **C1**, "Don't see your role?" with one button to write to the team.
7. **F1**.

## About

H2, D03, D01 (the story, then the mission), D04 (only a real quote), D07 (three values), C1, F1.

## Event

A1 (the date), H2 (title, date and place in the lede, photo of a room or a city), D05 (what happens), D07 (who it's for), C1 (register), F1.

---

# Images

Photos come only from Deconflict's approved library, never from stock sites or an image generator. Each one is at https://deconflict-brandbook.vercel.app/brandos/images/.

| File | Kind | What it shows | Use it for | Not for | Focus (object-position) |
| --- | --- | --- | --- | --- | --- |
| `hero-character.jpg` | character | Deconflict's character, a bearded investigator in a navy jacket, at work with a colleague; cool blue light | Heroes, covers, the top of a page or deck | Small spaces; never cropped to his face alone | `75% 30%` |
| `character-office.jpg` | character | The character at a laptop in a warm office | How it works, product and feature sections | Next to the hero image on the same page | `50% 30%` |
| `character-cafe.jpg` | character | The character in conversation across a table | Partnerships, events, people sections | Product claims | `40% 30%` |
| `character-desk.jpg` | character | The character at a desk, focused, in a blazer | Careers, about, quotes from the team | Heroes | `55% 25%` |
| `eye-screen.jpg` | photo | Close-up of an eye behind glasses, a screen of data reflected in the lens | The problem: a single question under scrutiny | Light, upbeat sections | `52% 45%` |
| `laptop-night.jpg` | photo | Hands on a laptop in a dark room, green light from the screen | Dark sections, the brand line, closing slides | Anything that needs a face | `35% 70%` |
| `new-york.jpg` | photo | Lower Manhattan and the Statue of Liberty at golden hour | Banks and agencies acting together; US events | Product sections | `62% 55%` |

- Place an image into a layout's media box: `<img src="https://deconflict-brandbook.vercel.app/brandos/images/<file>" alt="…">` with `object-fit: cover` and `object-position` set to the image's focus from the table, so the subject stays in frame at any crop; fill the box, with the box's corner radius. Cut-outs (PNG, kind product) sit on a flat brand colour with `object-fit: contain`, never in a box with a background.
- Pick by what the section says, using the table. Never stretch, flip, filter or recolour an image, and never put text on a busy part of it.
- When no image fits, delete the media box or pick a layout without one; a finished piece never shows an empty box. Never fill it with a stock photo or a generated one.
- A client's own photo (a headshot, an event) gets the brand's look with the Photography section before it's used.

---

# Layouts

The only sections a page may use (U-01), with the designed sections below. Each slot comment gives the word limit and `data-lines` the lines it was designed at; replace the copy, keep the classes.

### A1: Announcement bar

- Use it for: One line of news above the navigation: a raise, a launch, an event.
- Not for: More than one sentence; anything that isn't news.
- Job: open; skeleton: bar; tones: mint
- Screenshot: https://deconflict-brandbook.vercel.app/brandos/layouts/a1-announcement-bar.png

```html
<section class="a1 tone-mint" data-layout="A1"><!-- slot "text": label, up to 10 words, must cite the Facts section -->
<p class="a1__deconflict-raises-5-4m t-body-body-sm" data-slot="text" data-lines="1">Deconflict raises$5.4M in the last raise</p></section>
```

### H1: Hero: title and intro above the product

- Use it for: The default opener: a two-line display title, a short intro beside it, then a real product screen and a row of customer logos (logo boxes: use real, approved logos only). The navigation links are placeholders: use the site's real page names.
- Not for: Titles over 10 words; pages without a product screen to show.
- Job: open; skeleton: media; tones: light
- Screenshot: https://deconflict-brandbook.vercel.app/brandos/layouts/h1-hero-title-and-intro-above-the-product.png

```html
<section class="h1 tone-light" data-layout="H1"><div class="h1__row"><div class="h1__row-2"><img class="h1__logo" src="https://deconflict-brandbook.vercel.app/brandos/assets/svg/web-02-t0.svg" alt="Logo"><div class="h1__row-3"><p class="h1__link-01 t-link-link-md">Link 01</p><p class="h1__link-02 t-link-link-md">Link 02</p><p class="h1__link-03 t-link-link-md">Link 03</p><p class="h1__link-04 t-link-link-md">Link 04</p></div></div><div class="h1__row-4"><div class="h1__row-5"><p class="h1__register t-link-link-md">Register</p></div><div class="h1__card"><p class="h1__login t-link-link-md">Login</p></div></div></div><div class="h1__heading-group"><div class="h1__heading-group-2"><div class="h1__heading-group-3"><!-- slot "title": title, up to 10 words -->
<h1 class="h1__your-systems-identify-risk t-display-display-lg" data-slot="title" data-lines="2">Your systems identify risk.<br>We identify intelligence.</h1><!-- slot "intro": body, up to 28 words -->
<p class="h1__lorem-ipsum-dolor-sit t-body-body-sm" data-slot="intro" data-lines="3">Lorem ipsum dolor sit amet consectetur. Elit commodo urna dui nunc scelerisque facilisis eu nunc turpis. Et fames odio iaculis diam proin sem. Ac integer convallis.</p></div><div class="h1__product-ui media" data-media="Product UI" role="img" aria-label="Product UI, 1232×512"><span class="media__label media__label--corner">Product UI, 1232×512</span></div></div><div class="h1__row-6"><div class="h1__grid media" data-media="Graphic" role="img" aria-label="Graphic, 200×100"><span class="media__label">Graphic, 200×100</span></div><div class="h1__grid media" data-media="Graphic" role="img" aria-label="Graphic, 200×100"><span class="media__label">Graphic, 200×100</span></div><div class="h1__grid media" data-media="Graphic" role="img" aria-label="Graphic, 200×100"><span class="media__label">Graphic, 200×100</span></div><div class="h1__grid media" data-media="Graphic" role="img" aria-label="Graphic, 200×100"><span class="media__label">Graphic, 200×100</span></div><div class="h1__grid media" data-media="Graphic" role="img" aria-label="Graphic, 200×100"><span class="media__label">Graphic, 200×100</span></div><div class="h1__grid media" data-media="Graphic" role="img" aria-label="Graphic, 200×100"><span class="media__label">Graphic, 200×100</span></div></div></div></section>
```

### D01: Value: copy left, product right

- Use it for: One value of the product: a short title, two lines of explanation and a link, beside a product screen on a beige panel.
- Not for: Three of these in a row without the mirrored version between them.
- Job: explain; skeleton: split; tones: mist, light, beige
- Screenshot: https://deconflict-brandbook.vercel.app/brandos/layouts/d01-value-copy-left-product-right.png

```html
<section class="d01 tone-mist" data-layout="D01"><div class="d01__text-group"><div class="d01__text-group-2"><!-- slot "heading": heading, up to 4 words -->
<h3 class="d01__value-01 t-heading-heading-lg" data-slot="heading" data-lines="1">Value 01</h3><!-- slot "body": body, up to 18 words -->
<h3 class="d01__lorem-ipsum-dolor-sit t-body-body-lg" data-slot="body" data-lines="3" data-sentences>Lorem ipsum dolor sit amet consectetur. Ante ullamcorper facilisis congue dolor. Neque quam.</h3></div><!-- slot "link": link, up to 3 words -->
<h3 class="d01__learn-more t-heading-heading-lg" data-slot="link" data-lines="1">Learn more →</h3></div><div class="d01__product-ui media" data-media="Product UI" role="img" aria-label="Product UI, 606×606"><span class="media__label">Product UI, 606×606</span></div></section>
```

### D02: Value: product left, copy right

- Use it for: The mirrored value section, to alternate with D01 so a run of values doesn't repeat one shape.
- Not for: Directly after another D02.
- Job: explain; skeleton: split-mirrored; tones: light, mist
- Screenshot: https://deconflict-brandbook.vercel.app/brandos/layouts/d02-value-product-left-copy-right.png

```html
<section class="d02 tone-light" data-layout="D02"><div class="d02__product-ui media" data-media="Product UI" role="img" aria-label="Product UI, 606×606"><span class="media__label">Product UI, 606×606</span></div><div class="d02__text-group"><div class="d02__text-group-2"><!-- slot "heading": heading, up to 4 words -->
<h3 class="d02__value-02 t-heading-heading-lg" data-slot="heading" data-lines="1">Value 02</h3><!-- slot "body": body, up to 18 words -->
<h3 class="d02__lorem-ipsum-dolor-sit t-body-body-lg" data-slot="body" data-lines="3" data-sentences>Lorem ipsum dolor sit amet consectetur. Ante ullamcorper facilisis congue dolor. Neque quam.</h3></div><!-- slot "link": link, up to 3 words -->
<h3 class="d02__learn-more t-heading-heading-lg" data-slot="link" data-lines="1">Learn more →</h3></div></section>
```

### D03: Value on forest

- Use it for: The value that matters most, on deep green: copy left, a panel on the right showing the people or systems involved (a labelled box until there is a real illustration).
- Not for: More than one per page.
- Job: explain, people; skeleton: split; tones: forest, dark
- Screenshot: https://deconflict-brandbook.vercel.app/brandos/layouts/d03-value-on-forest.png

```html
<section class="d03 tone-forest" data-layout="D03"><div class="d03__text-group"><div class="d03__text-group-2"><!-- slot "heading": heading, up to 4 words -->
<h3 class="d03__value-03 t-heading-heading-lg" data-slot="heading" data-lines="1">Value 03</h3><!-- slot "body": body, up to 18 words -->
<h3 class="d03__lorem-ipsum-dolor-sit t-body-body-lg" data-slot="body" data-lines="3" data-sentences>Lorem ipsum dolor sit amet consectetur. Ante ullamcorper facilisis congue dolor. Neque quam.</h3></div><!-- slot "link": link, up to 3 words -->
<h3 class="d03__learn-more t-heading-heading-lg" data-slot="link" data-lines="1">Learn more →</h3></div><div class="d03__product-ui media" data-media="Product UI" role="img" aria-label="Product UI, 606×606"><span class="media__label">Product UI, 606×606</span></div></section>
```

### D04: Quote on dark

- Use it for: One customer or partner quote, word for word, centred on dark, with the name and role below. Colour blocks sit in the corners.
- Not for: Paraphrased or invented quotes; a second quote on the same page.
- Job: prove, pause; skeleton: centred; tones: dark
- Screenshot: https://deconflict-brandbook.vercel.app/brandos/layouts/d04-quote-on-dark.png

```html
<section class="d04 tone-dark" data-layout="D04"><div class="d04__card"></div><div class="d04__card-2"></div><div class="d04__card-3"></div><div class="d04__card-4"></div><!-- slot "quote": quote, up to 30 words, word for word from the Facts section -->
<h2 class="d04__lorem-ipsum-dolor-sit t-quote-quote" data-slot="quote" data-lines="4" data-sentences>“Lorem ipsum dolor sit amet consectetur. Tellus in est consequat odio nisi cursus laoreet. Mauris semper purus pretium sollicitudin pulvinar etiam convallis et.”</h2><div class="d04__text-group"><!-- slot "name": name, up to 3 words, word for word from the Facts section -->
<p class="d04__lorem-ipsum t-heading-heading-md" data-slot="name" data-lines="1">Lorem ipsum</p><!-- slot "role": role, up to 5 words, word for word from the Facts section -->
<p class="d04__etiam-convallis t-heading-heading-md" data-slot="role" data-lines="1">Etiam Convallis</p></div></section>
```

### D05: Product feature with three benefits

- Use it for: A feature in depth: an eyebrow, a heading, a wide photo with a product card over it, then three benefits in columns.
- Not for: Fewer than three benefits.
- Job: explain, prove; skeleton: stacked; tones: light
- Screenshot: https://deconflict-brandbook.vercel.app/brandos/layouts/d05-product-feature-with-three-benefits.png

```html
<section class="d05 tone-light" data-layout="D05"><div class="d05__text-group"><div class="d05__card"><!-- slot "eyebrow": label, up to 2 words -->
<p class="d05__product t-eyebrow-eyebrow" data-slot="eyebrow" data-lines="1">product</p></div><!-- slot "heading": heading, up to 6 words -->
<h3 class="d05__tristique-mauris-morbi t-display-display-sm" data-slot="heading" data-lines="1">Tristique mauris morbi</h3></div><div class="d05__product-ui media" data-media="Product UI" role="img" aria-label="Product UI, 1232×600"><span class="media__label media__label--corner">Product UI, 1232×600</span></div><div class="d05__row"><div class="d05__text-group-2"><!-- slot "b1": title, up to 4 words -->
<p class="d05__benefit-01 t-heading-heading-md" data-slot="b1" data-lines="1">Benefit 01</p><!-- slot "b1Body": body, up to 20 words -->
<p class="d05__lorem-ipsum-dolor-sit t-body-body-md" data-slot="b1Body" data-lines="3">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p></div><div class="d05__text-group-2"><!-- slot "b2": title, up to 4 words -->
<p class="d05__benefit-02 t-heading-heading-md" data-slot="b2" data-lines="1">Benefit 02</p><!-- slot "b2Body": body, up to 20 words -->
<p class="d05__ut-enim-ad-minim t-body-body-md" data-slot="b2Body" data-lines="3">Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p></div><div class="d05__text-group-2"><!-- slot "b3": title, up to 4 words -->
<p class="d05__benefit-03 t-heading-heading-md" data-slot="b3" data-lines="1">Benefit 03</p><!-- slot "b3Body": body, up to 20 words -->
<p class="d05__duis-aute-irure-dolor t-body-body-md" data-slot="b3Body" data-lines="3">Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.</p></div></div></section>
```

### D06: Testimonials

- Use it for: Several short customer quotes in a row of cards on Agency Blue, under an eyebrow and a heading.
- Not for: Quotes that aren't real and approved (U-14); fewer than three.
- Job: prove; skeleton: centred; tones: blue
- Screenshot: https://deconflict-brandbook.vercel.app/brandos/layouts/d06-testimonials.png

```html
<section class="d06 tone-blue" data-layout="D06"><div class="d06__heading-group"><div class="d06__card"><!-- slot "eyebrow": label, up to 2 words -->
<p class="d06__testimonials t-eyebrow-eyebrow" data-slot="eyebrow" data-lines="1">Testimonials</p></div><!-- slot "heading": heading, up to 5 words -->
<h2 class="d06__lorem-ipsum-dolor t-display-display-md" data-slot="heading" data-lines="1">Lorem ipsum dolor</h2></div><div class="d06__row"><div class="d06__card-2"><!-- slot "quote": quote, up to 24 words, word for word from the Facts section -->
<p class="d06__i-am-loving-this t-body-body-sm" data-slot="quote" data-lines="3">&quot;I am loving this product! It was so easy to build and deploy our docs, and the team is really happy with the results thus far.&quot;</p><div class="d06__row-2"><div class="d06__text-group"><!-- slot "name": name, up to 3 words, word for word from the Facts section -->
<p class="d06__john-smith t-label-label-sm" data-slot="name" data-lines="1">John Smith</p><!-- slot "role": role, up to 4 words, word for word from the Facts section -->
<p class="d06__co-founder-ceo t-label-label-sm" data-slot="role" data-lines="1">Co-founder, CEO</p></div></div></div><div class="d06__text-group-2"><div class="d06__card-3"><p class="d06__i-am-loving-this t-body-body-sm">&quot;I am loving this product! It was so easy to build and deploy our docs, and the team is really happy with the results thus far.&quot;</p><div class="d06__row-2"><img class="d06__icon" src="https://deconflict-brandbook.vercel.app/brandos/assets/svg/web-08-t0.svg" alt=""><div class="d06__text-group"><p class="d06__john-smith t-label-label-sm">John Smith</p><p class="d06__co-founder-ceo t-label-label-sm">Co-founder, CEO</p></div></div></div></div><div class="d06__text-group-3"><div class="d06__card-3"><p class="d06__i-am-loving-this t-body-body-sm">&quot;I am loving this product! It was so easy to build and deploy our docs, and the team is really happy with the results thus far.&quot;</p><div class="d06__row-2"><img class="d06__icon" src="https://deconflict-brandbook.vercel.app/brandos/assets/svg/web-08-t1.svg" alt=""><div class="d06__text-group"><p class="d06__john-smith t-label-label-sm">John Smith</p><p class="d06__co-founder-ceo t-label-label-sm">Co-founder, CEO</p></div></div></div></div><div class="d06__text-group-2"><div class="d06__card-3"><p class="d06__i-am-loving-this t-body-body-sm">&quot;I am loving this product! It was so easy to build and deploy our docs, and the team is really happy with the results thus far.&quot;</p><div class="d06__row-2"><img class="d06__icon" src="https://deconflict-brandbook.vercel.app/brandos/assets/svg/web-08-t2.svg" alt=""><div class="d06__text-group"><p class="d06__john-smith t-label-label-sm">John Smith</p><p class="d06__co-founder-ceo t-label-label-sm">Co-founder, CEO</p></div></div></div></div><div class="d06__card-2"><p class="d06__i-am-loving-this t-body-body-sm">&quot;I am loving this product! It was so easy to build and deploy our docs, and the team is really happy with the results thus far.&quot;</p><div class="d06__row-2"><img class="d06__icon" src="https://deconflict-brandbook.vercel.app/brandos/assets/svg/web-08-t3.svg" alt=""><div class="d06__text-group"><p class="d06__john-smith t-label-label-sm">John Smith</p><p class="d06__co-founder-ceo t-label-label-sm">Co-founder, CEO</p></div></div></div></div></section>
```

### D07: Benefit cards

- Use it for: Three benefits as cards, each with a small product illustration, a title and a line of copy.
- Not for: Long copy; more than three cards.
- Job: explain, convert; skeleton: stacked; tones: light
- Screenshot: https://deconflict-brandbook.vercel.app/brandos/layouts/d07-benefit-cards.png

```html
<section class="d07 tone-light" data-layout="D07"><div class="d07__text-group"><div class="d07__card"><!-- slot "eyebrow": label, up to 2 words -->
<p class="d07__benefits t-eyebrow-eyebrow" data-slot="eyebrow" data-lines="1">benefits</p></div><!-- slot "heading": heading, up to 6 words -->
<h3 class="d07__faucibus-tortor-etam t-display-display-sm" data-slot="heading" data-lines="1">Faucibus tortor etam</h3></div><div class="d07__text-group-2"><div class="d07__text-group-3"><div class="d07__product-ui media" data-media="Product UI" role="img" aria-label="Product UI, 347×280"><span class="media__label">Product UI, 347×280</span></div><div class="d07__text-group-4"><div class="d07__text-group-5"><!-- slot "b1": title, up to 4 words -->
<h3 class="d07__benefit-01 t-heading-heading-lg" data-slot="b1" data-lines="1">Benefit 01</h3><!-- slot "b1Body": body, up to 12 words -->
<h3 class="d07__lorem-ipsum-dolor-sit t-body-body-lg" data-slot="b1Body" data-lines="2" data-sentences>Lorem ipsum dolor sit amet consectetur. Rutrum scelerisque.</h3></div></div></div><div class="d07__text-group-6"><div class="d07__product-ui media" data-media="Product UI" role="img" aria-label="Product UI, 347×280"><span class="media__label">Product UI, 347×280</span></div><div class="d07__text-group-4"><div class="d07__text-group-5"><!-- slot "b2": title, up to 4 words -->
<h3 class="d07__benefit-02 t-heading-heading-lg" data-slot="b2" data-lines="1">Benefit 02</h3><!-- slot "b2Body": body, up to 12 words -->
<h3 class="d07__lorem-ipsum-dolor-sit t-body-body-lg" data-slot="b2Body" data-lines="2" data-sentences>Lorem ipsum dolor sit amet consectetur. Platea quam etiam.</h3></div></div></div><div class="d07__text-group-3"><div class="d07__graphic media" data-media="Graphic" role="img" aria-label="Graphic, 347×280"><span class="media__label">Graphic, 347×280</span></div><div class="d07__text-group-4"><div class="d07__text-group-5"><!-- slot "b3": title, up to 4 words -->
<h3 class="d07__benefit-03 t-heading-heading-lg" data-slot="b3" data-lines="1">Benefit 03</h3><!-- slot "b3Body": body, up to 12 words -->
<h3 class="d07__lorem-ipsum-dolor-sit t-body-body-lg" data-slot="b3Body" data-lines="2" data-sentences>Lorem ipsum dolor sit amet consectetur. Massa morbi urna.</h3></div></div></div></div></section>
```

### C1: CTA with colour blocks

- Use it for: Ending a page: one short display line and two buttons, framed by the brand's green, blue and beige blocks.
- Not for: More than two buttons; a heading over three words (the line is set at 48px in a narrow box).
- Job: convert; skeleton: centred; tones: light
- Screenshot: https://deconflict-brandbook.vercel.app/brandos/layouts/c1-cta-with-colour-blocks.png

```html
<section class="c1 tone-light" data-layout="C1"><div class="c1__card"></div><div class="c1__card-2"></div><div class="c1__card-3"></div><div class="c1__card-4"></div><div class="c1__heading-group"><!-- slot "heading": heading, up to 3 words -->
<h2 class="c1__call-to-action t-display-display-lg" data-slot="heading" data-lines="1">Call to action</h2><div class="c1__row"><div class="c1__row-2"><!-- slot "secondary": label, up to 3 words -->
<p class="c1__learn-more t-link-link-md" data-slot="secondary" data-lines="1">Learn more</p></div><div class="c1__card-5"><!-- slot "primary": label, up to 3 words -->
<p class="c1__sign-up t-link-link-md" data-slot="primary" data-lines="1">Sign up</p></div></div></div></section>
```

### F1: Footer

- Use it for: Every page ends on this footer: five link columns, then the large wordmark. The logo box is the DECONFLICT wordmark from the Identity section, in white. Its link columns are placeholders: use the site's real pages.
- Not for: Changing it per page.
- Job: close; skeleton: footer; tones: dark
- Screenshot: https://deconflict-brandbook.vercel.app/brandos/layouts/f1-footer.png

```html
<section class="f1 tone-dark" data-layout="F1"><div class="f1__row"><div class="f1__text-group"><p class="f1__product t-heading-heading-md">Product</p><div class="f1__text-group"><p class="f1__link-01 t-link-link-md">Link 01</p><p class="f1__link-02 t-link-link-md">Link 02</p><p class="f1__link-03 t-link-link-md">Link 03</p></div></div><div class="f1__text-group"><p class="f1__resources t-heading-heading-md">Resources</p><div class="f1__text-group"><p class="f1__link-01 t-link-link-md">Link 01</p><p class="f1__link-02 t-link-link-md">Link 02</p><p class="f1__link-03 t-link-link-md">Link 03</p></div></div><div class="f1__text-group"><p class="f1__company t-heading-heading-md">Company</p><div class="f1__text-group"><p class="f1__link-01 t-link-link-md">Link 01</p><p class="f1__link-02 t-link-link-md">Link 02</p><p class="f1__link-03 t-link-link-md">Link 03</p></div></div><div class="f1__text-group"><p class="f1__legal t-heading-heading-md">Legal</p><div class="f1__text-group"><p class="f1__link-01 t-link-link-md">Link 01</p><p class="f1__link-02 t-link-link-md">Link 02</p><p class="f1__link-03 t-link-link-md">Link 03</p></div></div><div class="f1__text-group"><p class="f1__connect t-heading-heading-md">Connect</p><div class="f1__text-group"><p class="f1__link-01 t-link-link-md">Link 01</p><p class="f1__link-02 t-link-link-md">Link 02</p><p class="f1__link-03 t-link-link-md">Link 03</p></div></div></div><div class="f1__row-2"><div class="f1__composition"><div class="f1__logo media" data-media="Logo" role="img" aria-label="Logo, 499×48"><span class="media__label">Logo, 499×48</span></div><div class="f1__graphic media" data-media="Graphic" role="img" aria-label="Graphic, 76×72"></div></div><p class="f1__text t-label-label-sm">© 2026 Company name</p></div></section>
```

---

# Designed sections

For pages the website doesn't have. They follow the same rules as the layouts. Each brings its own CSS, with its tablet and phone rules: paste it into the page's <style> after layouts.css.

### H2: Page hero with a photo

- Use it for: the opener of any page that has no product screen to show: careers, about, a team or an event page.
- Not for: the home page or a product page (use H1).
- Slots: title (up to 8 words, 2 lines), lede (up to 30 words, 4 lines), photo (a character photo from the Images section, focus kept), nav links (the site's real pages), buttons (the last one is the primary and the only one on a phone).
- Locked: the nav, the 16px photo corners, the Finance Green block that runs from the page edge over the photo's corner (D-04), every size and colour.
- Borrows: H1's nav, title and intro row; the identity's photo corners and colour block.

```html
<section class="h2 tone-light" data-layout="H2"><nav class="h2__nav"><div class="h2__brand"><img class="h2__logo" src="https://deconflict-brandbook.vercel.app/brandos/assets/svg/web-02-t0.svg" alt="Deconflict"><ul class="h2__links t-link-link-md"><li><a href="#">Product</a></li><li><a href="#">For banks</a></li><li><a href="#">For agencies</a></li><li><a href="#">Careers</a></li></ul></div><div class="h2__buttons t-link-link-md"><a class="h2__button" href="#">Register</a><a class="h2__button h2__button--primary" href="#">Login</a></div></nav><div class="h2__intro"><h1 class="h2__title t-display-display-xl" data-slot="title" data-lines="2">Build the platform this industry runs on.</h1><p class="h2__lede t-body-body-sm" data-slot="lede" data-lines="4">We help law enforcement and financial institutions see the same case at the same time. Small team, remote, and every person owns what they ship.</p></div><div class="h2__media"><img class="h2__photo" src="https://deconflict-brandbook.vercel.app/brandos/images/character-office.jpg" alt="A Deconflict analyst at work in the office" style="object-position: 50% 30%"><div class="h2__block" aria-hidden="true"></div></div></section>
```

```css
.h2{background:var(--tone-light);display:flex;flex-direction:column;gap:var(--space-128);padding:var(--space-16) var(--space-96) var(--space-96);position:relative;overflow:hidden}
.h2__nav{display:flex;justify-content:space-between;align-items:center;height:64px}
.h2__brand{display:flex;align-items:center;gap:var(--space-80)}
.h2__logo{display:block;width:198px;height:24px}
.h2__links{display:flex;gap:var(--space-40);margin:0;padding:0;list-style:none;color:var(--tone-dark)}
.h2__links a,.h2__button{color:inherit;text-decoration:none}
.h2__buttons{display:flex;gap:var(--space-16)}
.h2__button{padding:var(--space-12) var(--space-16);border-radius:4px;box-shadow:inset 0 0 0 1px var(--tone-dark);color:var(--tone-dark);white-space:nowrap}
.h2__button--primary{background:var(--tone-dark);color:var(--tone-light)}
.h2__intro{display:flex;justify-content:space-between;align-items:flex-end;gap:var(--space-48)}
.h2__title{margin:0;max-width:752px;color:var(--tone-dark);letter-spacing:-0.01em;text-wrap:balance}
.h2__lede{margin:0;width:397px;color:var(--tone-dark);letter-spacing:-0.01em;text-wrap:pretty}
.h2__media{position:relative}
.h2__photo{display:block;width:100%;aspect-ratio:1248 / 560;object-fit:cover;border-radius:16px}
.h2__block{position:absolute;left:calc(-1 * var(--space-96));bottom:calc(-1 * var(--space-48));width:288px;height:96px;background:var(--tone-mint)}
@media (max-width: 1199px) {.h2{gap:var(--space-80);padding:var(--space-16) var(--space-40) var(--space-64)}
.h2__block{left:calc(-1 * var(--space-40));width:192px;height:64px;bottom:calc(-1 * var(--space-32))}
}
@media (max-width: 767px) {.h2{gap:var(--space-48);padding:var(--space-16) var(--space-24) var(--space-48)}
.h2__links,.h2__button:not(:last-child) {display:none}
.h2__logo{width:160px;height:auto}
.h2__intro{flex-direction:column;align-items:flex-start;gap:var(--space-24)}
.h2__lede{width:auto}
.h2__photo{aspect-ratio:4 / 5}
.h2__block{left:calc(-1 * var(--space-24));width:96px;height:48px;bottom:calc(-1 * var(--space-24))}
}
```

### R1: Open roles

- Use it for: the open roles on a careers page, three to eight of them, each a link to its job post.
- Not for: anything that isn't a job; a page with one role (say it in the hero instead).
- Slots: eyebrow (up to 2 words), heading (up to 5 words, 1 line), per role: title (up to 4 words, 1 line), meta (team and place, up to 5 words, 1 line), link text (2 words).
- Locked: the hairlines, the three columns (one on a phone), every size and colour.
- Borrows: D07's eyebrow, heading and padding; the footer's hairlines.

```html
<section class="r1 tone-light" data-layout="R1"><div class="r1__head"><div class="r1__tag"><p class="r1__eyebrow t-eyebrow-eyebrow" data-slot="eyebrow" data-lines="1">open roles</p></div><h2 class="r1__heading t-display-display-sm" data-slot="heading" data-lines="1">Three roles, open now</h2></div><ul class="r1__list"><li><a class="r1__role" href="#"><span class="r1__title t-heading-heading-lg" data-slot="title" data-lines="1">Chief technology officer</span><span class="r1__meta t-body-body-sm" data-slot="meta" data-lines="1">Engineering, remote</span><span class="r1__cta t-link-link-md">View role →</span></a></li><li><a class="r1__role" href="#"><span class="r1__title t-heading-heading-lg" data-slot="title" data-lines="1">Product designer</span><span class="r1__meta t-body-body-sm" data-slot="meta" data-lines="1">Product, remote</span><span class="r1__cta t-link-link-md">View role →</span></a></li><li><a class="r1__role" href="#"><span class="r1__title t-heading-heading-lg" data-slot="title" data-lines="1">Software engineer</span><span class="r1__meta t-body-body-sm" data-slot="meta" data-lines="1">Engineering, remote</span><span class="r1__cta t-link-link-md">View role →</span></a></li></ul></section>
```

```css
.r1{background:var(--tone-light);display:flex;flex-direction:column;gap:var(--space-64);padding:var(--space-192) var(--space-96)}
.r1__head{display:flex;flex-direction:column;gap:var(--space-40);align-items:flex-start}
.r1__tag{background:var(--tone-mint);border-radius:4px;padding:var(--space-8)}
.r1__eyebrow{margin:0;color:#000;letter-spacing:0.1em;text-transform:uppercase}
.r1__heading{margin:0;color:var(--tone-dark);letter-spacing:-0.01em;text-wrap:balance}
.r1__list{list-style:none;margin:0;padding:0;box-shadow:inset 0 1px 0 rgba(0,0,0,0.1)}
.r1__role{display:grid;grid-template-columns:6fr 4fr auto;gap:var(--space-24);align-items:baseline;padding:var(--space-32) 0;box-shadow:inset 0 -1px 0 rgba(0,0,0,0.1);color:var(--tone-dark);text-decoration:none}
.r1__title{letter-spacing:-0.01em}
.r1__meta{color:rgba(102,102,102,1)}
.r1__cta{white-space:nowrap}
.r1__role:hover .r1__cta,.r1__role:focus-visible .r1__cta{text-decoration:underline}
@media (max-width: 1199px) {.r1{padding:var(--space-96) var(--space-40)}
}
@media (max-width: 767px) {.r1{gap:var(--space-40);padding:var(--space-48) var(--space-24)}
.r1__role{grid-template-columns:1fr;gap:var(--space-8);padding:var(--space-24) 0}
}
```

---

# tokens.css

```css

@font-face{font-family:"Instrument Sans";src:url("https://deconflict-brandbook.vercel.app/brandos/fonts/Instrument%20Sans-400.woff2");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"PP Telegraf";src:url("https://deconflict-brandbook.vercel.app/brandos/fonts/PP%20Telegraf-400.otf");font-weight:400;font-style:normal;font-display:swap}
:root{--font-pp-telegraf:"PP Telegraf","Instrument Sans",system-ui,sans-serif;--font-instrument-sans:"Instrument Sans",system-ui,sans-serif;--font-dm-mono:"DM Mono",ui-monospace,monospace;--font-brand:var(--font-pp-telegraf);--tone-light:#FFFFFF;--tone-mist:#FAFAFA;--tone-dark:#0A1B17;--tone-forest:#112D26;--tone-blue:#E7F5FF;--tone-beige:#E8EADE;--tone-green:#CAFDDB;--tone-mint:#DDF7DF;--space-4: 4px;--space-8: 8px;--space-12: 12px;--space-16: 16px;--space-24: 24px;--space-32: 32px;--space-40: 40px;--space-48: 48px;--space-64: 64px;--space-80: 80px;--space-96: 96px;--space-128: 128px;--space-160: 160px;--space-192: 192px;--space-216: 216px;--grid-columns:12;--grid-column:78px;--grid-gutter:24px;--grid-margin:120px;--media-fill:rgba(128,128,128,0.12);--media-label:rgb(128,128,128)}
:where(html) {font-synthesis:none}
:where(h1,h2,h3,h4,h5,h6,b,strong) {font-weight:inherit}
.t-display-display-xl{font-family:var(--font-pp-telegraf);font-weight:400;font-size:64px;line-height:1;letter-spacing:-0.02em}
.t-display-display-lg{font-family:var(--font-pp-telegraf);font-weight:400;font-size:48px;line-height:1;letter-spacing:-0.01em}
.t-display-display-md{font-family:var(--font-pp-telegraf);font-weight:400;font-size:40px;line-height:1.05;letter-spacing:-0.01em}
.t-display-display-sm{font-family:var(--font-pp-telegraf);font-weight:400;font-size:32px;line-height:1.1;letter-spacing:-0.01em}
.t-heading-heading-lg{font-family:var(--font-instrument-sans);font-weight:400;font-size:24px;line-height:1.2;letter-spacing:-0.01em}
.t-heading-heading-md{font-family:var(--font-instrument-sans);font-weight:400;font-size:20px;line-height:1.2;letter-spacing:-0.01em}
.t-body-body-lg{font-family:var(--font-instrument-sans);font-weight:400;font-size:24px;line-height:1.4;letter-spacing:-0.01em}
.t-body-body-md{font-family:var(--font-instrument-sans);font-weight:400;font-size:20px;line-height:1.4;letter-spacing:-0.01em}
.t-body-body-sm{font-family:var(--font-instrument-sans);font-weight:400;font-size:16px;line-height:1.5;letter-spacing:-0.01em}
.t-quote-quote{font-family:var(--font-instrument-sans);font-weight:400;font-size:40px;line-height:1.2;letter-spacing:-0.01em}
.t-link-link-md{font-family:var(--font-instrument-sans);font-weight:400;font-size:16px;line-height:1.2;letter-spacing:-0.01em}
.t-label-label-sm{font-family:var(--font-instrument-sans);font-weight:400;font-size:14px;line-height:1.4}
.t-eyebrow-eyebrow{font-family:var(--font-dm-mono);font-weight:400;font-size:12px;line-height:1.4;letter-spacing:0.1em}
.tone-light{background:var(--tone-light)}
.tone-mist{background:var(--tone-mist)}
.tone-dark{background:var(--tone-dark)}
.tone-forest{background:var(--tone-forest)}
.tone-blue{background:var(--tone-blue)}
.tone-beige{background:var(--tone-beige)}
.tone-green{background:var(--tone-green)}
.tone-mint{background:var(--tone-mint)}
@media (max-width: 767px) {.t-display-display-xl{font-size:40px;line-height:1.05;letter-spacing:-0.01em}
.t-display-display-lg{font-size:32px;line-height:1.1;letter-spacing:-0.01em}
.t-display-display-md{font-size:32px;line-height:1.1;letter-spacing:-0.01em}
.t-quote-quote{font-size:24px;line-height:1.2;letter-spacing:-0.01em}
}
.media{position:relative;background:var(--media-fill)}
.media__label{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);white-space:nowrap;font:400 14px/1.2 var(--font-label,var(--font-brand));color:var(--media-label);pointer-events:none}
.media__label--corner{left:24px;top:24px;transform:none}
*,*::before,*::after{box-sizing:border-box}
body{margin:0}
img{display:block}
hr{border:0;margin:0}
[hidden]{display:none !important}
```

---

# layouts.css

One rule per line, the same rules as the pack's layouts.css.

```css
:where([data-layout] *) { flex-shrink: 0; }
:where([data-layout]) :where(p, h1, h2, h3, ul) { margin: 0; }
:where([data-layout]) :where(a) { color: inherit; text-decoration: none; }
@media (max-width: 1199px) {
[data-layout] :is(div, p, h1, h2, h3, img, hr) { max-width: 100%; flex-shrink: 1; }
[data-layout] :is(div, img, hr) { min-width: 0; }
[data-layout] :is(p, h1, h2, h3) { white-space: normal; }
section[data-layout] { overflow-x: clip; }
}
/* A1: Announcement bar */
.a1{background:var(--tone-mint);overflow:hidden;display:flex;flex-direction:row;padding:var(--space-8);gap:var(--space-8);justify-content:center;align-items:center;width:100%;position:relative}
.a1__deconflict-raises-5-4m{width:270px;letter-spacing:-0.01em;color:rgba(0, 0, 0, 1);text-wrap:pretty}
/* H1: Hero: title and intro above the product */
.h1{background:var(--tone-light);overflow:hidden;display:flex;flex-direction:column;padding:var(--space-16) var(--space-96) var(--space-40);gap:var(--space-128);align-items:flex-start;width:100%;height:1044px;position:relative}
.h1__row{overflow:hidden;display:flex;flex-direction:row;padding:var(--space-8) 0px;justify-content:space-between;align-items:center;align-self:stretch;height:64px}
.h1__row-2{display:flex;flex-direction:row;gap:var(--space-80);align-items:center;width:752px;align-self:stretch}
.h1__logo{width:197.68px;height:24px}
.h1__row-3{display:flex;flex-direction:row;gap:var(--space-40);align-items:center}
.h1__link-01,.h1__link-02,.h1__link-03,.h1__link-04,.h1__register{letter-spacing:-0.01em;color:var(--tone-dark);white-space:pre}
.h1__row-4{display:flex;flex-direction:row;gap:var(--space-16);align-items:center}
.h1__row-5{border-radius:4px;box-shadow:inset 0 1px 0 0 var(--tone-dark), inset 0 -1px 0 0 var(--tone-dark), inset 1px 0 0 0 var(--tone-dark), inset -1px 0 0 0 var(--tone-dark);display:flex;flex-direction:row;padding:var(--space-12) var(--space-16);gap:var(--space-8);justify-content:center;align-items:center}
.h1__card{background:var(--tone-dark);border-radius:4px;display:flex;flex-direction:row;padding:var(--space-12) var(--space-16);gap:var(--space-8);justify-content:center;align-items:center;align-self:stretch}
.h1__login{letter-spacing:-0.01em;color:var(--tone-light);white-space:pre}
.h1__heading-group{display:flex;flex-direction:column;gap:var(--space-40);align-items:flex-start;align-self:stretch}
.h1__heading-group-2{display:flex;flex-direction:column;gap:var(--space-48);align-items:flex-start;align-self:stretch}
.h1__heading-group-3{display:flex;flex-direction:row;justify-content:space-between;align-items:flex-end;align-self:stretch}
.h1__your-systems-identify-risk{width:558.08px;letter-spacing:-0.01em;color:var(--tone-dark);text-wrap:balance}
.h1__lorem-ipsum-dolor-sit{width:397px;letter-spacing:-0.01em;color:var(--tone-dark);text-wrap:pretty}
.h1__product-ui{overflow:hidden;position:relative;width:1232px;height:512px}
.h1__row-6{display:flex;flex-direction:row;justify-content:space-between;align-items:center;align-self:stretch}
.h1__grid{overflow:hidden;position:relative;width:200px;height:100px}
@media (max-width: 1199px) {
.h1{height:auto}
.h1 .h1__row,.h1 .h1__row-2,.h1 .h1__heading-group,.h1 .h1__heading-group-2,.h1 .h1__heading-group-3{width:100%}
.h1 .h1__logo{flex-shrink:0;max-width:100%;height:auto}
.h1 .h1__row-3{display:none}
.h1 .h1__row-4,.h1 .h1__row-5,.h1 .h1__register,.h1 .h1__card,.h1 .h1__login{flex-shrink:0}
.h1 .h1__product-ui{width:100%;height:auto;aspect-ratio:1232 / 512}
.h1 .h1__row-6{width:100%;display:grid;grid-template-columns:repeat(auto-fill, minmax(min(100%, 100px), 1fr));gap:var(--space-16);align-content:start;height:auto}
.h1 .h1__grid{width:auto;height:auto;aspect-ratio:200 / 100}
}
@media (min-width: 768px) and (max-width: 1199px) {
.h1{padding:var(--space-16) var(--space-40) var(--space-40);gap:var(--space-80)}
.h1 .h1__row-2,.h1 .h1__heading-group-3{gap:var(--space-48)}
}
@media (max-width: 767px) {
.h1{padding:var(--space-16) var(--space-24) var(--space-24);gap:var(--space-48)}
.h1 .h1__row-2{gap:var(--space-40)}
.h1 .h1__heading-group{gap:var(--space-24)}
.h1 .h1__heading-group-2{gap:var(--space-32)}
.h1 .h1__heading-group-3{gap:var(--space-32);flex-direction:column;align-items:stretch;justify-content:flex-start}
.h1 .h1__row-4 > :not(:last-child){display:none}
.h1 .h1__your-systems-identify-risk,.h1 .h1__lorem-ipsum-dolor-sit{width:100%}
}
/* D01: Value: copy left, product right */
.d01{background:var(--tone-mist);overflow:hidden;display:flex;flex-direction:row;padding:var(--space-192) var(--space-96);justify-content:space-between;align-items:center;width:100%;position:relative}
.d01__text-group{display:flex;flex-direction:column;padding:0px 0px var(--space-16);gap:var(--space-48);align-items:flex-start}
.d01__text-group-2{display:flex;flex-direction:column;gap:var(--space-40);align-items:flex-start}
.d01__value-01,.d01__learn-more{letter-spacing:-0.01em;color:var(--tone-dark);white-space:pre}
.d01__lorem-ipsum-dolor-sit{width:397px;letter-spacing:-0.01em;color:rgba(77, 77, 77, 1);text-wrap:balance}
.d01__product-ui{overflow:hidden;position:relative;width:606px;height:606px}
.d01.tone-light{background:var(--tone-light)}
@media (max-width: 1199px) {
.d01 .d01__product-ui{width:100%;height:auto;aspect-ratio:606 / 606}
}
@media (min-width: 768px) and (max-width: 1199px) {
.d01{padding:var(--space-96) var(--space-40);gap:var(--space-40)}
}
@media (max-width: 767px) {
.d01{padding:var(--space-48) var(--space-24);gap:var(--space-32);flex-direction:column;align-items:stretch;justify-content:flex-start}
.d01 .d01__text-group{width:100%;gap:var(--space-32)}
.d01 .d01__text-group-2{gap:var(--space-24)}
.d01 .d01__product-ui{flex:none}
.d01 .d01__lorem-ipsum-dolor-sit{width:100%}
}
/* D02: Value: product left, copy right */
.d02{background:var(--tone-light);overflow:hidden;display:flex;flex-direction:row;padding:var(--space-192) var(--space-96);justify-content:space-between;align-items:center;width:100%;position:relative}
.d02__product-ui{overflow:hidden;position:relative;width:606px;height:606px}
.d02__text-group{display:flex;flex-direction:column;padding:0px 0px var(--space-16);gap:var(--space-48);align-items:flex-start}
.d02__text-group-2{display:flex;flex-direction:column;gap:var(--space-40);align-items:flex-start}
.d02__value-02,.d02__learn-more{letter-spacing:-0.01em;color:var(--tone-dark);white-space:pre}
.d02__lorem-ipsum-dolor-sit{width:397px;letter-spacing:-0.01em;color:rgba(77, 77, 77, 1);text-wrap:balance}
.d02.tone-mist{background:var(--tone-mist)}
@media (max-width: 1199px) {
.d02 .d02__product-ui{width:100%;height:auto;aspect-ratio:606 / 606}
}
@media (min-width: 768px) and (max-width: 1199px) {
.d02{padding:var(--space-96) var(--space-40);gap:var(--space-40)}
}
@media (max-width: 767px) {
.d02{padding:var(--space-48) var(--space-24);gap:var(--space-32);flex-direction:column;align-items:stretch;justify-content:flex-start}
.d02 .d02__product-ui{flex:none}
.d02 .d02__text-group{width:100%;gap:var(--space-32)}
.d02 .d02__text-group-2{gap:var(--space-24)}
.d02 .d02__lorem-ipsum-dolor-sit{width:100%}
}
/* D03: Value on forest */
.d03{background:var(--tone-forest);overflow:hidden;display:flex;flex-direction:row;padding:var(--space-192) var(--space-96);justify-content:space-between;align-items:center;width:100%;position:relative}
.d03__text-group{display:flex;flex-direction:column;padding:0px 0px var(--space-16);gap:var(--space-48);align-items:flex-start}
.d03__text-group-2{display:flex;flex-direction:column;gap:var(--space-40);align-items:flex-start}
.d03__value-03,.d03__learn-more{letter-spacing:-0.01em;color:var(--tone-light);white-space:pre}
.d03__lorem-ipsum-dolor-sit{width:397px;letter-spacing:-0.01em;color:rgba(160, 181, 175, 1);text-wrap:balance}
.d03__product-ui{overflow:hidden;position:relative;width:606px;height:606px}
.d03.tone-dark{background:rgba(18, 18, 18, 1)}
.d03.tone-dark .d03__value-03,.d03.tone-dark .d03__learn-more{color:rgba(18, 18, 18, 1)}
@media (max-width: 1199px) {
.d03 .d03__product-ui{width:100%;height:auto;aspect-ratio:606 / 606}
}
@media (min-width: 768px) and (max-width: 1199px) {
.d03{padding:var(--space-96) var(--space-40);gap:var(--space-40)}
}
@media (max-width: 767px) {
.d03{padding:var(--space-48) var(--space-24);gap:var(--space-32);flex-direction:column;align-items:stretch;justify-content:flex-start}
.d03 .d03__text-group{width:100%;gap:var(--space-32)}
.d03 .d03__text-group-2{gap:var(--space-24)}
.d03 .d03__product-ui{flex:none}
.d03 .d03__lorem-ipsum-dolor-sit{width:100%}
}
/* D04: Quote on dark */
.d04{background:var(--tone-dark);overflow:hidden;display:flex;flex-direction:column;padding:var(--space-192) var(--space-96);gap:var(--space-40);align-items:center;width:100%;height:696px;position:relative}
.d04__card{background:var(--tone-forest);position:absolute;left:1440px;top:341.5px;width:228px;height:151px}
.d04__card-2{background:var(--tone-forest);position:absolute;left:1440px;top:695.5px;width:423px;height:151px}
.d04__card-3{background:var(--tone-forest);position:absolute;left:159px;top:393.5px;width:159px;height:151px}
.d04__card-4{background:var(--tone-forest);position:absolute;left:318px;top:544.5px;width:159px;height:151px}
.d04__lorem-ipsum-dolor-sit{position:relative;width:814px;letter-spacing:-0.01em;color:var(--tone-beige);text-align:center;text-wrap:balance}
.d04__text-group{display:flex;flex-direction:column;gap:var(--space-16);align-items:center;position:relative}
.d04__lorem-ipsum{letter-spacing:-0.01em;color:var(--tone-beige);white-space:pre}
.d04__etiam-convallis{letter-spacing:-0.01em;color:var(--tone-beige);white-space:pre;opacity:0.400}
@media (max-width: 1199px) {
.d04{height:auto}
.d04 .d04__card{left:100%;top:49.1%;width:15.8%;height:21.7%}
.d04 .d04__card-2{left:100%;top:99.9%;width:29.4%;height:21.7%}
.d04 .d04__card-3{left:11%;top:56.5%;width:11%;height:21.7%}
.d04 .d04__card-4{left:22.1%;top:78.2%;width:11%;height:21.7%}
.d04 .d04__lorem-ipsum-dolor-sit{width:100%}
.d04 .d04__text-group,.d04 .d04__lorem-ipsum,.d04 .d04__etiam-convallis{flex-shrink:0}
}
@media (min-width: 768px) and (max-width: 1199px) {
.d04{padding:var(--space-96) var(--space-40)}
}
@media (max-width: 767px) {
.d04{padding:var(--space-48) var(--space-24);gap:var(--space-24)}
}
/* D05: Product feature with three benefits */
.d05{background:var(--tone-light);overflow:hidden;display:flex;flex-direction:column;padding:var(--space-192) var(--space-96);gap:var(--space-64);align-items:flex-start;width:100%;position:relative}
.d05__text-group{display:flex;flex-direction:column;gap:var(--space-40);align-items:flex-start}
.d05__card{background:var(--tone-mint);border-radius:4px;display:flex;flex-direction:row;padding:var(--space-8);gap:var(--space-8);justify-content:center;align-items:center}
.d05__product{letter-spacing:0.1em;color:rgba(0, 0, 0, 1);text-transform:uppercase;white-space:pre}
.d05__tristique-mauris-morbi{letter-spacing:-0.01em;color:var(--tone-dark);white-space:pre}
.d05__product-ui{overflow:hidden;position:relative;align-self:stretch;height:600px}
.d05__row{display:flex;flex-direction:row;justify-content:space-between;align-items:flex-start;align-self:stretch}
.d05__text-group-2{display:flex;flex-direction:column;gap:var(--space-24);align-items:flex-start;width:397px}
.d05__benefit-01,.d05__benefit-02,.d05__benefit-03{align-self:stretch;letter-spacing:-0.01em;color:var(--tone-dark);text-wrap:pretty}
.d05__lorem-ipsum-dolor-sit,.d05__ut-enim-ad-minim,.d05__duis-aute-irure-dolor{align-self:stretch;letter-spacing:-0.01em;color:rgba(102, 102, 102, 1);text-wrap:pretty}
@media (max-width: 1199px) {
.d05 .d05__card,.d05 .d05__product{flex-shrink:0}
.d05 .d05__product-ui{width:100%;height:auto;aspect-ratio:1232 / 600}
.d05 .d05__row{width:100%}
}
@media (min-width: 768px) and (max-width: 1199px) {
.d05{padding:var(--space-96) var(--space-40);gap:var(--space-48)}
.d05 .d05__row{display:grid;grid-template-columns:repeat(auto-fill, minmax(min(100%, 298px), 1fr));gap:var(--space-32) var(--space-16);align-content:start;height:auto}
.d05 .d05__text-group-2{width:auto;height:auto}
}
@media (max-width: 767px) {
.d05{padding:var(--space-48) var(--space-24);gap:var(--space-32)}
.d05 .d05__text-group{gap:var(--space-24)}
.d05 .d05__row{flex-direction:column;align-items:stretch;gap:var(--space-32);justify-content:flex-start}
.d05 .d05__text-group-2,.d05 .d05__benefit-01,.d05 .d05__lorem-ipsum-dolor-sit,.d05 .d05__benefit-02,.d05 .d05__ut-enim-ad-minim,.d05 .d05__benefit-03,.d05 .d05__duis-aute-irure-dolor{width:100%}
}
/* D06: Testimonials */
.d06{background:var(--tone-blue);overflow:hidden;display:flex;flex-direction:column;padding:var(--space-192) var(--space-96);align-items:center;width:100%;position:relative}
.d06__heading-group{display:flex;flex-direction:column;gap:var(--space-40);align-items:center}
.d06__card{background:var(--tone-light);border-radius:4px;display:flex;flex-direction:row;padding:var(--space-8);gap:var(--space-8);justify-content:center;align-items:center}
.d06__testimonials{letter-spacing:0.1em;color:rgba(70, 75, 48, 1);text-transform:uppercase;white-space:pre}
.d06__lorem-ipsum-dolor{letter-spacing:-0.01em;color:var(--tone-dark);white-space:pre}
.d06__row{display:flex;flex-direction:row;gap:var(--space-16);justify-content:center;align-items:center;align-self:stretch}
.d06__card-2{background:var(--tone-light);overflow:hidden;display:flex;flex-direction:column;padding:var(--space-24);gap:var(--space-128);align-items:flex-start;width:397.33px}
.d06__i-am-loving-this{align-self:stretch;letter-spacing:-0.01em;color:var(--tone-dark);text-wrap:pretty}
.d06__row-2{display:flex;flex-direction:row;gap:var(--space-12);align-items:flex-start}
.d06__text-group{display:flex;flex-direction:column;padding:var(--space-4) 0px;justify-content:space-between;align-items:flex-start;align-self:stretch}
.d06__john-smith{color:var(--tone-dark);white-space:pre}
.d06__co-founder-ceo{color:var(--tone-dark);white-space:pre;opacity:0.600}
.d06__text-group-2{display:flex;flex-direction:column;padding:var(--space-64) 0px 0px;gap:var(--space-8);align-items:flex-start;width:397.33px}
.d06__card-3{background:var(--tone-light);overflow:hidden;display:flex;flex-direction:column;padding:var(--space-24);gap:var(--space-128);align-items:flex-start;align-self:stretch}
.d06__icon{width:42px;height:42px}
.d06__text-group-3{display:flex;flex-direction:column;padding:var(--space-128) 0px 0px;gap:var(--space-8);align-items:flex-start;width:397.33px}
@media (max-width: 1199px) {
.d06 .d06__card,.d06 .d06__testimonials,.d06 .d06__row-2,.d06 .d06__text-group,.d06 .d06__john-smith,.d06 .d06__co-founder-ceo,.d06 .d06__icon{flex-shrink:0}
.d06 .d06__row{width:100%}
}
@media (min-width: 768px) and (max-width: 1199px) {
.d06{padding:var(--space-96) var(--space-40)}
.d06 .d06__row{display:grid;grid-template-columns:repeat(auto-fill, minmax(min(100%, 298px), 1fr));gap:var(--space-32) var(--space-16);align-content:start;height:auto}
.d06 .d06__card-2{width:auto;height:auto;gap:var(--space-80)}
.d06 .d06__text-group-2{width:auto;height:auto;padding:var(--space-48) var(--space-4) var(--space-4)}
.d06 .d06__card-3{gap:var(--space-80)}
.d06 .d06__text-group-3{width:auto;height:auto;padding:var(--space-80) var(--space-4) var(--space-4)}
}
@media (max-width: 767px) {
.d06{padding:var(--space-48) var(--space-24)}
.d06 .d06__heading-group{gap:var(--space-24)}
.d06 .d06__row{flex-direction:column;align-items:stretch;gap:var(--space-32);justify-content:flex-start}
.d06 .d06__card-2,.d06 .d06__card-3{width:100%;gap:var(--space-48)}
.d06 .d06__text-group-2{width:100%;padding:var(--space-32) var(--space-4) var(--space-4)}
.d06 .d06__text-group-3{width:100%;padding:var(--space-48) var(--space-4) var(--space-4)}
.d06 .d06__i-am-loving-this{width:100%}
}
/* D07: Benefit cards */
.d07{background:var(--tone-light);overflow:hidden;display:flex;flex-direction:column;padding:var(--space-192) var(--space-96);gap:var(--space-64);align-items:flex-start;width:100%;position:relative}
.d07__text-group{display:flex;flex-direction:column;gap:var(--space-40);align-items:flex-start}
.d07__card{background:var(--tone-mint);border-radius:4px;display:flex;flex-direction:row;padding:var(--space-8);gap:var(--space-8);justify-content:center;align-items:center}
.d07__benefits{letter-spacing:0.1em;color:rgba(0, 0, 0, 1);text-transform:uppercase;white-space:pre}
.d07__faucibus-tortor-etam{letter-spacing:-0.01em;color:var(--tone-dark);white-space:pre}
.d07__text-group-2{display:flex;flex-direction:row;gap:var(--space-16);align-items:center;align-self:stretch}
.d07__text-group-3{border-radius:4px;overflow:hidden;box-shadow:inset 0 1px 0 0 rgba(0, 0, 0, 0.059), inset 0 -1px 0 0 rgba(0, 0, 0, 0.059), inset 1px 0 0 0 rgba(0, 0, 0, 0.059), inset -1px 0 0 0 rgba(0, 0, 0, 0.059);display:flex;flex-direction:column;padding:var(--space-24);gap:var(--space-48);align-items:flex-start;width:397px;align-self:stretch}
.d07__product-ui,.d07__graphic{border-radius:4px;overflow:hidden;position:relative;width:347px;height:280px}
.d07__text-group-4{display:flex;flex-direction:column;padding:0px 0px var(--space-16);gap:var(--space-40);align-items:flex-start;align-self:stretch}
.d07__text-group-5{display:flex;flex-direction:column;gap:var(--space-24);align-items:flex-start;align-self:stretch}
.d07__benefit-01,.d07__benefit-02,.d07__benefit-03{align-self:stretch;letter-spacing:-0.01em;color:var(--tone-dark);text-wrap:balance}
.d07__lorem-ipsum-dolor-sit{align-self:stretch;letter-spacing:-0.01em;color:rgba(102, 102, 102, 1);text-wrap:balance}
.d07__text-group-6{border-radius:4px;overflow:hidden;box-shadow:inset 0 1px 0 0 rgba(0, 0, 0, 0.059), inset 0 -1px 0 0 rgba(0, 0, 0, 0.059), inset 1px 0 0 0 rgba(0, 0, 0, 0.059), inset -1px 0 0 0 rgba(0, 0, 0, 0.059);display:flex;flex-direction:column;padding:var(--space-24);gap:var(--space-48);align-items:flex-start;width:398px;align-self:stretch}
@media (max-width: 1199px) {
.d07 .d07__card,.d07 .d07__benefits{flex-shrink:0}
.d07 .d07__text-group-2{width:100%}
.d07 .d07__product-ui,.d07 .d07__graphic{width:100%;height:auto;aspect-ratio:347 / 280}
}
@media (min-width: 768px) and (max-width: 1199px) {
.d07{padding:var(--space-96) var(--space-40);gap:var(--space-48)}
.d07 .d07__text-group-2{display:grid;grid-template-columns:repeat(auto-fill, minmax(min(100%, 299px), 1fr));gap:var(--space-32) var(--space-16);align-content:start;height:auto}
.d07 .d07__text-group-3,.d07 .d07__text-group-6{width:auto;height:auto}
}
@media (max-width: 767px) {
.d07{padding:var(--space-48) var(--space-24);gap:var(--space-32)}
.d07 .d07__text-group{gap:var(--space-24)}
.d07 .d07__text-group-2{flex-direction:column;align-items:stretch;gap:var(--space-32);justify-content:flex-start}
.d07 .d07__text-group-3,.d07 .d07__text-group-6{width:100%;gap:var(--space-32)}
.d07 .d07__text-group-4{width:100%;gap:var(--space-24)}
.d07 .d07__text-group-5,.d07 .d07__benefit-01,.d07 .d07__lorem-ipsum-dolor-sit,.d07 .d07__benefit-02,.d07 .d07__benefit-03{width:100%}
}
/* C1: CTA with colour blocks */
.c1{background:var(--tone-light);overflow:hidden;width:100%;height:528px;position:relative}
.c1__card{background:var(--tone-mint);position:absolute;left:343.01px;top:0px;width:247.99px;height:151.5px}
.c1__card-2{background:var(--tone-blue);position:absolute;left:0px;top:151.45px;width:343.01px;height:151.5px}
.c1__card-3{background:var(--tone-blue);position:absolute;left:1048px;top:245px;width:142px;height:151.5px}
.c1__card-4{background:var(--tone-beige);position:absolute;left:1189.96px;top:92.45px;width:250.47px;height:151.5px}
.c1__heading-group{display:flex;flex-direction:column;gap:var(--space-40);align-items:center;position:absolute;left:580px;top:197.5px;width:280px;height:133px}
.c1__call-to-action{letter-spacing:-0.01em;color:var(--tone-dark);text-align:center;white-space:pre}
.c1__row{display:flex;flex-direction:row;gap:var(--space-16);align-items:center}
.c1__row-2{border-radius:4px;box-shadow:inset 0 1px 0 0 var(--tone-dark), inset 0 -1px 0 0 var(--tone-dark), inset 1px 0 0 0 var(--tone-dark), inset -1px 0 0 0 var(--tone-dark);display:flex;flex-direction:row;padding:var(--space-12) var(--space-16);gap:var(--space-8);justify-content:center;align-items:center}
.c1__learn-more{letter-spacing:-0.01em;color:var(--tone-dark);white-space:pre}
.c1__card-5{background:var(--tone-dark);border-radius:4px;display:flex;flex-direction:row;padding:var(--space-12) var(--space-16);gap:var(--space-8);justify-content:center;align-items:center;align-self:stretch}
.c1__sign-up{letter-spacing:-0.01em;color:var(--tone-light);white-space:pre}
@media (max-width: 1199px) {
.c1{height:auto;display:flex;flex-direction:column;justify-content:center;align-items:center}
.c1 .c1__card{left:23.8%;top:0%;width:17.2%;height:28.7%}
.c1 .c1__card-2{left:0%;top:28.7%;width:23.8%;height:28.7%}
.c1 .c1__card-3{left:72.8%;top:46.4%;width:9.9%;height:28.7%}
.c1 .c1__card-4{left:82.6%;top:17.5%;width:17.4%;height:28.7%}
.c1 .c1__heading-group{position:relative;left:auto;top:auto;width:auto;height:auto;z-index:1}
.c1 .c1__row,.c1 .c1__row-2,.c1 .c1__learn-more,.c1 .c1__card-5,.c1 .c1__sign-up{flex-shrink:0}
}
@media (min-width: 768px) and (max-width: 1199px) {
.c1{padding:var(--space-96) var(--space-40);gap:var(--space-40);min-height:528px}
}
@media (max-width: 767px) {
.c1{padding:var(--space-48) var(--space-24);gap:var(--space-24);min-height:479px}
}
/* F1: Footer */
.f1{background:var(--tone-dark);overflow:hidden;display:flex;flex-direction:column;padding:var(--space-160) var(--space-96) var(--space-64);gap:var(--space-192);align-items:flex-start;width:100%;height:649px;position:relative}
.f1__row{display:flex;flex-direction:row;gap:var(--space-24);align-items:flex-start;align-self:stretch;justify-content:space-between}
.f1__text-group{display:flex;flex-direction:column;gap:var(--space-24);align-items:flex-start}
.f1__product,.f1__resources,.f1__company,.f1__legal,.f1__connect{letter-spacing:-0.01em;color:color-mix(in srgb, var(--tone-light) 50%, transparent);white-space:pre}
.f1__link-01,.f1__link-02,.f1__link-03{letter-spacing:-0.01em;color:var(--tone-light);white-space:pre}
.f1__row-2{display:flex;flex-direction:row;justify-content:space-between;align-items:flex-end;align-self:stretch}
.f1__composition{position:relative;width:593.05px;height:72px}
.f1__logo{overflow:hidden;position:absolute;left:94.48px;top:11.88px;width:498.57px;height:48.21px}
.f1__graphic{overflow:hidden;position:absolute;left:0px;top:0px;width:75.68px;height:72px}
.f1__text{color:color-mix(in srgb, var(--tone-light) 50%, transparent);white-space:pre}
@media (max-width: 1199px) {
.f1{height:auto}
.f1 .f1__row{width:100%;display:grid;grid-template-columns:repeat(auto-fill, minmax(min(100%, 120px), 1fr));align-content:start;height:auto;overflow-x:auto;max-width:100%}
.f1 .f1__text-group{width:auto;height:auto;flex-shrink:0}
.f1 .f1__link-01,.f1 .f1__link-02,.f1 .f1__link-03{flex-shrink:0}
.f1 .f1__row-2{width:100%}
.f1 .f1__composition{width:100%;height:auto;aspect-ratio:593 / 72}
.f1 .f1__logo{left:15.9%;top:16.5%;width:84.1%;height:67%}
.f1 .f1__graphic{left:0%;top:0%;width:12.8%;height:100%}
}
@media (min-width: 768px) and (max-width: 1199px) {
.f1{padding:var(--space-96) var(--space-40) var(--space-48);gap:var(--space-96)}
.f1 .f1__row,.f1 .f1__row-2{gap:var(--space-96)}
}
@media (max-width: 767px) {
.f1{padding:var(--space-48) var(--space-24) var(--space-32);gap:var(--space-48)}
.f1 .f1__row{gap:var(--space-48)}
.f1 .f1__row-2{gap:var(--space-48);flex-direction:column;align-items:stretch;justify-content:flex-start}
.f1 .f1__text{width:100%}
}
```

---

# brand.js

Sentence breaks and decorative media, measured in the browser. Include it on every page.

```js
// Sentence breaks (U-12) and decorative media giving way to type, measured in the browser.
document.fonts.ready.then(() => {
  const END = /(?<![\s(](?:vs|e\.g|i\.e|etc|Mr|Ms|Mrs|Dr|St|No|Inc|Ltd|Co)\.)(?<=[.?!][)\u201D"\u2019]?)\s+/;
  for (const el of document.querySelectorAll('[data-sentences]')) {
    const parts = el.textContent.split(END).map((s) => s.trim()).filter(Boolean);
    const width = el.clientWidth;
    const probe = document.createElement('span');
    probe.style.whiteSpace = 'nowrap';
    el.textContent = '';
    el.appendChild(probe);
    const fits = parts.every((p) => { probe.textContent = p; return probe.getBoundingClientRect().width <= width + 0.5; });
    el.textContent = '';
    parts.forEach((p, i) => { if (i) el.appendChild(document.createElement('br')); el.appendChild(document.createTextNode(p)); });
    if (!fits) el.textContent = parts.join(' ');
    el.dataset.sentenceBreaks = fits ? 'yes' : 'no';
  }
  // Media boxes a layout uses as decoration (contracts: decorative) give way to the type: one that runs into a text
  // is hidden.
  const overlaps = (a, b) => Math.min(a.right, b.right) - Math.max(a.left, b.left) > 4 && Math.min(a.bottom, b.bottom) - Math.max(a.top, b.top) > 4;
  for (const sec of document.querySelectorAll('section[data-decorative]')) {
    const kinds = sec.dataset.decorative.split(' ').filter(Boolean);
    const texts = [...sec.querySelectorAll('.bos-text, h1, h2, h3, p')].map((t) => t.getBoundingClientRect());
    for (const box of sec.querySelectorAll('[data-slot-kind], [data-media]')) {
      if (!kinds.includes(box.dataset.slotKind || box.dataset.media)) continue;
      const b = box.getBoundingClientRect();
      if (texts.some((t) => overlaps(t, b))) box.hidden = true;
    }
  }
  document.documentElement.dataset.ready = '';
});
```